Refactor Actualbudget script to use new NPM package #903

Closed
opened 2026-02-04 22:06:39 +03:00 by OVERLORD · 29 comments
Owner

Originally created by @jeffguillaume on GitHub (May 5, 2025).

Originally assigned to: @MickLesk on GitHub.

📌 Task summary

Refactor the previously removed Actual Budget install/update script to use newly available NPM package provided by project

📋 Task details

The install and update script for Actual Budget was removed a few weeks ago because of difficulty maintaining code from the project's source.

The Actual Budget project has now released & promised ongoing support for an NPM package edition:

https://actualbudget.org/docs/install/cli-tool/

The Actual sync-server is available as an NPM package. The package is designed to make running the sync-server as easy as possible and is published to the official NPM registry under https://www.npmjs.com/package/@actual-app/sync-server

From the project:

The maintainers have been discussing ways to make the process simpler for folks who just want to run actual server without docker or going through the hassle of building from source. We've developed a CLI tool that does that, which we'll support going forward.

[...] it will be as easy as installing one npm package and running it - it should be roughly around 75MB in total.

Per @MickLesk's directions here, please consider re-adding this useful open source project back to the script repository, now that maintaining it should be easier!

Originally created by @jeffguillaume on GitHub (May 5, 2025). Originally assigned to: @MickLesk on GitHub. ### 📌 Task summary Refactor the previously removed Actual Budget install/update script to use newly available NPM package provided by project ### 📋 Task details The install and update script for Actual Budget was removed a few weeks ago because of difficulty maintaining code from the project's source. The Actual Budget project has [now released](https://actualbudget.org/blog/release-25.5.0/) & promised ongoing support for an NPM package edition: https://actualbudget.org/docs/install/cli-tool/ > The Actual sync-server is available as an NPM package. The package is designed to make running the sync-server as easy as possible and is published to the official NPM registry under [https://www.npmjs.com/package/@actual-app/sync-server](https://www.npmjs.com/package/@actual-app/sync-server) From [the project](https://github.com/actualbudget/actual/issues/4746#issuecomment-2807392828): >The maintainers have been discussing ways to make the process simpler for folks who just want to run actual server without docker or going through the hassle of building from source. **We've developed a CLI tool that does that, which we'll support going forward.** >[...] it will be as easy as installing one npm package and running it - **it should be roughly around 75MB in total**. Per @MickLesk's [directions here](https://github.com/community-scripts/ProxmoxVE/pull/3801#issuecomment-2838663873), please consider re-adding this useful open source project back to the script repository, now that maintaining it should be easier!
OVERLORD added the in project pipeline label 2026-02-04 22:06:39 +03:00
Author
Owner

@MickLesk commented on GitHub (May 5, 2025):

Need one or two testers, its hard to migrate the old state to new state. but i think it works

Please do an backup before, and test with this update statement:

bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/ct/actualbudget.sh)"
@MickLesk commented on GitHub (May 5, 2025): Need one or two testers, its hard to migrate the old state to new state. but i think it works Please do an backup before, and test with this update statement: ```bash bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/ct/actualbudget.sh)" ```
Author
Owner

@Rustymage commented on GitHub (May 5, 2025):

Need one or two testers, its hard to migrate the old state to new state. but i think it works

Please do an backup before, and test with this update statement:

bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/ct/actualbudget.sh)"

  ___        __              __   ____            __           __ 
   /   | _____/ /___  ______ _/ /  / __ )__  ______/ /___ ____  / /_
  / /| |/ ___/ __/ / / / __ `/ /  / __  / / / / __  / __ `/ _ \/ __/
 / ___ / /__/ /_/ /_/ / /_/ / /  / /_/ / /_/ / /_/ / /_/ /  __/ /_  
/_/  |_\___/\__/\__,_/\__,_/_/  /_____/\__,_/\__,_/\__, /\___/\__/  
                                                  /____/            

  ✔️   Node.js 22 already installed
⠙ Performing full migration to npm-based version (25.5.0).+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.+.....+.......+...+...+..+...+..........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*..+......+.........+..+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
.+...+...........+..................+...+...+.......+..+...+...+.......+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.........+...+......+...+..+...+......+...............+.......+...+.................+.........+.+..+..........+..+.+........+......+.+.........+.........+......+...+......+.........+.................+......+.......+.....+...+...+.+.........+.....+....+..+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*...........+.............+.........+.....................+......+........+.+.....+......+.+.................+......+....+..+.........+....+...+..
⠹ Performing full migration to npm-based version (25.5.0)++++++++++++++++++++++++++++++
-----
  ✔️   Migrated and started Actual Budget 25.5.0
  ✔️   Update done
root@actualbudget:~# 

Sync server failed.

root@actualbudget:/var/log# systemctl status actualbudget.service 
● actualbudget.service - Actual Budget Service
     Loaded: loaded (/etc/systemd/system/actualbudget.service; enabled; preset: enabled)
     Active: activating (auto-restart) (Result: exit-code) since Mon 2025-05-05 13:37:02 BST; 7s ago
    Process: 699 ExecStart=/usr/bin/actual-server --config /opt/actualbudget-data/config.json (code=exited, status=1/FAILURE)
   Main PID: 699 (code=exited, status=1/FAILURE)
        CPU: 304ms
@Rustymage commented on GitHub (May 5, 2025): > Need one or two testers, its hard to migrate the old state to new state. but i think it works > > Please do an backup before, and test with this update statement: > > ``` bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/ct/actualbudget.sh)" ___ __ __ ____ __ __ / | _____/ /___ ______ _/ / / __ )__ ______/ /___ ____ / /_ / /| |/ ___/ __/ / / / __ `/ / / __ / / / / __ / __ `/ _ \/ __/ / ___ / /__/ /_/ /_/ / /_/ / / / /_/ / /_/ / /_/ / /_/ / __/ /_ /_/ |_\___/\__/\__,_/\__,_/_/ /_____/\__,_/\__,_/\__, /\___/\__/ /____/ ✔️ Node.js 22 already installed ⠙ Performing full migration to npm-based version (25.5.0).+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.+.....+.......+...+...+..+...+..........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*..+......+.........+..+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .+...+...........+..................+...+...+.......+..+...+...+.......+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.........+...+......+...+..+...+......+...............+.......+...+.................+.........+.+..+..........+..+.+........+......+.+.........+.........+......+...+......+.........+.................+......+.......+.....+...+...+.+.........+.....+....+..+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*...........+.............+.........+.....................+......+........+.+.....+......+.+.................+......+....+..+.........+....+...+.. ⠹ Performing full migration to npm-based version (25.5.0)++++++++++++++++++++++++++++++ ----- ✔️ Migrated and started Actual Budget 25.5.0 ✔️ Update done root@actualbudget:~# ``` Sync server failed. ``` root@actualbudget:/var/log# systemctl status actualbudget.service ● actualbudget.service - Actual Budget Service Loaded: loaded (/etc/systemd/system/actualbudget.service; enabled; preset: enabled) Active: activating (auto-restart) (Result: exit-code) since Mon 2025-05-05 13:37:02 BST; 7s ago Process: 699 ExecStart=/usr/bin/actual-server --config /opt/actualbudget-data/config.json (code=exited, status=1/FAILURE) Main PID: 699 (code=exited, status=1/FAILURE) CPU: 304ms ```
Author
Owner

