Paperless-ngx — архив PDF и сканов с OCR, тегами и полнотекстовым поиском. Удобно для договоров, чеков и «бумаги в шкафу», которая уже в PDF.
Нужны рабочий Traefik и сеть traefik_network.
mkdir -p ~/paperless/{data,media,export,consume}
cd ~/paperless
openssl rand -hex 32
Строку hex сохраните как PAPERLESS_SECRET_KEY.
docker-compose.ymlservices:
broker:
image: redis:7-alpine
container_name: paperless-redis
restart: unless-stopped
volumes:
- redis_data:/data
db:
image: postgres:16-alpine
container_name: paperless-db
restart: unless-stopped
environment:
POSTGRES_DB: paperless
POSTGRES_USER: paperless
POSTGRES_PASSWORD: CHANGE_ME_DB
volumes:
- pg_data:/var/lib/postgresql/data
webserver:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
container_name: paperless
restart: unless-stopped
depends_on:
- db
- broker
environment:
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBHOST: db
PAPERLESS_DBNAME: paperless
PAPERLESS_DBUSER: paperless
PAPERLESS_DBPASS: CHANGE_ME_DB
PAPERLESS_SECRET_KEY: CHANGE_ME_SECRET
PAPERLESS_URL: https://paperless.yourdomain
PAPERLESS_OCR_LANGUAGE: rus+eng
PAPERLESS_TIME_ZONE: Europe/Moscow
PAPERLESS_ADMIN_USER: admin
PAPERLESS_ADMIN_PASSWORD: CHANGE_ME_ADMIN
volumes:
- ./data:/usr/src/paperless/data
- ./media:/usr/src/paperless/media
- ./export:/usr/src/paperless/export
- ./consume:/usr/src/paperless/consume
labels:
- traefik.enable=true
- traefik.http.middlewares.paperless_https.redirectscheme.scheme=https
- traefik.http.routers.paperless.entrypoints=web
- traefik.http.routers.paperless.middlewares=paperless_https@docker
- traefik.http.routers.paperless.rule=Host(`paperless.yourdomain`)
- traefik.http.routers.paperless_https.entrypoints=websecure
- traefik.http.routers.paperless_https.rule=Host(`paperless.yourdomain`)
- traefik.http.routers.paperless_https.tls=true
- traefik.http.routers.paperless_https.tls.certresolver=le
- traefik.http.services.paperless.loadbalancer.server.port=8000
networks:
- traefik_network
- default
volumes:
redis_data:
pg_data:
networks:
traefik_network:
external: true
Замените пароли БД, admin и PAPERLESS_SECRET_KEY.
docker compose up -d
Откройте https://paperless.yourdomain. Файлы, положенные в ./consume, подхватятся автоматически.
Образ уже умеет Tesseract; PAPERLESS_OCR_LANGUAGE: rus+eng — рабочий старт. Если язык не подтянулся, проверьте логи:
docker logs paperless --tail 100
./media, ./data и volume pg_data — без этого архив не восстановить.consume можно смонтировать с NAS/сканера по SMB.Итог: поисковый архив документов с OCR за Traefik.