BookStack, Wiki.js ou Outline: qual wiki escolher?
Compare BookStack, Wiki.js e Outline para documentacao interna. Analisamos requisitos de infraestrutura, modelos de edicao e autenticacao para decidir o melhor para sua equipe.
Qual wiki auto-hospedada você deve usar
Uma wiki auto-hospedada mantém os documentos da sua equipe em um único local pesquisável, em um servidor sob seu controle. BookStack, Wiki.js e Outline cumprem essa função. A principal diferença está na quantidade de componentes que você precisa configurar antes de a primeira página carregar e em quem pode fazer login.
O BookStack é o mais simples de instalar e impõe a estrutura mais definida. O Wiki.js oferece a maior variedade de editores em uma única árvore de páginas. O Outline proporciona a melhor experiência de escrita dos três, e sua configuração de produção documentada exige um provedor de identidade externo para criar o workspace inicial.
Tudo abaixo foi obtido da documentação dos próprios projetos e dos arquivos de configuração publicados por eles. Esta é uma comparação de recursos, não um benchmark. Os números de versão e os requisitos têm uma data de referência, porque os três projetos mudam com frequência.
A estrutura é a verdadeira escolha
O BookStack impõe uma estrutura fixa ao conteúdo. Uma página fica dentro de um livro, um livro pode conter capítulos e as estantes agrupam livros. Não é possível inventar um quinto nível. Essa limitação faz parte do produto: um novo autor sabe onde colocar uma página porque existe apenas um local possível. O custo é que o conteúdo que não se adapta à estrutura é forçado a caber nela.
O Wiki.js usa uma árvore de caminhos, como as pastas num disco. Uma página em ops/backup/restic fica onde a colocar, e pode escolher a profundidade. Nada impede que duas pessoas arquivem o mesmo assunto em dois ramos diferentes. Por isso, uma instância do Wiki.js precisa de uma pessoa responsável pela árvore.
O Outline usa coleções com documentos aninhados dentro de outros documentos. Para mover um documento, basta arrastá-lo com o rato. É o mais flexível dos três e, por isso, também é o mais fácil de deixar desorganizar.
BookStack: a instalação mínima
BookStack é uma aplicação PHP que usa MySQL. Em outubro de 2026, os requisitos documentados são PHP 8.2 ou mais recente e MySQL 8.0 ou MariaDB 10.6 ou mais recente, além do Composer 2.2 ou mais recente se a instalação for feita a partir do código-fonte. A linha de versões atual é a 26.09, lançada em 24 de setembro de 2026, e a versão estável mais recente é a 26.09.2, uma versão de segurança de 20 de outubro de 2026. A partir da versão 26.09, é necessário definir um valor APP_KEY, e as etapas do contêiner abaixo já fazem isso. O BookStack também publicou um aviso crítico de segurança do PHP em 21 de outubro de 2026: atualize os pacotes PHP subjacentes ou faça pull e recrie o contêiner com uma imagem corrigida, porque a versão do BookStack, por si só, não confirma que o PHP está corrigido.
O projeto oferece suporte oficial a scripts de instalação e instruções para as versões listadas do Ubuntu LTS, atualmente 22.04, 24.04 e 26.04, e às vezes publica guias e scripts sem suporte para outros ambientes. O script para 24.04 instala Apache, MySQL 8.0 e PHP 8.3. No 26.04, use installation-ubuntu-26.04.sh nos comandos abaixo; ele instala MySQL 8.4 e PHP 8.5.
wget https://codeberg.org/bookstack/devops/raw/branch/main/scripts/installation-ubuntu-24.04.sh
chmod a+x installation-ubuntu-24.04.sh
sudo ./installation-ubuntu-24.04.shLeia o aviso desse script antes de executá-lo. A documentação afirma que ele é "ONLY FOR A FRESH OS, it will install Apache, MySQL 8.0 & PHP 8.3 and could OVERWRITE any existing web setup on the machine". O script para 24.04 verifica se já existem configurações do Apache e dados do MySQL e interrompe a instalação antes de começar se encontrar qualquer um deles. Nesse caso, use contêineres ou instale o BookStack manualmente sobre uma pilha LAMP existente no Ubuntu 24.04.
A opção com contêiner usa a imagem do LinuxServer.io, uma das duas configurações comunitárias de contêiner listadas na documentação do BookStack. O BookStack precisa de uma chave de criptografia de sessão e não exibirá páginas sem ela, portanto gere-a primeiro.
docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkeyCopie o valor exibido para APP_KEY e depois grave o serviço. Esse serviço também precisa de um banco de dados MySQL ou MariaDB existente; defina os valores de DB_* de acordo com ele, porque o trecho não cria um serviço de banco de dados.
services:
bookstack:
image: lscr.io/linuxserver/bookstack:latest
container_name: bookstack
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- APP_URL=https://wiki.example.com
- APP_KEY=paste_the_generated_key_here
- DB_HOST=bookstack_db
- DB_PORT=3306
- DB_USERNAME=bookstack
- DB_PASSWORD=change_me
- DB_DATABASE=bookstackapp
volumes:
- ./config:/config
ports:
- 6875:80
restart: unless-stoppedAPP_URL precisa corresponder ao endereço que os leitores realmente digitam, incluindo o esquema e qualquer porta. Defina-o como http://localhost e depois sirva o site por HTTPS; os links gerados e os redirecionamentos apontarão para o host errado, e os leitores verão uma página de login que redireciona para si mesma em um loop. Se os arquivos Compose forem novidade para você, comece por Noções básicas do Docker Compose em um VPS antes de usar este exemplo.
Inicie-o e verifique se a aplicação responde, não apenas se o contêiner está em execução:
docker compose up -d
docker compose ps
curl -sI http://127.0.0.1:6875/loginUm 200 OK significa que a aplicação PHP foi iniciada e alcançou o banco de dados. Um 500 exige consultar o log de erros da aplicação para diagnóstico. Por padrão, o BookStack grava os erros em um arquivo de log, em vez de enviá-los para a saída do contêiner; portanto, abra ./config/log/bookstack/laravel.log no host para ver a causa. docker compose logs bookstack mostra as próprias mensagens de inicialização do contêiner, que podem não incluir o erro da aplicação.
Wiki.js: uma árvore, vários editores
Wiki.js é uma aplicação Node.js. A configuração Docker documentada usa PostgreSQL, embora o software também aceite MySQL, MariaDB, MSSQL e SQLite. Este é o arquivo Compose da própria página Docker do projeto:
services:
db:
image: postgres:15-alpine
environment:
POSTGRES_DB: wiki
POSTGRES_PASSWORD: wikijsrocks
POSTGRES_USER: wikijs
logging:
driver: none
restart: unless-stopped
volumes:
- db-data:/var/lib/postgresql/data
wiki:
image: ghcr.io/requarks/wiki:2
depends_on:
- db
init: true
environment:
DB_TYPE: postgres
DB_HOST: db
DB_PORT: 5432
DB_USER: wikijs
DB_PASS: wikijsrocks
DB_NAME: wiki
restart: unless-stopped
ports:
- "80:3000"
volumes:
db-data:Altere POSTGRES_PASSWORD e DB_PASS juntos antes de executá-lo, porque eles formam uma credencial e o valor de exemplo é público. A tag está fixada em ghcr.io/requarks/wiki:2 de propósito. A documentação recomenda não usar latest, pois um salto de versão principal altera o schema do banco de dados em uma instância em execução.
A versão 2 é a linha a ser usada. Em 27 de outubro de 2026, a versão 2 mais recente é 2.5.317, uma compilação de correção de bugs de 23 de outubro de 2026 que recria a imagem com as atualizações de segurança mais recentes do Node. As versões 2 agora são publicadas em um repositório requarks/wiki-v2 separado, e a tag de imagem :2 continua acompanhando essas versões. A versão 3 está em beta público. A documentação de instalação informa que as imagens usam as tags 3.0.0-beta e que as tags simples 3 e 3.0 não funcionarão até o fim da fase beta. Trate-a como uma prévia, não como um destino de produção. A versão anterior, 2.5.316, de 2 de outubro de 2026, adicionou um utilitário de exportação para migrar o conteúdo para a versão 3 posteriormente.
Na primeira abertura, o Wiki.js orienta você por uma configuração no navegador que cria a conta de administrador. Até concluí-la, qualquer pessoa que alcance a porta verá esse assistente. Portanto, coloque o serviço atrás do seu reverse proxy e do TLS (segurança da camada de transporte) antes de abrir o firewall. Um wiki em seu próprio hostname fica naturalmente atrás de Traefik na frente de vários aplicativos Docker quando o servidor hospeda mais de um serviço.
A escolha do editor é o motivo pelo qual as pessoas escolhem o Wiki.js. Uma única instância pode conter páginas Markdown, páginas do editor visual, páginas HTML bruto e páginas AsciiDoc lado a lado. Isso ajuda quando você importa conteúdo antigo em um formato que prefere não converter. Também é possível acabar com quatro padrões editoriais diferentes em um único wiki. Por isso, defina o editor padrão no primeiro dia e registre essa decisão.
Outline: o melhor editor, com os pré-requisitos mais pesados
Outline é o que as pessoas geralmente querem dizer quando procuram algo com a aparência de uma ferramenta comercial de notas. É uma aplicação Node.js, e a versão atual em 27 de outubro de 2026 é 1.12.0, de 23 de outubro de 2026. Essa versão atualiza a imagem Docker para uma versão do Node que corrige várias vulnerabilidades do Node divulgadas recentemente. Portanto, atualize as instalações antigas. O arquivo de ambiente de exemplo lista o que é necessário: PostgreSQL por meio de DATABASE_URL, Redis por meio de REDIS_URL, dois segredos aleatórios e um URL acessível publicamente.
openssl rand -hex 32
openssl rand -hex 32Execute isso duas vezes e guarde os dois valores. O primeiro se torna SECRET_KEY, e o segundo, UTILS_SECRET. O núcleo do arquivo de ambiente fica assim:
NODE_ENV=production
URL=https://docs.example.com
PORT=3000
SECRET_KEY=<first openssl value>
UTILS_SECRET=<second openssl value>
DATABASE_URL=postgres://outline:change_me@postgres:5432/outline
PGSSLMODE=disable
REDIS_URL=redis://redis:6379
FILE_STORAGE=local
FILE_STORAGE_LOCAL_ROOT_DIR=/var/lib/outline/dataPGSSLMODE=disable só está correto quando o banco de dados está na mesma máquina ou na mesma rede Docker. Não o use para um banco de dados acessado pela rede, ou a conexão trafegará sem criptografia. Os anexos não obrigam mais você a usar armazenamento de objetos: FILE_STORAGE=local grava os uploads no diretório acima. Esse diretório precisa ser um volume no qual o container possa gravar e que esteja incluído nos backups. Defina FILE_STORAGE=s3 usando os valores de AWS_* se quiser armazenar esses arquivos em um bucket compatível com S3.
Agora vem a parte que surpreende muitas pessoas. O Outline não tem login integrado com nome de usuário e senha. A configuração de exemplo do próprio projeto informa que são necessárias credenciais de login de terceiros: "pelo menos UMA destas opções é necessária para uma instalação funcional; caso contrário, você não terá opções de login". Os provedores documentados incluem Google, Slack, Microsoft Entra, Discord e qualquer servidor genérico de OpenID Connect (OIDC) por meio de OIDC_CLIENT_ID, OIDC_CLIENT_SECRET, OIDC_AUTH_URI, OIDC_TOKEN_URI e OIDC_USERINFO_URI. Os workspaces existentes também podem habilitar passkeys e links ou códigos enviados por email. O login por email precisa de SMTP e não contorna o SSO para contas vinculadas a um provedor de SSO.
Portanto, o custo real da configuração de produção documentada do Outline é: Outline, PostgreSQL, Redis e um provedor de identidade. Se sua equipe já usa Google Workspace ou Microsoft Entra para fazer login, o Outline se torna muito atraente. Caso contrário, você também terá de hospedar algo como Keycloak ou Authentik, que será um segundo serviço para corrigir e incluir nos backups. Planeje a memória de acordo: a orientação do próprio Outline é de aproximadamente 512 MB por processo web, definido por WEB_CONCURRENCY, além do banco de dados e do Redis.
Como cada um controla quem pode ler o quê
O BookStack inclui contas locais com email e palavra-passe por predefinição e suporta LDAP, SAML2 e OIDC como alternativas. As permissões são definidas por função e podem ser substituídas numa estante, livro, capítulo ou página específica. As permissões de livros e capítulos são herdadas pelo conteúdo filho, salvo substituição; as permissões de estantes têm de ser copiadas explicitamente para os livros.
O Wiki.js também inclui contas locais e acrescenta uma longa lista de estratégias que pode ativar na área de administração. As regras das páginas concedem ou negam acesso com base num padrão de caminho. Isto é poderoso, mas é fácil configurar incorretamente, porque uma regra escrita para ops/* abrange silenciosamente todas as páginas que posteriormente guardar nesse caminho.
O Outline usa o seu provedor de identidade para a associação ao SSO e, dentro do Outline, pode controlar o acesso por coleção, documento e grupo. Os utilizadores removidos do provedor de identidade terminam a sessão quando carregam o Outline novamente; suspenda-os no Outline para terminar imediatamente as sessões existentes.
Como a pesquisa funciona em cada um
A pesquisa é o que faz uma wiki justificar o seu uso ou virar uma pasta de arquivos esquecidos.
O BookStack pesquisa o banco de dados e oferece aos leitores uma linguagem de consulta que pode ser aprendida em um minuto. Colocar uma frase entre aspas, como em "london meeting", exige essa string exata. Colchetes pesquisam tags: [location=london] faz a correspondência pelo nome da tag, pelo valor ou por ambos, com comparações que incluem !=, >= e like. Chaves filtram metadados, como em {created_after:2016-12-30}. Qualquer termo exato, de tag ou de filtro pode ser negado com o prefixo -. O BookStack limita quantos termos de cada tipo uma consulta pode conter, portanto uma consulta muito longa é truncada em vez de ser executada.
O Wiki.js trata a pesquisa como um módulo conectável. Os mecanismos documentados são um mecanismo básico de banco de dados, um mecanismo PostgreSQL, Elasticsearch, Algolia, AWS CloudSearch e Azure Search. O mecanismo básico faz correspondências em títulos, descrições e caminhos, não no conteúdo das páginas. Se você usa PostgreSQL, alterne para o mecanismo PostgreSQL na área de administração, porque ele usa o próprio índice de texto completo do banco de dados em vez de uma correspondência simples. Use Elasticsearch apenas quando a wiki for grande o suficiente para justificar a execução e a aplicação de patches em um segundo serviço de pesquisa.
O Outline pesquisa índices de texto completo do PostgreSQL. A pesquisa de palavras-chave integrada não exige um serviço de pesquisa separado. Para uma wiki de equipe com poucos milhares de documentos, essa é a opção que exige menos trabalho entre as três.
Qual deles é mais adequado para você
Escolha o BookStack se quiser colocar a wiki em funcionamento ainda hoje e preferir discutir o conteúdo em vez da estrutura. Ele tem o menor número de componentes: uma aplicação PHP e um banco de dados MySQL. É adequado para runbooks internos e documentação para clientes, além de atender bem a equipes em que a maioria dos autores não são engenheiros. Também é o mais fácil de fazer backup entre os três, porque o estado consiste em um dump do banco de dados, nos arquivos enviados e na configuração .env, incluindo APP_KEY.
Escolha o Wiki.js se precisar de um editor específico ou de uma estratégia de autenticação específica que os outros não oferecem, ou se estiver importando uma grande quantidade de Markdown ou AsciiDoc existente e quiser preservar a estrutura de caminhos. Aceite que você estará executando uma stack mais pesada e fixe a tag da versão principal.
Escolha o Outline se a qualidade da escrita for o fator mais importante, se a wiki for destinada a uma equipe e não ao público, e se você já tiver um provedor de identidade. Essa configuração compensa com um editor que as pessoas realmente gostam de usar. Não o escolha como sua primeira aplicação self-hosted.
Se nenhuma das três opções for adequada, o problema geralmente está no tipo de conteúdo. Faturas e contratos digitalizados devem ficar em um sistema de gerenciamento de documentos, como o Paperless-ngx, e não em uma wiki. Forçar esse conteúdo em uma wiki é o motivo pelo qual tantas acabam abandonadas. A outra incompatibilidade comum é querer um workspace em vez de uma wiki, com documentos, tabelas e um quadro branco na mesma tela. Nesse caso, um workspace AFFiNE self-hosted é mais adequado do que qualquer uma das três opções acima. Para ter uma visão mais ampla do que também merece um lugar no seu próprio servidor, consulte a lista de opções self-hosted para 2026.
Dimensionamento e backups
As três aplicações cabem num VPS pequeno, mas o mínimo realista varia conforme os componentes de cada uma. O BookStack usa um processo de aplicação e MySQL. O Wiki.js usa um processo Node e PostgreSQL. O Outline usa um processo Node, PostgreSQL e Redis, normalmente com um fornecedor de identidade adicional. Por isso, é a opção à qual deve atribuir mais memória.
Faça backup da base de dados e dos uploads em conjunto. Antes de depender desse backup, restaure ambos uma vez numa instância descartável. Um backup de wiki que nunca foi restaurado é apenas uma suposição. No BookStack, isso significa mysqldump e o volume /config. No Wiki.js e no Outline, significa pg_dump e o volume de dados. No Outline, inclui também tudo o que estiver em FILE_STORAGE_LOCAL_ROOT_DIR.
FAQ
Qual wiki self-hosted é mais fácil de instalar?
BookStack. É uma aplicação PHP única com um banco de dados MySQL, e o projeto fornece um script de instalação para Ubuntu 24.04 que configura Apache, MySQL 8.0 e PHP 8.3 em uma única execução. A imagem de contêiner precisa de um APP_KEY, de um APP_URL e das credenciais de um banco de dados existente. Wiki.js adiciona um runtime Node e um servidor PostgreSQL, enquanto o Outline adiciona Redis e um provedor de identidade externo à configuração inicial documentada.
Posso usar o Outline sem o Google ou outro provedor SSO?
A configuração de produção documentada exige um provedor para criar o workspace inicial. O Outline não tem login local com nome de usuário e senha. A configuração de exemplo informa que é necessário pelo menos um provedor de login de terceiros; caso contrário, você não terá nenhuma opção de login. Você pode usar Google, Slack, Microsoft Entra, Discord ou qualquer servidor OpenID Connect genérico, como Keycloak ou Authentik self-hosted. Os workspaces existentes podem habilitar passkeys ou links e códigos enviados por email, mas o login por email exige SMTP; as contas vinculadas ao SSO continuam usando esse provedor.
Devo instalar o Wiki.js 3 ou o Wiki.js 2?
A versão 2. Em 27 de outubro de 2026, a versão 2 mais recente é a 2.5.317, de 23 de outubro de 2026, e a versão 3 ainda está em beta, com imagens que usam uma tag 3.0.0-beta. Fixe a imagem em ghcr.io/requarks/wiki:2 em vez de latest, porque uma mudança de versão principal altera o schema do banco de dados em uma instância em execução.
Qual deles tem a melhor pesquisa?
Eles são fortes em aspectos diferentes. O BookStack oferece aos leitores uma linguagem de consulta com frases exatas, filtros de tags como [location=london] e filtros de metadados como {created_after:2016-12-30}, e qualquer um desses termos pode ser negado com um - no início. A pesquisa integrada por palavras-chave do Outline não precisa de um serviço de pesquisa separado. O Wiki.js é o mais configurável, porque você escolhe o mecanismo, e o mecanismo PostgreSQL pesquisa o conteúdo das páginas, algo que o mecanismo básico não faz.
Posso mover meu conteúdo de um para outro mais tarde?
Parcialmente, e você deve esperar algum trabalho manual. Os três exportam Markdown, mas a importação integrada do BookStack aceita seu formato Portable ZIP; portanto, somente Markdown não é uma rota de importação direta para o BookStack. A estrutura não é preservada corretamente: os livros e capítulos do BookStack não têm equivalente nos documentos aninhados do Outline, e os caminhos do Wiki.js não correspondem à hierarquia fixa do BookStack. Anexos, permissões e histórico das páginas são os elementos com maior probabilidade de serem perdidos. Por isso, exporte uma amostra e verifique esses itens antes de iniciar a migração.