mirror of
https://github.com/actualbudget/actual.git
synced 2026-04-29 11:04:12 -05:00
Separate cloud/local install docs
This commit is contained in:
@@ -1,61 +0,0 @@
|
||||
---
|
||||
title: 'Docker'
|
||||
sidebar_position: 2
|
||||
---
|
||||
|
||||
## Hosting Actual on a home server with Docker
|
||||
|
||||
:::caution
|
||||
|
||||
These instructions are written to use a PR that has not been merged!
|
||||
|
||||
:::
|
||||
|
||||
Actual is also available as a Docker image ready to be run in your own custom environment.
|
||||
|
||||
- Docker Hub: `jlongster/actual-server`
|
||||
- Github Registry: `ghcr.io/actualbudget/actual-server`
|
||||
|
||||
## Launch container
|
||||
|
||||
A [docker-compose file](https://github.com/actualbudget/actual-server/raw/master/docker-compose.yml) is provided together with a [.env
|
||||
file](https://github.com/actualbudget/actual-server/raw/14eb9e969ac3aa878aa098736c34d7761d3c88f7/actual_server.env).
|
||||
These are you need to deploy Actual in your server with docker and you **only** need to edit the
|
||||
[.env
|
||||
file](https://github.com/actualbudget/actual-server/raw/14eb9e969ac3aa878aa098736c34d7761d3c88f7/actual_server.env).
|
||||
|
||||
To create and run the container:
|
||||
```bash
|
||||
$ docker-compose --env-file actual_server.env up -d
|
||||
```
|
||||
|
||||
## Test connection within local network
|
||||
|
||||
On another PC within the local network connect to http://*serverIP*:*chosenPort*
|
||||
|
||||
## Expose to internet with NGINX
|
||||
|
||||
Use the [sample nginx conf file provided](https://github.com/actualbudget/actual-server/raw/14eb9e969ac3aa878aa098736c34d7761d3c88f7/actual.subdomain.conf.sample) and if needed change the
|
||||
line with:
|
||||
```text
|
||||
set $upstream_port 5006;
|
||||
```
|
||||
to the chosen port (found [here](https://github.com/actualbudget/actual-server/raw/14eb9e969ac3aa878aa098736c34d7761d3c88f7/actual_server.env)).
|
||||
|
||||
Using nginx web UI:
|
||||
* Scheme -> http
|
||||
* Forward Hostname/IP -> actual_budget
|
||||
* Forward Port -> *The chosen port (found [here](https://github.com/actualbudget/actual-server/raw/14eb9e969ac3aa878aa098736c34d7761d3c88f7/actual_server.env))*
|
||||
|
||||
## Configuring the server URL
|
||||
|
||||
The Actual app is totally separate from the server. In this project, they happen to both be served
|
||||
by the same server, but the app doesn't know where the server lives.
|
||||
|
||||
The server could live on a completely different domain. You might setup Actual so that the app and
|
||||
server are running in completely separate places.
|
||||
|
||||
Since Actual doesn't know what server to use, the first thing it does is asks you for the server
|
||||
URL. If you are running this project, simply click "Use this domain" and it will automatically fill
|
||||
it in with the current domain. This works because we are serving the app and server in the same
|
||||
place.
|
||||
@@ -1,12 +0,0 @@
|
||||
---
|
||||
title: 'PikaPods'
|
||||
---
|
||||
|
||||
## Deploying Actual on Pikapods
|
||||
|
||||
[Pikapods](https://www.pikapods.com/) offers one click "instant open source app hosting", allowing
|
||||
you to run the finest Open Source web apps from just $1/month.
|
||||
|
||||
## Deploying
|
||||
|
||||
[Click here to run Actual on PikaPods](https://www.pikapods.com/pods?run=actual)
|
||||
@@ -1,12 +0,0 @@
|
||||
---
|
||||
title: 'Terraform'
|
||||
---
|
||||
|
||||
## Installing Actual using Terraform
|
||||
|
||||
Terraform is a configuration as code tool that allows declarative deployments on various cloud
|
||||
providers.
|
||||
|
||||
The community has provided Terraform configuration examples and guides for the following providers:
|
||||
|
||||
[Fly.io](#)
|
||||
@@ -1,73 +0,0 @@
|
||||
---
|
||||
title: 'Unraid'
|
||||
---
|
||||
|
||||
## Hosting Actual with [Unraid](https://unraid.net/)
|
||||
|
||||
This guide assumes you already have the [Community Apps (CA) plugin](https://forums.unraid.net/topic/38582-plug-in-community-applications/)
|
||||
installed and don't yet have Actual-Server installed. If you don't have the CA plugin installed,
|
||||
install it now. Please read through all of the instructions before starting.
|
||||
As always, backup your data by exporting from the web interface prior to making any configuration
|
||||
changes.
|
||||
|
||||
The current Actual Unraid CA was defined and maintained by hofq. Problems specifically with the
|
||||
unraid template (not Actual itself) should be addressed to that repo, which can be found [here](https://github.com/hofq/docker-templates/issues/new/choose).
|
||||
|
||||
## Initial setup
|
||||
|
||||
1. Search for "actualserver" in [Community Apps](https://unraid.net/community/apps?q=actualserver) and
|
||||
select the one by Kippenhof (the only one at this time).
|
||||
1. Click Install.
|
||||
|
||||

|
||||
|
||||
## Setting up data persistence
|
||||
|
||||
To avoid losing data when updating your image, you may wish to setup a persistent volume.
|
||||
|
||||
1. Towards the bottom the template, select `Add another Path, Variable, Label or Device`,
|
||||
1. In the popup, fill in the following details - changing your host location to match your setup:
|
||||
1. Name the path `Data`,
|
||||
1. Set the Container Path: `/data`,
|
||||
1. Set the Host Path (eg) `/mnt/user/appdata/actual`
|
||||
|
||||

|
||||
|
||||
This creates a directory named `actual` on your server and maps the container's `/data` folder to
|
||||
that directory on your Unraid server. This persists the data to the server. You can then make
|
||||
backups of the database from the host path you specified above.
|
||||
|
||||
1. Click "Apply", watch the container pull the image and start up. Login to Actual as outlined in
|
||||
the other guides.
|
||||
|
||||
(Note: It's generally wise to have a manual backup strategy just in case. Two is one, one is none!)
|
||||
|
||||
## Changing the image source
|
||||
|
||||
If you'd like to point the Actual Community App to a different image, it's simple to do so.
|
||||
|
||||
1. First, backup your data. Safety first! See the documentation on exporting your data for specific
|
||||
instructions.
|
||||
1. On the settings page for the Actual CA, locate the `repository` field.
|
||||

|
||||
1. Update this value to point to the dockerhub image of your choice. Eg, to use the official image
|
||||
change this value to [`jlongster/actual-server`](https://hub.docker.com/r/jlongster/actual-server)
|
||||

|
||||
1. Confirm that the correct image is pulled. The `By:` section should read `By:
|
||||
jlongster/actual-server` (or whichever image source you have chosen to use).
|
||||

|
||||
|
||||
### If you already had an alternate image running:
|
||||
|
||||
1. BACKUP YOUR DATA. Safety first!
|
||||
1. Stop your container and click `edit`.
|
||||
1. Change the repository field to point to the dockerhub image of your choice. See the above section
|
||||
if needed.
|
||||
1. Click Apply, and watch the container do its magic and swap out the image.
|
||||
1. Restart the container if it didn't restart automatically.
|
||||
1. On the `Docker` tab, enable `Advanced View` and confirm that you are now running the image you
|
||||
entered in step 3.
|
||||

|
||||
1. Try logging in to your budget like normal. You may have to log in again or you may get a sync
|
||||
error that says you need to revert to another version. Once you get through all that, you should be
|
||||
good to go. If it went badly, hopefully you didn't skip step 1!
|
||||
@@ -1,208 +0,0 @@
|
||||
---
|
||||
title: 'Deploying Actual with Git'
|
||||
---
|
||||
|
||||
# Deploying Actual on fly.io with git
|
||||
|
||||
### Installing Git On Your Local Machine
|
||||
|
||||
Download git for Windows from here: [https://git-scm.com/download/win](https://git-scm.com/download/win)
|
||||
|
||||
1. Identify the version that is suitable for your operating system
|
||||
|
||||
If you are unsure if you are running 32bit run this command in the command prompt:
|
||||
```cmd
|
||||
wmic os get OSArchitecture
|
||||
```
|
||||

|
||||
1. Download the setup file that is right for your system:
|
||||
|
||||

|
||||
|
||||
It should then start downloading:
|
||||
|
||||

|
||||
1. Once it is done, open it up - if asked click yes that you are happy for it to make changes to
|
||||
your device.
|
||||
|
||||

|
||||
1. Copy the settings as they are below and click next, next...
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
1. Then git should begin installing:
|
||||
|
||||

|
||||
1. Open up a command prompt and type
|
||||
```cmd
|
||||
git --version
|
||||
```
|
||||
to make sure it has installed correctly. If it has, you should see a version number as below:
|
||||
|
||||

|
||||
|
||||
That is it, Git is now installed.
|
||||
|
||||
## Deploying Actual
|
||||
|
||||
I got Actual deployed to [fly.io](https://fly.io) below are the instructions I used - understandably
|
||||
these are for Windows only but should work (with a few tweaks) for MacOSX & Linux.
|
||||
|
||||
1. Press start (or hit the windows key on your keyboard), type **cmd**
|
||||
|
||||

|
||||
|
||||
when CMD appears in the search results, **right click** it and run it as **Administrator**
|
||||
|
||||

|
||||
1. Navigate to the C:\ drive
|
||||
```cmd
|
||||
cd C:\
|
||||
```
|
||||

|
||||
1. Create a folder called GitHub. (`mkdir` is a command to *m*a*k*e a *dir*ectory)
|
||||
```cmd
|
||||
mkdir github
|
||||
```
|
||||

|
||||
1. Once that is complete run this command
|
||||
```cmd
|
||||
flyctl auth login
|
||||
```
|
||||

|
||||
|
||||
This should open a web browser and ask you to login - you will need to provide credit card
|
||||
details to proceed but actual shouldn't cost much if anything at all.
|
||||
|
||||

|
||||
1. Now we need to move into the GitHub directory we just created on the C:\ drive, to do that we can
|
||||
use this command
|
||||
```cmd
|
||||
cd C:\github
|
||||
```
|
||||

|
||||
|
||||
**Note:** CD means *c*hange *d*irectory
|
||||
1. Now run this command
|
||||
```cmd
|
||||
git clone https://github.com/actualbudget/actual-server.git
|
||||
```
|
||||

|
||||
|
||||
This will pull down the latest files for actual-server from the git hub repository to our local
|
||||
machine.
|
||||
1. Then we need to move into that folder, to do that use this command
|
||||
```cmd
|
||||
cd actual-server
|
||||
```
|
||||

|
||||
|
||||
Let's check to make sure we are in the correct place
|
||||
```cmd
|
||||
dir
|
||||
```
|
||||

|
||||
|
||||
You should see a list of files, one of them being `fly.template.toml`. If you don't see them
|
||||
go back to step 6
|
||||
1. Copy `fly.template.toml` that is in the folder called actual-server within C:\GitHub and copy it
|
||||
back into the same directory with the name `fly.toml`
|
||||
```cmd
|
||||
copy fly.template.toml fly.toml
|
||||
```
|
||||

|
||||
1. Open the fly.toml file in notepad or a text editor of your choice like Visual Studio Code
|
||||
```cmd
|
||||
notepad fly.toml
|
||||
```
|
||||

|
||||
|
||||
On line 1 change `app = "%NAME%"` to something of your choosing like `app = "Actual"` and save
|
||||
the file
|
||||
|
||||

|
||||
1. Go back to the command prompt and run
|
||||
```cmd
|
||||
flyctl launch
|
||||
```
|
||||
1. You will see a message that says `An existing fly.toml file was found for app Actual Budget ?
|
||||
Would you like to copy its configuration to the new app? (y/N)`
|
||||
|
||||
Type Y and hit enter
|
||||
|
||||

|
||||
1. It asked me to give my application a name, I just left it blank and it picked one for me. I did
|
||||
this because no matter what I typed it errored.
|
||||
|
||||

|
||||
1. Select your location using the up/down arrow keys when prompted:
|
||||
|
||||

|
||||
1. When prompted with `? Would you like to setup a Postgresql database now? (y/N)`
|
||||
|
||||
Type N and press enter:
|
||||
|
||||

|
||||
1. When prompted with `? Would you like to deploy now? (y/N)`
|
||||
|
||||
Type Y and press enter:
|
||||
|
||||

|
||||
|
||||
The application should begin deploying.
|
||||
|
||||

|
||||
1. If you get a message about Windows Firewall, click 'Allow Access'
|
||||
|
||||

|
||||
|
||||
When complete you should see something like this:
|
||||
|
||||

|
||||
|
||||
## Configuring Actual
|
||||
|
||||
Now everything is setup and configured, you should now be able to navigate to Actual using the URL
|
||||
provided by Fly in the dashboard.
|
||||
|
||||
1. To find that open [https://fly.io/dashboard](https://fly.io/dashboard) in a browser and click the
|
||||
application you created, in my case **myfirstbudget**, it might have a really random name if you
|
||||
left it blank a few steps ago
|
||||
|
||||

|
||||
1. Once you are in there, you should see Hostname section under Application Information - click the
|
||||
link
|
||||
|
||||

|
||||
|
||||
https://myfirstbudget.fly.dev
|
||||
|
||||
This will now open Actual so we can start configuring it.
|
||||
1. You should then see this screen
|
||||
|
||||

|
||||
|
||||
Click the 'Use this domain' link
|
||||
|
||||

|
||||
1. Set a password - remember this, you will need it in the future.
|
||||
|
||||

|
||||
1. If everything went well you should then be taken to your very first budget.
|
||||
|
||||

|
||||
|
||||
Actual is now up and running. Congratulations!
|
||||
@@ -1,133 +0,0 @@
|
||||
---
|
||||
title: 'Deploying Actual with a container image'
|
||||
---
|
||||
|
||||
# Deploying Actual on fly.io with a container image
|
||||
|
||||
## Deploying
|
||||
|
||||
[fly.io](https://fly.io) allows running the application directly and provides a free tier. You
|
||||
should be comfortable with using the command line to set it up though.
|
||||
|
||||
1. [Install the `flyctl`](https://fly.io/docs/flyctl/installing/) utility.
|
||||
1. [Create an account](https://fly.io/app/sign-in). You can also create your account by running
|
||||
```sh
|
||||
fly auth signup
|
||||
```
|
||||
|
||||
Although you are required to enter payment details, the resources required to run Actual are
|
||||
within the free tier, and you shouldn't be charged.
|
||||
1. Copy
|
||||
[`fly.template.toml`](https://github.com/actualbudget/actual-server/raw/master/fly.template.toml)
|
||||
to an empty local directory, and rename the file `fly.toml`.
|
||||
|
||||
- *Optional*: Open `fly.toml` and customize the app name on the first line of the file. e.g.:
|
||||
```toml
|
||||
app = "actual-budget"
|
||||
```
|
||||
App names must be *globally* unique, so there is a meaningful probability that your chosen name
|
||||
is unavailable. Later steps allow the fly.io system to generate a unique name for you.
|
||||
1. <a name="mount_config" />Persisting data means the server will retain your configuration and
|
||||
budget. Without this, each deployment or restart will wipe away all the data on the server. You
|
||||
would need to intialize (also known and listed as 'bootstrapping' in the user interface) the
|
||||
instance again and re-upload your files. We want our Actual server to persist data, so we need to
|
||||
mount a volume.
|
||||
|
||||
Open `fly.toml` in a text editor and add the following:
|
||||
```toml
|
||||
[mounts]
|
||||
source="actual_data"
|
||||
destination="/data"
|
||||
```
|
||||
1. Create your app using the following command:
|
||||
```sh
|
||||
fly launch --image jlongster/actual-server:latest
|
||||
```
|
||||
1. Select `Yes` when prompted to copy existing configuration.
|
||||
```sh
|
||||
? Would you like to copy its configuration to the new app? (y/N) y
|
||||
```
|
||||
1. Press `enter` to accept an auto-generated app name. You may enter a name if you wish, but it
|
||||
must be globally unique across all fly apps.
|
||||
```sh
|
||||
? App Name (leave blank to use an auto-generated name):
|
||||
```
|
||||
1. Select a deployment region. The closest region should be highlighted by default, so you may
|
||||
simply hit `enter` if you do not have specific needs.
|
||||
```sh
|
||||
? Select region: [Use arrows to move, type to filter]
|
||||
ams (Amsterdam, Netherlands)
|
||||
...
|
||||
```
|
||||
1. Select `No` when prompted to create a Postgres database.
|
||||
```sh
|
||||
? Would you like to setup a Postgresql database now? (y/N) n
|
||||
```
|
||||
1. Select `No` when prompted to deploy now.
|
||||
```sh
|
||||
? Would you like to deploy now? (y/N) n
|
||||
```
|
||||
1. Continue to the [Persisting server data](#persisting-server-data) section.
|
||||
|
||||
## Persisting server data
|
||||
|
||||
If you choose not to set up a persistent volume, each deployment or restart will wipe away all the
|
||||
data on the server. You would need to intialize (also known and listed as 'bootstrapping' in the
|
||||
user interface) the the instance again and upload your files. To avoid that, let's move the data
|
||||
somewhere that persists. With [fly.io](https://fly.io) we can create a [volume](https://fly.io/docs/reference/volumes/).
|
||||
|
||||
1. In the directory containing your `fly.toml` configuration, run this command:
|
||||
```sh
|
||||
fly volumes create actual_data
|
||||
```
|
||||
1. Select a deployment region. The closest region should be highlighted by default, so you may
|
||||
simply hit `enter` if you do not have specific needs.
|
||||
|
||||
*Fly volumes are encrypted at rest by default. See the fly.io docs if you wish to disable this,
|
||||
though we do ***not*** recommend doing so.*
|
||||
1. If you have not already added a mount to your fly config, follow [the instructions above](#mount_config)
|
||||
to do so.
|
||||
1. Deploy your application:
|
||||
```sh
|
||||
fly deploy
|
||||
```
|
||||

|
||||
|
||||
You should have a running app now! Actual will check if the `/data`[¹](#note_1) directory exists and use it
|
||||
automatically. You can open the app using
|
||||
```sh
|
||||
fly apps open
|
||||
```
|
||||
|
||||
## Updating Actual
|
||||
|
||||
Whenever you want to update Actual, return to the directory containing your `fly.toml` file and run
|
||||
```sh
|
||||
fly deploy
|
||||
```
|
||||
|
||||
If you wish to change the image source (eg to run an unstable build, or a specific tag), run
|
||||
```sh
|
||||
fly deploy --image [desired image tag]
|
||||
```
|
||||
with `[desired image tag]` replaced with your desired tag.
|
||||
|
||||
<a name="note_1" />¹ *You can also configure the data dir with the `ACTUAL_USER_FILES` environment
|
||||
variable.*
|
||||
|
||||
|
||||
## Frequent Issues
|
||||
|
||||
- **Q.** *I have deployed actual to Fly.io but I am being charged, why is this?*
|
||||
|
||||
**A.** While we wouldn’t know for certain without seeing your configuration, it is likely that during
|
||||
deployment you created a Postgres database. Actual doesn’t need this so you can just delete it and
|
||||
charges should then stop. If you're unsure, the [community in Discord][discord]
|
||||
may be able to assist you.
|
||||
|
||||
## Official Images
|
||||
|
||||
These images are published based on the `master` branch of the [actual-server repo][upstream].
|
||||
|
||||
- Docker hub: [jlongster/actual-server](https://hub.docker.com/r/jlongster/actual-server)
|
||||
- Github Container Registry: [ghcr.io/actualbudget/actual-server](https://ghcr.io/actualbudget/actual-server)
|
||||
@@ -1,45 +0,0 @@
|
||||
---
|
||||
title: 'Persisting the data in Fly'
|
||||
---
|
||||
|
||||
## Persisting the data in Fly
|
||||
|
||||
When we update Actual, if we don't persist the data it will be erased each time we come to update.
|
||||
|
||||
1. Run the following command
|
||||
```cmd
|
||||
flyctl volumes create actual_data --region lhr
|
||||
```
|
||||
This will create a volume in the london region. Replace `lhr` with another region code if
|
||||
desired.
|
||||
|
||||

|
||||
1. You should then get a message to say it was successful
|
||||
|
||||

|
||||
1. Open up `fly.toml` in notepad - you can do this from the command line
|
||||
```cmd
|
||||
notepad fly.toml
|
||||
```
|
||||
1. Add the following to the file
|
||||
```toml
|
||||
[mounts]
|
||||
source="actual_data"
|
||||
destination="/data"
|
||||
```
|
||||
If you created a volume with a different name, put that in the source. Save the file.
|
||||
|
||||

|
||||
1. Now from the command prompt run
|
||||
```cmd
|
||||
flyctl deploy
|
||||
```
|
||||

|
||||
|
||||
Your application should be re-deployed with the updated configuration
|
||||
|
||||

|
||||
|
||||
If all went well, you should now be able to see your volume from the fly.io dashboard.
|
||||
|
||||

|
||||
@@ -1,27 +0,0 @@
|
||||
---
|
||||
title: 'Fly Pre-requisites'
|
||||
---
|
||||
|
||||
## Pre-requisites
|
||||
|
||||
There are some things we need to do before we get started though.
|
||||
|
||||
### Fly.io Account
|
||||
|
||||
Create an account with [fly.io](https://fly.io/app/sign-up). Although you are required to enter
|
||||
payment details, everything we do here will work on the free tier and you won't be charged.
|
||||
|
||||
### Flyctl tool installation
|
||||
|
||||
1. Open up PowerShell on your local machine and paste the following command into the window:
|
||||
```powershell
|
||||
iwr https://fly.io/install.ps1 -useb | iex
|
||||
```
|
||||

|
||||
1. Flyctl should start installing
|
||||
|
||||

|
||||
1. Once done you should get a message saying `Run flyctl --help to get started`:
|
||||

|
||||
|
||||
Flyctl is now installed.
|
||||
@@ -1,53 +0,0 @@
|
||||
---
|
||||
title: 'Deploying Actual with terraform'
|
||||
---
|
||||
|
||||
# Deploying Actual on fly.io with terraform
|
||||
|
||||
## Requirements
|
||||
|
||||
1. [Install terraform](https://learn.hashicorp.com/tutorials/terraform/install-cli).
|
||||
1. Ensure you've [installed the flyctl utility](https://fly.io/docs/flyctl/installing/) and logged
|
||||
in.
|
||||
1. Copy the `terraform` subdirectory of `actual-server` [(link)][tf-dir].
|
||||
|
||||
## Terminal 1: Setup
|
||||
|
||||
1. Enter the `terraform` subdirectory of `actual-server`.
|
||||
1. Log in to fly.io by running
|
||||
```sh
|
||||
fly auth login
|
||||
```
|
||||
1. Set your fly.io API key as an evironment variable
|
||||
```sh
|
||||
export FLY_API_TOKEN=$(fly auth token)
|
||||
```
|
||||
|
||||
## Terminal 2: Open Wireguard Tunnel
|
||||
|
||||
1. In a separate terminal, run
|
||||
```sh
|
||||
fly machines api-proxy
|
||||
```
|
||||

|
||||
|
||||
This will open a wireguard tunnel from your local machine to fly's infrastructure allowing
|
||||
terraform to access the `machines` api.
|
||||
|
||||
## Deploy
|
||||
|
||||
1. Return to terminal 1.
|
||||
1. Initialize terraform by running the following command in the `terraform` directory:
|
||||
```sh
|
||||
terraform init
|
||||
```
|
||||
1. Update the `ex.tfvars` file (or use your preferred method of variable provision), then:
|
||||
```sh
|
||||
terraform apply -var-file=ex.tfvars
|
||||
```
|
||||
1. Review the plan, and enter `yes` if it matches expectations.
|
||||
|
||||

|
||||
|
||||
You should now have a running app! Open your [fly.io dashboard](https://fly.io/dashboard/) to
|
||||
inspect any additional details.
|
||||
@@ -1,49 +0,0 @@
|
||||
---
|
||||
title: 'Updating Actual'
|
||||
---
|
||||
|
||||
## Updating Actual
|
||||
|
||||
:::caution Before starting this step, backup your budget! You can find out how to do that [here](#exporting-data-from-actual).
|
||||
Failure to do this may result in budget loss.
|
||||
:::
|
||||
|
||||
This section focuses on updating the actual-server
|
||||
|
||||
Press the start menu or windows key on your keyboard and type **cmd**
|
||||
|
||||

|
||||
|
||||
when command prompt appears in the search results, **right click** it and run it as **Administrator**
|
||||
|
||||

|
||||
|
||||
Navigate to the C:\ drive using this command
|
||||
```cmd
|
||||
cd C:\
|
||||
```
|
||||

|
||||
|
||||
Assuming you followed this guide before, navigate to the github directory you created to clone
|
||||
actual and then into the actual-server directory
|
||||
```cmd
|
||||
cd github\actual-server
|
||||
```
|
||||

|
||||
|
||||
We now need to clone the latest changes made to the actual-server repo, to do this, run the
|
||||
following command from your command prompt:
|
||||
```cmd
|
||||
git pull origin master
|
||||
```
|
||||

|
||||
|
||||
Once that is done, run the deployment command to push your changes to fly.
|
||||
```cmd
|
||||
flyctl deploy.
|
||||
```
|
||||
Once that is complete, [delete your browsing history](https://www.howtogeek.com/304218/how-to-clear-your-history-in-any-browser/)
|
||||
and web files.
|
||||
|
||||
Load up your budget and if required [restore your backup](#importing-data-into-actual) and that is
|
||||
Actual Server updated.
|
||||
@@ -1,56 +0,0 @@
|
||||
[git-guide]: ./Fly-git
|
||||
[image-guide]: ./Fly-image
|
||||
[terraform-guide]: ./Fly-terraform
|
||||
[ci-build]: https://github.com/actualbudget/actual-server/blob/master/.github/workflows/build.yml
|
||||
[discord]: https://discord.gg/pFFRdFYX
|
||||
|
||||
|
||||
# Hosting Actual with [fly.io](https://fly.io)
|
||||
|
||||
You should deploy your server so it's always running. [Fly.io](https://fly.io) provides an easy
|
||||
option with a free plan.
|
||||
|
||||
See the next section for a brief comparison of fly.io deployment options. If you're stuck or find a
|
||||
step unclear, the [community in Discord][discord] may be able to assist you.
|
||||
|
||||
## Deployment methods
|
||||
|
||||
Fly offers a variety of ways to get an application deployed on their infrastructure. We currently
|
||||
have community contributed documentation for the following deplyment methods
|
||||
- Deploying from a clone of the main git repository [(link)][git-guide]
|
||||
- Deploying from a published container image [(link)][image-guide]
|
||||
- Deploying an image with Terraform [(link)][terraform-guide]
|
||||
|
||||
Each of these methods come with tradeoffs.
|
||||
|
||||
The git approach allows users a high degree of control. With sufficient knowledge, you can target
|
||||
the current release, work in progress, or a fork (a unique code history that uses Actual as its
|
||||
starting point). You can make fine grained changes to any aspect of your Actual server instance.
|
||||
However, some users will find that this level of control adds complexity to their deployment. As
|
||||
your deployment is based on your local copy of the source code, you will be responsible for keeping
|
||||
track of updates and ensuring your local copy is up to date.
|
||||
|
||||
The container image approach offers less granular control. Images are intended to be a specific
|
||||
version of the application, identical everywhere that image is deployed. While there are some
|
||||
deployment parameters you can alter, you'll only have access to configuration that the current
|
||||
version of the application makes available. In return for surrendering source code level access, you
|
||||
get relative simplicity. The image includes everything the application needs, and thus none of that
|
||||
tooling needs to be installed on your machine. New versions of the image are built by the main
|
||||
repository[¹](#deployment_1); if you opt to deploy the `:latest` tag, you can be confident you're up
|
||||
to date with the latest full release.
|
||||
|
||||
As a (terrible) analogy, the git approach provides you a car with no restrictions. If you decide the
|
||||
engine should be tuned differently, you can open the hood and go to work with your wrench. The image
|
||||
approach also provides you a car, but the engine bay is sealed. If you want different cylinder
|
||||
timing, you'll need a new image.
|
||||
|
||||
<a name="deployment_1" />¹ *You can find the image build workflow [here][ci-build]*
|
||||
|
||||
## Frequent Issues
|
||||
|
||||
- **Q.** *I have deployed actual to Fly.io but I am being charged, why is this?*
|
||||
|
||||
**A.** While we wouldn’t know for certain without seeing your configuration, it is likely that during
|
||||
deployment you created a Postgres database. Actual doesn’t need this so you can just delete it and
|
||||
charges should then stop. If you're unsure, the [community in Discord][discord]
|
||||
may be able to assist you.
|
||||
@@ -1,38 +0,0 @@
|
||||
---
|
||||
title: 'Enabling a Reverse Proxy'
|
||||
---
|
||||
|
||||
1. If you don't have a registered hostname, Synology offers a free service that provides one. You can also use your existing provider. This information is found in the **Control Panel** in the **External Access** menu.
|
||||

|
||||
|
||||
2. Navigate to the **Login Portal** menu and click on the **Advanced** tab. Then click on the **Reverse Proxy** button.
|
||||
|
||||

|
||||
|
||||
:::note
|
||||
You may come back to this step later.
|
||||
:::
|
||||
|
||||
3. Add a new rule. Give the reverse proxy rule a name. Set the hostname to whatever you like. In this example, it is set to budget (hostname set in step 1). A reverse proxy uses the port `443` SSL port. Enable HSTS and set the destination to your Actual docker container. There is an option for access control restriction. This can be used to limit the IP addresses that are allow to access this reverse proxy. It is especially useful if you want to use a VPN connection in addition to a reverse proxy.
|
||||
|
||||

|
||||
|
||||
4. Your reverse proxy needs an SSL certificate. We can add one from the **Security** menu under the **Certificate** tab.
|
||||
|
||||

|
||||
|
||||
5. Choose a certificate from **Let's Encrypt** if you don't already have a certificate you want to use.
|
||||
|
||||

|
||||
|
||||
6. Type in your new domain name you generated from the Reverse Proxy setup in step 3.
|
||||
|
||||

|
||||
|
||||
Once all of these settings are applied, you may have to forward port `443` from your router to your Synology. A DNSMASQ rule may also have to be set to use the hostname on your local network. Check your routers documentation if you need instructions on setting up port forwarding rules and DNSMASQ.
|
||||
|
||||
If you have a VPN set up for your local network, it is possible to restrict usage of your new reverse proxy Actual container to only devices on your local network or VPN. Go back to the menu in step 3 and add an **Access Restriction** rule.
|
||||
|
||||
The first line should represent your local area network IP address range, while the second line should represent your VPN IP address range. Once this rule is set up, edit your reverse proxy rule and apply the Access Control profile.
|
||||
|
||||

|
||||
@@ -1,50 +0,0 @@
|
||||
---
|
||||
title: 'Synology Automatic Updates'
|
||||
---
|
||||
|
||||
:::note This page details a method of automatically updating actual that uses 3rd party software not maintained or written by the development team of Actual Budget. The continued maintenance, applicability or potential data loss is not guaranteed by Actual when using this software. Direct all bug requests with regards to automatically updating Docker containers to the maintainer of the package chosen.
|
||||
:::
|
||||
:::caution These instructions grant root access to a 3rd party package. This is an inherent security risk. If you are uncomfortable with this risk, this method may not be suitable for you.
|
||||
:::
|
||||
|
||||
Updating containers on a Synology isn't hard, but it can be tedious if you have to do it too many times. This page will provide instructions for one method to automate the task.
|
||||
|
||||
1. Navigate to the **Docker** application
|
||||
|
||||

|
||||
|
||||
2. Search for and download **containrrr/watchtower** using the **latest** tag.
|
||||
|
||||

|
||||
|
||||
3. Navigate to the **Control Panel** and go to the **Task Scheduler** menu.
|
||||
|
||||

|
||||
|
||||
4. Create a new **Scheduled task/User defined script**.
|
||||
|
||||

|
||||
|
||||
5. Change the user to **root** on the **General tab**
|
||||
|
||||

|
||||
|
||||
6. Change the schedule to **Run on the following date** and **Do not repeat** on the **Schedule tab**
|
||||
|
||||

|
||||
|
||||
7. Add the following string to the **Task Settings** tab
|
||||
|
||||

|
||||
|
||||
```docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --interval 86400 --cleanup```
|
||||
|
||||
* The -v command allows Watchtower to connect to Dockers socket and update running containers.
|
||||
* The --interval command is in seconds. 86400 will set an update interval every 24 hours.
|
||||
* The --cleanup command will delete old images after downloading and installing new ones to reduce clutter.
|
||||
|
||||
8. Press OK. Select the newly created scheduled task and select the **Run** command.
|
||||
|
||||

|
||||
|
||||
You can now go to the Docker application and you should have a newly created watchtower container that will automatically update your Actual container any time there is a new release. You can also delete the newly created schedule if you wish.
|
||||
@@ -1,97 +0,0 @@
|
||||
---
|
||||
title: 'Synology'
|
||||
---
|
||||
|
||||
[reverse-proxy]: ./synology-reverse-proxy
|
||||
[watchtower]: ./synology-watchtower
|
||||
|
||||
# Synology DSM 7.1
|
||||
|
||||
Actual can be hosted on a Synology Diskstation where total control of your data can be maintained.
|
||||
|
||||
## Installing Docker
|
||||
|
||||
1. Navigate to Package Center.
|
||||
|
||||
2. Search for Docker and install the package.
|
||||
|
||||

|
||||
|
||||
## Create a folder for your budget data to reside
|
||||
|
||||
1. Navigate to **File Station**
|
||||
|
||||
2. A folder named **docker** should be along the left hand side. Open the docker folder and create a new folder inside named **actual**.
|
||||
|
||||
3. If you will be using multiple containers for actual for multiple users, you may name this something more descriptive for each user.
|
||||
|
||||

|
||||
|
||||
## Installing Actual
|
||||
|
||||
1. Open the Applications menu and open Docker.
|
||||
|
||||
2. Select the Registry menu item on the left hand side.
|
||||
|
||||
3. Search for jlongster/actual-server
|
||||
|
||||

|
||||
|
||||
4. Select the **Image** and then press the download button. Select the **latest** tag.
|
||||
|
||||

|
||||
|
||||
5. Once the image is downloaded, navigate the the **Image** menu item.
|
||||
|
||||
6. Select the newly downloaded image for actual-server, and press the **Launch** button at the top of the screen.
|
||||
|
||||

|
||||
|
||||
7. A new dialog menu will appear and ask for network settings. **Use the selected networks** (bridge) and press **Next**.
|
||||
|
||||

|
||||
|
||||
8. Give your new container a name, or use the default. **Enable auto-restart**. **Next**. The remaining options can stay at the default values.
|
||||
|
||||

|
||||
|
||||
9. **Add** ports to your container. DSM uses port 5006 for another application, so we will give Actual a different port. Set the **Local** port to 5007. Set the **Container** port to 5006. **Next**.
|
||||
|
||||

|
||||
|
||||
10. **Add Folder**, select the folder that was created above using **File Station**. Set the **Mount path** to **/data**. **Next**.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
11. A summary of your container will be displayed. Press **Done**.
|
||||
|
||||

|
||||
|
||||
You now have Actual installed on your Synology NAS. Now let's try to access it.
|
||||
|
||||
Using your preferred web browser, try typing the IP address of the NAS into the address bar followed by port 5007. I.e. http://(ip address):5007
|
||||
If you see the welcome page to Actual, that's great! If not, you may have your firewall enabled and need to allow the port.
|
||||
|
||||
## Letting Actual through the firewall
|
||||
|
||||
1. Navigate to the **Control Panel**.
|
||||
|
||||
2. Navigate to the **Security** icon.
|
||||
|
||||

|
||||
|
||||
3. Click on the **Firewall** tab and then select **Edit Rules**
|
||||
|
||||

|
||||
|
||||
4. Create a new rule that allows port 5007. This should be place before the final rule, which is usually a DENY rule for all remaining ports.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
5. Select **OK** and try connecting to Actual again.
|
||||
|
||||
If you are only wanting to access Actual on your home network, this is the end of the instructions. If you want to automatically update Actual when there is a new release or access Actual when you are away from your home network, read on.
|
||||
Reference in New Issue
Block a user