
Docker homelab stack — 20 kontenerów na jeden wieczór
Plex, Pi-hole, Portainer, Grafana, Uptime Kuma i więcej. Docker Compose stack gotowy do skopiowania.
Docker Compose to potęga
Jeśli masz w domu serwer — nawet stary laptop z 8GB RAM — Docker Compose pozwoli ci uruchomić dziesiątki usług z jednego pliku konfiguracyjnego. Zamiast pamiętać komendy dla każdego kontenera osobno, piszesz jeden \`docker-compose.yml\` i całe środowisko wstaje jedną komendą.
Dlaczego Compose, a nie czyste Docker run?
Struktura katalogów
\`\`\`
~/homelab/
├── docker-compose.yml
├── .env
├── data/
│ ├── portainer/
│ ├── pihole/
│ ├── traefik/
│ ├── plex/
│ ├── grafana/
│ ├── prometheus/
│ └── uptime-kuma/
└── config/
├── prometheus.yml
└── traefik.yml
\`\`\`
---
Zarządzanie: Portainer
Portainer to GUI dla Dockera. Podgląd logów, zarządzanie wolumenami, wbudowany terminal do kontenerów, monitoring zasobów — Community Edition jest całkowicie darmowe.
Po uruchomieniu wejdź na \`http://IP_SERWERA:9000\` i ustaw hasło administratora.
---
Sieć: Pi-hole + Traefik
Pi-hole blokuje reklamy dla całej sieci domowej. Traefik kieruje ruch do odpowiednich kontenerów i obsługuje certyfikaty SSL.
---
Media: Plex + Sonarr + Radarr
Klasyczny trio mediowy:
1. Sonarr/Radarr monitorują nowe wydania
2. Po pobraniu plik trafia do katalogu mediów
3. Plex wykrywa nowy plik i dodaje go do biblioteki
---
Monitoring: Grafana + Prometheus + Uptime Kuma
Prometheus zbiera metryki co 15 sekund. Grafana wizualizuje. Uptime Kuma monitoruje dostępność usług.
Importuj gotowy dashboard Grafana — ID \`1860\` (Node Exporter Full).
---
Backup: Duplicati + Watchtower
Duplicati obsługuje backupy inkrementalne z szyfrowaniem AES-256. Watchtower automatycznie aktualizuje kontenery.
---
Pełny docker-compose.yml
\`\`\`yaml
version: "3.8"
services:
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./data/portainer:/data
ports:
- "9000:9000"
traefik:
image: traefik:v3.0
container_name: traefik
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./config/traefik.yml:/traefik.yml:ro
- ./data/traefik/certs:/certs
pihole:
image: pihole/pihole:latest
container_name: pihole
restart: unless-stopped
ports:
- "53:53/tcp"
- "53:53/udp"
- "8080:80"
environment:
TZ: Europe/Warsaw
WEBPASSWORD: "zmien_to_haslo"
volumes:
- ./data/pihole/etc-pihole:/etc/pihole
- ./data/pihole/etc-dnsmasq.d:/etc/dnsmasq.d
plex:
image: lscr.io/linuxserver/plex:latest
container_name: plex
restart: unless-stopped
network_mode: host
environment:
PUID: 1000
PGID: 1000
TZ: Europe/Warsaw
volumes:
- ./data/plex:/config
- /mnt/media/tv:/tv
- /mnt/media/movies:/movies
prometheus:
image: prom/prometheus:latest
container_name: prometheus
restart: unless-stopped
volumes:
- ./config/prometheus.yml:/etc/prometheus/prometheus.yml:ro
- ./data/prometheus:/prometheus
grafana:
image: grafana/grafana:latest
container_name: grafana
restart: unless-stopped
environment:
GF_SECURITY_ADMIN_PASSWORD: "zmien_to_haslo"
volumes:
- ./data/grafana:/var/lib/grafana
ports:
- "3000:3000"
uptime-kuma:
image: louislam/uptime-kuma:latest
container_name: uptime-kuma
restart: unless-stopped
volumes:
- ./data/uptime-kuma:/app/data
ports:
- "3001:3001"
watchtower:
image: containrrr/watchtower:latest
container_name: watchtower
restart: unless-stopped
environment:
WATCHTOWER_SCHEDULE: "0 0 2 * * *"
WATCHTOWER_CLEANUP: "true"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
\`\`\`
Uruchom całość:
\`\`\`bash
docker compose up -d
\`\`\`
---
Porady
Konflikty portów
\`\`\`bash
sudo ss -tlnp | grep -E ':80|:443'
\`\`\`
Uprawnienia do plików
\`\`\`bash
id
sudo chown -R 1000:1000 ~/homelab/data/
\`\`\`
Zarządzanie zasobami
Na słabszym sprzęcie ogranicz zasoby dla głodnych kontenerów przez \`deploy.resources.limits\` w Compose.
Stack 20 kontenerów na dobrym homelabowym sprzęcie działa bez problemu przy 4-6 GB RAM zużycia. Masz monitoring, media, sieć, backup i zarządzanie — wszystko pod jednym dachem, gotowe w jeden wieczór.