{"id":43051344,"url":"https://github.com/subdavis/weeklymc","last_synced_at":"2026-01-31T10:36:58.506Z","repository":{"id":78496183,"uuid":"125574639","full_name":"subdavis/weeklymc","owner":"subdavis","description":"Happy Tuesday!","archived":false,"fork":false,"pushed_at":"2018-04-18T02:20:34.000Z","size":80,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-06-11T23:38:54.272Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/subdavis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2018-03-16T22:06:57.000Z","updated_at":"2018-12-29T11:14:44.000Z","dependencies_parsed_at":"2023-03-02T02:46:08.248Z","dependency_job_id":null,"html_url":"https://github.com/subdavis/weeklymc","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/subdavis/weeklymc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/subdavis%2Fweeklymc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/subdavis%2Fweeklymc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/subdavis%2Fweeklymc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/subdavis%2Fweeklymc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/subdavis","download_url":"https://codeload.github.com/subdavis/weeklymc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/subdavis%2Fweeklymc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28938782,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T10:18:23.202Z","status":"ssl_error","status_checked_at":"2026-01-31T10:18:22.693Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":[],"created_at":"2026-01-31T10:36:54.299Z","updated_at":"2026-01-31T10:36:58.501Z","avatar_url":"https://github.com/subdavis.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Weekly Minecraft\n\nMy friends and I wanted a server that could handle 10-20 gracefully without lag.  We only wanted to play MC once a week for a few hours.  We didn't want to pay much money.\n\nThis repo will get you set up with a server that runs when you want it and stops when you don't to keep costs down.  \n\nI run a t2.large with 8GB ram and 2 CPU cores for $2-3 per month.\n\n### Prerequisites\n\n* Sign up for ROUTE53 and configure a domain name.\n* Create some SSH keypair called weekly-mc\n* Install [terraform](https://www.terraform.io/).\n* Build a Spigot executable with `./buildtools.sh`\n* Set up your files in s3 like this:\n\n```\n.\n├── data\n├── jars\n│  └── spigot.jar\n└── plugins\n   ├── Essentials.jar\n   └── OtherPlugin.jar\n```\n\n* `data` should be empty.  \n* `jars` should contain a file named `spigot.jar`\n* `plugins` should contain jars that match the list found in `vars.sh -\u003e ENABLED_PLUGINS`\n\n### Create infrastructure \n\n* Edit `user_data_thin.sh` with your personal details.  This will be `user_data.sh` for your EC2 instance.\n* Create all the infrastructure you need: run `terraform up` from within the terraform directory.\n* Set up scheduling with [AWS EC2 Scheduler](https://docs.aws.amazon.com/solutions/latest/instance-scheduler/welcome.html)\n  * Documentation for this is poor.  See my notes below.\n\n# Scheduling\n\nYour cron schedule in `vars.sh` must match the schedule you set up with EC2 scheduler.  I configure EC2 scheduler to start 15 min before my crontab wakes the actual minecraft server to give initialization enough time to fire up.  Likewise, I allow 15 min for cleanup before the scheduler kills the EC2 instance.\n\nFor example:\n\n1. Start ec2 at 7:45\n2. Start minecraft with cron in `vars.sh` at 8:00\n3. Stop minecraft with cron in `vars.sh` at 9:30\n4. Stop ec2 at 9:45\n\n# Plugins\n\nPlugins are supported.  Put your plugin config into `plugins/` - if you omit a configuration file, it will simply live with the world backup instead of being managed by git.  Put your plugin jar files in s3 as documented above.\n\n# Config\n\n* `vars.sh` - controls server start and stop, and provides config for the scripts.\n* `config/` - configuration for the actual minecraft server.\n* `plugins/` - configuration for whatever mc plugins you have.\n\nThe standard config files in `config/` will be updated on the server at the beginning of each session.  These should be updated in git.  You may add any of the files you generally expect to be in the root directory of the server data, such as:\n\n* `server.properties`\n* `permissions.yml`\n\nTo untrack a file, simply remove it from this repo and it will become part of the worlddata backup.  You may wish to do this with `whitelist.json` if you manage an online server and typically add new users through the minecraft console.\n\n\n# Testing with Docker\n\nYou can test this all with docker.\n\nFirst, edit `vars.sh` and set `AUTOSTART=true` \n\nThen build the docker image.\n\n```\ndocker build -t mc .\n```\n\nThen run the image.  Get your AWS Access Key and Secret from the AWS console.\n\n```sh\ndocker run --rm -it \\\n\t--name mc \\\n\t-p \"25565:25565\" \\\n\t-e AWS_ACCESS_KEY_ID=CHANGEME \\\n\t-e AWS_SECRET_ACCESS_KEY=CHANGEME\n\tmc\n```\n\nYou should now be able to connect to a running minecraft server via `localhost`\n\n# Debugging and logging\n\nLogs are written to `/var/log/mc`.  There are separate logs per event, such as boot, begin, and end session.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsubdavis%2Fweeklymc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsubdavis%2Fweeklymc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsubdavis%2Fweeklymc/lists"}