80 lines
2.2 KiB
Markdown
80 lines
2.2 KiB
Markdown
# dell01
|
||
|
||
Docker-Infrastruktur für Dell01 (OptiPlex 3060 Micro, Ubuntu 24.04).
|
||
|
||
## Architektur
|
||
|
||
```
|
||
Internet
|
||
└── Cloudflare Edge
|
||
└── Cloudflare Tunnel (cloudflared)
|
||
└── Traefik (Wildcard-Cert via Cloudflare DNS-Challenge)
|
||
└── Alle Docker-Container
|
||
```
|
||
|
||
## Ersteinrichtung
|
||
|
||
```bash
|
||
cp .env.example .env
|
||
# .env befüllen (alle Variablen, siehe Kommentare)
|
||
make setup
|
||
make all-up
|
||
```
|
||
|
||
### .env vorbereiten
|
||
|
||
| Variable | Beschreibung |
|
||
|---|---|
|
||
| `DOMAIN` | Aktive Domain, z.B. `home2.dnlm.de` |
|
||
| `INWX_USERNAME` | INWX Login-Name |
|
||
| `INWX_PASSWORD` | INWX Passwort |
|
||
| `CLOUDFLARE_TUNNEL_TOKEN` | Zero Trust → Networks → Tunnels → Tunnel erstellen |
|
||
| `TRAEFIK_DASHBOARD_USER` | `echo $(htpasswd -nb admin PW) \| sed -e 's/\$/\$\$/g'` |
|
||
|
||
### Cloudflare Tunnel konfigurieren
|
||
|
||
Tunnel anlegen: Zero Trust → Networks → Tunnels → Token kopieren.
|
||
|
||
Public Hostname im Dashboard: `*.${DOMAIN}` → `https://traefik:443`
|
||
|
||
Alternativ (ohne Cloudflare-Zone): Tunnel-UUID aus dem Dashboard nehmen und
|
||
bei INWX manuell setzen:
|
||
```
|
||
*.home2 CNAME <tunnel-uuid>.cfargotunnel.com
|
||
```
|
||
Dann ingress in `services/cloudflared/config.yaml` konfigurieren (statt Dashboard).
|
||
|
||
## Domain-Umstieg (home2 → home)
|
||
|
||
```bash
|
||
# In .env ändern:
|
||
DOMAIN=home.dnlm.de
|
||
|
||
make setup # traefik.yaml neu generieren
|
||
make all-down
|
||
make all-up
|
||
```
|
||
|
||
## Services
|
||
|
||
| Service | URL | Compose |
|
||
|-------------|------------------------------|----------------------------------|
|
||
| Traefik | traefik.home2.dnlm.de | services/traefik/ |
|
||
| Gitea | gitea.home2.dnlm.de | services/gitea/ |
|
||
| cloudflared | – | services/cloudflared/ |
|
||
|
||
## Neuen Service hinzufügen
|
||
|
||
Nur Traefik-Labels in die `docker-compose.yaml`:
|
||
|
||
```yaml
|
||
labels:
|
||
- "traefik.enable=true"
|
||
- "traefik.http.routers.SERVICENAME.rule=Host(`SERVICENAME.home2.dnlm.de`)"
|
||
- "traefik.http.routers.SERVICENAME.entrypoints=websecure"
|
||
- "traefik.http.routers.SERVICENAME.tls=true"
|
||
- "traefik.http.services.SERVICENAME.loadbalancer.server.port=PORT"
|
||
```
|
||
|
||
Netzwerk `proxy` als external einbinden – fertig.
|