[GH-ISSUE #4335] [Bug]:25.2.1 Client installed via AppImage will not connect to server #50969

Closed
opened 2026-04-30 16:46:56 -05:00 by GiteaMirror · 8 comments
Owner

Originally created by @kocherjj on GitHub (Feb 7, 2025).
Original GitHub issue: https://github.com/actualbudget/actual/issues/4335

Verified issue does not already exist?

  • I have searched and found no existing issue

What happened?

I have been running version 24.11.0 both server and client version for a while now. I decided to update today so I first took a snapshot of the server, and then updated it to the latest.

I then updated my client to 25.2.1 and got an error message that the server did not look like an Actual Server.

When I tried to open it with a browser I get error messages about not being able to authenticate.

After trying a few things I gave up and rolled the snapshot back and thought that would be the end of it.

Unfortunately that did not proven to be the case. No matter what client version I installed I got errors about either having a version mismatch of needing to file a git issue.

I was able to load the budget in a browser again, just the client would not work.

I was eventually able to use the browser to export my budget file, and then import it using the 24.11.0 client, and now things seem to be working again.

I would be curious to know why Actual will not function when updated to 25.2.1

How can we reproduce the issue?

Update Actual-server from 24.11.0 to 25.2.1, try to open in a browser and observe 'failed to authenticate' messages.

Update Appimage desktop client to 25.2.1, observe 'This does not appear to be an Actual Server. Are you using a self signed certificate?" error.

Where are you hosting Actual?

Other

What browsers are you seeing the problem on?

Chrome

Operating System

Linux

Originally created by @kocherjj on GitHub (Feb 7, 2025). Original GitHub issue: https://github.com/actualbudget/actual/issues/4335 ### Verified issue does not already exist? - [x] I have searched and found no existing issue ### What happened? I have been running version 24.11.0 both server and client version for a while now. I decided to update today so I first took a snapshot of the server, and then updated it to the latest. I then updated my client to 25.2.1 and got an error message that the server did not look like an Actual Server. When I tried to open it with a browser I get error messages about not being able to authenticate. After trying a few things I gave up and rolled the snapshot back and thought that would be the end of it. Unfortunately that did not proven to be the case. No matter what client version I installed I got errors about either having a version mismatch of needing to file a git issue. I was able to load the budget in a browser again, just the client would not work. I was eventually able to use the browser to export my budget file, and then import it using the 24.11.0 client, and now things seem to be working again. I would be curious to know why Actual will not function when updated to 25.2.1 ### How can we reproduce the issue? Update Actual-server from 24.11.0 to 25.2.1, try to open in a browser and observe 'failed to authenticate' messages. Update Appimage desktop client to 25.2.1, observe 'This does not appear to be an Actual Server. Are you using a self signed certificate?" error. ### Where are you hosting Actual? Other ### What browsers are you seeing the problem on? Chrome ### Operating System Linux
GiteaMirror added the bug label 2026-04-30 16:46:56 -05:00
Author
Owner

@MikesGlitch commented on GitHub (Feb 7, 2025):

Hey, I've just connected to my server using the linux appimage on the latest release so it should be working.

To help diagnose the issue, can you:

  • navigate to the change server screen
  • press CTRL SHIFT I to open the devtools (you can also navigate the menus View > Toggle Developer Tools)
  • try to change your server URL

Once you've done that can you let us know if there are any errors in the devtools Console window? You should be able to copy and paste them in here.

I'm half expecting SSL errors.

As a side note, we don't recommend using the Electron app with a server because there can be client/server mismatches. It's best to use the web client.

<!-- gh-comment-id:2644267994 --> @MikesGlitch commented on GitHub (Feb 7, 2025): Hey, I've just connected to my server using the linux appimage on the latest release so it should be working. To help diagnose the issue, can you: - navigate to the change server screen - press CTRL SHIFT I to open the devtools (you can also navigate the menus View > Toggle Developer Tools) - try to change your server URL Once you've done that can you let us know if there are any errors in the devtools Console window? You should be able to copy and paste them in here. I'm half expecting SSL errors. As a side note, we don't recommend using the Electron app with a server because there can be client/server mismatches. It's best to use the web client.
Author
Owner

@kocherjj commented on GitHub (Feb 8, 2025):

So I updated the server again to 25.2.1, or at any rate I did a git pull in my actual server directory. I don't actually see any way to check the server version other than in client settings, and since I can't get the client to connect I cannot confirm the version.

I then started the 25.2.1 client and enabled the Developer Tools option. Here is the console info that appears immediately.

Server Log: SyntaxError: Unexpected token '<', "<!doctype "... is not valid JSON
    at JSON.parse (<anonymous>)
    at Eu.subscribe-get-user (/tmp/.mount_Actual4GElJz/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:313:5685)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
VM12:2 Server Log: Unexpected error fetching file list from server SyntaxError: Unexpected token '<', "<!doctype "... is not valid JSON
    at JSON.parse (<anonymous>)
    at parseJSONFromBytes (node:internal/deps/undici/undici:5329:19)
    at successSteps (node:internal/deps/undici/undici:5300:27)
    at fullyReadBody (node:internal/deps/undici/undici:1447:9)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async specConsumeBody (node:internal/deps/undici/undici:5309:7)
    at async u_ (/tmp/.mount_Actual4GElJz/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:86:2243)
VM11:2 Server Log: SyntaxError: Unexpected token '<', "<!doctype "... is not valid JSON
    at JSON.parse (<anonymous>)
    at Eu.subscribe-get-user (/tmp/.mount_Actual4GElJz/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:313:5685)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)


