Railway

Deploy Kaneo v2: Project Management - Jira & Linear Alternative

Open source Kanban with time tracking. File uploads work out of the box.

Deploy Kaneo v2: Project Management - Jira & Linear Alternative

/var/lib/postgresql/data

Just deployed

/data

Just deployed

Deploy and Host Kaneo on Railway

Kaneo is open source project management: Kanban boards, backlogs, sprints, time tracking, labels and comments, self-hosted on infrastructure you control. It replaces Jira, Linear and Trello for teams who do not want per-seat pricing or their roadmap sitting in a vendor's database.

This template runs the latest Kaneo v2 image against managed PostgreSQL, with object storage included so screenshots / attachments work out of the box.

About Hosting Kaneo

Kaneo v2 ships one container: nginx serves the built React frontend and reverse-proxies /api/ to the Node API beside it, on port 5173. It needs a PostgreSQL database and applies its own migrations at boot.

Other Kaneo templates skip storage (Kaneo uploads files to S3-compatible object storage, and that normally requires provisioning an S3 storage bucket and configuring CORS before anyone can attach screenshots / etc into tasks.) This template ships with S3 storage (SeaweedFS), so you get a fully working Kaneo deployment without additional work. (Note: Switching to external S3 storage is simple, instructions below).

Common Use Cases

  • Replacing a per-seat Jira or Linear subscription for a small team: same board, backlog and sprint workflow, cost that does not scale with headcount.
  • Client and agency project tracking that has to sit on infrastructure you control, under your own domain, for contractual or data-residency reasons.
  • A private roadmap for a startup or open source project, with public signup closed once the team is in.

Dependencies for Kaneo Hosting

  • PostgreSQL: every workspace, project, task, comment, time entry, user and session, on a persistent volume.
  • SeaweedFS: S3-compatible object storage for files and images attached to tasks and comments, on its own persistent volume. Kaneo keeps the object key in PostgreSQL and the bytes here.

Deployment Dependencies

Implementation Details

The Kaneo service runs ghcr.io/usekaneo/kaneo:latest.

The Postgres service is Railway's managed PostgreSQL 18 with a volume at /var/lib/postgresql/data.

The SeaweedFS service runs chrislusf/seaweedfs:4.41 in mini mode, and creates its bucket on first start.

Storage needs public URL: Kaneo hands your browser a presigned URL and the browser uploads straight to storage, so the S3 endpoint is public by necessity.

How to Upgrade: redeploy the Kaneo service. It tracks latest, so a redeploy pulls the current release, and Kaneo applies its own migrations on start. To hold a specific version instead, set the image tag to that release. Release notes: github.com/usekaneo/kaneo/releases. Note: Volumes attach to one container at a time, so redeploys cause a short outage.

📌 How to Use Kaneo After Deployment

  1. Wait for all three services to finish deploying.
  2. Open the Kaneo service, go to Settings, Networking, and click the generated *.up.railway.app domain. Add a custom domain here instead if you have one.
  3. Create the first account on the sign-in page. It becomes your workspace owner.
  4. Create a workspace, then a project, and start adding tasks.
  5. Once your team has signed up, set DISABLE_REGISTRATION to true on the Kaneo service to close public signup. It ships as false so the first account can be created.

Is Kaneo Free?

Kaneo is MIT licensed, with no paid tier, seat limit or feature gate in the self-hosted build. You pay for the infrastructure and nothing else; there are no third-party API costs. Kaneo also sells a hosted version at cloud.kaneo.app and the maintainer takes sponsorship at github.com/sponsors/andrejsshell. If self-hosting saves your team a subscription, supporting them is encouraged.

Monthly Cost of Self-Hosting Kaneo on Railway

It cost me about 6$/month (and 4$ / month with external storage) - your mileage may vary.

Kaneo vs Jira, Linear and Trello

Kaneo (self-hosted)JiraLinearTrello
PricingInfrastructure onlyPer seatPer seatPer seat
Your dataYour databaseVendor cloudVendor cloudVendor cloud
SourceMIT, openClosedClosedClosed
Kanban and backlogYesYesYesBoards only
Time trackingBuilt inAdd-onLimitedPower-up
Self-hostingYesData Center tierNoNo

