Self-Hosted Anwendungen gewinnen in der IT zunehmend an Bedeutung, da sie maximale Kontrolle, Datenschutz und Anpassbarkeit bieten. Docker ermöglicht es, diverse Anwendungen wie Passwortmanager, Wikis oder Kanban-Boards einfach, isoliert und portabel zu betreiben. In diesem Artikel zeigen wir praxisnah, wie man Self-Hosted Apps mit Docker aufsetzt, absichert und nachhaltig betreibt.
Vorteile von Self-Hosted Apps in Docker
Die Containerisierung von Self-Hosted Anwendungen bringt mehrere Vorteile mit sich:
- Isolierte Umgebungen für jede App
- Einfaches Deployment und Updates durch Images
- Portabilität zwischen Servern und Umgebungen
- Versionskontrolle und Rollbacks möglich
- Effiziente Nutzung von Ressourcen
Passwortmanager selbst hosten
Passwortmanager wie Bitwarden oder Vaultwarden können in Docker betrieben werden. Die Containerisierung gewährleistet sichere Trennung und einfache Backups.
Docker Compose Beispiel für Vaultwarden
version: "3.9"
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: always
environment:
- ADMIN_TOKEN=IhrSicheresToken
- DOMAIN=https://vault.example.com
ports:
- 8080:80
volumes:
- ./vw-data:/data
networks:
- selfhost-net
networks:
selfhost-net:
driver: bridge
- Volumes sichern die Daten persistent
- Environment Variables schützen Administratorzugang und Domainkonfiguration
- Port Mapping auf Host für den externen Zugriff
Wiki-Systeme in Docker
Für Wissensmanagement bieten Self-Hosted Wikis wie DokuWiki, BookStack oder Wiki.js eine flexible Lösung. Docker erleichtert das Setup und Update-Management.
Beispiel Docker Compose für BookStack
version: "3.9"
services:
mariadb:
image: mariadb:10.7
container_name: bookstack-db
restart: always
environment:
- MYSQL_ROOT_PASSWORD=rootpass
- MYSQL_DATABASE=bookstack
- MYSQL_USER=bookstack
- MYSQL_PASSWORD=secretpass
volumes:
- ./db-data:/var/lib/mysql
networks:
- selfhost-net
bookstack:
image: linuxserver/bookstack:latest
container_name: bookstack
restart: always
environment:
- DB_HOST=mariadb
- DB_DATABASE=bookstack
- DB_USERNAME=bookstack
- DB_PASSWORD=secretpass
ports:
- 8081:80
volumes:
- ./bookstack-data:/config
depends_on:
- mariadb
networks:
- selfhost-net
networks:
selfhost-net:
driver: bridge
- Separation von Datenbank und App für Sicherheit und Wartung
- Volumes für Persistenz von Daten und Konfigurationen
- depends_on sichert den Start der App erst nach Datenbankverfügbarkeit
Kanban-Boards für Teamarbeit
Kanban-Tools wie Wekan oder Taiga können containerisiert betrieben werden, um agile Workflows auch intern zu ermöglichen.
Beispiel Compose für Wekan
version: "3.9"
services:
mongo:
image: mongo:5.0
container_name: wekan-db
restart: always
volumes:
- ./mongo-data:/data/db
networks:
- selfhost-net
wekan:
image: wekanteam/wekan:latest
container_name: wekan
restart: always
environment:
- MONGO_URL=mongodb://mongo:27017/wekan
- ROOT_URL=http://kanban.example.com
- MAIL_URL=smtp://user:pass@mail.example.com:587/
ports:
- 8082:80
depends_on:
- mongo
volumes:
- ./wekan-data:/app/uploads
networks:
- selfhost-net
networks:
selfhost-net:
driver: bridge
- Datenpersistenz für MongoDB und Uploads sichern
- Root-URL und Mailserver über Environment Variables konfigurieren
- depends_on sorgt für synchronisierten Start
Reverse Proxy und HTTPS absichern
Für externe Zugriffe empfiehlt sich ein Reverse Proxy mit HTTPS, z. B. Traefik oder Nginx Proxy Manager:
services:
traefik:
image: traefik:v2.10
container_name: traefik
command:
- "--api.insecure=false"
- "--providers.docker=true"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.letsencrypt.acme.email=admin@example.com"
- "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./letsencrypt:/letsencrypt
networks:
- selfhost-net
- Automatische TLS-Zertifikate via Let’s Encrypt
- Container-Metadaten werden direkt aus Docker ausgelesen
- Port Mapping auf Host für externen Zugriff
Best Practices für Self-Hosted Apps
- Persistente Volumes für Daten und Konfigurationen
- Netzwerk-Isolation zwischen Services
- Environment Variables statt hardcodierter Passwörter
- Healthchecks und Restart Policies aktivieren
- Reverse Proxy für HTTPS und Traffic-Management
- Regelmäßige Updates der Docker Images und Apps
- Backup-Strategie für Volumes und Datenbanken
Durch den Einsatz von Docker und Docker Compose lassen sich Self-Hosted Apps wie Passwortmanager, Wikis und Kanban-Boards sicher, wartbar und flexibel betreiben. Mit persistenten Volumes, isolierten Netzwerken und einem Reverse Proxy mit HTTPS erreichen Sie eine professionelle Umgebung, die den Anforderungen von Teamarbeit und privater Infrastruktur gerecht wird.
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.











