
Deploy Kaneo v2: Project Management - Jira & Linear Alternative
Open source Kanban with time tracking. File uploads work out of the box.
Just deployed
/var/lib/postgresql/data
SeaweedFS
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
- Wait for all three services to finish deploying.
- Open the
Kaneoservice, go to Settings, Networking, and click the generated*.up.railway.appdomain. Add a custom domain here instead if you have one. - Create the first account on the sign-in page. It becomes your workspace owner.
- Create a workspace, then a project, and start adding tasks.
- Once your team has signed up, set
DISABLE_REGISTRATIONtotrueon theKaneoservice to close public signup. It ships asfalseso 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) | Jira | Linear | Trello | |
|---|---|---|---|---|
| Pricing | Infrastructure only | Per seat | Per seat | Per seat |
| Your data | Your database | Vendor cloud | Vendor cloud | Vendor cloud |
| Source | MIT, open | Closed | Closed | Closed |
| Kanban and backlog | Yes | Yes | Yes | Boards only |
| Time tracking | Built in | Add-on | Limited | Power-up |
| Self-hosting | Yes | Data Center tier | No | No |
FAQ
How do I back up Kaneo?
- Run
pg_dumpon thePostgresservice or use Railway's database backups. - Copy the S3 bucket (
SeaweedFSor 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.
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

