game servers are now on same box
--> Linted: EDITORCONFIG No errors were found in the linting process Details
--> Linted: GITLEAKS No errors were found in the linting process Details
--> Linted: YAML No errors were found in the linting process Details
🎨 Lint / lint (push) Successful in 1m17s Details

This commit is contained in:
Chase 2024-03-08 20:20:57 -06:00
parent d1cc03b8ad
commit f55c327757
Signed by: chase
GPG Key ID: 9EC29E797878008C
4 changed files with 239 additions and 318 deletions

View File

@ -14,7 +14,7 @@ cd ~
git clone https://git.chse.dev/chase/infrastructure.git
cd infrastructure/src
# setup secrets in ./resources/secrets & ./resources/ssh-keys
# if setting up the main/game server, setup docker-compose.yml secrets
# if setting up the main server, setup docker-compose.yml secrets
# if setting up the main server, do manual steps 1-2 before running the script
bash $device.sh
cd ~
@ -42,10 +42,6 @@ rm -rf infrastructure/
* Sets up Secrets
* Adds cronjobs
* Spins up all my Docker Containers
* Game Server:
* Changes SSH Port
* Installs Docker
* Spins up all my Docker Containers
* Mail-in-a-Box:
* Symlink Mail Scripts to ~
* Adds cronjob for Backup

View File

@ -1,46 +0,0 @@
#!/bin/bash
# Check if we are running as sudo, if not, exit
if [ "$EUID" -ne 0 ]; then
echo "Please run as root. Maybe try 'sudo !!'"
exit
fi
if [ -z "$1" ]; then
echo "You need to specify arguments for this script."
echo "bash gameserver.sh secrets # Allow script to run, after you have configured SSH private key."
exit
fi
# Do everything in general.sh first
/usr/bin/bash general.sh secrets
# Change SSH Port
/usr/bin/sed -i 's/#Port 22/Port 1020/g' /etc/ssh/sshd_config
/usr/bin/systemctl restart sshd
# Add crontabs
(/usr/bin/crontab -l ; echo "0 2 * * * docker image prune -a -f && docker volume prune -f && docker network prune -f") | /usr/bin/crontab -
(/usr/bin/crontab -l ; echo "0 4 * * * docker restart \$(docker ps -q)") | /usr/bin/crontab -
# Install docker
## INFO: https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository
/usr/bin/sudo /usr/bin/mkdir -p /etc/apt/keyrings
/usr/bin/curl -fsSL https://download.docker.com/linux/ubuntu/gpg | /usr/bin/sudo /usr/bin/gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | /usr/bin/sudo /usr/bin/tee /etc/apt/sources.list.d/docker.list > /dev/null
/usr/bin/sudo /usr/bin/apt-get update
/usr/bin/sudo /usr/bin/apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
/usr/bin/systemctl enable --now docker
# Use docker-compose to start all the containers
cd ./resources/gs || exit
/usr/bin/docker compose up -d
cd ../
echo
echo "Done!"
echo
cd ~ || exit

View File

