Dokploy

Vikunja

Vikunja is a self-hosted, open-source to-do list application to organize tasks, projects, and notes.

Vikunja logo

Configuration

version: "3.8"

services:
  vikunja:
    image: vikunja/vikunja
    environment:
      VIKUNJA_SERVICE_PUBLICURL: http://vikunja.local
      VIKUNJA_DATABASE_HOST: db
      VIKUNJA_DATABASE_PASSWORD: ${VIKUNJA_DATABASE_PASSWORD}
      VIKUNJA_DATABASE_TYPE: postgres
      VIKUNJA_DATABASE_USER: vikunja
      VIKUNJA_DATABASE_DATABASE: vikunja
      VIKUNJA_SERVICE_JWTSECRET: ${VIKUNJA_SERVICE_JWTSECRET}
    expose:
      - 3456
    volumes:
      - vikunja-files:/app/vikunja/files
    depends_on:
      db:
        condition: service_healthy
    restart: unless-stopped

  db:
    image: postgres:17
    environment:
      POSTGRES_PASSWORD: ${VIKUNJA_DATABASE_PASSWORD}
      POSTGRES_USER: vikunja
      POSTGRES_DB: vikunja
    volumes:
      - vikunja-db:/var/lib/postgresql/data
    restart: unless-stopped
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -h localhost -U $$POSTGRES_USER"]
      interval: 2s
      start_period: 30s

volumes:
  vikunja-files: {}
  vikunja-db: {}
[variables]
main_domain = "${domain}"
db_password = "${password:32}"
jwt_secret = "${jwt:db_password}"

[config]
[[config.domains]]
serviceName = "vikunja"
port = 3456
host = "${main_domain}"

[config.env]
VIKUNJA_SERVICE_PUBLICURL = "https://${main_domain}"
VIKUNJA_DATABASE_HOST = "db"
VIKUNJA_DATABASE_PASSWORD = "${db_password}"
VIKUNJA_DATABASE_TYPE = "postgres"
VIKUNJA_DATABASE_USER = "vikunja"
VIKUNJA_DATABASE_DATABASE = "vikunja"
VIKUNJA_SERVICE_JWTSECRET = "${jwt_secret}"

POSTGRES_PASSWORD = "${db_password}"
POSTGRES_USER = "vikunja"
POSTGRES_DB = "vikunja"

[[config.mounts]]
serviceName = "vikunja"
volumeName = "vikunja-files"
mountPath = "/app/vikunja/files"

[[config.mounts]]
serviceName = "db"
volumeName = "vikunja-db"
mountPath = "/var/lib/postgresql/data"

Base64

To import this template in Dokploy: create a Compose service → AdvancedBase64 import and paste the content below:

