Die Compose war fuer den sauberen Weg gebaut: NPM im selben Netz, kein Port offen. Auf diesem Server laeuft NPM aber anders — Bot und Hub haengen dort an `http://host.docker.internal:3080`, also ueber den Host. So wie sie war, haette NPM `minio` gar nicht gefunden. docker-compose.hostports.yml legt deshalb die beiden noetigen Ports offen, und zwar an 127.0.0.1 gebunden: damit ist der Port vom Internet aus zu, und nur der Host kommt heran. Mit einem Vorbehalt, der in der Datei steht: ob `host.docker.internal` eine Bindung an 127.0.0.1 ueberhaupt erreicht, haengt an der Docker-Fassung. Unter Linux fuehrt der Weg ueber die Docker-Bruecke statt ueber Loopback, dann muss die Bindung 0.0.0.0 lauten und die Firewall den Port zumachen. Klappt es nicht, ist die Bindung nicht der Fehler, sondern der Weg. Sauberer bleibt Weg A — NPM ins Netz `proxy` haengen. Dann braucht es diese Datei gar nicht. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
112 lines
3.5 KiB
Markdown
112 lines
3.5 KiB
Markdown
# d4rk_media
|
|
|
|
Der Medien-Stack: **Fivemanage Lite** mit MySQL und MinIO. Ein Ablageort für
|
|
alle Resourcen — Fahrzeugbilder aus `d4rk_photostudio`, Item-Icons, Marken,
|
|
was sonst noch anfällt.
|
|
|
|
Bisher liegt das auf dem Nextcloud und wird per rclone von Hand hochgeladen.
|
|
Das trägt, solange ein Mensch hochlädt. Sobald ein Script es tun soll, fehlt
|
|
ein Schreibweg über HTTP — und genau den bringt Lite mit, samt Token je
|
|
Resource und einer Oberfläche zum Nachsehen.
|
|
|
|
---
|
|
|
|
## Ausprobieren, bevor es auf den Server geht
|
|
|
|
`0.1.0-beta.23` ist früh. Erst auf Docker Desktop:
|
|
|
|
```bash
|
|
cp .env.example .env # und ausfüllen, siehe unten
|
|
docker compose -f docker-compose.local.yml up -d
|
|
```
|
|
|
|
- Oberfläche: <http://localhost:8080> — `admin` und dein `ADMIN_PASSWORD`
|
|
- MinIO: <http://localhost:9001> — `lite` und dein `MINIO_ROOT_PASSWORD`
|
|
|
|
Wenn das trägt, dasselbe auf dem Server.
|
|
|
|
---
|
|
|
|
## Auf dem Server, über Portainer
|
|
|
|
Portainer kann einen Stack direkt aus diesem Repo ziehen:
|
|
|
|
**Stacks → Add stack → Repository**
|
|
|
|
| Feld | Wert |
|
|
|---|---|
|
|
| Repository URL | `https://git.d4rkst3r.de/D4rkst3r/d4rk_media` |
|
|
| Compose path | `docker-compose.yml` |
|
|
| Environment variables | die vier Geheimnisse plus `PUBLIC_URL` |
|
|
|
|
Die Werte gehören **in die Stack-Variablen**, nicht in eine Datei im Repo.
|
|
`.env` steht deshalb in `.gitignore`.
|
|
|
|
### Wie der Reverse Proxy die Dienste erreicht
|
|
|
|
Zwei Wege, und welcher gilt, hängt daran, wie dein NPM aufgesetzt ist.
|
|
|
|
**A · NPM hängt im selben Docker-Netz** — der saubere Weg. Kein Port muss
|
|
offen sein.
|
|
|
|
```
|
|
fivecdn.d4rkst3r.de -> http://minio:9000
|
|
<oberfläche> -> http://lite:8080
|
|
```
|
|
|
|
Dafür muss NPM im Netz aus `PROXY_NETWORK` hängen. `docker network ls` zeigt
|
|
die Namen, `docker network inspect <name>` die Mitglieder.
|
|
|
|
**B · NPM erreicht die Dienste über den Host** — so laufen Bot und Hub hier
|
|
schon, mit `http://host.docker.internal:3080`. Dann braucht es offene Ports,
|
|
und dafür gibt es die Ergänzung:
|
|
|
|
```
|
|
Compose path: docker-compose.yml,docker-compose.hostports.yml
|
|
```
|
|
|
|
```
|
|
fivecdn.d4rkst3r.de -> http://host.docker.internal:9000
|
|
<oberfläche> -> http://host.docker.internal:8080
|
|
```
|
|
|
|
Die Ports sind an `127.0.0.1` gebunden, also vom Internet aus zu. Ob
|
|
`host.docker.internal` das erreicht, hängt an der Docker-Fassung — steht in
|
|
`docker-compose.hostports.yml` erklärt.
|
|
|
|
---
|
|
|
|
## Die vier Geheimnisse
|
|
|
|
```bash
|
|
openssl rand -hex 16 # DB_PASSWORD
|
|
openssl rand -hex 16 # MINIO_ROOT_PASSWORD
|
|
openssl rand -hex 32 # API_TOKEN_HMAC_SECRET (muss 32 Byte sein)
|
|
openssl rand -hex 12 # ADMIN_PASSWORD
|
|
```
|
|
|
|
---
|
|
|
|
## Was hier bewusst fehlt
|
|
|
|
**ClickHouse und Jaeger.** Beide stehen in der Entwicklungs-Compose des
|
|
Projekts und sind für strukturiertes Logging und Tracing da. Zum Ablegen von
|
|
Bildern braucht es sie nicht, und ClickHouse ist eine schwere Abhängigkeit.
|
|
Nachrüsten geht jederzeit — die App findet sie über `CLICKHOUSE_*`.
|
|
|
|
**Offene Ports in der Betriebsfassung.** Nur der Reverse Proxy spricht mit der
|
|
App; Datenbank und MinIO bleiben im internen Netz. Die Entwicklungs-Compose des
|
|
Projekts macht 5432, 9000, 16686 und mehr auf — dort in Ordnung, hier nicht.
|
|
|
|
---
|
|
|
|
## Herkunft
|
|
|
|
Zusammengestellt aus [fivemanage/lite](https://github.com/fivemanage/lite):
|
|
dessen `README.md`, `deployments/docker-compose.yml` (Entwicklung, ohne die
|
|
App) und `deployments/docker-compose.test.yml` (zeigt die App-Verdrahtung und
|
|
dass MySQL genügt).
|
|
|
|
**Nicht laufen gelassen.** Rechne mit ein, zwei Anläufen — vor allem beim
|
|
ersten Login und beim Bucket.
|