Wiki.js'i Docker ile Dağıtma: Kapsamlı Bir Kılavuz
Wiki.js'i Docker ile Dağıtma: Kapsamlı Bir Kılavuz
Docker aracılığıyla Wiki.js'i kendin barındırmak, esnekliği kurumsal düzeyde belgeleme yetenekleriyle birleştirir. Bu kılavuz, optimize edilmiş dağıtım stratejilerini, güvenlik güçlendirmelerini ve üretim en iyi uygulamalarını kapsar.
Temel Altyapı Gereksinimleri
Temel Bileşenler:
- Docker Engine 24+ & Docker Compose 2.21+
- PostgreSQL 15+ (önerilir) veya MySQL 8+
- Minimum 2 vCPU/4GB RAM (eşzamanlı kullanıcı sayısına göre ölçeklenir)
- Ana işletim sistemi olarak Ubuntu 22.04 LTS veya RHEL 8.5+
Ağ Hazırlığı:
# Özel Docker ağı oluştur
docker network create wikinet
# Güvenli DB kimlik bilgileri oluştur
mkdir -p /etc/wiki && openssl rand -base64 32 > /etc/wiki/.db-secret
Üretim Düzeyinde Docker Dağıtımı
Seçenek 1: Docker Compose (Önerilir)
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
docker compose up -d
ile başlayın
Seçenek 2: Manuel Docker Dağıtımı
# Veritabanı konteyneri
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 konteyneri
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
Güvenlik Güçlendirme Kontrol Listesi
Gizli Bilgilerin Yönetimi
- Kimlik bilgilerini şifrelenmiş Docker gizli bilgileri olarak saklayın
echo "wikijsrocks" | docker secret create db_password -
Ağ İzolasyonu
services: db: networks: wikinet: aliases: - database.internal
SSL Yapılandırması
environment: LETSENCRYPT_DOMAIN: wiki.example.com LETSENCRYPT_EMAIL: [email protected] SSL_ACTIVE: "1"
Kaynak Sınırları
deploy: resources: limits: cpus: '2' memory: 4G
Performans Optimizasyonu
- Önbellekleme: Redis'i
-e REDIS_ENABLED=true
ile etkinleştirin - Varlık Sıkıştırması:
gzip_types text/plain text/css application/json application/javascript;
- Veritabanı İndeksleme:
CREATE INDEX CONCURRENTLY page_content_idx ON pages USING gin(to_tsvector('english', content));
Bakım Operasyonları
Yedekleme Stratejisi:
# Günlük DB anlık görüntüsü
docker exec wiki-db pg_dump -U wiki -d wiki > wiki_backup_$(date +%s).sql
# Versiyon kontrolü yapılmış içerik
docker exec wiki rsync -av /wiki/data /mnt/wiki-snapshots/
Güncelleme Prosedürü:
docker pull ghcr.io/requarks/wiki:2
docker stop wiki && docker rm wiki
# Güncellenmiş imaj ile konteyneri yeniden oluştur
docker compose up -d --force-recreate
Felaket Kurtarma
graph LR
A[Wiki Konteyneri] --> B[Günlük SQL Yedekleri]
A --> C[Git Destekli Depolama]
B --> D(S3 Bucket)
C --> E(GitLab Repo)
Otomatik ölçeklendirme ve 7/24 izleme gerektiren kurumsal dağıtımlar için, yerleşik güvenlik uyumluluğu ve kenar önbellekleme ile LightNode'un yönetilen Docker barındırma hizmetini değerlendirin.
Sorun Giderme SSS
- 502 Bad Gateway: Veritabanı bağlantı dizelerini kontrol edin
- Yavaş Sayfa Yüklemeleri:
pg_trgm
uzantısının etkin olduğunu doğrulayın - SSL Hataları: Sertifikaları
docker exec wiki node /wiki/scripts/refresh-letsencrypt
ile yenileyin
Bu dağıtım modeli, 4 vCPU/16GB RAM yapılandırmalarında 15k RPM (dakikada istek) işlemlerini başarıyla yönetmektedir. Haftalık sağlık kontrolleri crawl4ai-doctor --security-check
kullanılarak, yaygın sorunların %93'ünü önleyebilir.