Self-host Papra
updated Sep 2026deployed by usprices checked · Jul 2026Install verified on Ubuntu 26.04 · Sep 2026 · how we test
We earn commissions when you shop through the links below. Full disclosure →
A minimalist document management and archiving platform: upload, tag and full-text search documents, share them within organizations, and import them automatically from email or a watched folder, with text extraction from images and scans. Runs as a single container with an embedded SQLite database.
Key facts
CategoryDocuments
LicenseAGPL-3.0
StackTypeScript, Node.js, SolidJS, SQLite
Min RAM512 MB
Official imageyes
Measured idle RAM430 MB
Difficulty
Websitepapra.app (opens in new tab)
What you need
- Any VPS with at least 512 MB of RAM
- A domain you control — most self-hosted setups need HTTPS in front of them
- Under an hour if you've used Docker before
Where to host itaffiliate disclosure
Hetzner Cloudrun it on
From $23.59/mo · 2 vCPU / 4 GB / 80 GB · EU + USKamaterafree trial
From $4/mo · 1 vCPU / 1 GB / 20 GB · US + EU + AsiaDigitalOceanalso works on
From $6/mo · 1 vCPU / 1 GB / 25 GB · US + EU + AsiaPaid link — we earn a commission if you shop through it.
Install
Run these commands on your server:
# Papra — upstream's docker run with persistent storage (rootless image)
mkdir -p papra/papra-data/{db,documents} && cd papra
# APP_BASE_URL uses the box's first IP (usually the private one on a cloud VM — use your public IP or domain)
docker run -d --name papra --restart unless-stopped \
--env APP_BASE_URL=http://$(hostname -I | cut -d' ' -f1):1221 \
--env AUTH_SECRET=$(openssl rand -hex 48) \
-p 1221:1221 -v $(pwd)/papra-data:/app/app-data --user $(id -u):$(id -g) \
ghcr.io/papra-hq/papra:latest
# → http://SERVER_IP:1221 — create the first accountMore self-hosted tools
Documents
Paperless-ngx
PythonDjango
moderateRead guide →
Database admin
CloudBeaver
JavaTypeScriptReact
easyRead guide →
Whiteboard
Excalidraw
TypeScriptReact
easyRead guide →
Developer tools
IT Tools
TypeScriptVue
easyRead guide →