pso-newserv-docker/NOTES.md

99 lines
3.3 KiB
Markdown
Raw Normal View History

2023-12-02 18:53:16 -05:00
# 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.