If I then go to the bottom where it lists the URL and has the 'Change' optin, if I click change and then re-enter the URL (The same URL that works just fine on 24.11.0) I get this message:

Where’s the server?
Existing sessions will be logged out and you will log in to this server. We will validate that Actual is running at this URL.
Server does not look like an Actual server. Is it set up correctly?
If the server is using a self-signed certificate select it here.

The server is not using a self signed certificate, and no new data shows up in the console log. However, when I hit 'Cancel' at that message I get this block of text again

Server Log: SyntaxError: Unexpected token '<', "<!doctype "... is not valid JSON
    at JSON.parse (<anonymous>)
    at Eu.subscribe-get-user (/tmp/.mount_Actual4GElJz/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:313:5685)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)

I can leave it like this for a bit for further testing but eventually I will have to take it back to 24.11.0 again so my wife and I can actually use it again.

Editing to add. Oddly enough although the server is updated to 25.2.1, when i open it in a browser, even using an incognito or a different browser, it reports the client as being 24.11.0. If I remember correctly last time I updated the server the browser automatically updated or pulled the new client version from the server. Not sure if that is relevant or not.

<!-- gh-comment-id:2644415986 --> @kocherjj commented on GitHub (Feb 8, 2025): So I updated the server again to 25.2.1, or at any rate I did a git pull in my actual server directory. I don't actually see any way to check the server version other than in client settings, and since I can't get the client to connect I cannot confirm the version. I then started the 25.2.1 client and enabled the Developer Tools option. Here is the console info that appears immediately. ``` Server Log: SyntaxError: Unexpected token '<', "<!doctype "... is not valid JSON at JSON.parse (<anonymous>) at Eu.subscribe-get-user (/tmp/.mount_Actual4GElJz/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:313:5685) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) VM12:2 Server Log: Unexpected error fetching file list from server SyntaxError: Unexpected token '<', "<!doctype "... is not valid JSON at JSON.parse (<anonymous>) at parseJSONFromBytes (node:internal/deps/undici/undici:5329:19) at successSteps (node:internal/deps/undici/undici:5300:27) at fullyReadBody (node:internal/deps/undici/undici:1447:9) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async specConsumeBody (node:internal/deps/undici/undici:5309:7) at async u_ (/tmp/.mount_Actual4GElJz/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:86:2243) VM11:2 Server Log: SyntaxError: Unexpected token '<', "<!doctype "... is not valid JSON at JSON.parse (<anonymous>) at Eu.subscribe-get-user (/tmp/.mount_Actual4GElJz/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:313:5685) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) ```  If I then go to the bottom where it lists the URL and has the 'Change' optin, if I click change and then re-enter the URL (The same URL that works just fine on 24.11.0) I get this message: ``` Where’s the server? Existing sessions will be logged out and you will log in to this server. We will validate that Actual is running at this URL. Server does not look like an Actual server. Is it set up correctly? If the server is using a self-signed certificate select it here. ``` The server is not using a self signed certificate, and no new data shows up in the console log. However, when I hit 'Cancel' at that message I get this block of text again ``` Server Log: SyntaxError: Unexpected token '<', "<!doctype "... is not valid JSON at JSON.parse (<anonymous>) at Eu.subscribe-get-user (/tmp/.mount_Actual4GElJz/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:313:5685) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) ``` I can leave it like this for a bit for further testing but eventually I will have to take it back to 24.11.0 again so my wife and I can actually use it again. Editing to add. Oddly enough although the server is updated to 25.2.1, when i open it in a browser, even using an incognito or a different browser, it reports the client as being 24.11.0. If I remember correctly last time I updated the server the browser automatically updated or pulled the new client version from the server. Not sure if that is relevant or not.
Author
Owner

@ftbboy2115 commented on GitHub (Feb 8, 2025):

Hey, I've just connected to my server using the linux appimage on the latest release so it should be working.

To help diagnose the issue, can you:

  • navigate to the change server screen
  • press CTRL SHIFT I to open the devtools (you can also navigate the menus View > Toggle Developer Tools)
  • try to change your server URL

Once you've done that can you let us know if there are any errors in the devtools Console window? You should be able to copy and paste them in here.

I'm half expecting SSL errors.

As a side note, we don't recommend using the Electron app with a server because there can be client/server mismatches. It's best to use the web client.

I too am having issues after updating the Desktop app, besides what I've reported (#4318)

Here's the error I got when following your suggestions:

