Skip to content

Minecraft Server powered by Docker & Azure Container Instance

License

Notifications You must be signed in to change notification settings

geekzter/azure-minecraft-docker

Repository files navigation

Minecraft Server powered by Docker & Azure Container Instance

This repo deploys itzg/minecraft-server as Azure Container Instance, using Terraform.

ci-scripted ci-vanilla ci-dotnet

alt text

Instructions

There are 2 ways to set this up:

Codespace setup

The easiest method is to use a GitHub Codespace (in beta). Just create a GitHub Codespace from the Code menu. Wait for the Codespace to complete provisioning. When the Codespace has completed provisioning and you open a terminal window (Ctrl-`, Control-backquote), you should see a message like this:

To provision infrastructure, make sure you're logged in with Azure CLI e.g. run 'az login' and 'az account set --subscription 00000000-0000-0000-0000-000000000000'. Then, either:
 - change to the /home/codespace/workspace/azure-minecraft-docker/terraform directory and run 'terraform apply', or:
 - run /home/codespace/workspace/azure-minecraft-docker/scripts/deploy.ps1 -apply
To destroy infrastructure, replace 'apply' with 'destroy' in above commands

Just follow these steps to provision Minecraft on Azure.

Local setup

If you set this up locally, make sure you have the following pre-requisites:

On macOS, you can run brew bundle to install the pre-requisites.

Once you have those, you can go ahead and provision:

  • Use Azure CLI for SSO with Terraform: az login
  • Select subscription to use: az account set --subscription 00000000-0000-0000-0000-000000000000
  • Initialize terraform: terraform init
  • Provision cloud infrastructure: terraform apply

Customization

You can customize the deployment by overriding defaults for Terraform input variables. The easiest way to do this is to copy config.auto.example.tfvars and save it as config.auto.tfvars.

  • Use the minecraft_users array to define users allowed to log in
  • Use a custom DNS name with vanity_dns_zone_id and vanity_hostname_prefix, using an Azure DNS managed domain
  • Once things get serious, you may want to start backing up data with enable_backup
  • Are your kids home schooling on the same computer that has Minecraft installed? Configure auto shutdown & startup during weekdays with enable_auto_startstop, start_time & stop_time. The Logic App triggers created can be favorited in the mobile app for on-demand startup & shutdown.
  • Concerned about chat messages appearing in logs? enable_log_filter uses the Console Spam Fix and configures it to hide chat messages from logs. This feature is dependent on PowerShell and is more brittle in automation, but satisfies a key privacy requirement.

See variables.tf for all input variables.

Dashboard

Once provisioned, a dashboard like this will be available in the Azure Portal:

alt text You can update the dashboard in the portal and re-generate the template using templatize_dashboard.ps1.

Resources