pso-newserv-docker/NOTES.md
2023-12-02 18:55:13 -05:00

3.3 KiB

Random, Possibly Helpful Notes

This is not supposed to be anything even approaching a proper README.md ;-)


Quick config.json Setup

For a public server on the internet:

  • Set AllowUnregisteredUsers to false
  • Leave LocalAddress configured to the interface name of your primary network adapter, e.g. en0
  • Set ExternalAddress to your server's public IP address
  • Set DNSServerPort to 53 if you want to use this, or 0 to disable, in which case you need to set up your own external DNS server (e.g. dnsmasq)
  • Set RunInteractiveShell to true (technically not needed as it should autodetect)
  • Adjusting LogLevels is highly recommended. Most things should be set to WARNING at the very least, otherwise there will be a ton of logging messages that you don't need to see unless you're debugging issues / doing newserv development.
  • Adjust the ServerName, WelcomeMessage, PCPatchServerMessage and BBPatchServerMessage to have something personalized for your server.
  • Set CheatModeBehaviour to OffByDefault

Adding Licenses (Player Accounts)

With AllowUnregisteredUsers set to false in the config.json you must manually add "licenses" which are player accounts in order for any client to successfully connect.

For Gamecube, this must be registered with a serial number and access key, as well as a password.

add-license serial=1234567890 access-key=123456789012 gc-password=myPassword

For Blue Burst, this must be registered with a serial number, username, and password.

add-license serial=1234567890 bb-username=myUsername bb-password=myPassword

Serial numbers must be unique across licenses AND client type!

For example, if you try to add a Gamecube license with the same serial number as a Blue Burst license, the most recently added license with the duplicate serial number will overwrite the existing license completely!

License/Account Privileges

In the add-license command, simply add a flags=xxx option, where xxx should be one of normal (default), mod, admin, root or numeric value.

PSO: BB Client Executable Patching

The addresses to patch (hexedit) in psobb.exe to get it to connect to your own server are:

  • Tethealla client v1.25.13

    • 0x56d70c
    • 0x56d724
    • 0x56d750
    • 0x56d76c
    • 0x56d788
    • 0x56d7a4
  • Ephinea client

    • 0x56d70c
    • 0x56d724
    • 0x56d750
    • 0x56d76c
    • 0x56d788

Each address should contain an ASCII string with an IP or hostname in it. Each string has a maximum length of 24 bytes.

Either patch all of these to the IP you put in the ExternalAddress in your config.json or use a publicly resolvable DNS hostname that resolves to that IP address.

Interactive Shell Usage in a Docker World

The docker-compose.yml file has two options specified on the newserv container that are important for this, which you don't normally see used in a Docker Compose file, but you're probably familiar with these via docker run or docker exec:

  • stdin_open: true which is equivalent to the -i option
  • tty: true which is equivalent to the -t option

Finally, in config.json uncomment and set RunInteractiveShell to true just to ensure that newserv's interactive shell feature is enabled.

Then you can just docker attach to the newserv container and Ctrl+P, Ctrl+Q to detach when done.