VM407:2 Server Log: TypeError: fetch failed
at node:internal/deps/undici/undici:12345:11
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async lf (C:\Program Files\WindowsApps\actualbudget.org.ActualBudget_25.2.1.0_x64__6q3amkrs0bv0p\app\resources\app.asar\build\loot-core\lib-dist\electron\bundle.desktop.js:83:5067)
at async Eu.subscribe-needs-bootstrap (C:\Program Files\WindowsApps\actualbudget.org.ActualBudget_25.2.1.0_x64__6q3amkrs0bv0p\app\resources\app.asar\build\loot-core\lib-dist\electron\bundle.desktop.js:313:4561) {
cause: [Error: 311808:error:100000f7:SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER:....\third_party\boringssl\src\ssl\tls_record.cc:231:
] {
library: 'SSL routines',
function: 'OPENSSL_internal',
reason: 'WRONG_VERSION_NUMBER',
code: 'ERR_SSL_WRONG_VERSION_NUMBER'
}
}

<!-- gh-comment-id:2644424408 --> @ftbboy2115 commented on GitHub (Feb 8, 2025): > Hey, I've just connected to my server using the linux appimage on the latest release so it should be working. > > To help diagnose the issue, can you: > > * navigate to the change server screen > * press CTRL SHIFT I to open the devtools (you can also navigate the menus View > Toggle Developer Tools) > * try to change your server URL > > Once you've done that can you let us know if there are any errors in the devtools Console window? You should be able to copy and paste them in here. > > I'm half expecting SSL errors. > > As a side note, we don't recommend using the Electron app with a server because there can be client/server mismatches. It's best to use the web client. I too am having issues after updating the Desktop app, besides what I've reported (#4318) Here's the error I got when following your suggestions: VM407:2 Server Log: TypeError: fetch failed at node:internal/deps/undici/undici:12345:11 at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async lf (C:\Program Files\WindowsApps\actualbudget.org.ActualBudget_25.2.1.0_x64__6q3amkrs0bv0p\app\resources\app.asar\build\loot-core\lib-dist\electron\bundle.desktop.js:83:5067) at async Eu.subscribe-needs-bootstrap (C:\Program Files\WindowsApps\actualbudget.org.ActualBudget_25.2.1.0_x64__6q3amkrs0bv0p\app\resources\app.asar\build\loot-core\lib-dist\electron\bundle.desktop.js:313:4561) { cause: [Error: 311808:error:100000f7:SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER:..\..\third_party\boringssl\src\ssl\tls_record.cc:231: ] { library: 'SSL routines', function: 'OPENSSL_internal', reason: 'WRONG_VERSION_NUMBER', code: 'ERR_SSL_WRONG_VERSION_NUMBER' } }
Author
Owner

@kocherjj commented on GitHub (Feb 8, 2025):

I used the 'app.actualbudget.org' and can connect to the server, and it reports both the client and server versions as 25.2.1

When I navigate directly to the server URL like I always have it still comes up with the client as 24.11.0 for some reason. How do I update the browser client?

After doing this, I am seeing new errors in the console when I try to connect with the 25.2.1 desktop app.

It looks like it is expecting some JSON that the server isn't serving.

Server Log: SyntaxError: Unexpected token '<', "<!doctype "... is not valid JSON
    at JSON.parse (<anonymous>)
    at Eu.subscribe-get-user (/tmp/.mount_ActualCOhkPS/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:313:5685)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
 Server Log: Unexpected error fetching file list from server SyntaxError: Unexpected token '<', "<!doctype "... is not valid JSON
    at JSON.parse (<anonymous>)
    at parseJSONFromBytes (node:internal/deps/undici/undici:5329:19)
    at successSteps (node:internal/deps/undici/undici:5300:27)
    at fullyReadBody (node:internal/deps/undici/undici:1447:9)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async specConsumeBody (node:internal/deps/undici/undici:5309:7)
    at async u_ (/tmp/.mount_ActualCOhkPS/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:86:2243)
 Server Log: SyntaxError: Unexpected token '<', "<!doctype "... is not valid JSON
    at JSON.parse (<anonymous>)
    at Eu.subscribe-get-user (/tmp/.mount_ActualCOhkPS/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:313:5685)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
 Server Log: Unexpected error fetching file list from server SyntaxError: Unexpected token '<', "<!doctype "... is not valid JSON
    at JSON.parse (<anonymous>)
    at parseJSONFromBytes (node:internal/deps/undici/undici:5329:19)
    at successSteps (node:internal/deps/undici/undici:5300:27)
    at fullyReadBody (node:internal/deps/undici/undici:1447:9)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async specConsumeBody (node:internal/deps/undici/undici:5309:7)
    at async u_ (/tmp/.mount_ActualCOhkPS/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:86:2243)
 Server Log: Loaded spreadsheet from cache (21207 items)
index.wNgN4A5W.js:18 Unknown locale en-US, falling back to en

To add to the confusion, on my phone using the Vandium browser, if I browse to the URL and try to open the budget file I get a 'Please update actual' message and cannot proceed, which of course is worthless until I figure out how the browser client is updated, which does not appear to be documented anywhere.

However, if I open it in an incognito tab on my phone, it actually lets me load the budget file, but gives me the message about there being a new version available in the little green popup message with the changelog link.

<!-- gh-comment-id:2644435433 --> @kocherjj commented on GitHub (Feb 8, 2025): I used the 'app.actualbudget.org' and can connect to the server, and it reports both the client and server versions as 25.2.1 When I navigate directly to the server URL like I always have it still comes up with the client as 24.11.0 for some reason. How do I update the browser client? After doing this, I am seeing new errors in the console when I try to connect with the 25.2.1 desktop app. It looks like it is expecting some JSON that the server isn't serving. ``` Server Log: SyntaxError: Unexpected token '<', "<!doctype "... is not valid JSON at JSON.parse (<anonymous>) at Eu.subscribe-get-user (/tmp/.mount_ActualCOhkPS/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:313:5685) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) Server Log: Unexpected error fetching file list from server SyntaxError: Unexpected token '<', "<!doctype "... is not valid JSON at JSON.parse (<anonymous>) at parseJSONFromBytes (node:internal/deps/undici/undici:5329:19) at successSteps (node:internal/deps/undici/undici:5300:27) at fullyReadBody (node:internal/deps/undici/undici:1447:9) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async specConsumeBody (node:internal/deps/undici/undici:5309:7) at async u_ (/tmp/.mount_ActualCOhkPS/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:86:2243) Server Log: SyntaxError: Unexpected token '<', "<!doctype "... is not valid JSON at JSON.parse (<anonymous>) at Eu.subscribe-get-user (/tmp/.mount_ActualCOhkPS/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:313:5685) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) Server Log: Unexpected error fetching file list from server SyntaxError: Unexpected token '<', "<!doctype "... is not valid JSON at JSON.parse (<anonymous>) at parseJSONFromBytes (node:internal/deps/undici/undici:5329:19) at successSteps (node:internal/deps/undici/undici:5300:27) at fullyReadBody (node:internal/deps/undici/undici:1447:9) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async specConsumeBody (node:internal/deps/undici/undici:5309:7) at async u_ (/tmp/.mount_ActualCOhkPS/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:86:2243) Server Log: Loaded spreadsheet from cache (21207 items) index.wNgN4A5W.js:18 Unknown locale en-US, falling back to en ``` To add to the confusion, on my phone using the Vandium browser, if I browse to the URL and try to open the budget file I get a 'Please update actual' message and cannot proceed, which of course is worthless until I figure out how the browser client is updated, which does not appear to be documented anywhere. However, if I open it in an incognito tab on my phone, it actually lets me load the budget file, but gives me the message about there being a new version available in the little green popup message with the changelog link.
Author
Owner

@MikesGlitch commented on GitHub (Feb 8, 2025):

Can I get you to try this build: https://github.com/actualbudget/actual/actions/runs/13214943773?pr=4337
You can download the artifact named: actual-electron-ubuntu-latest

And then do the same steps I listed above, open devtools etc.

It should log some extra information which should help us figure out why the server is returning HTML instead of JSON - there's no other changes so it wont fix anything.

When I navigate directly to the server URL like I always have it still comes up with the client as 24.11.0 for some reason

Can you try and update your server again. Just to be sure you're on the latest.

<!-- gh-comment-id:2644931444 --> @MikesGlitch commented on GitHub (Feb 8, 2025): Can I get you to try this build: https://github.com/actualbudget/actual/actions/runs/13214943773?pr=4337 You can download the artifact named: [actual-electron-ubuntu-latest](https://github.com/actualbudget/actual/actions/runs/13214943773/artifacts/2558420632) And then do the same steps I listed above, open devtools etc. It should log some extra information which should help us figure out why the server is returning HTML instead of JSON - there's no other changes so it wont fix anything. > When I navigate directly to the server URL like I always have it still comes up with the client as 24.11.0 for some reason Can you try and update your server again. Just to be sure you're on the latest.
Author
Owner

@kocherjj commented on GitHub (Feb 9, 2025):

When I ran git pull on the server it returns 'Already up to date'. I assume that means I have the latest server version.

I then ran the appimage from the bundle download you linked, and I get the We had problems syncing your changes. Please report this as a bug by [opening a GitHub issue] message.

When I open the Developer Tools console here is what I see:

Server Log: Loaded spreadsheet from cache (21207 items)

VM12:2 Server Log: subscribe-get-user res <!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta
      name="viewport"
      content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no"
    />
    <title>Actual</title>
    <link rel="canonical" href="/" />
    <link rel="shortcut icon" href="/favicon.ico" />
    <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
    <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
    <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
    <link
      rel="manifest"
      href="/site.webmanifest"
      crossorigin="use-credentials"
    />
    <meta name="msapplication-TileColor" content="#8812E1" />
    <meta name="theme-color" content="#8812E1" />

    <style type="text/css">
      html,
      body {
        margin: 0;
        padding: 0;
        font-size: 13px;
      }

      html,
      body,
      button,
      input {
        font-family:
          'Inter var',
          -apple-system,
          BlinkMacSystemFont,
          'Segoe UI',
          'Roboto',
          'Oxygen',
          'Ubuntu',
          'Cantarell',
          'Fira Sans',
          'Droid Sans',
          'Helvetica Neue',
          'Helvetica',
          'Arial',
          sans-serif;
      }

      a {
        color: inherit;
        text-decoration-skip: ink;
      }

      * {
        -webkit-box-sizing: border-box;
        -moz-box-sizing: border-box;
        box-sizing: border-box;
      }

      *:focus {
        /* colors.b5 */
        outline-color: #2b8fed;
      }

      input,
      textarea {
        font-size: 1em;
        font-family:
          'Inter var',
          -apple-system,
          BlinkMacSystemFont,
          'Segoe UI',
          'Roboto',
          'Oxygen',
          'Ubuntu',
          'Cantarell',
          'Fira Sans',
          'Droid Sans',
          'Helvetica Neue',
          'Helvetica',
          'Arial',
          sans-serif;
      }

      html,
      body,
      #root {
        height: 100%;
      }
      body {
        overflow: hidden;
      }

      .view {
        align-items: stretch;
        border-width: 0;
        border-style: solid;
        box-sizing: border-box;
        display: flex;
        flex-direction: column;
        margin: 0;
        padding: 0;
        position: relative;
        /* fix flexbox bugs */
        min-height: 0;
        min-width: 0;
      }

      .js-focus-visible :focus:not(.focus-visible) {
        outline: 0;
      }
    </style>
    <script type="module" crossorigin src="/static/js/index.4_kdGSf3.js"></script>
    <link rel="stylesheet" crossorigin href="/static/css/index._UHHVT8l.css">
  <link rel="manifest" href="/manifest.webmanifest"></head>
  <body>
    <div id="root"></div>
  </body>
