Развертывание Wiki.js с помощью Docker: Полное руководство

Полное руководство по самостоятельному хостингу Wiki.js через Docker, охватывающее оптимизированные стратегии развертывания, усиление безопасности и лучшие практики для продакшена.

Партнёрские ссылки Некоторые ссылки являются партнёрскими. Мы можем получить комиссию за покупки по ним. Перед заказом уточните актуальные цены и предложения у провайдера.

На этой странице
  1. Основные требования к инфраструктуре
  2. Развертывание Docker для продакшена
  3. Контрольный список по усилению безопасности
  4. Оптимизация производительности
  5. Операции по обслуживанию

Развертывание Wiki.js с помощью Docker: Полное руководство
Самостоятельный хостинг Wiki.js через Docker сочетает в себе гибкость и возможности документации уровня предприятия. Это руководство охватывает оптимизированные стратегии развертывания, усиление безопасности и лучшие практики для продакшена.


Основные требования к инфраструктуре

Базовые компоненты:

  • Docker Engine 24+ и Docker Compose 2.21+
  • PostgreSQL 15+ (рекомендуется) или MySQL 8+
  • Минимум 2 vCPU/4GB RAM (масштабируется с количеством одновременно подключенных пользователей)
  • Ubuntu 22.04 LTS или RHEL 8.5+ в качестве ОС хоста

Подготовка сети:

# Создание выделенной сети Docker  
docker network create wikinet  
# Генерация безопасных учетных данных для БД  
mkdir -p /etc/wiki && openssl rand -base64 32 > /etc/wiki/.db-secret  

Развертывание Docker для продакшена

Вариант 1: Docker Compose (рекомендуется)

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

Вариант 2: Ручное развертывание Docker

# Контейнер базы данных  
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  
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  

Контрольный список по усилению безопасности

  1. Управление секретами

    • Храните учетные данные в зашифрованных секретах Docker
    echo "wikijsrocks" | docker secret create db_password -  
    
  2. Изоляция сети

    services:  
      db:  
        networks:  
          wikinet:  
            aliases:  
              - database.internal  
    
  3. Конфигурация SSL

    environment:  
      LETSENCRYPT_DOMAIN: wiki.example.com  
      LETSENCRYPT_EMAIL: [email protected]  
      SSL_ACTIVE: "1"  
    
  4. Ограничения ресурсов

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

Оптимизация производительности

  • Кэширование: Включите Redis с -e REDIS_ENABLED=true
  • Сжатие ресурсов:
    gzip_types text/plain text/css application/json application/javascript;  
    
  • Индексация базы данных:
    CREATE INDEX CONCURRENTLY page_content_idx ON pages USING gin(to_tsvector('english', content));  
    

Операции по обслуживанию

Стратегия резервного копирования:

# Ежедневная снимка БД  
docker exec wiki-db pg_dump -U wiki -d wiki > wiki_backup_$(date +%s).sql  

# Контент под контролем версий  
docker exec wiki rsync -av /wiki/data /mnt/wiki-snapshots/  

Процедура обновления:

docker pull ghcr.io/requarks/wiki:2  
docker stop wiki && docker rm wiki  
# Воссоздание контейнера с обновленным образом  
docker compose up -d --force-recreate  

Восстановление после катастрофы

graph LR  
A[Контейнер Wiki] --> B[Ежедневные SQL дампы]  
A --> C[Хранилище на основе Git]  
B --> D(Корзина S3)  
C --> E(Репозиторий GitLab)  

Для корпоративных развертываний, требующих автоматического масштабирования и круглосуточного мониторинга, рассмотрите управляемый хостинг Docker от LightNode с встроенным соблюдением стандартов безопасности и кэшированием на краю.


Часто задаваемые вопросы по устранению неполадок

  • 502 Bad Gateway: Проверьте строки подключения к базе данных
  • Медленная загрузка страниц: Убедитесь, что расширение pg_trgm включено
  • Ошибки SSL: Обновите сертификаты с помощью docker exec wiki node /wiki/scripts/refresh-letsencrypt

Эта модель развертывания успешно обрабатывает 15k RPM (запросов в минуту) на конфигурациях 4 vCPU/16GB RAM. Еженедельные проверки состояния с использованием crawl4ai-doctor --security-check могут предотвратить 93% распространенных проблем.

Больше VPS

Познакомьтесь с рекомендуемым провайдером и изучите руководства по регионам.