Skip to content

Conversation

@azzeloof
Copy link
Contributor

Hi, this PR adds configurable support for connecting to the Ficsit Remote Monitoring mod via the game's built-in Dedicated Server API (e.g., https://<ip>:7777/api/v1).

This is useful for users running dedicated servers in Docker, where exposing the mod's 8080 port isn't always practical, but the game's 7777 port is already exposed.

This change is fully backward-compatible. I've added a router in exporter/common.go that checks the FRM_HOSTS variable:

  • If it sees a standard http:// address, it uses the original GET method.
  • If it sees a https://.../api/v1 address, it switches to a POST method, sends the correct JSON body, and skips TLS verification for the server's self-signed certificate.

How to Use

Users can now set their FRM_HOSTS variable to either format:

  • Standard Mod Web Server:
    FRM_HOSTS=http://<server_ip>:8080

  • Dedicated Server API (New):
    FRM_HOSTS=https://<server_ip>:7777/api/v1

I've also updated the readme.tpl.md to explain this new option.

Thanks!

Copy link
Owner

@AP-Hunt AP-Hunt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @azzeloof

Thanks so much for spending your time writing the code and raising a PR for it. It's very much appreciated.

I'm happy with the code and approach you've taken generally, with just a single small change I'd like you to make in some error handling.

I am however a little uncomfortable with not validating the server's certificate, even though the risk is pretty low - but I do understand why you've done it. I'm not at all familiar with how people are running Satisfactory dedicated servers. Does the setup expose the certificate chain so that it can be validated? If it does, I'd prefer to have FRMC take an environment variable for the directory to find the additional certificates, as well as a flag for doing it insecurely should people still want to.

If the setup doesn't expose the certificate chain, then there's not a lot to be done. In that case, I'd like a comment in either the commit message or the relevant place in code which explains why it's skipping certificate validation.

EDIT: could you also address the failing linting too, please?

@azzeloof
Copy link
Contributor Author

Hey @AP-Hunt-

Thank you for creating this in the first place! It's an incredibly useful tool.
And thank you for the feedback. I'll address the error handling change and linting error. As for the certificates, my understanding is that when you launch the dedicated server (at least via a Docker container the way I'm using it), the server by default generates its own self-signed certificate on-the-fly, so there's nothing to validate against. The Docker container does have the option to create a signed certificate with certbot, so if a user has actually done that then maybe we can add a flag/ environment variable that lets the user select whether they'd like to validate or not?

If this doesn't sound right please let me know- I'm no security expert 😄

Thank you!

@featheredtoast
Copy link
Collaborator

If it helps, I can confirm it's not just docker image - the cert is just self-signed in most (all?) cases so there's unfortunately not much FRMC can do other than trust it.

@AP-Hunt
Copy link
Owner

AP-Hunt commented Nov 17, 2025

Ok, sounds like the dedicated server isn't really set up for that kind of authentication. FRMC doesn't need to try and do anything on that front. What you've got is fine.

@azzeloof
Copy link
Contributor Author

Thanks @featheredtoast - that more or less aligns with what I've seen too.
@AP-Hunt Thank you, made the requested changes and added a comment about certs. I think it should pass linting now.

Cheers!

@AP-Hunt
Copy link
Owner

AP-Hunt commented Nov 18, 2025

Grand, happy with that. Thanks for putting the effort in. I'll merge this in and release it alongside the other changes that are currently open.

@AP-Hunt AP-Hunt merged commit 52eb97a into AP-Hunt:main Nov 18, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants