[GH-ISSUE #2163] Not found 404 errors in API and UI in RC4 #6567

Closed
opened 2026-04-20 17:09:49 -05:00 by GiteaMirror · 3 comments
Owner

Originally created by @GlenNicholls on GitHub (Jan 27, 2026).
Original GitHub issue: https://github.com/go-vikunja/vikunja/issues/2163

Description

Version: v1.0.0-rc4
Platform: Docker
OpenID: Authentik

I see issues in the UI where it returns Not Found 404 (this is new in RC4, I didn't see this behaviour in RC3).

  1. I open vikunja home at https://<vikunja.domain>
  2. click to open an issue
  3. refresh page and it returns JSON {"message":"Not Found"}

To fix, I have to delete the /tasks/<id> from the address bar and reload the page. I can't reproduce this on the demo site, so I must have a config issue and I'm not entirely sure where to look.

I did a compose down/up followed by the above steps, below are the full logs leading up to the 404:

vikunja  | 2026/01/26 17:05:44 failed to create modcache index dir: mkdir /.cache: permission denied
vikunja  | time=2026-01-26T17:05:44.979-07:00 level=INFO msg="Using config file: /etc/vikunja/config.yml"
vikunja  | time=2026-01-26T17:05:44.983-07:00 level=INFO msg="Running migrations…"
vikunja  | time=2026-01-26T17:05:45.075-07:00 level=INFO msg="Ran all migrations successfully."
vikunja  | time=2026-01-26T17:05:45.527-07:00 level=INFO msg="Vikunja version v1.0.0-rc4"
vikunja  | time=2026-01-26T17:05:45.533-07:00 level=INFO msg="HTTP server listening on :3456"
vikunja  | time=2026-01-26T17:06:06.536-07:00 level=INFO component=http method=GET uri="/api/v1/notifications?page=1" status=200 latency=3.847549ms
vikunja  | time=2026-01-26T17:06:08.731-07:00 level=INFO component=http method=GET uri="/api/v1/avatar/glen?size=40" status=200 latency=1.540208ms
vikunja  | time=2026-01-26T17:06:08.977-07:00 level=INFO component=http method=GET uri=/api/v1/user status=200 latency=249.878262ms
vikunja  | time=2026-01-26T17:06:09.077-07:00 level=INFO component=http method=GET uri="/api/v1/avatar/glen?size=40" status=200 latency=657.557µs
vikunja  | time=2026-01-26T17:06:09.102-07:00 level=INFO component=http method=GET uri="/api/v1/tasks/659?expand%5B%5D=reactions&expand%5B%5D=comments&expand%5B%5D=is_unread" status=200 latency=17.359318ms
vikunja  | time=2026-01-26T17:06:09.327-07:00 level=INFO component=http method=GET uri="/api/v1/avatar/glen?size=48" status=200 latency=733.55µs
vikunja  | time=2026-01-26T17:06:09.332-07:00 level=INFO component=http method=GET uri="/api/v1/avatar/glen?size=20" status=200 latency=495.081µs
vikunja  | time=2026-01-26T17:06:11.957-07:00 level=INFO component=http method=GET uri="/api/v1/notifications?page=1" status=200 latency=9.002527ms
vikunja  | time=2026-01-26T17:06:13.700-07:00 level=ERROR component=http method=GET uri=/tasks/659 status=404 latency=133.31µs err="Not Found"

I'm not sure if this is related, but I also notice errors with the gethomepage Vikunja widget:

[2026-01-27T00:22:36.525Z] error: <credentialedProxyHandler> HTTP Error 400 calling http://vikunja:3456/api/v1/tasks/all?filter=done%3Dfalse&sort_by=due_date

And these are the vikunja logs for the gethomepage widget info fetch

vikunja  | time=2026-01-26T17:22:36.524-07:00 level=ERROR component=http method=GET uri="/api/v1/tasks/all?filter=done%3Dfalse&sort_by=due_date" status=400 latency=17.069974ms err="Invalid model provided: Bad Request"
vikunja  | time=2026-01-26T17:22:36.535-07:00 level=INFO component=http method=GET uri=/api/v1/projects status=200 latency=43.056503ms

Below is my compose stack:

name: vikunja

networks:
  default:
    driver: bridge
    name: vikunja_default
  proxy:
    external: true

services:
  db:
    container_name: postgres-vikunja
    image: postgres:${POSTGRES_VERSION}-alpine
    restart: unless-stopped
    healthcheck:
      test: [ "CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"]
      interval: 30s
      retries: 5
      start_period: 20s
      timeout: 5s
    networks:
      - default
    volumes:
      - ${APPDATA}/postgres-vikunja/data:/var/lib/postgresql
    env_file:
      - ../global.env
    environment:
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_DB: ${POSTGRES_DB}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    label_file:
      - ../global.labels
      - ../postgres.labels

  vikunja:
    container_name: vikunja
    image: vikunja/vikunja:latest
    restart: unless-stopped
    depends_on:
      db:
        condition: service_healthy
    #ports:
    #  - 3456:3456/tcp
    networks:
      - default
      - proxy
    volumes:
      - ${APPDATA}/vikunja/config:/etc/vikunja
      - ${APPDATA}/vikunja/data:/app/vikunja/files
    env_file:
      - ../global.env
    environment:
      VIKUNJA_DATABASE_TYPE: postgres
      VIKUNJA_DATABASE_HOST: postgres-vikunja
      VIKUNJA_DATABASE_USER: ${POSTGRES_USER}
      VIKUNJA_DATABASE_PASSWORD: ${POSTGRES_PASSWORD}
      VIKUNJA_DATABASE_DATABASE: ${POSTGRES_DB}
      VIKUNJA_SERVICE_PUBLICURL: https://<vikunja.domain>
    label_file: ../global.labels
    labels:
      net.unraid.docker.icon: https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/vikunja.png
      wud.tag.include: ^latest$$
      wud.link.template: https://github.com/go-vikunja/vikunja/releases
      traefik.enable: true
      traefik.docker.network: proxy
      traefik.http.routers.vikunja.entrypoints: lansecure,websecure
      traefik.http.services.vikunja.loadbalancer.server.port: 3456

My config.yml

# https://vikunja.io/docs/config-options/
service:
  JWTSecret: "<secret>"
  jwtttl: 259200
  jwtttllong: 2592000
  maxitemsperpage: 50
  enablelinksharing: true
  enableregistration: false
  enabletaskattachments: true
  #timezone: MST
  timezone: America/Denver
  enabletaskcomments: true
  enableemailreminders: true
  enableuserdeletion: true
  allowiconchanges: true
  customlogourl: ''
  enablepublicteams: false

typesense:
  enabled: false
  url: ''
  apikey: ''

redis:
  enabled: false
  host: 'localhost:6379'
  password: ''
  db: 0

cors:
  enable: false
  origins:
    - "*"
  maxage: 0

mailer:
  enabled: true
  host: "smtp.gmail.com"
  port: 587
  authtype: "plain"
  username: "<username>"
  password: "<password>"
  skiptlsverify: false
  fromemail: "<username>"
  queuelength: 100
  queuetimeout: 30
  forcessl: false

log:
  path: <rootpath>logs
  enabled: true
  standard: "stdout"
  level: "INFO"
  database: "off"
  databaselevel: "WARNING"
  http: "stdout"
  echo: "off"
  events: "off"
  eventslevel: "info"
  mail: "off"
  maillevel: "info"

ratelimit:
  enabled: false
  kind: user
  period: 60
  limit: 100
  store: keyvalue
  noauthlimit: 10

files:
  basepath: ./files # relative to the binary
  maxsize: 20MB

migration:
  todoist:
    enable: false
    clientid:
    clientsecret:
    redirecturl: <frontend url>/migrate/todoist
  trello:
    enable: true
    key: <key>
    redirecturl: https://<vikunja domain>/user/settings/migrate/trello
  microsofttodo:
    enable: false
    clientid:
    clientsecret:
    redirecturl: <frontend url>/migrate/microsoft-todo

avatar:
  gravatarexpiration: 3600

backgrounds:
  enabled: true
  providers:
    upload:
      enabled: true
    unsplash:
      enabled: false
      accesstoken:
      applicationid:

legal:
  imprinturl:
  privacyurl:

keyvalue:
  type: "memory"

auth:
  local:
    enabled: false
  openid:
    enabled: true
    redirecturl: https://<authentik domain>/auth/openid/
    providers:
      authentiklogin:
        name: authentik
        authurl: https://<authentik domain>/application/o/vikunja/
        logouturl: https://<authentik domain>/application/o/vikunja/end-session/
        clientid: <authentik id>
        clientsecret: <authentik secret>
        scope: openid email profile vikunja_scope
        forceuserinfo: false # Optional: Set to true to always use UserInfo endpoint instead of ID token claims, defaults to false

metrics:
  enabled: false
  username:
  password:

defaultsettings:
  avatar_provider: initials
  avatar_file_id: 0
  email_reminders_enabled: true
  discoverable_by_name: true
  discoverable_by_email: false
  overdue_tasks_reminders_enabled: true
  overdue_tasks_reminders_time: 9:00
  default_project_id: 0
  week_start: 0
  language: <unset>
  timezone: America/Denver

webhooks:
  enabled: true
  timoutseconds: 30
  proxyurl:
  proxypassword:

Vikunja Version

v1.0.0-rc4

Browser and version

Firefox 147.0.1 (64-bit)

Can you reproduce the bug on the Vikunja demo site?

No

Screenshots

No response

Originally created by @GlenNicholls on GitHub (Jan 27, 2026). Original GitHub issue: https://github.com/go-vikunja/vikunja/issues/2163 ### Description Version: v1.0.0-rc4 Platform: Docker OpenID: Authentik I see issues in the UI where it returns Not Found 404 (this is new in RC4, I didn't see this behaviour in RC3). 1. I open vikunja home at `https://<vikunja.domain>` 2. click to open an issue 3. refresh page and it returns JSON `{"message":"Not Found"}` To fix, I have to delete the `/tasks/<id>` from the address bar and reload the page. I can't reproduce this on the demo site, so I must have a config issue and I'm not entirely sure where to look. I did a compose down/up followed by the above steps, below are the full logs leading up to the 404: ```text vikunja | 2026/01/26 17:05:44 failed to create modcache index dir: mkdir /.cache: permission denied vikunja | time=2026-01-26T17:05:44.979-07:00 level=INFO msg="Using config file: /etc/vikunja/config.yml" vikunja | time=2026-01-26T17:05:44.983-07:00 level=INFO msg="Running migrations…" vikunja | time=2026-01-26T17:05:45.075-07:00 level=INFO msg="Ran all migrations successfully." vikunja | time=2026-01-26T17:05:45.527-07:00 level=INFO msg="Vikunja version v1.0.0-rc4" vikunja | time=2026-01-26T17:05:45.533-07:00 level=INFO msg="HTTP server listening on :3456" vikunja | time=2026-01-26T17:06:06.536-07:00 level=INFO component=http method=GET uri="/api/v1/notifications?page=1" status=200 latency=3.847549ms vikunja | time=2026-01-26T17:06:08.731-07:00 level=INFO component=http method=GET uri="/api/v1/avatar/glen?size=40" status=200 latency=1.540208ms vikunja | time=2026-01-26T17:06:08.977-07:00 level=INFO component=http method=GET uri=/api/v1/user status=200 latency=249.878262ms vikunja | time=2026-01-26T17:06:09.077-07:00 level=INFO component=http method=GET uri="/api/v1/avatar/glen?size=40" status=200 latency=657.557µs vikunja | time=2026-01-26T17:06:09.102-07:00 level=INFO component=http method=GET uri="/api/v1/tasks/659?expand%5B%5D=reactions&expand%5B%5D=comments&expand%5B%5D=is_unread" status=200 latency=17.359318ms vikunja | time=2026-01-26T17:06:09.327-07:00 level=INFO component=http method=GET uri="/api/v1/avatar/glen?size=48" status=200 latency=733.55µs vikunja | time=2026-01-26T17:06:09.332-07:00 level=INFO component=http method=GET uri="/api/v1/avatar/glen?size=20" status=200 latency=495.081µs vikunja | time=2026-01-26T17:06:11.957-07:00 level=INFO component=http method=GET uri="/api/v1/notifications?page=1" status=200 latency=9.002527ms vikunja | time=2026-01-26T17:06:13.700-07:00 level=ERROR component=http method=GET uri=/tasks/659 status=404 latency=133.31µs err="Not Found" ``` I'm not sure if this is related, but I also notice errors with the gethomepage Vikunja widget: ``` [2026-01-27T00:22:36.525Z] error: <credentialedProxyHandler> HTTP Error 400 calling http://vikunja:3456/api/v1/tasks/all?filter=done%3Dfalse&sort_by=due_date ``` And these are the vikunja logs for the gethomepage widget info fetch ``` vikunja | time=2026-01-26T17:22:36.524-07:00 level=ERROR component=http method=GET uri="/api/v1/tasks/all?filter=done%3Dfalse&sort_by=due_date" status=400 latency=17.069974ms err="Invalid model provided: Bad Request" vikunja | time=2026-01-26T17:22:36.535-07:00 level=INFO component=http method=GET uri=/api/v1/projects status=200 latency=43.056503ms ``` Below is my compose stack: ```yaml name: vikunja networks: default: driver: bridge name: vikunja_default proxy: external: true services: db: container_name: postgres-vikunja image: postgres:${POSTGRES_VERSION}-alpine restart: unless-stopped healthcheck: test: [ "CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"] interval: 30s retries: 5 start_period: 20s timeout: 5s networks: - default volumes: - ${APPDATA}/postgres-vikunja/data:/var/lib/postgresql env_file: - ../global.env environment: POSTGRES_USER: ${POSTGRES_USER} POSTGRES_DB: ${POSTGRES_DB} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} label_file: - ../global.labels - ../postgres.labels vikunja: container_name: vikunja image: vikunja/vikunja:latest restart: unless-stopped depends_on: db: condition: service_healthy #ports: # - 3456:3456/tcp networks: - default - proxy volumes: - ${APPDATA}/vikunja/config:/etc/vikunja - ${APPDATA}/vikunja/data:/app/vikunja/files env_file: - ../global.env environment: VIKUNJA_DATABASE_TYPE: postgres VIKUNJA_DATABASE_HOST: postgres-vikunja VIKUNJA_DATABASE_USER: ${POSTGRES_USER} VIKUNJA_DATABASE_PASSWORD: ${POSTGRES_PASSWORD} VIKUNJA_DATABASE_DATABASE: ${POSTGRES_DB} VIKUNJA_SERVICE_PUBLICURL: https://<vikunja.domain> label_file: ../global.labels labels: net.unraid.docker.icon: https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/vikunja.png wud.tag.include: ^latest$$ wud.link.template: https://github.com/go-vikunja/vikunja/releases traefik.enable: true traefik.docker.network: proxy traefik.http.routers.vikunja.entrypoints: lansecure,websecure traefik.http.services.vikunja.loadbalancer.server.port: 3456 ``` My config.yml ```yaml # https://vikunja.io/docs/config-options/ service: JWTSecret: "<secret>" jwtttl: 259200 jwtttllong: 2592000 maxitemsperpage: 50 enablelinksharing: true enableregistration: false enabletaskattachments: true #timezone: MST timezone: America/Denver enabletaskcomments: true enableemailreminders: true enableuserdeletion: true allowiconchanges: true customlogourl: '' enablepublicteams: false typesense: enabled: false url: '' apikey: '' redis: enabled: false host: 'localhost:6379' password: '' db: 0 cors: enable: false origins: - "*" maxage: 0 mailer: enabled: true host: "smtp.gmail.com" port: 587 authtype: "plain" username: "<username>" password: "<password>" skiptlsverify: false fromemail: "<username>" queuelength: 100 queuetimeout: 30 forcessl: false log: path: <rootpath>logs enabled: true standard: "stdout" level: "INFO" database: "off" databaselevel: "WARNING" http: "stdout" echo: "off" events: "off" eventslevel: "info" mail: "off" maillevel: "info" ratelimit: enabled: false kind: user period: 60 limit: 100 store: keyvalue noauthlimit: 10 files: basepath: ./files # relative to the binary maxsize: 20MB migration: todoist: enable: false clientid: clientsecret: redirecturl: <frontend url>/migrate/todoist trello: enable: true key: <key> redirecturl: https://<vikunja domain>/user/settings/migrate/trello microsofttodo: enable: false clientid: clientsecret: redirecturl: <frontend url>/migrate/microsoft-todo avatar: gravatarexpiration: 3600 backgrounds: enabled: true providers: upload: enabled: true unsplash: enabled: false accesstoken: applicationid: legal: imprinturl: privacyurl: keyvalue: type: "memory" auth: local: enabled: false openid: enabled: true redirecturl: https://<authentik domain>/auth/openid/ providers: authentiklogin: name: authentik authurl: https://<authentik domain>/application/o/vikunja/ logouturl: https://<authentik domain>/application/o/vikunja/end-session/ clientid: <authentik id> clientsecret: <authentik secret> scope: openid email profile vikunja_scope forceuserinfo: false # Optional: Set to true to always use UserInfo endpoint instead of ID token claims, defaults to false metrics: enabled: false username: password: defaultsettings: avatar_provider: initials avatar_file_id: 0 email_reminders_enabled: true discoverable_by_name: true discoverable_by_email: false overdue_tasks_reminders_enabled: true overdue_tasks_reminders_time: 9:00 default_project_id: 0 week_start: 0 language: <unset> timezone: America/Denver webhooks: enabled: true timoutseconds: 30 proxyurl: proxypassword: ``` ### Vikunja Version v1.0.0-rc4 ### Browser and version Firefox 147.0.1 (64-bit) ### Can you reproduce the bug on the Vikunja demo site? No ### Screenshots _No response_
Author
Owner

@tomaskir commented on GitHub (Jan 27, 2026):

I can confirm the same issue as described above. Everything worked in RC3, this is a new issue in RC4.

On top of the 404 issue with Tasks, I also get this issue with Projects. The same workflow, just open a Project, and then F5 / refresh for it to break:

# direct click on Project from home:
todo.x.internal  | time=2026-01-27T02:23:10.167+01:00 level=INFO component=http method=GET uri=/api/v1/projects/6 status=200 latency=9.473629ms
todo.x.internal  | time=2026-01-27T02:23:10.177+01:00 level=INFO component=http method=GET uri="/api/v1/projects/6/views/23/tasks?sort_by%5B%5D=priority&order_by%5B%5D=desc&filter=&filter_include_nulls=false&s=&expand%5B%5D=comment_count&expand%5B%5D=is_unread&page=1" status=200 latency=19.035923ms

# refresh:
todo.x.internal  | time=2026-01-27T02:25:17.697+01:00 level=ERROR component=http method=GET uri=/projects/6/23 status=404 latency=75.26µs err="Not Found"

Same happens with Tasks as described in the above post.

<!-- gh-comment-id:3802591231 --> @tomaskir commented on GitHub (Jan 27, 2026): I can confirm the same issue as described above. Everything worked in RC3, this is a new issue in RC4. On top of the 404 issue with Tasks, I also get this issue with Projects. The same workflow, just open a Project, and then F5 / refresh for it to break: ``` # direct click on Project from home: todo.x.internal | time=2026-01-27T02:23:10.167+01:00 level=INFO component=http method=GET uri=/api/v1/projects/6 status=200 latency=9.473629ms todo.x.internal | time=2026-01-27T02:23:10.177+01:00 level=INFO component=http method=GET uri="/api/v1/projects/6/views/23/tasks?sort_by%5B%5D=priority&order_by%5B%5D=desc&filter=&filter_include_nulls=false&s=&expand%5B%5D=comment_count&expand%5B%5D=is_unread&page=1" status=200 latency=19.035923ms # refresh: todo.x.internal | time=2026-01-27T02:25:17.697+01:00 level=ERROR component=http method=GET uri=/projects/6/23 status=404 latency=75.26µs err="Not Found" ``` Same happens with Tasks as described in the above post.
Author
Owner

@kolaente commented on GitHub (Jan 27, 2026):

Duplicate of https://github.com/go-vikunja/vikunja/issues/2149

<!-- gh-comment-id:3803660584 --> @kolaente commented on GitHub (Jan 27, 2026): Duplicate of https://github.com/go-vikunja/vikunja/issues/2149
Author
Owner

@belidzs commented on GitHub (Jan 27, 2026):

Not sure if this is relevant, but I experience the same issue and I'm not using external IdP

Just tested on the latest docker image and the bug has been successfully fixed. Sorry for the noise

<!-- gh-comment-id:3806496082 --> @belidzs commented on GitHub (Jan 27, 2026): ~~Not sure if this is relevant, but I experience the same issue and I'm not using external IdP~~ Just tested on the latest docker image and the bug has been successfully fixed. Sorry for the noise
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/vikunja#6567