Lists Not Found After Moving Hosts

Hello

I have migrated my docker environment to a new host. In order to move Vikunja, I copied the container data to the new host and modified the docker-compose file to use traefik v2 as opposed to v1 like i was using on the old host. Vikunja comes up as expected and I can login and see my tasks, however the lists do not show up and trying to create lists gives a Not Found error. I’m not sure what I’ve done wrong but need some assistance to get this working again. Thanks in advance!

Can you check in the database if the lists are there?

select * from lists should work.

The lists are there and I can reproduce the same error with a clean database/fresh install so I believe the issue is related to the change to traefik version 2. Here’s my docker-compose file:

version: ‘3’

services:
api:
image: vikunja/api:unstable
environment:
VIKUNJA_DATABASE_HOST: db
VIKUNJA_DATABASE_PASSWORD: supersecret
VIKUNJA_DATABASE_TYPE: mysql
VIKUNJA_DATABASE_USER: vikunja
VIKUNJA_DATABASE_DATABASE: vikunja
VIKUNJA_SERVICE_JWTSECRET: somejwtsecret
VIKUNJA_SERVICE_FRONTENDURL: https://myurl.com
VIKUNJA_SERVICE_TIMEZONE: America/New_York
VIKUNJA_MAILER_ENABLED: ‘true’
VIKUNJA_MAILER_HOST: smtp.gmail.com
VIKUNJA_MAILER_PORT: 587
VIKUNJA_MAILER_AUTHTYPE: plain
VIKUNJA_MAILER_USERNAME: email@gmail.com
VIKUNJA_MAILER_PASSWORD: somepassword
VIKUNJA_MAILER_SKIPTLSVERIFY: ‘false’
VIKUNJA_MAILER_FROMEMAIL: email@gmail.com
VIKUNJA_MAILER_FORCESSL: ‘false’
volumes:
- ./files:/app/vikunja/files
networks:
- web
- default
depends_on:
- db
restart: unless-stopped
labels:
- “traefik.enable=true”
- “traefik.http.routers.vikapi.rule=Host(myurl.com) && (PathPrefix(/api/v1) || PathPrefix(/dav/) || PathPrefix(/.well-known/))”
- “traefik.http.routers.vikapi.entrypoints=websecure”
- “traefik.http.services.vikapi.loadbalancer.server.port=3456”
- “traefik.http.routers.vikapi.service=vikapi”
- “traefik.http.routers.vikapi.tls.certresolver=myresolver”
- “traefik.docker.network=web”
frontend:
image: vikunja/frontend
labels:
- “traefik.enable=true”
- “traefik.http.routers.vikfront.rule=Host(myurl.com) && PathPrefix(/)”
- “traefik.http.routers.vikfront.entrypoints=websecure”
- “traefik.http.services.vikfront.loadbalancer.server.port=80”
- “traefik.http.routers.vikfront.service=vikfront”
- “traefik.http.routers.vikfront.tls.certresolver=myresolver”
- “traefik.docker.network=web”
networks:
- web
- default
restart: unless-stopped
db:
image: mariadb:10
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
environment:
MYSQL_ROOT_PASSWORD: supersupersecret
MYSQL_USER: vikunja
MYSQL_PASSWORD: supersecret
MYSQL_DATABASE: vikunja
volumes:
- ./db:/var/lib/mysql
restart: unless-stopped
command: --max-connections=1000

networks:
web:
external: true

Browsing to https://myurl.com/api/v1 results in {“message”:“missing or malformed jwt”}
Browsing to https://myurl.com/dav/ asks for login but seems to work
Browsing to https://myurl.com/.well-known/ asks for login and then gives {“message”:“Not Found”}

Can you check (either via curl calls directly to the api or with the network tab of the browser’s dev tools) if your frontend is connected to the correct api?

I tracked the issue down to using the unstable image for the API. At some point in the past I switched to the unstable to pick up a requested change. When migrating to the new host, the latest unstable image of API seems to break the database. I ended up creating a new instance on my new host without the unstable tag and it worked. I then manually recreated my tasks.

The changes from unstable will become stable at some point. Can you check how it broke? Were there any error messages during the upgrade?

We recently renamed lists to projects, including all database tables and api endpoints. Because of this you should use the unstable frontend if you’re using the unstable api because only those two are compatible. In your compose file there’s only the unstable api specified, not the unstable frontend. This might have caused the problem for you.