Actual Budget
So Firefly III is nice, but I just can't figure out what exactly the budget system is trying to do. I can set it to automatically add an amount each month to a budget, but it doesn't always actually add it. Plus it seems to change the amount randomly, almost if it is asking me for a monthly amount, then dividing that by the number of days in the month and then applying the amount per day to future months. So months with 30 days get a different amount than months with 31 days. Also if I do not spend anything towards a budget it stops adding to it, instead zeroing it out. I know they say it isn't able to work as a "bucket budget" but when you literally have a "bucket budget" in the application I'm not sure what kind of budget you are using. I came across Actual Budget and it looks like it is more my speed so I'm going to give it a try.
Create Virtual Machine
Steps performed on HV-03 via Windows Admin Center
- I navigate to
Virtual Machines
- I click on
Add
and thenNew
- Name:
ACTUAL-01
- Generation:
2 (Recommended)
- Virtual Processors:
2
- Memory:
2GB
- Virtual Switch:
Default External Switch
- Storage:
30GB
- Select
Install an operating system later
- I click on
Create
- Name:
- I select
ACTUAL01
- I click on
Settings
- I navigate to
Disk
- I click
Add Disk
- I select
Use an Existing Hard Disk
- Path:
c:\Images\Debian\debian-12.1.0-amd64-netinst.iso
- Path:
- I click
Save disk settings
- I click
- I move to
Boot Order
DVD
Hard Disk
Network adapter
- I click
Save boot order
- I navigate to
Security
- Enable Secure Boot:
Yes
- Template:
Microsoft UEFI Certificate Authority
- I click
Save security settings
- Enable Secure Boot:
- I click on
Close
- I click on
Power
and thenStart
Install Operating System
Steps performed on ACTUAL-01 via console
- I select
Install
- Select a language:
English
- Select your location:
United States
- Configure the keyboard:
American English
- Hostname:
ACTUAL-01
- Domain name:
domain.local
- I save my root password
- Full name for the new user: david
- I save my david password
- Select your time zone:
Eastern
- Partitioning method:
Guided - use entire disk
- Partitioning scheme:
All files in one partition
- Finish partitioning and write changes to disk?
yes
- Scan extra installation media:
no
- Debian archive mirror country:
United States
- Debian archive mirror:
deb.debian.org
- Participate in the package usage survey?
yes
- Choose software to install:
SSH server
Standard system utilities
- I select
Continue
- I remove the Debian ISO and reboot
Configure Operating System
Configure Sudo
Steps performed on ACTUAL-01
apt install sudo
/sbin/adduser david sudo
Adding user 'david' to group 'sudo' ...
Done.
Configure Network
Steps performed on ACTUAL-01
nano /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
address 10.10.10.XXX
gateway 10.10.10.254
netmask 255.255.255.0
- I save the file
interfaces
systemctl restart networking
Steps performed on DC-02 via Windows Admin Center
- I navigate to
DNS
- I select
domain.local
- I click on
Create a new DNS record
- DNS record type:
Host (A)
- Record Name:
ACTUAL
- FQDN:
ACTUAL.domain.local
- IP Address:
10.10.10.XXX
- Time to live:
3600
- I click on
Create
- DNS record type:
Configure SSH Key
Steps performed on desktop via Windows Terminal
ssh-keygen -t ed25519
Move-Item -Path c:\Users\david\filename* -Destination c:\Users\david\.ssh -Force
- I open Windows Terminal's
Settings
- I open the
JSON
file - I add the following:
{
"colorScheme": "Ubuntu-ColorScheme",
"commandline": "ssh -i \"~/.ssh/actual-01\" [email protected]",
"experimental.retroTerminalEffect": false,
"font":
{
"face": "Cascadia Code"
},
"guid": "{0caa0dad-35be-5f56-a8ff-XXXXXXXXXXXX}",
"hidden": false,
"name": "ACTUAL-01",
"tabTitle": "ACTUAL-01"
},
- I confirm the
GUID
is unique and save theJSON
file
Configure SSH
Steps performed on ACTUAL-01
mkdir /home/david/.ssh
name /home/david/.ssh/authorized_keys
- I paste in the public key and save
authorized_keys
chmod 600 /home/david/.ssh/authorized_keys
sudo nano /etc/ssh/sshd_config
PermitRootLogin no
PubkeyAuthentication yes
PubkeyAcceptedKeyTypes ssh-ed25519
PasswordAuthentication no
AuthorizedKeysFile /home/david/.ssh/authorized_keys
- I save the
sshd_config
file sudo sshd -t
sudo systemctl restart ssh
Install Actual Budget's Dependencies
Steps performed on ACTUAL-01
sudo apt install docker
sudo apt install docker-compose
Install Actual Budget
Steps performed on ACTUAL-01
sudo mkdir /apps
sudo mkdir /apps/actual
cd /apps/actual
sudo nano docker-compose.yml
version: '3'
services:
actual_server:
image: docker.io/actualbudget/actual-server:latest
ports:
# This line makes Actual available at port 5006 of the device you run the server on,
# i.e. http://localhost:5006. You can change the first number to change the port, if you want.
- '5006:5006'
environment:
# Uncomment any of the lines below to set configuration options.
# - ACTUAL_HTTPS_KEY=/data/selfhost.key
# - ACTUAL_HTTPS_CERT=/data/selfhost.crt
- ACTUAL_UPLOAD_FILE_SYNC_SIZE_LIMIT_MB=20
- ACTUAL_UPLOAD_SYNC_ENCRYPTED_FILE_SYNC_SIZE_LIMIT_MB=50
- ACTUAL_UPLOAD_FILE_SIZE_LIMIT_MB=20
# See all options and more details at https://actualbudget.github.io/docs/Installing/Configuration
# !! If you are not using any of these options, remove the 'environment:' tag entirely.
volumes:
# Change './actual-data' below to the path to the folder you want Actual to store its data in on your server.
# '/data' is the path Actual will look for its files in by default, so leave that as-is.
- /apps/actual:/data
restart: unless-stopped
- I saved the file
docker-compose.yml
sudo docker-compose up -d
I've got to run while the container is still pulling the image down. I'll have to check on it tomorrow to see if it is working.