├── .dockerignore ├── mounted └── README.md ├── docker_files ├── steamcmd.cmd ├── run_server.sh └── Dockerfile ├── fig.yml └── README.md /.dockerignore: -------------------------------------------------------------------------------- 1 | .git 2 | README.md 3 | mounted -------------------------------------------------------------------------------- /mounted/README.md: -------------------------------------------------------------------------------- 1 | This folder will contain your dedicated server 2 | -------------------------------------------------------------------------------- /docker_files/steamcmd.cmd: -------------------------------------------------------------------------------- 1 | // This is an example script 2 | // see https://developer.valvesoftware.com/wiki/SteamCMD#Automating_SteamCMD 3 | // for more info 4 | 5 | // anonymous login is required in order to download CS:GO 6 | login anonymous 7 | // Where all the files will be stored 8 | // Don't change, unless you know what you are doing 9 | force_install_dir /root/mounted/ 10 | // See https://developer.valvesoftware.com/wiki/Dedicated_Servers_List#Linux_Dedicated_Servers 11 | // to find your dedicated server ID 12 | // 740: Counter-Strike: Global Offensive Dedicated Server 13 | app_update 740 14 | 15 | 16 | //It should always end by quit 17 | //This script contains only the instructions to download the dedicated server 18 | quit 19 | -------------------------------------------------------------------------------- /docker_files/run_server.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | cd /root/mounted 3 | # Fixes [S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.dll. 4 | export HOME="/root" 5 | file="/root/.steam/sdk32/steamclient.so" 6 | if ! [ -f "$file" ] 7 | then 8 | mkdir -p ~/.steam/sdk32/ 9 | ln -s /etc/service/steamcmd/linux32/steamclient.so "$file" 10 | fi 11 | 12 | 13 | 14 | # Classic Casual 15 | # exec ./srcds_run -game csgo -console -usercon +game_type 0 +game_mode 0 +mapgroup mg_active 16 | # Classic Competitive 17 | exec ./srcds_run -game csgo -console -usercon +ip 0.0.0.0 +hostport 27015 +game_type 0 +game_mode 1 18 | # Arms Race 19 | # exec ./srcds_run -game csgo -console -usercon +game_type 1 +game_mode 0 +mapgroup mg_armsrace 20 | # Demolition 21 | # exec ./srcds_run -game csgo -console -usercon +game_type 1 +game_mode 1 +mapgroup mg_demolition 22 | # Deathmatch 23 | # exec ./srcds_run -game csgo -console -usercon +game_type 1 +game_mode 2 +mapgroup mg_allclassic 24 | -------------------------------------------------------------------------------- /docker_files/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM phusion/baseimage 2 | ENV HOME /root 3 | RUN /etc/my_init.d/00_regen_ssh_host_keys.sh 4 | CMD ["/sbin/my_init"] 5 | 6 | # SteamCMD is a 32-bit binary, 32-bit libraries are required -- Seriously? 7 | RUN dpkg --add-architecture i386 8 | RUN apt-get -y update 9 | RUN apt-get -y install lib32gcc1 wget 10 | 11 | WORKDIR /etc/service/steamcmd 12 | 13 | # Gets SteamCMD 14 | RUN (wget http://media.steampowered.com/installer/steamcmd_linux.tar.gz) && \ 15 | (tar -xzf steamcmd_linux.tar.gz) && (rm steamcmd_linux.tar.gz) 16 | 17 | # Add configuration file 18 | ADD ./steamcmd.cmd /etc/service/steamcmd/steamcmd.cmd 19 | 20 | # Install the server on startup 21 | RUN (echo "#!/bin/sh\ncd /etc/service/steamcmd\n./steamcmd.sh +runscript steamcmd.cmd\n" > /etc/rc.local) 22 | 23 | # Creates server as a service 24 | ADD ./run_server.sh /etc/service/steamcmd/run 25 | RUN chmod +x ./run 26 | 27 | # Cleans up APT when done. 28 | RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 29 | -------------------------------------------------------------------------------- /fig.yml: -------------------------------------------------------------------------------- 1 | # sudo docker run -d -p 27015:27015 -p 27016:27016 -p 27017:27017 -p 27018:27018 -p 27019:27019 -p 27020:27020 -p 27021:27021 -p 27022:27022 -p 27023:27023 -p 27024:27024 -p 27025:27025 -p 27026:27026 -p 27027:27027 -p 27028:27028 -p 27029:27029 -p 27030:27030 -p 27031:27031 -p 27032:27032 -p 27033:27033 -p 27034:27034 -p 27035:27035 -p 27036:27036 -p 54168:54168 -p 27005:27005 -p 26901:26901 -p 27015:27015/udp -p 27016:27016/udp -p 27017:27017/udp -p 27018:27018/udp -p 27019:27019/udp -p 27020:27020/udp -p 27021:27021/udp -p 27022:27022/udp -p 27023:27023/udp -p 27024:27024/udp -p 27025:27025/udp -p 27026:27026/udp -p 27027:27027/udp -p 27028:27028/udp -p 27029:27029/udp -p 27030:27030/udp -p 27031:27031/udp -p 27032:27032/udp -p 27033:27033/udp -p 27034:27034/udp -p 27035:27035/udp -p 27036:27036/udp -p 54168:54168/udp -p 27005:27005/udp -p 26901:26901/udp -v `pwd`/mounted:/root/mounted mysteamserver 2 | mysteamserver: 3 | build: ./docker_files 4 | volumes: 5 | - ./mounted/:/root/mounted 6 | ports: 7 | - "27015:27015" 8 | - "27016:27016" 9 | - "27017:27017" 10 | - "27018:27018" 11 | - "27019:27019" 12 | - "27020:27020" 13 | - "27021:27021" 14 | - "27022:27022" 15 | - "27023:27023" 16 | - "27024:27024" 17 | - "27025:27025" 18 | - "27026:27026" 19 | - "27027:27027" 20 | - "27028:27028" 21 | - "27029:27029" 22 | - "27030:27030" 23 | - "27031:27031" 24 | - "27032:27032" 25 | - "27033:27033" 26 | - "27034:27034" 27 | - "27035:27035" 28 | - "27036:27036" 29 | - "54168:54168" 30 | - "27005:27005" 31 | - "26901:26901" 32 | - "27015:27015/udp" 33 | - "27016:27016/udp" 34 | - "27017:27017/udp" 35 | - "27018:27018/udp" 36 | - "27019:27019/udp" 37 | - "27020:27020/udp" 38 | - "27021:27021/udp" 39 | - "27022:27022/udp" 40 | - "27023:27023/udp" 41 | - "27024:27024/udp" 42 | - "27025:27025/udp" 43 | - "27026:27026/udp" 44 | - "27027:27027/udp" 45 | - "27028:27028/udp" 46 | - "27029:27029/udp" 47 | - "27030:27030/udp" 48 | - "27031:27031/udp" 49 | - "27032:27032/udp" 50 | - "27033:27033/udp" 51 | - "27034:27034/udp" 52 | - "27035:27035/udp" 53 | - "27036:27036/udp" 54 | - "54168:54168/udp" 55 | - "27005:27005/udp" 56 | - "26901:26901/udp" 57 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | #docker-steam 2 | 3 | A docker with steam preconfigured inside. 4 | Configure your `steamcmd.cmd` to run your dedicated server. 5 | 6 | ## Dependency 7 | 8 | - [Docker](https://www.docker.com/) 9 | - [Mac OS X](https://docs.docker.com/installation/mac/) 10 | - [Ubuntu](https://docs.docker.com/installation/ubuntulinux/) 11 | - [Red Hat Enterprise Linux](https://docs.docker.com/installation/rhel/) 12 | - [CentOS](https://docs.docker.com/installation/centos/) 13 | - [Debian](https://docs.docker.com/installation/debian/) 14 | - [Gentoo](https://docs.docker.com/installation/gentoolinux/) 15 | - [Google Cloud Platform](https://docs.docker.com/installation/google/) 16 | - [Rackspace Cloud](https://docs.docker.com/installation/rackspace/) 17 | - [Amazon EC2](https://docs.docker.com/installation/amazon/) 18 | - [IBM Softlayer](https://docs.docker.com/installation/softlayer/) 19 | - [Arch Linux](https://docs.docker.com/installation/archlinux/) 20 | - [FrugalWare](https://docs.docker.com/installation/frugalware/) 21 | - [Fedora](https://docs.docker.com/installation/fedora/) 22 | - [openSUSE](https://docs.docker.com/installation/openSUSE/) 23 | - [CRUX Linux](https://docs.docker.com/installation/cruxlinux/) 24 | - [Microsoft Windows](https://docs.docker.com/installation/windows/) 25 | 26 | 27 | ## Install it 28 | 29 | ```bash 30 | git clone https://github.com/Micka33/docker-steam.git 31 | cd docker-steam 32 | sudo docker build -t mysteamserver ./docker_files 33 | ``` 34 | 35 | ## Run it 36 | 37 | ```bash 38 | sudo docker run -d -p 27015:27015 -p 27016:27016 -p 27017:27017 -p 27018:27018 -p 27019:27019 -p 27020:27020 -p 27021:27021 -p 27022:27022 -p 27023:27023 -p 27024:27024 -p 27025:27025 -p 27026:27026 -p 27027:27027 -p 27028:27028 -p 27029:27029 -p 27030:27030 -p 27031:27031 -p 27032:27032 -p 27033:27033 -p 27034:27034 -p 27035:27035 -p 27036:27036 -p 54168:54168 -p 27005:27005 -p 26901:26901 -p 27015:27015/udp -p 27016:27016/udp -p 27017:27017/udp -p 27018:27018/udp -p 27019:27019/udp -p 27020:27020/udp -p 27021:27021/udp -p 27022:27022/udp -p 27023:27023/udp -p 27024:27024/udp -p 27025:27025/udp -p 27026:27026/udp -p 27027:27027/udp -p 27028:27028/udp -p 27029:27029/udp -p 27030:27030/udp -p 27031:27031/udp -p 27032:27032/udp -p 27033:27033/udp -p 27034:27034/udp -p 27035:27035/udp -p 27036:27036/udp -p 54168:54168/udp -p 27005:27005/udp -p 26901:26901/udp -v `pwd`/mounted:/root/mounted mysteamserver 39 | ``` 40 | 41 | *for inspection/debug, use this command* 42 | ```bash 43 | sudo docker run --rm -ti -p 27015:27015 -p 27016:27016 -p 27017:27017 -p 27018:27018 -p 27019:27019 -p 27020:27020 -p 27021:27021 -p 27022:27022 -p 27023:27023 -p 27024:27024 -p 27025:27025 -p 27026:27026 -p 27027:27027 -p 27028:27028 -p 27029:27029 -p 27030:27030 -p 27031:27031 -p 27032:27032 -p 27033:27033 -p 27034:27034 -p 27035:27035 -p 27036:27036 -p 54168:54168 -p 27005:27005 -p 26901:26901 -p 27015:27015/udp -p 27016:27016/udp -p 27017:27017/udp -p 27018:27018/udp -p 27019:27019/udp -p 27020:27020/udp -p 27021:27021/udp -p 27022:27022/udp -p 27023:27023/udp -p 27024:27024/udp -p 27025:27025/udp -p 27026:27026/udp -p 27027:27027/udp -p 27028:27028/udp -p 27029:27029/udp -p 27030:27030/udp -p 27031:27031/udp -p 27032:27032/udp -p 27033:27033/udp -p 27034:27034/udp -p 27035:27035/udp -p 27036:27036/udp -p 54168:54168/udp -p 27005:27005/udp -p 26901:26901/udp -v `pwd`/mounted:/root/mounted mysteamserver /sbin/my_init -- bash -l 44 | ``` 45 | 46 | 47 | 48 | ## About it 49 | 50 | Currently, this docker is configured to run a **Classic Competitive CS:GO dedicated server**. 51 | 52 | ## How to run another dedicated server ? 53 | 54 | 2 files need to be modified, `steamcmd.cmd` and `run_server.sh`. 55 | 56 | 57 | [docker_files/steamcmd.cmd](https://github.com/Micka33/docker-steam/blob/master/docker_files/steamcmd.cmd) 58 | ``` 59 | // anonymous login is required in order to download CS:GO 60 | // see https://developer.valvesoftware.com/wiki/SteamCMD#Automating_SteamCMD 61 | // for more info 62 | login anonymous 63 | 64 | // Where all the files will be stored 65 | // Don't change, unless you know what you are doing 66 | force_install_dir /root/mounted/ 67 | 68 | // See https://developer.valvesoftware.com/wiki/Dedicated_Servers_List#Linux_Dedicated_Servers 69 | // to find your dedicated server ID 70 | // 740: Counter-Strike: Global Offensive Dedicated Server 71 | app_update 740 validate 72 | 73 | //It should always end by quit 74 | quit 75 | ``` 76 | 77 | Change the steam application id `740` to yours. [here](https://developer.valvesoftware.com/wiki/Dedicated_Servers_List#Linux_Dedicated_Servers) is a list of all steam application IDs. 78 | 79 | Some dedicated server require to be logged in. 80 | Change like the following: 81 | ``` 82 | //login anonymous 83 | @NoPromptForPassword 1 84 | login 85 | ``` 86 | 87 | --- 88 | 89 | 90 | [docker_files/run_server.sh](https://github.com/Micka33/docker-steam/blob/master/docker_files/run_server.sh) 91 | ```bash 92 | #!/bin/sh 93 | cd /root/mounted 94 | 95 | # Classic Casual 96 | # exec ./srcds_run -game csgo -console -usercon +game_type 0 +game_mode 0 +mapgroup mg_active 97 | # Classic Competitive 98 | exec ./srcds_run -game csgo -console -usercon +game_type 0 +game_mode 1 +mapgroup mg_bomb_se 99 | # Arms Race 100 | # exec ./srcds_run -game csgo -console -usercon +game_type 1 +game_mode 0 +mapgroup mg_armsrace 101 | # Demolition 102 | # exec ./srcds_run -game csgo -console -usercon +game_type 1 +game_mode 1 +mapgroup mg_demolition 103 | # Deathmatch 104 | # exec ./srcds_run -game csgo -console -usercon +game_type 1 +game_mode 2 +mapgroup mg_allclassic 105 | ``` 106 | 107 | There are some examples CS:GO modes already configured in this file. 108 | Be sure to always run your server using `exec`. 109 | 110 | Refer to the approriate steam server configuration page. See [this link](https://developer.valvesoftware.com/wiki/Steam_Application_IDs#Server_Files), and [this link](https://developer.valvesoftware.com/wiki/Dedicated_Servers_List#Linux_Dedicated_Servers) for all servers. --------------------------------------------------------------------------------