I use Proxmox and I like LXC containers because there are fewer abstractions compared to Docker and it keeps me closer to what actually happening. Where possible, I will try to install in a Debian LXC unless it's unreliable or tedious (especially updates) and then use Docker Compose in the LXC instead.
Today was a clean and easy setup for Actual Budget. I was using PikaPods initially while I tried out the software. Since no one else needs access to this I can simply use Wireguard (or Tailscale) to tunnel in and access this while I'm away from home.
Using an unmodified Debian 12 LXC with 2 GB of RAM (yarn/npm require it for the install) and 2 CPU cores I simply ran the script below that I created based on the official instructions. It uses a self-signed certificate which is fine for local use. I'm also using cat << EOF > /path/to/file
much more as I find it is both more succinct and easier to document though Obsidian doesn't like it and mucks up the colours.
## Prepare OS apt update apt upgrade -y ## Install Actual apt install -y npm git yarn npm install --global yarn git clone https://github.com/actualbudget/actual-server.git /opt/actual-server ## SystemD Service File cat << EOF > /etc/systemd/system/actual-server.service [Unit] Description=Actual-Server (https://actualbudget.org) After=network-online.target Wants=network-online.target [Service] WorkingDirectory=/opt/actual-server ExecStartPre=/usr/bin/git pull ExecStartPre=/usr/local/bin/yarn install ExecStart=/usr/local/bin/yarn start [Install] WantedBy=multi-user.target EOF systemctl daemon-reload ## Enable HTTPS openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /opt/actual-server/selfhost.key -out /opt/actual-server/selfhost.crt cat << EOF > /opt/actual-server/config.json { "https": { "key": "selfhost.key", "cert": "selfhost.crt" } } EOF ## Enable and Start systemctl enable --now /etc/systemd/system/actual-server.service