Add Teamfortress 2

Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
This commit is contained in:
2025-09-01 22:36:21 +02:00
parent 6b39245125
commit d8d00cbd24
14 changed files with 264 additions and 5 deletions

View File

@@ -16,8 +16,8 @@ ADMIN_SERVICES := openssh uptime-kuma
#7DAYS_TO_DIE_SERVICES := 7daystodie_server 7daystodie_backup
#MINECRAFT_SERVICES := minecraft_server minecraft_backup
#SATISFACTORY_SERVICES := satisfactory_server satisfactory_backup
GIT_SERVICES := forgejo
# forgejo-runner
TEAM_FORTRESS_SERVICES := teamfortress2_server
# teamfortress2_backup
# gitea gitea-runner
#IA_SERVICES := open-webui
SHARING_SERVICES := privatebin

View File

@@ -49,3 +49,5 @@ include:
- services/7daystodie-server/7daystodie-server/docker-compose.yml
# Satisfactory
- services/satisfactory-server/satisfactory-server/docker-compose.yml
# Team Fortress 2
- services/teamfortress2-server/teamfortress2-server/docker-compose.yml

View File

@@ -51,7 +51,7 @@ services:
networks:
- infra-network
profiles:
- forgejo
- forgejo-runner
privileged: true
environment:
DOCKER_TLS_CERTDIR: /certs
@@ -60,7 +60,7 @@ services:
- forgejo_certs:/certs
forgejo_runner:
image: 'code.forgejo.org/forgejo/runner:6.3.1'
image: data.forgejo.org/forgejo/runner:9
networks:
- infra-network
profiles:
@@ -73,7 +73,7 @@ services:
container_name: 'forgejo_runner'
env_file:
- ./env/forgejo_runner.env
# user: 1001:1001
user: ${PUID:-1000}:${PGID:-1000}
volumes:
# - ./config/forgejo_runner/config.yaml:/config.yaml:ro
- forgejo_runner:/data

View File

@@ -36,6 +36,8 @@ services:
- gitea_data:/gitea_data:rw
- gitea_config:/gitea_config:rw
- gitea_db:/gitea_db:rw
- teamfortress2_backup:/teamfortress2_backup:rw
- teamfortress2_data:/teamfortress2_data:rw
networks:
- infra-network
@@ -81,6 +83,11 @@ volumes:
name: minecraft_proxy_data
minecraft_rcon_data:
name: minecraft_rcon_data
# teamfortress2
teamfortress2_backup:
name: teamfortress2_backup
teamfortress2_data:
name: teamfortress2_data
# forgejo
forgejo_data:
name: forgejo_data

View File

@@ -0,0 +1,85 @@
#//////////////////////////////////////////////////////////////
#// //
#// docker-multimedia, 2024 //
#// Created: 30, May, 2021 //
#// Modified: 14 November, 2024 //
#// file: - //
#// - //
#// Source: //
#// OS: ALL //
#// CPU: ALL //
#// //
#//////////////////////////////////////////////////////////////
PROJECT_DIRECTORY ?= infrastructure
DOCKER_EXEC ?= docker
DOCKER_PROFILES ?= main_infrastructure
PROFILE_CMD ?= $(addprefix --profile ,$(DOCKER_PROFILES))
COMPOSE_FILES ?= $(shell find ./$(PROJECT_DIRECTORY) -maxdepth 1 -name 'docker-compose*.yml' -type f | sed -e 's/^/--file /')
COMPOSE_DIR ?= --project-directory ./$(PROJECT_DIRECTORY)
UID ?= 1000
GID ?= 1000
ENV_ARG_VAR ?= PUID=$(UID) PGID=$(GID)
DOCKER_COMPOSE_COMMAND ?= $(ENV_ARG_VAR) $(DOCKER_EXEC) compose $(COMPOSE_DIR) $(COMPOSE_FILES) $(PROFILE_CMD)
.PHONY: build all
all: start
.PHONY: build
build:
$(DOCKER_COMPOSE_COMMAND) build
.PHONY: start
start:
$(DOCKER_COMPOSE_COMMAND) up -d
.PHONY: start-at
start-at:
$(DOCKER_COMPOSE_COMMAND) up
.PHONY: docker-check
docker-check:
$(DOCKER_COMPOSE_COMMAND) config
.PHONY: stop
stop: down
.PHONY: down
down:
$(DOCKER_COMPOSE_COMMAND) down
.PHONY: restart
restart: stop start
.PHONY: logs
logs:
$(DOCKER_COMPOSE_COMMAND) logs
.PHONY: state
state:
$(DOCKER_COMPOSE_COMMAND) ps
$(DOCKER_COMPOSE_COMMAND) top
.PHONY: update-docker
update-docker:
$(DOCKER_COMPOSE_COMMAND) pull
.PHONY: update
update: update-docker
# git submodule update --init --recursive --remote
git pull --recurse-submodules --all --progress
.PHONY: clean
clean:
docker system prune -f
.PHONY: purge
purge:
$(ENV_ARG_VAR) $(DOCKER_EXEC) compose $(COMPOSE_DIR) $(COMPOSE_FILES) down -v --rmi all

View File

