diff --git a/docker/portainer/docker-compose.yml b/docker/portainer/docker-compose.yml
index fc847d49..32639b34 100644
--- a/docker/portainer/docker-compose.yml
+++ b/docker/portainer/docker-compose.yml
@@ -11,5 +11,39 @@ services:
       - "portainer_data:/data"
     restart: always
 
+  vikunja:
+    image: vikunja/vikunja
+    environment:
+      VIKUNJA_SERVICE_PUBLICURL: http://<the public ip or host where Vikunja is reachable>
+      VIKUNJA_DATABASE_HOST: db
+      VIKUNJA_DATABASE_PASSWORD: changeme
+      VIKUNJA_DATABASE_TYPE: mysql
+      VIKUNJA_DATABASE_USER: vikunja
+      VIKUNJA_DATABASE_DATABASE: vikunja
+      VIKUNJA_SERVICE_JWTSECRET: <a super secure random secret>
+    ports:
+      - 3456:3456
+    volumes:
+      - /home/mafyuh/vikunja/files:/app/vikunja/files
+    depends_on:
+      db:
+        condition: service_healthy
+    restart: unless-stopped
+  db:
+    image: mariadb:10
+    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
+    environment:
+      MYSQL_ROOT_PASSWORD: supersecret
+      MYSQL_USER: vikunja
+      MYSQL_PASSWORD: changeme
+      MYSQL_DATABASE: vikunja
+    volumes:
+      - /home/mafyuh/vikunja/db:/var/lib/mysql
+    restart: unless-stopped
+    healthcheck:
+      test: ["CMD-SHELL", "mysqladmin ping -h localhost -u $$MYSQL_USER --password=$$MYSQL_PASSWORD"]
+      interval: 2s
+      start_period: 30s
+
 volumes:
   portainer_data: