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
|
||||
ADMIN_USERNAME=admin
|
||||
ADMIN_EMAIL=admin@example.com
|
||||
ADMIN_PASSWORD=ChangeMe123!
|
||||
ADMIN_PASSWORD=SE3112
|
||||
ADMIN_NAME=System Admin
|
||||
MARIADB_ROOT_PASSWORD=SE3112
|
||||
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.
|
||||
|
||||
@@ -127,96 +127,75 @@ Wichtig: Die API laeuft im Container intern auf Port `8080`, wird aber nach auss
|
||||
|
||||
## 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
|
||||
|
||||
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
|
||||
cd C:\Projects\SeLTD
|
||||
copy .env.example .env
|
||||
git clone https://git.portal.se-cloud.de/Hannes/SE-LTD
|
||||
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
|
||||
|
||||
```powershell
|
||||
docker compose up -d --build
|
||||
```
|
||||
|
||||
Bei groesseren Aenderungen am Code oder wenn der Browser alten Code anzeigt:
|
||||
Falls du Powershell geschlossen hast:
|
||||
(rechtsklick im Windowsexplorer ins leere --> "In Terminal öffnen")
|
||||
|
||||
```powershell
|
||||
docker compose down
|
||||
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
|
||||
Nun stehen dir mehrere Tools zur Verfügung:
|
||||
|
||||
| Anwendung | URL |
|
||||
| --- | --- |
|
||||
| Frontend | `http://localhost:5173` |
|
||||
| API Healthcheck | `http://localhost:18080/api/health` |
|
||||
| Collector Healthcheck | `http://localhost:18110/health` |
|
||||
| Dockhand | `http://localhost:3000` |
|
||||
| cAdvisor | `http://localhost:9090` |
|
||||
Frontend | `http://localhost:5173`
|
||||
--> Das ist die normale Weboberfläche zum anschauen, editieren und anpassen von Trends.
|
||||
|
||||
API Healthcheck | `http://localhost:18080/api/health`
|
||||
--> hier kannst du schauen ob die API läuft
|
||||
|
||||
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
|
||||
|
||||
```text
|
||||
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
|
||||
|
||||
@@ -231,25 +210,12 @@ Die wichtigsten Variablen liegen in `.env`.
|
||||
| `ADMIN_NAME` | `System Admin` | Anzeigename des Admins |
|
||||
| `MARIADB_ROOT_PASSWORD` | `SE3112` | MariaDB-Root-Passwort |
|
||||
| `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 |
|
||||
| `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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -559,7 +484,6 @@ Bei alten JavaScript-Fehlern nach einem Fix:
|
||||
Strg + F5
|
||||
```
|
||||
|
||||
oder Vite/Docker neu bauen.
|
||||
|
||||
### Nginx Proxy Manager
|
||||
|
||||
@@ -598,7 +522,7 @@ curl http://localhost:18080/api/health
|
||||
Wenn Frontend lokal auf `localhost:5173` laeuft:
|
||||
|
||||
```env
|
||||
CORS_ORIGIN=http://localhost:5173
|
||||
CORS_ORIGIN=*
|
||||
```
|
||||
|
||||
Danach API neu starten:
|
||||
@@ -619,45 +543,6 @@ docker compose up -d
|
||||
|
||||
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
|
||||
|
||||
Logs ansehen:
|
||||
@@ -750,7 +635,6 @@ Vor produktiver Nutzung:
|
||||
- [ ] `JWT_SECRET` auf langen zufaelligen Wert setzen
|
||||
- [ ] Admin-Passwort aendern
|
||||
- [ ] MariaDB-Root-Passwort aendern
|
||||
- [ ] `CORS_ORIGIN` nicht auf `*` lassen, sondern feste Domain setzen
|
||||
- [ ] MariaDB-Port `3306` nicht ungeschuetzt ins Internet veroeffentlichen
|
||||
- [ ] Redis-Port `6379` nicht ungeschuetzt ins Internet veroeffentlichen
|
||||
- [ ] 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.
|
||||
|
||||
---
|
||||
|
||||
## 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,',
|
||||
'`datum` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,',
|
||||
'`userlevel` INT(1) NOT NULL',
|
||||
'`userlevel` INT(1) DEFAULT NULL',
|
||||
value_columns,
|
||||
', PRIMARY KEY (`id`)',
|
||||
') ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;'
|
||||
@@ -64,5 +64,5 @@ FLUSH PRIVILEGES;
|
||||
|
||||
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user