Get Online + Players working (required)
To be listed properly, you must run our status reporter and enable the WebServer + Query plugins on localhost (they are made by Nitrado, but they work on any host). The reporter sends secure heartbeats (Online/Offline) and forwards players/max to Hytale Universe.
Do this
This is intentionally short. If you follow these steps exactly, it works.
- Download the plugins (made by Nitrado — works on any hosting provider):
- https://github.com/nitrado/hytale-plugin-webserver
- https://github.com/nitrado/hytale-plugin-query
- Bind WebServer to 127.0.0.1 (localhost-only).
- Default port is server port + 3 (example: 7000 → 7003).
- Query URL: https://127.0.0.1:7003/Nitrado/Query
- Server ID: from your server page URL.
- Owner Key: from your submission page.
- Keep the Owner Key private (like a password).
Run this on the same computer that is running your Hytale server.
This is not something you run on your own PC unless your server is on your PC.
- VPS / Dedicated server: SSH into the server and run the command there.
- Game hosting panel (Pterodactyl/TCAdmin/etc): use their built-in Console / Terminal / SFTP to upload the file and run it on the server.
- If you don’t have a terminal/SSH access: ask your host to run a Node.js script alongside the server (or move to a host that allows it).
If it stops, your listing will go Offline and players may stop updating.
Optional: run it as a Linux service (systemd)
If you know systemd, this keeps the reporter running after reboots.
[Unit]
Description=Hytale Universe Status Reporter
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
WorkingDirectory=/opt/hu-status
Environment=HU_SERVER_ID=YOUR_SERVER_ID
Environment=HU_OWNER_KEY=YOUR_OWNER_KEY
Environment=HU_QUERY_URL=https://127.0.0.1:7003/Nitrado/Query
Environment=HU_QUERY_TLS_INSECURE=true
ExecStart=/usr/bin/node /opt/hu-status/hu-status.js
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Optional: authentication / gotchas
- 406 from Query usually means content negotiation: set HU_QUERY_ACCEPT to application/x.hytale.nitrado.query+json;version=1.
- Self-signed TLS is normal for localhost: keep HU_QUERY_TLS_INSECURE=true (localhost only).
- If your Query endpoint requires auth, set HU_QUERY_BASIC_USER and HU_QUERY_BASIC_PASS.
Troubleshooting (fast)
- Make sure hu-status.js is running continuously.
- Make sure WebServer is reachable locally at https://127.0.0.1:7003/Nitrado/Query.
- Wait up to ~60 seconds for the next refresh.
- 401/403: Query needs permissions/auth → set Basic Auth env vars or open local permissions.
- 406: wrong Accept header → set HU_QUERY_ACCEPT.
- TLS/cert error: set HU_QUERY_TLS_INSECURE=true (localhost only).
Players not showing (Online works, but Players stays at 0)
If your server shows Online but the player count stays at 0, the reporter is running, but it can’t read player data from the local Query endpoint.
Some hosts require allowing the Query web endpoints for the ANONYMOUS group. Run these in your server console:
/perm group add ANONYMOUS nitrado.query.web.read.server
/perm group add ANONYMOUS nitrado.query.web.read.universe
/perm group add ANONYMOUS nitrado.query.web.read.*
/perm group add ANONYMOUS nitrado.query.*
/perm group add ANONYMOUS nitrado.*
If your host returns HTTP 406 with the default content type, set this environment variable and restart the reporter: