---
title: "Deploy crafty-template"
description: "Run Minecraft servers from a web panel - Crafty Controller in one click"
category: "Starters"
url: https://railway.com/deploy/crafty-template
---

# Deploy crafty-template

Run Minecraft servers from a web panel - Crafty Controller in one click

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

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

- **Creator:** Nameless 's Projects
- **Category:** Starters

## Template content

### crafty

- **Source:** https://github.com/lNamelessl/crafty-controller-railway-template
- **Health check:** /login
- **Public domain:** Yes

## Documentation

# Crafty Controller on Railway — Minecraft server management panel in one click

[![Deploy on Railway](https://railway.com/button.svg)](https://railway.com/deploy/crafty-template)

Run Minecraft servers from a web panel. This template deploys **Crafty Controller 4** (pinned to the official `registry.gitlab.com/crafty-controller/crafty-4:4.11.0` image) with a persistent volume, a generated admin login, your panel on a HTTPS Railway domain, and one public TCP proxy wired for your first Minecraft server.

- **Zero credentials shipped** — Crafty generates a random admin username and password on first boot into `default-creds.txt` on your volume.
- **Zero deploy-form inputs** — the only variable, `PORT`, defaults to `${{RAILWAY_TCP_PROXY_PORT}}` automatically.
- **Java Edition over TCP** — create the server on port `25565` in the panel and players join via the provisioned TCP proxy.

# Deploy and Host

Deploying provisions a single service, `crafty`:

| | |
|---|---|
| Panel | Crafty Controller `4.11.0` on your Railway domain (Railway TLS at the edge; an internal bridge forwards to Crafty's own HTTPS listener) |
| Persistence | One volume at `/data` — config + SQLite DB (`/data/config`), servers (`/data/servers`), backups (`/data/backups`), logs (`/data/logs`) |
| Server port | TCP proxy on internal port `25565` (public host/port injected as `RAILWAY_TCP_PROXY_DOMAIN` / `RAILWAY_TCP_PROXY_PORT`) |
| Java runtimes | OpenJDK 8/11/17/21/25 — Minecraft 1.7 through the latest release |

The entrypoint links Crafty's five documented paths (`/crafty/app/config`, `/crafty/servers`, `/crafty/backups`, `/crafty/logs`, `/crafty/import`) into the single Railway volume, fixes group permissions for the container's non-root `crafty` user, seeds first-boot defaults, and starts an HTTP→HTTPS bridge so the panel is reachable through Railway's router with a valid certificate.

| Variable | Value |
|---|---|
| `PORT` | `${{RAILWAY_TCP_PROXY_PORT}}` — set automatically, no input needed |

## About Hosting

Crafty Controller is a self-hosted panel that launches and manages Minecraft servers **inside its own container**. Hosting it on Railway gives you a managed panel URL, usage-based pricing, persistent storage for worlds and configs, and a public TCP entry point for players — without running a home server or a VPS.

Budget **2–3 GB of RAM** for the panel plus one small Paper server (heavier modpacks need more). Expect roughly **$10–15/month** on Railway's usage-based pricing including the volume.

Java Edition servers are reachable over the internet via TCP. **Bedrock (UDP) cannot be exposed on Railway** — Railway has no UDP ingress — so Bedrock servers are usable only over LAN/VPN-style tunnels.

## Why Deploy

- **One click, fully prewired**: volume, healthcheck (`/login`), public domain, and the first Minecraft server's TCP proxy are provisioned for you — the upstream docker-compose expects five volume mounts and manual port publishing, which don't map one-to-one onto Railway. This template consolidates them safely and documents every adaptation.
- **Secure by default**: no shared credentials — the admin password is generated on *your* volume, and the panel enforces a password change on first login.
- **Valid HTTPS**: Railway's edge TLS in front of Crafty's self-signed internal cert, so no browser warnings.
- **Pinned upstream image**: `crafty-4:4.11.0` from the official GitLab registry — reproducible deploys and clear upgrade paths.

## Common Use Cases

- Host a **survival or creative Paper/Vanilla/Fabric/Forge server** for friends, managed from the browser.
- Run **multiple Java servers** (e.g. one per modpack) from one panel — add a TCP proxy per server port.
- Schedule **automated backups** of worlds to `/data/backups` and download them via panel or SSH.
- Give each player/operator a **Crafty user with scoped permissions** instead of sharing one login.
- Test server configs, plugins, and version upgrades before committing.

## Dependencies for

No external services or accounts are required — everything runs in the single `crafty` service.

### Deployment Dependencies

- **Railway account** with usage-based billing (panel + one small server: ~2–3 GB RAM).
- A **Minecraft Java Edition client** (vanilla launcher) to join — the server itself, its Java runtime, and all panel dependencies ship inside the image.
- That's it. After deploy: fetch the generated credentials with `railway ssh` (`cat /data/config/default-creds.txt`), log in, set your own password, create a Paper server on port `25565`, and hand players `RAILWAY_TCP_PROXY_DOMAIN`:`RAILWAY_TCP_PROXY_PORT`.


## Similar templates

- [open-excalidraw](https://railway.com/deploy/open-excalidraw) — Self-hostable collaborative drawing built on Excalidraw
- [caring-vibrancy](https://railway.com/deploy/caring-vibrancy) — Deploy and Host caring-vibrancy with Railway
- [WireMock Private API Stubs](https://railway.com/deploy/wiremock-private-api-stubs) — Persistent HTTP API stubs behind generated owner access.

Open this page in a browser: https://railway.com/deploy/crafty-template
