Aller au contenu
Auto-hébergement

Auto-hébergez Pluma avec Docker

Faites tourner Pluma sur votre propre infrastructure. Un conteneur, un fichier compose, cinq minutes d'un serveur vierge à l'application en marche.

Linux · 2 vCPU · 4 GoDocker + Compose v2Licence (offres payantes seulement)
Démarrage rapide

Démarrage rapide (5 minutes)

1

Choisissez un répertoire

sudo mkdir -p /opt/pluma && sudo chown $USER:$USER /opt/pluma
cd /opt/pluma
2

Créez le fichier compose

Enregistrer sous 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

Créez le fichier env

Enregistrer sous .env. Seulement quatre valeurs comptent — le reste est généré automatiquement au premier démarrage.

# 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_URLOù l’installation est hébergée
LICENSE_KEYOffres payantes seulement — laissez vide pour Free
4

Démarrez la stack

docker compose up -d
docker compose logs -f pluma
5

Vérifiez

Si les deux endpoints répondent, c’est en ligne.

curl http://127.0.0.1:4100/health
# → {"ok":true,"service":"builder"}

Ouvrez http://your-host:4100 et inscrivez-vous avec l’e-mail défini dans

Mise à jour

Mise à jour

docker compose pull
docker compose up -d

Les migrations de base de données s'exécutent automatiquement au démarrage du builder, avant que le serveur HTTP n'accepte le trafic. Aucune étape manuelle.

Besoin d'une licence ?

L'offre Free fonctionne sans licence. Les offres Advanced et Pro nécessitent une clé de licence — achetez-en une sur notre site hébergé, collez-la dans votre .env comme LICENSE_KEY et redéployez.