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

Здравей! Сега ще ви споделя как настроих Paperless‑ngx в къщи под Docker, какво ми хареса и как да го пуснеш бързо, стабилно и сигурно. По‑долу има готов docker-compose.yml, базова конфигурация, идеи за интеграции и малко трикове от реална употреба.
Какво представлява 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), както е в примера по‑горе.Първоначална конфигурация
- Отвори http://<IP>:8778.
- Създай админ потребител:
docker exec -it $(docker ps --format '{{.Names}}' | grep paperless-webserver) \ python3 manage.py createsuperuser - Настрой тагове, кореспонденти и правила в уеб интерфейса.
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 файл и насоките са напълно достатъчни, за да го вдигнеш за минути и да го интегрираш в домашната инфраструктура.

