Update admin password in .env and adjust userlevel default in SQL initialization script
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
JWT_SECRET=change-me
|
JWT_SECRET=change-me
|
||||||
ADMIN_USERNAME=admin
|
ADMIN_USERNAME=admin
|
||||||
ADMIN_EMAIL=admin@example.com
|
ADMIN_EMAIL=admin@example.com
|
||||||
ADMIN_PASSWORD=ChangeMe123!
|
ADMIN_PASSWORD=SE3112
|
||||||
ADMIN_NAME=System Admin
|
ADMIN_NAME=System Admin
|
||||||
MARIADB_ROOT_PASSWORD=SE3112
|
MARIADB_ROOT_PASSWORD=SE3112
|
||||||
DB_PASSWORD_FALLBACK=root
|
DB_PASSWORD_FALLBACK=root
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# SE Local Trenddata
|
# SE Local Trenddata
|
||||||
|
|
||||||
SE Local Trenddata ist eine webbasierte Trend-, Dashboard- und Quellenverwaltung fuer lokale Anlagen- und WAGO-Daten. Das Projekt besteht aus einem React-Frontend, einer Node.js/Express-API, MariaDB, Redis und einem Collector-Service fuer Protokollquellen wie Modbus TCP, OPC UA, BACnet IP und KNX IP.
|
SE Local Trenddata ist eine webbasierte Trend-, Dashboard- und Quellenverwaltung fuer lokale Anlagen- und WAGO-Daten. Das Projekt besteht aus einem React-Frontend, einer Node.js/Express-API, MariaDB, Redis und einem Collector-Service fuer Protokollquellen wie Modbus TCP, OPC UA, BACnet IP und KNX IP.
|
||||||
|
|
||||||
@@ -127,96 +127,75 @@ Wichtig: Die API laeuft im Container intern auf Port `8080`, wird aber nach auss
|
|||||||
|
|
||||||
## Schnellstart mit Docker Compose
|
## Schnellstart mit Docker Compose
|
||||||
|
|
||||||
|
Du solltest WSL installiert haben.
|
||||||
|
Falls du das nicht hast:
|
||||||
|
```powershell
|
||||||
|
wsl --install Ubuntu
|
||||||
|
```
|
||||||
|
Dann kannst du Docker Desktop installieren:
|
||||||
|
https://docs.docker.com/desktop/setup/install/windows-install/
|
||||||
|
Die Installation einfach durchklicken und wenn du gefragt wirst ob du Hyper-V oder WSL verwenden möchtest, wähle WSL.
|
||||||
|
|
||||||
|
|
||||||
### 1. Repository vorbereiten
|
### 1. Repository vorbereiten
|
||||||
|
|
||||||
|
Wenn du git auf deinem rechner installiert hast, dann öffne eine Powershell in dem Ordner, in dem du das LTD-System haben willst.
|
||||||
|
(rechtsklick im Windowsexplorer ins leere --> "In Terminal öffnen")
|
||||||
```powershell
|
```powershell
|
||||||
cd C:\Projects\SeLTD
|
git clone https://git.portal.se-cloud.de/Hannes/SE-LTD
|
||||||
copy .env.example .env
|
cd ./SeLTD
|
||||||
```
|
```
|
||||||
|
Powershell nicht schließen, brauchst du gleich noch.
|
||||||
|
|
||||||
Passe danach mindestens diese Werte an:
|
|
||||||
|
|
||||||
```env
|
|
||||||
JWT_SECRET=bitte-langen-zufaelligen-wert-setzen
|
|
||||||
ADMIN_USERNAME=admin
|
|
||||||
ADMIN_PASSWORD=ChangeMe123!
|
|
||||||
MARIADB_ROOT_PASSWORD=SE3112
|
|
||||||
CORS_ORIGIN=http://localhost:5173
|
|
||||||
VITE_API_PORT=18080
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Stack bauen und starten
|
### 2. Stack bauen und starten
|
||||||
|
|
||||||
```powershell
|
Falls du Powershell geschlossen hast:
|
||||||
docker compose up -d --build
|
(rechtsklick im Windowsexplorer ins leere --> "In Terminal öffnen")
|
||||||
```
|
|
||||||
|
|
||||||
Bei groesseren Aenderungen am Code oder wenn der Browser alten Code anzeigt:
|
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
docker compose down
|
|
||||||
docker compose build --no-cache web api collector
|
docker compose build --no-cache web api collector
|
||||||
docker compose up -d
|
docker compose up -d --force-recreate
|
||||||
```
|
```
|
||||||
|
Die lokalen Images werden jetzt gebaut und die Onlineimages werden heruntrergeladen.
|
||||||
|
Wenn das fertig ist müssen alle 7 Container gestartet sein.
|
||||||
|
|
||||||
|
Im Nachgang kannst du dies in der Powershell mit...
|
||||||
|
```powershell
|
||||||
|
docker ps -a
|
||||||
|
```
|
||||||
|
...überprüfen
|
||||||
|
|
||||||
### 3. Aufrufen
|
### 3. Aufrufen
|
||||||
|
Nun stehen dir mehrere Tools zur Verfügung:
|
||||||
|
|
||||||
| Anwendung | URL |
|
Frontend | `http://localhost:5173`
|
||||||
| --- | --- |
|
--> Das ist die normale Weboberfläche zum anschauen, editieren und anpassen von Trends.
|
||||||
| Frontend | `http://localhost:5173` |
|
|
||||||
| API Healthcheck | `http://localhost:18080/api/health` |
|
API Healthcheck | `http://localhost:18080/api/health`
|
||||||
| Collector Healthcheck | `http://localhost:18110/health` |
|
--> hier kannst du schauen ob die API läuft
|
||||||
| Dockhand | `http://localhost:3000` |
|
|
||||||
| cAdvisor | `http://localhost:9090` |
|
Collector Healthcheck | `http://localhost:18110/health`
|
||||||
|
--> hier kannst du schauen ob der Collector läuft, was nur wichtig ist, wenn du Datenpunkte per OPC,KNX, Modbus oder Bacnet angebunden hast.
|
||||||
|
|
||||||
|
Dockhand | `http://localhost:3000`
|
||||||
|
--> Dockhand ist Container verwaltungstool, dass es dir ermöglicht, auch grafisch den Zustand deiner Container und deines Stacks zu sehen.
|
||||||
|
Der Vorteil hier, im Gegensatz zur normalen Docker Desktopoberfläche: Du kannst es auf jedem beliebigen anderen Rechner, der auf dein Netzwerk zugriff hat, öffnen.
|
||||||
|
|
||||||
|
cAdvisor | `http://localhost:9090`
|
||||||
|
--> Cadvisor stellt alle Containerdaten für Monitoring und Analyticprogramme bereit.
|
||||||
|
So kann bei einer größeren Anlage, das Dockersystem mitr Prometheus oder ähnlichem überwacht werden.
|
||||||
|
Cadvisor stellt di Daten per html bereit, kannst du dir gern anschauen, ist aber ziemlich unübersichtlich.
|
||||||
|
|
||||||
### 4. Standard-Login
|
### 4. Standard-Login
|
||||||
|
|
||||||
```text
|
```text
|
||||||
Username: admin
|
Username: admin
|
||||||
Passwort: ChangeMe123!
|
Passwort: SE3112
|
||||||
```
|
```
|
||||||
|
|
||||||
Das Passwort sollte nach dem ersten Login geaendert werden.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Lokale Entwicklung
|
|
||||||
|
|
||||||
### Frontend lokal starten
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
cd C:\Projects\SeLTD\web
|
|
||||||
npm install
|
|
||||||
npm run dev
|
|
||||||
```
|
|
||||||
|
|
||||||
Das Frontend laeuft dann auf:
|
|
||||||
|
|
||||||
```text
|
|
||||||
http://localhost:5173
|
|
||||||
```
|
|
||||||
|
|
||||||
### API lokal starten
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
cd C:\Projects\SeLTD\api
|
|
||||||
npm install
|
|
||||||
npm run dev
|
|
||||||
```
|
|
||||||
|
|
||||||
Die API liest ihre Konfiguration aus `.env`. Wenn du die API lokal ohne Docker laufen laesst, muss `DB_HOST` auf den erreichbaren MariaDB-Host zeigen.
|
|
||||||
|
|
||||||
### Collector lokal starten
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
cd C:\Projects\SeLTD\collector
|
|
||||||
npm install
|
|
||||||
npm start
|
|
||||||
```
|
|
||||||
|
|
||||||
Der Collector braucht Zugriff auf MariaDB und schreibt seine lokale Konfiguration in `collector/data/sources.json`.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Konfiguration
|
## Konfiguration
|
||||||
|
|
||||||
@@ -231,25 +210,12 @@ Die wichtigsten Variablen liegen in `.env`.
|
|||||||
| `ADMIN_NAME` | `System Admin` | Anzeigename des Admins |
|
| `ADMIN_NAME` | `System Admin` | Anzeigename des Admins |
|
||||||
| `MARIADB_ROOT_PASSWORD` | `SE3112` | MariaDB-Root-Passwort |
|
| `MARIADB_ROOT_PASSWORD` | `SE3112` | MariaDB-Root-Passwort |
|
||||||
| `DB_PASSWORD_FALLBACK` | `root` | Fallback fuer alte Entwicklungsvolumes |
|
| `DB_PASSWORD_FALLBACK` | `root` | Fallback fuer alte Entwicklungsvolumes |
|
||||||
| `CORS_ORIGIN` | `http://localhost:5173` | Erlaubter Browser-Ursprung fuer API-Aufrufe |
|
| `CORS_ORIGIN` | `*` | Erlaubter Browser-Ursprung fuer API-Aufrufe |
|
||||||
| `VITE_API_PORT` | `18080` | API-Port, den das Frontend im Browser nutzt |
|
| `VITE_API_PORT` | `18080` | API-Port, den das Frontend im Browser nutzt |
|
||||||
| `POLL_TICK_MS` | `1000` | Collector-Tick fuer Polling-Pruefung |
|
| `POLL_TICK_MS` | `1000` | Collector-Tick fuer Polling-Pruefung |
|
||||||
|
|
||||||
### CORS
|
|
||||||
|
|
||||||
Wenn das Frontend lokal auf `http://localhost:5173` laeuft, muss in der API stehen:
|
|
||||||
|
|
||||||
```env
|
|
||||||
CORS_ORIGIN=http://localhost:5173
|
|
||||||
```
|
|
||||||
|
|
||||||
Bei mehreren erlaubten Origins kann eine kommaseparierte Liste genutzt werden:
|
|
||||||
|
|
||||||
```env
|
|
||||||
CORS_ORIGIN=http://localhost:5173,https://trend.example.local
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Login, Benutzer und Rollen
|
## Login, Benutzer und Rollen
|
||||||
|
|
||||||
@@ -479,32 +445,7 @@ Redis sollte deshalb ebenfalls gebackupt werden, nicht nur MariaDB.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## WAGO- oder SD-Karten-Betrieb
|
|
||||||
|
|
||||||
Fuer Systeme, bei denen persistente Daten auf SD-Karte liegen sollen, gibt es ein Override:
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
docker compose -f docker-compose.yml -f docker-compose.wago.yml up -d --build
|
|
||||||
```
|
|
||||||
|
|
||||||
Dabei werden grosse Daten nach `/media/sd/seltd/...` gelegt:
|
|
||||||
|
|
||||||
```text
|
|
||||||
/media/sd/seltd/mariadb
|
|
||||||
/media/sd/seltd/redis
|
|
||||||
/media/sd/seltd/collector
|
|
||||||
/media/sd/seltd/dockhand
|
|
||||||
```
|
|
||||||
|
|
||||||
Vorher sicherstellen:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
mkdir -p /media/sd/seltd/mariadb /media/sd/seltd/redis /media/sd/seltd/collector /media/sd/seltd/dockhand
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Backup und Restore
|
|
||||||
|
|
||||||
### MariaDB Backup
|
### MariaDB Backup
|
||||||
|
|
||||||
@@ -534,22 +475,6 @@ docker run --rm -v seltd_collector_data:/data -v ${PWD}:/backup alpine tar czf /
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Deployment-Hinweise
|
|
||||||
|
|
||||||
### Nach Code-Aenderungen
|
|
||||||
|
|
||||||
Wenn Frontend oder API geaendert wurden:
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
docker compose build --no-cache web api collector
|
|
||||||
docker compose up -d
|
|
||||||
```
|
|
||||||
|
|
||||||
Wenn nur `.env` geaendert wurde:
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
docker compose up -d
|
|
||||||
```
|
|
||||||
|
|
||||||
### Browsercache
|
### Browsercache
|
||||||
|
|
||||||
@@ -559,7 +484,6 @@ Bei alten JavaScript-Fehlern nach einem Fix:
|
|||||||
Strg + F5
|
Strg + F5
|
||||||
```
|
```
|
||||||
|
|
||||||
oder Vite/Docker neu bauen.
|
|
||||||
|
|
||||||
### Nginx Proxy Manager
|
### Nginx Proxy Manager
|
||||||
|
|
||||||
@@ -598,7 +522,7 @@ curl http://localhost:18080/api/health
|
|||||||
Wenn Frontend lokal auf `localhost:5173` laeuft:
|
Wenn Frontend lokal auf `localhost:5173` laeuft:
|
||||||
|
|
||||||
```env
|
```env
|
||||||
CORS_ORIGIN=http://localhost:5173
|
CORS_ORIGIN=*
|
||||||
```
|
```
|
||||||
|
|
||||||
Danach API neu starten:
|
Danach API neu starten:
|
||||||
@@ -619,45 +543,6 @@ docker compose up -d
|
|||||||
|
|
||||||
Danach im Browser `Strg + F5`.
|
Danach im Browser `Strg + F5`.
|
||||||
|
|
||||||
### Fehler: `ReferenceError: editingCollectorPointId is not defined`
|
|
||||||
|
|
||||||
In `web/src/App.jsx` muss folgender State vorhanden sein:
|
|
||||||
|
|
||||||
```jsx
|
|
||||||
const [editingCollectorPointId, setEditingCollectorPointId] = useState("");
|
|
||||||
```
|
|
||||||
|
|
||||||
Wenn die Zeile vorhanden ist, der Fehler aber weiterhin erscheint, laeuft noch altes Build-/Container-Material.
|
|
||||||
|
|
||||||
### Fehler: `SyntaxError: missing ) after argument list` in `isp.js`
|
|
||||||
|
|
||||||
Bei SQL-Template-Strings muessen Backticks im String escaped werden:
|
|
||||||
|
|
||||||
```js
|
|
||||||
missing.push(`ADD COLUMN \`${columnName}\` TEXT NULL`);
|
|
||||||
```
|
|
||||||
|
|
||||||
### Fehler: `Rollup failed to resolve import "jspdf"`
|
|
||||||
|
|
||||||
Abhaengigkeiten im Frontend installieren:
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
cd web
|
|
||||||
npm install jspdf xlsx recharts
|
|
||||||
```
|
|
||||||
|
|
||||||
Bei Docker danach neu bauen.
|
|
||||||
|
|
||||||
### Source-Map-Warnungen im Browser
|
|
||||||
|
|
||||||
Warnungen wie diese sind in der Regel nicht kritisch:
|
|
||||||
|
|
||||||
```text
|
|
||||||
Source map error: JSON.parse: unexpected character...
|
|
||||||
```
|
|
||||||
|
|
||||||
Sie kommen oft aus Devtools/React-Devtools oder externen Source-Maps und koennen ignoriert werden, solange keine roten Laufzeitfehler auftreten.
|
|
||||||
|
|
||||||
### MariaDB Login oder DB-Verbindung fehlgeschlagen
|
### MariaDB Login oder DB-Verbindung fehlgeschlagen
|
||||||
|
|
||||||
Logs ansehen:
|
Logs ansehen:
|
||||||
@@ -750,7 +635,6 @@ Vor produktiver Nutzung:
|
|||||||
- [ ] `JWT_SECRET` auf langen zufaelligen Wert setzen
|
- [ ] `JWT_SECRET` auf langen zufaelligen Wert setzen
|
||||||
- [ ] Admin-Passwort aendern
|
- [ ] Admin-Passwort aendern
|
||||||
- [ ] MariaDB-Root-Passwort aendern
|
- [ ] MariaDB-Root-Passwort aendern
|
||||||
- [ ] `CORS_ORIGIN` nicht auf `*` lassen, sondern feste Domain setzen
|
|
||||||
- [ ] MariaDB-Port `3306` nicht ungeschuetzt ins Internet veroeffentlichen
|
- [ ] MariaDB-Port `3306` nicht ungeschuetzt ins Internet veroeffentlichen
|
||||||
- [ ] Redis-Port `6379` nicht ungeschuetzt ins Internet veroeffentlichen
|
- [ ] Redis-Port `6379` nicht ungeschuetzt ins Internet veroeffentlichen
|
||||||
- [ ] Dockhand absichern oder nur intern bereitstellen
|
- [ ] Dockhand absichern oder nur intern bereitstellen
|
||||||
@@ -768,31 +652,3 @@ Vor produktiver Nutzung:
|
|||||||
- Fuer vollstaendige Protokollintegration muessen je nach Feldbus noch Details wie Adressierung, Datentyp, Byteorder und Authentifizierung sauber projektspezifisch gepflegt werden.
|
- Fuer vollstaendige Protokollintegration muessen je nach Feldbus noch Details wie Adressierung, Datentyp, Byteorder und Authentifizierung sauber projektspezifisch gepflegt werden.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Kurzfassung fuer Betrieb
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
cd C:\Projects\SeLTD
|
|
||||||
copy .env.example .env
|
|
||||||
notepad .env
|
|
||||||
docker compose up -d --build
|
|
||||||
```
|
|
||||||
|
|
||||||
Dann aufrufen:
|
|
||||||
|
|
||||||
```text
|
|
||||||
http://localhost:5173
|
|
||||||
```
|
|
||||||
|
|
||||||
Login:
|
|
||||||
|
|
||||||
```text
|
|
||||||
admin / ChangeMe123!
|
|
||||||
```
|
|
||||||
|
|
||||||
Bei Code-Aenderungen:
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
docker compose build --no-cache web api collector
|
|
||||||
docker compose up -d
|
|
||||||
```
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ BEGIN
|
|||||||
'` (',
|
'` (',
|
||||||
'`id` INT(11) NOT NULL AUTO_INCREMENT,',
|
'`id` INT(11) NOT NULL AUTO_INCREMENT,',
|
||||||
'`datum` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,',
|
'`datum` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,',
|
||||||
'`userlevel` INT(1) NOT NULL',
|
'`userlevel` INT(1) DEFAULT NULL',
|
||||||
value_columns,
|
value_columns,
|
||||||
', PRIMARY KEY (`id`)',
|
', PRIMARY KEY (`id`)',
|
||||||
') ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;'
|
') ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;'
|
||||||
@@ -64,5 +64,5 @@ FLUSH PRIVILEGES;
|
|||||||
|
|
||||||
|
|
||||||
CREATE USER IF NOT EXISTS 'wago'@'%' IDENTIFIED BY '3112';
|
CREATE USER IF NOT EXISTS 'wago'@'%' IDENTIFIED BY '3112';
|
||||||
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, INDEX ON `wago`.* TO 'wago'@'%';
|
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, INDEX ON * . * TO 'wago'@'%' IDENTIFIED BY '3112';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
|
|||||||
Reference in New Issue
Block a user