INBOX/vps-infrastruktur.md
2026-08-07 16:01:24 +02:00

2.9 KiB

VPS-Infrastruktur — bujour.de

IONOS EU-VPS · Docker Compose + Caddy · Stand: Juni 2026


Übersicht

Der VPS läuft mit Docker Compose als Orchestrierung. Caddy übernimmt als Reverse Proxy automatisch TLS (Let's Encrypt) für alle Dienste — kein certbot, kein manuelles Zertifikatsmanagement.

Alle Dienste hängen im externen Docker-Netzwerk proxy. Caddy erreicht sie über den Container-Namen.


Verzeichnisstruktur

~/stacks/
├── caddy/
│   ├── compose.yaml
│   └── Caddyfile
├── forgejo/
│   └── compose.yaml
└── checkpoint/
    ├── compose.yaml
    └── .env          ← Secrets, nicht im Git
~/apps/
└── checkpoint/       ← geklontes Repo, Build-Quelle

Docker-Netzwerk

docker network create proxy

Externes Netzwerk proxy — einmalig angelegt, von allen Stacks referenziert.


Caddy (Reverse Proxy + TLS)

Stack: ~/stacks/caddy/

# compose.yaml
services:
  caddy:
    image: caddy:2
    container_name: caddy
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - caddy_data:/data
      - caddy_config:/config
    networks:
      - proxy
# Caddyfile
git.bujour.de {
    reverse_proxy forgejo:3000
}

cpe.bujour.info {
    reverse_proxy checkpoint:8000
}

Caddy neu laden (nach Caddyfile-Änderung):

cd ~/stacks/caddy
docker compose exec caddy caddy reload --config /etc/caddy/Caddyfile

Forgejo (Git)

Stack: ~/stacks/forgejo/ URL: https://git.bujour.de SSH: Port 2222

services:
  forgejo:
    image: codeberg.org/forgejo/forgejo:10
    container_name: forgejo
    restart: unless-stopped
    environment:
      - USER_UID=1000
      - USER_GID=1000
    volumes:
      - forgejo_data:/data
    networks:
      - proxy
    expose:
      - "3000"
    ports:
      - "2222:22"

Neuen Dienst hinzufügen

  1. mkdir ~/stacks/<dienst>/
  2. compose.yaml erstellen — expose statt ports, Netzwerk proxy (external)
  3. Eintrag in ~/stacks/caddy/Caddyfile ergänzen
  4. Caddy neu laden
  5. docker compose up -d im neuen Stack-Verzeichnis

Nützliche Befehle

# Status aller Container
docker ps

# Logs eines Dienstes
docker logs <container_name> -f

# Container neu starten
docker compose restart

# Image neu bauen und Container ersetzen
docker compose build
docker compose up -d

SSH-Schlüssel VPS → Forgejo

Schlüsselpaar auf dem VPS für unbeaufsichtigtes git pull:

ssh-keygen -t ed25519 -C "vps-checkpoint" -f ~/.ssh/id_ed25519_forgejo

~/.ssh/config:

Host git.bujour.de
    HostName git.bujour.de
    User git
    Port 2222
    IdentityFile ~/.ssh/id_ed25519_forgejo

Öffentlichen Schlüssel in Forgejo unter Einstellungen → SSH-Schlüssel eintragen.