Actual Budget can be hosted as a serverless service on Google Cloud Platform (GCP), with budget data stored in a GCP Cloud Storage bucket. Cloud Run provides a secure URL with an SSL certificate for accessing the service.
Before proceeding, ensure you have:
- A GCP account with billing enabled.
- Cloud Shell access (recommended) or the Google Cloud SDK installed locally.
Run the following command in Cloud Shell to install Actual Budget:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/daniefdz/actual-run/HEAD/install.sh)"If successful, the script will output the Service URL for accessing Actual Budget.
- Visit the GCP Console.
- Click the Cloud Shell icon in the top-right corner.
- Alternatively, go to
https://shell.cloud.google.com/. - Ensure the correct GCP Project ID is selected.
Modify the following values as needed:
GCP_REGION=us-central1
SERVER_VERSION=25.3.1
PROJECT_ID=$(gcloud config get-value project)
BUCKET_NAME=actual-server-$(openssl rand -hex 4)You can check the latest release version in the Actual repo
gcloud storage buckets create gs://$BUCKET_NAME \
--location=$GCP_REGION \
--project=$PROJECT_IDgcloud iam service-accounts create actual-server-sa \
--display-name="Actual Server Service Account" \
--project=$PROJECT_IDgcloud storage buckets add-iam-policy-binding gs://$BUCKET_NAME \
--member=serviceAccount:actual-server-sa@$PROJECT_ID.iam.gserviceaccount.com \
--role=roles/storage.objectAdminThis command deploys the Actual Budget service, making it publicly accessible while mounting the storage bucket:
gcloud run deploy actual-server \
--image=actualbudget/actual-server:$SERVER_VERSION \
--allow-unauthenticated \
--port=5006 \
--service-account=actual-server-sa@$PROJECT_ID.iam.gserviceaccount.com \
--max-instances=1 \
--add-volume name=gcs-1,type=cloud-storage,bucket=$BUCKET_NAME \
--add-volume-mount volume=gcs-1,mount-path=/data \
--region=$GCP_REGION \
--project=$PROJECT_IDThe final command will display the Actual Budget instance URL.
To view deployment details, visit the Cloud Run Console.