From fb9bd077a81c7bf627eb245904435dfc59be2ec1 Mon Sep 17 00:00:00 2001 From: fishscene Date: Thu, 24 Oct 2024 17:01:37 -0700 Subject: [PATCH] Update README.md --- README.md | 105 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) diff --git a/README.md b/README.md index 2def0139..d39b9320 100644 --- a/README.md +++ b/README.md @@ -702,3 +702,108 @@ There are several actions that don't fit well into the table above, which let yo * Convert item data to a human-readable description, or vice versa (`describe-item`) * Connect to another PSO server and pretend to be a client (`cat-client`) * Generate or describe DC serial numbers (`generate-dc-serial-number`, `inspect-dc-serial-number`) + +# Docker +Docker is new and mostly unsupported at this time. However, here are some best-effort steps to build and run in a docker container on Ubuntu Linux. +Tested on Ubuntu 22.04.4 LTS. +Note: You cannot have anything except this docker container using port 53 (DNS) on your server. + +Install prerequisites +``` +sudo apt install -y git +sudo apt install -y cmake. ## minimum version is 3.10. Check installed version with "cmake --version" +``` + +Clone repository +``` +cd ~ +git clone https://github.com/fuzziqersoftware/newserv/ +cd ~/newserv +``` + +Build newserv. This will take a while. Don't forget the period at the end! +``` +sudo docker build -t newserv . +``` + +Create persistent directories. Assuming you want to store the persistent data in your home directory +``` +mkdir ~/newservPersist +mkdir ~/newservPersist/players +mkdir ~/newservPersist/teams +mkdir ~/newservPersist/licenses +``` + +Copy config file to config dir +``` +cp ~/newserv/system/config.example.json ~/newservPersist/config.json +``` + +Edit config.json +``` +nano ~/newservPersist/config.json +``` +Pro tip: +Set "LocalAddress" to the static, LAN IP address of your server. If your server LAN IP is "192.168.0.10": +"LocalAddress": "192.168.0.10", + +Set "ExternalAddress" to the WAN IP address of your network. If your WAN IP is "8.8.8.8": +"ExternalAddress": "8.8.8.8", + +For Dolphin > Settings. Set SP1 to "Broadband Adapter (HLE)" Click [...] next to this, and set the DNS to the IP address of your server. Then start the game. Changes will not take affect if the game is running. + +Docker run. Remember to change /home/changeme/newservPersist to your persistent directory. Do not use aliases such as '~' +``` +docker run --name newserv -p 53:53/udp -p 5100:5100 -p 5110:5110 -p 5111:5111 -p 5112:5112 -p 9064:9064 -p 9100:9100 -p 9103:9103 -p 9300:9300 -p 11000:11000 -p 12000:12000 -p 12004:12004 -p 12005:12005 -v /etc/localtime:/etc/localtime:ro -v /home/changeme/newservPersist/config.json:/newserv/system/config.json -v /home/changeme/newservPersist/players:/newserv/system/players -v /home/changeme/newservPersist/teams:/newserv/system/teams -v /home/changeme/newservPersist/licenses:/newserv/system/licenses --restart no newserv:latest +``` + +Docker run host network mode. Remember to change /home/changeme/newservPersist to your persistent directory. Do not use aliases such as '~' +``` +docker run --net host --name newserv -v /etc/localtime:/etc/localtime:ro -v /home/changeme/newservPersist/config.json:/newserv/system/config.json -v /home/changeme/newservPersist/players:/newserv/system/players -v /home/changeme/newservPersist/teams:/newserv/system/teams -v /home/changeme/newservPersist/licenses:/newserv/system/licenses --restart no newserv:latest +``` + +Docker compose. Remember to change /home/changeme/newservPersist to your persistent directory. Do not use aliases such as '~' +``` +name: psonewserv +services: + newserv: + container_name: newserv + ports: + - 53:53/udp + - 5100:5100 + - 5110:5110 + - 5111:5111 + - 5112:5112 + - 9064:9064 + - 9100:9100 + - 9103:9103 + - 9300:9300 + - 11000:11000 + - 12000:12000 + - 12004:12004 + - 12005:12005 + volumes: + - /etc/localtime:/etc/localtime:ro + - /home/changeme/newservPersist/config.json:/newserv/system/config.json + - /home/changeme/newservPersist/players:/newserv/system/players + - /home/changeme/newservPersist/teams:/newserv/system/teams + - /home/changeme/newservPersist/licenses:/newserv/system/licenses + restart: no ## Set to whatever you want. + image: newserv:latest +``` +Docker compose host network mode. Remember to change /home/changeme/newservPersist to your persistent directory. Do not use aliases such as '~' +``` +name: psonewserv +services: + newserv: + container_name: newserv + volumes: + - /etc/localtime:/etc/localtime:ro + - /home/changeme/newservPersist/config.json:/newserv/system/config.json + - /home/changeme/newservPersist/players:/newserv/system/players + - /home/changeme/newservPersist/teams:/newserv/system/teams + - /home/changeme/newservPersist/licenses:/newserv/system/licenses + restart: no ## Set to whatever you want. + network_mode: host + image: newserv:latest +```