---
title: "Deploy Discord Ticket Bot"
description: "Discord Ticket + Web Panel with reports & config+. 3 langs (PT, ES, EN)."
category: "Bots"
url: https://railway.com/deploy/discord-ticket
---

# Deploy Discord Ticket Bot

Discord Ticket + Web Panel with reports & config+. 3 langs (PT, ES, EN).

**[Deploy Discord Ticket Bot on Railway](https://railway.com/template/discord-ticket)**

- **Creator:** Jorge Henrique's Projects
- **Category:** Bots
- **Total deploys:** 21

## Template content

### Discord Pro Ticket https://devicons.railway.com/i/discord.svg

- **Source:** jorgehenrrique/docker-discord-bot-pro-ticket
- **Public domain:** Yes

### MongoDB https://devicons.railway.app/i/mongodb.svg

- **Image:** mongo:8.0
- **Start command:** `docker-entrypoint.sh mongod --ipv6 --bind_ip ::,0.0.0.0 --setParameter diagnosticDataCollectionEnabled=false`

## Documentation

# Deploy and Host Pro Ticket Discord Bot on Railway

Professional Discord bot for ticket management with 30+ slash commands, Steam OAuth verification, dynamic voice channels, welcome DMs, mutual rating system, smart tags, custom fields, HTML transcripts, and scheduled reports. Multi-language: PT-BR, EN-US, ES-ES. One-click deploy — just provide bot token and server ID.

## About Hosting Pro Ticket Discord Bot

Hosting Pro Ticket on Railway provides a complete infrastructure with MongoDB, automatic SSL, and on-demand scalability. This template includes pre-configured environment variables and automatic database connection. The deploy configures the bot with all dependencies, making it production-ready in minutes — just provide the Discord bot token and server ID. All other variables (database, collections, API URL) are auto-configured. Steam verification optionally requires Public Networking enabled on port 8080.

## Common Use Cases

- **Game Server Support** — Tickets categorized by game server (DayZ, Rust, SCUM, etc.), mandatory Steam verification, staff performance tracking, and automatic HTML transcripts
- **Professional Helpdesk** — SLA tracking (response/resolution times), staff reports, smart tags, custom fields, announcements, configurable notifications, and scheduled reports (daily/weekly/monthly)
- **Community Management** — Dynamic voice channels, welcome DMs, identity verification, mutual user↔staff rating system, behavior tracking, blacklist, and anti-flood protection

## Dependencies for Pro Ticket Discord Bot Hosting

- **MongoDB** — Stores tickets, settings, users, and verifications (included in template)
- **Node.js >= 20** — Bot runtime (handled automatically by Railway)
- **Discord Bot Token** — From Discord Developer Portal (see setup guide below)
- **Discord Client Secret** — OAuth2 Client Secret from Discord Developer Portal (see setup guide below)
- **Discord Server ID** — The server where the bot will operate (see setup guide below)
- **Steam API Key** _(optional)_ — Only for Steam verification image display ([get here](https://steamcommunity.com/dev/apikey))

### Deployment Dependencies

- [Railway Account](https://railway.com)
- [Discord Developer Portal](https://discord.com/developers/applications) — To create and configure the bot
- A Discord server where you have Administrator permission

### Implementation Details

#### Pre-Deploy: Discord Bot Setup

**Step 1 — Create Application:**
Go to [Discord Developer Portal](https://discord.com/developers/applications) → Click "New Application" → Name it (e.g. "My Ticket Bot") → Click "Create".

**Step 2 — Configure Bot:**
In the left menu, click "Bot":

- **Disable** "Public Bot" (ensures only you can add the bot to servers)
- **Enable** "Server Members Intent" (required for welcome DMs and member detection)
- **Enable** "Message Content Intent" (required for ticket activity tracking and anti-flood)
- Presence Intent is NOT required

**Step 3 — Get Bot Token:**
On the "Bot" page → Click "Reset Token" → **Copy and save the token securely**. The token is shown only once. Never share it — if compromised, reset it immediately.

**Step 4 — Get Client Secret:**
In the left menu, click **"OAuth2"** → **"General"** → Under "Client Information", click **"Reset Secret"** (if you don't have one saved) → **Copy and save the Client Secret** securely. It is shown only once; use it for the variable `DISCORD_CLIENT_SECRET`. If you lose it, reset the secret again in the portal.

**Step 4.1 — OAuth2 Redirect URL (for web panel):** After you deploy on Railway, you will add the OAuth2 redirect URL in the Discord Developer Portal so the web panel login works. See **Post-Deploy Step 2** below — you need your Railway public domain first.

**Step 5 — Invite Bot to Your Server:**
In the left menu, click "OAuth2" → Under "Scopes", check `bot` and `applications.commands` → Under "Bot Permissions", check `Administrator` → Copy the generated URL at the bottom → Open it in your browser → Select your server → Click "Authorize".

**Step 6 — Get Server ID:**
In Discord: go to User Settings (⚙️) → Advanced → Enable **"Developer Mode"** → Close settings → Right-click your server icon in the server list → Click **"Copy Server ID"**. Save this number.

**Step 7 — Steam API Key (Optional):**
Only used do see the user's profile image in the Steam verification. Go to [steamcommunity.com/dev/apikey](https://steamcommunity.com/dev/apikey) → Login → Register a key → Copy it.

#### Deploy

Click the **Deploy** button → Set the required variables:

- `BOT_TOKEN` — Your bot token (Step 3)
- `DISCORD_CLIENT_SECRET` — Your OAuth2 Client Secret (Step 4)
- `GUILD_ID` — Your server ID (Step 6)
- `STEAM_API_KEY` — _(Optional)_ Steam API key (Step 7)

All other variables are pre-configured automatically. Click Deploy and wait 2-5 minutes.

**Web panel:** After configuring the OAuth2 redirect (Post-Deploy Step 2), open your Railway public URL in the browser to access the web panel. Log in with Discord and use it to view ticket and staff statistics/reports, change bot settings, and manage configuration — in addition to slash commands in Discord.

#### Post-Deploy Steps

1. Verify the bot appears **online** in your Discord server
2. **Configure OAuth2 Redirect (for web panel):** The template generates a public URL automatically.
   - **Copy the URL in Railway:** Open your project → select the Pro Ticket service → **Settings** → **Networking**. The public domain is shown there (e.g. `pro-ticket-production-xxxx.up.railway.app`). Copy that domain.
   - **Add it in Discord:** Go to [Discord Developer Portal](https://discord.com/developers/applications) → your application → **OAuth2** → **Redirects** → **Add Redirect**. In the redirect field, paste this URL, replacing `YOUR_RAILWAY_DOMAIN` with the domain you copied:
     ```
     https://YOUR_RAILWAY_DOMAIN/api/auth/discord/callback
     ```
     Example: if your domain is `pro-ticket-abc123.up.railway.app`, the redirect must be `https://pro-ticket-abc123.up.railway.app/api/auth/discord/callback`. Then click **Save**.

3. Use `/start` to run initial setup: select **timezone**, **language** (PT-BR/EN-US/ES-ES), **ticket category**, **transcript channel**, **attachments channel**, and **staff role**
4. Use `/ticket setup-panel` in the channel where users should open tickets
5. _(Optional)_ For Steam verification: in Railway, go to your bot service → Settings → Networking → Public Networking → set port `8080`. Then in Discord use `/config-verification` commands and `/config-steam-buttons`
6. _(Optional)_ Configure welcome DMs: `/welcome-message`
7. _(Optional)_ Set up auto voice channels: `/autovoice add`
8. Explore all commands: `/help admin`

#### Key Features

After the bot is **online**, run **`/start`** for the initial setup (timezone, language, ticket category, transcript/attachments channels, staff role). Then publish the panel with `/ticket setup-panel`, or you can use the web panel to publish the panel.

![Ticket open panel](https://raw.githubusercontent.com/jorgehenrrique/docker-discord-bot-pro-ticket/main/.github/images/discord-ticket-panel.png)

![Web dashboard](https://raw.githubusercontent.com/jorgehenrrique/docker-discord-bot-pro-ticket/main/.github/images/web-dashboard.png)

![Reports](https://raw.githubusercontent.com/jorgehenrrique/docker-discord-bot-pro-ticket/main/.github/images/web-reports.png)

![Ticket controls](https://raw.githubusercontent.com/jorgehenrrique/docker-discord-bot-pro-ticket/main/.github/images/discord-ticket-controls.png)

![Steam verification](https://raw.githubusercontent.com/jorgehenrrique/docker-discord-bot-pro-ticket/main/.github/images/web-verification.png)

- **Web panel** — Discord OAuth login; live open tickets; staff/user stats; live transcripts; full settings UI (PT-BR / EN-US / ES-ES)
- **Tickets** — Game servers/just any server + types with dedicated **staff roles**; smart **tags** that can swap channel permissions (hand off to another team); custom fields, announcements, invites, claim/finalize, voice rooms, auto-close/reopen, blacklist, behavior score
- **Ratings & reports** — Mutual user↔staff ratings; scheduled or on-demand reports; charts + JSON/CSV export
- **Steam verification** — OAuth + verified role; optional external reward webhook; public API to lookup/create/delete Discord↔Steam links
- **Moderation** — Anti-flood (timeout) and anti-spam **bait channel** (kick / timeout / ban)
- **Community modules** — Channel messages (sticky / replace / post-only); text commands; mention replies; self-assign role menus (buttons / select / reactions)
- **Also** — Welcome DMs, auto-voice, notifications, 30+ slash commands (`/configt`, `/ticketadm`, …)

##### Commands inside an open ticket

- `/close` — Owner / Staff / Admin — Close the current ticket
- `/finalize` — Staff / Admin — Post finalize message (user closes or continues)
- `/ticketc invite` · `remove` · `list` — Owner\* / Staff / Admin — Manage guests (access, history, expiry)
- `/reputation positive` · `negative` · `view` — Staff / Admin — Score or view ticket-owner reputation
- `/timer` — Staff / Admin — Deadline countdown with auto alert & mentions

Related (outside the ticket channel): `/open` — Staff/Admin open a ticket on behalf of another user.

\*Owner invites only if enabled in settings. Channel buttons also cover claim, voice, tags, keep-open, etc.

More screenshots & details: [docker-discord-bot-pro-ticket](https://github.com/jorgehenrrique/docker-discord-bot-pro-ticket)

## Why Deploy Pro Ticket Discord Bot on Railway?

Railway hosts the full stack with minimal setup — MongoDB, SSL, and scaling included.

- **Integrated MongoDB** — Connected automatically via the template
- **Automatic SSL/HTTPS** — Required for Steam OAuth and web panel login
- **One-Click Deploy** — Pre-configured env vars; real-time logs; 24/7 uptime

[**Support**](https://discord.gg/tEp2D7MbjZ)


## Similar templates

- [Telegram JavaScript Bot](https://railway.com/deploy/5lRkWa) — A template for Telegram bot in JavaScript using grammY
- [Cobalt Tools [Updated Aug ’26]](https://railway.com/deploy/cobalt) — Cobalt Tools [Aug ’26] (Media Downloader, Converter & Automation) Self Host
- [Telegram Gateway](https://railway.com/deploy/railway-telegram-gateway) — Multi-bot Telegram webhook gateway with real-time WebSocket event streaming

Open this page in a browser: https://railway.com/deploy/discord-ticket
