Papra
| Description / name | Input element |
|---|---|
| Container Registry | |
| Container Configuration Root Path | |
| Timezone | |
| User ID | |
| Group ID | |
| Papra /app_data Path |
Minimalist self-hosted document management platform (Paperless alternative) on FreeBSD.
| Registry | ghcr.io/daemonless/papra |
| Daemonless | daemonless/papra |
| Source | papra-hq/papra |
| Website | papra.app |
Version Tags
| Tag | Description | Best For |
|---|---|---|
latest |
Upstream Binary. Built from official release. | Most users. Matches Linux Docker behavior. |
Root Privileges Required
Podman on FreeBSD currently requires root. All commands must be run as root (or via doas/sudo).
Before deploying, ensure your host environment is ready. See the Quick Start Guide for host setup instructions.
Deployment
Interactive Configuration
Parameters
Environment Variables
| Variable | Default | Description |
|---|---|---|
PUID |
1000 |
User ID for the application process |
PGID |
1000 |
Group ID for the application process |
TZ |
Etc/UTC |
Timezone for the container |
NODE_ENV |
production |
Node runtime mode; leave as 'production' |
PORT |
1222 |
Internal node backend port (nginx proxies to it); leave as 1222 |
SERVER_HOSTNAME |
127.0.0.1 |
Internal bind address for the node backend; leave as 127.0.0.1 |
SERVER_SERVE_PUBLIC_DIR |
false |
Whether the node backend serves the SPA itself; 'false' (nginx serves it) |
DATABASE_URL |
file:/app_data/db/db.sqlite |
SQLite database URL (file:/app_data/db/db.sqlite) |
DOCUMENT_STORAGE_FILESYSTEM_ROOT |
/app_data/documents |
Filesystem path where uploaded documents are stored (under the /app_data volume) |
PAPRA_CONFIG_DIR |
/app_data |
Directory Papra reads its config from (under the /app_data volume) |
INGESTION_FOLDER_ROOT |
/ingestion |
Watched folder for drop-in document ingestion |
EMAILS_DRY_RUN |
true |
If 'true', emails are logged instead of sent (no SMTP configured by default) |
BETTER_AUTH_TELEMETRY |
0 |
better-auth telemetry; '0' disables it |
AUTH_SECRET |
${PAPRA_AUTH_SECRET} |
better-auth session signing secret, >=32 chars. Optional: if unset, the container generates a strong secret on first boot and persists it under /app_data. Set one you control with openssl rand -hex 48 to manage it yourself. |
AUTH_IS_REGISTRATION_ENABLED |
true |
Set to false after creating your account to lock down signups |
Volumes
| Path | Description |
|---|---|
/app_data |
Application data — SQLite database, stored documents, and config |
Implementation Details
- Architectures: amd64
- User:
bsd(UID/GID set via PUID/PGID). Defaults to1000:1000. - Base: Built on
ghcr.io/daemonless/base(FreeBSD 15.1).
Need help? Join our Discord community.