Install Noctcom

Free self-host · AGPL-3.0

Proxmox VE · LXC

Install Noctcom on Proxmox VE

Deploy your own instance as an **LXC** container on a Proxmox VE host. A single command creates the container, installs Docker and brings up the whole stack, isolated from the host.

Install · as root on the host
# Run it on the Proxmox node, not inside a VM/LXC
$ bash <(curl -fsSL https://raw.githubusercontent.com/RedderLabs/noctcom/main/proxmox/noctcom-lxc.sh)

It asks for your domain (leave it empty for IP-based LAN mode). When it finishes it shows the access URL and the container ID (CTID).

What the installer does

Creates an LXC

An unprivileged Debian container, with nesting and keyctl enabled so Docker runs inside it.

Installs Docker

Sets up Docker and Docker Compose inside the container, without you touching anything on the host.

Brings up the stack

PostgreSQL, Redis, MinIO, backend, frontend and Caddy with automatic TLS. At the end it gives you the URL and the CTID.

Requirements

Proxmox VE 8.x or 9.x · root access
2 vCPU
4 GiB of RAM
20 GB of disk

RAM matters: the Next.js build needs more than 2 GiB. Don't go below 4 GiB unless you know what you're doing.

What runs inside the container

The whole stack lives in a single LXC, isolated from the rest of the Proxmox host.

Debian LXC · unprivileged
PostgreSQL
Database
Redis
Cache and queues
MinIO
Object storage
Backend
API
Frontend
Web interface
Caddy
Proxy and TLS

Your files are encrypted in the browser: neither the server nor whoever administers the host can read their contents.

Customize the install

Pass environment variables before the command to tune resources or networking. The most useful ones:

VariableDefaultWhat it's for
NOCTCOM_RAM4096MiB of RAM (the Next.js build needs more than 2 GiB).
NOCTCOM_DOMAINDomain; empty = IP-based LAN mode.
NOCTCOM_EMAILEmail for the TLS certificates (when you use a domain).
NOCTCOM_CORES2Number of vCPUs for the container.
NOCTCOM_DISK20GB of disk for the rootfs.
NOCTCOM_NONINTERACTIVE01 = ask nothing and use the defaults.

Maintenance

Replace <CTID> with the ID the installer gave you.

Update
# git pull + migrations + rebuild, without touching your secrets
$ pct exec <CTID> -- bash -lc 'cd /opt/noctcom && bash update.sh'
Status
# Check the stack's services
$ pct exec <CTID> -- bash -lc 'cd /opt/noctcom && docker compose ps'
Logs
# Follow the backend logs
$ pct exec <CTID> -- bash -lc 'cd /opt/noctcom && docker compose logs -f backend'

Common problems

"I can't find pct / pveam / pvesh"
You're running the script inside a VM or LXC, not on the host. Connect to the Proxmox node as root.
The build runs out of memory or gets killed
Raise NOCTCOM_RAM (4096 recommended minimum; Next.js needs more than 2 GiB to compile).
It won't load with a domain
Check that DNS points to the right IP and that ports 80 and 443 reach the LXC (NAT or port-forward on your router or firewall).
The LXC's IP changed and the app won't reach the API (LAN mode)
The API URL is baked into the frontend build. Reserve the IP in your DHCP and reinstall, or rebuild the frontend with the new IP.

Full installation guide