@MickLesk commented on GitHub (May 5, 2025):

can you execute this manually in terminal?

/usr/bin/actual-server --config /opt/actualbudget-data/config.json

@MickLesk commented on GitHub (May 5, 2025): can you execute this manually in terminal? /usr/bin/actual-server --config /opt/actualbudget-data/config.json
Author
Owner

@Rustymage commented on GitHub (May 5, 2025):

root@actualbudget:~# /usr/bin/actual-server --config /opt/actualbudget-data/config.json
Loading config from /opt/actualbudget-data/config.json
Using default data directory. You can specify a custom config with --config
Data directory: ./
Checking if there are any migrations to run for direction "up"...

/usr/lib/node_modules/@actual-app/sync-server/node_modules/better-sqlite3/lib/methods/wrappers.js:9
        this[cppdb].exec(sql);
                    ^
SqliteError: no such column: password
    at Database.exec (/usr/lib/node_modules/@actual-app/sync-server/node_modules/better-sqlite3/lib/methods/wrappers.js:9:14)
    at WrappedDatabase.exec (file:///usr/lib/node_modules/@actual-app/sync-server/src/db.js:30:20)
    at Migration.up (file:///usr/lib/node_modules/@actual-app/sync-server/migrations/1718889148000-openid.js:4:24)
    at next (/usr/lib/node_modules/@actual-app/sync-server/node_modules/migrate/lib/migrate.js:35:45)
    at /usr/lib/node_modules/@actual-app/sync-server/node_modules/migrate/lib/migrate.js:71:9
    at /usr/lib/node_modules/@actual-app/sync-server/node_modules/migrate/lib/set.js:84:5
    at FSReqCallback.oncomplete (node:fs:188:23) {
  code: 'SQLITE_ERROR'
}

Node.js v22.14.0
@Rustymage commented on GitHub (May 5, 2025): ``` root@actualbudget:~# /usr/bin/actual-server --config /opt/actualbudget-data/config.json Loading config from /opt/actualbudget-data/config.json Using default data directory. You can specify a custom config with --config Data directory: ./ Checking if there are any migrations to run for direction "up"... /usr/lib/node_modules/@actual-app/sync-server/node_modules/better-sqlite3/lib/methods/wrappers.js:9 this[cppdb].exec(sql); ^ SqliteError: no such column: password at Database.exec (/usr/lib/node_modules/@actual-app/sync-server/node_modules/better-sqlite3/lib/methods/wrappers.js:9:14) at WrappedDatabase.exec (file:///usr/lib/node_modules/@actual-app/sync-server/src/db.js:30:20) at Migration.up (file:///usr/lib/node_modules/@actual-app/sync-server/migrations/1718889148000-openid.js:4:24) at next (/usr/lib/node_modules/@actual-app/sync-server/node_modules/migrate/lib/migrate.js:35:45) at /usr/lib/node_modules/@actual-app/sync-server/node_modules/migrate/lib/migrate.js:71:9 at /usr/lib/node_modules/@actual-app/sync-server/node_modules/migrate/lib/set.js:84:5 at FSReqCallback.oncomplete (node:fs:188:23) { code: 'SQLITE_ERROR' } Node.js v22.14.0 ```
Author
Owner

@MickLesk commented on GitHub (May 5, 2025):

ehm... idk :D the sqlite is from actualbudget himself. Does other guys received the same issue?

(New Installation work fine?`)

@MickLesk commented on GitHub (May 5, 2025): ehm... idk :D the sqlite is from actualbudget himself. Does other guys received the same issue? (New Installation work fine?`)
Author
Owner

@tremor021 commented on GitHub (May 5, 2025):

Fresh install works fine here

@tremor021 commented on GitHub (May 5, 2025): Fresh install works fine here
Author
Owner

@chmsant commented on GitHub (May 5, 2025):

Update to existing LXC:

    ___        __              __   ____            __           __ 
   /   | _____/ /___  ______ _/ /  / __ )__  ______/ /___ ____  / /_
  / /| |/ ___/ __/ / / / __ `/ /  / __  / / / / __  / __ `/ _ \/ __/
 / ___ / /__/ /_/ /_/ / /_/ / /  / /_/ / /_/ / /_/ / /_/ /  __/ /_  
/_/  |_\___/\__/\__,_/\__,_/_/  /_____/\__,_/\__,_/\__, /\___/\__/  
                                                  /____/            

  ✔️   Node.js 22 already installed
npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported
npm warn deprecated are-we-there-yet@2.0.0: This package is no longer supported.
npm warn deprecated gauge@3.0.2: This package is no longer supported.
npm warn deprecated npmlog@5.0.1: This package is no longer supported.
npm warn deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported

added 280 packages in 25s

46 packages are looking for funding
  run `npm fund` for details
npm notice
npm notice New major version of npm available! 10.9.2 -> 11.3.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.3.0
npm notice To update run: npm install -g npm@11.3.0
npm notice
......+.......+...+...........+....+..+.........+...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*......+..+.+......+......+..+.+.....+.......+
⠇ Performing full migration to npm-based version (25.5.0)......+.......+........+......+.+.........+.....+...+.+..+.......+......+......+.....+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
.................+.....+.........+.+......+.....+.+..+...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*...+......+..........+..+....+......+........+.+.....+.++++++++++++++++++++++++++++++++++++++++++++++++++++
⠏ Performing full migration to npm-based version (25.5.0)........+..............+....+.....+......+...............+................+...+.....+...+...............+....+...+.................+....+......+...........+..........+...+..
⠋ Performing full migration to npm-based version (25.5.0)+..........+...+.........+.....+.+.....+....+...+...+..+...+......+..........+......+..+.+..+....+...+........+.........+....+..+..........+..+...............+...+....+.....
⠙ Performing full migration to npm-based version (25.5.0)...+.+........+......+.........+......+.+..................+............+.........+.........+...+.....+....+...+......+..+..................+.+......+..+......+.+......+....
⠹ Performing full migration to npm-based version (25.5.0)+++++++++++++++++++++++++++++++++++++++++++++++++++++
-----
  ✔️   Migrated and started Actual Budget 25.5.0
  ✔️   Update done

But like Rustymage, the service seems to have errored:

root@actualbudget:~# systemctl status actualbudget.service
● actualbudget.service - Actual Budget Service
     Loaded: loaded (/etc/systemd/system/actualbudget.service; enabled; preset: enabled)
     Active: activating (auto-restart) (Result: exit-code) since Mon 2025-05-05 06:43:17 PDT; 1s ago
    Process: 5773 ExecStart=/usr/bin/actual-server --config /opt/actualbudget-data/config.json (code=exited, status=1/FAILURE)
   Main PID: 5773 (code=exited, status=1/FAILURE)
        CPU: 357ms
root@actualbudget:~# 

Running your next suggested command above results in the same final state as Rustymage as well

root@actualbudget:~# /usr/bin/actual-server --config /opt/actualbudget-data/config.json
Loading config from /opt/actualbudget-data/config.json
Using default data directory. You can specify a custom config with --config
Data directory: ./
Checking if there are any migrations to run for direction "up"...

/usr/lib/node_modules/@actual-app/sync-server/node_modules/better-sqlite3/lib/methods/wrappers.js:9
        this[cppdb].exec(sql);
                    ^
SqliteError: no such column: password
    at Database.exec (/usr/lib/node_modules/@actual-app/sync-server/node_modules/better-sqlite3/lib/methods/wrappers.js:9:14)
    at WrappedDatabase.exec (file:///usr/lib/node_modules/@actual-app/sync-server/src/db.js:30:20)
    at Migration.up (file:///usr/lib/node_modules/@actual-app/sync-server/migrations/1718889148000-openid.js:4:24)
    at next (/usr/lib/node_modules/@actual-app/sync-server/node_modules/migrate/lib/migrate.js:35:45)
    at /usr/lib/node_modules/@actual-app/sync-server/node_modules/migrate/lib/migrate.js:71:9
    at /usr/lib/node_modules/@actual-app/sync-server/node_modules/migrate/lib/set.js:84:5
    at FSReqCallback.oncomplete (node:fs:188:23) {
  code: 'SQLITE_ERROR'
}

Node.js v22.14.0

Fresh install works fine here

+1, another confirmation that fresh install appears to be functional

@chmsant commented on GitHub (May 5, 2025): Update to existing LXC: ``` ___ __ __ ____ __ __ / | _____/ /___ ______ _/ / / __ )__ ______/ /___ ____ / /_ / /| |/ ___/ __/ / / / __ `/ / / __ / / / / __ / __ `/ _ \/ __/ / ___ / /__/ /_/ /_/ / /_/ / / / /_/ / /_/ / /_/ / /_/ / __/ /_ /_/ |_\___/\__/\__,_/\__,_/_/ /_____/\__,_/\__,_/\__, /\___/\__/ /____/ ✔️ Node.js 22 already installed npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported npm warn deprecated are-we-there-yet@2.0.0: This package is no longer supported. npm warn deprecated gauge@3.0.2: This package is no longer supported. npm warn deprecated npmlog@5.0.1: This package is no longer supported. npm warn deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported added 280 packages in 25s 46 packages are looking for funding run `npm fund` for details npm notice npm notice New major version of npm available! 10.9.2 -> 11.3.0 npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.3.0 npm notice To update run: npm install -g npm@11.3.0 npm notice ......+.......+...+...........+....+..+.........+...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*......+..+.+......+......+..+.+.....+.......+ ⠇ Performing full migration to npm-based version (25.5.0)......+.......+........+......+.+.........+.....+...+.+..+.......+......+......+.....+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .................+.....+.........+.+......+.....+.+..+...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*...+......+..........+..+....+......+........+.+.....+.++++++++++++++++++++++++++++++++++++++++++++++++++++ ⠏ Performing full migration to npm-based version (25.5.0)........+..............+....+.....+......+...............+................+...+.....+...+...............+....+...+.................+....+......+...........+..........+...+.. ⠋ Performing full migration to npm-based version (25.5.0)+..........+...+.........+.....+.+.....+....+...+...+..+...+......+..........+......+..+.+..+....+...+........+.........+....+..+..........+..+...............+...+....+..... ⠙ Performing full migration to npm-based version (25.5.0)...+.+........+......+.........+......+.+..................+............+.........+.........+...+.....+....+...+......+..+..................+.+......+..+......+.+......+.... ⠹ Performing full migration to npm-based version (25.5.0)+++++++++++++++++++++++++++++++++++++++++++++++++++++ ----- ✔️ Migrated and started Actual Budget 25.5.0 ✔️ Update done ``` But like Rustymage, the service seems to have errored: ``` root@actualbudget:~# systemctl status actualbudget.service ● actualbudget.service - Actual Budget Service Loaded: loaded (/etc/systemd/system/actualbudget.service; enabled; preset: enabled) Active: activating (auto-restart) (Result: exit-code) since Mon 2025-05-05 06:43:17 PDT; 1s ago Process: 5773 ExecStart=/usr/bin/actual-server --config /opt/actualbudget-data/config.json (code=exited, status=1/FAILURE) Main PID: 5773 (code=exited, status=1/FAILURE) CPU: 357ms root@actualbudget:~# ``` Running your next suggested command above results in the same final state as Rustymage as well ``` root@actualbudget:~# /usr/bin/actual-server --config /opt/actualbudget-data/config.json Loading config from /opt/actualbudget-data/config.json Using default data directory. You can specify a custom config with --config Data directory: ./ Checking if there are any migrations to run for direction "up"... /usr/lib/node_modules/@actual-app/sync-server/node_modules/better-sqlite3/lib/methods/wrappers.js:9 this[cppdb].exec(sql); ^ SqliteError: no such column: password at Database.exec (/usr/lib/node_modules/@actual-app/sync-server/node_modules/better-sqlite3/lib/methods/wrappers.js:9:14) at WrappedDatabase.exec (file:///usr/lib/node_modules/@actual-app/sync-server/src/db.js:30:20) at Migration.up (file:///usr/lib/node_modules/@actual-app/sync-server/migrations/1718889148000-openid.js:4:24) at next (/usr/lib/node_modules/@actual-app/sync-server/node_modules/migrate/lib/migrate.js:35:45) at /usr/lib/node_modules/@actual-app/sync-server/node_modules/migrate/lib/migrate.js:71:9 at /usr/lib/node_modules/@actual-app/sync-server/node_modules/migrate/lib/set.js:84:5 at FSReqCallback.oncomplete (node:fs:188:23) { code: 'SQLITE_ERROR' } Node.js v22.14.0 ``` > Fresh install works fine here +1, another confirmation that fresh install appears to be functional
Author
Owner

@MickLesk commented on GitHub (May 5, 2025):

The question is whether we offer migration.

Does the app offer an export/import option? So would it be acceptable for you to create a new LXC?

@MickLesk commented on GitHub (May 5, 2025): The question is whether we offer migration. Does the app offer an export/import option? So would it be acceptable for you to create a new LXC?
Author
Owner

@tremor021 commented on GitHub (May 5, 2025):

I'm talking to AB people on their discord about this @MickLesk

@tremor021 commented on GitHub (May 5, 2025): I'm talking to AB people on their discord about this @MickLesk
Author
Owner

@MickLesk commented on GitHub (May 5, 2025):

ive added an testing bugfix. can anyone try again? (with new snapshot of old install)

@MickLesk commented on GitHub (May 5, 2025): ive added an testing bugfix. can anyone try again? (with new snapshot of old install)
Author
Owner

@chmsant commented on GitHub (May 5, 2025):

New error upgrading from an existing LXC running 25.4.0

    ___        __              __   ____            __           __ 
   /   | _____/ /___  ______ _/ /  / __ )__  ______/ /___ ____  / /_
  / /| |/ ___/ __/ / / / __ `/ /  / __  / / / / __  / __ `/ _ \/ __/
 / ___ / /__/ /_/ /_/ / /_/ / /  / /_/ / /_/ / /_/ / /_/ /  __/ /_  
/_/  |_\___/\__/\__,_/\__,_/_/  /_____/\__,_/\__,_/\__, /\___/\__/  
                                                  /____/            

  ✔️   Node.js 22 already installed
⠋ Performing full migration to npm-based version (25.5.0)mv: cannot move '/opt/actualbudget_bak/selfhost.key' to '/opt/actualbudget/selfhost.key': No such file or directory
⠙ Performing full migration to npm-based version (25.5.0)
[ERROR] in line 66: exit code 0: while executing command mv /opt/actualbudget_bak/selfhost.key /opt/actualbudget/selfhost.key
root@actualbudget:/opt/actualbudget_bak# ls
bin              demo.png            eslint.config.mjs  package.json  selfhost.crt            tsconfig.json
CONTRIBUTING.md  docker-compose.yml  LICENSE.txt        packages      **selfhost.key**            upcoming-release-notes
data             Dockerfile          node_modules       README.md     sync-server.Dockerfile  yarn.lock
root@actualbudget:/opt/actualbudget_bak# 

Missing the new actualbudget folder under /opt?

root@actualbudget:/opt# ls
actualbudget_bak  actualbudget-data  actualbudget_version.txt
@chmsant commented on GitHub (May 5, 2025): New error upgrading from an existing LXC running 25.4.0 ``` ___ __ __ ____ __ __ / | _____/ /___ ______ _/ / / __ )__ ______/ /___ ____ / /_ / /| |/ ___/ __/ / / / __ `/ / / __ / / / / __ / __ `/ _ \/ __/ / ___ / /__/ /_/ /_/ / /_/ / / / /_/ / /_/ / /_/ / /_/ / __/ /_ /_/ |_\___/\__/\__,_/\__,_/_/ /_____/\__,_/\__,_/\__, /\___/\__/ /____/ ✔️ Node.js 22 already installed ⠋ Performing full migration to npm-based version (25.5.0)mv: cannot move '/opt/actualbudget_bak/selfhost.key' to '/opt/actualbudget/selfhost.key': No such file or directory ⠙ Performing full migration to npm-based version (25.5.0) [ERROR] in line 66: exit code 0: while executing command mv /opt/actualbudget_bak/selfhost.key /opt/actualbudget/selfhost.key ``` ``` root@actualbudget:/opt/actualbudget_bak# ls bin demo.png eslint.config.mjs package.json selfhost.crt tsconfig.json CONTRIBUTING.md docker-compose.yml LICENSE.txt packages **selfhost.key** upcoming-release-notes data Dockerfile node_modules README.md sync-server.Dockerfile yarn.lock root@actualbudget:/opt/actualbudget_bak# ``` Missing the new actualbudget folder under /opt? ``` root@actualbudget:/opt# ls actualbudget_bak actualbudget-data actualbudget_version.txt ```
Author
Owner

@MickLesk commented on GitHub (May 5, 2025):

No new folder, its an NPM package

Your Install is old, without certs?

@MickLesk commented on GitHub (May 5, 2025): No new folder, its an NPM package Your Install is old, without certs?
Author
Owner

@chmsant commented on GitHub (May 5, 2025):

No new folder, its an NPM package

Your Install is old, without certs?

Nope, this was from a fresh LXC install back in late March, after the certs functionality was added.

@chmsant commented on GitHub (May 5, 2025): > No new folder, its an NPM package > > Your Install is old, without certs? Nope, this was from a fresh LXC install back in late March, after the certs functionality was added.
Author
Owner

@MickLesk commented on GitHub (May 5, 2025):

I remove the Check, try again

@MickLesk commented on GitHub (May 5, 2025): I remove the Check, try again
Author
Owner

@jeffguillaume commented on GitHub (May 5, 2025):

Maybe it would be best to go with a fresh container & backup/restore strategy, considering the much lower requirements for the sync server in NPM package form (since there won't be any code building involved anymore; I had to increase the RAM in my container from 2GB to 4GB last update, and storage space from 4GB to 8GB).

@jeffguillaume commented on GitHub (May 5, 2025): Maybe it would be best to go with a fresh container & backup/restore strategy, considering the much lower requirements for the sync server in NPM package form (since there won't be any code building involved anymore; I had to increase the RAM in my container from 2GB to 4GB last update, and storage space from 4GB to 8GB).
Author
Owner

@chmsant commented on GitHub (May 5, 2025):

I remove the Check, try again

Errors persist

    ___        __              __   ____            __           __ 
   /   | _____/ /___  ______ _/ /  / __ )__  ______/ /___ ____  / /_
  / /| |/ ___/ __/ / / / __ `/ /  / __  / / / / __  / __ `/ _ \/ __/
 / ___ / /__/ /_/ /_/ / /_/ / /  / /_/ / /_/ / /_/ / /_/ /  __/ /_  
/_/  |_\___/\__/\__,_/\__,_/_/  /_____/\__,_/\__,_/\__, /\___/\__/  
                                                  /____/            

  ✔️   Node.js 22 already installed
npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported
npm warn deprecated are-we-there-yet@2.0.0: This package is no longer supported.
npm warn deprecated npmlog@5.0.1: This package is no longer supported.
npm warn deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported
npm warn deprecated gauge@3.0.2: This package is no longer supported.

added 280 packages in 29s

46 packages are looking for funding
  run `npm fund` for details
npm notice
npm notice New major version of npm available! 10.9.2 -> 11.3.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.3.0
npm notice To update run: npm install -g npm@11.3.0
npm notice
⠦ Performing full migration to npm-based version (25.5.0)....+.+.....+...+................+........+.......+...+........+....+...+...........+......+...+.+......+.....+.........+.+...+..+....+.........+..+.............+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.....+.+..............+.......+......+..+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.+...+............+....+...+...+.....+.......
⠧ Performing full migration to npm-based version (25.5.0)..+.....+......+.+......+.....+...+.......+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*...+...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.....
⠇ Performing full migration to npm-based version (25.5.0)..+....+.................+.........+...+.+......+...+.....+...+..........+...+.....+.+...........+....+......+........+......+......+...+.........+.......+........+.............+..+...............+......+.+........+......+.+.........
⠏ Performing full migration to npm-based version (25.5.0)+....+......+...+......+.....+...+.............+........+.........+.............+.....+.............+..+.......+..+....+............+..+......+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
⠋ Performing full migration to npm-based version (25.5.0)-----
  ✔️   Migrated and started Actual Budget 25.5.0
  ✔️   Update done
root@actualbudget:~# systemctl status actualbudget
● actualbudget.service - Actual Budget Service
     Loaded: loaded (/etc/systemd/system/actualbudget.service; enabled; preset: enabled)
     Active: activating (auto-restart) (Result: exit-code) since Mon 2025-05-05 11:04:48 PDT; 22ms ago
    Process: 847 ExecStart=/usr/bin/actual-server --config /opt/actualbudget-data/config.json (code=exited, status=1/FAILURE)
   Main PID: 847 (code=exited, status=1/FAILURE)
        CPU: 361ms
root@actualbudget:~# /usr/bin/actual-server --config /opt/actualbudget-data/config.json
Loading config from /opt/actualbudget-data/config.json
Using default data directory. You can specify a custom config with --config
Data directory: ./
Checking if there are any migrations to run for direction "up"...

/usr/lib/node_modules/@actual-app/sync-server/node_modules/better-sqlite3/lib/methods/wrappers.js:9
        this[cppdb].exec(sql);
                    ^
SqliteError: no such column: password
    at Database.exec (/usr/lib/node_modules/@actual-app/sync-server/node_modules/better-sqlite3/lib/methods/wrappers.js:9:14)
    at WrappedDatabase.exec (file:///usr/lib/node_modules/@actual-app/sync-server/src/db.js:30:20)
    at Migration.up (file:///usr/lib/node_modules/@actual-app/sync-server/migrations/1718889148000-openid.js:4:24)
    at next (/usr/lib/node_modules/@actual-app/sync-server/node_modules/migrate/lib/migrate.js:35:45)
    at /usr/lib/node_modules/@actual-app/sync-server/node_modules/migrate/lib/migrate.js:71:9
    at /usr/lib/node_modules/@actual-app/sync-server/node_modules/migrate/lib/set.js:84:5
    at FSReqCallback.oncomplete (node:fs:188:23) {
  code: 'SQLITE_ERROR'
}

Node.js v22.14.0

Maybe it would be best to go with a fresh container & backup/restore strategy, considering the much lower requirements for the sync server in NPM package form (since there won't be any code building involved anymore; I had to increase the RAM in my container from 2GB to 4GB last update, and storage space from 4GB to 8GB).

We've all had to re-instantiate these LXCs a handful of times in the last few months. One more time probably wouldn't hurt, especially if there is a desire to shrink resource allocations back down.

@chmsant commented on GitHub (May 5, 2025): > I remove the Check, try again Errors persist ``` ___ __ __ ____ __ __ / | _____/ /___ ______ _/ / / __ )__ ______/ /___ ____ / /_ / /| |/ ___/ __/ / / / __ `/ / / __ / / / / __ / __ `/ _ \/ __/ / ___ / /__/ /_/ /_/ / /_/ / / / /_/ / /_/ / /_/ / /_/ / __/ /_ /_/ |_\___/\__/\__,_/\__,_/_/ /_____/\__,_/\__,_/\__, /\___/\__/ /____/ ✔️ Node.js 22 already installed npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported npm warn deprecated are-we-there-yet@2.0.0: This package is no longer supported. npm warn deprecated npmlog@5.0.1: This package is no longer supported. npm warn deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported npm warn deprecated gauge@3.0.2: This package is no longer supported. added 280 packages in 29s 46 packages are looking for funding run `npm fund` for details npm notice npm notice New major version of npm available! 10.9.2 -> 11.3.0 npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.3.0 npm notice To update run: npm install -g npm@11.3.0 npm notice ⠦ Performing full migration to npm-based version (25.5.0)....+.+.....+...+................+........+.......+...+........+....+...+...........+......+...+.+......+.....+.........+.+...+..+....+.........+..+.............+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.....+.+..............+.......+......+..+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.+...+............+....+...+...+.....+....... ⠧ Performing full migration to npm-based version (25.5.0)..+.....+......+.+......+.....+...+.......+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*...+...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*..... ⠇ Performing full migration to npm-based version (25.5.0)..+....+.................+.........+...+.+......+...+.....+...+..........+...+.....+.+...........+....+......+........+......+......+...+.........+.......+........+.............+..+...............+......+.+........+......+.+......... ⠏ Performing full migration to npm-based version (25.5.0)+....+......+...+......+.....+...+.............+........+.........+.............+.....+.............+..+.......+..+....+............+..+......+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ⠋ Performing full migration to npm-based version (25.5.0)----- ✔️ Migrated and started Actual Budget 25.5.0 ✔️ Update done ``` ``` root@actualbudget:~# systemctl status actualbudget ● actualbudget.service - Actual Budget Service Loaded: loaded (/etc/systemd/system/actualbudget.service; enabled; preset: enabled) Active: activating (auto-restart) (Result: exit-code) since Mon 2025-05-05 11:04:48 PDT; 22ms ago Process: 847 ExecStart=/usr/bin/actual-server --config /opt/actualbudget-data/config.json (code=exited, status=1/FAILURE) Main PID: 847 (code=exited, status=1/FAILURE) CPU: 361ms ``` ``` root@actualbudget:~# /usr/bin/actual-server --config /opt/actualbudget-data/config.json Loading config from /opt/actualbudget-data/config.json Using default data directory. You can specify a custom config with --config Data directory: ./ Checking if there are any migrations to run for direction "up"... /usr/lib/node_modules/@actual-app/sync-server/node_modules/better-sqlite3/lib/methods/wrappers.js:9 this[cppdb].exec(sql); ^ SqliteError: no such column: password at Database.exec (/usr/lib/node_modules/@actual-app/sync-server/node_modules/better-sqlite3/lib/methods/wrappers.js:9:14) at WrappedDatabase.exec (file:///usr/lib/node_modules/@actual-app/sync-server/src/db.js:30:20) at Migration.up (file:///usr/lib/node_modules/@actual-app/sync-server/migrations/1718889148000-openid.js:4:24) at next (/usr/lib/node_modules/@actual-app/sync-server/node_modules/migrate/lib/migrate.js:35:45) at /usr/lib/node_modules/@actual-app/sync-server/node_modules/migrate/lib/migrate.js:71:9 at /usr/lib/node_modules/@actual-app/sync-server/node_modules/migrate/lib/set.js:84:5 at FSReqCallback.oncomplete (node:fs:188:23) { code: 'SQLITE_ERROR' } Node.js v22.14.0 ``` > Maybe it would be best to go with a fresh container & backup/restore strategy, considering the much lower requirements for the sync server in NPM package form (since there won't be any code building involved anymore; I had to increase the RAM in my container from 2GB to 4GB last update, and storage space from 4GB to 8GB). We've all had to re-instantiate these LXCs a handful of times in the last few months. One more time probably wouldn't hurt, especially if there is a desire to shrink resource allocations back down.
Author
Owner

@MickLesk commented on GitHub (May 5, 2025):

Has this Tool an Backup / Export Option? I never used it (except briefly in script tests)

@MickLesk commented on GitHub (May 5, 2025): Has this Tool an Backup / Export Option? I never used it (except briefly in script tests)
Author
Owner

@chmsant commented on GitHub (May 5, 2025):

Has this Tool an Backup / Export Option? I never used it (except briefly in script tests)

Yes, there is a native export capability. If users are also using one of the supported fintech platforms for auto-import of transactions, they may need to re-link those accounts in addition to just importing the data backup, but it's fairly straightforward and well documented on ActualBudget's own help site.

@chmsant commented on GitHub (May 5, 2025): > Has this Tool an Backup / Export Option? I never used it (except briefly in script tests) Yes, there is a native export capability. If users are also using one of the supported fintech platforms for auto-import of transactions, they may need to re-link those accounts in addition to just importing the data backup, but it's fairly straightforward and well documented on ActualBudget's own help site.
Author
Owner

@tremor021 commented on GitHub (May 5, 2025):

If users can export their data and import it without issues into cli tool version, it would be awesome.

@tremor021 commented on GitHub (May 5, 2025): If users can export their data and import it without issues into cli tool version, it would be awesome.
Author
Owner

@jeffguillaume commented on GitHub (May 6, 2025):

Did a migration update and it looks good on the surface.

    ___        __              __   ____            __           __
   /   | _____/ /___  ______ _/ /  / __ )__  ______/ /___ ____  / /_
  / /| |/ ___/ __/ / / / __ `/ /  / __  / / / / __  / __ `/ _ \/ __/
 / ___ / /__/ /_/ /_/ / /_/ / /  / /_/ / /_/ / /_/ / /_/ /  __/ /_
/_/  |_\___/\__/\__,_/\__,_/_/  /_____/\__,_/\__,_/\__, /\___/\__/
                                                  /____/

  ✔️   Node.js 22 already installed
npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported
npm warn deprecated gauge@3.0.2: This package is no longer supported.
npm warn deprecated are-we-there-yet@2.0.0: This package is no longer supported.
npm warn deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported
npm warn deprecated npmlog@5.0.1: This package is no longer supported.

added 280 packages in 21s

46 packages are looking for funding
  run `npm fund` for details
⠹ Performing full migration to npm-based version (25.5.0)........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*...+.+.....+................+...+..+.+........+.+...........+...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.+........................+...+.........+......+..........+..............+.+.....+.......+..+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
...+..+.......+.....+.+..+....+.........+......+...+...+........+....+...+..+.................................+...+.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*...............+....+........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.+..........+..+...+....+.........+...........+.+..+...+....+...+.....+...+.......+......+.....+...........................+...+......+...+......+....+..+.+...+.....+....+.....+...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-----
  ✔️   Migrated and started Actual Budget 25.5.0
  ✔️   Update done
root@actualbudget:~#

But the startup problem with sqlite is present for me:

root@actualbudget:~# systemctl status actualbudget
● actualbudget.service - Actual Budget Service
     Loaded: loaded (/etc/systemd/system/actualbudget.service; enabled; preset: enabled)
     Active: activating (auto-restart) (Result: exit-code) since Mon 2025-05-05 19:23:13 EDT; 2s ago
    Process: 38336 ExecStart=/usr/bin/actual-server --config /opt/actualbudget-data/config.json (code=exited, status=1/FAILURE)
   Main PID: 38336 (code=exited, status=1/FAILURE)
        CPU: 160ms

root@actualbudget:~# /usr/bin/actual-server --config /opt/actualbudget-data/config.json
Loading config from /opt/actualbudget-data/config.json
Using default data directory. You can specify a custom config with --config
Data directory: ./
Checking if there are any migrations to run for direction "up"...

/usr/lib/node_modules/@actual-app/sync-server/node_modules/better-sqlite3/lib/methods/wrappers.js:9
        this[cppdb].exec(sql);
                    ^
SqliteError: no such column: password
    at Database.exec (/usr/lib/node_modules/@actual-app/sync-server/node_modules/better-sqlite3/lib/methods/wrappers.js:9:14)
    at WrappedDatabase.exec (file:///usr/lib/node_modules/@actual-app/sync-server/src/db.js:30:20)
    at Migration.up (file:///usr/lib/node_modules/@actual-app/sync-server/migrations/1718889148000-openid.js:4:24)
    at next (/usr/lib/node_modules/@actual-app/sync-server/node_modules/migrate/lib/migrate.js:35:45)
    at /usr/lib/node_modules/@actual-app/sync-server/node_modules/migrate/lib/migrate.js:71:9
    at /usr/lib/node_modules/@actual-app/sync-server/node_modules/migrate/lib/set.js:84:5
    at FSReqCallback.oncomplete (node:fs:188:23) {
  code: 'SQLITE_ERROR'
}

Node.js v22.15.0
@jeffguillaume commented on GitHub (May 6, 2025): Did a migration update and it looks good on the surface. ``` ___ __ __ ____ __ __ / | _____/ /___ ______ _/ / / __ )__ ______/ /___ ____ / /_ / /| |/ ___/ __/ / / / __ `/ / / __ / / / / __ / __ `/ _ \/ __/ / ___ / /__/ /_/ /_/ / /_/ / / / /_/ / /_/ / /_/ / /_/ / __/ /_ /_/ |_\___/\__/\__,_/\__,_/_/ /_____/\__,_/\__,_/\__, /\___/\__/ /____/ ✔️ Node.js 22 already installed npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported npm warn deprecated gauge@3.0.2: This package is no longer supported. npm warn deprecated are-we-there-yet@2.0.0: This package is no longer supported. npm warn deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported npm warn deprecated npmlog@5.0.1: This package is no longer supported. added 280 packages in 21s 46 packages are looking for funding run `npm fund` for details ⠹ Performing full migration to npm-based version (25.5.0)........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*...+.+.....+................+...+..+.+........+.+...........+...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.+........................+...+.........+......+..........+..............+.+.....+.......+..+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ...+..+.......+.....+.+..+....+.........+......+...+...+........+....+...+..+.................................+...+.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*...............+....+........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.+..........+..+...+....+.........+...........+.+..+...+....+...+.....+...+.......+......+.....+...........................+...+......+...+......+....+..+.+...+.....+....+.....+...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ----- ✔️ Migrated and started Actual Budget 25.5.0 ✔️ Update done root@actualbudget:~# ``` But the startup problem with `sqlite` is present for me: ``` root@actualbudget:~# systemctl status actualbudget ● actualbudget.service - Actual Budget Service Loaded: loaded (/etc/systemd/system/actualbudget.service; enabled; preset: enabled) Active: activating (auto-restart) (Result: exit-code) since Mon 2025-05-05 19:23:13 EDT; 2s ago Process: 38336 ExecStart=/usr/bin/actual-server --config /opt/actualbudget-data/config.json (code=exited, status=1/FAILURE) Main PID: 38336 (code=exited, status=1/FAILURE) CPU: 160ms root@actualbudget:~# /usr/bin/actual-server --config /opt/actualbudget-data/config.json Loading config from /opt/actualbudget-data/config.json Using default data directory. You can specify a custom config with --config Data directory: ./ Checking if there are any migrations to run for direction "up"... /usr/lib/node_modules/@actual-app/sync-server/node_modules/better-sqlite3/lib/methods/wrappers.js:9 this[cppdb].exec(sql); ^ SqliteError: no such column: password at Database.exec (/usr/lib/node_modules/@actual-app/sync-server/node_modules/better-sqlite3/lib/methods/wrappers.js:9:14) at WrappedDatabase.exec (file:///usr/lib/node_modules/@actual-app/sync-server/src/db.js:30:20) at Migration.up (file:///usr/lib/node_modules/@actual-app/sync-server/migrations/1718889148000-openid.js:4:24) at next (/usr/lib/node_modules/@actual-app/sync-server/node_modules/migrate/lib/migrate.js:35:45) at /usr/lib/node_modules/@actual-app/sync-server/node_modules/migrate/lib/migrate.js:71:9 at /usr/lib/node_modules/@actual-app/sync-server/node_modules/migrate/lib/set.js:84:5 at FSReqCallback.oncomplete (node:fs:188:23) { code: 'SQLITE_ERROR' } Node.js v22.15.0 ```
Author
Owner

@MickLesk commented on GitHub (May 6, 2025):

Then i remove the Migration. You need to Referate the container

its removed. should not be work now. so can i push it into live

@MickLesk commented on GitHub (May 6, 2025): Then i remove the Migration. You need to Referate the container its removed. should not be work now. so can i push it into live
Author
Owner

@jeffguillaume commented on GitHub (May 6, 2025):

Thank you @MickLesk for working on the migration script. (It almost worked perfectly!)

I had one final problem overnight that took me way too long to figure out:

When using a reverse proxy, SSL certificates do not need to be created for ActualBudget, and when using caddy in particular they must not be specified in the config.json file or else caddy will not proxy the site (because it doesn't trust the self-signed certificates by default), causing a 502 gateway error.

Once I removed the entire HTTPS section from config.json, it started proxying through caddy correctly.

From

{
  "port": 5006,
  "hostname": "::",
  "serverFiles": "/opt/actualbudget-data/server-files",
  "userFiles": "/opt/actualbudget-data/user-files",
  "trustedProxies": [
    "10.0.0.0/8",
    "172.16.0.0/12",
    "192.168.0.0/16",
    "127.0.0.1/32",
    "::1/128",
    "fc00::/7"
  ],
  "https": {
    "key": "/opt/actualbudget/selfhost.key",
    "cert": "/opt/actualbudget/selfhost.crt"
  }
}

to

{
  "port": 5006,
  "hostname": "::",
  "serverFiles": "/opt/actualbudget-data/server-files",
  "userFiles": "/opt/actualbudget-data/user-files",
  "trustedProxies": [
    "10.0.0.0/8",
    "172.16.0.0/12",
    "192.168.0.0/16",
    "127.0.0.1/32",
    "::1/128",
    "fc00::/7"
  ]
}
@jeffguillaume commented on GitHub (May 6, 2025): Thank you @MickLesk for working on the migration script. (It almost worked perfectly!) I had one final problem overnight that took me way too long to figure out: When using a reverse proxy, SSL certificates do not need to be created for ActualBudget, and when using `caddy` in particular they **must not be specified** in the `config.json` file or else `caddy` will not proxy the site (because it doesn't trust the self-signed certificates by default), causing a 502 gateway error. Once I removed the entire HTTPS section from `config.json`, it started proxying through `caddy` correctly. From ``` { "port": 5006, "hostname": "::", "serverFiles": "/opt/actualbudget-data/server-files", "userFiles": "/opt/actualbudget-data/user-files", "trustedProxies": [ "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16", "127.0.0.1/32", "::1/128", "fc00::/7" ], "https": { "key": "/opt/actualbudget/selfhost.key", "cert": "/opt/actualbudget/selfhost.crt" } } ``` to ``` { "port": 5006, "hostname": "::", "serverFiles": "/opt/actualbudget-data/server-files", "userFiles": "/opt/actualbudget-data/user-files", "trustedProxies": [ "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16", "127.0.0.1/32", "::1/128", "fc00::/7" ] } ```
Author
Owner

@MickLesk commented on GitHub (May 6, 2025):

thats maybe an guide, because our script doesnt serve caddy, its the "default" setup

@MickLesk commented on GitHub (May 6, 2025): thats maybe an guide, because our script doesnt serve caddy, its the "default" setup
Author
Owner

@jeffguillaume commented on GitHub (May 6, 2025):

Yes, I just wanted to document it to try to help the next person save some time and confusion.

@jeffguillaume commented on GitHub (May 6, 2025): Yes, I just wanted to document it to try to help the next person save some time and confusion.
Author
Owner

@tremor021 commented on GitHub (May 6, 2025):

Thank you @MickLesk for working on the migration script. (It almost worked perfectly!)

I had one final problem overnight that took me way too long to figure out:

When using a reverse proxy, SSL certificates do not need to be created for ActualBudget, and when using caddy in particular they must not be specified in the config.json file or else caddy will not proxy the site (because it doesn't trust the self-signed certificates by default), causing a 502 gateway error.

Once I removed the entire HTTPS section from config.json, it started proxying through caddy correctly.

From

{
  "port": 5006,
  "hostname": "::",
  "serverFiles": "/opt/actualbudget-data/server-files",
  "userFiles": "/opt/actualbudget-data/user-files",
  "trustedProxies": [
    "10.0.0.0/8",
    "172.16.0.0/12",
    "192.168.0.0/16",
    "127.0.0.1/32",
    "::1/128",
    "fc00::/7"
  ],
  "https": {
    "key": "/opt/actualbudget/selfhost.key",
    "cert": "/opt/actualbudget/selfhost.crt"
  }
}

to

{
  "port": 5006,
  "hostname": "::",
  "serverFiles": "/opt/actualbudget-data/server-files",
  "userFiles": "/opt/actualbudget-data/user-files",
  "trustedProxies": [
    "10.0.0.0/8",
    "172.16.0.0/12",
    "192.168.0.0/16",
    "127.0.0.1/32",
    "::1/128",
    "fc00::/7"
  ]
}

Also, this isn't a issue for the script. This is a user preference, so you should configure as you see fit. We can't possibly cover every single use case of the app. Our scripts are there to make the apps install/build and run. Configuration is completely up to the user.

@tremor021 commented on GitHub (May 6, 2025): > Thank you [@MickLesk](https://github.com/MickLesk) for working on the migration script. (It almost worked perfectly!) > > I had one final problem overnight that took me way too long to figure out: > > When using a reverse proxy, SSL certificates do not need to be created for ActualBudget, and when using `caddy` in particular they **must not be specified** in the `config.json` file or else `caddy` will not proxy the site (because it doesn't trust the self-signed certificates by default), causing a 502 gateway error. > > Once I removed the entire HTTPS section from `config.json`, it started proxying through `caddy` correctly. > > From > > ``` > { > "port": 5006, > "hostname": "::", > "serverFiles": "/opt/actualbudget-data/server-files", > "userFiles": "/opt/actualbudget-data/user-files", > "trustedProxies": [ > "10.0.0.0/8", > "172.16.0.0/12", > "192.168.0.0/16", > "127.0.0.1/32", > "::1/128", > "fc00::/7" > ], > "https": { > "key": "/opt/actualbudget/selfhost.key", > "cert": "/opt/actualbudget/selfhost.crt" > } > } > ``` > > to > > ``` > { > "port": 5006, > "hostname": "::", > "serverFiles": "/opt/actualbudget-data/server-files", > "userFiles": "/opt/actualbudget-data/user-files", > "trustedProxies": [ > "10.0.0.0/8", > "172.16.0.0/12", > "192.168.0.0/16", > "127.0.0.1/32", > "::1/128", > "fc00::/7" > ] > } > ``` Also, this isn't a issue for the script. This is a user preference, so you should configure as you see fit. We can't possibly cover every single use case of the app. Our scripts are there to make the apps install/build and run. Configuration is completely up to the user.
Author
Owner

@jeffguillaume commented on GitHub (May 6, 2025):

Might it be possible to add a simple yes/no question to the install script, "Acquire and configure HTTPS certificates?" and then it could be easily skipped or completed, as desired, during install...?

Just an idea.

@jeffguillaume commented on GitHub (May 6, 2025): Might it be possible to add a simple yes/no question to the install script, "Acquire and configure HTTPS certificates?" and then it could be easily skipped or completed, as desired, during install...? Just an idea.
Author
Owner

@facutopa commented on GitHub (May 7, 2025):

Guys, sorry I just see this issue. I tried the script without Actualbudget installed and this happen:

Image

@facutopa commented on GitHub (May 7, 2025): Guys, sorry I just see this issue. I tried the script without Actualbudget installed and this happen: ![Image](https://github.com/user-attachments/assets/8eba4aea-0533-4930-9b83-c4f0482ae08e)
Author
Owner

@MickLesk commented on GitHub (May 7, 2025):

Your Network

@MickLesk commented on GitHub (May 7, 2025): Your Network
Author
Owner

@maciejmatczak commented on GitHub (May 14, 2025):

Hey all, I felt adventurous and before doing "migrate installation by backup" known from this thread, I wanted to give a try with update script.

From the 3 lines update script prints (love the idea), only last is seen:

Image

So, if anyone will stumble across this issue, the full message is:

Old Installation Found, you need to migrate your data and recreate to a new container
Please follow the instructions on the ${APP} website to migrate your data
https://actualbudget.org/docs/backup-restore/backup

@maciejmatczak commented on GitHub (May 14, 2025): Hey all, I felt adventurous and before doing "migrate installation by backup" known from this thread, I wanted to give a try with `update` script. From the 3 lines update script prints (love the idea), only last is seen: ![Image](https://github.com/user-attachments/assets/73d4dc59-3b2a-4dd8-ae50-e3a25c1f7684) So, if anyone will stumble across this issue, the full message is: > Old Installation Found, you need to migrate your data and recreate to a new container > Please follow the instructions on the ${APP} website to migrate your data > https://actualbudget.org/docs/backup-restore/backup
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/ProxmoxVE#903