---
title: "Docmost con Docker Compose y hosting en un clic"
description: "Docmost, wiki y documentación de código abierto: espacios, edición en tiempo real y diagramas. Autoaloja esta alternativa a Confluence y Notion en un clic."
---

[← Todas las plantillas](https://pethost.dev/es/templates/) · [Notas y wikis](https://pethost.dev/es/templates/notes/)

# Despliega Docmost en un clic

Wiki y documentación colaborativas, con espacios, edición en tiempo real y diagramas

Una alternativa autoalojada a Notion y Confluence.

[Desplegar en Pethost](https://console.pethost.dev/?template=docmost)

## ¿Qué es Docmost?

Docmost es software de código abierto para wikis y documentación. Las páginas viven en espacios, cada uno con sus propios miembros y permisos, y varias personas pueden editar la misma página a la vez. El editor admite comandos de barra, tablas, archivos adjuntos y contenido incrustado como Airtable, Loom y Miro, y dibuja diagramas con Draw.io, Excalidraw y Mermaid. Cada página conserva su historial, que se puede restaurar, la gente comenta lo que lee, la búsqueda abarca el texto completo y una página se puede compartir públicamente con un enlace.

Los equipos autoalojan Docmost como base de conocimiento o wiki interna en lugar de Confluence o Notion, con páginas importadas de Notion, Markdown o HTML. Esta plantilla ejecuta la edición Community gratuita con PostgreSQL y Redis, y crea el espacio de trabajo y su propietario con los datos de los campos antes de que Docmost responda a nadie. El inconveniente: el SSO, la autenticación de dos factores, la IA, las claves de API, los permisos por página y el importador de Confluence están en la edición Business, que es de pago.

## Hosting de Docmost en Pethost

1. Inicias sesión en Pethost con una passkey, GitHub o Google. ¿Aún no tienes máquina? Eliges un plan, y el enlace espera hasta que esté lista.
2. Nuevo proyecto se abre en Docmost. Rellenas lo que pide y haces clic en Crear proyecto: **Nombre de usuario**, **Correo electrónico**, **Contraseña de administrador**.
3. En un par de minutos Docmost está en marcha en su propia dirección con HTTPS. Sus secretos se generan al azar, y sus datos entran en el backup de cada noche.
4. Es un proyecto como cualquier otro: tú o tu agente lo pueden cambiar, volver a una versión anterior o restaurar.

## Preguntas sobre Docmost

**¿Docmost es gratis?**

Sí. La edición Community es de código abierto bajo la AGPL-3.0 y gratis de autoalojar, con colaboración en tiempo real, espacios y búsqueda de texto completo. La edición Business cuesta 6 USD por puesto al mes, con facturación anual de al menos 10 puestos, y agrega SSO, autenticación de dos factores, IA, claves de API y permisos por página.

**¿Docmost frente a Confluence o Notion?**

Docmost cubre lo mismo que una wiki: espacios, páginas en árbol, edición en tiempo real, comentarios e historial de las páginas. Confluence y Notion funcionan en la nube de sus creadores, mientras que Docmost funciona donde lo despliegues, y su edición Community es gratis para cualquier número de usuarios.

**¿Puedo importar mis páginas de Notion a Docmost?**

Sí. Docmost importa a un espacio una exportación de Notion, y también archivos Markdown y HTML. El importador de Confluence es parte de la edición Business, que es de pago.

**¿Varias personas pueden editar una página de Docmost a la vez?**

Sí. Su editor es colaborativo en tiempo real: cada persona en una página ve los cambios de las demás mientras escriben, y el historial de la página guarda cada versión.

**¿Cómo invito a personas a Docmost?**

Con “Invitar personas”, por correo y con un rol. Docmost no tiene registro público, así que cada persona entra con su invitación, que Docmost envía por correo en cuanto SMTP_HOST y los demás ajustes SMTP_ están en el .env del proyecto. Mientras tanto, “Copiar enlace” en una invitación pendiente de Configuración → Miembros te da el enlace para que lo envíes tú.

**¿Cuánta memoria y disco necesita Docmost?**

Docmost es ligero: unos 300 MB de memoria con Postgres y Redis, y las páginas crecen despacio; los adjuntos ocupan lo que ocupan sus archivos. En Pethost le basta el plan Starter, y queda sitio para otras apps a su lado.

## El archivo Docker Compose de Docmost

La plantilla es este compose.yaml y las variables que se escriben en el .env del proyecto al crearlo. Pethost ejecuta el archivo tal como está escrito.

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

**Volúmenes, en el backup de cada noche:** 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:
```

[compose.yaml](https://pethost.dev/templates/docmost/compose.yaml)[Verla en GitHub](https://github.com/pethost-dev/templates/tree/main/docmost)

## [Más en Notas y wikis](https://pethost.dev/es/templates/notes/)

- [**Memos**Notas breves en Markdown en una línea de tiempo privada](https://pethost.dev/es/templates/memos/)
- [**HedgeDoc**Notas en Markdown que escribes junto con otros en tiempo real](https://pethost.dev/es/templates/hedgedoc/)
- [**Obsidian LiveSync**Un servidor CouchDB que sincroniza tus bóvedas de Obsidian con Self-hosted LiveSync](https://pethost.dev/es/templates/obsidian-livesync/)
- [**BookStack**Una wiki organizada en estantes, libros, capítulos y páginas](https://pethost.dev/es/templates/bookstack/)
- [**Etherpad**Documentos editados en equipo en tiempo real: cada autor con su propio color, con chat, historial y plugins](https://pethost.dev/es/templates/etherpad/)
- [**MediaWiki**El software de wiki de Wikipedia: páginas que cualquiera puede leer, editadas con el editor visual o con el de código](https://pethost.dev/es/templates/mediawiki/)

Pethost · Stephan Gomer · NIP 1133096755

Pethost

- [Plantillas](https://pethost.dev/es/templates/)
- [Sobre nosotros](https://pethost.dev/about/)
- [Docs](https://pethost.dev/docs/)
- [Blog](https://pethost.dev/es/blog/)
- [API](https://pethost.dev/docs/api/)
- [CLI](https://pethost.dev/docs/cli/)
- [Plugin](https://github.com/pethost-dev/plugin)
- [Términos](https://pethost.dev/terms/)
- [Privacidad](https://pethost.dev/privacy/)
- [Reembolsos](https://pethost.dev/refunds/)
- [support@pethost.dev](mailto:support@pethost.dev)

Bases de datos

- [Postgres](https://pethost.dev/es/postgres/)

Comparativas

- [Coolify vs Dokploy vs CapRover vs Dokku](https://pethost.dev/es/blog/coolify-vs-dokploy-vs-caprover-vs-dokku/)
- [Coolify Cloud vs Dokploy Cloud](https://pethost.dev/es/blog/coolify-cloud-vs-dokploy-cloud/)
- [Precios de Railway vs Render vs Fly.io](https://pethost.dev/es/blog/railway-vs-render-vs-fly-io-pricing/)
- [Hosting gestionado para Docker Compose](https://pethost.dev/es/blog/managed-docker-compose-hosting/)

Alternativas

- [Alternativas a Railway](https://pethost.dev/es/blog/railway-alternatives/)
- [Alternativas a Heroku](https://pethost.dev/es/blog/heroku-alternatives/)
- [Alternativas a Dokploy](https://pethost.dev/es/blog/dokploy-alternatives/)
- [Alternativas a Coolify](https://pethost.dev/es/blog/coolify-alternatives/)
- [Alternativas a Render](https://pethost.dev/es/blog/render-alternatives/)
- [Alternativas a Sliplane](https://pethost.dev/es/blog/sliplane-alternatives/)
