Skip to content

Minecraft Server Project (code name "Blockhaven") with AWS ec2 deployment option. Play at bhsmp.com!

Notifications You must be signed in to change notification settings

prillcode/blockhaven

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

121 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BlockHaven SMP - Minecraft Server Project

Family-Friendly Anti-Griefer Survival & Creative!

🌐 Website🔌 Plugins🌍 Worlds


Overview

BlockHaven is a cross-platform Minecraft server supporting both Java Edition and Bedrock Edition players through Geyser/Floodgate integration.

Features

12 Worlds: 3 Survival worlds (Easy/Normal/Hard) with Nether & End, 2 Creative worlds, Spawn Hub ✅ Cross-Platform: Java + Bedrock Edition support ✅ Grief-Free: Advanced land claims with UltimateLandClaim ✅ Economy System: Jobs, player shops, balanced payouts ✅ Family-Friendly: Chat filtering, moderation tools ✅ Live Map: BlueMap 3D web visualization ✅ Discord Integration: Chat bridge, notifications, analytics

Technical Stack

  • Platform: Paper 1.21.11 (Minecraft Java Edition)
  • Deployment: Docker + Docker Compose
  • Hosting: Local (Docker) / VPS-ready
  • Plugins: 16 active (LuckPerms, Multiverse, EssentialsX, Geyser, etc.)
  • CI/CD: DokPloy automation

Quick Start

Prerequisites

  • Docker & Docker Compose installed
  • 8GB+ RAM available
  • Ports: 25565 (Java), 19132 (Bedrock)

Local Development

# Clone repository
git clone <repo-url>
cd blockhaven/mc-server

# Start local server
docker compose -f docker-compose.local.yml up -d

# View logs
docker logs -f blockhaven-local

# Connect
# Java Edition: localhost:25565
# Bedrock Edition: localhost:19132

Remote/VPS Deployment

# Configure environment
cp .env.example .env
nano .env  # Set RCON_PASSWORD and SERVER_OPS

# Start server
docker compose up -d

# Restore from S3 backup (to sync with local)
./scripts/s3-restore.sh

AWS deployment: mc-server/aws/README.md

Updating the Server

⚠️ Important: EC2 instance restarts do NOT automatically pull the latest code changes from the repository.

To apply updates from git:

# SSH into the server
ssh -i ~/.ssh/blockhaven-key.pem ubuntu@<server-ip>

# Navigate to the repository
cd /data/repo

# Pull latest changes
git pull

# Restart the server with new configuration
docker compose down && docker compose up -d

# Verify the server is running
docker ps
docker logs -f blockhaven-mc

Note: Simply stopping/starting the EC2 instance will restart the container with the existing configuration. You must manually git pull and restart Docker to apply code changes.

Server Management

Managing the Whitelist

⚠️ Bedrock Player Limitation: Bedrock players (with . prefix) CANNOT be added to the WHITELIST environment variable in docker-compose.yml. Adding them will cause the server to crash on startup.

Current Configuration:

  • ENABLE_WHITELIST: "false" in docker-compose.yml allows all players to connect initially

To whitelist Bedrock players:

# 1. Have the Bedrock player connect to the server at least once
# 2. SSH into the server
ssh -i ~/.ssh/blockhaven-key.pem ubuntu@<server-ip>

# 3. Add player to whitelist via RCON
docker exec blockhaven-mc rcon-cli whitelist add .PlayerName

# 4. (Optional) Enable whitelist enforcement
docker exec blockhaven-mc rcon-cli whitelist on

# 5. Monitor player connections
docker logs -f blockhaven-mc 2>&1 | grep -E "joined the game|left the game|lost connection"

Useful RCON Commands:

# View current whitelist
docker exec blockhaven-mc rcon-cli whitelist list

# Remove a player
docker exec blockhaven-mc rcon-cli whitelist remove PlayerName

# Toggle whitelist on/off
docker exec blockhaven-mc rcon-cli whitelist on
docker exec blockhaven-mc rcon-cli whitelist off

Expanding Storage Volume

The server uses a 50GB EBS volume for world data. You can expand it online without downtime or data loss.

Cost: gp3 storage is $0.08/GB-month

  • 50GB → 100GB: +$4/month (~$0.13/day)
  • 50GB → 150GB: +$8/month (~$0.27/day)

To expand the volume:

# Set AWS credentials (locally)
export AWS_ACCESS_KEY_ID=<your-key>
export AWS_SECRET_ACCESS_KEY=<your-secret>
export AWS_DEFAULT_REGION=us-east-1

# Expand to 100GB (no downtime)
aws ec2 modify-volume --volume-id vol-0f5df064f273a71db --size 100

