Español
Empezar
← Todas las plantillas

Despliega Paperless-ngx en Pethost con un clic

Un archivo digital de documentos con OCR y búsqueda de texto completo

Qué pasa

  1. Inicias sesión en Pethost o creas una cuenta, con una passkey, GitHub o Google.
  2. ¿Aún no tienes máquina? Eliges un plan y te preparamos una. El enlace espera en tu navegador hasta que esté lista.
  3. Nuevo proyecto se abre en la app. Rellenas lo que pide y haces clic en Crear proyecto: Contraseña de administrador.
  4. En un par de minutos la app está en marcha en su propia dirección con HTTPS. Sus secretos se generan al azar para ella, y sus datos entran en el backup de cada noche.
  5. Es un proyecto como cualquier otro: su compose.yaml, su .env, sus logs y un terminal están en el panel, y tu agente puede cambiarlo, volver a una versión anterior o restaurarlo.

Primeros pasos

Inicia sesión como admin con la contraseña que indicaste. Los documentos se leen como si estuvieran en inglés hasta que cambies el idioma del OCR en Configuration.

Qué ejecuta

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

services:
  broker:
    image: valkey/valkey:9-alpine
    restart: unless-stopped
    volumes:
      - redisdata:/data
    healthcheck:
      test: ["CMD-SHELL", "valkey-cli ping | grep -q PONG"]
      interval: 5s
      timeout: 3s
      retries: 10

  db:
    image: postgres:18
    restart: unless-stopped
    environment:
      POSTGRES_DB: paperless
      POSTGRES_USER: paperless
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    volumes:
      - pgdata:/var/lib/postgresql
    healthcheck:
      # Over TCP: the server of the first start's initialisation listens on
      # the socket alone, and is not the one the app will reach.
      test: ["CMD-SHELL", "pg_isready -h 127.0.0.1 -U paperless -d paperless"]
      interval: 5s
      timeout: 3s
      retries: 20

  webserver:
    image: ghcr.io/paperless-ngx/paperless-ngx:3.3
    restart: unless-stopped
    depends_on:
      db:
        condition: service_healthy
      broker:
        condition: service_healthy
    environment:
      PAPERLESS_REDIS: redis://broker:6379
      PAPERLESS_DBENGINE: postgresql
      PAPERLESS_DBHOST: db
      PAPERLESS_DBPASS: ${POSTGRES_PASSWORD}
      PAPERLESS_URL: ${PAPERLESS_URL}
      PAPERLESS_SECRET_KEY: ${PAPERLESS_SECRET_KEY}
      # The first start makes this superuser, so no sign-up page is left open.
      PAPERLESS_ADMIN_USER: admin
      PAPERLESS_ADMIN_PASSWORD: ${ADMIN_PASSWORD}
      # TLS ends at the machine's proxy, which says so in X-Forwarded-Proto.
      PAPERLESS_PROXY_SSL_HEADER: '["HTTP_X_FORWARDED_PROTO", "https"]'
    volumes:
      - data:/usr/src/paperless/data
      - media:/usr/src/paperless/media
      - export:/usr/src/paperless/export
      - consume:/usr/src/paperless/consume
    healthcheck:
      # The image's own check, with time for the first start's migrations.
      test: ["CMD", "curl", "-fs", "-S", "-L", "--max-time", "2", "http://localhost:8000"]
      interval: 30s
      timeout: 10s
      retries: 5
      start_period: 180s

volumes:
  redisdata:
  pgdata:
  data:
  media:
  export:
  consume: