Reforger OPS

Installing the ReforgerOps extension on Aether Panel

· 9 min read

Aether Panel is a game server hosting panel in the same family as Pterodactyl. If your Arma Reforger server runs on it, the ReforgerOps extension ties the two panels together: one click takes you from Aether to the same server in ReforgerOps, and Aether tells ReforgerOps the moment the server crashes, stops or starts, with nothing else to configure. This guide covers what the extension does, who installs it, how to connect a server from it, and what to check when something does not work.

What the extension does

The extension is a .zip file you install once on the Aether panel. From then on it does three things:

  • A "ReforgerOps" tab on every Arma Reforger server. It only shows up on servers built from the Arma Reforger template (template type armareforger); servers for other games on the same panel never see it.
  • An "Open in ReforgerOps" button. It opens that exact server in ReforgerOps, in a new browser tab. If it is already connected you land straight on it; if not, you are taken to connect it, with the panel and the server already filled in.
  • Events from Aether to ReforgerOps. When the server crashes, Aether reports it immediately and ReforgerOps sends a single alert through Discord, Telegram or a phone notification (whichever you have set up), with the exit code when Aether provides one and the last lines of the log, so you can see what happened without digging through files. If Aether restarted it on its own, the alert says so. When the server stops or starts, the server status message in Discord switches to "Switched off" or "Starting up" right away, without waiting for the next check and without a crash alert: stopping it yourself is not a crash.

A single alert really means one: once Aether has reported a crash, ReforgerOps' usual detection does not send a second message for the same outage. Every event also lands in the server's Activity log in ReforgerOps under the user aether, so later you can tell when it stopped or went down. And if you delete the server in Aether, ReforgerOps disconnects it from Aether and lets you know, but keeps the server and its history.

What the extension does not do: it does not show players or bans inside Aether (that is what ReforgerOps is for), it installs nothing in the game, and on its own it gives ReforgerOps no access to your servers. You grant that access yourself, one server at a time, with an OAuth client you can delete whenever you like.

Who installs it

Whoever administers the Aether panel installs it, not each customer. There are two situations and the steps are identical:

  • You run your own Aether panel. You are the administrator and the customer at once: install the extension, then connect your servers from the tab.
  • You are a hosting company. Install it once and every customer with an Arma Reforger server gets the tab. The host needs no ReforgerOps account and never has to paste keys on anyone's behalf: each customer uses their own account and connects their server whenever they want.

If you are a customer of a host that runs Aether, there is nothing for you to install. If your server has no ReforgerOps tab, ask your host to install the extension; feel free to send them a link to this guide.

Installing the extension

  1. Download the file: reforgerops-aether.zip. No need to unzip it.
  2. In Aether, go to Settings → Extensions and click "Install extension".
  3. Upload the .zip. The extension appears in the list as "ReforgerOps".
  4. Turn its switch on. Installed but switched off, it shows no tab and sends no events.

On that same screen you will see two things you should leave alone:

  • The events address comes preset: https://reforgerops.net/api/aether/events. That is where Aether sends its events. Do not change it: with any other address the alerts stop arriving.
  • The "Signing key" Aether displays does not need to be copied anywhere. ReforgerOps checks every event against the panel's own identity key, which Aether publishes by itself, so there is no key to paste.

One requirement: the panel address must be set in Aether's settings, and it must start with https://. It is the address the panel identifies itself with. Without it, the tab cannot tell ReforgerOps which panel the server belongs to; without HTTPS, events are not accepted.

Connecting a server from the tab

Once the extension is installed, each server owner connects their own server like this:

  1. Open the server in Aether and go to the ReforgerOps tab.
  2. Click "Open in ReforgerOps". A new browser tab opens.
  3. Sign in, or create an account. If you need to confirm your email first, that is fine: when you come back, ReforgerOps picks up the server you were connecting.
  4. If that server is already connected to your account, you go straight to it. If not, ReforgerOps shows the panel and the server already filled in and only asks for an OAuth client. If your plan has no room for another server, it tells you before asking for anything.
  5. Create the OAuth client in Aether: Profile → OAuth clients → New, with "Access: only this server" and these permissions: power on and off, view CPU and memory, console, and view and edit files. If you do not see "OAuth clients" in your profile, your account lacks that permission: ask your host for it.
  6. Paste the client_id and client_secret into ReforgerOps and click "Connect the server".

