Развертывание Wiki.js с помощью Docker: Полное руководство
Развертывание 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
Контрольный список по усилению безопасности
Управление секретами
- Храните учетные данные в зашифрованных секретах Docker
echo "wikijsrocks" | docker secret create db_password -
Изоляция сети
services: db: networks: wikinet: aliases: - database.internal
Конфигурация SSL
environment: LETSENCRYPT_DOMAIN: wiki.example.com LETSENCRYPT_EMAIL: [email protected] SSL_ACTIVE: "1"
Ограничения ресурсов
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% распространенных проблем.