</html>


VM13:2 Server Log: SyntaxError: Unexpected token '<', "<!doctype "... is not valid JSON
    at JSON.parse (<anonymous>)
    at Eu.subscribe-get-user (/tmp/.mount_Actual7tE9D7/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:313:5729)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)

index.NpeLY9U5.js:18 Unknown locale en-US, falling back to en
Cd @ index.NpeLY9U5.js:18
VM12:2 Server Log: subscribe-get-user res <!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta
      name="viewport"
      content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no"
    />
    <title>Actual</title>
    <link rel="canonical" href="/" />
    <link rel="shortcut icon" href="/favicon.ico" />
    <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
    <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
    <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
    <link
      rel="manifest"
      href="/site.webmanifest"
      crossorigin="use-credentials"
    />
    <meta name="msapplication-TileColor" content="#8812E1" />
    <meta name="theme-color" content="#8812E1" />

    <style type="text/css">
      html,
      body {
        margin: 0;
        padding: 0;
        font-size: 13px;
      }

      html,
      body,
      button,
      input {
        font-family:
          'Inter var',
          -apple-system,
          BlinkMacSystemFont,
          'Segoe UI',
          'Roboto',
          'Oxygen',
          'Ubuntu',
          'Cantarell',
          'Fira Sans',
          'Droid Sans',
          'Helvetica Neue',
          'Helvetica',
          'Arial',
          sans-serif;
      }

      a {
        color: inherit;
        text-decoration-skip: ink;
      }

      * {
        -webkit-box-sizing: border-box;
        -moz-box-sizing: border-box;
        box-sizing: border-box;
      }

      *:focus {
        /* colors.b5 */
        outline-color: #2b8fed;
      }

      input,
      textarea {
        font-size: 1em;
        font-family:
          'Inter var',
          -apple-system,
          BlinkMacSystemFont,
          'Segoe UI',
          'Roboto',
          'Oxygen',
          'Ubuntu',
          'Cantarell',
          'Fira Sans',
          'Droid Sans',
          'Helvetica Neue',
          'Helvetica',
          'Arial',
          sans-serif;
      }

      html,
      body,
      #root {
        height: 100%;
      }
      body {
        overflow: hidden;
      }

      .view {
        align-items: stretch;
        border-width: 0;
        border-style: solid;
        box-sizing: border-box;
        display: flex;
        flex-direction: column;
        margin: 0;
        padding: 0;
        position: relative;
        /* fix flexbox bugs */
        min-height: 0;
        min-width: 0;
      }

      .js-focus-visible :focus:not(.focus-visible) {
        outline: 0;
      }
    </style>
    <script type="module" crossorigin src="/static/js/index.4_kdGSf3.js"></script>
    <link rel="stylesheet" crossorigin href="/static/css/index._UHHVT8l.css">
  <link rel="manifest" href="/manifest.webmanifest"></head>
  <body>
    <div id="root"></div>
  </body>
