Implantando Wiki.js com Docker: Um Guia Abrangente
Implantando Wiki.js com Docker: Um Guia Abrangente
A auto-hospedagem do Wiki.js via Docker combina flexibilidade com capacidades de documentação de nível empresarial. Este guia cobre estratégias de implantação otimizadas, fortalecimento de segurança e melhores práticas de produção.
Requisitos de Infraestrutura Básica
Componentes Básicos:
- Docker Engine 24+ & Docker Compose 2.21+
- PostgreSQL 15+ (recomendado) ou MySQL 8+
- Mínimo de 2 vCPU/4GB RAM (escalável com usuários simultâneos)
- Ubuntu 22.04 LTS ou RHEL 8.5+ como sistema operacional host
Preparação da Rede:
# Criar rede Docker dedicada
docker network create wikinet
# Gerar credenciais seguras para o DB
mkdir -p /etc/wiki && openssl rand -base64 32 > /etc/wiki/.db-secret
Implantação Docker de Nível de Produção
Opção 1: Docker Compose (Recomendado)
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
Comece com docker compose up -d
Opção 2: Implantação Manual do Docker
# Contêiner do banco de dados
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
# Contêiner do 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 de Verificação para Fortalecimento de Segurança
Gerenciamento de Segredos
- Armazene credenciais em segredos Docker criptografados
echo "wikijsrocks" | docker secret create db_password -
Isolamento de Rede
services: db: networks: wikinet: aliases: - database.internal
Configuração de SSL
environment: LETSENCRYPT_DOMAIN: wiki.example.com LETSENCRYPT_EMAIL: [email protected] SSL_ACTIVE: "1"
Limites de Recursos
deploy: resources: limits: cpus: '2' memory: 4G
Otimização de Desempenho
- Cache: Ative o Redis com
-e REDIS_ENABLED=true
- Compressão de Ativos:
gzip_types text/plain text/css application/json application/javascript;
- Indexação de Banco de Dados:
CREATE INDEX CONCURRENTLY page_content_idx ON pages USING gin(to_tsvector('english', content));
Operações de Manutenção
Estratégia de Backup:
# Snapshot diário do DB
docker exec wiki-db pg_dump -U wiki -d wiki > wiki_backup_$(date +%s).sql
# Conteúdo versionado
docker exec wiki rsync -av /wiki/data /mnt/wiki-snapshots/
Procedimento de Atualização:
docker pull ghcr.io/requarks/wiki:2
docker stop wiki && docker rm wiki
# Recriar contêiner com a imagem atualizada
docker compose up -d --force-recreate
Recuperação de Desastres
graph LR
A[Contêiner Wiki] --> B[Backups SQL Diários]
A --> C[Armazenamento com suporte a Git]
B --> D(Bucket S3)
C --> E(Repositório GitLab)
Para implantações empresariais que exigem escalonamento automático e monitoramento 24/7, considere o hosting gerenciado em Docker da LightNode com conformidade de segurança integrada e cache de borda.
Perguntas Frequentes sobre Solução de Problemas
- 502 Bad Gateway: Verifique as strings de conexão do banco de dados
- Carregamentos de Página Lentos: Verifique se a extensão
pg_trgm
está habilitada - Erros de SSL: Renove os certificados com
docker exec wiki node /wiki/scripts/refresh-letsencrypt
Este modelo de implantação lida com sucesso com 15k RPM (requisições por minuto) em configurações de 4 vCPU/16GB RAM. Verificações de saúde semanais usando crawl4ai-doctor --security-check
podem prevenir 93% dos problemas comuns.