Proxmox VE
Three install paths on Proxmox (community-scripts LXC, Docker inside an LXC, or Docker inside a VM). Pick based on how you already run services.
There are three sensible ways to run Wealthfolio on Proxmox. Pick based on how you already run other services.
| Approach | Pros | Cons |
|---|---|---|
| LXC via community-scripts | Native execution, lowest overhead, fits the Proxmox idiom (no Docker-in-LXC) | Builds from source (~15–25 min on a typical homelab CPU on first install, #563) |
| Docker inside an LXC | Fast install (image pull only), easy updates | Docker-in-LXC needs nesting + a couple of LXC tweaks |
| Docker inside a VM | Most isolated, no LXC quirks | Higher RAM/CPU overhead than LXC |
If you’re already a community-scripts user, stick with the LXC path. If you already run a Docker host VM on Proxmox, just deploy the container there like any other service. See Docker Compose.
1. LXC via community-scripts (recommended)
The community-scripts project maintains an installer that creates a Debian 13 LXC, installs all dependencies, builds Wealthfolio from source, and registers a systemd service.
Install
Open a shell on the Proxmox host (not inside an existing container) and run:
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/wealthfolio.sh)"The script prompts for resources. The defaults are sensible:
| Resource | Default | Notes |
|---|---|---|
| OS | Debian 13 | |
| CPU | 4 cores | Used heavily during the initial Rust build, can be lowered after. |
| RAM | 4096 MB | Same: the build is the peak; ~256 MB at runtime. |
| Disk | 10 GB | |
| Privileged | No | Unprivileged container |
| Port | 8080 | Note: the official Docker image uses 8088, this script uses 8080. |
When the script finishes:
- WebUI:
http://<lxc-ip>:8080 - Login credentials:
/root/wealthfolio.credsinside the container (pct enter <vmid>thencat ~/wealthfolio.creds) WF_SECRET_KEYis generated for you and persisted in/etc/systemd/system/wealthfolio.service. Back this file up along with/opt/wealthfolio_data/.
Layout inside the LXC
| Path | Purpose |
|---|---|
/opt/wealthfolio | Source + built static assets (dist/) |
/opt/wealthfolio_data/wealthfolio.db | SQLite database |
/usr/local/bin/wealthfolio-server | Compiled server binary |
/etc/systemd/system/wealthfolio.service | Systemd unit (holds env vars including the key) |
Updating
Re-run the installer one-liner. The script’s update path pulls the
latest release tag, rebuilds, and restarts the service.
Heads-up: long builds. Wealthfolio doesn’t yet ship prebuilt Linux binaries, so each install/update compiles the Rust server from scratch (~15–25 min depending on CPU). Tracked in #563. The Docker paths below avoid this entirely.
2. Docker inside an LXC
If you already run a Docker-host LXC for other services, just add Wealthfolio to it. Otherwise, create a small unprivileged Debian/Ubuntu LXC first.
LXC requirements for Docker
In the LXC’s config (/etc/pve/lxc/<vmid>.conf on the Proxmox host):
features: nesting=1,keyctl=1Unprivileged containers running storage-driver overlay2 may also
need:
lxc.apparmor.profile: unconfined
lxc.cap.drop:(Drop these only if you understand the security tradeoff. Privileged LXCs sidestep most of this but lose isolation.)
Install Wealthfolio
Inside the LXC, install Docker + Compose, then follow the Docker Compose guide. Quick version:
mkdir -p /opt/wealthfolio && cd /opt/wealthfolio
# Generate secrets
WF_SECRET_KEY=$(openssl rand -base64 32)
apt install -y argon2
WF_AUTH_PASSWORD_HASH=$(printf 'changeme' | argon2 yoursalt16chars! -id -e)
cat > .env <<EOF
WF_SECRET_KEY='${WF_SECRET_KEY}'
WF_AUTH_PASSWORD_HASH='${WF_AUTH_PASSWORD_HASH}'
WF_CORS_ALLOW_ORIGINS=http://$(hostname -I | awk '{print $1}'):8088
EOF
chmod 600 .env
curl -fsSL https://raw.githubusercontent.com/afadil/wealthfolio/main/compose.yml -o compose.yml
docker compose --env-file .env up -dWebUI: http://<lxc-ip>:8088. Data lives in the wealthfolio-data
Docker volume.
3. Docker inside a VM
Same flow as a normal Docker host. Nothing Proxmox-specific. Spin up a Debian/Ubuntu VM, install Docker, and follow Docker or Docker Compose.
This is the right choice if you don’t want to fiddle with LXC nesting or if you’re already running a “docker VM” pattern.
Reverse proxy
For HTTPS and a real domain, see Reverse proxy setup.
Troubleshooting
| Symptom | Fix |
|---|---|
LXC install fails near cargo build with OOM | Bump RAM to 6–8 GB during the build, drop it back after. |
Docker container restarts: WF_SECRET_KEY missing | The variable wasn’t picked up. Check .env has single-quoted values. |
| Login screen rejects the right password | Hash captured a trailing newline (use printf, not echo) or $ chars got eaten. |
| LXC runs but isn’t reachable on the LAN | Check the LXC’s network bridge and firewall; the service binds 0.0.0.0. |
Reference
- LXC installer source: community-scripts/ProxmoxVE → ct/wealthfolio.sh
- Build/install steps: community-scripts/ProxmoxVE → install/wealthfolio-install.sh
- Prebuilt-binary tracking issue: #563