Wenn du Discourse mit dem Bitnami Discourse Docker-Container betreibst, musst du sicherstellen, dass alle Datenverzeichnisse korrekt angelegt und berechtigt sind. Fehlerhafte Rechte führen häufig zu Startproblemen bei Datenbank, Redis oder der Web-App.
Warum sind Berechtigungen so wichtig?
- PostgreSQL, Redis, Sidekiq und Discourse benötigen Zugriff auf ihre jeweiligen Datenverzeichnisse.
- .env-Dateien werden zur Laufzeit vom Container geladen, um Einstellungen wie Zugangsdaten, SMTP oder Ports zu konfigurieren.
- Die falschen UIDs/GIDs oder chmods verhindern das Schreiben in Volumes – und Discourse kann nicht starten.
Automatisiert alles vorbereiten: Bash-Skript für Bitnami Discourse
Dieses Skript ist speziell für Bitnami Discourse Container vorbereitet und übernimmt das Anlegen der Volumes sowie das Setzen der passenden Berechtigungen. Es erstellt zusätzlich eine .env-Datei mit Beispieldaten:
🔧 Klick zum Anzeigen des Skripts
#!/bin/bash
# Basispfad der Containerdaten
BASE_DIR="/opt/containers/discourse"
USER_ID=1001
GROUP_ID=1001
echo "📁 Erstelle Basisverzeichnis: $BASE_DIR"
mkdir -p "$BASE_DIR"
cd "$BASE_DIR" || exit 1
echo "📁 Erstelle Unterverzeichnisse für Volumes..."
mkdir -p postgresql_data redis_data discourse_data sidekiq_data
echo "🔑 Setze Eigentümer für Bitnami-kompatible Container (UID:GID = $USER_ID:$GROUP_ID)..."
chown -R $USER_ID:$GROUP_ID "$BASE_DIR/postgresql_data"
chown -R $USER_ID:$GROUP_ID "$BASE_DIR/redis_data"
chown -R lxd:docker "$BASE_DIR/discourse_data"
chown -R $USER_ID:$GROUP_ID "$BASE_DIR/sidekiq_data"
echo "🔒 Setze Berechtigungen: nur Besitzer darf lesen/schreiben..."
chmod -R 700 "$BASE_DIR/postgresql_data"
chmod -R 700 "$BASE_DIR/redis_data"
chmod -R 700 "$BASE_DIR/discourse_data"
chmod -R 700 "$BASE_DIR/sidekiq_data"
# .env-Datei vorbereiten, wenn sie nicht existiert
ENV_FILE="$BASE_DIR/.env"
if [ ! -f "$ENV_FILE" ]; then
echo "⚙️ Erstelle .env-Datei mit Platzhaltern..."
cat <<EOF > "$ENV_FILE"
# Database Config
POSTGRES_USER=bn_discourse
POSTGRES_PW=securepassword
POSTGRES_DBNAME=bitnami_discourse
# DISCOURSE Config
DISCOURSE_HOST=example.com
DISCOURSE_DBHOST=postgresql
DISCOURSE_PORT=5432
DISCOURSE_USERNAME=adminuser
DISCOURSE_PASSWORD=supersecure
DISCOURSE_EMAIL=admin@example.com
# REDIS Config
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PW=redispassword
# SMTP Config
DISCOURSE_SMTP_HOST=smtp.example.com
DISCOURSE_SMTP_PORT=587
DISCOURSE_SMTP_USER=mailer@example.com
DISCOURSE_SMTP_PW='smtppassword'
DISCOURSE_SMTP_PROTOCOL=tls
DISCOURSE_SMTP_AUTH=login
EOF
chmod 600 "$ENV_FILE"
echo "✅ .env wurde erstellt unter $ENV_FILE – bitte anpassen!"
else
echo "ℹ️ .env-Datei existiert bereits – übersprungen."
fi
echo "✅ Einrichtung abgeschlossen."
Wichtig nach dem Ausführen
Passe die .env-Datei mit deinen echten Daten an, bevor du den Container startest.
Vergewissere dich, dass der Container-Nutzer dieselbe UID wie $USER_ID verwendet.
Starte dein Discourse-Setup mit:
docker-compose up -d
Tipp: Dieses Skript funktioniert besonders gut mit einem Discourse-Setup, das auf dem offiziellen Bitnami-Image basiert. Bei Fragen oder Verbesserungen – schreib uns in die Kommentare!