Skip to main content

Vikunja Deployment | Part 6

fossda-vikunja.png

What is Vikunja?

Vikunja is a self-hosted productivity tool and task manager designed to help individuals and teams stay organized and focused. It is an open-source software that allows users to create and manage tasks, to-do lists, and projects, set deadlines, assign tasks, and collaborate with others in real-time.

Vikunja is designed to be flexible and customizable, so users can adapt it to fit their specific needs and workflows. It offers a range of features, including multiple user accounts, tags and labels, reminders, attachments, comments, and a REST API.

Vikunja is available for free and can be installed on a server or accessed through the cloud. It is built with modern technologies, including Go and Vue.js, and is actively developed and maintained by a community of contributors.

Get 20€ in cloud credits to get started with Hetzner on this link.

Installation

In this case, we will use our Portainer instance to deploy Vikunja stack, but first follow these instructions.

Video Walkthrough

Prepare folders

First, we need to prepare our folders inside of our server.

  1. Log into your server and create vikunja folder:
mkdir vikunja
  1. Navigate into vikunja folder:
cd vikunja
  1. Create db-data folder & files folder:
mkdir db-data && mkdir files
  1. Create nginx.conf file:
nano nginx.conf
  1. Paste following code into nginx.conf file:
server {
    listen 80;

    location / {
        proxy_pass http://frontend:80;
    }

    location ~* ^/(api|dav|\.well-known)/ {
        proxy_pass http://api:3456;
        client_max_body_size 20M;
    }
}
  1. Save file and exit
  2. Get file path and copy it into clipboard. We will need this to edit our installation file:
pwd

Create stack

Open your Portainer instance, create new stack and paste following installation code:

version: '3'

services:
  db:
    image: mariadb:latest
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    environment:
      MYSQL_ROOT_PASSWORD: [YOUR VALUE]
      MYSQL_USER: [YOUR VALUE]
      MYSQL_PASSWORD: [YOUR VALUE]
      MYSQL_DATABASE: [YOUR VALUE]
    volumes:
      - [pwd-path]/db-data:/var/lib/mysql
    restart: unless-stopped
  api:
    image: vikunja/api:latest
    environment:
      VIKUNJA_DATABASE_HOST: db
      VIKUNJA_DATABASE_PASSWORD: [YOUR VALUE]
      VIKUNJA_DATABASE_TYPE: mysql
      VIKUNJA_DATABASE_USER: [YOUR VALUE]
      VIKUNJA_DATABASE_DATABASE: [YOUR VALUE]
      VIKUNJA_SERVICE_ENABLETASKATTACHMENTS: 1
      VIKUNJA_SERVICE_ENABLEREGISTRATION: 1
      VIKUNJA_SERVICE_ENABLEEMAILREMINDERS: 1
      VIKUNJA_MAILER_ENABLED: 1
      VIKUNJA_MAILER_FORCESSL: 0
      VIKUNJA_MAILER_HOST: [YOUR VALUE]
      VIKUNJA_MAILER_PORT: 587
      VIKUNJA_MAILER_USERNAME: [YOUR VALUE]
      VIKUNJA_MAILER_PASSWORD: [YOUR VALUE]
      VIKUNJA_MAILER_FROMEMAIL: [YOUR VALUE]
      VIKUNJA_SERVICE_FRONTENDURL: [YOUR VALUE]
      VIKUNJA_SERVICE_TIMEZONE: [YOUR VALUE]
    volumes: 
      - [pwd-path]/files:/app/vikunja/files
    depends_on:
      - db
    restart: unless-stopped
  frontend:
    image: vikunja/frontend:latest
    restart: unless-stopped
  proxy:
    image: nginx:latest
    ports:
      - 8022:80
    volumes:
      - [pwd-path]/nginx.conf:/etc/nginx/conf.d/default.conf:ro
    depends_on:
      - api
      - frontend
    restart: unless-stopped

Replace [YOUR VALUE] with your own values!

Replace [pwd-path] with your copied value!

Make sure everything is alright and click deploy stack.

Create domain

Open your domain manager and point your desired subdomain or domain to your server ip.

Create SSL & Proxy

In NPM create ssl certificate for your desired url and create proxy host with your server ip on port 8022 (if you changed your port, replace it with your value).

Create Vikunja account

Vikunja does not contains any default account, so when you visit your url, you will need to create account.

About Webnestify

Imagine a world where you can focus on your business and less time maintaining your cloud infrastrucure. With Webnestify cloud based solutions, we provide customized solutions for all types of companies to meet their needs; no matter how big or small they may be!

Read our reviews on Trustpilot!

Subscribe to our YouTube channel!

If you need to setup your own Docker instances or need help with security, visit our Docker deployment service.