Zum Inhalt

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 entzogen
  • no-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