|
1 | | -# Gate + Geyser Bedrock Support Example |
| 1 | +# Gate + geyserlite Bedrock Support Example |
2 | 2 |
|
3 | | -This example demonstrates how to set up Gate with Geyser for Bedrock Edition support, allowing both Java and Bedrock players to join the same server. |
| 3 | +This example demonstrates Gate's managed Bedrock mode. Gate starts geyserlite automatically so Java and Bedrock players can join the same Paper backend. |
4 | 4 |
|
5 | 5 | ## Quick Start |
6 | 6 |
|
7 | | -1. **Generate Floodgate Key** (first time only): |
8 | | - |
9 | | - ```bash |
10 | | - # Generate a new Floodgate key |
11 | | - docker run --rm -v $(pwd)/geyser:/data itzg/minecraft-server \ |
12 | | - sh -c "mkdir -p /data && openssl genpkey -algorithm RSA -out /data/key.pem -pkcs8" |
13 | | - ``` |
14 | | - |
15 | | -2. **Start the services**: |
| 7 | +1. **Start the services**: |
16 | 8 |
|
17 | 9 | ```bash |
18 | 10 | docker compose up -d |
19 | 11 | ``` |
20 | 12 |
|
21 | | -3. **Check logs**: |
| 13 | +2. **Check logs**: |
22 | 14 |
|
23 | 15 | ```bash |
24 | 16 | docker compose logs -f |
25 | 17 | ``` |
26 | 18 |
|
27 | | -4. **Connect**: |
| 19 | +3. **Connect**: |
28 | 20 | - **Java players**: Connect to `localhost:25565` |
29 | 21 | - **Bedrock players**: Connect to `localhost:19132` |
30 | 22 |
|
31 | 23 | ## Architecture |
32 | 24 |
|
33 | 25 | ``` |
34 | | -Bedrock Players (19132/udp) โ Geyser โ Gate (25567) โ Backend Servers |
| 26 | +Bedrock Players (19132/udp) โ Gate managed geyserlite โ Paper |
35 | 27 | Java Players (25565/tcp) โ Gate โ Backend Servers |
36 | 28 | ``` |
37 | 29 |
|
38 | 30 | ## Services |
39 | 31 |
|
40 | 32 | - **Gate**: Main proxy server handling both Java and translated Bedrock connections |
41 | | -- **Geyser**: Protocol translator converting Bedrock to Java Edition protocol |
42 | | -- **Server1**: Backend Minecraft server (no plugins required) |
43 | | -- **Volumes**: Persistent world data |
| 33 | +- **geyserlite**: Native Geyser engine downloaded and started by Gate managed mode |
| 34 | +- **Server1**: Paper `26.1.2` backend running on Java 25 |
| 35 | +- **Volumes**: Persistent Gate cache/data and Paper world data |
44 | 36 |
|
45 | 37 | ## Configuration Files |
46 | 38 |
|
47 | | -- `gate.yml` - Gate proxy configuration with Bedrock support enabled |
48 | | -- `geyser/config.yml` - Geyser standalone configuration |
49 | | - |
| 39 | +- `gate.yml` - Gate proxy configuration with `bedrock: true` |
50 | 40 | - `server.properties` - Backend server properties |
| 41 | +- `spigot.yml` - Enables Bungee/legacy forwarding for Gate |
51 | 42 | - `docker-compose.yml` - Docker services orchestration |
52 | 43 |
|
53 | 44 | ## Security Notes |
54 | 45 |
|
55 | | -- The Gate Bedrock listener (port 25567) should only accept connections from Geyser |
56 | | -- In production, use firewall rules to restrict access to this port |
57 | | -- The `key.pem` file enables secure authentication between Geyser and Gate (no backend plugins required) |
| 46 | +- The backend runs with `online-mode=false` because Gate authenticates players. |
| 47 | +- Restrict backend access so players cannot bypass Gate. |
| 48 | +- `spigot.yml` enables Bungee/legacy forwarding, which is required for Gate to pass player identity data. |
58 | 49 |
|
59 | 50 | ## Troubleshooting |
60 | 51 |
|
61 | 52 | ### Bedrock players can't connect |
62 | 53 |
|
63 | 54 | - Check that UDP port 19132 is accessible |
64 | | -- Verify Geyser logs for connection errors |
65 | | -- Ensure the Floodgate key is properly shared |
| 55 | +- Verify Gate logs for geyserlite startup errors |
| 56 | +- Ensure the Gate container can write to its cache/data volumes |
66 | 57 |
|
67 | 58 | ### Authentication errors |
68 | 59 |
|
69 | | -- Verify the `key.pem` is accessible by both Geyser and Gate |
70 | | -- Check file permissions on the key file |
71 | | -- Ensure backend servers have `online-mode=false` (since Gate handles authentication) |
| 60 | +- Ensure backend servers have `online-mode=false` |
| 61 | +- Ensure `settings.bungeecord: true` is present in `spigot.yml` |
| 62 | +- Keep backend access restricted to Gate |
72 | 63 |
|
73 | 64 | ### Performance issues |
74 | 65 |
|
75 | | -- Adjust Geyser's `compression-level` and `mtu` settings |
76 | | -- Monitor resource usage of the Geyser container |
77 | | -- Consider using `use-direct-connection: true` in Geyser config |
| 66 | +- Monitor resource usage of the Gate container |
| 67 | +- Configure advanced managed options in `gate.yml` if you need custom geyserlite settings |
78 | 68 |
|
79 | 69 | ## Customization |
80 | 70 |
|
|
0 commit comments