正版gmod服务器ttt,GitHub - jusito/docker-ttt: GMOD TTT server image

薄腾
2023-12-01

GMOD TTT

Important

If you use the old image, you should check the environment variables. For example arguments after image name aren't used, use instead -e SERVER_ADDITIONAL_PARAMETERS=....

This readme may not be perfect, if you struggle at some point or you see incorrect informations create an issue at git please.

Getting Started

Prepare your server content

Create public workshop collection without maps, dummy ID:=123456. Use -e WORKSHOP_COLLECTION_ID 123456.

Create public workshop collection with maps and add this one to "123456".

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.

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

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.

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.

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

Get a volume name -v TTTDev:/home/steam/serverfiles

run example without rcon

If you need rcon only sometimes, use ulx with this config.

docker run -d \

-p 27015:27015/udp \

-e SERVER_PORT=27015 \

-e INSTALL_CSS=true \

-e WORKSHOP_COLLECTION_ID=123456 \

-e SERVER_NAME="My Server" \

-e SERVER_PASSWORD="securepw" \

-e SERVER_DEFAULT_MAP="ttt_lttp_kakariko_a5" \

-v TTTDev:/home/steam/serverfiles \

--name "MyTTTServer" \

jusito/docker-ttt:gmod_ttt_debian

run example with rcon

docker run -d \

-p 27015:27015/udp \

-e SERVER_PORT=27015 \

-e INSTALL_CSS=true \

-e WORKSHOP_COLLECTION_ID=123456 \

-e SERVER_NAME="My Server" \

-e SERVER_PASSWORD="securepw" \

-e SERVER_DEFAULT_MAP="ttt_lttp_kakariko_a5" \

-v TTTDev:/home/steam/serverfiles \

-p 27015:27015/tcp \

-e SERVER_RCON_PASSWORD="securePW" \

--name "MyTTTServer" \

jusito/docker-ttt:gmod_ttt_debian

Tags

lgsm_debian - Linux Game Server Manager in Debian

gmod_debian - Garrys Mod with Debian and LGSM

gmod_ttt_debian - Gamemode TTT with LGSM/Debian

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:

TTT.env:

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

Used for subimage

Name

Default

Description

SERVER_EXECUTABLE

""

Name of the lgsm script after installation

SERVER_GAME

""

LGSM name of installation

LGSM Internal

LGSM Internal Properties (click me)

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

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

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.

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

Name

Default

Description

LGSM_DISPLAYIP

""

LGSM_POSTALERT

off

LGSM_POSTDAYS

7

LGSM_DISCORDALERT

off

LGSM_DISCORDWEBHOOK

webhook

LGSM_EMAILALERT

off

LGSM_EMAILFROM

""

LGSM_IFTTTALERT

off

LGSM_IFTTTTOKEN

accesstoken

LGSM_IFTTTEVENT

linuxgsm_alert

LGSM_MAILGUNALERT

off

LGSM_MAILGUNTOKEN

accesstoken

LGSM_MAILGUNDOMAIN

example.com

LGSM_MAILGUNEMAILFROM

LGSM_MAILGUNEMAIL

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

GMOD Internal Properties (click me)

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

TTT Properties

TTT Internal Properties

Name

Default

Description

SERVER_GAMEMODE

"terrortown"

LGSM Usage

The container provides links to LGSM 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

Volumes

/home/steam/serverfiles

Other

server.cfg: /home/steam/serverfiles/garrysmod/cfg/gmodserver.cfg

hostname, password, rcon password, voice enabled are managed / will be overwritten

server config

Path in container is:

docker cp "your server.cfg path" CONTAINER:/home/steam/serverfiles/garrysmod/cfg/gmodserver.cfg

Additional

Alpine, steamcmd doesn't like musl

TODO

image improvements

volume for steam workshop

volume for other games

volume for gmod config (data folder)

AppArmor Profile

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)

FTP Server

If your Volume is TTTDev

If you didn't change UserID / GroupID

If you want to connect to ftp://...:123 (ports 122/123 are free on your network)

For FileZilla

docker run -d \

-e MY_NAME="docker" -e MY_PASSWORD="MySecurePW" \

-e MY_USER_ID="10000" -e MY_GROUP_ID="10000" \

-p 122:20 -p 123:21 -p 10090-10100:10090-10100 \

-v TTTDev:/home/docker/ \

jusito/vsftpd-alpine:simple

For Windows Network Mount

IP of the Host (not container) 1.2.3.4

Mount: ftp://1.2.3.4:123

docker run -d \

-e MY_NAME="docker" -e MY_PASSWORD="MySecurePW" \

-e MY_USER_ID="10000" -e MY_GROUP_ID="10000" \

-p 122:20 -p 123:21 -p 10090-10100:10090-10100 \

-v TTTDev:/home/docker/ \

-e pasv_address="1.2.3.4" \

jusito/vsftpd-alpine:simple

Synchronize the voice enabled / disabled state with Teamspeak

 类似资料: