Autoalojado
Auto-hospeda Pluma con Docker
Ejecuta Pluma en tu propia infraestructura. Un contenedor, un fichero compose, cinco minutos de servidor limpio a app funcionando.
Linux · 2 vCPU · 4 GBDocker + Compose v2Licencia (solo planes de pago)
Inicio rápido
Inicio rápido (5 minutos)
1
Elige un directorio
Elige un directorio
sudo mkdir -p /opt/pluma && sudo chown $USER:$USER /opt/pluma
cd /opt/pluma2
Crea el fichero compose
Crea el fichero compose
Guardar como docker-compose.yml.
services:
pluma:
image: mertdalbudak/pluma:latest
container_name: pluma
restart: unless-stopped
env_file: .env
ports:
- "4100:4100"
volumes:
- builder-data:/app/builder/data
# Lets the Pro+ Publish flow drive `docker buildx`. Remove this line
# if you won't publish workspace renderer images.
- /var/run/docker.sock:/var/run/docker.sock
healthcheck:
test: ["CMD", "wget", "-qO-", "http://localhost:4100/health"]
interval: 30s
timeout: 5s
retries: 5
volumes:
builder-data:
3
Crea el fichero env
Crea el fichero env
Guardar como .env. Solo importan cuatro valores — el resto se genera automáticamente en el primer arranque.
# Where Pluma is reachable. http://localhost:4100 for internal,
# https://pluma.your-company.com when fronted by TLS.
PUBLIC_URL=http://localhost:4100
# Free tier needs no key. For paid tiers, paste your license here.
LICENSE_KEY=
# ── Database ─────────────────────────────────────────────────────────
# Recommended: point at your own PostgreSQL — easier to back up, scale,
# and operate alongside your other infra. Uncomment and fill in:
# DATABASE_URL=postgresql://USER:PASS@host:5432/pluma
#
# Leave it unset and the container uses a bundled SQLite file under the
# builder-data volume — zero database to run, fine for a single team.
# ── Object storage (optional) ────────────────────────────────────────
# By default uploaded PDFs and images live in the builder-data volume.
# To put them in S3-compatible object storage instead (MinIO, Hetzner
# Object Storage, AWS S3, Cloudflare R2, Backblaze B2, …), set
# STORAGE_BACKEND=s3 and fill in the rest. Useful when you want to
# horizontally scale the builder, share storage across nodes, or
# offload the data volume from the application host.
#
# Database backups are configured from the in-app GUI, not from this
# file — leave the storage block here for application data only.
# STORAGE_BACKEND=s3
# S3_BUCKET=pluma
# S3_ENDPOINT=https://your-s3-endpoint
# S3_PUBLIC_ENDPOINT=https://your-s3-endpoint
# S3_REGION=eu-central-1
# S3_ACCESS_KEY=...
# S3_SECRET_KEY=...
PUBLIC_URLDónde vive la instalaciónLICENSE_KEYSolo planes de pago — déjalo vacío para Free4
Arranca la pila
Arranca la pila
docker compose up -d
docker compose logs -f pluma5
Verifica
Verifica
Si ambos endpoints responden, está activo.
curl http://127.0.0.1:4100/health
# → {"ok":true,"service":"builder"}Abre http://your-host:4100 y regístrate con el correo definido en
Actualizar
Actualizar
docker compose pull
docker compose up -dLas migraciones de la base de datos se ejecutan automáticamente al arrancar el builder, antes de que el servidor HTTP acepte tráfico. Sin paso manual.
¿Necesitas una licencia?
El plan Free funciona sin licencia. Los planes Advanced y Pro necesitan una clave de licencia — compra una en nuestro sitio alojado, pégala en tu .env como LICENSE_KEY y vuelve a desplegar.