{"id":15675400,"url":"https://github.com/jamesives/hlds-docker","last_synced_at":"2025-05-06T21:06:04.855Z","repository":{"id":244137455,"uuid":"813821128","full_name":"JamesIves/hlds-docker","owner":"JamesIves","description":"🐋 📦 Half-Life Dedicated Server powered by Docker. It supports all the classic GoldSrc Half-Life games and mods, including the ability to add custom configurations and plugins.","archived":false,"fork":false,"pushed_at":"2025-02-06T19:11:35.000Z","size":221,"stargazers_count":26,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"beta","last_synced_at":"2025-05-06T21:05:26.508Z","etag":null,"topics":["classic","container","counter-strike","cstrike","czero","dmc","docker","dod","games","gearbox","goldsrc","half-life","half-life-dedicated-server","hl","hldm","hlds","ricochet","server","tfc","valve"],"latest_commit_sha":null,"homepage":"https://jamesiv.es/blog/experiment/docker/2024/06/20/half-life-dedicated-server-with-docker","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/JamesIves.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["JamesIves"]}},"created_at":"2024-06-11T20:06:06.000Z","updated_at":"2025-04-30T23:05:31.000Z","dependencies_parsed_at":"2024-09-11T22:02:57.698Z","dependency_job_id":"85bfcdf0-1db1-485e-9716-5b2d12e93184","html_url":"https://github.com/JamesIves/hlds-docker","commit_stats":{"total_commits":231,"total_committers":3,"mean_commits":77.0,"dds":0.08658008658008653,"last_synced_commit":"67387c72404d0dd2610f68ff82ae449540e1b022"},"previous_names":["jamesives/hlds-docker","jamesives/half-life-dedicated-server-docker"],"tags_count":57,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JamesIves%2Fhlds-docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JamesIves%2Fhlds-docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JamesIves%2Fhlds-docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JamesIves%2Fhlds-docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JamesIves","download_url":"https://codeload.github.com/JamesIves/hlds-docker/tar.gz/refs/heads/beta","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252769396,"owners_count":21801376,"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":["classic","container","counter-strike","cstrike","czero","dmc","docker","dod","games","gearbox","goldsrc","half-life","half-life-dedicated-server","hl","hldm","hlds","ricochet","server","tfc","valve"],"created_at":"2024-10-03T15:59:45.795Z","updated_at":"2025-05-06T21:06:04.821Z","avatar_url":"https://github.com/JamesIves.png","language":"Dockerfile","readme":"# hlds-docker\n\n\u003cimg align=\"right\" width=\"180\" height=\"auto\"  src=\"./.github/docs/docker.svg\" alt=\"Docker in the Half-Life Colours\"\u003e\n\n[Half-Life Dedicated Server](https://help.steampowered.com/en/faqs/view/081A-106F-B906-1A7A) powered by [Docker](https://www.docker.com). It supports all the classic [GoldSrc](https://developer.valvesoftware.com/wiki/GoldSrc) Half-Life games and mods, including the ability to add custom configurations and plugins.\n\nSpecial thank you to all the past and present [GitHub Sponsors](https://github.com/sponsors/JamesIves) 💖.\n\n\u003c!-- sponsors --\u003e\u003ca href=\"https://github.com/Chooksta69\"\u003e\u003cimg src=\"https:\u0026#x2F;\u0026#x2F;github.com\u0026#x2F;Chooksta69.png\" width=\"25px\" alt=\"Chooksta69\" /\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u003ca href=\"https://github.com/MattWillFlood\"\u003e\u003cimg src=\"https:\u0026#x2F;\u0026#x2F;github.com\u0026#x2F;MattWillFlood.png\" width=\"25px\" alt=\"MattWillFlood\" /\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u003ca href=\"https://github.com/jonathan-milan-pollock\"\u003e\u003cimg src=\"https:\u0026#x2F;\u0026#x2F;github.com\u0026#x2F;jonathan-milan-pollock.png\" width=\"25px\" alt=\"jonathan-milan-pollock\" /\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u003ca href=\"https://github.com/raoulvdberge\"\u003e\u003cimg src=\"https:\u0026#x2F;\u0026#x2F;github.com\u0026#x2F;raoulvdberge.png\" width=\"25px\" alt=\"raoulvdberge\" /\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u003ca href=\"https://github.com/robjtede\"\u003e\u003cimg src=\"https:\u0026#x2F;\u0026#x2F;github.com\u0026#x2F;robjtede.png\" width=\"25px\" alt=\"robjtede\" /\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u003ca href=\"https://github.com/hadley\"\u003e\u003cimg src=\"https:\u0026#x2F;\u0026#x2F;github.com\u0026#x2F;hadley.png\" width=\"25px\" alt=\"hadley\" /\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u003ca href=\"https://github.com/kevinchalet\"\u003e\u003cimg src=\"https:\u0026#x2F;\u0026#x2F;github.com\u0026#x2F;kevinchalet.png\" width=\"25px\" alt=\"kevinchalet\" /\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u003ca href=\"https://github.com/Yousazoe\"\u003e\u003cimg src=\"https:\u0026#x2F;\u0026#x2F;github.com\u0026#x2F;Yousazoe.png\" width=\"25px\" alt=\"Yousazoe\" /\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u003ca href=\"https://github.com/github\"\u003e\u003cimg src=\"https:\u0026#x2F;\u0026#x2F;github.com\u0026#x2F;github.png\" width=\"25px\" alt=\"github\" /\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u003ca href=\"https://github.com/annegentle\"\u003e\u003cimg src=\"https:\u0026#x2F;\u0026#x2F;github.com\u0026#x2F;annegentle.png\" width=\"25px\" alt=\"annegentle\" /\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u003ca href=\"https://github.com/planetoftheweb\"\u003e\u003cimg src=\"https:\u0026#x2F;\u0026#x2F;github.com\u0026#x2F;planetoftheweb.png\" width=\"25px\" alt=\"planetoftheweb\" /\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u003ca href=\"https://github.com/melton1968\"\u003e\u003cimg src=\"https:\u0026#x2F;\u0026#x2F;github.com\u0026#x2F;melton1968.png\" width=\"25px\" alt=\"melton1968\" /\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u003ca href=\"https://github.com/szepeviktor\"\u003e\u003cimg src=\"https:\u0026#x2F;\u0026#x2F;github.com\u0026#x2F;szepeviktor.png\" width=\"25px\" alt=\"szepeviktor\" /\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u003ca href=\"https://github.com/sckott\"\u003e\u003cimg src=\"https:\u0026#x2F;\u0026#x2F;github.com\u0026#x2F;sckott.png\" width=\"25px\" alt=\"sckott\" /\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u003ca href=\"https://github.com/provinzkraut\"\u003e\u003cimg src=\"https:\u0026#x2F;\u0026#x2F;github.com\u0026#x2F;provinzkraut.png\" width=\"25px\" alt=\"provinzkraut\" /\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u003ca href=\"https://github.com/electrovir\"\u003e\u003cimg src=\"https:\u0026#x2F;\u0026#x2F;github.com\u0026#x2F;electrovir.png\" width=\"25px\" alt=\"electrovir\" /\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u003ca href=\"https://github.com/Griefed\"\u003e\u003cimg src=\"https:\u0026#x2F;\u0026#x2F;github.com\u0026#x2F;Griefed.png\" width=\"25px\" alt=\"Griefed\" /\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u003ca href=\"https://github.com/MontezumaIves\"\u003e\u003cimg src=\"https:\u0026#x2F;\u0026#x2F;github.com\u0026#x2F;MontezumaIves.png\" width=\"25px\" alt=\"MontezumaIves\" /\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u003ca href=\"https://github.com/tonjohn\"\u003e\u003cimg src=\"https:\u0026#x2F;\u0026#x2F;github.com\u0026#x2F;tonjohn.png\" width=\"25px\" alt=\"tonjohn\" /\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u003ca href=\"https://github.com/wylie\"\u003e\u003cimg src=\"https:\u0026#x2F;\u0026#x2F;github.com\u0026#x2F;wylie.png\" width=\"25px\" alt=\"wylie\" /\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u003ca href=\"https://github.com/pylapp\"\u003e\u003cimg src=\"https:\u0026#x2F;\u0026#x2F;github.com\u0026#x2F;pylapp.png\" width=\"25px\" alt=\"pylapp\" /\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u003ca href=\"https://github.com/\"\u003e\u003cimg src=\"https:\u0026#x2F;\u0026#x2F;raw.githubusercontent.com\u0026#x2F;JamesIves\u0026#x2F;github-sponsors-readme-action\u0026#x2F;dev\u0026#x2F;.github\u0026#x2F;assets\u0026#x2F;placeholder.png\" width=\"25px\" alt=\"\" /\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u003ca href=\"https://github.com/\"\u003e\u003cimg src=\"https:\u0026#x2F;\u0026#x2F;raw.githubusercontent.com\u0026#x2F;JamesIves\u0026#x2F;github-sponsors-readme-action\u0026#x2F;dev\u0026#x2F;.github\u0026#x2F;assets\u0026#x2F;placeholder.png\" width=\"25px\" alt=\"\" /\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u003ca href=\"https://github.com/\"\u003e\u003cimg src=\"https:\u0026#x2F;\u0026#x2F;raw.githubusercontent.com\u0026#x2F;JamesIves\u0026#x2F;github-sponsors-readme-action\u0026#x2F;dev\u0026#x2F;.github\u0026#x2F;assets\u0026#x2F;placeholder.png\" width=\"25px\" alt=\"\" /\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u003c!-- sponsors --\u003e\n\n## Getting Started 🚀\n\nBefore starting, ensure you have the [Docker daemon](https://www.docker.com/) and the [Docker CLI tool](https://docs.docker.com/engine/reference/commandline/cli/) installed and available.\n\n\u003e [!IMPORTANT]  \n\u003e The following steps will not work if you use an ARM architecture system. For best results, use a system running x86-64.\n\nYou can run the following in your terminal to get started as quickly as possible. Adjust the image name (`jives/hlds`) so the tag corresponds with the game you want to use. Additionally, you can adjust the server startup arguments by modifying the `command` property; [for a list of available arguments, visit the Valve Developer Wiki](https://developer.valvesoftware.com/wiki/Half-Life_Dedicated_Server).\n\n```bash\ndocker run -d -ti \\\n  --name hlds \\\n  -v \"$(pwd)/config:/temp/config\" \\\n  -v \"$(pwd)/mods:/temp/mods\" \\\n  -p 27015:27015/udp \\\n  -p 27015:27015 \\\n  -p 26900:26900/udp \\\n  jives/hlds:valve  \\\n  \"+log on +rcon_password changeme +maxplayers 12 +map crossfire\" # 📣 Modify your server startup commands here. You can specify the image with the desired game you want the server to run in the line above.\n```\n\n\u003e [!TIP]  \n\u003e The available images are below. When changing the game, be sure to adjust the `+map` parameter, as it may cause the server to not be joinable if the map is unavailable.\n\u003e\n\u003e - `jives/hlds:valve` ([Half-Life Deathmatch](https://store.steampowered.com/app/70/HalfLife/))\n\u003e - `jives/hlds:cstrike` ([Counter-Strike](https://store.steampowered.com/app/10/CounterStrike/))\n\u003e - `jives/hlds:czero` ([Counter-Strike Condition Zero](https://store.steampowered.com/app/80/CounterStrike_Condition_Zero/))\n\u003e - `jives/hlds:dmc` ([Deathmatch Classic](https://store.steampowered.com/app/40/Deathmatch_Classic/))\n\u003e - `jives/hlds:gearbox` ([Half-Life Opposing Force](https://store.steampowered.com/app/50/HalfLife_Opposing_Force/))\n\u003e - `jives/hlds:ricohet` ([Ricochet](https://store.steampowered.com/app/60/Ricochet/))\n\u003e - `jives/hlds:dod` ([Day of Defeat](https://store.steampowered.com/app/30/Day_of_Defeat/))\n\u003e - `jives/hlds:tfc` ([Team Fortress Classic](https://store.steampowered.com/app/20/Team_Fortress_Classic/))\n\u003e - `jives/hlds:valve-legacy` ([Half-Life Deathmatch](https://store.steampowered.com/app/70/HalfLife/)) ([Pre-25th Anniversary Build](https://www.half-life.com/en/halflife25))\n\u003e - `jives/hlds:cstrike-legacy` ([Counter-Strike](https://store.steampowered.com/app/10/CounterStrike/)) ([Pre-25th Anniversary Build](https://www.half-life.com/en/halflife25))\n\u003e - `jives/hlds:czero-legacy` ([Counter-Strike Condition Zero](https://store.steampowered.com/app/80/CounterStrike_Condition_Zero/)) ([Pre-25th Anniversary Build](https://www.half-life.com/en/halflife25))\n\u003e\n\u003e Container images are published on [Docker Hub](https://hub.docker.com/repository/docker/jives/hlds/general) and the [GitHub Container Registry](https://github.com/JamesIves/hlds-docker/pkgs/container/hlds).\n\nOnce the command finishes, you can connect to your server via the public IP address by loading the game on [Steam](https://steampowered.com). **You must own a copy of the game on Steam to play**.\n\n\u003e [!NOTE]  \n\u003e If you cannot join the server, you can check for errors in the server logs by running `docker ps` to get the container id followed by `docker logs \u003ccontainer id\u003e`.\n\n### Docker Compose\n\nIf you'd prefer to configure your server using [Docker Compose](https://docs.docker.com/compose/), you can pull down the project repository to your system and run `docker compose up` from the root. Make any modifications you need, such as changing the game image and server startup commands in [docker-compose.yml](docker-compose.yml) before running `docker compose up`.\n\n## Advanced Setup ⚙️\n\nTo customize the server client further, please check out the following advanced setup guides.\n\n- [Server Configs and Plugins](config/README.md)\n- [Custom Mods](mods/README.md)\n- [Building a Custom Image](container/README.md)\n","funding_links":["https://github.com/sponsors/JamesIves"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamesives%2Fhlds-docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjamesives%2Fhlds-docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamesives%2Fhlds-docker/lists"}