mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2024-11-21 21:17:25 +00:00
fix: Docker Compose README (#1403)
* fix: Docker Compose README * fix: add password requiremnts hint * fix: note on sudo / docker compose * fix: add note on UGCUSE3DSERVICES * fix: reorder * fix: duplicate word * fix: move broken line * fix(compose): enable USER_ENABLE_REGISTER by default
This commit is contained in:
parent
e4469f997e
commit
fbdcc17bb5
@ -1,9 +1,7 @@
|
|||||||
# Full path to the LEGO Universe client
|
# Full path to the LEGO Universe client
|
||||||
CLIENT_PATH=/Users/someuser/LEGO Universe
|
CLIENT_PATH=./client
|
||||||
# Can improve build time
|
|
||||||
BUILD_THREADS=1
|
|
||||||
# Updates NET_VERSION in CMakeVariables.txt
|
# Updates NET_VERSION in CMakeVariables.txt
|
||||||
BUILD_VERSION=171022
|
NET_VERSION=171022
|
||||||
# make sure this is a long random string
|
# make sure this is a long random string
|
||||||
# grab a "SHA 256-bit Key" from here: https://keygen.io/
|
# grab a "SHA 256-bit Key" from here: https://keygen.io/
|
||||||
ACCOUNT_MANAGER_SECRET=
|
ACCOUNT_MANAGER_SECRET=
|
||||||
@ -12,6 +10,5 @@ EXTERNAL_IP=localhost
|
|||||||
# Database values
|
# Database values
|
||||||
# Be careful with special characters here. It is more safe to use normal characters and/or numbers.
|
# Be careful with special characters here. It is more safe to use normal characters and/or numbers.
|
||||||
MARIADB_USER=darkflame
|
MARIADB_USER=darkflame
|
||||||
MARIADB_PASSWORD=SECRET_VALUE_CHANGE_ME
|
MARIADB_PASSWORD=
|
||||||
MARIADB_ROOT_PASSWORD=SECRET_VALUE_CHANGE_ME
|
|
||||||
MARIADB_DATABASE=darkflame
|
MARIADB_DATABASE=darkflame
|
||||||
|
42
README.md
42
README.md
@ -348,12 +348,40 @@ certutil -hashfile <file> SHA1
|
|||||||
Known good *SHA1* checksum of the Darkflame Universe client:
|
Known good *SHA1* checksum of the Darkflame Universe client:
|
||||||
- `91498e09b83ce69f46baf9e521d48f23fe502985` (packed client, zip compressed)
|
- `91498e09b83ce69f46baf9e521d48f23fe502985` (packed client, zip compressed)
|
||||||
|
|
||||||
|
|
||||||
# Docker
|
# Docker
|
||||||
|
|
||||||
## Standalone
|
The Darkflame Server is automatically built and published as a Docker Container / [OCI](https://opencontainers.org/) Image to the GitHub Container Registry at:
|
||||||
|
[`ghcr.io/darkflameuniverse/darkflameserver`](https://github.com/DarkflameUniverse/DarkflameServer/pkgs/container/darkflameserver).
|
||||||
|
|
||||||
For standalone deployment, you can use the image provided via Github's Container Repository:
|
## Compose
|
||||||
`ghcr.io/darkflameuniverse/darkflameserver`
|
|
||||||
|
You can use the `docker-compose` tool to [setup a MariaDB database](#database-setup), run the Darkflame Server and manage it with [Nexus Dashboard](https://github.com/DarkflameUniverse/NexusDashboard) all
|
||||||
|
at once. For that:
|
||||||
|
|
||||||
|
- [Install Docker Desktop](https://docs.docker.com/get-docker/)
|
||||||
|
- Open the directory that contains your LU Client
|
||||||
|
- If the `legouniverse.exe` is in a subfolder called `client`, you're good to go. There may also be a folder `versions`.
|
||||||
|
- Otherwise, create a new `client` folder and move the exe and everything else (e.g. `res` and `locale`) in there. This is necessary to work around a bug in the client that will prevent that you to log back in after getting disconnected.
|
||||||
|
- Download the [docker-compose.yml](docker-compose.yml) file and place it next to `client`.
|
||||||
|
- Download the [.env.example](.env.example) file and place it next to `client` with the file name `.env`
|
||||||
|
- You may get warnings that this name starts with a dot, acknowledge those, this is intentional. Depending on your operating system, you may need to activate showing hidden files (e.g. Ctrl-H in Gnome on Linux) and/or file extensions ("File name extensions" in the "View" tab on Windows).
|
||||||
|
- Update the `ACCOUNT_MANAGER_SECRET` and `MARIADB_PASSWORD` with strong random passwords.
|
||||||
|
- Use a password generator like <https://keygen.io>
|
||||||
|
- Avoid `:` and `@` characters
|
||||||
|
- Once the database user is created, changing the password will not update it, so the server will just fail to connect.
|
||||||
|
- Set `EXTERNAL_IP` to your LAN IP or public IP if you want to host the game for friends & family
|
||||||
|
- Open a terminal in the folder with the `docker-compose.yml` and `client`
|
||||||
|
- Run `docker compose up -d`
|
||||||
|
- This might require `sudo` on Linux, and a recent version of [docker compose](https://docs.docker.com/compose/install/)
|
||||||
|
- Run `docker exec -it dlu-darkflameserver-1 /app/MasterServer -a` and follow the instructions to create the initial admin account
|
||||||
|
- Open <http://localhost:8000> to access Nexus Dashboard with the admin account to create normal users
|
||||||
|
- Set `AUTHSERVERIP=0:localhost` in `client/boot.cfg`
|
||||||
|
- Replace `localhost` with the value of `EXTERNAL_IP` if you changed that earlier.
|
||||||
|
- Also make sure `UGCUSE3DSERVICES=7:` is set to `0`
|
||||||
|
- Launch `legouniverse.exe`
|
||||||
|
|
||||||
|
## Standalone
|
||||||
|
|
||||||
This assumes that you have a database deployed to your host or in another docker container.
|
This assumes that you have a database deployed to your host or in another docker container.
|
||||||
|
|
||||||
@ -376,14 +404,6 @@ You will need to replace the `/path/to/`'s to reflect the paths on your host.
|
|||||||
|
|
||||||
Any config option in the `.ini`'s can be overridden with environmental variables: Ex: `log_to_console=1` from `shared_config.ini` would be overidden like `-e LOG_TO_CONSOLE=0`
|
Any config option in the `.ini`'s can be overridden with environmental variables: Ex: `log_to_console=1` from `shared_config.ini` would be overidden like `-e LOG_TO_CONSOLE=0`
|
||||||
|
|
||||||
## Compose
|
|
||||||
|
|
||||||
See the [compose](docker-compose.yml) file in the root of the repo.
|
|
||||||
|
|
||||||
This compose file is for a full deployment: MariaDB, DarkflameServer, and Nexus Dashboard.
|
|
||||||
|
|
||||||
All of the environmental options are listed in the compose file so the can be pass through, or you can edit the compose file to suit your specific needs
|
|
||||||
|
|
||||||
# Development Documentation
|
# Development Documentation
|
||||||
This is a Work in Progress, but below are some quick links to documentaion for systems and structs in the server
|
This is a Work in Progress, but below are some quick links to documentaion for systems and structs in the server
|
||||||
[Networked message structs](https://lcdruniverse.org/lu_packets/lu_packets/index.html)
|
[Networked message structs](https://lcdruniverse.org/lu_packets/lu_packets/index.html)
|
||||||
|
@ -1,58 +1,73 @@
|
|||||||
version: "3"
|
version: "3"
|
||||||
|
name: dlu
|
||||||
|
|
||||||
services:
|
services:
|
||||||
darkflamedb:
|
darkflamedb:
|
||||||
image: mariadb:latest
|
|
||||||
environment:
|
|
||||||
- MARIADB_USER=${MARIADB_USER:-darkflame}
|
|
||||||
- MARIADB_PASSWORD=${MARIADB_PASSWORD:-darkflame}
|
|
||||||
- MARIADB_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD:-darkflame}
|
|
||||||
- MARIADB_DATABASE=${MARIADB_DATABASE:-darkflame}
|
|
||||||
networks:
|
networks:
|
||||||
- darkflame
|
- darkflame
|
||||||
|
image: mariadb:latest
|
||||||
|
volumes:
|
||||||
|
- ${DB_DATA_DIR:-./db/data}:/var/lib/mysql
|
||||||
|
environment:
|
||||||
|
- MARIADB_RANDOM_ROOT_PASSWORD=1
|
||||||
|
- MARIADB_USER=${MARIADB_USER:-darkflame}
|
||||||
|
- MARIADB_PASSWORD=${MARIADB_PASSWORD:?error}
|
||||||
|
- MARIADB_DATABASE=${MARIADB_DATABASE:-darkflame}
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
||||||
|
start_period: 10s
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 3
|
||||||
|
|
||||||
darkflameserver:
|
darkflameserver:
|
||||||
networks:
|
networks:
|
||||||
- darkflame
|
- darkflame
|
||||||
image: ghcr.io/darkflameuniverse/darkflameserver:latest
|
image: ghcr.io/darkflameuniverse/darkflameserver:latest
|
||||||
volumes:
|
volumes:
|
||||||
- $HOST_CONFIG_DIR:/app/configs/
|
- ${HOST_CONFIG_DIR:-./server/config}:/app/configs/
|
||||||
- $HOST_CLIENT_LOCATION:$CLIENT_LOCATION:ro
|
- ${CLIENT_PATH:-./client}:/app/luclient:ro
|
||||||
- $HOST_RESSERVER_LOCATION:/app/resServer/
|
- ${HOST_RESSERVER_LOCATION:-./server/res}:/app/resServer/
|
||||||
- $HOST_DUMP_FOLDER:$DUMP_FOLDER
|
- ${HOST_DUMP_FOLDER:-./server/dump}:/app/dump/
|
||||||
- $HOST_LOGS_DIR:/app/logs/
|
- ${HOST_LOGS_DIR:-./server/logs}:/app/logs/
|
||||||
environment:
|
environment:
|
||||||
|
- CLIENT_LOCATION=/app/luclient
|
||||||
- DLU_CONFIG_DIR=/app/configs
|
- DLU_CONFIG_DIR=/app/configs
|
||||||
|
- DUMP_FOLDER=/app/dump
|
||||||
- MYSQL_HOST=darkflamedb
|
- MYSQL_HOST=darkflamedb
|
||||||
- MYSQL_DATABASE=${MARIADB_DATABASE:-darkflame}
|
- MYSQL_DATABASE=${MARIADB_DATABASE:-darkflame}
|
||||||
- MYSQL_USERNAME=${MARIADB_USER:-darkflame}
|
- MYSQL_USERNAME=${MARIADB_USER:-darkflame}
|
||||||
- MYSQL_PASSWORD=${MARIADB_PASSWORD:-darkflame}
|
- MYSQL_PASSWORD=${MARIADB_PASSWORD:?error}
|
||||||
- EXTERNAL_IP=${EXTERNAL_IP:-localhost}
|
- EXTERNAL_IP=${EXTERNAL_IP:-localhost}
|
||||||
- DUMP_FOLDER=$DUMP_FOLDER
|
- CLIENT_NET_VERSION=${CLIENT_NET_VERSION:-171022}
|
||||||
- CLIENT_LOCATION=$CLIENT_LOCATION
|
|
||||||
depends_on:
|
depends_on:
|
||||||
- darkflamedb
|
- darkflamedb
|
||||||
ports:
|
ports:
|
||||||
- "1001:1001/udp"
|
- "1001:1001/udp"
|
||||||
- "2005:2005/udp"
|
- "2005:2005/udp"
|
||||||
- "3000-3300:3000-3300/udp"
|
- "3000-3300:3000-3300/udp"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "ls", "/app/resServer/CDServer.sqlite"]
|
||||||
|
|
||||||
darkflameweb:
|
darkflameweb:
|
||||||
networks:
|
networks:
|
||||||
- darkflame
|
- darkflame
|
||||||
image: ghcr.io/darkflameuniverse/nexusdashboard:latest
|
image: ghcr.io/darkflameuniverse/nexusdashboard:latest
|
||||||
volumes:
|
volumes:
|
||||||
- $HOST_CLIENT_LOCATION:/app/luclient:ro
|
- ${CLIENT_PATH:-./client}:/app/luclient:ro
|
||||||
- $HOST_CACHE_LOCATION:/app/cache
|
- ${HOST_CACHE_LOCATION:-./web/cache}:/app/cache
|
||||||
- $HOST_CD_SQLITE_LOCATION:/app/cdclient:ro
|
- ${HOST_RESSERVER_LOCATION:-./server/res}:/app/cdclient:ro
|
||||||
|
- ${HOST_ND_LOGS_LOCATION:-./web/logs}:/logs
|
||||||
environment:
|
environment:
|
||||||
- APP_SECRET_KEY=$APP_SECRET_KEY
|
- APP_SECRET_KEY=${ACCOUNT_MANAGER_SECRET:?error}
|
||||||
- APP_DATABASE_URI=mysql+pymysql://${MARIADB_USER:-darkflame}:${MARIADB_PASSWORD:-darkflame}@darkflamedb:3306/${MARIADB_DATABASE:-darkflame}
|
- APP_DATABASE_URI=mysql+pymysql://${MARIADB_USER:-darkflame}:${MARIADB_PASSWORD:?error}@darkflamedb:3306/${MARIADB_DATABASE:-darkflame}
|
||||||
- CLIENT_LOCATION=/app/luclient
|
- CLIENT_LOCATION=/app/luclient/
|
||||||
- CACHE_LOCATION=/app/cache
|
- CACHE_LOCATION=/app/cache/
|
||||||
- CD_SQLITE_LOCATION=/app/cdclient
|
- CD_SQLITE_LOCATION=/app/cdclient/
|
||||||
|
- USER_ENABLE_REGISTER=1 # "0" is _not_ false, to disable, remove this line
|
||||||
depends_on:
|
depends_on:
|
||||||
- darkflamedb
|
- darkflamedb
|
||||||
|
- darkflameserver
|
||||||
ports:
|
ports:
|
||||||
- 8000:8000
|
- 8000:8000
|
||||||
healthcheck:
|
healthcheck:
|
||||||
|
Loading…
Reference in New Issue
Block a user