Actual Budget Podman Setup w/ Quadlet Files

I place the .container and .volume files below into /etc/containers/systemd. Next, run systemctl daemon-reload to check for changes in unit files and then systemctl start actual-app.service to start the service.

When accessing Actual at host-ip:5006 an error may appear

Actual requires access to SharedArrayBuffer in order to function properly

In this instance, this error was present because Actual was not using HTTPS.

To keep things relatively simple, the server hosting Actual is connected to other devices with TailScale. Luckily, as pointed to in Actuals documentation, TailScale details how to configure HTTPS in their documentation.

Once the .key, .crt, and user created config.json file are generated, I can copy those to the location on the host that actual’s volume is mapped to. For me this was here: /var/lib/containers/storage/volumes/systemd-actual-app/_data/

To discover this, I did the following:

# to list volume names
sudo podman volume ls

# inspect the volume corresponding to the actual container
sudo podman volume inspect systemd-actual-app

Actual Budget actual-app.container File

[Container]
Label=app=actual
ContainerName=actual-app
Image=docker.io/actualbudget/actual-server:latest
Volume=actual-app.volume:/data
PublishPort=5006:5006

HealthCmd=node src/scripts/health-check.js
HealthInterval=60s
HealthTimeout=10s
HealthRetries=3
HealthStartPeriod=15s

[Service]
Restart=always
RestartSec=10

[Install]
WantedBy=default.target multi-user.target

Actual Budget actual-app.volume File

[Unit]
Description=Actual Container Volume

[Volume]
Label=app=actual