Português
Começar

← Todos os templates · Notas e wikis

Faça deploy de Docmost em um clique

Wiki e documentação colaborativas, com espaços, edição em tempo real e diagramas

Uma alternativa auto-hospedada para Notion e Confluence.

O que é Docmost?

O Docmost é um software de código aberto para wikis e documentação. As páginas ficam em espaços, cada um com os próprios membros e permissões, e várias pessoas podem editar a mesma página ao mesmo tempo. O editor aceita comandos slash, tabelas, anexos de arquivos e incorporações como Airtable, Loom e Miro, e desenha diagramas com Draw.io, Excalidraw e Mermaid. Cada página guarda o seu histórico, que pode ser restaurado, as pessoas comentam o que leem, a busca cobre o texto completo, e uma página pode ser compartilhada publicamente por link.

Equipes auto-hospedam o Docmost como base de conhecimento ou wiki interna no lugar do Confluence ou do Notion, com páginas importadas do Notion, de Markdown ou de HTML. Este template roda a edição Community, gratuita, com PostgreSQL e Redis, e cria o workspace e o proprietário dele a partir dos campos antes de o Docmost responder a qualquer pessoa. O porém: SSO, autenticação de dois fatores, IA, chaves de API, permissões por página e o importador do Confluence ficam na edição Business, paga.

Hospedagem de Docmost no Pethost

  1. Você entra no Pethost com uma passkey, GitHub ou Google. Ainda não tem máquina? Você escolhe um plano, e o link espera até ela ficar pronta.
  2. Novo projeto abre em Docmost. Você preenche o que ele pede e clica em Criar projeto: Usuário, E-mail, Senha do administrador.
  3. Em um ou dois minutos Docmost está no ar no próprio endereço com HTTPS. Os segredos são gerados ao acaso, e os dados vão para o backup noturno.
  4. É um projeto como qualquer outro: você ou seu agente podem alterá-lo, fazer rollback ou restaurá-lo.

Perguntas sobre Docmost

O Docmost é gratuito?

Sim. A edição Community é de código aberto sob a AGPL-3.0 e gratuita para auto-hospedar, com colaboração em tempo real, espaços e busca no texto completo. A edição Business custa US$ 6 por usuário por mês, com cobrança anual de pelo menos 10 usuários, e adiciona SSO, autenticação de dois fatores, IA, chaves de API e permissões por página.

Docmost, Confluence ou Notion?

Como wiki, o Docmost cobre o mesmo terreno: espaços, páginas em árvore, edição em tempo real, comentários e histórico da página. O Confluence e o Notion rodam na nuvem das empresas que os fazem, enquanto o Docmost roda onde você fizer o deploy dele, e a edição Community é gratuita para qualquer número de usuários.

Posso importar minhas páginas do Notion para o Docmost?

Sim. O Docmost importa para um espaço uma exportação do Notion e arquivos Markdown e HTML. O importador do Confluence faz parte da edição Business, paga.

Várias pessoas podem editar uma página do Docmost ao mesmo tempo?

Sim. O editor dele é colaborativo em tempo real: todos numa página veem as alterações dos outros enquanto eles digitam, e o histórico da página guarda cada versão.

Como convido pessoas para o Docmost?

Com “Convidar pessoas”, por e-mail e com uma função. O Docmost não tem cadastro público, então uma pessoa entra pelo convite dela, que ele envia por e-mail depois que o SMTP_HOST e as outras variáveis SMTP_ estiverem no .env do projeto. Até lá, “Copiar link” num convite pendente em Configurações → Membros dá o link para você mesmo enviar.

De quanta memória e disco Docmost precisa?

O Docmost é leve: cerca de 300 MB de memória com o Postgres e o Redis, e as páginas crescem devagar; os anexos ocupam o que os arquivos deles ocupam. No Pethost, o plano Starter basta, com espaço para outros apps ao lado.

Arquivo Docker Compose de Docmost

O template é este compose.yaml e as variáveis gravadas no .env do projeto quando ele é criado. O Pethost roda o arquivo exatamente como está escrito.

