{"id":28356100,"url":"https://github.com/bwinter/baroboys","last_synced_at":"2026-03-04T11:32:21.059Z","repository":{"id":294270407,"uuid":"541910400","full_name":"bwinter/baroboys","owner":"bwinter","description":"Headless Game Server (GCP, Terraform, and more)","archived":false,"fork":false,"pushed_at":"2026-02-13T22:33:04.000Z","size":485923,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-14T04:46:42.298Z","etag":null,"topics":["flask","packer","systemd","terraform"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bwinter.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":"2022-09-27T05:00:50.000Z","updated_at":"2026-02-13T22:33:07.000Z","dependencies_parsed_at":"2025-09-05T13:13:59.907Z","dependency_job_id":null,"html_url":"https://github.com/bwinter/baroboys","commit_stats":null,"previous_names":["bwinter/baroboys"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bwinter/baroboys","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bwinter%2Fbaroboys","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bwinter%2Fbaroboys/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bwinter%2Fbaroboys/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bwinter%2Fbaroboys/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bwinter","download_url":"https://codeload.github.com/bwinter/baroboys/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bwinter%2Fbaroboys/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30078992,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T08:01:56.766Z","status":"ssl_error","status_checked_at":"2026-03-04T08:00:42.919Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["flask","packer","systemd","terraform"],"created_at":"2025-05-28T06:13:40.874Z","updated_at":"2026-03-04T11:32:21.041Z","avatar_url":"https://github.com/bwinter.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Game Server and Infrastructure Setup\n\nThis project is an attempt at fully automating steam headless servers.\n\nTech tl;dr is basically: Terraform and Bash.\n\n---\n\n## 🧰 Requirements\n\n- Terraform\n    ```shell\n    brew tap hashicorp/tap\n    brew install hashicorp/tap/terraform\n    ```\n- Packer\n    ```shell\n    brew tap hashicorp/tap\n    brew install hashicorp/tap/packer\n    ```\n- Google Cloud SDK (`gcloud`)\n    ```shell\n    curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-cli-457.0.0-darwin-arm.tar.gz\n    tar -xvzf google-cloud-cli-457.0.0-darwin-arm.tar.gz\n    ./google-cloud-sdk/install.sh\n    ```\n- A valid GCP project (e.g., `europan-world`)\n- GitHub account (for deploy keys)\n\n---\n\n## 🚀 Getting Started\n\n1. **Configure GitHub SSH access (once)**\n    - See [`docs/setup/github-deploy-key.md`](./docs/setup/github-deploy-key.md)\n    - This ensures your VM can clone private repos\n\n2. **Install GCP tooling** (once)\n    - See [`docs/setup/installing-gcloud.md`](docs/setup/gcp-service-accounts.md)\n\n3. **Configure GCP tooling** (once)\n    - See [`docs/setup/gcp-service-account.md`](docs/setup/gcp-service-accounts.md)\n    - After completion, Makefile should now be usable\n\n4. **Debug server**\n    - See [`docs/usage/troubleshooting.md`](./docs/usage/troubleshooting.md)\n    - Some basic commands you can run to debug install and game server issues.\n\n5. **Barotrauma Submarine Development**\n    - See [`docs/setup/barotrauma.md`](docs/setup/gcp-service-accounts.md)\n    - Helpful when building submarines.\n\n---\n\n## 🚀 Step-by-Step Setup\n\n### 1. Clone the repo and initialize Terraform\n\n```bash\ngit clone git@github.com:bwinter/baroboys.git\ncd baroboys/terraform\nterraform init\n```\n\n---\n\n### 2. Set your game mode (optional, default is `vrising`)\n\n```bash\nmake switch\n```\n\nEnsure `direnv` is installed and run (or set env manually):\n\n```bash\ndirenv allow .\n```\n\n---\n\n### 3. Build packer image\n\n```bash\nmake build\n```\n\n* This installs a bunch of dependencies\n* GCP monitoring\n* Steam, Wine, Xvfb and their dependencies\n* Some helpful command line tools. e.g. curl, wget etc\n\n---\n\n### 4. Apply Terraform to create your VM and configure the server\n\n```bash\nmake apply\n```\n\n* This boots a VM\n* Updates repos and games\n* Clones this repo for both `root` and `bwinter_sc81`\n* Installs and configures the selected game\n* Registers a `systemd` service for the game\n* Registers a shutdown hook to auto-save to Git\n\n---\n\n### 5. Manually trigger a save (anytime)\n\n```bash\nmake save\n```\n\n---\n\n### 6. Destroy the instance when done\n\n```bash\nmake destroy\n```\n\n💡 Auto-save runs before shutdown if the game service exits cleanly.\n\n---\n\n## 🛠️ Debugging\n\n| Goal              | Command                                                                    |\n|-------------------|----------------------------------------------------------------------------|\n| View startup logs | `gcloud compute instances get-serial-port-output europa --zone=us-west1-c` |\n| View systemd logs | `journalctl -u google-startup-scripts.service -e`                          |\n| Debug save        | `journalctl -u barotrauma.service -e` or check Git commit logs             |\n\n---\n\n## 📦 Developers\n\n- **Documentation** (`/docs`)\n    - Clear setup and usage instructions\n    - Covers service accounts, SSH key setup, troubleshooting, and more\n\n- **Terraform Infrastructure** (`/terraform`)\n    - Provisions VMs, enables GCP APIs, and configures IAM\n\n- **Startup \u0026 Deployment Scripts** (`/scripts`)\n    - Bootstraps Barotrauma environment on VM boot\n    - Securely pulls GitHub SSH key from Secret Manager\n    - Runs custom server setup logic\n\n- **Barotrauma State \u0026 Mods** (`/Barotrauma`)\n    - Contains saved games, mod files, and game server config\n\n---\n\n## 🔐 Security Notes\n\n- All secrets (e.g., GitHub deploy key, service account JSON) should be stored locally and excluded from version\n  control.\n\n## License\n\nThis project is licensed under\nthe [Polyform Small Business License](https://polyformproject.org/licenses/small-business/1.0.0/).\n\n- ✅ Free for personal, educational, and small business use (under $1M revenue)\n- ❌ Commercial use by larger companies requires a commercial license\n\nIf you’re a business above the size threshold and would like to use this project, please contact me\nat [your-email@example.com].\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbwinter%2Fbaroboys","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbwinter%2Fbaroboys","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbwinter%2Fbaroboys/lists"}