Mirror of github.com/ewanc26/mc-server
Find a file
2026-07-16 18:22:46 +01:00
docs On-demand sysinfo refresh via host-side watcher + fastfetch 2026-07-03 19:50:11 +01:00
lib Use MC_MINEFETCH_DIR env var instead of hardcoded path 2026-07-03 19:56:37 +01:00
scripts Use MC_MINEFETCH_DIR env var instead of hardcoded path 2026-07-03 19:56:37 +01:00
.cspell.json docs: add missing words to cspell dictionary 2025-06-08 05:08:12 +01:00
.env.example Use MC_MINEFETCH_DIR env var instead of hardcoded path 2026-07-03 19:56:37 +01:00
.gitignore Fix server compatibility and plugin configuration 2026-07-02 19:58:40 +01:00
AGENTS.md docs: correct agent guidance after source audit 2026-07-16 18:22:46 +01:00
compose.yml On-demand sysinfo refresh via host-side watcher + fastfetch 2026-07-03 19:50:11 +01:00
LICENSE Initial commit 2025-06-05 14:18:35 +01:00
README.md Fix server compatibility and plugin configuration 2026-07-02 19:58:40 +01:00
run_config.sh update 2026-06-27 16:55:08 +01:00
sync-manifest.json feat: refactor sync_from_server to configuration-driven engine 2026-06-16 18:35:44 +01:00

Ewan's Minecraft Server

A Dockerised PaperMC server configured for small groups, with tunnelled public access via playit.gg — no port forwarding required.

Table of Contents

Getting Started

Prerequisites

  • Docker Desktop (or OrbStack on macOS)
  • A playit.gg account

1. Clone the repository

git clone https://github.com/ewanc26/mc-server.git
cd mc-server

2. Configure the environment

cp .env.example .env

Open .env and set at minimum:

  • MC_VERSION — Minecraft version to run (currently pinned to 26.1.2 for Geyser compatibility)
  • PLAYIT_SECRET — leave blank for now; see step 4

Then run the auto-configuration script to select the correct Java image and JVM flags (plugins are managed separately, via MC_MODRINTH_PROJECTS / MC_SPIGET_RESOURCES in .env):

MC_VERSION=26.1.2 ./scripts/auto_configure.sh

3. Start the server

docker compose up -d

4. Claim the playit.gg tunnel

On first run without a PLAYIT_SECRET, the playit agent prints a claim URL:

docker compose logs playit

Open the URL, sign into playit.gg, and add a Minecraft tunnel pointed at mc:25565. Copy the secret key from the dashboard into .env:

PLAYIT_SECRET=your_secret_here

Then apply it (a plain restart won't pick up the new secret — the container needs recreating):

docker compose up -d playit

Your server is now reachable at the address shown in the playit dashboard — no port forwarding or DNS configuration needed.

5. Whitelist players

Add player UUIDs (comma-separated) to MC_WHITELIST and MC_OPS in .env, then apply it (a plain restart won't pick up the new values — the container needs recreating):

docker compose up -d mc

Or manage in-game via RCON:

docker compose exec mc rcon-cli

6. (Optional) Set up Bedrock access

See the playit.gg Tunnel Setup doc for Bedrock tunnel configuration and account-linking instructions.

Scripts

Utility scripts live in scripts/.

setup_master.sh — main setup script; run this first.

./scripts/setup_master.sh

auto_configure.sh — selects the correct Java image and JVM flags for a given Minecraft version.

MC_VERSION=26.1.2 ./scripts/auto_configure.sh

server_status_mac.sh / server_status_linux.sh — start, stop, and check server status. setup_master.sh can configure an mcserver alias for these.

mcserver start
mcserver stop
mcserver status

Data

Server world data and backups are stored at:

/Volumes/Storage/Server/MC/
├── data/     # world, plugins, configs
└── backups/  # automated backups via the mc-backup sidecar container

These paths can be overridden in .env via MC_DATA_DIR and MC_BACKUP_DIR.

Support

If you found this useful, consider buying me a ko-fi!