Docker
Hosting Actual on a home server with Docker
Actual is also available as a Docker image ready to be run in your own custom environment. We publish the image both to Docker Hub (as actualbudget/actual-server
) and GitHub’s container registry (as ghcr.io/actualbudget/actual-server
). Actual should function the same when pulled from either registry, so you can choose whichever one you prefer.
Docker Tags
We publish a number of tags to the official repository now so that users who want to get the latest bleeding edge changes can do that without having to wait for the latest image to be updated. Details of the available tags are below.
latest
Tag
The latest
tag points to the most recent official release of Actual. This is the recommended tag to use for most users.
latest
latest-alpine
- Based on Alpine Linux, which is tiny so it's great for low powered devices.
edge
Tag
The edge
tag is updated every time a commit is pushed to the master
branch. While we welcome people to try it out, there may be more bugs than the official release (please report any you find!). If you choose to give this tag a try, make sure you keep backups of your budget in case something goes wrong.
edge
edge-alpine
- Based on Alpine Linux, which is tiny so great for low powered devices.
Launch container using Docker Compose
Pre-requisites: Docker
You can use the docker-compose.yml
file included in the actual-server
repository to run the latest stable version of the server.
To create and run the container:
$ docker-compose up --detach
You can optionally configure the container using environment variables — see the configuration section for more details.
Update Docker Compose container
$ docker-compose pull && docker-compose up -d
Launch container using docker command
Pre-requisites: Docker
Alternatively to using docker compose, you may also launch docker using this command. This command, as shown, will launch the latest stable build of Actual.
$ docker run --pull=always --restart=unless-stopped -d -p 5006:5006 -v YOUR/PATH/TO/DATA:/data --name my_actual_budget actualbudget/actual-server:latest
--pull=always
-- always pulls the latest image
--restart=unless-stopped
-- sets the restart policy of the container
-d
-- starts the container as background application
-p 5006:5006
-- sets the port to access Actual. (HOST PORT:DOCKER PORT)
-v YOUR/PATH/TO/DATA:/data
-- tells the container where to store your budget data. This persists the data on your hard disk so it isn't lost if you remove the container. Change the current value to a folder on your host computer. The server will create server-files
and user-files
subfolders at this location.
--name my_actual_budget
-- gives your new docker container a name (change this to whatever you want)
actualbudget/actual-server:latest
-- defines which image you want to pull and launch.
Update Docker container using docker command
$ docker stop my_actual_budget
$ docker container rm my_actual_budget
$ docker run --pull=always --restart=unless-stopped -d -p 5006:5006 -v YOUR/PATH/TO/DATA:/data --name my_actual_budget actualbudget/actual-server:latest
You can place all of these in a batch script for a 1 click or single command update.
$ docker stop my_actual_budget && docker container rm my_actual_budget && docker run --pull=always --restart=unless-stopped -d -p 5006:5006 -v YOUR/PATH/TO/DATA:/data --name my_actual_budget actualbudget/actual-server:latest
Test connection within local network
On another PC within the local network connect to http://serverIP:chosenPort