This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== 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: <code bash> useradd -d /data/daemons/paperless -m paperless mkdir /data/paperless chown paperless:paperless /data/paperless </code> and, as user **paperless**, create the **/data/daemons/paperless/docker-compose.yml** file: <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: {} </file> Adapt the paths and the port to your needs (2276). Now pull it: <code bash> su - stirlingpdf podman compose pull </code> ===== Reverse Proxy ===== The following NGINX configuration file is the base paperless-ngx. Consider that it must be hosted on a subdomain. <file - 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; } </file> 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: <code> ln -s /etc/init.d/user-containers /etc/init.d/user-containers.paperless </code> and create the following config file: <file - /etc/conf.d/user-containers.paperless> USER=paperless DESCRIPTION="The document manager" </file> Add the service to the default runlevel and start it now: <code bash> rc-update add user-containers.paperless default rc-service user-containers.paperless start </code>