# 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. ```text add-license serial=1234567890 access-key=123456789012 gc-password=myPassword ``` For Blue Burst, this must be registered with a serial number, username, and password. ```text 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.