ewogICJjb21wb3NlIjogInZlcnNpb246IFwiMy44XCJcblxuc2VydmljZXM6XG4gIHZpa3VuamE6XG4gICAgaW1hZ2U6IHZpa3VuamEvdmlrdW5qYVxuICAgIGVudmlyb25tZW50OlxuICAgICAgVklLVU5KQV9TRVJWSUNFX1BVQkxJQ1VSTDogaHR0cDovL3Zpa3VuamEubG9jYWxcbiAgICAgIFZJS1VOSkFfREFUQUJBU0VfSE9TVDogZGJcbiAgICAgIFZJS1VOSkFfREFUQUJBU0VfUEFTU1dPUkQ6ICR7VklLVU5KQV9EQVRBQkFTRV9QQVNTV09SRH1cbiAgICAgIFZJS1VOSkFfREFUQUJBU0VfVFlQRTogcG9zdGdyZXNcbiAgICAgIFZJS1VOSkFfREFUQUJBU0VfVVNFUjogdmlrdW5qYVxuICAgICAgVklLVU5KQV9EQVRBQkFTRV9EQVRBQkFTRTogdmlrdW5qYVxuICAgICAgVklLVU5KQV9TRVJWSUNFX0pXVFNFQ1JFVDogJHtWSUtVTkpBX1NFUlZJQ0VfSldUU0VDUkVUfVxuICAgIGV4cG9zZTpcbiAgICAgIC0gMzQ1NlxuICAgIHZvbHVtZXM6XG4gICAgICAtIHZpa3VuamEtZmlsZXM6L2FwcC92aWt1bmphL2ZpbGVzXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIGRiOlxuICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeVxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG5cbiAgZGI6XG4gICAgaW1hZ2U6IHBvc3RncmVzOjE3XG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBQT1NUR1JFU19QQVNTV09SRDogJHtWSUtVTkpBX0RBVEFCQVNFX1BBU1NXT1JEfVxuICAgICAgUE9TVEdSRVNfVVNFUjogdmlrdW5qYVxuICAgICAgUE9TVEdSRVNfREI6IHZpa3VuamFcbiAgICB2b2x1bWVzOlxuICAgICAgLSB2aWt1bmphLWRiOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YVxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OiBbXCJDTUQtU0hFTExcIiwgXCJwZ19pc3JlYWR5IC1oIGxvY2FsaG9zdCAtVSAkJFBPU1RHUkVTX1VTRVJcIl1cbiAgICAgIGludGVydmFsOiAyc1xuICAgICAgc3RhcnRfcGVyaW9kOiAzMHNcblxudm9sdW1lczpcbiAgdmlrdW5qYS1maWxlczoge31cbiAgdmlrdW5qYS1kYjoge31cbiIsCiAgImNvbmZpZyI6ICJbdmFyaWFibGVzXVxubWFpbl9kb21haW4gPSBcIiR7ZG9tYWlufVwiXG5kYl9wYXNzd29yZCA9IFwiJHtwYXNzd29yZDozMn1cIlxuand0X3NlY3JldCA9IFwiJHtqd3Q6ZGJfcGFzc3dvcmR9XCJcblxuW2NvbmZpZ11cbltbY29uZmlnLmRvbWFpbnNdXVxuc2VydmljZU5hbWUgPSBcInZpa3VuamFcIlxucG9ydCA9IDM0NTZcbmhvc3QgPSBcIiR7bWFpbl9kb21haW59XCJcblxuW2NvbmZpZy5lbnZdXG5WSUtVTkpBX1NFUlZJQ0VfUFVCTElDVVJMID0gXCJodHRwczovLyR7bWFpbl9kb21haW59XCJcblZJS1VOSkFfREFUQUJBU0VfSE9TVCA9IFwiZGJcIlxuVklLVU5KQV9EQVRBQkFTRV9QQVNTV09SRCA9IFwiJHtkYl9wYXNzd29yZH1cIlxuVklLVU5KQV9EQVRBQkFTRV9UWVBFID0gXCJwb3N0Z3Jlc1wiXG5WSUtVTkpBX0RBVEFCQVNFX1VTRVIgPSBcInZpa3VuamFcIlxuVklLVU5KQV9EQVRBQkFTRV9EQVRBQkFTRSA9IFwidmlrdW5qYVwiXG5WSUtVTkpBX1NFUlZJQ0VfSldUU0VDUkVUID0gXCIke2p3dF9zZWNyZXR9XCJcblxuUE9TVEdSRVNfUEFTU1dPUkQgPSBcIiR7ZGJfcGFzc3dvcmR9XCJcblBPU1RHUkVTX1VTRVIgPSBcInZpa3VuamFcIlxuUE9TVEdSRVNfREIgPSBcInZpa3VuamFcIlxuXG5bW2NvbmZpZy5tb3VudHNdXVxuc2VydmljZU5hbWUgPSBcInZpa3VuamFcIlxudm9sdW1lTmFtZSA9IFwidmlrdW5qYS1maWxlc1wiXG5tb3VudFBhdGggPSBcIi9hcHAvdmlrdW5qYS9maWxlc1wiXG5cbltbY29uZmlnLm1vdW50c11dXG5zZXJ2aWNlTmFtZSA9IFwiZGJcIlxudm9sdW1lTmFtZSA9IFwidmlrdW5qYS1kYlwiXG5tb3VudFBhdGggPSBcIi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YVwiXG4iCn0=

Tags

productivity, tasks, self-hosted, project-management


Version: 0.23.0

On this page