---
title: "Deploy opendesk"
description: "Open-source helpdesk: shared inbox, live chat, help center, AI"
category: "Other"
url: https://railway.com/deploy/deploy-opendesk-helpdesk
---

# Deploy opendesk

Open-source helpdesk: shared inbox, live chat, help center, AI

**[Deploy opendesk on Railway](https://railway.com/template/deploy-opendesk-helpdesk)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/deploy-opendesk-helpdesk/manifest.json

- **Creator:** onepush
- **Category:** Other

## Template content

### opendesk

- **Image:** ghcr.io/onepush-dev/opendesk:v0.4.7
- **Health check:** /readyz
- **Public domain:** Yes

### realtime

- **Image:** ghcr.io/onepush-dev/opendesk-realtime:v0.4.7
- **Health check:** /health
- **Public domain:** Yes

### Postgres

- **Image:** pgvector/pgvector:0.8.7-pg17

## Documentation

# Deploy and Host self hosted opendesk (Helpdesk) on Railway

This independent packaging template deploys the opendesk stack: the web app and API with embedded NATS, a separate realtime gateway for live updates, and pgvector PostgreSQL 17. It is not an official or endorsed listing.

## About Hosting opendesk open-source software on Railway (self hosted opendesk template)

Running opendesk on Railway means your tickets, customer messages, mailbox credentials and help center content live in a Postgres database and attachment volume that you own.

## Why Deploy opendesk, the open-source helpdesk on Railway (Railway Free Trial)

Zendesk is a hosted support platform, while opendesk is Apache-2.0 and free to self-host, so you pay for infrastructure and any providers you add. You keep control of your data, but upgrades, backups and mail setup become your job.

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 opendesk 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.

### Railway vs Other Hosting Providers and VPS for opendesk self hosting

Self-hosting means choosing where the app, realtime gateway and Postgres run; the main difference is setup effort.

| Provider | What You Get with Railway | What You Get with the Other Provider |
| --- | --- | --- |
| DigitalOcean | Three linked services with domains, volumes and private networking wired up | A Droplet or managed database you configure yourself, including Docker, Caddy and networking |
| AWS | Usage-based services deployed from one template, with no VPC or load balancer setup | Broad control over networking, IAM and storage, but more parts to design and maintain |
| Hetzner | Railway manages the host OS, but you still secure the app and back up the database, attachments and keys | Low-cost bare servers where you handle the OS, Docker, TLS and updates |

If you would rather manage a server and accept that work, a VPS gives you full control over the stack.

## Common Use Cases for hosted opendesk

- **Shared support tickets and internal notes:** One inbox with statuses, priorities, assignees and tags, plus internal notes for handoffs.
- **An embedded live-chat widget:** Drop the chat widget onto your site and visitors talk to the team in real time. Chat traffic uses the separate realtime domain, so keep that domain reachable.
- **Publishing a help center:** Publish articles in collections to a public help center on your domain.
- **Ticket automation and SLA tracking:** Rules on ticket events and per-priority response targets, with breaches shown in reports.
- **AI drafts and triage after provider configuration:** After you add an Anthropic or OpenAI-compatible API key, the built-in assistant drafts replies and suggests triage. These features stay off until a provider is set.

## Dependencies for opendesk Docker hosted on Railway

This template runs three services: the opendesk app, a realtime socket gateway, and a pgvector PostgreSQL 17 database. Mail and AI are optional integrations.

### Deployment Dependencies for Managed opendesk Service (opendesk app with embedded NATS, a separate realtime socket service and pgvector PostgreSQL 17)

The opendesk service runs the web app, API, workers and embedded NATS, with a volume at /data and /readyz as its health check. All 18 template variables are generated or referenced, so no keys are required to boot. Mail and AI config are optional; real mail is not delivered while MAIL_DRIVER is log. Realtime gets its own public domain.

### Implementation Details for opendesk (Using onepush-dev v0.4.7 images based on upstream releases, with two public domains and private NATS wiring)

The opendesk image is ghcr.io/onepush-dev/opendesk:v0.4.7 and the realtime image is ghcr.io/onepush-dev/opendesk-realtime:v0.4.7. Postgres uses pgvector/pgvector:0.8.7-pg17.

## How does opendesk compare against other tools

### opendesk vs Zendesk (Zendesk Alternative)

- **Hosting model:** Zendesk is hosted. opendesk runs the same code on opendesk Cloud or your own infrastructure.
- **Cost shape:** Zendesk has its own pricing. opendesk is free to self-host, so you pay for the server and any providers you add.
- **Where Zendesk wins:** Long track record, large app marketplace and mature enterprise tooling. opendesk has fewer prebuilt integrations.

### opendesk vs Intercom (Intercom Alternative)

- **Scope:** Intercom leans toward messaging. opendesk combines a shared inbox, live chat and help center in one self-hostable app.
- **Data control:** On Railway, conversations and attachments live in your own Postgres and volume.
- **Where Intercom wins:** More mature chat and product tours, and easier if you want zero operations work.

### opendesk vs Chatwoot (Chatwoot Alternative)

- **Shared ground:** Chatwoot is also self-hostable customer support, so both are real options for owning your helpdesk.
- **Architecture:** opendesk ships as one Go binary, an Elixir realtime gateway and Postgres, with NATS embedded. Check the Chatwoot docs for its own stack.
- **Where Chatwoot wins:** It has a larger, longer-running community and broader channel integrations.

### opendesk with Docker Compose vs opendesk on Railway (Self-Hosting Options)

- **Setup effort:** Compose on a VPS means you manage Caddy, TLS, the firewall and backups. The Railway template wires everything with generated secrets.
- **Networking:** On Railway the realtime gateway gets its own public domain and reaches the app over the private network.
- **Where Compose wins:** Control over host, proxy and upgrades, and no usage-based Railway charges.

## How to use opendesk on Railway?

1. Open the app domain and sign up; the first account creates its workspace.
2. Set SIGNUP_ENABLED=false once the team is in.
3. Set MAIL_DRIVER=smtp with SMTP_HOST, SMTP_PORT, SMTP_USERNAME and SMTP_PASSWORD before expecting invitation mail.
4. Configure a support mailbox integration.
5. Add the chat widget.
6. Verify the realtime domain is reachable with the check below.

```bash
curl -i https://your-domain/readyz
curl -i https://your-realtime-domain/health
```

## How to self host opendesk on other VPS Services (opendesk self hosting guide)

### Clone the Repository

Start on a Linux server with Docker and a domain pointing at it. The upstream project is Apache-2.0 licensed, so read the installer before running it.

```bash
git clone https://github.com/useopendesk/opendesk && cd opendesk
```

### Install Dependencies

The installer needs Docker running. Confirm it before continuing.

```bash
docker version
```

### Configure Environment Variables

Review the install script, then run it. It asks for your domain and an email for the TLS certificate, and generates every secret for you.

```bash
curl -fsSL https://opendesk.sh/install.sh -o install.sh
sha256sum install.sh
sh install.sh --dry-run
```

A checksum alone does not prove the file is authentic. Compare the sha256sum output against the published install.sh.sha256 before running it.

Back up the generated `.env`, because losing `CREDENTIALS_KEY` makes stored mailbox credentials unreadable. Keep `NATS_TOKEN` and the other shared secrets private too.

### Start the opendesk Application

Run the installer, or build from source with the Makefile target below. Do not run development commands such as `make dev-db` for production.

```bash
sh install.sh
# or, building from source:
make selfhost-up
```

Upstream Caddy routes the app and `/socket` on one domain, while Railway gives the realtime gateway its own public domain. Railway handles TLS, private networking between services and volumes for you.

## Official Pricing of opendesk (opendesk pricing)

opendesk is open-source software licensed under Apache-2.0, and it is free to self-host. The software itself has no license fee and no usage limits for self-hosted installs.

## opendesk hosted vs self hosted comparison (Pricing, features, costs, and more)

opendesk Cloud and self-hosted opendesk run the same code. Self-hosting means you manage keys, mail, backups and upgrades yourself.

### Monthly cost of self hosting opendesk on Railway

On Railway the cost is usage-based, depending on RAM and CPU for the app, realtime and Postgres services, plus attachment volume size. Watch usage as ticket volume grows.

### System Requirements for Hosting opendesk on a VPS

A VPS needs enough memory and CPU to run the opendesk app, the realtime gateway and PostgreSQL 17 together, plus disk for the database and attachments.

## Frequently Asked Questions (FAQs)

### Can anyone register on a new opendesk instance?

Yes, sign-up is open by default, so anyone who finds the URL can create an account until you set SIGNUP_ENABLED=false.

### Why are invitation and verification emails only logged?

The template ships with MAIL_DRIVER=log, which prints outgoing mail to the service logs. To send real email, set MAIL_DRIVER=smtp along with your SMTP host, port, username and password.

### Why does this template use two public domains?

The web app and API run on the main domain; the realtime socket gateway runs on its own domain for live updates. The gateway URL and allowed origins are wired automatically.

### Can opendesk receive mail on port 25 directly?

No, inbound SMTP on port 25 is not included in this template.

### Where is the instance admin panel?

The admin panel at /admin/ requires an explicit grant, which you give with the opendesk admin grant command run as a one-off task against the same database.

### Why should I keep CREDENTIALS_KEY safe?

CREDENTIALS_KEY encrypts stored mailbox passwords and webhook secrets. If you lose it, those credentials become unreadable, so back it up with your database.


## Similar templates

- [Rocky Linux](https://railway.com/deploy/rocky-linux) — 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/deploy-opendesk-helpdesk
