BookStack, Wiki.js ou Outline: qual wiki self-hosted usar?
Compare BookStack, Wiki.js e Outline por setup, editores, login e busca. Veja a escolha mais simples para admins solo e a melhor para equipes.
Qual wiki self-hosted deve executar
Um wiki self-hosted coloca os documentos da sua equipa num único local pesquisável, num servidor que controla. BookStack, Wiki.js e Outline cumprem essa função. A maior diferença está na quantidade de componentes que tem de configurar antes de a primeira página carregar e em quem tem autorização para iniciar sessão.
O BookStack é o mais simples de colocar em funcionamento e o que impõe uma estrutura mais definida. O Wiki.js oferece a maior variedade de editores dentro de uma única árvore de páginas. O Outline proporciona a melhor experiência de escrita dos três e não permite que ninguém inicie sessão até ligar um fornecedor de identidade externo.
Tudo o que se segue foi obtido na documentação dos próprios projetos e nos respetivos ficheiros de configuração publicados. Esta é uma comparação de funcionalidades, não um benchmark. Os números de versão e os requisitos incluem uma data, porque os três projetos continuam a evoluir.
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 mais simples
BookStack é uma aplicação PHP com suporte de MySQL. Em julho de 2026, os requisitos documentados são PHP 8.2 ou posterior e MySQL 8.0 ou MariaDB 10.6 ou posterior, além de Composer 2.2 ou posterior se instalar a partir do código-fonte. A linha de versões atual é 26.05.
O projeto publica um script de instalação para cada versão do Ubuntu. O script para 24.04 instala Apache, MySQL 8.0 e PHP 8.3 automaticamente.
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 incluído nesse script antes de o executar. A documentação informa 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". Num servidor que já responde na porta 80, o script ocupa essa porta e reescreve a configuração do Apache. Nesse caso, use contentores ou instale o BookStack manualmente sobre uma stack LAMP existente no Ubuntu 24.04.
A opção com contentores usa a imagem LinuxServer.io, que é a opção indicada pela documentação do BookStack. O BookStack precisa de uma chave de encriptação de sessão e não serve páginas sem ela. Gere-a primeiro.
docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkeyCopie o valor apresentado para APP_KEY e depois escreva o serviço:
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 tem de corresponder ao endereço que os leitores introduzem, incluindo o esquema e qualquer porta. Defina-o como http://localhost e sirva o site por HTTPS. Caso contrário, os links gerados e os redirecionamentos apontam para o host errado, e os leitores veem uma página de início de sessão que volta a redirecionar para si própria. Se os ficheiros compose forem novidade para si, comece por Conceitos básicos do Docker Compose num VPS antes deste tutorial.
Inicie-o e confirme que a aplicação responde, não apenas que o contentor 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 arrancou e conseguiu aceder à base de dados. Um 500 quase sempre significa que APP_KEY está vazio ou que as credenciais da base de dados não correspondem. docker compose logs bookstack indica qual dos dois problemas ocorreu.
Wiki.js: uma árvore, vários editores
O Wiki.js é uma aplicação Node.js. A configuração Docker documentada utiliza PostgreSQL, embora o software também aceite MySQL, MariaDB, MSSQL e SQLite. Este é o ficheiro 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 em conjunto antes de o executar, porque 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 desaconselha latest, porque uma mudança de versão principal altera o esquema da base de dados numa instância em execução.
A versão 2 é a linha a utilizar. Em julho de 2026, a versão 2 mais recente é a 2.5.314, de maio de 2026. A versão 3 existe, e a documentação própria afirma: "Este site destina-se à versão beta instável do Wiki.js 3.0. NÃO deve instalar esta versão em produção." Trate a tag :3 como uma pré-visualização.
No primeiro acesso, o Wiki.js orienta-o numa configuração no navegador que cria a conta de administrador. Até concluir esse processo, qualquer pessoa que alcance a porta verá esse assistente. Por isso, coloque o serviço atrás do seu reverse proxy e de TLS (transport layer security) antes de abrir a firewall. Um wiki com o seu próprio hostname fica naturalmente atrás de Traefik à frente de várias aplicações Docker quando o servidor aloja mais do que este serviço.
A escolha do editor é o motivo pelo qual muitas pessoas escolhem o Wiki.js. Uma instância pode conter páginas Markdown, páginas do editor visual, páginas HTML simples e páginas AsciiDoc lado a lado. Isto ajuda quando está a importar conteúdo antigo num formato que prefere não converter. Também pode resultar em quatro estilos editoriais diferentes no mesmo wiki. Por isso, defina o editor predefinido no primeiro dia e registe essa decisão.
Esboço: o melhor editor, os pré-requisitos mais pesados
Outline é normalmente o que as pessoas querem dizer quando procuram uma ferramenta de notas com uma experiência semelhante à de um produto comercial. É uma aplicação Node.js, e a versão atual em julho de 2026 é 1.9.2. O ficheiro de ambiente de exemplo lista os requisitos: PostgreSQL através de DATABASE_URL, Redis através de REDIS_URL, dois segredos aleatórios e um URL acessível publicamente.
openssl rand -hex 32
openssl rand -hex 32Execute o comando duas vezes e guarde os dois valores. O primeiro torna-se SECRET_KEY e o segundo UTILS_SECRET. A parte principal do ficheiro 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 a base de dados está na mesma máquina ou na mesma rede Docker. Omita-o quando a base de dados for acedida através da rede; caso contrário, a ligação seguirá sem encriptação. Os anexos já não obrigam a usar armazenamento de objetos: FILE_STORAGE=local grava os uploads no diretório acima. Esse diretório tem de ser um volume onde o contentor possa escrever e que esteja incluído nas cópias de segurança. Defina FILE_STORAGE=s3 com os valores AWS_* se quiser guardar esses ficheiros num bucket compatível com S3.
Agora vem a parte que surpreende muitas pessoas. O Outline não tem autenticação integrada com nome de utilizador e palavra-passe. A configuração de exemplo indica que são necessárias credenciais de início de sessão de terceiros: "at least ONE OF these is required for a working installation or you'll have no sign-in options". Os fornecedores documentados incluem Google, Slack, Microsoft Entra, Discord e qualquer servidor genérico OpenID Connect (OIDC), através de OIDC_CLIENT_ID, OIDC_CLIENT_SECRET, OIDC_AUTH_URI, OIDC_TOKEN_URI e OIDC_USERINFO_URI.
Por isso, o custo real do Outline é Outline mais PostgreSQL, Redis e um fornecedor de identidade. Se a sua equipa já inicia sessão com Google Workspace ou Microsoft Entra, essa última parte demora dez minutos e o Outline torna-se uma opção muito interessante. Se não for esse o caso, também terá de alojar algo como Keycloak ou Authentik. Isso acrescenta um segundo serviço para atualizar e proteger com cópias de segurança. Dimensione a memória em conformidade: a recomendação do próprio Outline é de aproximadamente 512 MB por processo web, definido por WEB_CONCURRENCY, além da base de dados e do Redis.
Como cada um controla quem pode ler o quê
O BookStack inclui contas locais com email e palavra-passe e suporta LDAP, SAML2 e OIDC como alternativas. As permissões são definidas por função e podem ser substituídas numa shelf, num book, num chapter ou numa page específica. Como a hierarquia é fixa, as permissões são herdadas de forma previsível ao longo dela.
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 permitem conceder ou negar acesso com base num padrão de caminho. Isto é poderoso e fácil de configurar incorretamente, porque uma regra escrita para ops/* abrange silenciosamente todas as páginas que arquivar mais tarde nesse caminho.
O Outline delega completamente essa questão. A associação segue o seu fornecedor de identidade e, dentro do Outline, pode controlar o acesso por collection e por group. Quando alguém sai da empresa, não fica nenhuma conta local para remover. Esta é uma vantagem real quando o fornecedor de identidade já é o sistema usado para desprovisionar utilizadores.
Como funciona a pesquisa em cada sistema
A pesquisa é o que faz uma wiki justificar o seu uso ou transformar-se numa pasta de ficheiros esquecidos.
O BookStack pesquisa a base de dados e disponibiliza aos leitores uma linguagem de consulta que podem aprender num minuto. Colocar uma expressão entre aspas, como em "london meeting", exige essa sequência exata. Os parênteses retos pesquisam etiquetas: [location=london] encontra resultados pelo nome da etiqueta, pelo valor ou por ambos, com comparações como !=, >= e like. As chavetas filtram metadados, como em {created_after:2016-12-30}. Qualquer termo exato, de etiqueta ou de filtro pode ser excluído com o prefixo -. O BookStack limita o número de termos de cada tipo numa consulta, por isso uma consulta demasiado longa é truncada em vez de ser executada.
O Wiki.js trata a pesquisa como um módulo plugável. Os motores documentados são um motor básico de base de dados, um motor PostgreSQL, Elasticsearch, Algolia, AWS CloudSearch e Azure Search. O motor básico é suficiente para algumas centenas de páginas. Se usar PostgreSQL, mude para o motor PostgreSQL na área de administração, porque este usa o índice de texto completo da própria base de dados em vez de uma correspondência simples. Reserve o Elasticsearch para uma wiki com dimensão suficiente para justificar a execução e a atualização de um segundo serviço de pesquisa.
O Outline pesquisa índices de texto completo do PostgreSQL. Não há nenhum motor para escolher nem parâmetros para ajustar, e a pesquisa também abrange o texto dos documentos carregados. Para uma wiki de equipa com alguns milhares de documentos, é a opção que exige menos trabalho das três. Também não existe nenhum parâmetro para ajustar se a pesquisa deixar de ser suficientemente rápida.
O que é mais adequado para si
Escolha o BookStack se quiser ter a wiki a funcionar ainda hoje e preferir discutir o conteúdo em vez da estrutura. É a opção com menos componentes: uma aplicação PHP e uma base de dados MySQL. É adequada para procedimentos internos e documentação para clientes, bem como para equipas em que a maioria dos autores não são engenheiros. Também é a opção mais fácil de salvaguardar das três, porque todo o estado consiste numa exportação da base de dados e no diretório de uploads.
Escolha o Wiki.js se precisar de um editor específico ou de uma estratégia de autenticação específica que as outras opções não oferecem, ou se estiver a importar uma grande quantidade de Markdown ou AsciiDoc existente e quiser preservar a estrutura dos caminhos. Aceite que estará a executar uma stack mais pesada e fixe a major version tag.
Escolha o Outline se a qualidade da escrita for o mais importante, se a wiki se destinar a uma equipa e não ao público, e se já tiver um identity provider. Essa configuração é compensada por um editor que as pessoas gostam realmente de utilizar. Não o escolha como a sua primeira aplicação self-hosted.
Se nenhuma das três opções for adequada, a incompatibilidade costuma estar no tipo de conteúdo. Faturas e contratos digitalizados pertencem a um sistema de gestão documental como o Paperless-ngx, não a uma wiki. Forçá-los a entrar numa wiki é uma das razões pelas quais tantas wikis 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 uma visão mais abrangente de outras aplicações que podem justificar um lugar no seu próprio servidor, consulte a lista curta de self-hosting 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 é a wiki autoalojada mais fácil de instalar?
BookStack. É uma aplicação PHP única com uma base 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 numa única execução. A imagem de contentor precisa apenas de um APP_KEY e das credenciais da base de dados. Wiki.js acrescenta um runtime Node e um servidor PostgreSQL, enquanto Outline acrescenta Redis e um fornecedor de identidade externo.
Posso usar o Outline sem o Google ou outro fornecedor SSO?
Não. O Outline não tem autenticação local com nome de utilizador e palavra-passe. A configuração de exemplo indica claramente que é necessário pelo menos um fornecedor de autenticação externo; caso contrário, não haverá qualquer opção de início de sessão. Pode usar Google, Slack, Microsoft Entra, Discord ou qualquer servidor OpenID Connect genérico, como um Keycloak ou Authentik autoalojado. Executar esse fornecedor faz parte do custo de operar o Outline.
Devo instalar o Wiki.js 3 ou o Wiki.js 2?
A versão 2. Em julho de 2026, a versão 2 mais recente é a 2.5.314, lançada em maio de 2026, e a documentação da versão 3 indica claramente que é uma versão beta instável que não deve ser instalada em produção. Fixe a imagem em ghcr.io/requarks/wiki:2 em vez de latest, porque uma alteração da versão principal modifica o esquema da base de dados numa instância em execução.
Qual tem a melhor pesquisa?
São fortes em áreas diferentes. O BookStack oferece aos leitores uma linguagem de consulta com frases exatas, filtros de etiquetas como [location=london] e filtros de metadados como {created_after:2016-12-30}. Qualquer um desses termos pode ser negado com um - inicial. O Outline não precisa de configuração e pesquisa o texto dentro dos ficheiros carregados. O Wiki.js é o mais configurável, porque permite escolher o motor, e vale a pena mudar para o motor PostgreSQL assim que a sua wiki ultrapassar algumas centenas de páginas.
Posso mover o meu conteúdo de uma para outra mais tarde?
Parcialmente, mas deve contar com trabalho manual. As três aplicações exportam e importam Markdown, pelo que o texto das páginas normalmente é preservado. A estrutura não é preservada de forma consistente: 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. Os anexos, as permissões e o histórico das páginas são os elementos com maior probabilidade de se perderem. Por isso, exporte uma amostra e verifique esses elementos antes de iniciar uma migração.