Paperless‑ngx с Docker Compose — моят практически урок

Paperless‑ngx с Docker Compose — моят практически урок

Здравей! Сега ще ви споделя как настроих Paperless‑ngx в къщи под Docker, какво ми хареса и как да го пуснеш бързо, стабилно и сигурно. По‑долу има готов docker-compose.yml, базова конфигурация, идеи за интеграции и малко трикове от реална употреба.

⚡ Накратко: Paperless‑ngx индексира PDF/изображения, прави OCR (вкл. кирилица), поддържа тагове/кореспонденти и има удобен уеб интерфейс.

Какво представлява Paperless‑ngx

  • Самостоятелно хостван архив за документи с мощно търсене и OCR.
  • Автоматично поглъщане на файлове от папка (consume) и e‑mail IMAP.
  • Тагове, кореспонденти, правила и бърз export/import.
  • Работи отлично в Docker и е удобен за Proxmox LXC/VM.

Предпоставки

  • Инсталиран Docker и Docker Compose.
  • Свободни портове (примерно 8778) и ~2 GB RAM минимум за комфортно OCR‑ване.
  • Директории на хоста за данни/медия/експорт/consume.

Готов docker-compose.yml

docker-compose.yml

version: "3.4"

version: "3.4"

services:
  broker:
    image: redis:7
    restart: unless-stopped

  db:
    image: postgres:15
    restart: unless-stopped
    environment:
      POSTGRES_DB: paperless
      POSTGRES_USER: paperless
      POSTGRES_PASSWORD: paperless
    volumes:
      - ./data/db:/var/lib/postgresql/data

  webserver:
    image: ghcr.io/paperless-ngx/paperless-ngx:latest
    depends_on:
      - db
      - broker
    ports:
      - "8778:8000"
    volumes:
      - ./data:/usr/src/paperless/data
      - ./media:/usr/src/paperless/media
      - ./export:/usr/src/paperless/export
      - ./consume:/usr/src/paperless/consume
    environment:
      PAPERLESS_REDIS: redis://broker:6379
      PAPERLESS_DBHOST: db
      PAPERLESS_DBNAME: paperless
      PAPERLESS_DBUSER: paperless
      PAPERLESS_DBPASS: paperless
      PAPERLESS_SECRET_KEY: "paste_a_long_random_secret_here"
    restart: unless-stopped

Създаване на директории и стартиране

mkdir -p data/db media export consume
# Генерирай силен секрет (копирай изхода и го постави в compose файла)
openssl rand -base64 45

# Стартирай
docker compose up -d

# Гледай логовете (първи старт прави миграции и може да отнеме малко)
docker logs -f $(docker ps --format '{{.Names}}' | grep paperless-webserver)
💡 Ако видиш грешка за липсващ manage.py, вероятно си mount-нал грешната директория и си прескочил системните файлове на контейнера. Ползвай само предвидените поддиректории (data, media, export, consume), както е в примера по‑горе.

Първоначална конфигурация

  1. Отвори http://<IP>:8778.
  2. Създай админ потребител:
    docker exec -it $(docker ps --format '{{.Names}}' | grep paperless-webserver) \
      python3 manage.py createsuperuser
  3. Настрой тагове, кореспонденти и правила в уеб интерфейса.

OCR на български и качество

Paperless използва Tesseract. За по‑добри резултати с кирилица:

  • Добави PAPERLESS_OCR_LANGUAGE: "bul+eng" в environment.
  • Ползвай по‑висока резолюция при сканиране (300 DPI+).
  • За снимани документи — опитай да изправиш перспективата преди качване.

Интеграции

Nginx Proxy Manager + SSL

Създай Proxy Host към http://paperless-webserver:8000 или http://<HOST>:8778 и активирай Let's Encrypt. Така ще имаш https://paperless.home.

IMAP e‑mail import

Paperless може да чете входящи имейли и да поглъща прикачени файлове. Настрой с env променливи като PAPERLESS_CONSUMER_EMAIL_* (host, user, pass, mailboxes).

Backup стратегия

  • Снапшоти в Proxmox преди ъпдейти.
  • Периодичен rsync на ./data, ./media, ./export и ./data/db към NAS/облак.
  • Експорт от UI за бърз off‑site архив.

Troubleshooting (често срещани)

СимптомКакво проверявам
Web контейнерът се рестартира цикличноГрешни volume‑и (не override‑вай /usr/src/paperless), Postgres креденшъли, липсва PAPERLESS_SECRET_KEY.
HTTP 502 зад NPMПровери, че service слуша на 8000 и правилно проксираш. Деактивирай caching в NPM за тест.
OCR слабДобави bul+eng, сканирай на 300–400 DPI, провери качеството на източника.

Сигурност

  • Силен PAPERLESS_SECRET_KEY и дълги пароли.
  • HTTPS навсякъде, по възможност достъп само през VPN (WireGuard/Tailscale).
  • Ограничени потребители/ролите в админ панела.

Заключение

Paperless‑ngx бързо се превърна в личния ми централен архив за документи — лек, бърз и удобен. Горният compose файл и насоките са напълно достатъчни, за да го вдигнеш за минути и да го интегрираш в домашната инфраструктура.

Федя Серафиев

Федя Серафиев

Федя Серафиев e собственик на уебсайта urocibg.eu. Той намира удовлетворение в това да помага на хората да решават и най-сложните технически проблеми. Сегашната му цел е да пише лесни за следване статии, така че подобни проблеми изобщо да не възникват.

Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу: