---
title: "Deploy Vikunja"
description: "Open-source task and project management with teams and calendars."
category: "Other"
url: https://railway.com/deploy/vikunja
---

# Deploy Vikunja

Open-source task and project management with teams and calendars.

**[Deploy Vikunja on Railway](https://railway.com/template/vikunja)**

- **Creator:** Agaz Self-Host
- **Category:** Other
- **Total deploys:** 2

## Template content

### MariaDB https://raw.githubusercontent.com/docker-library/docs/master/mariadb/logo.png

- **Image:** mariadb:10.11.8
- **Start command:** `docker-entrypoint.sh mariadbd --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci`

### Vikunja https://raw.githubusercontent.com/go-vikunja/website/main/public/favicon.svg

- **Image:** vikunja/vikunja:2.4.0
- **Health check:** /health
- **Public domain:** Yes

## Documentation

# Deploy and Host Vikunja on Railway

Vikunja is an open-source task and project manager for individuals and teams. It combines lists, boards, tables, calendars, and Gantt views with assignments, due dates, recurring tasks, labels, collaboration, CalDAV, and an API, while keeping application data and uploaded attachments under your control.

## About Hosting Vikunja

Hosting Vikunja requires the application, a durable SQL database, persistent attachment storage, and a canonical public URL. This template runs the official Vikunja 2.4.0 image on port 3456 alongside MariaDB 10.11.8. Vikunja reaches MariaDB only through Railway's private network, while Railway terminates public HTTPS and injects the generated hostname into `VIKUNJA_SERVICE_PUBLICURL`. MariaDB stores its data at `/var/lib/mysql`, and Vikunja stores uploaded files at `/app/vikunja/files`. Database migrations run automatically during startup, and Railway checks the unauthenticated `/health` endpoint before marking Vikunja healthy.

## Common Use Cases

- Managing personal tasks, recurring routines, and calendar commitments
- Coordinating team projects with assignments, boards, labels, and comments
- Replacing hosted task managers with a self-hosted API and CalDAV-compatible service

## Dependencies for Vikunja Hosting

- MariaDB 10.11.8 for users, projects, tasks, settings, and application metadata
- Persistent Railway volumes for MariaDB data and Vikunja file attachments

### Deployment Dependencies

- [Vikunja documentation](https://vikunja.io/docs/)
- [Vikunja configuration options](https://vikunja.io/docs/config-options)
- [Vikunja Docker deployment guide](https://vikunja.io/docs/full-docker-example)
- [Vikunja source repository](https://github.com/go-vikunja/vikunja)
- [Umbrel Vikunja compose file](https://github.com/getumbrel/umbrel-apps/blob/master/vikunja/docker-compose.yml)
- [Official `vikunja/vikunja:2.4.0` image](https://hub.docker.com/r/vikunja/vikunja)
- [Official `mariadb:10.11.8` image](https://hub.docker.com/_/mariadb)

## Implementation Details

- **Vikunja:** immutable image tag `vikunja/vikunja:2.4.0`, public Railway domain on port 3456, `/health` readiness check, persistent volume at `/app/vikunja/files`, and `ON_FAILURE` restart policy with ten retries.
- **MariaDB:** immutable image tag `mariadb:10.11.8`, private networking only, persistent volume at `/var/lib/mysql`, UTF-8 server flags from the upstream and Umbrel examples, and `ON_FAILURE` restart policy with ten retries.
- **Private references:** Vikunja resolves the exact `MariaDB` private domain and references the one database password generated on that service. A separate generated Vikunja service secret keeps sessions valid across restarts.
- **Volume permissions:** Railway mounts volumes as root, while the Vikunja image normally runs as UID 1000. `RAILWAY_RUN_UID=0` applies Railway's documented compatibility setting so file uploads remain writable.
- **Secure first run:** local authentication is enabled so the deployer can register the first account. Public teams, public link sharing, and demo mode are disabled. Immediately after creating the intended account, set `VIKUNJA_SERVICE_ENABLEREGISTRATION=false` and redeploy; the verified source deployment is already closed.

## Why Deploy Vikunja on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying Vikunja on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.

---

*This is a community Railway template and is not officially affiliated with the Vikunja project.*


## Similar templates

- [Rocky Linux](https://railway.com/deploy/rocky-linux) — [Jul'26] Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀
- [Foundry Virtual Tabletop](https://railway.com/deploy/X5tR6G) — A Self-Hosted & Modern Roleplaying Platform
- [Letta Code Remote](https://railway.com/deploy/letta-code-remote) — Run a Letta Code agent 24/7. No inbound ports, just deploy.

Open this page in a browser: https://railway.com/deploy/vikunja