FAQ

How do I back up Kaneo?

  • Run pg_dump on the Postgres service or use Railway's database backups.
  • Copy the S3 bucket (SeaweedFS or external) with any S3 client using the credentials on that service.

Can I use my own domain? Yes. Add it on the Kaneo service under Settings, Networking, wait for the DNS records it shows you to resolve, then redeploy the service. Kaneo picks the new domain up on its own.

Does my data survive a redeploy or a version bump? Yes. Everything is in PostgreSQL / SeaweedFS, on persistent volumes.

Optional features to enable if needed

To add any of the below features, configure the environment variables specified.

Email

Workspace invitations, notification delivery, email-otp sign-in.

SMTP_HOST
SMTP_PORT
SMTP_SECURE
SMTP_USER
SMTP_PASSWORD
SMTP_FROM

By default, this also switches sign-in to emailed verification codes - to keep email/password sign in, disable with DISABLE_EMAIL_OTP_SIGN_IN=true. Read more: SMTP configuration

GitHub Single sign-on (and more)

Add a Sign in with GitHub button. (For other providers like Google and more, read docs below.)

GITHUB_OAUTH_CLIENT_ID
GITHUB_OAUTH_CLIENT_SECRET

Note: Create a GitHub OAuth App first and set its redirect URI to: https://YOUR_DOMAIN/api/auth/callback/github.

Read more: GitHub provider, Google, Custom OAuth/OIDC

Using your own object storage instead of the bundled one

File uploads already work, so this is only for pointing Kaneo at Cloudflare R2, AWS S3 etc. Set these on the Kaneo service, replacing the references that point at SeaweedFS, then delete the SeaweedFS service and its volume.

S3_ENDPOINT
S3_BUCKET
S3_REGION
S3_ACCESS_KEY_ID
S3_SECRET_ACCESS_KEY
S3_FORCE_PATH_STYLE=false #true for path-style providers like MinIO

Note 1: your browser uploads straight to the bucket with a presigned PUT, so the endpoint must be reachable from your users' browsers and the bucket needs a CORS rule allowing your Kaneo domain. Most providers need this set once with aws s3api put-bucket-cors or their dashboard.

Note 2: leave both key variables unset to use an AWS IAM role instead. Setting only one is an error.

Read more: Object storage and uploads · Storage backends

Repository sync with GitHub or Gitea

Two-way sync between tasks and issues, link pull requests, and move a task when a branch is pushed or a PR merges.

This uses a GitHub App - follow the setup guide below.

GITHUB_APP_ID
GITHUB_APP_NAME
GITHUB_PRIVATE_KEY
GITHUB_WEBHOOK_SECRET

Read more: GitHub App setup, Gitea

Multiple replicas

Scale the Kaneo service past one replica. WebSocket updates fall back to an in-memory adapter on a single replica, which is what this template runs, so this is only needed if you scale out.

REDIS_URL

Redis Sentinel and Cluster are supported too. Read more: Environment variables

Features that need no configuration

  • MCP server. Every Kaneo instance exposes a Streamable HTTP endpoint at https://YOUR_DOMAIN/api/mcp, so Claude, Cursor and other MCP clients can read and manage your workspaces, projects, tasks, comments and labels. Nothing to install and nothing to set. Kaneo MCP server
  • Chat notifications. Slack, Discord and Telegram all work through incoming webhooks configured inside Kaneo, with no bot token, OAuth flow or environment variable. Slack · Discord · Telegram · Outgoing webhooks
  • File and image uploads. Paste an image into a task description or comment, or attach a PDF, CSV or ZIP. The bundled storage service is wired up and its bucket is created on first start.
  • A REST API and API keys. Reference

Why Deploy Kaneo 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 Kaneo 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.


Template Content

More templates in this category

View Template
Rocky Linux
[Jul'26] Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀

codestorm
40
View Template
Foundry Virtual Tabletop
A Self-Hosted & Modern Roleplaying Platform

Lucas
71
View Template
Letta Code Remote
Run a Letta Code agent 24/7. No inbound ports, just deploy.

Letta
51