Proxmox VE
Deploy the Portabase Dashboard in a Proxmox VE LXC container with the community-scripts helper script.
Proxmox VE is an open-source virtualisation platform. The community-scripts project maintains a helper script that creates a Debian 13 LXC container and installs the Portabase Dashboard in it - PostgreSQL, tusd, nginx and the systemd services included.
Useful links: Portabase helper script · community-scripts website · Proxmox VE documentation
Unofficial and untested. This script is maintained by the community-scripts project, not by the Portabase team, and it is currently in their development repository - marked as in active development, may be unstable, incomplete, or subject to breaking changes, and not recommended for production use. It is also the only installation method we have not tested ourselves. For a supported deployment, use the CLI or Docker instead.
What the script installs
| Item | Value |
|---|---|
| Container type | Unprivileged LXC |
| OS | Debian 13 |
| Default resources | 4 vCPU · 8192 MB RAM · 15 GB disk |
| Port | 3000 (nginx in front of the app on 127.0.0.1:8887) |
| Database | PostgreSQL 17, installed inside the container |
| Uploads | tusd, as the portabase-tusd service |
| Config file | /opt/portabase/.env |
| Services | portabase, portabase-tusd |
Installation
Run the script from the Proxmox VE shell
Open the Shell of your Proxmox VE node and run:
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/ct/portabase.sh)"Always read the script before running it. The current, authoritative command is shown on the script page - check it there if the URL above has moved.
Accept the defaults, or pick Advanced to change the CPU, RAM, disk and network settings.
Open the Dashboard
When the script finishes it prints the URL, http://<container-ip>:3000.
Sign in with the default account it created:
| User | Password |
|---|---|
admin@example.com | Portabase123! |
Change this password immediately after the first login, and set
AUTH_SIGNUP_ENABLED=false in /opt/portabase/.env once your account exists.
Review the configuration
The script generates PROJECT_SECRET for you and writes it to /opt/portabase/.env,
alongside DATABASE_URL, PROJECT_URL and TRUSTED_DOMAINS - both set to
http://<container-ip>:3000.
PROJECT_SECRET encrypts everything the agents exchange with the Dashboard, and
the credentials stored in it. Back up /opt/portabase/.env, and never change the
secret once agents are connected - previously encrypted data would no longer be
readable.
SMTP, storage backends and auth providers go in the same file - see environment variables. Apply changes with:
systemctl restart portabaseIf you put the Dashboard behind a domain with HTTPS - see the
reverse proxy guide - update
PROJECT_URL and TRUSTED_DOMAINS to that public URL.
Updating
Re-run the same command and choose Update. The script stops the services, backs up
/opt/portabase/.env, deploys the new release, rebuilds the app and restores your
configuration.
Backing up databases hosted on Proxmox VE
Databases usually run in other LXC containers or VMs on the same node. Install one Agent per container or VM, then declare each database in the Dashboard using the container or VM IP and the database port. Make sure the Proxmox firewall allows the Agent to reach it.
Per-engine settings - required grants, dump options, restore behaviour - are documented in the databases section.
Troubleshooting
- The Dashboard does not answer on port 3000. Check both services:
systemctl status portabase portabase-tusd, and the logs withjournalctl -u portabase -f. - The agent shows as offline.
PROJECT_URLmust be the URL the agent can actually reach. Update it in/opt/portabase/.envand restart. See the agent configuration. - Uploads or restores fail. The
portabase-tusdservice is down, orTUSD_BEHIND_PROXYwas changed. Restart it withsystemctl restart portabase-tusd. - The script itself fails. It is a community-scripts issue, not a Portabase one - report it on their GitHub with the advanced verbose-mode logs.
More answers in the FAQ.
Related pages
Last updated on