In this tutorial, we'll learn how to install and configure Actual Budget on Ubuntu 24.04 server.
Actual Budget is an open-source, self-hosted alternative to popular budgeting tools like YNAB (You Need A Budget). It offers robust features for tracking income, expenses, and overall financial well-being, all while keeping our sensitive financial data securely on our own hardware. This is a significant advantage for those who prioritize data privacy and want full control over their financial information.
This guide will walk us through the installation and configuration of Actual Budget on Ubuntu 24.04, transforming our Ubuntu server into a powerful, privacy-focused financial hub.
Let's dive in!
Prerequisites
Before we begin, let’s ensure our environment meets the following requirements:
- A Ubuntu 24.04 installed dedicated server or KVM VPS.
- A non-root user with sudo privileges.
- Basic knowledge of using the terminal.
- A domain name pointing A record to server IP.
Install and Configure Actual Budget on Ubuntu 24.04
Step 1: Update Ubuntu 24.04 Server
Next, update our package lists and upgrade any existing packages:
sudo apt update
sudo apt upgrade -y
The -y flag automatically confirms any prompts, making the process smoother.
Step 2: Install Docker and Docker Compose
Actual Budget is best deployed using Docker and Docker Compose, which simplify the installation and management of applications by packaging them into isolated containers. This approach ensures that Actual Budget runs consistently across different environments and avoids conflicts with other software on our server.
Install Docker Engine
Add Docker's official GPG key:
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
Install the Docker packages.
sudo apt-get install docker-ce
Once installed, we can verify that Docker is running correctly:
sudo systemctl status docker
We should see output indicating that the Docker service is active (running).
To avoid using sudo every time we run a Docker command, we can add our user to the docker group. Replace our_username with our actual Ubuntu username:
sudo usermod -aG docker ${USER}
Step 3: Deploy Actual Budget with Docker Compose
Now that Docker and Docker Compose are set up, we can deploy Actual Budget. The Actual Budget team provides a straightforward docker-compose.yml file to get us started.
Create a Directory for Actual Budget
Let's create a dedicated directory to store our Actual Budget configuration and data. This helps keep things organized.
mkdir ~/actual-budget
cd ~/actual-budget
Create the Docker Compose File
Now, we'll create the docker-compose.yml file within this directory. This file will define how our Actual Budget server container should be set up.
nano docker-compose.yml
Paste the following content into the docker-compose.yml file:
services:
actual-server:
image: actualbudget/actual-server:latest
container_name: actual_server
restart: unless-stopped
ports:
- "5006:5006" # Host port:Container port
volumes:
- ./data:/data # This maps a local 'data' directory to the container's /data
Save the file.
Start Actual Budget
Now, we can start the Actual Budget server using Docker Compose:
docker compose up -d
The -d
flag runs the containers in "detached" mode, meaning they run in the background, freeing up our terminal.
Docker will download the actualbudget/actual-server:latest image if it's not already present and then start the container.
We can verify that the container is running by checking the Docker processes:
docker ps
We should see actual_server listed among the running containers.
Step 4: Configure Nginx as a Reverse Proxy with SSL
While we can access Actual Budget directly via http://example.com:5006, it's highly recommended to set up a reverse proxy with SSL (HTTPS) for security, especially if we plan to access it over the internet. Nginx is a popular choice for this. This step ensures that our connection to Actual Budget is encrypted, protecting our sensitive financial data in transit.
Install Nginx
sudo apt install nginx -y
Next, we need to add HTTP and HTTPS ports in the firewall:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
Next, install Certbot and the Nginx plugin:
sudo apt install certbot python3-certbot-nginx -y
Certbot will interactively guide us through the process. It will ask for our email, agree to the terms of service, and then attempt to configure Nginx.
Now, we'll configure Nginx to act as a reverse proxy for Actual Budget.
Create a new Nginx configuration file for Actual Budget:
sudo nano /etc/nginx/sites-available/actualbudget.conf
Paste the following configuration, replacing example.com with our domain:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:5006;
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;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Save the file (Ctrl + O, Enter, Ctrl + X).
Enable the Nginx Configuration
Create a symbolic link to enable our new Nginx configuration:
sudo ln -s /etc/nginx/sites-available/actualbudget.conf /etc/nginx/sites-enabled/
Remove the default Nginx site to avoid conflicts:
sudo rm /etc/nginx/sites-enabled/default
Test Nginx Configuration and Restart
Test the Nginx configuration for syntax errors:
sudo nginx -t
If the test is successful, restart Nginx to apply the changes:
sudo systemctl restart nginx
Next, obtain the SSL certificate. Replace example.com with our actual domain name:
sudo certbot --nginx -d example.com
Step 5: Access Actual Budget in Our Web Browser
Once the container is running, Actual Budget should be accessible.
Open our web browser and navigate to:
https://example.com
Replace example.com
with the actual IP address of our Ubuntu 24.04 server.
The first time we access Actual Budget, we will be prompted to set up a password. This password will be used to log in to our self-hosted Actual Budget instance. There's no username to enter; it's simply password-based authentication for the server itself.
After setting the password, we can log in and begin using Actual Budget to track our personal finances!
Conclusion
We've successfully installed and configured Actual Budget on our Ubuntu 24.04 server, creating a powerful, self-hosted solution for personal finance tracking. By following these steps, we've gained full control over our financial data, benefiting from the privacy and flexibility that self-hosting offers.
Actual Budget provides a compelling alternative for those seeking a robust budgeting tool without relying on cloud-based services. We hope this guide empowers our users to take charge of their financial journey!