Conquer Your Chaos: Hosting Your Own Vikunja Instance (For Free)

Vikunja Logo

If you are anything like me, there are constantly a million and one things on your to-do list, and another couple of hundred on the backlog. Well, maybe not THAT many, but it sure does feel like there are so many things that needs to get done, and one of the most stressful ones is to not forget anything that is on this imaginary list. But what if the list was not imaginary? What if there was software out there that can help organise our busy lives? Luckily there is, and it is called Vikunja. “But isn’t Vikunja a paid service?” I hear you say. Yes, it is. But today we look at hosting it at home, for free, so that you can get premium features of a premium app, without any subscription fees. Does that sound like a plan? Well, let’s dive in an take a closer look at Vikunja.

What is Vikunja?

Vikunja is an open-source, self-hostable task management tool designed to help users organize tasks, projects, and teams efficiently. It serves as an alternative to proprietary solutions like Trello, Asana, or Microsoft To Do. With Vikunja, you can create lists, set deadlines, assign tasks, and even collaborate with others—all while having full control over your data. (Yes, you can “collaborate” with your significant other on the shopping listas well…)

How Does Vikunja Work?

Vikunja uses a hierarchical structure. You organize your tasks within lists, which can belong to projects. This allows you to break down large goals into smaller, manageable steps. Think of it like folders within folders, keeping everything neatly organized.

Vikunja offers different deployment models:

  • Cloud: You can use Vikunja’s hosted service (more on this later).
  • Self-Hosted: You install Vikunja on your own server, giving you complete control. This is what we’ll focus on for home use.

Vikunja operates using a backend and a frontend:

  • Frontend: The web-based interface that allows you to create and manage tasks easily.
  • Backend: The server component that stores and processes your data. This can be hosted on Vikunja’s cloud service or self-hosted.

Vikunja Cloud: What You’re Paying For

Vikunja offers paid cloud plans that provide several benefits:

  • Convenience: No setup or maintenance required. Vikunja handles everything.
  • Accessibility: Access your tasks from anywhere with an internet connection.
  • Collaboration: Easily share lists and collaborate with others.
  • Support: Direct support from the Vikunja team.

Essentially, you’re paying for the convenience, infrastructure, and support. These plans are great for those who don’t want to deal with the technical details of self-hosting. If you prefer to rather pay for a subscription than install your own instance, I can confidently say that the subscription is well worth it. But if you want to host it yourself, you are in the right place.

Free at Home: The Power of Self-Hosting

The beauty of Vikunja’s open-source nature is that you can host it yourself, completely free of charge. This means you have complete control over your data and don’t have to rely on external services. All you need is a little technical know-how (which we’ll guide you through!).

What You Need to Host Vikunja at Home
  1. A Single Board Computer (SBC) or Computer: A Raspberry Pi, old laptop, or even a dedicated desktop computer can work. The key is that it needs to be on your home network and running 24/7 (or at least when you want to access Vikunja).
  2. Operating System: We recommend a lightweight Linux distribution like Ubuntu Server or Debian. These are free and well-suited for server tasks. For a Raspberry Pi, the normal Raspberry OS will suffice as well
  3. Docker (Optional but Recommended): Docker simplifies the installation and management of Vikunja. It creates a containerized environment, isolating Vikunja from the rest of your system. This is the option we will look at today for installation as it is (by far) the easiest.
  4. Vikunja Server Software (If not installed via Docker): This is the core application that you’ll install. This is a bit more complex, and not covered in this article.
  5. A Reverse Proxy (Optional but Recommended): This will allow you to access Vikunja from outside your home network securely and easily. We recommend Nginx Proxy Manager. Also remember to set up port forwarding on your router and get a Dynamic DNS set up to access your home network if you don’t have a static IP address.

Step-by-Step Guide to Installing Vikunja Locally

Step 1: Install Docker and Docker Compose

On a Debian-based system (like Ubuntu or Raspberry Pi OS), run:

sudo apt update && sudo apt upgrade -y
sudo apt install docker.io docker-compose -y

Ensure Docker starts automatically:

sudo systemctl enable --now docker

On windows, just go to https://www.docker.com/ and select “Download Docker Desktop and”folow the steps to install docker.

Step 2: Set Up a Docker Compose File

Create a directory for Vikunja:

mkdir ~/vikunja && cd ~/vikunja

Create a docker-compose.yml file:

version: '3'
services:
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:
- ./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:
- ./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
Step 3: Start Vikunja

Run the following command inside your Vikunja directory:

docker-compose up -d
Step 4: Access Vikunja

Once running, open a browser and go to:

http://<your-local-IP>:3456

Replace <your-local-IP> with your computer’s or Raspberry Pi’s IP address.

Step 5: Create an Admin Account

The first time you access Vikunja, it will prompt you to create an account. This will be your administrator account.

Considerations When Running Vikunja Locally

  1. Network Access: If you want to access Vikunja from multiple devices, ensure your computer or Raspberry Pi has a static IP or set up a local domain name.
  2. Backups: Regularly back up your Vikunja database and configuration files to prevent data loss.
  3. Power Consumption: A Raspberry Pi or low-power PC is recommended to keep electricity costs low.
  4. Security: Consider using Nginx as a reverse proxy with SSL encryption if you want to access Vikunja outside your home.
  5. Updates: Run docker-compose pull and docker-compose up -d occasionally to update Vikunja.

Conclusion

Vikunja is a fantastic tool for managing your tasks and projects. While the cloud option offers convenience, self-hosting Vikunja at home gives you complete control and is entirely free. With a little technical effort, you can transform a spare computer or SBC into your personal task management powerhouse, conquering your chaos and boosting your productivity. So, take the plunge, embrace the power of self-hosting, and say goodbye to scattered sticky notes forever!