Programme als Container installieren
Mach dich mit dem Bearbeiten der docker-compose.yml vertraut. Diese findest du unter /home/[user]/ei23-docker/docker-compose.yml.
Ich habe dazu ein ausführliches Video: ![]()
Bearbeitung
Für die Bearbeitung gibt es mehrere Möglichkeiten:
| Methode | Befehl/Vorgehen |
|---|---|
| Terminal | sudo nano /home/[user]/ei23-docker/docker-compose.yml |
| VSCode Server | Über das Dashboard → VSCode |
| Dashboard | Server-Seite → "Docker Programme hinzufügen" (einklappbar) |
Dashboard nutzen
Das ei23 Dashboard bietet jetzt eine Template-Übersicht direkt im Browser! Einfach klicken und hinzufügen.
Templates
Es liegen Templates, also "Installationsschablonen," zum nachträglichen Installieren in /home/[user]/ei23-docker/compose_templates bereit. Du kannst sie benutzen und entsprechend in die docker-compose.yml kopieren.
Verfügbare Templates
Die Templates befinden sich im Ordner ei23-docker/compose_templates/. Hier einige Beispiele:
| Template | Beschreibung |
|---|---|
homeassistant.yml | Home Assistant |
nodered.yml | Node-RED (Docker-Version) |
mosquitto.yml | MQTT Broker |
grafana.yml | Grafana Dashboard |
influxdb.yml | InfluxDB Zeitseriendatenbank |
vaultwarden.yml | Passwort-Manager |
traefik.yml | Reverse Proxy mit SSL |
nextcloudofficial.yml | Nextcloud |
portainer.yml | Docker-Verwaltung |
immich.yml | Foto-Cloud |
jellyfin.yml | Media Server |
ollama.yml | Lokale LLMs |
open-webui.yml | Chat-Oberfläche für LLMs |
frigate.yml | KI-NVR für Kameras |
wireguard.yml | VPN-Server |
nginxproxymanger.yml | Reverse Proxy (einfach) |
pihole.yml | DNS Ad-Blocker |
syncthing.yml | Datei-Synchronisation |
mealie.yml | Rezept-Manager |
freshrss.yml | RSS-Reader |
n8n.yml | Workflow-Automatisierung |
nocodb.yml | Datenbank-Oberfläche (Airtable-Alternative) |
fireflyiii.yml | Finanzmanager |
ghostfolio.yml | Vermögensverwaltung |
archivebox.yml | Webseiten-Archivierung |
uptime-kuma.yml | Service-Monitoring |
Vollständige Liste
Schau direkt in den Ordner /home/[user]/ei23-docker/compose_templates/ um alle verfügbaren Templates zu sehen.
Template einfügen
- Öffne die docker-compose.yml
- Füge den Inhalt des Templates am Ende der Datei ein
- Achte auf korrekte Einrückung (YAML ist empfindlich!)
- Speichere die Datei
- Führe
ei23 dcaus
Einrückung beachten
Falsche Zeileneinrückung kann dazu führen, dass die Installation nicht richtig ausgeführt wird!
Template anwenden
Nach der Anpassung der docker-compose.yml führe aus:
Oder über das Dashboard: Server-Seite → "Docker Compose" Button.
Docker Compose verstehen
Ports
Das Routing für Docker funktioniert wie die Portfreigabe an einem Router:
- HOST_PORT: Externer Port am Server erreichbar
- CONTAINER_PORT: Interner Port im Container
Beispiel:
Hier ist 8080 der externe Port (am Server) und 80 der interne Port (im Container).
Router-Prinzip
Das funktioniert genau wie bei einem Router/Modem - nur dass Docker die Portweiterleitung intern macht.
Volumes
Volumes binden Ordner des Host-Systems in den Container ein:
Beispiel:
- ./volumes/nginx - Ordner auf dem Host (relativ zum docker-compose.yml)
- /etc/nginx/templates - Pfad im Container
Devices
Devices binden Hardware in den Container ein:
Wichtig für: - Zigbee-Sticks (/dev/ttyUSB0) - Kameras (/dev/video0) - GPIO (Raspberry Pi)
Environment Variables
Umgebungsvariablen konfigurieren den Container:
Passwort-Platzhalter
Das ei23-Skript ersetzt automatisch password_placeholder mit zufälligen Passwörtern bei der Erstinstallation.
Networks
Netzwerke verbinden Container miteinander:
networks:
- default
- custom_network
# Am Ende der docker-compose.yml definieren:
networks:
custom_network:
driver: bridge
internal: true
Depends_on
Definiert Start-Reihenfolge:
Restart Policy
Steuert das Neustart-Verhalten:
restart: unless-stopped # Immer neu starten, außer manuell gestoppt
restart: always # Immer neu starten
restart: on-failure # Nur bei Fehler
restart: "no" # Nie neustarten
Architektur-Hinweise
Je nach Architektur (armv7/arm64/amd64) kann es vorkommen, dass es kein aktuelles Image des Containers gibt. Dies kann man beispielsweise unter hub.docker.com nachschauen.
Beispiel: Älteres Image nutzen
Hier wurde :1.24.0 angehängt um eine bestimmte Version zu nutzen.
ARM-Unterstützung
Nicht alle Docker-Images unterstützen ARM-Architekturen (Raspberry Pi). Prüfe dies vor der Installation.
Port-Konflikte
Wenn ein Port bereits belegt ist, ändere den Host-Port:
Beispiel: Komplette docker-compose.yml
services:
homeassistant:
image: ghcr.io/home-assistant/home-assistant:stable
container_name: homeassistant
restart: unless-stopped
network_mode: host
volumes:
- ./volumes/homeassistant/config:/config
- /run/dbus:/run/dbus:ro
environment:
- TZ=Europe/Berlin
mosquitto:
image: eclipse-mosquitto:2
container_name: mosquitto
restart: unless-stopped
ports:
- "1883:1883"
volumes:
- ./volumes/mosquitto/config:/mosquitto/config
- ./volumes/mosquitto/data:/mosquitto/data
- ./volumes/mosquitto/log:/mosquitto/log
grafana:
image: grafana/grafana:latest
container_name: grafana
restart: unless-stopped
ports:
- "3000:3000"
volumes:
- ./volumes/grafana:/var/lib/grafana
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=password_placeholder
# Netzwerke (falls benötigt)
# networks:
# my_network:
# driver: bridge
Fehlerbehebung
Container startet nicht
# Logs prüfen
docker compose logs [container_name]
# Container manuell starten
docker compose up -d [container_name]
Port belegt
# Prüfe welcher Port belegt ist
sudo netstat -tulpn | grep [PORT]
# Oder
sudo ss -tulpn | grep [PORT]
YAML-Syntax Fehler
Container zurücksetzen
Daten gehen verloren!
Dies löscht alle Daten des Containers!
# Einfach über das Skript
ei23 fullreset [container_name]
# Manuell
cd ~/ei23-docker/
docker compose stop [container_name]
docker compose rm -f [container_name]
sudo rm -r volumes/[container_name]/
docker compose up -d
Weitere Informationen
- Docker Compose Dokumentation
- Docker Hub - Images suchen
- ei23 Dashboard - Template-Übersicht