Paperless NGX
Paperless NGX is document management platform. Paperless-ngx is a community-supported open-source document management system that transforms your physical documents into a searchable online archive so you can keep, well, less paper.
Installation
Paperless-NGX can be installed on bare-metal, but i find the container approach recomended.
So first of all, as usual, create the dedicated user:
useradd -d /data/daemons/paperless -m paperless mkdir /data/paperless chown paperless:paperless /data/paperless
and, as user paperless, create the /data/daemons/paperless/docker-compose.yml file:
- docker-compose.yml
services: broker: image: docker.io/library/redis:8 restart: unless-stopped volumes: - /data/paperless/redisdata:/data network: - paperless-net db: image: docker.io/library/postgres:18 restart: unless-stopped volumes: - /data/paperless/pgdata:/var/lib/postgresql environment: POSTGRES_DB: paperless POSTGRES_USER: paperless POSTGRES_PASSWORD: paperless network: - paperless-net webserver: image: ghcr.io/paperless-ngx/paperless-ngx:latest restart: unless-stopped depends_on: - db - broker ports: - "2276:8000" volumes: - /data/paperless/data:/usr/src/paperless/data - /data/paperless/media:/usr/src/paperless/media - /data/paperless/export:/usr/src/paperless/export - /data/paperless/consume:/usr/src/paperless/consume environment: PAPERLESS_URL: https://docs.mydomain.com PAPERLESS_SECRET_KEY: very_long_random_key_sequence PAPERLESS_TIME_ZONE: Europe/Bruxelles PAPERLESS_OCR_LANGUAGE: eng environment: PAPERLESS_REDIS: redis://broker:6379 PAPERLESS_DBHOST: db network: - paperless-net networks: paperless-net: {}
Adapt the paths and the port to your needs (2276).
Now pull it:
su - stirlingpdf
podman compose pull
Reverse Proxy
The following NGINX configuration file is the base paperless-ngx. Consider that it must be hosted on a subdomain.
- paperless.conf
map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { server_name docs.mydomain.com; listen 443 ssl; listen 8443 ssl; http2 on; access_log /var/log/nginx/docs.mydomain.com_access_log main; error_log /var/log/nginx/docs.mydomain.com_error_log info; proxy_buffering off; location / { proxy_pass http://127.0.0.1:2276/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_redirect off; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $server_name; proxy_set_header X-Forwarded-Proto $scheme; add_header Referrer-Policy "strict-origin-when-cross-origin"; } include com.mydomain/certbot.conf; }
Autostart
To start it, and set it up on boot, as usual follow my indications Using Containers on Gentoo, so link the user-containers init script:
ln -s /etc/init.d/user-containers /etc/init.d/user-containers.paperless
and create the following config file:
- /etc/conf.d/user-containers.paperless
USER=paperless DESCRIPTION="The document manager"
Add the service to the default runlevel and start it now:
rc-update add user-containers.paperless default rc-service user-containers.paperless start