Sobre o projeto

Este repositório empacota uma implantação self-hosted do XWiki como um único stack Docker Compose. O XWiki, uma plataforma de wiki empresarial, roda atrás do Traefik atuando como proxy reverso, com certificados do Let's Encrypt emitidos automaticamente para os hostnames configurados. O PostgreSQL 15 armazena os dados do wiki. A configuração segue uma sequência curta: clone o repositório, crie as duas redes Docker esperadas (traefik-network e xwiki-network), copie .env.example para .env e preencha os valores necessários (XWIKI_DB_PASSWORD, XWIKI_HOSTNAME, TRAEFIK_HOSTNAME, TRAEFIK_ACME_EMAIL, TRAEFIK_BASIC_AUTH), depois levante o stack com docker compose. O README observa que a primeira inicialização leva vários minutos enquanto o XWiki inicializa seu esquema e páginas core, e lista problemas comuns de primeira implantação, como falha na emissão de certificado porque o DNS não propagou ou a porta 80 não está acessível, erros de rede por pular a etapa de criação de rede, e falhas de variável ausente. Um script update.sh move o checkout para a tag de release mais recente e re-executa docker compose up. Ele se recusa a cruzar uma versão major sem supervisão, se recusa a rodar sobre mudanças locais, e reporta qualquer variável que se tornou obrigatória desde a versão instalada. Uma flag --dry-run visualiza a ação. Três imagens oficiais do Docker Hub (traefik, xwiki, postgres) são fixadas por digest tag@sha256 como defaults de interpolação, então um simples git pull entrega a combinação testada. Níveis de override por imagem são documentados: uma variável version troca apenas a tag sem o digest, enquanto uma variável tag substitui toda a referência. Defaults aninhados requerem Docker Compose v2.5 ou mais recente. Um job de CI diário re-resolve pins contra os registries e compara versões fixadas de XWiki e Traefik com releases upstream; GitHub Actions são fixadas por SHA de commit e mantidas frescas pelo Dependabot. Backups são tratados por um container dedicado que roda um pg_dump encanado para gzip mais um arquivo tar.gz dos dados do wiki, depois poda backups antigos e dorme. Os defaults são um warm-up de 30 minutos, um intervalo de 24 horas e retenção de 7 dias. Dois scripts interativos de restauração cobrem o banco de dados e os dados da aplicação. O repositório aconselha montar os volumes de backup no host e fazer backup antes de upgrades porque o XWiki migra seu esquema em saltos de versão. Hardening é aplicado uniformemente: todo serviço define no-new-privileges, containers de infraestrutura dropam todas as capabilities e adicionam de volta apenas o que seus entrypoints precisam (NET_BIND_SERVICE para Traefik, CHOWN/SETUID/SETGID para imagens de banco de dados), enquanto containers de aplicação mantêm o conjunto de capabilities padrão deliberadamente. Cada serviço carrega limites de memória e CPU mais reservas como defaults de compose, sobrescritíveis via variáveis .env. Um workflow de Verificação de Implantação roda em todo push, pull request e diariamente às 06:00 UTC, cobrindo shellcheck, actionlint, scans Trivy das três imagens fixadas, a checagem de frescor, e um job de deploy-and-test que inicializa o stack com credenciais efêmeras e requer que a UI do wiki responda através do Traefik. Um script de backup/restauração end-to-end insere uma linha de marcador, restaura o backup mais antigo e afirma que o marcador desapareceu; ele para brevemente o container do banco de dados para provar a detecção de falha e é destinado para staging, não produção. Notas de segurança afirmam que credenciais são lidas de um .env ignorado pelo git na hora do deploy, que o PostgreSQL escuta apenas na rede interna, e que releases antes de v1.0.0 enviaram um .env rastreado com uma senha de banco de dados aparentemente gerada que deve ser rotacionada se reutilizada.