One-command deployment for the SaruMC network.
cp .env.example .env
# Edit .env with your secrets
./deploy.sh| Service | Image | Port |
|---|---|---|
database |
mariadb:11 |
3306 |
rest-api |
ghcr.io/sarumc/rest-api:latest |
8080 |
orchestrator |
built from ../minestrate/orchestrator |
8081→8080 |
pocketmine |
ghcr.io/sarumc/pocketmine:latest |
19132/udp |
discord-bot |
ghcr.io/sarumc/discord:latest |
6666 |
All secrets via .env:
| Variable | Service |
|---|---|
GHCR_TOKEN / GHCR_USERNAME |
Registry auth |
API_KEY |
REST API auth |
MYSQL_ROOT_PASSWORD |
Database root |
MYSQL_USER/PASSWORD/DATABASE |
Database app user |
MINESTRATE_JWT_SECRET |
Orchestrator auth (≥32 bytes) |
DISCORD_WEBHOOK_URL |
Deploy notifications |
The PocketMine entrypoint downloads plugin PHARs from GitHub Releases on startup:
SaruMC/core→ /plugins/core.pharSaruMC/horus→ /plugins/horus.pharSaruMC/lobby→ /plugins/lobby.phar
Game servers provisioned by Minestrate use the same image.
deploy.sh:
- Loads
.env - Installs Docker + compose plugin if missing
- Logs into GitHub Container Registry
- Builds orchestrator from source, pulls pre-built images
- Recreates all containers
- Sends Discord webhook notification
- Traps errors → red-circle webhook