Full Setup Instructions
Running the App
The image is published for amd64 and arm64, so the same instructions work on a Raspberry Pi 4 or 5 as on a regular server — Docker picks the right architecture automatically.
Create a docker-compose.yml file:
yml
services:
app:
image: 'ghcr.io/bonderaustria/nexproxy:latest'
restart: unless-stopped
ports:
# These ports are in format <host-port>:<container-port>
- '80:80' # Public HTTP Port
- '443:443' # Public HTTPS Port
- '81:81' # Admin Web Port
# Add any other Stream port you want to expose
# - '21:21' # FTP
environment:
TZ: "Europe/Vienna"
# Uncomment this if you want to change the location of
# the SQLite DB file within the container
# DB_SQLITE_FILE: "/data/database.sqlite"
# Uncomment this if IPv6 is not enabled on your host
# DISABLE_IPV6: 'true'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencryptThen:
bash
docker compose up -dUsing PostgreSQL
Instead of the built-in SQLite database you can run NexProxy against PostgreSQL — recommended for multiple nodes, and required for high availability:
yml
services:
app:
image: 'ghcr.io/bonderaustria/nexproxy:latest'
restart: unless-stopped
ports:
# These ports are in format <host-port>:<container-port>
- '80:80' # Public HTTP Port
- '443:443' # Public HTTPS Port
- '81:81' # Admin Web Port
# Add any other Stream port you want to expose
# - '21:21' # FTP
environment:
TZ: "Europe/Vienna"
# Postgres parameters:
DB_POSTGRES_HOST: 'db'
DB_POSTGRES_PORT: '5432'
DB_POSTGRES_USER: 'npm'
DB_POSTGRES_PASSWORD: 'npmpass'
DB_POSTGRES_NAME: 'npm'
# Uncomment this if IPv6 is not enabled on your host
# DISABLE_IPV6: 'true'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
depends_on:
- db
db:
image: postgres:17
environment:
POSTGRES_USER: 'npm'
POSTGRES_PASSWORD: 'npmpass'
POSTGRES_DB: 'npm'
volumes:
- ./postgres_data:/var/lib/postgresql/dataWARNING
Custom Postgres schema is not supported, as such public will be used.
Initial Run
After the app is running for the first time, the following will happen:
- JWT keys will be generated and saved in the data folder
- The database will initialize with table structures
- A default admin user will be created
This process can take a couple of minutes depending on your machine.