web - refactor core modules, harden authorization, simplify endpoints
This commit is contained in:
@@ -12,7 +12,7 @@ Git for Windows kann direkt über `winget` installiert werden:
|
||||
winget install --id Git.Git -e --source winget
|
||||
```
|
||||
|
||||
Alternativ kann **Git for Windows** über <https://git-scm.com/install/windows> heruntergeladen und installiert werden.
|
||||
Alternativ kann **Git for Windows** über https://git-scm.com/install/windows heruntergeladen und installiert werden.
|
||||
|
||||
Nach der Installation PowerShell, Windows Terminal oder Git Bash neu öffnen und prüfen:
|
||||
|
||||
@@ -24,7 +24,7 @@ git --version
|
||||
|
||||
### macOS
|
||||
|
||||
Falls Homebrew noch nicht installiert ist, die Installationsanleitung unter <https://brew.sh/> verwenden.
|
||||
Falls Homebrew noch nicht installiert ist, die Installationsanleitung unter https://brew.sh/ verwenden.
|
||||
|
||||
Git über Homebrew installieren:
|
||||
|
||||
@@ -133,6 +133,34 @@ docker compose version
|
||||
docker run --rm hello-world
|
||||
```
|
||||
|
||||
Falls `docker run` mit
|
||||
|
||||
```text
|
||||
permission denied while trying to connect to the docker API at unix:///var/run/docker.sock
|
||||
```
|
||||
|
||||
abbricht, zunächst prüfen:
|
||||
|
||||
```bash
|
||||
ls -l /var/run/docker.sock
|
||||
id
|
||||
getent group docker
|
||||
```
|
||||
|
||||
Ist der Benutzer bereits Mitglied der Gruppe `docker`, die Gruppe aber bei `id` noch nicht aufgeführt, wurde die Gruppenmitgliedschaft von der aktuellen Shell noch nicht übernommen. Dann entweder:
|
||||
|
||||
```bash
|
||||
newgrp docker
|
||||
```
|
||||
|
||||
ausführen oder WSL vollständig neu starten. Dazu in PowerShell:
|
||||
|
||||
```powershell
|
||||
wsl --shutdown
|
||||
```
|
||||
|
||||
Danach Ubuntu erneut öffnen und `docker run --rm hello-world` wiederholen.
|
||||
|
||||
> Docker Engine nicht zusätzlich innerhalb von WSL installieren, wenn Docker Desktop verwendet wird.
|
||||
>
|
||||
> Für bessere Dateisystem-Performance das Repository möglichst im WSL-Dateisystem ablegen, z. B. `~/src/intranet`, nicht unter `/mnt/c/...`.
|
||||
@@ -141,6 +169,9 @@ docker run --rm hello-world
|
||||
|
||||
### Linux — Ubuntu 24.04 LTS
|
||||
|
||||
> **Wichtig für WSL-Nutzer:**
|
||||
> Wenn Ubuntu unter Windows über WSL 2 läuft und Docker Desktop verwendet wird, **nicht** mit diesem Abschnitt weitermachen. Dieser Abschnitt ist nur für eigenständige Linux-Installationen vorgesehen.
|
||||
|
||||
**1. Konfliktierende Pakete entfernen**
|
||||
|
||||
```bash
|
||||
@@ -200,8 +231,8 @@ sudo usermod -aG docker $USER
|
||||
|
||||
Danach ab- und wieder anmelden.
|
||||
|
||||
> **Debian 13:** Das Projekt funktioniert ebenfalls unter Debian. Dafür das Docker-Repository entsprechend auf `linux/debian` umstellen:
|
||||
> <https://docs.docker.com/engine/install/debian/>
|
||||
> **Debian 13:** Das Projekt funktioniert ebenfalls unter Debian. Dafür das Docker-Repository entsprechend auf `linux/debian` umstellen:
|
||||
> https://docs.docker.com/engine/install/debian/
|
||||
|
||||
---
|
||||
|
||||
@@ -219,7 +250,7 @@ docker run --rm hello-world
|
||||
|
||||
Dokumentation:
|
||||
|
||||
<https://docs.docker.com/desktop/setup/install/mac-install/>
|
||||
https://docs.docker.com/desktop/setup/install/mac-install/
|
||||
|
||||
---
|
||||
|
||||
@@ -236,15 +267,15 @@ web/
|
||||
|
||||
Die produktive `docker-compose.yml` wird lokal **nicht** verwendet. Dadurch werden insbesondere folgende Produktionsbestandteile nicht gestartet:
|
||||
|
||||
- `scheduler`
|
||||
- `dokploy-network`
|
||||
- Strato-SSH
|
||||
- produktive Scheduler-Secrets
|
||||
* `scheduler`
|
||||
* `dokploy-network`
|
||||
* Strato-SSH
|
||||
* produktive Scheduler-Secrets
|
||||
|
||||
Die lokale Compose-Datei startet ausschließlich:
|
||||
|
||||
- `web`
|
||||
- `db` (PostgreSQL 18 mit pgvector)
|
||||
* `web`
|
||||
* `db` (PostgreSQL 18 mit pgvector)
|
||||
|
||||
Sie verwendet denselben `Dockerfile` wie Produktion.
|
||||
|
||||
@@ -299,13 +330,15 @@ SMS_GATEWAY_URL=http://127.0.0.1:9
|
||||
HA_BASE_URL=http://127.0.0.1:9
|
||||
HA_TOKEN=local
|
||||
OPENWEATHER_API_KEY=local
|
||||
|
||||
CKAL_USERNAME=
|
||||
CKAL_PASSWORD=
|
||||
CKAL_CALENDAR_URL=
|
||||
```
|
||||
|
||||
Die `.env` darf keine produktiven Secrets enthalten und sollte nicht ins Repository committed werden.
|
||||
|
||||
### PostgreSQL-Version prüfen
|
||||
|
||||
Lokal sollte möglichst dieselbe PostgreSQL-Major-Version wie in Produktion verwendet werden. Wir verwenden **PostgreSQL 18**.
|
||||
> Lokal sollte möglichst dieselbe PostgreSQL-Major-Version wie in Produktion verwendet werden. Wir verwenden **PostgreSQL 18**.
|
||||
|
||||
---
|
||||
|
||||
@@ -319,12 +352,12 @@ In pgAdmin:
|
||||
4. Datei außerhalb des Repositorys speichern, z. B. `intranet.dump`.
|
||||
5. **Format: Custom** wählen.
|
||||
6. Unter **Data Options → Do not save**:
|
||||
- **Owner: Yes**
|
||||
- **Privileges: Yes**
|
||||
|
||||
* **Owner: Yes**
|
||||
* **Privileges: Yes**
|
||||
7. **Include CREATE DATABASE statement: No** lassen.
|
||||
8. **Backup** starten.
|
||||
|
||||
Wenn pgAdmin im Browser auf einem entfernten Server läuft, wird die Backup-Datei serverseitig gespeichert. Sie kann anschließend über **Tools → Storage Manager** heruntergeladen werden.
|
||||
9. Läuft pgAdmin im Browser auf einem entfernten Server, kann die Backup-Datei anschließend über **Tools → Storage Manager** heruntergeladen werden.
|
||||
|
||||
> Der Dump enthält Produktivdaten. Nicht committen, weitergeben oder in ungeschützten Cloud-Ordnern speichern.
|
||||
|
||||
@@ -356,6 +389,18 @@ docker exec -it intranet-local-db-1 psql -U intranet -d intranet -c "CREATE EXTE
|
||||
|
||||
## 7. Dump mit pgAdmin importieren
|
||||
|
||||
### pgAdmin 4 installieren
|
||||
|
||||
Falls pgAdmin 4 noch nicht installiert ist, kann es lokal als Desktop-Anwendung installiert werden.
|
||||
|
||||
* **Windows:** pgAdmin-Installer herunterladen und ausführen.
|
||||
* **macOS:** pgAdmin-Disk-Image herunterladen, öffnen und die Anwendung installieren.
|
||||
* **Ubuntu/Linux:** pgAdmin kann über das offizielle APT-Repository installiert werden; für die lokale Nutzung reicht `pgadmin4-desktop`.
|
||||
|
||||
Die Installationspakete und Anleitungen sind unter https://www.pgadmin.org/download/ verfügbar.
|
||||
|
||||
Unter Windows mit WSL 2 kann pgAdmin direkt unter Windows installiert werden. Die PostgreSQL-Datenbank aus Docker ist anschließend über `localhost:5432` erreichbar.
|
||||
|
||||
In pgAdmin einen neuen Server registrieren:
|
||||
|
||||
```text
|
||||
@@ -375,14 +420,13 @@ Danach:
|
||||
3. **Format: Custom or tar** wählen.
|
||||
4. `intranet.dump` auswählen.
|
||||
5. Unter **Data Options → Do not save**:
|
||||
- **Owner: Yes**
|
||||
- **Privileges: Yes**
|
||||
|
||||
* **Owner: Yes**
|
||||
* **Privileges: Yes**
|
||||
6. **Include CREATE DATABASE statement: No**.
|
||||
7. **Clean before restore: No** beim ersten Import.
|
||||
8. **Restore** starten.
|
||||
|
||||
Der Restore sollte ohne Fehler zur fehlenden Extension `vector` durchlaufen. Falls `pg_restore` mit `extension "vector" is not available` abbricht, prüfen, ob in `docker-compose.local.yml` tatsächlich `pgvector/pgvector:pg18` verwendet wird.
|
||||
|
||||
Soll die lokale Datenbank später vollständig durch einen neuen Dump ersetzt werden, kann das lokale Setup zurückgesetzt werden:
|
||||
|
||||
```bash
|
||||
@@ -410,7 +454,7 @@ docker compose -f docker-compose.local.yml ps
|
||||
|
||||
Aufrufen:
|
||||
|
||||
<http://localhost:8080>
|
||||
http://localhost:8080
|
||||
|
||||
Die Benutzer aus dem importierten Dump können anschließend für den Login verwendet werden.
|
||||
|
||||
@@ -420,6 +464,26 @@ Die lokale Compose-Datei setzt `session.cookie_secure=0`, da lokal HTTP statt HT
|
||||
|
||||
## Entwicklung
|
||||
|
||||
### Nach einem Neustart starten
|
||||
|
||||
Nach einem Neustart von Windows oder macOS zuerst **Docker Desktop** starten und warten, bis Docker bereit ist.
|
||||
|
||||
Unter einer eigenständigen Linux-Installation sicherstellen, dass der Docker-Dienst läuft.
|
||||
|
||||
Danach im Projektroot die lokalen Container starten:
|
||||
|
||||
```bash
|
||||
docker compose -f docker-compose.local.yml up -d
|
||||
```
|
||||
|
||||
Falls sich das `Dockerfile` seit dem letzten Start geändert hat oder die Images neu gebaut werden sollen:
|
||||
|
||||
```bash
|
||||
docker compose -f docker-compose.local.yml up -d --build
|
||||
```
|
||||
|
||||
Anschließend kann das Intranet wieder unter http://localhost:8080 aufgerufen werden.
|
||||
|
||||
### Status prüfen
|
||||
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user