Containers: docmost (docmost/docmost:0.97), postgres (postgres:18-alpine), redis (redis:8-alpine).

Volumes, no backup noturno: data, db, redis.

services:
  docmost:
    image: docmost/docmost:0.97
    restart: unless-stopped
    # Docmost does not stop on SIGTERM as the first process: an init passes it on.
    init: true
    # Any setting of Docmost can be added to the project's .env, such as SMTP_HOST and the other
    # SMTP_ settings, which send its invitations and password resets by email.
    env_file: .env
    environment:
      APP_URL: ${URL}
      APP_SECRET: ${APP_SECRET}
      DATABASE_URL: postgresql://docmost:${POSTGRES_PASSWORD}@postgres:5432/docmost
      REDIS_URL: redis://redis:6379
      ADMIN_NAME: ${ADMIN_NAME}
      ADMIN_EMAIL: ${ADMIN_EMAIL}
      ADMIN_PASSWORD: ${ADMIN_PASSWORD}
    # A new Docmost offers its setup, which makes the workspace and its owner, to whoever opens it
    # first. So while it has no workspace, it runs on port 3001, which nobody reaches, and the
    # owner is made there from the fields; only then does Docmost answer on 3000.
    command:
      - sh
      - -c
      - |
        set -e
        cd /app/apps/server
        if ! node -e '
          const sql = require("postgres")(process.env.DATABASE_URL, { max: 1 });
          (async () => {
            for (let i = 0; i < 60; i++) {
              try {
                const [row] = await sql`select count(*)::int as n from workspaces`;
                process.exit(row.n > 0 ? 0 : 1);
              } catch (error) {
                // No such table: a new database, which the migrations of Docmost have yet to fill.
                if (error.code === "42P01") process.exit(1);
                await new Promise((done) => setTimeout(done, 1000));
              }
            }
            process.exit(1);
          })();
        '; then
          NODE_ENV=production PORT=3001 node dist/main &
          setup=$$!
          node -e '
            const setUp = async () => {
              const response = await fetch("http://127.0.0.1:3001/api/auth/setup", {
                method: "POST",
                headers: { "content-type": "application/json" },
                body: JSON.stringify({
                  workspaceName: "Docmost",
                  name: process.env.ADMIN_NAME,
                  email: process.env.ADMIN_EMAIL,
                  password: process.env.ADMIN_PASSWORD
                })
              });
              // 403: a workspace exists already, made by an earlier start.
              if (response.ok || response.status === 403) return;
              const body = await response.text();
              if (response.status === 400) {
                console.error("Docmost refused the administrator: " + body);
                process.exit(1);
              }
              throw new Error("setup: " + response.status + " " + body);
            };
            (async () => {
              let failure;
              for (let i = 0; i < 180; i++) {
                try {
                  return await setUp();
                } catch (error) {
                  failure = error;
                  await new Promise((done) => setTimeout(done, 1000));
                }
              }
              console.error(failure);
              process.exit(1);
            })();
          '
          kill $$setup
          wait $$setup || true
        fi
        NODE_ENV=production exec node dist/main
    volumes:
      - data:/app/data/storage
    depends_on:
      postgres:
        condition: service_healthy
      redis:
        condition: service_healthy

  postgres:
    image: postgres:18-alpine
    restart: unless-stopped
    environment:
      POSTGRES_DB: docmost
      POSTGRES_USER: docmost
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    volumes:
      - db:/var/lib/postgresql
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -h 127.0.0.1 -U docmost -d docmost"]
      interval: 5s
      timeout: 5s
      retries: 10
      start_period: 30s

  redis:
    image: redis:8-alpine
    restart: unless-stopped
    command: ["redis-server", "--appendonly", "yes", "--maxmemory-policy", "noeviction"]
    volumes:
      - redis:/data
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 5s
      timeout: 5s
      retries: 10

volumes:
  data:
  db:
  redis:

Mais em Notas e wikis