{"id":50740004,"url":"https://github.com/hathaway3/mc-tools","last_synced_at":"2026-06-10T16:31:59.208Z","repository":{"id":362099133,"uuid":"1257214392","full_name":"hathaway3/mc-tools","owner":"hathaway3","description":"Interactive Bash installer script for Minecraft (Java, Bedrock, and Forge) and Webmin on Debian Proxmox VMs.","archived":false,"fork":false,"pushed_at":"2026-06-02T14:24:40.000Z","size":31,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-02T16:17:29.828Z","etag":null,"topics":["bash-script","debian","minecraft","proxmox"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hathaway3.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":"2026-06-02T13:21:54.000Z","updated_at":"2026-06-02T14:35:53.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/hathaway3/mc-tools","commit_stats":null,"previous_names":["hathaway3/mc-tools"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/hathaway3/mc-tools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hathaway3%2Fmc-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hathaway3%2Fmc-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hathaway3%2Fmc-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hathaway3%2Fmc-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hathaway3","download_url":"https://codeload.github.com/hathaway3/mc-tools/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hathaway3%2Fmc-tools/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34161283,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-10T02:00:07.152Z","response_time":89,"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":["bash-script","debian","minecraft","proxmox"],"created_at":"2026-06-10T16:31:59.133Z","updated_at":"2026-06-10T16:31:59.193Z","avatar_url":"https://github.com/hathaway3.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Minecraft \u0026 Webmin Debian VM Installer\n\nA comprehensive, interactive installer script designed to set up and manage Minecraft servers (Vanilla Java, Bedrock Dedicated, and Forge Modded) and Webmin administration panel on a Debian VM (specifically optimized for Proxmox).\n\n---\n\n## What the Script Installs\n\n1. **System Tools \u0026 Optimization**:\n   - `unattended-upgrades`: Sets up automatic, unattended security updates for Debian.\n   - `qemu-guest-agent`: Integrates the VM with the Proxmox VE host for accurate status reporting, memory ballooning control, and graceful shutdown commands.\n   - Utilities: `curl`, `wget`, `jq`, `gnupg`, `screen`, `unzip`, and `lsb-release`.\n2. **Webmin Administration Panel**:\n   - Automatically sets up Webmin's official repository keys and sources.\n   - Installs the latest stable Webmin release, accessible at `https://\u003cYour_Server_IP\u003e:10000/`.\n3. **Eclipse Temurin JDK**:\n   - Configures official Adoptium package signing keys and repositories.\n   - Dynamically installs the correct LTS or version-specific Temurin JDK based on the Minecraft version selected:\n     - Minecraft ≤ 1.12 $\\rightarrow$ Java 8 (`temurin-8-jdk`)\n     - Minecraft 1.13 to 1.16 $\\rightarrow$ Java 11 (`temurin-11-jdk`)\n     - Minecraft 1.17 to 1.20.4 $\\rightarrow$ Java 17 (`temurin-17-jdk`)\n     - Minecraft 1.20.5+ $\\rightarrow$ Java 21 (`temurin-21-jdk`)\n\n---\n\n## Folder Layout\n\nThe script organizes files under a structured layout to support multiple concurrent server instances cleanly:\n\n```\n/opt/minecraft/                 \u003c-- User Home Directory\n├── instances/                  \u003c-- Main Directory for Instances\n│   ├── server1/                \u003c-- Instance 1 (e.g. Java Vanilla)\n│   │   ├── minecraft_server.jar\n│   │   ├── eula.txt\n│   │   └── server.properties\n│   ├── server2/                \u003c-- Instance 2 (e.g. Modern Forge)\n│   │   ├── run.sh\n│   │   ├── user_jvm_args.txt   \u003c-- Modifies memory flags here (-Xmx4G)\n│   │   ├── eula.txt\n│   │   └── mods/\n│   └── server3/                \u003c-- Instance 3 (e.g. Bedrock Dedicated)\n│       ├── bedrock_server\n│       └── server.properties\n```\n\n---\n\n## How to Install and Run\n\n1. **Upload the Script**:\n   Copy [setup-minecraft.sh](setup-minecraft.sh) to your target Debian VM.\n\n2. **Make it Executable**:\n   ```bash\n   chmod +x setup-minecraft.sh\n   ```\n\n3. **Run as Root**:\n   ```bash\n   sudo ./setup-minecraft.sh\n   ```\n\n4. **Respond to Prompts**:\n   - Select your server type (Java, Bedrock, or Forge).\n   - Input your instance name (e.g. `server1` or `survival`).\n   - Enter your Minecraft version (e.g. `1.20.4`).\n   - Choose whether to enable and start the instance immediately.\n\n---\n\n## Managing Instances (Systemd)\n\nInstances are managed via a master Systemd template (`minecraft@.service`) combined with instance-specific drop-in overrides to run Bedrock and Forge seamlessly.\n\n### Core Commands\nUse the standard Systemd syntax, replacing `\u003cinstance_name\u003e` with your custom instance folder name:\n\n*   **Start a server**:\n    ```bash\n    sudo systemctl start minecraft@\u003cinstance_name\u003e\n    ```\n*   **Stop a server** (gracefully announces to players and saves the world over 15 seconds):\n    ```bash\n    sudo systemctl stop minecraft@\u003cinstance_name\u003e\n    ```\n*   **Restart a server**:\n    ```bash\n    sudo systemctl restart minecraft@\u003cinstance_name\u003e\n    ```\n*   **Enable auto-start on boot**:\n    ```bash\n    sudo systemctl enable minecraft@\u003cinstance_name\u003e\n    ```\n*   **Disable auto-start on boot**:\n    ```bash\n    sudo systemctl disable minecraft@\u003cinstance_name\u003e\n    ```\n*   **Check status**:\n    ```bash\n    sudo systemctl status minecraft@\u003cinstance_name\u003e\n    ```\n\n---\n\n## Accessing the Server Console (Screen)\n\nMinecraft instances run in detached `screen` sessions under a dedicated non-privileged system user (`minecraft`) for security. \n\n### How to Attach to Console\nTo view active terminal output or issue console commands (such as `/op`, `/gamemode`, etc.):\n\nRun the following command as `root` (or using `sudo`):\n```bash\nsudo -u minecraft script /dev/null -c \"screen -r mc-\u003cinstance_name\u003e\"\n```\n*(Using `script /dev/null` opens a pseudo-terminal owned by the `minecraft` user to prevent any TTY permission denied errors).*\n\n### How to Detach safely\nTo close the console view without shutting down the Minecraft server:\n- Press `Ctrl + A`, then press `D`.\n- This detaches the screen and leaves it running in the background.\n\n---\n\n## Adjusting Server Memory\n\n- **Vanilla Java \u0026 Older Forge**: Memory allocation is governed by the template file `/etc/systemd/system/minecraft@.service`. By default, it is configured with `-Xmx4G`.\n- **Modern Forge (1.17+)**: Memory is configured in the instance's directory within `/opt/minecraft/instances/\u003cinstance_name\u003e/user_jvm_args.txt`. Open this file and adjust the `-Xmx4G` line.\n\n---\n\n## Updating GoDaddy DNS (Optional)\n\nIf you use GoDaddy to manage your domain, you can use the secondary script [update-godaddy-dns.sh](update-godaddy-dns.sh) to automatically map a subdomain (or root domain) and port configuration to your server's public IP address using A and SRV records.\n\n### How it works\n1. **A Record**: Maps your subdomain (e.g. `mc.yourdomain.com`) to the public IP of your VM.\n2. **SRV Record**: Maps the `_minecraft._tcp.mc` service definition to point to the A record on your Minecraft server's specific port. This enables players to connect with just `mc.yourdomain.com` without typing the port (even if running on a non-standard port!).\n\n### How to Run\n1. Make the script executable:\n   ```bash\n   chmod +x update-godaddy-dns.sh\n   ```\n2. Run the script:\n   ```bash\n   ./update-godaddy-dns.sh\n   ```\n3. Enter your GoDaddy API credentials (API Key and Secret can be created at the [GoDaddy Developer Portal](https://developer.godaddy.com/keys)).\n4. Enter the domain, subdomain, and the **External Port (DNAT Port)** mapped on your router (players will connect to your server using this port).\n\n---\n\n## License\n\nThis project is licensed under the Apache License, Version 2.0. See the [LICENSE](LICENSE) file for the full license text.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhathaway3%2Fmc-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhathaway3%2Fmc-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhathaway3%2Fmc-tools/lists"}