Vikunja error, CORS-related I think

What type of hardware are you using: VPS bought online
What YunoHost version are you running: 12.1.40.1
How are you able to access your server: The webadmin
SSH
Are you in a special context or did you perform specific tweaking on your YunoHost instance ?: No

Describe your issue

I can’t log-in to Vikuna, in the web browser it displays this error:

An error occurred:
Network Error

Please check if the api url is correct.

In the developer tools, I see this error:

Could not fetch ‘info’ from the provided endpoint /api/v1 on https://xyzdomain/api/v1/info. Some automatic fallback will be tried. index-u-ppHw0H.js:13:2510

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://xyzdomain:3456/api/v1/info. (Reason: CORS request did not succeed). Status code: (null).

Share relevant logs or error messages

There aren’t any logs in the admin area to share.

Nothing in webadmin > tools > services > vikunja ?

Nothing is popping out to me in the logs, here they are:

e=2026-06-06T20:41:06.552Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=7.939995ms
Jun 06 20:41:06 vikunja[2282065]: time=2026-06-06T20:41:06.558Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=7.034392ms
Jun 06 20:41:06 vikunja[2282065]: time=2026-06-06T20:41:06.560Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=7.730346ms
Jun 06 20:41:06 vikunja[2282065]: time=2026-06-06T20:41:06.566Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=7.197551ms
Jun 06 20:41:06 vikunja[2282065]: time=2026-06-06T20:41:06.568Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=7.646517ms
Jun 06 20:41:06 vikunja[2282065]: time=2026-06-06T20:41:06.568Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=30.544168ms
Jun 06 20:41:06 vikunja[2282065]: time=2026-06-06T20:41:06.576Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=8.121141ms
Jun 06 20:41:06 vikunja[2282065]: time=2026-06-06T20:41:06.576Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=7.672988ms
Jun 06 20:41:06 vikunja[2282065]: time=2026-06-06T20:41:06.583Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=7.079707ms
Jun 06 20:41:07 vikunja[2282065]: time=2026-06-06T20:41:07.425Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=7.565954ms
Jun 06 20:41:07 vikunja[2282065]: time=2026-06-06T20:41:07.426Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=8.935661ms
Jun 06 20:41:07 vikunja[2282065]: time=2026-06-06T20:41:07.718Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=7.659061ms
Jun 06 20:41:07 vikunja[2282065]: time=2026-06-06T20:41:07.723Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=13.188378ms
Jun 06 20:41:07 vikunja[2282065]: time=2026-06-06T20:41:07.726Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=7.439622ms
Jun 06 20:41:07 vikunja[2282065]: time=2026-06-06T20:41:07.733Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=9.446093ms
Jun 06 20:41:07 vikunja[2282065]: time=2026-06-06T20:41:07.935Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=9.052443ms
Jun 06 20:41:07 vikunja[2282065]: time=2026-06-06T20:41:07.965Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=11.392558ms
Jun 06 20:41:07 vikunja[2282065]: time=2026-06-06T20:41:07.968Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=8.553012ms
Jun 06 20:41:08 vikunja[2282065]: time=2026-06-06T20:41:08.142Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=8.545899ms
Jun 06 20:41:08 vikunja[2282065]: time=2026-06-06T20:41:08.156Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=7.954454ms
Jun 06 20:41:08 vikunja[2282065]: time=2026-06-06T20:41:08.213Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=7.973559ms
Jun 06 20:41:08 vikunja[2282065]: time=2026-06-06T20:41:08.215Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=8.0371ms
Jun 06 20:41:08 vikunja[2282065]: time=2026-06-06T20:41:08.348Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=7.440154ms
Jun 06 20:41:08 vikunja[2282065]: time=2026-06-06T20:41:08.453Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=7.310296ms
Jun 06 20:41:08 vikunja[2282065]: time=2026-06-06T20:41:08.462Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=8.186785ms
Jun 06 20:41:08 vikunja[2282065]: time=2026-06-06T20:41:08.468Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=7.161985ms
Jun 06 20:41:08 vikunja[2282065]: time=2026-06-06T20:41:08.557Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=7.937261ms
Jun 06 20:41:08 vikunja[2282065]: time=2026-06-06T20:41:08.700Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=7.725768ms
Jun 06 20:41:08 vikunja[2282065]: time=2026-06-06T20:41:08.706Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=8.262622ms
Jun 06 20:41:08 vikunja[2282065]: time=2026-06-06T20:41:08.708Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=7.203774ms
Jun 06 20:41:10 vikunja[2282065]: time=2026-06-06T20:41:10.216Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=7.424766ms
Jun 06 20:41:10 vikunja[2282065]: time=2026-06-06T20:41:10.221Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=7.292763ms
Jun 06 20:41:10 vikunja[2282065]: time=2026-06-06T20:41:10.224Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=7.925127ms
Jun 06 20:41:10 vikunja[2282065]: time=2026-06-06T20:41:10.229Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=7.469821ms
Jun 06 20:41:10 vikunja[2282065]: time=2026-06-06T20:41:10.233Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=7.835667ms
Jun 06 20:41:10 vikunja[2282065]: time=2026-06-06T20:41:10.236Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=7.148429ms
Jun 06 20:41:12 vikunja[2282065]: time=2026-06-06T20:41:12.374Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/ status=200 latency=159.974µs
Jun 06 20:41:15 vikunja[2282065]: time=2026-06-06T20:41:15.047Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/Quicksand_wght__a912b486-BSFz85KT.woff2 status=200 latency=1.315685ms
Jun 06 20:41:15 vikunja[2282065]: time=2026-06-06T20:41:15.048Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/llama-Cg7SOh2S.svg?url status=200 latency=1.273455ms
Jun 06 20:41:15 vikunja[2282065]: time=2026-06-06T20:41:15.053Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/no-auth-image-Cmfcl6fh.jpg status=200 latency=6.725233ms
Jun 06 21:37:40 vikunja[2282065]: time=2026-06-06T21:37:40.268Z level=INFO component=http remote_ip=127.0.0.1 method=PROPFIND uri=/dav/projects status=207 latency=131.448771ms
Jun 06 21:41:01 vikunja[2282065]: time=2026-06-06T21:41:01.301Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/login status=200 latency=483.341µs
Jun 06 21:41:01 vikunja[2282065]: time=2026-06-06T21:41:01.613Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-CsHCAgIP.css status=200 latency=11.049845ms
Jun 06 21:41:01 vikunja[2282065]: time=2026-06-06T21:41:01.641Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/index-u-ppHw0H.js status=200 latency=39.29062ms
Jun 06 21:41:01 vikunja[2282065]: time=2026-06-06T21:41:01.917Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/sw.js status=200 latency=922.827µs
Jun 06 21:41:02 vikunja[2282065]: time=2026-06-06T21:41:02.224Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/images/icons/apple-touch-icon-180x180.png status=200 latency=269.242µs
Jun 06 21:41:02 vikunja[2282065]: time=2026-06-06T21:41:02.233Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/favicon.ico status=200 latency=569.784µs
Jun 06 21:41:03 vikunja[2282065]: time=2026-06-06T21:41:03.859Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/llama-nightscape-mKZQPxXM.jpg status=200 latency=1.9698ms
Jun 06 21:41:03 vikunja[2282065]: time=2026-06-06T21:41:03.859Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/assets/OpenSans_wght__0f3a8072-BJG3deEJ.woff2 status=200 latency=1.957627ms
Jun 06 21:41:03 vikunja[2282065]: time=2026-06-06T21:41:03.998Z level=INFO component=http remote_ip=127.0.0.1 method=GET uri=/sw.js status=200 latency=891.287µs

And curl -v https://xyzdomain.tld/api/v1/info?

  • Request completely sent off
  • TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
  • TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
    < HTTP/2 302
    < server: nginx
    < date: Sun, 07 Jun 2026 00:42:32 GMT
    < content-type: text/html
    < content-length: 138
    < x-sso-wat: You’ve just been SSOed
    < content-security-policy: upgrade-insecure-requests
    < x-content-type-options: nosniff
    < x-xss-protection: 1; mode=block
    < x-download-options: noopen
    < x-permitted-cross-domain-policies: none
    < x-frame-options: SAMEORIGIN
    < permissions-policy: interest-cohort=()
    < strict-transport-security: max-age=63072000; includeSubDomains; preload
    <
302 Found

302 Found


nginx

Is the api accessible to visitors (webadmin > apps > vikunja) ?
And what does return curl -v http://127.0.0.1:3456/api/v1/info ?
Did you already try to force upgrade ?

I tried the force upgrade, no luck. I also verified it’s accessible to visitors.

I think I’m going to try reinstalling and see if that fixes it (and hopefully I can restore from a backup). :crossed_fingers:

I appreciate your help!

Reinstalling seemed to work; although the backup can’t be restored. :-/

Regardless, thanks for your help!