</html>


VM13:2 Server Log: SyntaxError: Unexpected token '<', "<!doctype "... is not valid JSON
    at JSON.parse (<anonymous>)
    at Eu.subscribe-get-user (/tmp/.mount_Actual7tE9D7/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:313:5729)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)

2VM14:2 Server Log: Unexpected error fetching file list from server SyntaxError: Unexpected token '<', "<!doctype "... is not valid JSON
    at JSON.parse (<anonymous>)
    at parseJSONFromBytes (node:internal/deps/undici/undici:5329:19)
    at successSteps (node:internal/deps/undici/undici:5300:27)
    at fullyReadBody (node:internal/deps/undici/undici:1447:9)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async specConsumeBody (node:internal/deps/undici/undici:5309:7)
    at async u_ (/tmp/.mount_Actual7tE9D7/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:86:2243)

VM18:2 Server Log: Syncing since 2025-02-08T01:36:54.368Z-0000-a36bf3e79eff5870 6 (attempt: 0)

VM19:2 Server Log: au [Error]: PostError: <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot POST /budget/sync/sync</pre>
</body>
</html>

    at lh (/tmp/.mount_Actual7tE9D7/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:83:5481)
    at l_ (/tmp/.mount_Actual7tE9D7/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:83:7501)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async uq (/tmp/.mount_Actual7tE9D7/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:103:2864)
    at async /tmp/.mount_Actual7tE9D7/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:103:1604 {
  meta: undefined,
  reason: '<!DOCTYPE html>\n' +
    '<html lang="en">\n' +
    '<head>\n' +
    '<meta charset="utf-8">\n' +
    '<title>Error</title>\n' +
    '</head>\n' +
    '<body>\n' +
    '<pre>Cannot POST /budget/sync/sync</pre>\n' +
    '</body>\n' +
    '</html>\n',
  type: 'PostError'
}

index.NpeLY9U5.js:79 unknown error Object
(anonymous) @ index.NpeLY9U5.js:79
VM19:2 Server Log: au [Error]: PostError: <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot POST /budget/sync/sync</pre>
</body>
</html>

    at lh (/tmp/.mount_Actual7tE9D7/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:83:5481)
    at l_ (/tmp/.mount_Actual7tE9D7/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:83:7501)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async uq (/tmp/.mount_Actual7tE9D7/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:103:2864)
    at async /tmp/.mount_Actual7tE9D7/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:103:1604 {
  meta: undefined,
  reason: '<!DOCTYPE html>\n' +
    '<html lang="en">\n' +
    '<head>\n' +
    '<meta charset="utf-8">\n' +
    '<title>Error</title>\n' +
    '</head>\n' +
    '<body>\n' +
    '<pre>Cannot POST /budget/sync/sync</pre>\n' +
    '</body>\n' +
    '</html>\n',
  type: 'PostError'
}

VM18:2 Server Log: Syncing since 2025-02-08T01:36:54.368Z-0000-a36bf3e79eff5870 6 (attempt: 0)

2VM19:2 Server Log: au [Error]: PostError: <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot POST /budget/sync/sync</pre>
</body>
</html>

    at lh (/tmp/.mount_Actual7tE9D7/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:83:5481)
    at l_ (/tmp/.mount_Actual7tE9D7/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:83:7501)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async uq (/tmp/.mount_Actual7tE9D7/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:103:2864)
    at async /tmp/.mount_Actual7tE9D7/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:103:1604 {
  meta: undefined,
  reason: '<!DOCTYPE html>\n' +
    '<html lang="en">\n' +
    '<head>\n' +
    '<meta charset="utf-8">\n' +
    '<title>Error</title>\n' +
    '</head>\n' +
    '<body>\n' +
    '<pre>Cannot POST /budget/sync/sync</pre>\n' +
    '</body>\n' +
    '</html>\n',
  type: 'PostError'
}

index.NpeLY9U5.js:79 unknown error Object
(anonymous) @ index.NpeLY9U5.js:79

For reference, if I open an Incognito Tab in my chromium based browser, (Brave) currently I can connect to my server at the correct URL and it shows the server online, syncs without error, and in settings it states that both the client and the server versions are v25.2.1

I eventually discovered by trial and error that to get the browser client to update I had to not only delete all cookies and site data for my server url, but also for https://app.actualbudget.com/

After deleting the https://app.actualbudget.com/ site data and cookies now a normal tab behaves like incognito mode and shows the client at v25.2.0. This is very strange since I never went to that site until I started troubleshooting this issue, and now that it is working, my browser does not show any history for that site even though I have successfully reconnected to my server instance.

I still need the electron app to work though, and I am curious why you would state that I should avoid it, since that is a main reason I use actual. I like having the app separate from my browser for a number of reasons and as far as I can tell that is a fundamental reason for it's existence.

