What the app is actually talking to
Facepunch describe the companion server as "what Rust+ uses to communicate with Rust servers", and they describe the failure exactly as players see it: "If something is wrong with it then nobody will be able to view your server in Rust+, even if they pair with it. They will see it loading for a while before it says the server is offline." So a server that is up, listed and full of players can still be "offline" in the app. The checks below are about the companion server, not the game port.
1. Open the companion port, and make sure it is TCP
"For most people," Facepunch write, "the only requirement for the companion server to work is to make the TCP port the companion server listens on accessible over the internet. Port forward, open it, add firewall rules for it, done." Two details decide which port that is:
- The default is derived from your other ports. "The default port is the game port + 67, or the RCon port + 67, whichever is the larger number. If you haven't changed any ports that means it will be 28082."
- It is TCP, not UDP. Facepunch's Creating a server page puts it in one line: "RCON and Rust+ are TCP." A rule that opens the game and query ports on UDP does nothing for Rust+.
To see which port your server is really using, run app.info in the server console. Facepunch say it shows "what port the companion server is using" and "the connection settings the server is currently using". For a home router, the port forwarding guide covers the forwarding itself.
2. The port has to be 10000 or higher
This is the rule that catches people who pick a tidy low port. If you set the port yourself with the app.port convar, Facepunch state that it "must be 10000 or higher for it to be successfully reached by our Rust+ backend", and that "you will need to restart your Rust server for the port change to take effect". The same limit applies to the connectivity test described below: "The connectivity check will not work on ports lower than that and neither will Rust+."
3. Read the log for the connectivity test
The Rust server tests its own Rust+ reachability at startup. Facepunch describe a connectivity test that "was added into the Rust server to disable Rust+ on servers that are not configured properly to allow connections to the Rust+ companion server", and what happens next: "If a server fails this test, it will [...] disable Rust+ on the server and players will see that in the in-game Rust+ menu." The line to search for in the server log is:
Rust+ companion server connectivity test failed! Disabling Rust+ features.
Facepunch add that "Details will be provided in the error message", so read the rest of that line. The fix is one of two things: "configure your server so that the test passes or disable Rust+ properly". Two limits on the test itself:
- Ten tries per five minutes per IP. "If you're running multiple Rust+ instances behind a single IPv4, make sure to not boot more than 10 servers during a time delta of 5 minutes." Past that, "you'll have to wait for 5 minutes until you can register new Rust+ instances".
- Outbound access matters too. "If you get errors about companion server registration or push notifications aren't working then make sure your server can access companion-rust.facepunch.com over the internet."
4. When the server has more than one address
Facepunch give two convars for machines with several network interfaces or an address that is not the one the world sees:
app.listenip: "If you have a more complicated networking setup where you need to specify which NIC to listen on then you'll need to set the app.listenip convar to your Rust server's public IP address."app.publicip: "If the IP address that the app connects to is incorrect, you can set it app.publicip to the value you need."
Check both with app.info before changing them, and leave them alone on a plain single-address server.
5. Test it without the app
Pairing with the app is the direct test, but Facepunch describe a quicker one for operators with several servers: "You can use a tool like Postman to test connections to the companion server. Simply create a new WebSocket request and type in the Rust server's IP address and companion server port into the 'Server URL' field. For example: ws://203.0.113.111:11111. Press the 'Connect' button and you'll see if it connected successfully in the messages log below." A connection that fails here fails for the app too, and it fails for the same reason: the TCP port is not reachable.
6. The companion.id file
Your server's identity to Rust+ is a file called companion.id in the save folder. Facepunch's rules for it are short and absolute:
- "Do not give it to anyone else."
- "Do not use someone else's file."
- "Do not use the same file on multiple servers."
- "Do not randomly delete it."
- "Do not change the 'app.id' convar."
Breaking them "will make your server behave weirdly in Rust+, disable notification permission for all your players, and probably require all players to re-pair with your server". If the file is deleted, "a brand new identity will be generated for your server", and "There's no getting it back once it's gone!" Two practical consequences: keep the file with your backups, as Facepunch ask, and when you copy a server to make a second one, delete the copy's companion.id so the two do not share an identity.
7. Turning Rust+ off on purpose
Closing the port is not the right way to disable Rust+, because the connectivity test then fails on every boot. Facepunch's documented method is to set app.port to -1 on the command line, with one quirk: "due to command line parser conflicts you will need to specify it as +app.port 1-". That, they say, "is the only way to turn it off entirely", and "Players will be able to see that Rust+ is disabled if they open the Rust+ menu on their clients while connected to your server."
Where ForgeWorld Gaming fits
On a ForgeWorld Gaming Rust server the companion port is already taken care of. Every Rust order comes with four ports of its own: the game port, the RCON port, the query port and the Rust+ port, which the Startup tab shows as App Port and passes to the server as app.port. It is above 10000 and it is opened on TCP in the same way as the game port, so the connectivity test has what it needs. On a test server we started on 2026-10-19, app.info in the Console tab answered Listening on: 0.0.0.0:28018 and App connects to: 35.223.7.18:28018, the log carried no connectivity-test failure, and a WebSocket connection to that address and port from outside the box was answered with HTTP/1.1 101 Switching Protocols, which is the test Facepunch describe. Your server's own numbers are on the Startup tab, and companion.id sits in server/rust on the Files tab, where a panel backup of the server would include it. The Server Logo variable on the same tab is the image Rust+ shows for the server. Last checked 2026-10-19.
Prefer renting to keeping your own server machine online? ForgeWorld Gaming currently offers Rust Standard: 50 player slots at CA$31.49/month. Hosted in Iowa, United States. Prices are in Canadian dollars, with no setup fee and cancel any time. Your server is set up automatically after payment. Continue to secure billing, Rust · Oxide ready, CA$31.49 / month (Standard, 50 slots), or compare Rust plans.