Move business logic for guild disband, resign leadership, leave, post scout, and answer scout from handlers into GuildService methods. Handlers now delegate to the service layer and handle only protocol concerns (packet parsing, ACK responses, cross-channel notifications). Adds 22 new table-driven service tests and sentinel errors for typed error handling (ErrNoEligibleLeader, ErrAlreadyInvited, etc.). DonateRP left in handler due to Session coupling.
Erupe
Erupe is a community-maintained server emulator for Monster Hunter Frontier written in Go. It is a complete reverse-engineered solution to self-host a Monster Hunter Frontier server, using no code from Capcom.
Quick Start
Pick one of three installation methods, then continue to Quest & Scenario Files.
Option A: Docker (recommended)
Docker handles the database automatically. You only need to provide quest files and a config.
-
Clone the repository and enter the Docker directory:
git clone https://github.com/Mezeporta/Erupe.git cd Erupe -
Copy and edit the config (set your database password to match
docker-compose.yml):cp config.example.json docker/config.json # Edit docker/config.json — set Database.Host to "db" -
Download quest/scenario files and extract them to
docker/bin/ -
Start everything:
cd docker docker compose uppgAdmin is available at
http://localhost:5050for database management.See docker/README.md for more details (local builds, troubleshooting).
Option B: Pre-compiled Binary
-
Download the latest release for your platform from GitHub Releases:
erupe-cefor Linuxerupe.exefor Windows
-
Set up PostgreSQL and create a database:
createdb -U postgres erupeThe server will automatically apply all schema migrations on first startup.
-
Copy and edit the config:
cp config.example.json config.json # Edit config.json with your database credentials -
Download quest/scenario files and extract them to
bin/ -
Run:
./erupe-ce
Option C: From Source
Requires Go 1.25+ and PostgreSQL.
-
Clone and build:
git clone https://github.com/Mezeporta/Erupe.git cd Erupe go mod download go build -o erupe-ce -
Set up the database (same as Option B, steps 2–3)
-
Copy and edit the config:
cp config.example.json config.json -
Download quest/scenario files and extract them to
bin/ -
Run:
./erupe-ce
Quest & Scenario Files
Download: Quest and Scenario Binary Files
These files contain quest definitions and scenario data that the server sends to clients during gameplay. Extract the archive into your bin/ directory (or docker/bin/ for Docker installs). The path must match the BinPath setting in your config (default: "bin").
Without these files, quests will not load and the client will crash.
Client Setup
- Obtain a Monster Hunter Frontier client (version G10 or later recommended)
- Point the client to your server by editing
host.txtor using a launcher to redirect to your server's IP - Launch
mhf.exe, select your server, and create an account
If you have an installed copy of Monster Hunter Frontier on an old hard drive, please get in contact so we can archive it!
Updating
From Source
git pull origin main
go mod tidy
go build -o erupe-ce
Database schema migrations are applied automatically when the server starts — no manual SQL steps needed.
Docker
cd docker
docker compose down
docker compose build
docker compose up
Configuration
Edit config.json before starting the server. The essential settings are:
{
"Host": "127.0.0.1",
"BinPath": "bin",
"Language": "en",
"ClientMode": "ZZ",
"Database": {
"Host": "localhost",
"Port": 5432,
"User": "postgres",
"Password": "your_password",
"Database": "erupe"
}
}
| Setting | Description |
|---|---|
Host |
IP advertised to clients. Use 127.0.0.1 for local play, your LAN/WAN IP for remote. Leave blank in config to auto-detect |
ClientMode |
Target client version (ZZ, G10, Forward4, etc.) |
BinPath |
Path to quest/scenario files |
Language |
"en" or "jp" |
config.example.json is intentionally minimal — all other settings have sane defaults built into the server. For the full configuration reference (gameplay multipliers, debug options, Discord integration, in-game commands, entrance/channel definitions), see config.reference.json and the Erupe Wiki.
Features
- Multi-version Support: Compatible with all Monster Hunter Frontier versions from Season 6.0 to ZZ
- Multi-platform: Supports PC, PlayStation 3, PlayStation Vita, and Wii U (up to Z2)
- Complete Server Emulation: Entry/Sign server, Channel server, and Launcher server
- Gameplay Customization: Configurable multipliers for experience, currency, and materials
- Event Systems: Support for Raviente, MezFes, Diva, Festa, and Tournament events
- Discord Integration: Optional real-time Discord bot integration
- In-game Commands: Extensible command system with configurable prefixes
- Developer Tools: Comprehensive logging, packet debugging, and save data dumps
Architecture
Erupe consists of three main server components:
- Sign Server (Port 53312): Handles authentication and account management
- Entrance Server (Port 53310): Manages world/server selection
- Channel Servers (Ports 54001+): Handle game sessions, quests, and player interactions
Multiple channel servers can run simultaneously, organized by world types: Newbie, Normal, Cities, Tavern, Return, and MezFes.
Client Compatibility
Platforms
- PC
- PlayStation 3
- PlayStation Vita
- Wii U (Up to Z2)
Versions
- G10-ZZ (ClientMode): Extensively tested with great functionality
- G3-Z2 (Wii U): Tested with good functionality
- Forward.4: Basic functionality
- Season 6.0: Limited functionality (oldest supported version)
Database Schemas
Erupe uses a structured schema system:
- Initialization Schema: Bootstraps database to version 9.1.0
- Update Schemas: Production-ready updates for new releases
- Patch Schemas: Development updates (subject to change)
- Seed Data: Demo templates for shops, distributions, events, and gacha in server/migrations/seed/
Note: Only use patch schemas if you're following active development. They get consolidated into update schemas on release.
Development
Branch Strategy
- main: Active development branch with the latest features and improvements
- stable/v9.2.x: Stable release branch for those seeking stability over cutting-edge features
Running Tests
go test -v ./... # Run all tests
go test -v -race ./... # Check for race conditions (mandatory before merging)
Troubleshooting
Server won't start
- Verify PostgreSQL is running:
systemctl status postgresql(Linux) orpg_ctl status(Windows) - Check database credentials in
config.json - Ensure all required ports are available and not blocked by firewall
Client can't connect
- Verify server is listening:
netstat -an | grep 53310 - Check firewall rules allow traffic on ports 53310, 53312, and 54001+
- Ensure client's
host.txtpoints to correct server IP - For remote connections, set
"Host"in config.json to0.0.0.0or your server's IP
Database schema errors
- Ensure all patch files are applied in order
- Check PostgreSQL logs for detailed error messages
- Verify database user has sufficient privileges
Quest files not loading
- Confirm
BinPathin config.json points to extracted quest/scenario files - Verify binary files match your
ClientModesetting - Check file permissions
Debug Logging
Enable detailed logging in config.json:
{
"DebugOptions": {
"LogInboundMessages": true,
"LogOutboundMessages": true
}
}
Resources
- Quest/Scenario Files: Download (catbox)
- Documentation: Erupe Wiki
- Discord Communities:
- Mezeporta Square
- Mogapedia (French Monster Hunter community, current Erupe maintainers)
- PewPewDojo
- Community Tools:
- Ferias — Material and item database
- Damage Calculator — Online damage calculator
- Armor Set Searcher — Armor set search application
Changelog
View CHANGELOG.md for version history and changes.
Contributing
See CONTRIBUTING.md for guidelines.
Authors
A list of authors can be found at AUTHORS.md.