{"id":44116081,"url":"https://github.com/hunterjsb/xn-mc","last_synced_at":"2026-02-19T02:07:11.314Z","repository":{"id":218803469,"uuid":"747349809","full_name":"hunterjsb/xn-mc","owner":"hunterjsb","description":"XN's Minecraft Server Related Scripts","archived":false,"fork":false,"pushed_at":"2026-02-16T00:11:52.000Z","size":344140,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-02-16T00:23:50.341Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://xandaris.space","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hunterjsb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-01-23T18:53:04.000Z","updated_at":"2026-02-16T00:11:56.000Z","dependencies_parsed_at":"2026-02-16T00:03:12.449Z","dependency_job_id":null,"html_url":"https://github.com/hunterjsb/xn-mc","commit_stats":null,"previous_names":["hunterjsb/xn-mc"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hunterjsb/xn-mc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hunterjsb%2Fxn-mc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hunterjsb%2Fxn-mc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hunterjsb%2Fxn-mc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hunterjsb%2Fxn-mc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hunterjsb","download_url":"https://codeload.github.com/hunterjsb/xn-mc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hunterjsb%2Fxn-mc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29600857,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T00:59:38.239Z","status":"online","status_checked_at":"2026-02-19T02:00:07.702Z","response_time":117,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-08T17:15:54.333Z","updated_at":"2026-02-19T02:07:11.309Z","avatar_url":"https://github.com/hunterjsb.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# xn-mc\n\nMinecraft server management for Xandaris — Discord bot, map auth, backups, and setup tooling.\n\n## Components\n\n### Discord Bot (`bot/`)\nGo-based Discord bot that manages the Minecraft server through [Crafty Controller](https://craftycontrol.com/) and RCON.\n\n**Slash Commands:**\n- `/status` — Server status (players, CPU, memory, disk %, version)\n- `/start` `/stop` `/restart` — Server lifecycle via Crafty\n- `/backup` — Trigger a server backup via Crafty\n- `/mem` — System resource usage (CPU, memory)\n- `/size` — Disk breakdown (overworld, nether, end, BlueMap, plugins, total)\n- `/rcon \u003ccommand\u003e` — Execute RCON commands\n- `/unban \u003cplayer\u003e` — Unban a deathbanned player and reset their spawn\n- `/help` — List all commands\n\nAlso runs periodic health checks (Crafty + RCON) and updates [Statuspage.io](https://statuspage.io) components automatically.\n\n### Map Auth (`map-auth/`)\nStandalone Go service that replaces vouch-proxy for [BlueMap](https://bluemap.bluecolored.de/). Handles Discord OAuth2 and checks guild roles before granting access — only users with admin/mod/staff roles can view the map at `map.xandaris.space`.\n\nDrops into the same nginx `auth_request` slot as vouch-proxy — same port (9090), same endpoints.\n\n### Scripts (`scripts/`)\n- `setup.sh` — Sets up Crafty Controller (podman) and builds the bot\n- `backup.py` — World backup/restore to S3\n\n## Setup\n\n```bash\ncp .env.example .env\n# Fill in your credentials (see .env.example for all variables)\n./scripts/setup.sh\n```\n\n### Environment Variables\n\n**Required:**\n- `RCON_IP` / `RCON_PW` — RCON connection\n- `CRAFTY_URL` / `CRAFTY_API_KEY` / `CRAFTY_SERVER_ID` / `CRAFTY_SERVER_PATH` — Crafty Controller\n- `DISCORD_TOKEN` / `DISCORD_CHANNEL_ID` / `DISCORD_GUILD_ID` — Discord bot\n\n**Optional:**\n- `S3_BUCKET` — S3 bucket for world backups\n- `STATUSPAGE_API_KEY` / `STATUSPAGE_PAGE_ID` — Statuspage.io integration\n- `STATUSPAGE_MINECRAFT_SERVER_COMPONENT_ID` / `STATUSPAGE_BOT_COMPONENT_ID` — Component IDs\n\n## Releases\n\nPre-built binaries (linux/arm64 + linux/amd64) are published to [GitHub Releases](https://github.com/hunterjsb/xn-mc/releases) on tag push:\n\n- `bot-v*` — Discord bot binary\n- `map-auth-v*` — Map auth service binary\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhunterjsb%2Fxn-mc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhunterjsb%2Fxn-mc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhunterjsb%2Fxn-mc/lists"}