zenodotus280

Actual Budget - Actually Easy

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
Thoughts? Leave a comment