Installationsanleitung¶
Diese Anleitung führt Sie durch die Installation von Bifolk mit Docker.
Zielgruppe: Systemadministratoren, DevOps-Ingenieure
Voraussetzungen¶
Docker¶
- Docker Engine 20.10 oder höher
- Docker Compose 2.0 oder höher
- Git zum Klonen des Repositories
- Mindestens 1 GB Festplattenspeicher
Podman¶
Bifolk unterstützt auch die Bereitstellung mit Podman über systemd-Quadlets. Die vollständige Anleitung finden Sie unter Podman-Deployment.
Schnellstart (Entwicklung)¶
Das Entwicklungs-Setup verwendet SQLite und läuft mit DEBUG=True.
# Repository klonen
git clone <repo-url>
cd bifolk
# Umgebung einrichten
cd docker/compose-developement
cp .env.example .env
# Bauen und starten
docker compose up --build
# In einem separaten Terminal den Superuser erstellen
docker compose exec bifolk-app python manage.py createsuperuser
# Optional Beispieldaten laden
docker compose exec bifolk-app python manage.py load_sample_data
Zugriff auf Bifolk unter http://localhost:8000.
Docker-Compose-Setup¶
Bifolk bietet Docker-Compose-Konfigurationen unter docker/:
| Verzeichnis | Datenbank | Zweck |
|---|---|---|
compose-developement/ |
SQLite | Entwicklung und Tests |
Dienste¶
| Dienst | Port | Zweck |
|---|---|---|
bifolk-app |
8000 | Haupt-Django-Anwendung |
bifolk-docs |
8001 | MkDocs-Dokumentationsserver |
Volumes¶
| Volume | Zweck |
|---|---|
bifolk_static |
Statische Dateien (CSS, JS, Bilder) |
bifolk_media |
Vom Benutzer hochgeladene Dateien (Profilfotos, Bienenstockfotos) |
bifolk_db |
SQLite-Datenbankdatei |
bifolk_logs |
Anwendungs-Logdateien |
Docker-Secrets¶
| Secret | Datei | Zweck |
|---|---|---|
bifolk_secret_key |
secrets/secret_key.txt |
Django SECRET_KEY |
bifolk_email_password |
secrets/email_password.txt |
SMTP-Passwort |
bifolk_oidc_client_secret |
secrets/oidc_client_secret.txt |
OIDC-Client-Secret |
Siehe Docker-Secrets für sichere Konfiguration.
Container-Sicherheit¶
Alle Bifolk-Container sind mit folgenden Standardeinstellungen abgesichert:
- Nicht-Root-Benutzer — jeder Dienst läuft als dedizierter, unprivilegierter Benutzer
cap_drop: ALL— alle Linux-Capabilities werden standardmäßig entzogenno-new-privileges: true— verhindert Privilegienerweiterung innerhalb des Containers
| Dienst | Benutzer | Gewährte Capabilities |
|---|---|---|
bifolk-app |
bifolk (Systembenutzer) |
CHOWN, SETGID, SETUID (wird vom Entrypoint benötigt, um Volumes zu übernehmen und auf den App-Benutzer zu wechseln) |
bifolk-docs |
docs (uid/gid 21111) |
Keine — alle Dokumentationsdateien sind beim Build ins Image eingebettet |
bifolk-db |
postgres (vom Image verwaltet) |
CHOWN, SETGID, SETUID, FOWNER |
Ressourcenlimits (Empfohlen)¶
Die Standard-Compose-Dateien erzwingen keine CPU- oder Speicherlimits. Für Produktionsbereitstellungen wird empfohlen, deploy.resources-Einschränkungen hinzuzufügen, um zu verhindern, dass ein einzelner Dienst die Host-Ressourcen erschöpft:
services:
bifolk-app:
deploy:
resources:
limits:
cpus: '2.0'
memory: 1G
reservations:
cpus: '0.5'
memory: 512M
Passen Sie die Werte entsprechend Ihrer Host-Kapazität und Arbeitslast an. Empfohlene Ausgangswerte:
| Dienst | CPU-Limit | Speicher-Limit | CPU-Reservierung | Speicher-Reservierung |
|---|---|---|---|---|
bifolk-app |
2.0 |
1G |
0.5 |
512M |
bifolk-db |
1.0 |
512M |
0.25 |
256M |
bifolk-docs |
0.5 |
128M |
0.1 |
64M |
Produktionsbereitstellung¶
Für die Produktion passen Sie Folgendes an:
1. Umgebungsvariablen¶
Bearbeiten Sie .env:
DJANGO_DEBUG=False
DJANGO_ALLOWED_HOSTS=ihredomain.de,www.ihredomain.de
DJANGO_CSRF_TRUSTED_ORIGINS=https://ihredomain.de
2. Secrets¶
Aktualisieren Sie die Secret-Dateien in secrets/:
# Starken Secret-Key generieren
python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())" > secrets/secret_key.txt
# Sichere Berechtigungen setzen
bash scripts/bifolk_set_permissions.sh
3. E-Mail-Konfiguration¶
Konfigurieren Sie SMTP für E-Mail-Verifizierung und Benachrichtigungen:
EMAIL_HOST=smtp.ihredomain.de
# Für STARTTLS (Port 587):
EMAIL_PORT=587
EMAIL_USE_TLS=True
EMAIL_USE_SSL=False
# Für implizites SSL (Port 465) stattdessen:
# EMAIL_PORT=465
# EMAIL_USE_TLS=False
# EMAIL_USE_SSL=True
EMAIL_USER=noreply@ihredomain.de
DEFAULT_FROM_EMAIL=noreply@ihredomain.de
4. Reverse-Proxy und HTTPS¶
Richten Sie einen Reverse-Proxy (Traefik, Nginx, Caddy) für HTTPS ein. Bifolk behandelt TLS nicht direkt.
Warning
Bifolk muss in der Produktion immer hinter einem Reverse-Proxy betrieben werden. Ohne Proxy fehlen HTTP-Sicherheitsheader (HSTS, CSP usw.) und interne Endpunkte sind erreichbar. Siehe Reverse-Proxy & Sicherheitsheader für die erforderliche Konfiguration.
5. PostgreSQL (Empfohlen)¶
Für die Produktion verwenden Sie PostgreSQL anstelle von SQLite. Entkommentieren Sie die PostgreSQL-Einstellungen in .env:
DB_ENGINE=django.db.backends.postgresql
DB_NAME=bifolk
DB_USER=bifolk
DB_HOST=bifolk-db
DB_PORT=5432
DB_PASSWORD=ihr-sicheres-passwort
Fügen Sie einen PostgreSQL-Dienst zu Ihrer docker-compose.yml hinzu.
Gesundheitsprüfung¶
Der Container enthält einen Gesundheitsprüfungs-Endpunkt unter /health/, der überprüft, ob die Anwendung läuft. Docker verwendet dies zur Überwachung der Container-Gesundheit.
Nächste Schritte¶
- Ersteinrichtung - Superuser erstellen und Anwendung konfigurieren
- Konfiguration - Vollständige Umgebungsvariablen-Referenz
- Docker-Secrets - Sichere Konfigurationsverwaltung