Repository navigation
Server Troubleshooting
For people running a server. Player-side problems are on Troubleshooting.
| Setup | Log |
|---|---|
| Linux installer |
journalctl -u 5th-echelon -f (server), journalctl -u 5th-echelon-coordinator -f (coordinator), journalctl -u caddy -f
|
| Windows, from the launcher |
Host › Manage a server › Log, or server.log.json next to dedicated_server.exe
|
| Windows, on its own |
server.log.json next to dedicated_server.exe
|
| Docker | docker logs -f 5th-echelon |
sudo bash install-server.sh --status sums up a Linux install: what's running, whether it has joined its coordinator, the updater's last result, and whether its programs match the signed release (Programs).
| What you see | What to do |
|---|---|
| "doesn't resolve yet", or "points at … not at this server" | Fix the A record. On Cloudflare, switch it to DNS only |
| "Caddy has no certificate for …" | The A record must point here, and TCP 80 and 443 must be open in your provider's firewall. Run the installer again once they are |
--status says "not joined yet" |
The coordinator must answer at its https:// address, and the token must be current. The line under it shows the last error |
| "ports already in use" | Another program holds a port (often a web server on 80). Stop it, or put the server behind a reverse proxy; --force overrides the check |
| "this release isn't signed" | An older release; --allow-unsigned installs it on its checksum alone |
| The installer refuses the domain name | A game server's name can be at most 27 characters |
--status shows the server delisted, or the updater failed |
See Updates in the admin UI, or cat /var/lib/5th-echelon-update/update-status.json. The previous release is kept in /opt/5th-echelon/previous/
|
--status says Programs: not checked yet after updating to 0.4.2 |
Run the installer once more (sudo bash install-server.sh): it turns the check on, and keeps settings, accounts and keys |
| The program check says a program doesn't match the release | The program isn't the one the release key signed. A build of your own (--binary) shows as unverified instead. Otherwise, find out what changed it, and run the installer again to put the signed release back |
SSH stopped answering after harden-host.sh
|
Wait 10 minutes (the change undoes itself unless confirmed), or use your provider's console. After moving SSH, connect with -p and the new port |
-
From outside your network, check the server answers:
It should answer with the server's info, including its ports.
curl http://play.example.com/api/info
- Every port open? TCP 80, 443 (with Caddy), 8000, 50051 (without Caddy), and UDP 21126–21129, in your provider's firewall and any firewall on the machine (ufw, firewalld, Windows Firewall).
-
Public address set? Without it, the server tells players to connect to
127.0.0.1. Check--public-address/FE_PUBLIC_ADDRESS, or[public]behind a proxy or with remapped ports. - Port 80 really reaches the server? The game always uses port 80 for its configuration. A router or ISP that blocks inbound 80 at home stops it.
- Cloudflare: the game server's records must be DNS only. The proxy can't carry the game's UDP or its plain HTTP.
- Ask a player to run the connection test (Settings › Network): it names the part that fails.
The launcher's API isn't on HTTPS. With the Linux installer, give the server a domain name and make sure Caddy got its certificate (--status). Players' sign-ins then go over HTTPS.
-
Relayed players can't be joined? Check UDP 21128–21129 are open, and
[nat]isn'toff. The overlay's Server tab on each player's PC shows how they're reached. -
Everyone plays over one VPN (Radmin, say) and joins fail? Set
trusted_subnetto the VPN's subnet, or ask players to set Internet play to LAN or VPN only. - Docker Desktop hides players' real addresses from the server, which breaks internet play. Run the server directly, or with host networking.
- Players' reports (admin UI › Reports) and Sessions show refused sign-ins, failed joins with the game's error, and players who dropped.
The server refuses launchers older than its own release by default ([clients] minimum_version). Players' launchers update themselves; minimum_version = "off" accepts any, e.g. while a release is fresh.
The server exits if one of its services stops, so its supervisor brings it straight back: systemd's Restart=always (the installer sets it), Docker's --restart unless-stopped, or your scheduled task. Look at the log just before the restart, and open an issue with the Running your own server form.
| Problem | What to do |
|---|---|
| Not sure what the standby would do |
sudo /opt/5th-echelon/coordinator standby --status: where the record points, what Cloudflare answers for the coordinator, how long this server would wait, and whether the others reach it. journalctl -u 5th-echelon-standby has what it did |
| Nothing takes over in a drill | Stop both the standby and the coordinator on the coordinator's machine: the standby there otherwise restarts it. Takeover waits 3 minutes for the first in line, 6 for the second |
| The installer stops: the name doesn't answer through Cloudflare | Proxy the coordinator's record (orange cloud) before running the installer with --standby
|
| Servers or launchers fail to reach the coordinator after proxying it | Turn off Bot Fight Mode, I'm Under Attack and any WAF rule that challenges its name: servers and launchers can't answer a challenge. Cloudflare often blocks data centres' addresses outright ("Sorry, you have been blocked"): from each server, curl -sI https://play.example.com/v1/info should answer 200 |
| A TLS error for the coordinator's name once it's proxied | The name is two levels deep (play.group.example.com), which Cloudflare's free certificate doesn't cover. Set the group up under a one-level name (play.example.com) |
| The coordinator came back on its old machine but doesn't run there | By design: the data moved on. Move it back with standby --take-over on that machine, when it's quiet |
More: docs/failover.md.
| Problem | What to do |
|---|---|
| Every admin locked out by the restrictions | sudo bash install-server.sh --admin-open-access |
| An admin lost their second factor | Another admin uses Reset sign-in, or sudo bash install-server.sh --reset-admin NAME
|
| Cloudflare error 525 | Caddy has no certificate for the name: install the Origin CA certificate |
| A TLS error before Cloudflare answers | The name is two levels deep; use a one-level name |
ERR_HTTP2_PROTOCOL_ERROR right after switching the record to proxied |
Your computer still has the server's own address cached: flush your DNS cache |
The admin UI takes many seconds to load from far away, or Chrome shows ERR_QUIC_PROTOCOL_ERROR
|
Run the installer again on the coordinator's machine (0.4.2 or newer): it turns on BBR and compresses the admin UI |
More: docs/deploying.md › When something's wrong and docs/operations.md › When something's wrong.
5th Echelon Enhanced · a fan project, not affiliated with or endorsed by Ubisoft · Releases · Issues · Something wrong on this page? Open an issue.