ReforgerOps then reads the server's config.json through Aether, picks up the public address and the RCON port and password, checks that RCON answers, and adds the server to your account. The RCON password travels from Aether to ReforgerOps directly: it never passes through your browser and you never have to copy it by hand. From there the usual connection wizard carries on: Steam Query, the companion mod (which can be installed for you, since there is already file access) and Discord.

Limiting the client to "only this server" is the recommended choice: if the key ever leaks, it only works on that server and only for what you allowed. You can delete the client in Aether at any time and ReforgerOps loses access.

Security in plain words

  • Events are signed by the panel. Aether signs every event with its panel's identity key, and ReforgerOps verifies the signature before doing anything. Nobody can send a fake "server down" in your panel's name.
  • Only verified servers receive alerts. A server gets Aether's events only if ReforgerOps has already talked to Aether about that server with a working OAuth client. Typing in someone else's panel and server number is not enough to receive their crashes.
  • ReforgerOps checks that the address really is an Aether panel before asking for your keys. Anyone can build the link the tab opens, so if the address does not publish an Aether panel identity, the fields to paste anything never appear.
  • HTTPS only. A panel served over http:// cannot prove who it is and would send your keys unencrypted: it cannot be connected from the tab and gets no events.
  • Check the address before you paste. Next to the fields, ReforgerOps shows the panel address in large type. If it is not your Aether panel, do not paste your client_secret.

Open source

The extension's code is public under the MIT license, in its GitHub repository. Anyone can read it before installing it, which is exactly what a hosting company tends to want before adding anything to its panel. Every version on the releases page ships the .zip together with its SHA-256 checksum: you can confirm the file you downloaded is that exact one (for example with sha256sum reforgerops-aether.zip) or build it yourself from the source with npm test && npm run build. The zip comes out byte-for-byte identical.

Troubleshooting

The tab does not appear

  • The extension's switch is off under Settings → Extensions.
  • The server is not built from the Arma Reforger template: the tab only shows on servers whose template type is armareforger.
  • Aether was already open before you installed it: reload the page.

"Your hosting provider has not set the panel address in Aether yet"

The tab shows this when Aether has no panel address in its settings. If the panel is yours, set it, starting with https://; if not, ask your host to do it.

"We could not check this address"

ReforgerOps could not reach the panel to confirm it is an Aether panel. Almost always the panel is down or not answering at that moment: try again in a while. If the panel is yours and it still does not answer, you can connect the server manually from Settings → Integrations in ReforgerOps.

"The OAuth client is missing…", "lacks permission…" or "has no access…"

The OAuth client lacks one of the permissions listed above, or has no access to this server. Edit it under your Aether Profile → OAuth clients, add the missing one and try again. If the message says Aether rejected the client_id or the client_secret, check that you copied them in full, with no spaces at either end.

"We could not find the config.json"

ReforgerOps looks for the file at /config.json. If your server keeps it in another folder, a field appears where you can type the path, starting with /. If the file is there but lacks publicAddress or an rcon block with port and password, fill them in, restart the server and try again; the guide to enabling RCON explains that block.

Alerts are not arriving

  • The Aether panel is not on HTTPS, or the panel address is not set in its settings.
  • Look at the Aether card in ReforgerOps (Settings → Configuration → Connections): it says "Receiving Aether notices" with the time of the last one, or tells you what is missing. If it says it is waiting for Aether to confirm access, the OAuth client has not worked for that server yet.
  • Alerts go out through the channels you set up in ReforgerOps: with no Discord, Telegram or phone notifications, the crash is recorded in the Activity log but reaches you nowhere.

There is a new version of the extension

When we announce one in What's new, download the .zip again from the same link and install it again under Settings → Extensions. Your connected servers are not affected: the connection lives in ReforgerOps, not in the extension.

Coming from Pterodactyl

To ReforgerOps, Aether and Pterodactyl are two ways of reaching the same container: the full restart, the config.json editor with backups, the mod list and scheduled restarts all work the same with either. What changes is how you grant access (in Pterodactyl, an API key for your whole account; in Aether, an OAuth client that can be limited to one server) and that with Aether a crash arrives as an event instead of being inferred. The Pterodactyl guide covers ports, where config.json lives and where to find the logs, all of which apply to a server on Aether too; and to get alerts and status into a channel, see how to show your server status in Discord.