# SSH into server and extend the filesystem
ssh -i ~/.ssh/blockhaven-key.pem ubuntu@<server-ip>
sudo xfs_growfs /data

# Verify new size
df -h /data

Notes:

  • Can only increase size (never decrease)
  • Changes take effect immediately
  • No server restart required
  • Filesystem automatically expands with xfs_growfs

Project Structure

blockhaven/
├── mc-server/                  # Minecraft server (Docker-based)
│   ├── docker-compose.yml      # Remote/VPS configuration
│   ├── docker-compose.local.yml # Local development
│   ├── .env.example            # Environment variables template
│   ├── scripts/                # Backup, restore, utility scripts
│   ├── aws/                    # AWS EC2 deployment (CloudFormation)
│   ├── extras/                 # Server icon, resources
│   ├── plugins/                # Plugin JARs and configs
│   └── docs/                   # Documentation
│       ├── PLUGINS.md          # Plugin reference
│       ├── PLUGINS-QUICK-REF.md # Quick command reference
│       └── CREATED-WORLDS-FINAL.md # World configuration
├── web/                        # Marketing website (future)
│   └── .gitkeep
└── README.md                   # This file

Documentation

Document Description
PLUGINS.md Complete plugin reference & configuration
PLUGINS-QUICK-REF.md Quick command reference
CREATED-WORLDS-FINAL.md World setup, Nether/End linking, portals
AWS README EC2 deployment, costs, helper scripts

Backup & Restore

BlockHaven uses S3 for backup storage. Scripts are located in mc-server/scripts/.

Backup to S3

cd mc-server/scripts

# Full backup (stops server for consistency)
./s3-backup.sh

# Quick backup (uses RCON save-all, server stays online)
./s3-backup.sh --no-stop

# Preview what would happen
./s3-backup.sh --dry-run

Options:

Flag Description
--no-stop Don't stop container (uses RCON save-all instead)
--keep-local Keep local tarball after S3 upload
--dry-run Preview without executing

Restore from S3

cd mc-server/scripts

# Interactive mode - lists backups and prompts for selection
./s3-restore.sh

# List available backups without restoring
./s3-restore.sh --list

# Restore specific backup (1 = most recent)
./s3-restore.sh --backup 1

# Preview restore
./s3-restore.sh --backup 1 --dry-run

Options:

Flag Description
--list List available backups and exit
--backup NUM Restore backup #NUM (1 = most recent)
--dry-run Preview without executing

Configuration

Environment variables (defaults shown):

MC_CONTAINER_NAME=blockhaven-local  # Container to backup/restore
AWS_PROFILE=bgrweb                   # AWS CLI profile
S3_BUCKET=blockhaven-mc-backups      # S3 bucket name

Server Details

Worlds

World Alias Type Difficulty Nether/End
spawn Spawn_Hub Adventure Peaceful No
survival_easy SMP_Plains Survival Easy Yes
survival_normal SMP_Ravine Survival Normal Yes
survival_hard SMP_Cliffs Survival Hard Yes
creative_flat Creative_Plots Creative Peaceful No
creative_terrain Creative_Hills Creative Peaceful No

Each survival world has its own linked nether and end dimensions (e.g., survival_easy_nether, survival_easy_the_end).

Inventory Groups

Configured via Multiverse-Inventories - each group shares all inventory/stats:

  • survival_easy_group: survival_easy + its nether/end
  • survival_normal_group: survival_normal + its nether/end
  • survival_hard_group: survival_hard + its nether/end
  • default: spawn (isolated, adventure mode)
  • Creative Worlds: Fully isolated (no creative items in survival)

Development Status

Current Phase: Local development complete ✅ | AWS deployment ready

  • Phase 1: Docker foundation, plugin stack validation
  • Phase 2: World configuration (12 worlds with Nether/End linking)
  • Phase 3: S3 backup/restore system
  • Phase 4: AWS EC2 deployment infrastructure
  • Phase 5: LuckPerms configuration (ranks, permissions)
  • Phase 6: Jobs & economy balancing
  • Phase 7: Safety & moderation (ChatSentry)
  • Phase 8: Polish & launch

Support

  • Discord: [Coming soon]
  • Email: support@bhsmp.com
  • Issues: GitHub Issues (private repository)

License

Proprietary - All rights reserved.

This project is not open source. Code is shared with authorized contributors only.


Credits

Owner/Developer: PRLLAGER207 Base Repository: minecraft-crossplatform-docker Special Thanks: itzg (Docker image), Geyser team, Paper team, plugin developers


Built with ❤️ for the BlockHaven community

About

Minecraft Server Project (code name "Blockhaven") with AWS ec2 deployment option. Play at bhsmp.com!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors