Wdrażanie Wiki.js z Dockerem: Kompleksowy przewodnik

Kompleksowy przewodnik po samodzielnym hostowaniu Wiki.js za pomocą Dockera, obejmujący zoptymalizowane strategie wdrażania, wzmocnienie bezpieczeństwa i najlepsze praktyki produkcyjne.

Informacja o linkach afiliacyjnych Niektóre linki są afiliacyjne. Możemy otrzymać prowizję, jeśli dokonasz zakupu za ich pośrednictwem. Przed zamówieniem potwierdź u dostawcy aktualne ceny i oferty.

Na tej stronie
  1. Wymagania dotyczące podstawowej infrastruktury
  2. Wdrażanie Dockera na poziomie produkcyjnym
  3. Lista kontrolna wzmocnienia bezpieczeństwa
  4. Optymalizacja wydajności
  5. Operacje konserwacyjne

Wdrażanie Wiki.js z Dockerem: Kompleksowy przewodnik
Samodzielne hostowanie Wiki.js za pomocą Dockera łączy elastyczność z dokumentacją na poziomie przedsiębiorstwa. Ten przewodnik obejmuje zoptymalizowane strategie wdrażania, wzmocnienie bezpieczeństwa i najlepsze praktyki produkcyjne.


Wymagania dotyczące podstawowej infrastruktury

Podstawowe komponenty:

  • Docker Engine 24+ i Docker Compose 2.21+
  • PostgreSQL 15+ (zalecane) lub MySQL 8+
  • Minimum 2 vCPU/4GB RAM (skaluje się z równoczesnymi użytkownikami)
  • Ubuntu 22.04 LTS lub RHEL 8.5+ jako system operacyjny hosta

Przygotowanie sieci:

# Utwórz dedykowaną sieć Docker  
docker network create wikinet  
# Wygeneruj bezpieczne dane uwierzytelniające do bazy danych  
mkdir -p /etc/wiki && openssl rand -base64 32 > /etc/wiki/.db-secret  

Wdrażanie Dockera na poziomie produkcyjnym

Opcja 1: Docker Compose (zalecane)

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  

Rozpocznij od docker compose up -d

Opcja 2: Ręczne wdrażanie Dockera

# Kontener bazy danych  
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  

# Kontener 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  

Lista kontrolna wzmocnienia bezpieczeństwa

  1. Zarządzanie sekretami

    • Przechowuj dane uwierzytelniające w zaszyfrowanych sekretach Dockera
    echo "wikijsrocks" | docker secret create db_password -  
    
  2. Izolacja sieci

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

    environment:  
      LETSENCRYPT_DOMAIN: wiki.example.com  
      LETSENCRYPT_EMAIL: [email protected]  
      SSL_ACTIVE: "1"  
    
  4. Limity zasobów

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

Optymalizacja wydajności

  • Cache: Włącz Redis z -e REDIS_ENABLED=true
  • Kompresja zasobów:
    gzip_types text/plain text/css application/json application/javascript;  
    
  • Indeksowanie bazy danych:
    CREATE INDEX CONCURRENTLY page_content_idx ON pages USING gin(to_tsvector('english', content));  
    

Operacje konserwacyjne

Strategia kopii zapasowej:

# Codzienny zrzut bazy danych  
docker exec wiki-db pg_dump -U wiki -d wiki > wiki_backup_$(date +%s).sql  

# Treść kontrolowana wersjami  
docker exec wiki rsync -av /wiki/data /mnt/wiki-snapshots/  

Procedura aktualizacji:

docker pull ghcr.io/requarks/wiki:2  
docker stop wiki && docker rm wiki  
# Odtwórz kontener z zaktualizowanym obrazem  
docker compose up -d --force-recreate  

Odzyskiwanie po awarii

graph LR  
A[Kontener Wiki] --> B[Codzienne zrzuty SQL]  
A --> C[Przechowywanie oparte na Gicie]  
B --> D(S3 Bucket)  
C --> E(Repozytorium GitLab)  

Dla wdrożeń przedsiębiorstw wymagających automatycznego skalowania i monitorowania 24/7, rozważ zarządzane hostowanie Dockera od LightNode z wbudowaną zgodnością z bezpieczeństwem i buforowaniem brzegowym.


FAQ dotyczące rozwiązywania problemów

  • 502 Bad Gateway: Sprawdź ciągi połączeń z bazą danych
  • Wolne ładowanie stron: Zweryfikuj, czy rozszerzenie pg_trgm jest włączone
  • Błędy SSL: Odnów certyfikaty za pomocą docker exec wiki node /wiki/scripts/refresh-letsencrypt

Ten model wdrożenia skutecznie obsługuje 15k RPM (żądań na minutę) na konfiguracjach 4 vCPU/16GB RAM. Cotygodniowe kontrole stanu za pomocą crawl4ai-doctor --security-check mogą zapobiec 93% powszechnych problemów.

Więcej VPS

Poznaj polecanego dostawcę i przeglądaj poradniki VPS według lokalizacji.