<!-- gh-comment-id:2646358717 --> @kocherjj commented on GitHub (Feb 9, 2025): When I ran git pull on the server it returns 'Already up to date'. I assume that means I have the latest server version. I then ran the appimage from the bundle download you linked, and I get the `We had problems syncing your changes. Please report this as a bug by [opening a GitHub issue]` message. When I open the Developer Tools console here is what I see: ``` Server Log: Loaded spreadsheet from cache (21207 items) VM12:2 Server Log: subscribe-get-user res <!doctype html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no" /> <title>Actual</title> <link rel="canonical" href="/" /> <link rel="shortcut icon" href="/favicon.ico" /> <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /> <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" /> <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" /> <link rel="manifest" href="/site.webmanifest" crossorigin="use-credentials" /> <meta name="msapplication-TileColor" content="#8812E1" /> <meta name="theme-color" content="#8812E1" /> <style type="text/css"> html, body { margin: 0; padding: 0; font-size: 13px; } html, body, button, input { font-family: 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif; } a { color: inherit; text-decoration-skip: ink; } * { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } *:focus { /* colors.b5 */ outline-color: #2b8fed; } input, textarea { font-size: 1em; font-family: 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif; } html, body, #root { height: 100%; } body { overflow: hidden; } .view { align-items: stretch; border-width: 0; border-style: solid; box-sizing: border-box; display: flex; flex-direction: column; margin: 0; padding: 0; position: relative; /* fix flexbox bugs */ min-height: 0; min-width: 0; } .js-focus-visible :focus:not(.focus-visible) { outline: 0; } </style> <script type="module" crossorigin src="/static/js/index.4_kdGSf3.js"></script> <link rel="stylesheet" crossorigin href="/static/css/index._UHHVT8l.css"> <link rel="manifest" href="/manifest.webmanifest"></head> <body> <div id="root"></div> </body> </html> VM13:2 Server Log: SyntaxError: Unexpected token '<', "<!doctype "... is not valid JSON at JSON.parse (<anonymous>) at Eu.subscribe-get-user (/tmp/.mount_Actual7tE9D7/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:313:5729) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) index.NpeLY9U5.js:18 Unknown locale en-US, falling back to en Cd @ index.NpeLY9U5.js:18 VM12:2 Server Log: subscribe-get-user res <!doctype html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no" /> <title>Actual</title> <link rel="canonical" href="/" /> <link rel="shortcut icon" href="/favicon.ico" /> <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /> <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" /> <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" /> <link rel="manifest" href="/site.webmanifest" crossorigin="use-credentials" /> <meta name="msapplication-TileColor" content="#8812E1" /> <meta name="theme-color" content="#8812E1" /> <style type="text/css"> html, body { margin: 0; padding: 0; font-size: 13px; } html, body, button, input { font-family: 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif; } a { color: inherit; text-decoration-skip: ink; } * { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } *:focus { /* colors.b5 */ outline-color: #2b8fed; } input, textarea { font-size: 1em; font-family: 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif; } html, body, #root { height: 100%; } body { overflow: hidden; } .view { align-items: stretch; border-width: 0; border-style: solid; box-sizing: border-box; display: flex; flex-direction: column; margin: 0; padding: 0; position: relative; /* fix flexbox bugs */ min-height: 0; min-width: 0; } .js-focus-visible :focus:not(.focus-visible) { outline: 0; } </style> <script type="module" crossorigin src="/static/js/index.4_kdGSf3.js"></script> <link rel="stylesheet" crossorigin href="/static/css/index._UHHVT8l.css"> <link rel="manifest" href="/manifest.webmanifest"></head> <body> <div id="root"></div> </body> </html> VM13:2 Server Log: SyntaxError: Unexpected token '<', "<!doctype "... is not valid JSON at JSON.parse (<anonymous>) at Eu.subscribe-get-user (/tmp/.mount_Actual7tE9D7/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:313:5729) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) 2VM14:2 Server Log: Unexpected error fetching file list from server SyntaxError: Unexpected token '<', "<!doctype "... is not valid JSON at JSON.parse (<anonymous>) at parseJSONFromBytes (node:internal/deps/undici/undici:5329:19) at successSteps (node:internal/deps/undici/undici:5300:27) at fullyReadBody (node:internal/deps/undici/undici:1447:9) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async specConsumeBody (node:internal/deps/undici/undici:5309:7) at async u_ (/tmp/.mount_Actual7tE9D7/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:86:2243) VM18:2 Server Log: Syncing since 2025-02-08T01:36:54.368Z-0000-a36bf3e79eff5870 6 (attempt: 0) VM19:2 Server Log: au [Error]: PostError: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Error</title> </head> <body> <pre>Cannot POST /budget/sync/sync</pre> </body> </html> at lh (/tmp/.mount_Actual7tE9D7/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:83:5481) at l_ (/tmp/.mount_Actual7tE9D7/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:83:7501) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async uq (/tmp/.mount_Actual7tE9D7/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:103:2864) at async /tmp/.mount_Actual7tE9D7/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:103:1604 { meta: undefined, reason: '<!DOCTYPE html>\n' + '<html lang="en">\n' + '<head>\n' + '<meta charset="utf-8">\n' + '<title>Error</title>\n' + '</head>\n' + '<body>\n' + '<pre>Cannot POST /budget/sync/sync</pre>\n' + '</body>\n' + '</html>\n', type: 'PostError' } index.NpeLY9U5.js:79 unknown error Object (anonymous) @ index.NpeLY9U5.js:79 VM19:2 Server Log: au [Error]: PostError: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Error</title> </head> <body> <pre>Cannot POST /budget/sync/sync</pre> </body> </html> at lh (/tmp/.mount_Actual7tE9D7/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:83:5481) at l_ (/tmp/.mount_Actual7tE9D7/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:83:7501) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async uq (/tmp/.mount_Actual7tE9D7/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:103:2864) at async /tmp/.mount_Actual7tE9D7/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:103:1604 { meta: undefined, reason: '<!DOCTYPE html>\n' + '<html lang="en">\n' + '<head>\n' + '<meta charset="utf-8">\n' + '<title>Error</title>\n' + '</head>\n' + '<body>\n' + '<pre>Cannot POST /budget/sync/sync</pre>\n' + '</body>\n' + '</html>\n', type: 'PostError' } VM18:2 Server Log: Syncing since 2025-02-08T01:36:54.368Z-0000-a36bf3e79eff5870 6 (attempt: 0) 2VM19:2 Server Log: au [Error]: PostError: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Error</title> </head> <body> <pre>Cannot POST /budget/sync/sync</pre> </body> </html> at lh (/tmp/.mount_Actual7tE9D7/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:83:5481) at l_ (/tmp/.mount_Actual7tE9D7/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:83:7501) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async uq (/tmp/.mount_Actual7tE9D7/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:103:2864) at async /tmp/.mount_Actual7tE9D7/resources/app.asar/build/loot-core/lib-dist/electron/bundle.desktop.js:103:1604 { meta: undefined, reason: '<!DOCTYPE html>\n' + '<html lang="en">\n' + '<head>\n' + '<meta charset="utf-8">\n' + '<title>Error</title>\n' + '</head>\n' + '<body>\n' + '<pre>Cannot POST /budget/sync/sync</pre>\n' + '</body>\n' + '</html>\n', type: 'PostError' } index.NpeLY9U5.js:79 unknown error Object (anonymous) @ index.NpeLY9U5.js:79 ``` For reference, if I open an Incognito Tab in my chromium based browser, (Brave) currently I can connect to my server at the correct URL and it shows the server online, syncs without error, and in settings it states that both the client and the server versions are v25.2.1 I eventually discovered by trial and error that to get the browser client to update I had to not only delete all cookies and site data for my server url, but also for `https://app.actualbudget.com/` After deleting the `https://app.actualbudget.com/` site data and cookies now a normal tab behaves like incognito mode and shows the client at v25.2.0. This is very strange since I never went to that site until I started troubleshooting this issue, and now that it is working, my browser does not show any history for that site even though I have successfully reconnected to my server instance. I still need the electron app to work though, and I am curious why you would state that I should avoid it, since that is a main reason I use actual. I like having the app separate from my browser for a number of reasons and as far as I can tell that is a fundamental reason for it's existence.
Author
Owner

