mirror of
https://github.com/Mezeporta/Erupe.git
synced 2026-03-22 23:54:33 +01:00
10 KiB
10 KiB
Server Configuration
Configuration for Erupe's three-server architecture: Sign, Entrance, and Channel servers.
Three-Server Architecture
Erupe uses a multi-server architecture that mirrors the original Monster Hunter Frontier server design:
Client → Sign Server (Auth) → Entrance Server (World List) → Channel Server (Gameplay)
- Sign Server: Authentication and account management
- Entrance Server: World/server selection and character list
- Channel Servers: Actual gameplay sessions, quests, and player interactions
Sign Server
Handles authentication and account management.
Configuration
{
"Sign": {
"Enabled": true,
"Port": 53312
}
}
| Setting | Type | Default | Description |
|---|---|---|---|
Enabled |
boolean | true |
Enable the legacy sign server |
Port |
number | 53312 |
Port for sign server (client default: 53312) |
Details
- Located in server/signserver/
- Creates sign sessions with tokens for channel server authentication
- Legacy TCP-based protocol
- Required unless using SignV2
SignV2 Server
Modern HTTP-based sign server (alternative to legacy sign server).
Configuration
{
"SignV2": {
"Enabled": false,
"Port": 8080
}
}
| Setting | Type | Default | Description |
|---|---|---|---|
Enabled |
boolean | false |
Enable the modern HTTP-based sign server |
Port |
number | 8080 |
Port for SignV2 server |
Details
- Located in server/signv2server/
- HTTP-based authentication (easier to proxy/load balance)
- Alternative to legacy sign server
- Only enable one sign server at a time (Sign OR SignV2, not both)
Channel Server
Handles actual gameplay sessions, quests, and player interactions.
Configuration
{
"Channel": {
"Enabled": true
}
}
| Setting | Type | Default | Description |
|---|---|---|---|
Enabled |
boolean | true |
Enable channel servers (required for gameplay) |
Details
- Located in server/channelserver/
- Most complex component - handles all gameplay logic
- Multiple instances can run simultaneously
- Ports configured in Entrance server entries
- Features:
- Session management
- Packet handling
- Stage/room system
- Quest system
- Guild operations
- Special events (Raviente, Diva Defense, etc.)
See CLAUDE.md for detailed architecture.
Entrance Server
Manages world/server selection and character lists.
Configuration
{
"Entrance": {
"Enabled": true,
"Port": 53310,
"Entries": [
{
"Name": "Newbie",
"Description": "",
"IP": "",
"Type": 3,
"Recommended": 2,
"AllowedClientFlags": 0,
"Channels": [
{ "Port": 54001, "MaxPlayers": 100 },
{ "Port": 54002, "MaxPlayers": 100 }
]
}
]
}
}
Settings Reference
| Setting | Type | Description |
|---|---|---|
Enabled |
boolean | Enable entrance server (required for server list) |
Port |
number | Entrance server port (default: 53310) |
Entries |
array | List of worlds/servers shown to players |
Entrance Entries
Each entry represents a "world" in the server list.
| Field | Type | Description |
|---|---|---|
Name |
string | World name displayed to players (e.g., "Newbie", "Normal") |
Description |
string | World description (optional, usually empty) |
IP |
string | Override IP address (leave empty to use global Host setting) |
Type |
number | World type (see below) |
Recommended |
number | Recommendation badge: 0=None, 2=Recommended, 6=Special |
AllowedClientFlags |
number | Client version flags (0 = all versions allowed) |
Channels |
array | List of channel servers in this world |
World Types
| Type | Name | Purpose |
|---|---|---|
1 |
Normal | Standard gameplay world |
2 |
Cities | Social/town areas |
3 |
Newbie | For new players (typically recommended) |
4 |
Tavern | Bar/tavern areas |
5 |
Return | For returning players |
6 |
MezFes | MezFes event world |
Channel Configuration
Each world has multiple channels (like "servers" within a "world"):
{
"Channels": [
{ "Port": 54001, "MaxPlayers": 100 },
{ "Port": 54002, "MaxPlayers": 100 }
]
}
| Field | Type | Description |
|---|---|---|
Port |
number | Channel server port (must be unique across all channels) |
MaxPlayers |
number | Maximum players allowed in this channel |
CurrentPlayers |
number | Current player count (auto-updated at runtime) |
Complete Server Configurations
Minimal Setup (Single World, Single Channel)
{
"Sign": {
"Enabled": true,
"Port": 53312
},
"SignV2": {
"Enabled": false
},
"Channel": {
"Enabled": true
},
"Entrance": {
"Enabled": true,
"Port": 53310,
"Entries": [
{
"Name": "Main",
"Type": 1,
"Recommended": 0,
"AllowedClientFlags": 0,
"Channels": [
{ "Port": 54001, "MaxPlayers": 100 }
]
}
]
}
}
Standard Setup (Multiple Worlds)
{
"Sign": {
"Enabled": true,
"Port": 53312
},
"Channel": {
"Enabled": true
},
"Entrance": {
"Enabled": true,
"Port": 53310,
"Entries": [
{
"Name": "Newbie",
"Description": "",
"IP": "",
"Type": 3,
"Recommended": 2,
"AllowedClientFlags": 0,
"Channels": [
{ "Port": 54001, "MaxPlayers": 100 },
{ "Port": 54002, "MaxPlayers": 100 }
]
},
{
"Name": "Normal",
"Description": "",
"IP": "",
"Type": 1,
"Recommended": 0,
"AllowedClientFlags": 0,
"Channels": [
{ "Port": 54003, "MaxPlayers": 100 },
{ "Port": 54004, "MaxPlayers": 100 }
]
},
{
"Name": "Cities",
"Description": "",
"IP": "",
"Type": 2,
"Recommended": 0,
"AllowedClientFlags": 0,
"Channels": [
{ "Port": 54005, "MaxPlayers": 100 }
]
}
]
}
}
Large-Scale Setup
{
"Sign": {
"Enabled": true,
"Port": 53312
},
"Channel": {
"Enabled": true
},
"Entrance": {
"Enabled": true,
"Port": 53310,
"Entries": [
{
"Name": "Newbie",
"Type": 3,
"Recommended": 2,
"AllowedClientFlags": 0,
"Channels": [
{ "Port": 54001, "MaxPlayers": 150 },
{ "Port": 54002, "MaxPlayers": 150 },
{ "Port": 54003, "MaxPlayers": 150 }
]
},
{
"Name": "Normal",
"Type": 1,
"Recommended": 0,
"AllowedClientFlags": 0,
"Channels": [
{ "Port": 54004, "MaxPlayers": 200 },
{ "Port": 54005, "MaxPlayers": 200 },
{ "Port": 54006, "MaxPlayers": 200 },
{ "Port": 54007, "MaxPlayers": 200 }
]
},
{
"Name": "Cities",
"Type": 2,
"Recommended": 0,
"AllowedClientFlags": 0,
"Channels": [
{ "Port": 54008, "MaxPlayers": 100 },
{ "Port": 54009, "MaxPlayers": 100 }
]
},
{
"Name": "MezFes",
"Type": 6,
"Recommended": 6,
"AllowedClientFlags": 0,
"Channels": [
{ "Port": 54010, "MaxPlayers": 100 }
]
}
]
}
}
Port Allocation
Default port assignments:
| Server | Port | Configurable |
|---|---|---|
| Sign | 53312 | Yes |
| SignV2 | 8080 | Yes |
| Entrance | 53310 | Yes |
| Channels | 54001+ | Yes (per-channel) |
Important:
- All ports must be unique
- Firewall must allow inbound connections on these ports
- Client expects Sign on 53312 and Entrance on 53310 by default
Firewall Configuration
Linux (ufw)
# Allow sign server
sudo ufw allow 53312/tcp
# Allow entrance server
sudo ufw allow 53310/tcp
# Allow channel servers (range)
sudo ufw allow 54001:54010/tcp
Linux (iptables)
# Sign server
sudo iptables -A INPUT -p tcp --dport 53312 -j ACCEPT
# Entrance server
sudo iptables -A INPUT -p tcp --dport 53310 -j ACCEPT
# Channel servers (range)
sudo iptables -A INPUT -p tcp --dport 54001:54010 -j ACCEPT
Windows Firewall
# Allow specific ports
New-NetFirewallRule -DisplayName "Erupe Sign" -Direction Inbound -Protocol TCP -LocalPort 53312 -Action Allow
New-NetFirewallRule -DisplayName "Erupe Entrance" -Direction Inbound -Protocol TCP -LocalPort 53310 -Action Allow
New-NetFirewallRule -DisplayName "Erupe Channels" -Direction Inbound -Protocol TCP -LocalPort 54001-54010 -Action Allow
Load Balancing
For high-traffic servers, consider:
- Multiple Entrance Servers: Run multiple entrance server instances behind a load balancer
- Distributed Channels: Spread channel servers across multiple physical servers
- Database Connection Pooling: Use PgBouncer for database connections
- SignV2 with Reverse Proxy: Use nginx/HAProxy with SignV2 for better scaling
Monitoring
Monitor server health:
# Check if servers are listening
netstat -tlnp | grep erupe
# Check open ports
ss -tlnp | grep -E '(53312|53310|54001)'
# Monitor connections per channel
watch -n 1 'netstat -an | grep ESTABLISHED | grep 54001 | wc -l'
Troubleshooting
Can't Connect to Sign Server
- Verify Sign server is enabled
- Check port 53312 is open
- Verify client is configured for correct IP/port
World List Empty
- Verify Entrance server is enabled
- Check Entrance server port (53310)
- Ensure at least one Entry is configured
Can't Enter World
- Verify Channel server is enabled
- Check channel ports are open
- Verify channel ports in Entrance entries match actual running servers
Server Crashes on Startup
- Check all ports are unique
- Verify database connection (password not empty)
- Check logs for specific errors
Related Documentation
- Database - Database configuration
- Basic Settings - Host and network settings
- CLAUDE.md - Detailed architecture overview