Go to file
Robin C. Ladiges ccccdecb6a
Provide docker image (#6)
* add Dockerfile

* add docker-compose.yml

* Github workflow to build and deploy docker image

* workdir /data/ instead of /app/

* use a local directory instead of a named volume

This makes the settings.json more accessible from the outside by
default, but is less portable.

The -v command with $PWD might not work on native Windows shells, but
rather wants an absolute Windows path like C:\User\... or /c/User/...

And on Linux, because the /data/ directory and the settings.json will be
owned by root. Though that can be changed.

* more docker-compose command examples

* add linux/arm/v7 ; improve build & runtime

* fix: just arm not arm32

* test docker build for PRs

* back to the microsoft runtime
2022-07-17 13:00:31 -06:00
.github/workflows Provide docker image (#6) 2022-07-17 13:00:31 -06:00
Server Merge branch 'master' of https://github.com/Sanae6/SmoOnlineServer 2022-07-08 23:13:44 +00:00
Shared Add date to log messages 2022-06-20 12:57:45 -06:00
TestClient Add max players command and remove savesettigns 2022-05-31 14:48:48 -06:00
.gitignore Add date to log messages 2022-06-20 12:57:45 -06:00
Dockerfile Provide docker image (#6) 2022-07-17 13:00:31 -06:00
README.md Provide docker image (#6) 2022-07-17 13:00:31 -06:00
SmoMultiplayerServer.sln Add README.md 2022-06-17 21:18:57 -06:00
docker-compose.yml Provide docker image (#6) 2022-07-17 13:00:31 -06:00
smo.service Added a simple systemd service (#5) 2022-07-01 12:10:15 -06:00

README.md

Super Mario Odyssey: Online Server

The official server for the Super Mario Odyssey: Online mod.

Windows Setup

  1. Download latest build from Releases
  2. Run Server.exe
  3. settings.json is autogenerated in step 2, modify it however you'd like.

Building (Mac/Linux Setup)

Must have the .NET 6 SDK and Git installed. Run these commands in your shell:

git clone https://github.com/Sanae6/SmoOnlineServer
cd SmoOnlineServer
# replace run with build to only build the server
dotnet run --project Server/Server.csproj -c Release

If you ran dotnet build instead of dotnet run, you can find the binary at Server/bin/net6.0/Release/Server.exe

Running under systemd

If you have systemd, you can use the existing systemd serivce.

cp smo.serivce /etc/systemd/system/smo.service
# edit ExecStart to your path for the server executable and change WorkingDirectory to the server directory
chmod +x filepath to the server executable
systemctl enable --now smo.service

Run docker image

If you have docker on your system, you can use the existing docker image. That way you don't have to build this server yourself or manually handle executables.

docker  run  --rm  -it  -p 1027:1027  -v "/$PWD/data/://data/"  ghcr.io/sanae6/smo-online-server
# on Windows, depending on the shell you're using, $PWD might not work. Use an absolute path instead.

To always check for and use the latest server version you can add --pull=always to the options.

Alternatively there's a docker-compose.yml for docker-compose to simplify the command line options:

# update server
docker-compose pull

# start server
docker-compose up -d

# open the server cli
docker attach `docker-compose ps -q` --sig-proxy=false

# watch server logs
docker-compose logs --tail=20 --follow

# stop server
docker-compose stop

Commands

Run help to get what commands are available in the server console. Run the loadsettings command in the console to update the settings without restarting. Server address and port will require a server restart, but everything else should update when you run loadsettings.

Settings

Server

Address: the ip address of the server, default: 0.0.0.0 # this shouldn't be changed
Port: the port of the server, default 1027
Maxplayers: the max amount of players that can join, default: 8
Flip: flips the player upside down, defaults: enabled: true, pov: both
Scenario: sync's scenario's for all players on the server, default: false
Banlist: banned people are unable to join the server, default: false

Discord

Token: the token of the bot you want to load into, default: null
Prefix: the bot prefix to be used, default: $
LogChannel: logs the server console to that channel, default: null