@MikesGlitch commented on GitHub (Feb 9, 2025):

I still need the electron app to work though, and I am curious why you would state that I should avoid it

It's because you can run into version mismatch issues when using electron with a server and we have a PWA app that doesn't have the same problem. The PWA is basically a desktop app. I'm not sure how to install it on Brave, you'd need to google that one - it should just be to navigate to the server url and install.

So the error is:

Cannot POST /budget/sync/sync

I'm not sure if that leading /budget is supposed to be there. Can you confirm how your server is setup? It looks like it's added a /budget . It may also be worth checking your server url on the desktop app and making sure it's not there.

<!-- gh-comment-id:2646374715 --> @MikesGlitch commented on GitHub (Feb 9, 2025): > I still need the electron app to work though, and I am curious why you would state that I should avoid it It's because you can run into version mismatch issues when using electron with a server and we have a PWA app that doesn't have the same problem. The PWA is basically a desktop app. I'm not sure how to install it on Brave, you'd need to google that one - it should just be to navigate to the server url and install. So the error is: ``` Cannot POST /budget/sync/sync ``` I'm not sure if that leading ```/budget``` is supposed to be there. Can you confirm how your server is setup? It looks like it's added a ```/budget``` . It may also be worth checking your server url on the desktop app and making sure it's not there.
Author
Owner

@kocherjj commented on GitHub (Feb 12, 2025):

That is interesting. I'm not sure where the info is saved on my PC but using the Actual App v25.2.1 apparently added the /budget to the server address itself. Rolling back to 24.11.0 the /budget is not part of the server URL.

Updating to 25.2.1 it automatically added the /budget again. I manually removed that from the URL and now the 25.2.1 client is connecting to the 25.2.1 server. Thank you!

To summarize in case anyone else has the same issue and finds this:

When I updated my server from 24.11.0 to 25.2.1 I could not longer connect with a browser, and I also could not connect with either the 24.11.0 or 25.2.1 versions of the Appimage program.

To get the browser working I had to clear all site and cookie data for 'https://app.actualbudget.com/' from my browser, despite never having visited that site to my knowledge.

To get the Appimage working I had to manually edit the URL for the server connection to remove '/budget' that was apparently added automatically when I moved from 24.11.0 to 25.2.1

<!-- gh-comment-id:2654968442 --> @kocherjj commented on GitHub (Feb 12, 2025): That is interesting. I'm not sure where the info is saved on my PC but using the Actual App v25.2.1 apparently added the /budget to the server address itself. Rolling back to 24.11.0 the /budget is not part of the server URL. Updating to 25.2.1 it automatically added the /budget again. I manually removed that from the URL and now the 25.2.1 client is connecting to the 25.2.1 server. Thank you! To summarize in case anyone else has the same issue and finds this: When I updated my server from 24.11.0 to 25.2.1 I could not longer connect with a browser, and I also could not connect with either the 24.11.0 or 25.2.1 versions of the Appimage program. To get the browser working I had to clear all site and cookie data for 'https://app.actualbudget.com/' from my browser, despite never having visited that site to my knowledge. To get the Appimage working I had to manually edit the URL for the server connection to remove '/budget' that was apparently added automatically when I moved from 24.11.0 to 25.2.1
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/actual#50969