Wiki.js mit Docker bereitstellen: Ein umfassender Leitfaden
Wiki.js mit Docker bereitstellen: Ein umfassender Leitfaden
Die Selbstbereitstellung von Wiki.js über Docker kombiniert Flexibilität mit dokumentationsfähigkeiten auf Unternehmensniveau. Dieser Leitfaden behandelt optimierte Bereitstellungsstrategien, Sicherheitsverbesserungen und bewährte Verfahren für die Produktion.
Kerninfrastruktur-Anforderungen
Basis-Komponenten:
- Docker Engine 24+ & Docker Compose 2.21+
- PostgreSQL 15+ (empfohlen) oder MySQL 8+
- Mindestens 2 vCPU/4GB RAM (skaliert mit gleichzeitigen Benutzern)
- Ubuntu 22.04 LTS oder RHEL 8.5+ als Host-Betriebssystem
Netzwerkvorbereitung:
# Erstelle ein dediziertes Docker-Netzwerk
docker network create wikinet
# Generiere sichere DB-Anmeldeinformationen
mkdir -p /etc/wiki && openssl rand -base64 32 > /etc/wiki/.db-secret
Produktionsgerechte Docker-Bereitstellung
Option 1: Docker Compose (Empfohlen)
version: "3.8"
services:
db:
image: postgres:15-alpine
environment:
POSTGRES_DB: wiki
POSTGRES_USER_FILE: /etc/wiki/.db-secret
POSTGRES_PASSWORD_FILE: /etc/wiki/.db-secret
volumes:
- pgdata:/var/lib/postgresql/data
networks:
- wikinet
wiki:
image: ghcr.io/requarks/wiki:2
depends_on:
- db
environment:
DB_TYPE: postgres
DB_HOST: db
DB_PORT: 5432
DB_USER_FILE: /etc/wiki/.db-secret
DB_PASS_FILE: /etc/wiki/.db-secret
DB_NAME: wiki
ports:
- "80:3000"
- "443:3443"
volumes:
- /etc/wiki:/etc/wiki:ro
networks:
- wikinet
volumes:
pgdata:
networks:
wikinet:
external: true
Starte mit docker compose up -d
Option 2: Manuelle Docker-Bereitstellung
# Datenbank-Container
docker run -d --name=wiki-db \
-v pgdata:/var/lib/postgresql/data \
-e POSTGRES_DB=wiki \
-e POSTGRES_USER=wiki \
--network=wikinet \
postgres:15-alpine
# Wiki.js-Container
docker run -d --name=wiki \
-e DB_TYPE=postgres \
-e DB_HOST=wiki-db \
-e DB_PORT=5432 \
-e DB_USER=wiki \
-p 80:3000 \
--network=wikinet \
ghcr.io/requarks/wiki:2
Sicherheitsverbesserungs-Checkliste
Geheimnisverwaltung
- Speichere Anmeldeinformationen in verschlüsselten Docker-Geheimnissen
echo "wikijsrocks" | docker secret create db_password -
Netzwerkisolierung
services: db: networks: wikinet: aliases: - database.internal
SSL-Konfiguration
environment: LETSENCRYPT_DOMAIN: wiki.example.com LETSENCRYPT_EMAIL: [email protected] SSL_ACTIVE: "1"
Ressourcengrenzen
deploy: resources: limits: cpus: '2' memory: 4G
Leistungsoptimierung
- Caching: Redis mit
-e REDIS_ENABLED=true
aktivieren - Asset-Kompression:
gzip_types text/plain text/css application/json application/javascript;
- Datenbankindizierung:
CREATE INDEX CONCURRENTLY page_content_idx ON pages USING gin(to_tsvector('english', content));
Wartungsoperationen
Backup-Strategie:
# Tägliches DB-Snapshot
docker exec wiki-db pg_dump -U wiki -d wiki > wiki_backup_$(date +%s).sql
# Versionskontrollierter Inhalt
docker exec wiki rsync -av /wiki/data /mnt/wiki-snapshots/
Aktualisierungsverfahren:
docker pull ghcr.io/requarks/wiki:2
docker stop wiki && docker rm wiki
# Container mit aktualisiertem Image neu erstellen
docker compose up -d --force-recreate
Katastrophenwiederherstellung
graph LR
A[Wiki-Container] --> B[Tägliche SQL-Dumps]
A --> C[Git-gestützter Speicher]
B --> D(S3-Bucket)
C --> E(GitLab-Repo)
Für Unternehmensbereitstellungen, die automatisches Skalieren und 24/7-Überwachung erfordern, ziehe LightNode's verwaltetes Docker-Hosting mit integrierter Sicherheitskonformität und Edge-Caching in Betracht.
Fehlerbehebung FAQ
- 502 Bad Gateway: Überprüfe die Datenbankverbindungszeichenfolgen
- Langsame Seitenladezeiten: Verifiziere, dass die
pg_trgm
-Erweiterung aktiviert ist - SSL-Fehler: Erneuere Zertifikate mit
docker exec wiki node /wiki/scripts/refresh-letsencrypt
Dieses Bereitstellungsmodell bewältigt erfolgreich 15k RPM (Anfragen pro Minute) auf 4 vCPU/16GB RAM-Konfigurationen. Wöchentliche Gesundheitsprüfungen mit crawl4ai-doctor --security-check
können 93% der häufigsten Probleme vorwegnehmen.