{"id":46598508,"url":"https://github.com/dacrab/craftops","last_synced_at":"2026-03-07T15:34:22.880Z","repository":{"id":262439482,"uuid":"883908770","full_name":"dacrab/craftops","owner":"dacrab","description":"🛠️ A Go-based automation tool for Minecraft servers, handling mod updates, backups, and maintenance tasks with Discord notifications. Perfect for server admins wanting a hands-off management solution. ✨","archived":false,"fork":false,"pushed_at":"2026-03-02T21:04:15.000Z","size":7535,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-02T23:43:35.842Z","etag":null,"topics":["automation","backups","cli","discord","golang","minecraft","server-management"],"latest_commit_sha":null,"homepage":"","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/dacrab.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-11-05T19:38:36.000Z","updated_at":"2026-03-02T21:03:36.000Z","dependencies_parsed_at":"2025-07-13T12:04:21.977Z","dependency_job_id":"8595552e-96d4-4575-b657-82581d83f446","html_url":"https://github.com/dacrab/craftops","commit_stats":null,"previous_names":["dacrab/minecraft-mod-updater","dacrab/craftops"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/dacrab/craftops","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dacrab%2Fcraftops","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dacrab%2Fcraftops/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dacrab%2Fcraftops/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dacrab%2Fcraftops/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dacrab","download_url":"https://codeload.github.com/dacrab/craftops/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dacrab%2Fcraftops/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30219541,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T14:02:48.375Z","status":"ssl_error","status_checked_at":"2026-03-07T14:02:43.192Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["automation","backups","cli","discord","golang","minecraft","server-management"],"created_at":"2026-03-07T15:34:20.844Z","updated_at":"2026-03-07T15:34:22.869Z","avatar_url":"https://github.com/dacrab.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CraftOps\n\nModern CLI for Minecraft server operations and Modrinth mod management — built with Go 1.25.7.\n\n## Features\n\n- **Lifecycle** — Start, stop, and restart your server via GNU screen sessions\n- **Mods** — Automated updates from Modrinth with concurrent downloads, retries, and dry-run support\n- **Backups** — Compressed `.tar.gz` archives with configurable retention and glob-based exclusion patterns\n- **Alerts** — Discord webhook notifications for restarts and warnings\n- **Health** — Integrated diagnostic suite for paths, dependencies, and API connectivity\n\n## Requirements\n\n- Linux or macOS (amd64 or arm64)\n- GNU screen\n- Java 17+ (host installs; not required inside Docker)\n\n## Install\n\n### One-liner (recommended)\n\nDownloads the binary for your platform, verifies the SHA256 checksum, and installs to `~/.local/bin` (or `/usr/local/bin` when run as root):\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/dacrab/craftops/main/install.sh | bash\n```\n\nPin a specific version:\n\n```bash\nVERSION=v2.3.0 bash \u003c(curl -fsSL https://raw.githubusercontent.com/dacrab/craftops/main/install.sh)\n```\n\n### From source\n\nRequires Go 1.25.7+:\n\n```bash\nmake install\n```\n\n### Docker\n\n```bash\ndocker pull ghcr.io/dacrab/craftops:latest\n```\n\n```bash\ndocker run --rm \\\n  -v /path/to/server:/minecraft/server \\\n  -v /path/to/config:/config \\\n  ghcr.io/dacrab/craftops:latest health-check\n```\n\n## Quick Start\n\n```bash\n# 1. Generate a default config\ncraftops init-config\n\n# 2. Edit the config\n$EDITOR ~/.config/craftops/config.toml\n\n# 3. Verify everything looks good\ncraftops health-check\n\n# 4. Start your server\ncraftops server start\n```\n\n## Usage\n\n```\ncraftops [command] [flags]\n\nCommands:\n  init-config          Generate a default config file\n  health-check         Run system diagnostics\n  server start         Start the Minecraft server (via screen)\n  server stop          Stop the server gracefully\n  server restart       Restart the server\n  update-mods          Check and download mod updates from Modrinth\n  backup create        Create a compressed server backup\n  backup list          List existing backups\n\nGlobal Flags:\n  -c, --config string   Config file path (default: ~/.config/craftops/config.toml)\n      --debug           Enable debug logging\n      --dry-run         Show what would be done without making changes\n      --version         Print version and exit\n```\n\n## Configuration\n\nRun `craftops init-config` to generate a default config, then edit it:\n\n```toml\n[minecraft]\nversion    = \"1.20.1\"\nmodloader  = \"fabric\"   # fabric | forge | quilt | neoforge\n\n[server]\njar_name     = \"server.jar\"\njava_flags   = [\"-Xmx4G\", \"-Xms1G\"]\nstop_command = \"stop\"\n\n[paths]\nserver  = \"/home/minecraft/server\"\nmods    = \"/home/minecraft/server/mods\"\nbackups = \"/home/minecraft/backups\"\n\n[mods]\nmodrinth_sources      = [\n  \"https://modrinth.com/mod/fabric-api\",\n  \"https://modrinth.com/mod/sodium\",\n]\nconcurrent_downloads  = 4\nmax_retries           = 3\nretry_delay           = 2.0   # seconds between retries\n\n[backup]\nenabled          = true\nmax_backups      = 5\ninclude_logs     = false\nexclude_patterns = [\"*.tmp\", \"cache/**\"]\n\n[notifications]\ndiscord_webhook    = \"\"          # optional — paste your webhook URL here\nwarning_intervals  = [10, 5, 1]  # minutes before restart to send warnings\n\n[logging]\nlevel  = \"info\"    # info | debug\nformat = \"json\"    # json | text\n```\n\n## Releasing\n\nUse the helper script to bump the semver tag and trigger the GitHub Actions release pipeline:\n\n```bash\n./scripts/release.sh patch                      # 2.3.0 → 2.3.1\n./scripts/release.sh minor \"New mod features\"   # 2.3.1 → 2.4.0\n./scripts/release.sh major                      # 2.4.0 → 3.0.0\n```\n\nThe script generates a changelog from commits since the last tag, prompts for confirmation, then creates an annotated git tag and pushes it. GitHub Actions handles the rest.\n\n## Development\n\n```bash\nmake build        # build to build/craftops\nmake test         # run tests with race detector\nmake lint         # run golangci-lint\nmake fmt          # gofmt all packages\nmake package      # cross-compile for linux/darwin × amd64/arm64\n```\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdacrab%2Fcraftops","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdacrab%2Fcraftops","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdacrab%2Fcraftops/lists"}