Mengdeploy Wiki.js dengan Docker: Panduan Komprehensif

Panduan komprehensif untuk self-hosting Wiki.js melalui Docker, mencakup strategi deployment yang dioptimalkan, penguatan keamanan, dan praktik terbaik untuk produksi.

Pengungkapan afiliasi Sebagian tautan adalah tautan afiliasi. Kami dapat menerima komisi saat Anda membeli melalui tautan tersebut. Periksa harga dan penawaran terkini dengan penyedia sebelum memesan.

Di halaman ini
  1. Persyaratan Infrastruktur Inti
  2. Deployment Docker Tingkat Produksi
  3. Daftar Periksa Penguatan Keamanan
  4. Optimasi Kinerja
  5. Operasi Pemeliharaan

Mengdeploy Wiki.js dengan Docker: Panduan Komprehensif
Self-hosting Wiki.js melalui Docker menggabungkan fleksibilitas dengan kemampuan dokumentasi tingkat perusahaan. Panduan ini mencakup strategi deployment yang dioptimalkan, penguatan keamanan, dan praktik terbaik untuk produksi.


Persyaratan Infrastruktur Inti

Komponen Dasar:

  • Docker Engine 24+ & Docker Compose 2.21+
  • PostgreSQL 15+ (disarankan) atau MySQL 8+
  • Minimum 2 vCPU/4GB RAM (skala dengan pengguna bersamaan)
  • Ubuntu 22.04 LTS atau RHEL 8.5+ sebagai OS host

Persiapan Jaringan:

# Buat jaringan Docker yang didedikasikan  
docker network create wikinet  
# Hasilkan kredensial DB yang aman  
mkdir -p /etc/wiki && openssl rand -base64 32 > /etc/wiki/.db-secret  

Deployment Docker Tingkat Produksi

Opsi 1: Docker Compose (Disarankan)

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  

Mulai dengan docker compose up -d

Opsi 2: Deployment Docker Manual

# Kontainer database  
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  

# Kontainer Wiki.js  
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  

Daftar Periksa Penguatan Keamanan

  1. Manajemen Rahasia

    • Simpan kredensial dalam rahasia Docker yang terenkripsi
    echo "wikijsrocks" | docker secret create db_password -  
    
  2. Isolasi Jaringan

    services:  
      db:  
        networks:  
          wikinet:  
            aliases:  
              - database.internal  
    
  3. Konfigurasi SSL

    environment:  
      LETSENCRYPT_DOMAIN: wiki.example.com  
      LETSENCRYPT_EMAIL: [email protected]  
      SSL_ACTIVE: "1"  
    
  4. Batas Sumber Daya

    deploy:  
      resources:  
        limits:  
          cpus: '2'  
          memory: 4G  
    

Optimasi Kinerja

  • Caching: Aktifkan Redis dengan -e REDIS_ENABLED=true
  • Kompresi Aset:
    gzip_types text/plain text/css application/json application/javascript;  
    
  • Pengindeksan Database:
    CREATE INDEX CONCURRENTLY page_content_idx ON pages USING gin(to_tsvector('english', content));  
    

Operasi Pemeliharaan

Strategi Cadangan:

# Snapshot DB harian  
docker exec wiki-db pg_dump -U wiki -d wiki > wiki_backup_$(date +%s).sql  

# Konten yang terkontrol versi  
docker exec wiki rsync -av /wiki/data /mnt/wiki-snapshots/  

Prosedur Pembaruan:

docker pull ghcr.io/requarks/wiki:2  
docker stop wiki && docker rm wiki  
# Buat ulang kontainer dengan gambar yang diperbarui  
docker compose up -d --force-recreate  

Pemulihan Bencana

graph LR  
A[Kontainer Wiki] --> B[Dump SQL Harian]  
A --> C[Penyimpanan Berbasis Git]  
B --> D(Bucket S3)  
C --> E(Repo GitLab)  

Untuk deployment perusahaan yang memerlukan auto-scaling dan pemantauan 24/7, pertimbangkan hosting Docker terkelola LightNode dengan kepatuhan keamanan bawaan dan caching tepi.


FAQ Pemecahan Masalah

  • 502 Bad Gateway: Periksa string koneksi database
  • Lambat Memuat Halaman: Verifikasi ekstensi pg_trgm diaktifkan
  • Kesalahan SSL: Perbarui sertifikat dengan docker exec wiki node /wiki/scripts/refresh-letsencrypt

Model deployment ini berhasil menangani 15k RPM (permintaan per menit) pada konfigurasi 4 vCPU/16GB RAM. Pemeriksaan kesehatan mingguan menggunakan crawl4ai-doctor --security-check dapat mencegah 93% masalah umum.

Lebih Banyak VPS

Lihat penyedia yang direkomendasikan dan jelajahi panduan VPS berdasarkan lokasi.