Minesible is a scalable, on-demand Minecraft server deployment using OpenTofu + Ansible + Spacelift.
Spin up your own Minecraft server in minutes, with persistent world saves to S3 even after infra teardown.
β
Deploy Minecraft servers on demand
β
Automated configuration with Ansible
β
Persist world saves to S3 buckets (passed as a TF_VAR 'TF_VAR_minecraft_s3_bucket' into spacelift)
β
Uses Spacelift stack dependencies for clean IaC orchestration
-
Opentofu Stack (
Stacks/Opentofu/)- Provisions an EC2 instance with IAM roles and a random or provided S3 bucket for saves.
- Uses OpenTofu (Terraform-compatible) to manage infrastructure declaratively.
-
Ansible Stack (
Stacks/Ansible/)- Configures the EC2 instance as a Minecraft server with Ansible.
- Syncs world save files from S3 at startup and uploads periodic backups.
-
Save Scheduling
- Uses Spacelift scheduling to run Ansible tasks for world backups hourly.
-
Destroy Safety
- Before destroying infra, world saves are zipped and uploaded to your backup bucket to avoid progress loss.
minesible/
βββ stacks/
β βββ ansible/ # Ansible playbooks and inventory templates
β βββ opentofu/ # OpenTofu (Terraform) infrastructure code
βββ README.md- Fork or clone this repo:
- Update
infra/variables.tfif you want to pass a pre-created bucket name. - Create two Spacelift stacks:
- Infra stack (OpenTofu) with your AWS integration context.
- Config stack (Ansible) with SSH key context and stack dependency on the infra stack.
- Adjust stack-specific custom hooks or scheduling as needed.
- Run the infra stack to deploy.
- Config stack will auto run to configure your server and sync world saves.
- β Self-service ready for customer blueprints *done
- β Supports scheduled world backups (using scheduling via private workers) *done
- Region-specific variable (eg. options like us-east2)
- β Instance type variable (eg. options like t2.micro) *done
- Automatic Discord status notifications
Happy mining! βοΈ
Built with β€οΈ to showcase the power of IaC automation.
)