@ -2,8 +2,6 @@
version: "3.6"
services:
# Nextcloud is ran inside of Docker, however I spin it up in a different way. Please refer to the README.
# I also host game servers on another box.
# See also: https://git.chse.dev/chase/infrastructure/src/branch/main/src/resources/gs/docker-compose.yml
homepage:
image: ghcr.io/gethomepage/homepage:latest
container_name: homepage
@ -664,3 +662,241 @@ services:
- /dockerData/audiobookshelf/metadata:/metadata
restart: unless-stopped
container_name: audiobookshelf
mc:
container_name: mc
image: itzg/minecraft-server
ports:
- 25565:25565
- 2029:8080 # pl3xmap
- 24454:24454/udp # voice chat
environment:
- MEMORY=4G
- USE_AIKAR_FLAGS=true
- EULA=TRUE
- VERSION=LATEST
- TYPE=PURPUR
tty: true
stdin_open: true
restart: unless-stopped
volumes:
- /dockerData/mc:/data
cs16:
image: 'archont94/counter-strike1.6:latest'
environment:
- PORT=25000
volumes:
- "/dockerData/cs_16/mapcycle.txt:/hlds/cstrike/mapcycle.cfg"
- "/dockerData/cs_16/amx_users.ini:/hlds/cstrike/addons/amxmodx/configs/users.ini"
- "/dockerData/cs_16/motd.txt:/hlds/cstrike/motd.txt"
- "/dockerData/cs_16/motd_text.txt:/hlds/cstrike/motd_text.txt"
- "/dockerData/cs_16/server.cfg:/hlds/cstrike/server.cfg"
- "/dockerData/cs_16/banned.cfg:/hlds/cstrike/banned.cfg"
- "/dockerData/cs_16/listip.cfg:/hlds/cstrike/listip.cfg"
- "/dockerData/cs_16/plugins.ini:/hlds/cstrike/addons/amxmodx/configs/plugins.ini"
- "/dockerData/cs_16/amxx.cfg:/hlds/cstrike/addons/amxmodx/configs/amxx.cfg"
- "/dockerData/cs_16/weaprest.ini:/hlds/cstrike/addons/amxmodx/configs/weaprest.ini"
ports:
- '25000:25000'
- '25000:25000/udp'
container_name: cs16
restart: unless-stopped
css:
image: foxylion/steam-css
environment:
- OTHER_ARGS=-port 25001
volumes:
- '/dockerData/css/admins_simple.ini:/home/steam/css/cstrike/addons/sourcemod/configs/admins_simple.ini'
- '/dockerData/css/mapcycle.txt:/home/steam/css/cstrike/cfg/mapcycle.txt'
- '/dockerData/css/motd_text.txt:/home/steam/css/cstrike/cfg/motd_text.txt'
- '/dockerData/css/motd.txt:/home/steam/css/cstrike/cfg/motd.txt'
- '/dockerData/css/server.cfg:/home/steam/css/cstrike/cfg/server.cfg'
- '/dockerData/css/entrypoint.sh:/home/steam/entrypoint.sh'
ports:
- '25001:25001/udp'
- '25001:25001'
container_name: css
restart: unless-stopped
cs2:
image: 'joedwards32/cs2:latest'
environment:
#- SRCDS_MAPGROUP=mg_custom
- CS2_MAXPLAYERS=10
- SRCDS_WORKSHOP_AUTHKEY=aaa #! Change This
- SRCDS_TOKEN=aaa #! Change This
- STEAMUSER= #!Change This
- CS2_PORT=25002
- CS2_SERVER_HIBERNATE=0
container_name: cs2
volumes:
- '/dockerData/cs2/cs2:/home/steam/cs2-dedicated/'
- '/dockerData/cs2/steam:/home/steam/Steam'
ports:
- '25002:25002/udp'
- '25002:25002'
restart: unless-stopped
hldm:
command: '-ip 0.0.0.0 -port 25003 +map crossfire +maxplayers 12'
image: spezifanta/hldm
volumes:
- '/dockerData/hldm/motd.txt:/opt/steam/hldm/valve/motd.txt'
- '/dockerData/hldm/server.cfg:/opt/steam/hldm/valve/config/server.cfg'
ports:
- '25003:25003/udp'
- '25003:25003'
restart: unless-stopped
container_name: hldm
hl2dm:
command: './srcds_run -game hl2mp -port 25004 -ip 0.0.0.0 +map dm_overwatch -console -usercon +maxplayers 32 -tickrate 128'
image: lacledeslan/gamesvr-hl2dm
volumes:
- "/dockerData/hl2dm/motd.txt:/app/hl2mp/cfg/motd.txt"
- "/dockerData/hl2dm/motd_text.txt:/app/hl2mp/cfg/motd_text.txt"
- "/dockerData/hl2dm/server.cfg:/app/hl2mp/cfg/server.cfg"
- "/dockerData/hl2dm/mapcycle.txt:/app/hl2mp/cfg/mapcycle.txt"
- "/dockerData/hl2dm/addons:/app/hl2mp/addons"
- "/dockerData/hl2dm/sourcemod_cfg:/app/hl2mp/cfg"
ports:
- '25004:25004/udp'
- '25004:25004'
container_name: hl2dm
restart: unless-stopped
quake1:
image: 'moisesber/quaken:latest'
volumes:
- '/dockerData/quake1/id1:/nquakesv/id1'
environment:
- MAP=dm4
ports:
- '25005:26000/udp'
- '25005:26000'
container_name: quake1
restart: unless-stopped
tf2:
image: 'cm2network/tf2:sourcemod'
environment:
- SRCDS_MAXPLAYERS=32
- SRCDS_PORT=25006
- SRCDS_MAPCYCLE=mapcycle.txt
- SRCDS_WORKSHOP_AUTHKEY=aaa #! Change This
- SRCDS_TOKEN=aaa #! Change This
container_name: tf2
volumes:
- '/dockerData/tf2:/home/steam/tf-dedicated/'
ports:
- '25006:25006/udp'
- '25006:25006'
restart: unless-stopped
halo:
image: antimomentum/halo
ports:
- '25007:25007/udp'
tty: true
stdin_open: true
environment:
- INTERNAL_PORT=25007
container_name: haloce
restart: unless-stopped
volumes:
- '/dockerData/hce:/game'
quake3:
image: inanimate/quake3
volumes:
- '/dockerData/quake3/server.cfg:/usr/share/games/quake3/baseq3/server.cfg'
- '/dockerData/quake3/pak0.pk3:/usr/share/games/quake3/baseq3/pak0.pk3'
ports:
- '25008:27960/udp'
container_name: quake3
restart: unless-stopped
insurgency:
image: 'ich777/steamcmd:insurgency'
volumes:
- '/dockerData/insurgency:/serverdata/serverfiles'
- '/dockerData/steamcmd:/serverdata/steamcmd'
environment:
- GID=1000
- UID=1000
- 'GAME_PARAMS=+map market +maxplayers 32'
- GAME_PORT=25009
- GAME_ID=237410
ports:
- '25009:25009/udp'
- '25009:25009'
container_name: insurgency
restart: unless-stopped
gsapi:
image: 'git.chse.dev/chase/game-server-api:latest'
restart: unless-stopped
ports:
- '2031:3000'
environment:
- NODE_ENV=production
- BASE_URL=http://localhost:3000
- QUAKE1_RCON_PW= #! Change This
container_name: gs-api
easy-gmod:
image: phyremaster/easy-gmod
volumes:
- '/dockerData/gmod:/home/steam/garrysmod'
- '/dockerData/css_content:/home/steam/css:ro' # mount css as read only
environment:
- WORKSHOPID=2910234113
- LOGINTOKEN=XX #! Change This
- GMODPORT=25010
- GAMEMAP=rp_downtown_tits_v2
- GAMEMODE=darkrp
- PRODUCTION=1
- HOSTNAME=Chase's DarkRP | Minimal Rules/Downloads
- LOADINGURL=https://live.gmod-lsm.com/s/?i=98b108a6
restart: unless-stopped
container_name: gmod
ports:
- '25010:25010'
- '25010:25010/udp'
cod4-unlockall:
command: '+set dedicated 2 +set net_port 25011 +set sv_authtoken "asdf" +set sv_maxclients "64" +exec unlockall.cfg +map_rotate'
image: qmcgaw/cod4
environment:
- HTTP_SERVER=off
volumes:
- '/dockerData/cod4/main_shared_unlockall:/home/user/cod4/main_shared'
- '/dockerData/cod4/usermaps:/home/user/cod4/usermaps:ro'
- '/dockerData/cod4/mods:/home/user/cod4/mods'
- '/dockerData/cod4/zone:/home/user/cod4/zone'
- '/dockerData/cod4/main:/home/user/cod4/main'
ports:
- '25011:25011/udp'
- '25011:25011/tcp'
restart: unless-stopped
container_name: cod4-unlockall
windows:
container_name: windows
restart: unless-stopped
ports:
- 8006:8006 # web vnc
devices:
- /dev/kvm
cap_add:
- NET_ADMIN
environment:
- VERSION=win10
- RAM_SIZE=4G
- CPU_CORES=2
- DISK_SIZE=64G
volumes:
- /dockerData/w10:/storage
image: dockurr/windows
cod4-promod:
command: '+set dedicated 2 +set net_port 25012 +set fs_game "mods/promod" +set sv_authtoken "asdf" +set sv_maxclients "64" +exec promod.cfg +map_rotate'
image: qmcgaw/cod4
environment:
- HTTP_SERVER=off
volumes:
- '/dockerData/cod4/usermaps:/home/user/cod4/usermaps:ro'
- '/dockerData/cod4/mods:/home/user/cod4/mods'
- '/dockerData/cod4/zone:/home/user/cod4/zone'
- '/dockerData/cod4/main:/home/user/cod4/main'
ports:
- '25012:25012/udp'
- '25012:25012/tcp'
restart: unless-stopped
container_name: cod4-promod

