-
Notifications
You must be signed in to change notification settings - Fork 0
Proxmox LXC Setup
Complete walkthrough for deploying Brum in Proxmox VE LXC containers or standalone Linux containers (Debian / Ubuntu / Alpine).
- Ultra-Low Resource Footprint: Written in Rust, idling at just ~20–30 MB of RAM with zero runtime bloat.
-
Single Standalone Binary: Web assets are embedded inside the executable via
rust-embed— no Node.js or web server runtime required. -
Native PAM & SQLite Multi-User Auth: Authenticate directly with Linux container users (
/etc/passwd&/etc/shadow) or the built-in SQLite user database. - Direct ZFS / NFS / SMB Bind Mounts: Seamlessly browse multi-terabyte host storage pools at raw native I/O speeds.
-
Integrated Slide-Up Linux PTY Terminal: Run native
bash/shshell sessions inside the container directly from the browser (`Ctrl+``).
Inside your Debian / Ubuntu LXC container terminal, run:
curl -fsSL https://raw.githubusercontent.com/Woofson/brum/main/scripts/lxc-install.sh | bashOnce installed, Brum is running and enabled on boot:
-
URL:
http://<CONTAINER_IP>:3140 -
Default Credentials:
admin/brum(Change after first login!)
If you built or downloaded the .deb release package:
# 1. Install prerequisites (including optional ffmpeg & imagemagick for Format Converter transcoding)
apt-get update && apt-get install -y ca-certificates tar bzip2 7zip ffmpeg imagemagick
# 2. Install Brum
dpkg -i brum_1.0.0_amd64.deb # or dpkg -i brum_*_amd64.deb
# 3. Enable and Start Systemd Service
systemctl daemon-reload
systemctl enable --now brum.service
# 4. Check service status
systemctl status brum# 1. Download and extract release tarball
wget https://github.com/Woofson/brum/releases/latest/download/brum-v1.0.0-linux-x86_64.tar.gz
tar -xzf brum-v1.0.0-linux-x86_64.tar.gz
cd brum-v1.0.0-linux-x86_64
# 2. Copy binary to system path
install -m 755 brum /usr/bin/brum
ln -sf /usr/bin/brum /usr/local/bin/brum
# 3. Setup configuration hierarchy
mkdir -p /etc/brum /data
cp config.toml /etc/brum/config.toml
# 4. Install systemd service
cp brum.service /usr/lib/systemd/system/brum.service 2>/dev/null || cp brum.service /etc/systemd/system/brum.service
systemctl daemon-reload
systemctl enable --now brum.serviceTo give Brum access to host disks, ZFS pools, or NAS shares, add bind mounts in your Proxmox host configuration (/etc/pve/lxc/<CTID>.conf).
Edit /etc/pve/lxc/<CTID>.conf on the Proxmox Host:
# Syntax: mp[index]: /host/path,mp=/container/mount/point
mp0: /tank/storage,mp=/mnt/storage
mp1: /mnt/pve/backups,mp=/mnt/backupsIn unprivileged containers, root inside the container maps to UID 100000 on the host.
To give the container read/write access to host files:
Option A: Set Host Permissions (Simplest)
# On Proxmox Host:
chown -R 100000:100000 /tank/storage
chmod -R 775 /tank/storageOption B: UID/GID Passthrough Mapping in /etc/pve/lxc/<CTID>.conf
mp0: /tank/storage,mp=/mnt/storage
# Map container root to host UID 0 or custom user ID
lxc.idmap: u 0 100000 1000
lxc.idmap: g 0 100000 1000Restart the LXC container:
pct reboot <CTID>Brum uses WebSockets for the Integrated Terminal (/api/ws/terminal). Ensure your reverse proxy passes Upgrade headers.
server {
listen 80;
server_name files.lan.local;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name files.lan.local;
ssl_certificate /etc/ssl/certs/brum.crt;
ssl_certificate_key /etc/ssl/private/brum.key;
client_max_body_size 10G;
location / {
proxy_pass http://192.168.1.150:3140;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket support for slide-up terminal
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
}
}files.lan.local {
reverse_proxy 192.168.1.150:3140
}If PAM authentication is enabled in /etc/brum/config.toml, any Linux user created in the container can log in directly:
# Add Linux system user
adduser alice
usermod -aG sudo aliceYou can also manage independent web users directly from the Settings (F10) ➔ Users Tab inside the web interface without modifying host Linux accounts.
| Command | Action |
|---|---|
systemctl status brum |
View service status and health |
systemctl restart brum |
Restart Brum daemon |
systemctl stop brum |
Stop the daemon |
journalctl -u brum -f |
Follow live application logs |
# 1. Stop service
systemctl stop brum
# 2. Replace binary
cp new-brum /usr/local/bin/brum
chmod +x /usr/local/bin/brum
# 3. Start service
systemctl start brumMIT © Bolt J Woofson
Brum — Multi-Pane Web Environment (File Commander/Manager)
Creator & Lab: Bolt J Woofson @ Woofsons Lab (www.arf.ac) • MIT License