+ readme updated, but not complete
This commit is contained in:
parent
a6de8a7a5b
commit
96d88671a1
254
README.md
254
README.md
@ -1,90 +1,221 @@
|
|||||||
# GMOD TTT
|
# GMOD TTT
|
||||||
GMOD TTT server image, https://hub.docker.com/r/jusito/
|
GMOD TTT server image, https://hub.docker.com/r/jusito/
|
||||||
|
|
||||||
## TODO
|
|
||||||
* sv_password not working
|
|
||||||
* rcon not working
|
|
||||||
* scrds doesn't like different internal / external ports (thats why no ports are exposed)
|
|
||||||
* replacer config in other repo u2d?
|
|
||||||
* health check -> details
|
|
||||||
* volume for steam workshop
|
|
||||||
* volume for other games
|
|
||||||
* volume for gmod config
|
|
||||||
* AppArmor Profile
|
|
||||||
|
|
||||||
## Getting Started
|
## Getting Started
|
||||||
1. Create public workshop collection without maps, dummy ID:=123456. Use `jusito/docker-ttt [...] +host_workshop_collection 123456`. Create a collection with maps ID:=7891011 and add/link it to 123456. If you want the clients to automatically load the collection from the workshop when connecting without subscribing, use `-e WORKSHOP_COLLECTION_ID=123456`. The users loading all non-maps at startup and the map if needed, but you don't need to point them to the collection in the workshop.
|
### Prepare your server content
|
||||||
2. Do this elements need CSS, HL2, HLDM, TF2? Use `-e INSTALL_CSS=true` or `-e INSTALL_HL2=true` aso.
|
1. Create public workshop collection without maps, dummy ID:=123456. Use `-e host_workshop_collection 123456`.
|
||||||
3. Which ports? 27015/udp is default for game traffic x/tcp for rcon, for 27016 you would use `-p 27016:27016/udp [...] jusito/docker-ttt [...] -port 27016`.
|
2. Create public workshop collection with maps and add this one to "123456".
|
||||||
4. Set environment variables like servername `-e SERVER_NAME="My Server"`, password `-e SERVER_PASSWORD="securepw"` and timezone for cron `-e TZ="Europe/Berlin"`, default short downtime at Sunday 10 o'clock.
|
3. Do you want every user to load the content automatically? Yes you are done, no `-e WORKSHOP_AUTOLOAD=false`. Remember that "false" mean, that every user has to manually subscribe to your collection. If you don't separate maps / others, every connecting user would load all maps on first connecting. This would be a pain for some.
|
||||||
5. Add options for server like startmap `+map ttt_rooftops_2016_v1` and max players `-maxplayers 10`
|
4. Do your content needs CSS, HL2, HLDM, TF2? Use `-e INSTALL_CSS=true` and/or `-e INSTALL_HL2=true` and so on. Most content will need at least CSS.
|
||||||
|
|
||||||
|
### Server config
|
||||||
|
1. Pick your ports `-e SERVER_PORT=27015 -p 27015:27015/udp` both are always needed. For RCON `[...] -e SERVER_RCON_PASSWORD="verySecure" -p 27015:27015/tcp`.
|
||||||
|
2. Set environment variables like servername `-e SERVER_NAME="My Server"`, password `-e SERVER_PASSWORD="securepw"` and timezone for cron `-e TZ="Europe/Berlin"`, default short downtime at Sunday 10 o'clock.
|
||||||
|
3. Choose startmap (can be from workshop collection, even linked) `-e SERVER_DEFAULT_MAP=ttt_rooftops_2016_v1` and max players `-e SERVER_MAX_PLAYERS=20`
|
||||||
|
|
||||||
### run example without rcon
|
### run example without rcon
|
||||||
```
|
```
|
||||||
docker run -d \
|
docker run -d \
|
||||||
-e INSTALL_CSS=true \
|
|
||||||
-p 27015:27015/udp \
|
-p 27015:27015/udp \
|
||||||
|
-e SERVER_PORT=27015 \
|
||||||
|
-e INSTALL_CSS=true \
|
||||||
|
-e host_workshop_collection 123456 \
|
||||||
-e SERVER_NAME="My Server" \
|
-e SERVER_NAME="My Server" \
|
||||||
-e SERVER_PASSWORD="securepw" \
|
-e SERVER_PASSWORD="securepw" \
|
||||||
-e TZ="Europe/Berlin" \
|
-e SERVER_DEFAULT_MAP="map ttt_rooftops_2016_v1" \
|
||||||
jusito/docker-ttt:gmod_ttt_debian \
|
--name "MyTTTServer" \
|
||||||
-port 27015 \
|
jusito/docker-ttt:gmod_ttt_debian
|
||||||
+map ttt_rooftops_2016_v1 \
|
|
||||||
-maxplayers 10
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### run example with rcon
|
### run example with rcon
|
||||||
```
|
```
|
||||||
docker run -d \
|
docker run -d \
|
||||||
-e WORKSHOP_COLLECTION_ID=123456 \
|
-p 27015:27015/udp \
|
||||||
|
-e SERVER_PORT=27015 \
|
||||||
-e INSTALL_CSS=true \
|
-e INSTALL_CSS=true \
|
||||||
-p 27015:27015/udp -p 27015:27015/tcp \
|
-e host_workshop_collection 123456 \
|
||||||
-e SERVER_NAME="My Server" \
|
-e SERVER_NAME="My Server" \
|
||||||
-e SERVER_PASSWORD="securepw" \
|
-e SERVER_PASSWORD="securepw" \
|
||||||
-e TZ="Europe/Berlin" \
|
-e SERVER_DEFAULT_MAP="map ttt_rooftops_2016_v1" \
|
||||||
jusito/docker-ttt:gmod_ttt_debian \
|
-p 27015:27015/tcp \
|
||||||
-port 27015 \
|
-e SERVER_RCON_PASSWORD="securePW" \
|
||||||
+map ttt_rooftops_2016_v1 \
|
--name "MyTTTServer" \
|
||||||
-maxplayers 10 \
|
jusito/docker-ttt:gmod_ttt_debian
|
||||||
-usercon +rcon_password "yourPW"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Tags
|
## Tags
|
||||||
* lgsm\_debian - Linux Game Server Manager in Debian
|
* lgsm\_debian - Linux Game Server Manager in Debian
|
||||||
* gmod\_debian - Garrys Mod with Debian and LGSM
|
* gmod\_debian - Garrys Mod with Debian and LGSM
|
||||||
* gmod\_ttt\_debian
|
* gmod\_ttt\_debian - Gamemode TTT with LGSM/Debian
|
||||||
|
|
||||||
## Environment Variables
|
## Environment Variables
|
||||||
|
Because you will most likely use many environmental variables, I recommend a env list. Instead of `-e VARNAME="VALUE 1"` write one additional text file:
|
||||||
|
|
||||||
### Server Properties
|
TTT.env:
|
||||||
### additional config
|
|
||||||
### Internal Used (don't change please)
|
|
||||||
|
|
||||||
## GMOD Parameters
|
```
|
||||||
|
VARNAME=Value 1
|
||||||
|
SERVER_NAME=My Hood
|
||||||
|
SERVER_PASSWORD=Secure_PW
|
||||||
|
```
|
||||||
|
### LGSM Properties
|
||||||
|
#### Free to change
|
||||||
|
|Name|Default|Description|
|
||||||
|
|----|-------|-----------|
|
||||||
|
|CRON\_MONITOR|"\*/5 \* \* \* \*"|Every 5 minutes LGSM checks if the server is running and responding, rebooting if needed.|
|
||||||
|
|CRON\_UPDATE|"\*/30 \* \* \* \*"|Every 30 minutes LGSM checks if game server needs an update which will be executed.|
|
||||||
|
|CRON\_FORCE\_UPDATE|"0 10 \* \* 0"|At Sunday 10:00 force update and restart|
|
||||||
|
|CRON\_LOG_ROTATE|"0 9 \* \* 0"|Rotate log at Stunday 9:00|
|
||||||
|
|TZ|Europe/Berlin|[Set timezone for CRON / log](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)|
|
||||||
|
|
||||||
|
#### Used for subimage
|
||||||
|
|Name|Default|Description|
|
||||||
|
|----|-------|-----------|
|
||||||
|
|SERVER_EXECUTABLE|""|Name of the lgsm script after installation|
|
||||||
|
|SERVER_GAME|""|LGSM name of installation|
|
||||||
|
|
||||||
|
#### LGSM Internal
|
||||||
|
<details><summary>LGSM Internal Properties (click me)</summary>
|
||||||
|
<p>
|
||||||
|
|
||||||
|
|Name|Default|Description|
|
||||||
|
|----|-------|-----------|
|
||||||
|
|STEAM_PATH|/home/steam|primary workdir, homedir of user|
|
||||||
|
|SERVER_PATH|/home/steam/serverfiles|Path to serverfiles after installation|
|
||||||
|
|STEAM_CMD|/home/steam/steamcmd|Path to steamcmd files|
|
||||||
|
|GROUP_ID|10000|Group ID of the user|
|
||||||
|
|USER_ID|10000|User ID of the user|
|
||||||
|
|DOCKER_USER|steam|Name of the user|
|
||||||
|
|SUPERCRONIC_URL|https://github.com/aptible/supercronic/releases/download/v0.1.9/supercronic-linux-amd64|CRON version|
|
||||||
|
|SUPERCRONIC|supercronic-linux-amd64|CRON name after download|
|
||||||
|
|SUPERCRONIC_SHA1SUM|5ddf8ea26b56d4a7ff6faecdd8966610d5cb9d85|CRC for CRON download|
|
||||||
|
|DEBIAN_FRONTEND|noninteractive|Don't ask questions during installation|
|
||||||
|
|LANG|C.UTF-8|Language set|
|
||||||
|
|TERM|xterm||
|
||||||
|
|DEBUGGING|false||
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</details>
|
||||||
|
|
||||||
|
### GMOD Properties
|
||||||
|
#### GMOD Content
|
||||||
|
|Name|Default|Description|
|
||||||
|
|----|-------|-----------|
|
||||||
|
|INSTALL\_CSS|false|Should I install and mount CSS?|
|
||||||
|
|INSTALL\_HL2|false|Should I install and mount HL2?|
|
||||||
|
|INSTALL\_HLDM|false|Should I install and mount HLDM?|
|
||||||
|
|INSTALL\_TF2|false|Should I install and mount TF2?|
|
||||||
|
|WORKSHOP\_COLLECTION_ID|""|Workshop Collection ID for the server. If you use AUTOLOAD you should add maps on a linked collection|
|
||||||
|
|WORKSHOP\_API_KEY|""|Maybe needed for private content.|
|
||||||
|
|WORKSHOP\_AUTOLOAD|true|Every item which is on the given collection, will be downloaded by every client. Elements on linked collections not - so use maps in a linked collection.|
|
||||||
|
|USE\_MY\_REPLACER\_CONFIG|false|Download my config for "entity replacer". You need the mod too.|
|
||||||
|
|
||||||
|
#### GMOD Server
|
||||||
|
|Name|Default|Description|
|
||||||
|
|----|-------|-----------|
|
||||||
|
|SERVER\_NAME|LinuxGSM||
|
||||||
|
|SERVER\_PASSWORD|""||
|
||||||
|
|SERVER\_RCON\_PASSWORD|""||
|
||||||
|
|SERVER\_VOICE\_ENABLE|1||
|
||||||
|
|SERVER\_IP|0.0.0.0||
|
||||||
|
|SERVER\_PORT|27015||
|
||||||
|
|SERVER\_CLIENTPORT|27005||
|
||||||
|
|SERVER\_SOURCETVPORT|27020||
|
||||||
|
|SERVER\_DEFAULT\_MAP|gm\_construct||
|
||||||
|
|SERVER\_MAX\_PLAYERS|16||
|
||||||
|
|SERVER\_TICKRATE|66||
|
||||||
|
|SERVER\_GAMEMODE|sandbox||
|
||||||
|
|SERVER\_LOGIN\_TOKEN|""||
|
||||||
|
|SERVER\_ADDITIONAL\_PARAMETERS|-disableluarefresh||
|
||||||
|
|
||||||
|
#### GMOD LGSM specific
|
||||||
|
These variables are untested, but if they dont work report it please too. [Documentation](https://docs.linuxgsm.com/alerts)
|
||||||
|
|Name|Default|Description|
|
||||||
|
|----|-------|-----------|
|
||||||
|
|LGSM\_DISPLAYIP|""||
|
||||||
|
|LGSM\_POSTALERT|off||
|
||||||
|
|LGSM\_POSTDAYS|7||
|
||||||
|
|LGSM\_POSTTARGET|https://hastebin.com||
|
||||||
|
|LGSM\_DISCORDALERT|off||
|
||||||
|
|LGSM\_DISCORDWEBHOOK|webhook||
|
||||||
|
|LGSM\_EMAILALERT|off||
|
||||||
|
|LGSM\_EMAIL|email@example.com||
|
||||||
|
|LGSM\_EMAILFROM|""||
|
||||||
|
|LGSM\_IFTTTALERT|off||
|
||||||
|
|LGSM\_IFTTTTOKEN|accesstoken||
|
||||||
|
|LGSM\_IFTTTEVENT|linuxgsm\_alert||
|
||||||
|
|LGSM\_MAILGUNALERT|off||
|
||||||
|
|LGSM\_MAILGUNTOKEN|accesstoken||
|
||||||
|
|LGSM\_MAILGUNDOMAIN|example.com||
|
||||||
|
|LGSM\_MAILGUNEMAILFROM|alert@example.com||
|
||||||
|
|LGSM\_MAILGUNEMAIL|email@myemail.com||
|
||||||
|
|LGSM\_PUSHBULLETALERT|off||
|
||||||
|
|LGSM\_PUSHBULLETTOKEN|accesstoken||
|
||||||
|
|LGSM\_CHANNELTAG|""||
|
||||||
|
|LGSM\_PUSHOVERALERT|off||
|
||||||
|
|LGSM\_PUSHOVERTOKEN|accesstoken||
|
||||||
|
|LGSM\_TELEGRAMALERT|off||
|
||||||
|
|LGSM\_TELEGRAMTOKEN|accesstoken||
|
||||||
|
|LGSM\_TELEGRAMCHATID|""||
|
||||||
|
|LGSM\_CURLCUSTOMSTRING|""||
|
||||||
|
|LGSM\_UPDATEONSTART|off||
|
||||||
|
|LGSM\_MAXBACKUPS|4||
|
||||||
|
|LGSM\_MAXBACKUPDAYS|30||
|
||||||
|
|LGSM\_STOPONBACKUP|on||
|
||||||
|
|LGSM\_CONSOLELOGGING|on||
|
||||||
|
|LGSM\_LOGDAYS|7||
|
||||||
|
|LGSM\_QUERYDELAY|5||
|
||||||
|
|LGSM\_BRANCH|""||
|
||||||
|
|LGSM\_STEAMMASTER|true"||
|
||||||
|
|
||||||
|
#### GMOD Internal
|
||||||
|
<details><summary>GMOD Internal Properties (click me)</summary>
|
||||||
|
<p>
|
||||||
|
|
||||||
|
|Name|Default|Description|
|
||||||
|
|----|-------|-----------|
|
||||||
|
|CSS_PATH|/home/steam/addons/css||
|
||||||
|
|HL2_PATH|/home/steam/addons/hl2||
|
||||||
|
|HLDM_PATH|/home/steam/addons/hldm||
|
||||||
|
|TF2_PATH|/home/steam/addons/tf2||
|
||||||
|
|SERVER_EXECUTABLE|gmodserver||
|
||||||
|
|SERVER_GAME|gmodserver||
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</details>
|
||||||
|
|
||||||
|
### TTT Properties
|
||||||
|
#### TTT Internal Properties
|
||||||
|
|Name|Default|Description|
|
||||||
|
|----|-------|-----------|
|
||||||
|
|SERVER_GAMEMODE|"terrortown"||
|
||||||
|
|
||||||
## LGSM Usage
|
## LGSM Usage
|
||||||
docker exec -it CONTAINER ./home/steam/gmodserver console
|
The container provides links to [LGSM commands](https://docs.linuxgsm.com/commands):
|
||||||
|
* docker exec -it CONTAINER details // print various informations like passwords, name, players, status aso.
|
||||||
|
* docker exec -it CONTAINER backup
|
||||||
|
* docker exec -it CONTAINER console // let you view the current console, docker logs will not work
|
||||||
|
* docker exec -it CONTAINER debug
|
||||||
|
* docker exec -it CONTAINER force-update
|
||||||
|
* docker exec -it CONTAINER install
|
||||||
|
* docker exec -it CONTAINER monitor
|
||||||
|
* docker exec -it CONTAINER postdetails
|
||||||
|
* docker exec -it CONTAINER restart
|
||||||
|
* docker exec -it CONTAINER start
|
||||||
|
* docker exec -it CONTAINER stop
|
||||||
|
* docker exec -it CONTAINER test-alert
|
||||||
|
* docker exec -it CONTAINER update
|
||||||
|
* docker exec -it CONTAINER update-lgsm
|
||||||
|
* docker exec -it CONTAINER validate
|
||||||
|
|
||||||
## File Locations
|
## File Locations
|
||||||
### Volumes
|
### Volumes
|
||||||
|
/home/steam/serverfiles
|
||||||
|
|
||||||
### Other
|
### Other
|
||||||
|
server.cfg: /home/steam/serverfiles/garrysmod/cfg/gmodserver.cfg
|
||||||
|
hostname, password, rcon password, voice enabled are managed / will be overwritten
|
||||||
## environment variables
|
|
||||||
If set every workshop item at the collection is added as forced, that means its automatically downloaded on connecting. Don't add collections with maps here just like weapons aso.
|
|
||||||
WORKSHOP_COLLECTION_ID=
|
|
||||||
|
|
||||||
This variables are used to write the value to the server.cfg:
|
|
||||||
SERVER_NAME=""
|
|
||||||
SERVER_PASSWORD=""
|
|
||||||
SERVER_VOICE_ENABLE="1"
|
|
||||||
|
|
||||||
If set to "true" the game is installed and mounted, most of the time you want to add the css content.
|
|
||||||
INSTALL_CSS=false
|
|
||||||
INSTALL_HL2=false
|
|
||||||
INSTALL_HLDM=false
|
|
||||||
INSTALL_TF2=false
|
|
||||||
|
|
||||||
## server config
|
## server config
|
||||||
http://ttt.badking.net/config-and-commands/convars
|
http://ttt.badking.net/config-and-commands/convars
|
||||||
@ -97,5 +228,22 @@ docker cp "your server.cfg path" CONTAINER:/home/steam/serverfiles/garrysmod/cfg
|
|||||||
## Additional
|
## Additional
|
||||||
- Debian Buster, one dependency is missing: https://packages.debian.org/search?keywords=lib32tinfo5
|
- Debian Buster, one dependency is missing: https://packages.debian.org/search?keywords=lib32tinfo5
|
||||||
- Alpine, steamcmd doesn't like musl
|
- Alpine, steamcmd doesn't like musl
|
||||||
### Debian Buster
|
|
||||||
Currently one dependency is missing: https://packages.debian.org/search?keywords=lib32tinfo5
|
### TODO
|
||||||
|
#### image improvements
|
||||||
|
* replacer config in other repo u2d?
|
||||||
|
* volume for steam workshop
|
||||||
|
* volume for other games
|
||||||
|
* volume for gmod config
|
||||||
|
* AppArmor Profile
|
||||||
|
* alias for lgsm commands?
|
||||||
|
|
||||||
|
#### image config, description needed
|
||||||
|
* scrds doesn't like different internal / external ports (thats why no ports are exposed)
|
||||||
|
* health check -> details
|
||||||
|
|
||||||
|
### For local usage
|
||||||
|
navigate to directory with readme.md
|
||||||
|
bash test/testBuild.sh (sh doesn't like pipefail, escape if you want to use sh)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user