View File

@ -1,265 +0,0 @@
---
version: "3.6"
services:
# I also host other services on another box.
# See also: https://git.chse.dev/chase/infrastructure/src/branch/main/src/resources/docker-compose.yml
portainer-agent:
image: 'portainer/agent'
volumes:
- '/var/lib/docker/volumes:/var/lib/docker/volumes'
- '/var/run/docker.sock:/var/run/docker.sock'
restart: always
container_name: portainer-agent
ports:
- '9001:9001'
watchtower:
container_name: "watchtower"
image: "containrrr/watchtower:latest"
restart: "unless-stopped"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
mc:
container_name: mc
image: itzg/minecraft-server
ports:
- 25565:25565
- 2029:8080 # pl3xmap
- 24454:24454/udp # voice chat
environment:
- MEMORY=4G
- USE_AIKAR_FLAGS=true
- EULA=TRUE
- VERSION=LATEST
- TYPE=PURPUR
tty: true
stdin_open: true
restart: unless-stopped
volumes:
- /dockerData/mc:/data
cs16:
image: 'archont94/counter-strike1.6:latest'
environment:
- PORT=25000
volumes:
- "/dockerData/cs_16/mapcycle.txt:/hlds/cstrike/mapcycle.cfg"
- "/dockerData/cs_16/amx_users.ini:/hlds/cstrike/addons/amxmodx/configs/users.ini"
- "/dockerData/cs_16/motd.txt:/hlds/cstrike/motd.txt"
- "/dockerData/cs_16/motd_text.txt:/hlds/cstrike/motd_text.txt"
- "/dockerData/cs_16/server.cfg:/hlds/cstrike/server.cfg"
- "/dockerData/cs_16/banned.cfg:/hlds/cstrike/banned.cfg"
- "/dockerData/cs_16/listip.cfg:/hlds/cstrike/listip.cfg"
- "/dockerData/cs_16/plugins.ini:/hlds/cstrike/addons/amxmodx/configs/plugins.ini"
- "/dockerData/cs_16/amxx.cfg:/hlds/cstrike/addons/amxmodx/configs/amxx.cfg"
- "/dockerData/cs_16/weaprest.ini:/hlds/cstrike/addons/amxmodx/configs/weaprest.ini"
ports:
- '25000:25000'
- '25000:25000/udp'
container_name: cs16
restart: unless-stopped
css:
image: foxylion/steam-css
environment:
- OTHER_ARGS=-port 25001
volumes:
- '/dockerData/css/admins_simple.ini:/home/steam/css/cstrike/addons/sourcemod/configs/admins_simple.ini'
- '/dockerData/css/mapcycle.txt:/home/steam/css/cstrike/cfg/mapcycle.txt'
- '/dockerData/css/motd_text.txt:/home/steam/css/cstrike/cfg/motd_text.txt'
- '/dockerData/css/motd.txt:/home/steam/css/cstrike/cfg/motd.txt'
- '/dockerData/css/server.cfg:/home/steam/css/cstrike/cfg/server.cfg'
- '/dockerData/css/entrypoint.sh:/home/steam/entrypoint.sh'
ports:
- '25001:25001/udp'
- '25001:25001'
container_name: css
restart: unless-stopped
cs2:
image: 'cm2network/cs2:latest'
environment:
#- SRCDS_MAPGROUP=mg_custom
- CS2_MAXPLAYERS=10
#- SRCDS_WORKSHOP_AUTHKEY=aaa #! Change This
#- SRCDS_TOKEN=aaa #! Change This
- STEAMUSER= #!Change This
- CS2_PORT=25002
container_name: cs2
volumes:
- '/dockerData/cs2/cs2:/home/steam/cs2-dedicated/'
- '/dockerData/cs2/steam:/home/steam/Steam'
ports:
- '25002:25002/udp'
- '25002:25002'
restart: unless-stopped
hldm:
command: '-ip 0.0.0.0 -port 25003 +map crossfire +maxplayers 12'
image: spezifanta/hldm
volumes:
- '/dockerData/hldm/motd.txt:/opt/steam/hldm/valve/motd.txt'
- '/dockerData/hldm/server.cfg:/opt/steam/hldm/valve/config/server.cfg'
ports:
- '25003:25003/udp'
- '25003:25003'
restart: unless-stopped
container_name: hldm
hl2dm:
command: './srcds_run -game hl2mp -port 25004 -ip 0.0.0.0 +map dm_overwatch -console -usercon +maxplayers 32 -tickrate 128'
image: lacledeslan/gamesvr-hl2dm
volumes:
- "/dockerData/hl2dm/motd.txt:/app/hl2mp/cfg/motd.txt"
- "/dockerData/hl2dm/motd_text.txt:/app/hl2mp/cfg/motd_text.txt"
- "/dockerData/hl2dm/server.cfg:/app/hl2mp/cfg/server.cfg"
- "/dockerData/hl2dm/mapcycle.txt:/app/hl2mp/cfg/mapcycle.txt"
- "/dockerData/hl2dm/addons:/app/hl2mp/addons"
- "/dockerData/hl2dm/sourcemod_cfg:/app/hl2mp/cfg"
ports:
- '25004:25004/udp'
- '25004:25004'
container_name: hl2dm
restart: unless-stopped
quake1:
image: 'moisesber/quaken:latest'
volumes:
- '/dockerData/quake1/id1:/nquakesv/id1'
environment:
- MAP=dm4
ports:
- '25005:26000/udp'
- '25005:26000'
container_name: quake1
restart: unless-stopped
tf2:
image: 'cm2network/tf2:sourcemod'
environment:
- SRCDS_MAXPLAYERS=32
- SRCDS_PORT=25006
- SRCDS_MAPCYCLE=mapcycle.txt
- SRCDS_WORKSHOP_AUTHKEY=aaa #! Change This
- SRCDS_TOKEN=aaa #! Change This
container_name: tf2
volumes:
- '/dockerData/tf2:/home/steam/tf-dedicated/'
ports:
- '25006:25006/udp'
- '25006:25006'
restart: unless-stopped
halo:
image: antimomentum/halo
ports:
- '25007:25007/udp'
tty: true
stdin_open: true
environment:
- INTERNAL_PORT=25007
container_name: haloce
restart: unless-stopped
volumes:
- '/dockerData/hce:/game'
quake3:
image: inanimate/quake3
volumes:
- '/dockerData/quake3/server.cfg:/usr/share/games/quake3/baseq3/server.cfg'
- '/dockerData/quake3/pak0.pk3:/usr/share/games/quake3/baseq3/pak0.pk3'
ports:
- '25008:27960/udp'
container_name: quake3
restart: unless-stopped
insurgency:
image: 'ich777/steamcmd:insurgency'
volumes:
- '/dockerData/insurgency:/serverdata/serverfiles'
- '/dockerData/steamcmd:/serverdata/steamcmd'
environment:
- GID=1000
- UID=1000
- 'GAME_PARAMS=+map market +maxplayers 32'
- GAME_PORT=25009
- GAME_ID=237410
ports:
- '25009:25009/udp'
- '25009:25009'
container_name: insurgency
restart: unless-stopped
gsapi:
image: 'git.chse.dev/chase/game-server-api:latest'
restart: unless-stopped
ports:
- '2031:3000'
environment:
- NODE_ENV=production
- CS16_RCON_PW= #! Change This
- CSS_RCON_PW= #! Change This
- CS2_RCON_PW= #! Change This
- HLDM_RCON_PW= #! Change This
- HL2DM_RCON_PW= #! Change This
- TF2_RCON_PW= #! Change This
- INSURGENCY_RCON_PW= #! Change This
- QUAKE1_RCON_PW= #! Change This
- QUAKE3_RCON_PW= #! Change This
- MICAH_CS2_RCON_PW= #! Change This
container_name: gs-api
easy-gmod:
image: phyremaster/easy-gmod
volumes:
- '/dockerData/gmod:/home/steam/garrysmod'
- '/dockerData/css_content:/home/steam/css:ro' # mount css as read only
environment:
- WORKSHOPID=2910234113
- LOGINTOKEN=XX #! Change This
- GMODPORT=25010
- GAMEMAP=rp_downtown_tits_v2
- GAMEMODE=darkrp
- PRODUCTION=0
- HOSTNAME=Chase's DarkRP | Minimal Rules/Downloads
- LOADINGURL=https://live.gmod-lsm.com/s/?i=98b108a6
restart: unless-stopped
container_name: gmod
ports:
- '25010:25010'
- '25010:25010/udp'
cod4-unlockall:
command: '+set dedicated 2 +set net_port 25011 +set sv_authtoken "asdf" +set sv_maxclients "64" +exec unlockall.cfg +map_rotate'
image: qmcgaw/cod4
environment:
- HTTP_SERVER=off
volumes:
- '/dockerData/cod4/main_shared_unlockall:/home/user/cod4/main_shared'
- '/dockerData/cod4/usermaps:/home/user/cod4/usermaps:ro'
- '/dockerData/cod4/mods:/home/user/cod4/mods'
- '/dockerData/cod4/zone:/home/user/cod4/zone'
- '/dockerData/cod4/main:/home/user/cod4/main'
ports:
- '25011:25011/udp'
- '25011:25011/tcp'
restart: unless-stopped
container_name: cod4-unlockall
windows:
container_name: windows
restart: unless-stopped
ports:
- 8006:8006 # web vnc
devices:
- /dev/kvm
cap_add:
- NET_ADMIN
environment:
- VERSION=win10
- RAM_SIZE=4G
- CPU_CORES=2
- DISK_SIZE=64G
volumes:
- /dockerData/w10:/storage
image: dockurr/windows
cod4-promod:
command: '+set dedicated 2 +set net_port 25012 +set fs_game "mods/promod" +set sv_authtoken "asdf" +set sv_maxclients "64" +exec promod.cfg +map_rotate'
image: qmcgaw/cod4
environment:
- HTTP_SERVER=off
volumes:
- '/dockerData/cod4/usermaps:/home/user/cod4/usermaps:ro'
- '/dockerData/cod4/mods:/home/user/cod4/mods'
- '/dockerData/cod4/zone:/home/user/cod4/zone'
- '/dockerData/cod4/main:/home/user/cod4/main'
ports:
- '25012:25012/udp'
- '25012:25012/tcp'
restart: unless-stopped
container_name: cod4-promod