{"id":20484102,"url":"https://github.com/nuxy/docker-steamcmd-wine","last_synced_at":"2025-04-13T14:35:32.414Z","repository":{"id":59430102,"uuid":"533904335","full_name":"nuxy/docker-steamcmd-wine","owner":"nuxy","description":":whale: Run a Steam powered Windows game server in Docker.","archived":false,"fork":false,"pushed_at":"2023-09-06T21:33:38.000Z","size":34,"stargazers_count":27,"open_issues_count":0,"forks_count":6,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-27T05:34:53.034Z","etag":null,"topics":["docker","hosting","server","steam-games","windows"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/r/marcsbrooks/docker-steamcmd-wine","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nuxy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-09-07T19:08:12.000Z","updated_at":"2025-02-23T13:09:56.000Z","dependencies_parsed_at":"2023-01-23T03:01:09.155Z","dependency_job_id":null,"html_url":"https://github.com/nuxy/docker-steamcmd-wine","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nuxy%2Fdocker-steamcmd-wine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nuxy%2Fdocker-steamcmd-wine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nuxy%2Fdocker-steamcmd-wine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nuxy%2Fdocker-steamcmd-wine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nuxy","download_url":"https://codeload.github.com/nuxy/docker-steamcmd-wine/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248729086,"owners_count":21152346,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","hosting","server","steam-games","windows"],"created_at":"2024-11-15T16:19:51.149Z","updated_at":"2025-04-13T14:35:32.386Z","avatar_url":"https://github.com/nuxy.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# docker-steamcmd-wine\n\nRun a [Steam](https://store.steampowered.com) powered Windows game server in Docker.\n\n## Dependencies\n\n- [Visual Studio Code](https://code.visualstudio.com/download) (optional)\n- [Docker](https://docs.docker.com/get-docker)\n\n### VS Code extensions\n\n- [Remote-Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)\n\n## Manually starting the container\n\nUnless the game you are attempting to run was purchased on the [Steam](https://store.steampowered.com) marketplace **authentication should not be necessary** so you can omit the [Game configuration arguments](#game-configuration-arguments) in the `docker build` command below.  In cases you do need to authenticate, on first build attempt a [Steam Guard](https://help.steampowered.com/en/faqs/view/06B0-26E6-2CF8-254C) code is generated which is _sent to you by either e-mail or SMS_.  Due to this, you must update the command below to include the `GUARDCODE` value and re-run the build process _within 30 seconds_ of receiving the message.\n\n    $ docker build -t steamcmd . --build-arg USERNAME=\u003csteam-username\u003e --build-arg PASSWORD=\u003csteam-password\u003e --build-arg GUARDCODE=\u003csteam-guard-code\u003e --build-arg APPID=\u003csteam-appid\u003e --build-arg RUNCMD=\u003ccommand\u003e\n    $ docker run -d --network host steamcmd\n\n### Accessing the container\n\n    $ docker exec -it \u003ccontainer-id\u003e /bin/bash\n\n### Game configuration arguments\n\n| `--build-arg` | Description             |\n|---------------|-------------------------|\n| USERNAME      | Steam account Username (optional) |\n| PASSWORD      | Steam account Password (optional) |\n| GUARDCODE     | [Steam Guard](https://help.steampowered.com/en/faqs/view/06B0-26E6-2CF8-254C) code (optional) |\n| APPID         | Steam application ID    |\n| RUNCMD        | Commands to run in the app directory. |\n| HEADLESS      | yes \u0026#124; no (default: yes) |\n| RDP_SERVER    | yes \u0026#124; no (default: no)  |\n| RDP_PASSWD    | System account Password (default: `games`) |\n\n## Launching in Remote-Containers\n\nIn the VS Code _Command Palette_ choose \"Open Folder in Container\" which will launch the server in a Docker container allowing for realtime development and testing.\n\nBy default, a [Miscreated Dedicated Server](https://steamdb.info/app/302200) will be launched.  To change the game edit the VS Code [`devcontainer.json`](https://github.com/nuxy/docker-steamcmd-wine/blob/develop/.devcontainer/devcontainer.json) and rebuild the Docker container.\n\n## Managing the game server\n\nThe following command can be executed within the Docker container:\n\n    $ service game-server {start|stop|restart}\n\n## Overriding game sources\n\nIn cases where you have an existing game set-up (e.g. configuration, database, workshops) you can synchronize these items during the game installation process by adding them to the `/files` directory.  Mirroring that of the existing game directory, files that already exist will be overwritten.\n\n## Networking workarounds\n\nThe most likely culprit to the \"I cannot find my server..\" issue is one of the following:\n\n1. Your router NAT has limited support for [UPnP \u0026#40;Universal Plug and Play\u0026#41;](https://en.wikipedia.org/wiki/Universal_Plug_and_Play) which results in game loopback requests being denied.  To resolve this you must manually configure [port range forwarding](https://en.wikipedia.org/wiki/Port_forwarding) in your router to mirror the TCP/UDP ports exposed by the game server.  This will ensure routing to your game server occurs within the network.\n2. Your game server binds to the server _internal IP_ vs router _external (public)_ address.  To resolve this you must add an IP alias to your server network device (see below).  Once complete, you _*may need to configure the game_ to launch using that same address thereby ensuring the correct IP is broadcasted to the game network.\n\n(*) Entirely dependent on your network set-up (e.g. corporate vs home) and in most cases is not required.\n\n### Adding an IP alias (spoofing your [external IP address](https://www.whatismyip.com))\n\n    $ sudo ip a add \u003cip-address\u003e/24 dev \u003cinterface-name\u003e\n    $ sudo sh -c \"echo '\u003cip-address\u003e localhost' \u003e\u003e /etc/hosts\"\n\n## Connecting with an RDP client\n\nIf the container was started with `RDP_SERVER=yes` you can make a remote desktop connection using a client-side application supported by your operating system.\n\n| Application | Operating System |\n|-------------|------------------|\n| [Microsoft Remote Desktop](https://play.google.com/store/apps/details?id=com.microsoft.rdc.androidx) | Android |\n| [Microsoft Remote Desktop](https://apps.apple.com/us/app/microsoft-remote-desktop/id1295203466) | OSX, iOS |\n| [Microsoft Remote Desktop](https://apps.microsoft.com/store/detail/microsoft-remote-desktop/9WZDNCRFJ3PS) | Windows |\n| [Reminna Remote Desktop Client](https://remmina.org/remmina-rdp) | Linux |\n\n### Login credentials\n\nUnless `RDP_PASSWD` has been defined, you can login to the server using the following account information:\n\n```txt\nUsername: games\nPassword: games\n```\n\n## Related projects\n\n- [aws-ec2-miscreated](https://github.com/nuxy/aws-ec2-miscreated)\n\n## References\n\n- [Database of everything on Steam](https://steamdb.info)\n- [Runtime options with Memory, CPUs, and GPUs](https://docs.docker.com/config/containers/resource_constraints)\n- [Required Ports for Steam](https://help.steampowered.com/en/faqs/view/2EA8-4D75-DA21-31EB)\n\n## Contributions\n\nIf you fix a bug, or have a code you want to contribute, please send a pull-request with your changes.\n\n## Versioning\n\nThis package is maintained under the [Semantic Versioning](https://semver.org) guidelines.\n\n## License and Warranty\n\nThis package is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose.\n\n_docker-steamcmd-wine_ is provided under the terms of the [MIT license](http://www.opensource.org/licenses/mit-license.php)\n\n[Steam](https://store.steampowered.com) is a registered trademark of Valve Corporation.\n\n## Author\n\n[Marc S. Brooks](https://github.com/nuxy)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnuxy%2Fdocker-steamcmd-wine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnuxy%2Fdocker-steamcmd-wine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnuxy%2Fdocker-steamcmd-wine/lists"}