@@ -0,0 +1,18 @@
#//////////////////////////////////////////////////////////////
#// //
#// Script, 2022 //
#// Created: 14, April, 2022 //
#// Modified: 30, November, 2024 //
#// file: - //
#// - //
#// Source: //
#// OS: ALL //
#// CPU: ALL //
#// //
#//////////////////////////////////////////////////////////////
PROJECT_DIRECTORY := teamfortress2-server
DOCKER_PROFILES := team_fortress_server team_fortress_backup
include DockerCompose.mk

View File

@@ -0,0 +1,27 @@
services:
teamfortress2_backup:
image: mazzolino/restic:latest
container_name: teamfortress2_backup
profiles:
- teamfortress2_backup
depends_on:
- teamfortress2_server
restart: on-failure:5
env_file:
- ./env/teamfortress2_backup.env
volumes:
- teamfortress2_backup:/mnt/restic
- teamfortress2_data:/data:ro
security_opt:
- no-new-privileges:true
network_mode: none
cap_drop:
- NET_ADMIN
- NET_RAW
- SYS_ADMIN
volumes:
teamfortress2_backup:
name: teamfortress2_backup
teamfortress2_data:
name: teamfortress2_data

View File

@@ -0,0 +1,14 @@
#RUN_ON_STARTUP=true
RESTIC_REPOSITORY=/mnt/restic
RESTIC_BACKUP_SOURCES=/data
RESTIC_PASSWORD=SCY5cmu12Odca302EXabPA9jXYkCb2NN
# Backup (exuclusive with Check and Prune)
BACKUP_CRON=*/15 * * * *
RESTIC_BACKUP_ARGS=--tag docker-volumes --verbose
#RESTIC_FORGET_ARGS=--prune --keep-last 8 --keep-daily 7 --keep-weekly 5 --keep-monthly 12 --keep-yearly 4
# Check (exuclusive with Check and Prune)
#CHECK_CRON=*/15 * * * *
#RESTIC_CHECK_ARGS=--read-data-subset=40%
# Prune (exuclusive with Check and Prune)
#PRUNE_CRON=*/15 * * * *
#RESTIC_PRUNE_ARGS=

View File

@@ -0,0 +1,7 @@
include:
# Team Fortress 2 server
- teamfortress2/docker-compose.teamfortress2.yml
# OpenSSH server
- openssh/docker-compose.openssh.yml
# Backup server
- backup/docker-compose.backup.yml

View File

@@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHVtzpnPr0Boy+bUbL+viOYfqeetDZF6Hu40EwNLXNb0 bensuperpc@gmail.com

View File

@@ -0,0 +1,36 @@
services:
# openssh
teamfortress2_openssh:
image: linuxserver/openssh-server:latest
container_name: teamfortress2_openssh
profiles:
- teamfortress2_openssh
depends_on:
- teamfortress2_server
restart: on-failure:5
env_file:
- ./env/openssh.env
environment:
- PUID=${PUID:-1000}
- PGID=${PGID:-1000}
volumes:
- teamfortress2_openssh_config:/config
- ./config/authorized_keys:/authorized_ssh_keys:ro
- teamfortress2_backup:/teamfortress2_backup
- teamfortress2_data:/teamfortress2_data
networks:
- infra-network
security_opt:
- no-new-privileges:false
cap_drop:
- SYS_ADMIN
ports:
- 2222:2222
volumes:
teamfortress2_openssh_config:
name: teamfortress2_openssh_config
teamfortress2_backup:
name: teamfortress2_backup
teamfortress2_data:
name: teamfortress2_data

View File

@@ -0,0 +1,15 @@
TZ=Etc/UTC
SUDO_ACCESS=true
PASSWORD_ACCESS=false
DOCKER_MODS=linuxserver/mods:openssh-server-rsync
#PUBLIC_KEY_URL=https://github.com/bensuperpc.keys
PUBLIC_KEY_DIR=/authorized_ssh_keys
USER_NAME=admin
USER_PASSWORD=K4CLuwknhW6sl6fxKI5DsNt9R9SSelmC
#PUBLIC_KEY=yourpublickey
#PUBLIC_KEY_FILE=/path/to/file
#PUBLIC_KEY_DIR=/path/to/directory/containing/_only_/pubkeys
#PUBLIC_KEY_URL=https://github.com/username.keys
#USER_PASSWORD_FILE=/path/to/file
#LOG_STDOUT=

View File

@@ -0,0 +1,39 @@
services:
# Team Fortress 2 server
teamfortress2_server:
image: cm2network/tf2:latest-x64
container_name: teamfortress2_server
profiles:
- teamfortress2_server
restart: on-failure:5
ports:
- "27015:27015/tcp"
- "27015:27015/udp"
volumes:
- teamfortress2_data:/home/steam/tf-dedicated
networks:
- infra-network
env_file:
- ./env/teamfortress2.env
# environment:
# - PUID=${PUID:-1000}
# - PGID=${PGID:-1000}
security_opt:
- no-new-privileges:true
cap_drop:
- SYS_ADMIN
deploy:
resources:
limits:
memory: 16G
reservations:
memory: 4G
volumes:
teamfortress2_data:
name: teamfortress2_data
networks:
infra-network:
driver: bridge
name: infra-network

View File

@@ -0,0 +1,8 @@
SRCDS_TOKEN=
SRCDS_PW=linuxmasterrace
SRCDS_PORT=27015
SRCDS_MAXPLAYERS=32
SRCDS_REGION=3
SRCDS_STARTMAP=pl_badwater
SRCDS_CFG=server.cfg
SRCDS_SECURED=0