====== Paperless NGX ======
[[https://paperless-ngx.com|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:
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.
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;
}
See [[selfhost:nginx|The Reverse Proxy concept]]
===== Autostart =====
To start it, and set it up on boot, as usual follow my indications [[gentoo:containers|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:
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