KnowledgebaseSelf-Hosting › Vikunja on a LYLIX VPS — self-hosted task manager (Todoist alternative)

Vikunja on a LYLIX VPS — self-hosted task manager (Todoist alternative)

Vikunja is a self-hostable task manager with projects, kanban boards, gantt charts, sharing, reminders, and decent mobile clients. Closest to Todoist's feature set among the open-source options. Single Go binary, SQLite for tiny installs or PostgreSQL/MySQL for larger.

Install (Docker Compose, SQLite backend)

# /opt/vikunja/docker-compose.yml
services:
  vikunja:
    image: vikunja/vikunja:latest
    container_name: vikunja
    restart: unless-stopped
    environment:
      VIKUNJA_SERVICE_PUBLICURL: https://tasks.example.com
      VIKUNJA_SERVICE_JWTSECRET: <long-random-string>
      VIKUNJA_DATABASE_TYPE: sqlite
      VIKUNJA_DATABASE_PATH: /db/vikunja.db
      VIKUNJA_MAILER_ENABLED: "true"
      VIKUNJA_MAILER_HOST: smtp.example.com
      VIKUNJA_MAILER_PORT: "587"
      VIKUNJA_MAILER_USERNAME: tasks@example.com
      VIKUNJA_MAILER_PASSWORD: SMTP_PW
      VIKUNJA_MAILER_FROMEMAIL: tasks@example.com
    volumes:
      - /opt/vikunja/files:/app/vikunja/files
      - /opt/vikunja/db:/db
    ports:
      - "127.0.0.1:3456:3456"
cd /opt/vikunja
docker compose up -d

Reverse proxy as usual. First visit: register an account; the first registered becomes the admin.

Mobile clients

  • Official iOS / Android apps on the app stores. Configure with your self-hosted URL on first launch.
  • Web UI is a PWA — installable on phones for an app-like experience if you don't want the native app.

API and integrations

Vikunja has a full REST API and a Caldav endpoint. The Caldav part is useful — most calendar/task apps (Thunderbird, iOS Reminders via shim, third-party tools) can sync tasks via Caldav, putting Vikunja into a heterogeneous tool ecosystem.

Backups

Two paths matter:

  • /opt/vikunja/db/vikunja.db — the SQLite database (everything: tasks, projects, users, attachments metadata).
  • /opt/vikunja/files/ — uploaded attachments.

Stop the container for a clean SQLite snapshot; restart after backup.

When to use PostgreSQL instead of SQLite

SQLite is fine for personal use and small teams (under ~20 users). For larger deployments or when you want multi-replica setups, switch to Postgres by changing the DATABASE_TYPE env var + adding a postgres service to the compose file. Migration of existing data uses Vikunja's migrate CLI.

Also Read

« « Back

Powered by WHMCompleteSolution