Questarr v1.1+ moves from PostgreSQL to SQLite to simplify deployment and reduce resource usage. This guide explains how to migrate your existing data.
- You have an existing Questarr installation running with Docker Compose.
- You have updated your repository files (specifically
docker-compose.migrate.yml).
The migration tool is compatible with all Questarr versions from v1.0.0 onwards. It automatically handles, table renames, column renames & missing columns.
-
Stop the current application:
docker compose down app
-
Run the migration: This special compose file spins up your old database and the new migration tool. It will automatically initialize the SQLite database (if it doesn't exist) and copy your data.
You can download the docker-compose.migrate.yml here.
docker compose -f docker-compose.migrate.yml up --abort-on-container-exit
-
Verify the output: A new file
sqlite.dbshould be created in thedata/directory (created in your current folder). -
Update your
docker-compose.yml: Update your maindocker-compose.ymlto use SQLite by removing thepostgresservice and updating theappservice to mount the SQLite data volume. Your configuration should look similar to this:services: app: image: ghcr.io/doezer/questarr:latest ports: - "5000:5000" volumes: - ./data:/app/data # Maps your SQLite database file environment: - SQLITE_DB_PATH=/app/data/sqlite.db ... rest of definitions
-
Start the new version:
docker compose up app -d
At this point, check that everything is as expected, and you are free to remove the db and the migrator from your docker project. Just add
--remove-orphansto the previous command (when starting the container).
Alternatively, you can run Questarr directly with Docker:
docker run -d -p 5000:5000 -v ./data:/app/data ghcr.io/doezer/questarr:latest- Permissions (Linux/macOS): If
sqlite.dbis created with root permissions and you cannot move it, usesudo chown $USER:$USER data/sqlite.db. - SQLITE_IOERR_FSTAT (Windows/Docker Desktop): If you see this error, it usually means the
data/folder on your host has incorrect permissions or was created by Docker as root. Ensure thedata/folder exists before starting the container and that your user has full read/write access to it. - Missing Data: If the migration says "No rows found", ensure your
postgres_datavolume is correctly mapped. The migration tool uses the defaultpostgres_datavolume name.