{"id":16936775,"url":"https://github.com/opcode81/grobersumo-quakelive-server-cfg","last_synced_at":"2025-03-21T05:15:50.388Z","repository":{"id":146886582,"uuid":"341326829","full_name":"opcode81/grobersumo-quakelive-server-cfg","owner":"opcode81","description":"Server configuration and launch scripts for the Grobersumo Quake Live servers","archived":false,"fork":false,"pushed_at":"2023-03-05T19:56:14.000Z","size":35,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-26T01:44:55.344Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/opcode81.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-02-22T20:22:31.000Z","updated_at":"2023-02-26T13:15:27.000Z","dependencies_parsed_at":null,"dependency_job_id":"c0b433b2-8ed9-489d-aa1d-5a1a3efd716e","html_url":"https://github.com/opcode81/grobersumo-quakelive-server-cfg","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opcode81%2Fgrobersumo-quakelive-server-cfg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opcode81%2Fgrobersumo-quakelive-server-cfg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opcode81%2Fgrobersumo-quakelive-server-cfg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opcode81%2Fgrobersumo-quakelive-server-cfg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/opcode81","download_url":"https://codeload.github.com/opcode81/grobersumo-quakelive-server-cfg/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244739952,"owners_count":20501992,"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":[],"created_at":"2024-10-13T20:57:52.232Z","updated_at":"2025-03-21T05:15:50.370Z","avatar_url":"https://github.com/opcode81.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Grobersumo Quake Live Server Configuration\r\n\r\nThis project contains server configuration files for the Grobersume Quake Live servers:\r\n\r\n* `iffa`: instagib free for all\r\n* `wffa`: free for all with CA weapons at spawn\r\n\r\n## Quake Live Dedicated Server Installation under Ubuntu Linux\r\n\r\n**Requirements**\r\n\r\n* [Install **steamcmd**](https://developer.valvesoftware.com/wiki/SteamCMD#Downloading_SteamCMD) for the user `steam`, such that `steamcmd` is available under `/usr/games/steamcmd` (or edit `install_qlds.sh` to reflect the correct path).\r\n\r\n* The contents of this repository are under `/home/steam/.quakelive`\r\n\r\n* Requirements which can be installed via apt-get:\r\n\r\n  `sudo apt-get -y install python3 python3-dev redis-server git build-essential`\r\n\r\n**Server Installation**\r\n\r\nGiven these requirements, the actual dedicated server (along with minqlx extensions) can be installed by executing the following command as a sudo-capable user:\r\n\r\n    sh install_qlds.sh\r\n\r\n**Stats Secret**\r\n\r\nFor player stats to be transferred, create the file `/home/steam/.quakelive/zmq_stats_password.txt` and write the password to it (without a trailing newline).\r\n\r\n## Linux Services\r\n\r\nWe use [systemctl](https://www.freedesktop.org/software/systemd/man/systemctl.html) to control server (re)start and shutdown.\r\n\r\nThe systemd units use the shell scripts `launch_\u003cserver_name\u003e.sh` to start the servers. \r\n\r\nWe create a systemd unit for each server:\r\n  * `/etc/systemd/system/ql-instagib.service` for the `iffa` server\r\n  * `/etc/systemd/system/ql-allweapons.service` for the `wffa` server\r\n\r\nThese are the contents of the former,\r\n\r\n    [Unit]\r\n    Description=Quake Live Instagib\r\n    After=syslog.target\r\n    \r\n    [Service]\r\n    ExecStart=\"/home/steam/.quakelive/launch.sh\" iffa\r\n    User=steam\r\n    Group=steam\r\n    Restart=on-failure\r\n    RestartSec=5s\r\n    KillMode=mixed\r\n    \r\n    [Install]\r\n    WantedBy=multi-user.target\r\n\r\nwhere we have passed the subdirectory where the server configuration is located, `iffa`, as an argument.\r\n\r\nAfter a unit file has been created, we can enable and start the service as follows:\r\n\r\n    sudo systemctl enable ql-instagib\r\n    sudo systemctl start ql-instagib\r\n\r\n**Convenience Scripts**\r\n\r\n* `restart_iffa.sh`, `restart_wffa.sh` to restart the servers\r\n* `stop_all.sh` to stop all servers\r\n\r\n**Service Logs**\r\n\r\nUse `journalctl` to view service logs, e.g. for service `ql-instagib` as follows in order to view the latest log messages first (`-r`):\r\n\r\n    sudo journalctl -u ql-instagib -r\r\n\r\n**Periodic Restart**\r\n\r\nWe restart servers daily to fix the problem where bots are not cleared from the player slits. Specifically, we configure a cron job for the root user that runs the restart script every day at 5 o'clock:\r\n\r\n    # m h  dom mon dow   command\r\n    0 5 * * *   /home/steam/.quakelive/restart_iffa.sh\r\n\r\n\r\n## Quake Live Server Configuration\r\n\r\nOur configuration system factors out configuration that is common to all servers in the file `server.base.cfg`.\r\n\r\nSettings specific to a server are to be set in `\u003cserver name\u003e/baseq3/server.additional.cfg` and may override settings already defined in the base configuration.\r\n\r\nThe actual server configuration file `\u003cserver name\u003e/baseq3/server.cfg` is automatically created by running:\r\n\r\n    python make_server_cfg.py \u003cserver name\u003e\r\n\r\nThis command usually does not need to be executed explicitly, as it is done automatically whenever the services are (re)started. Do not edit the auto-generated file.\r\n\r\n## Workshop Items\r\n\r\nWorkshop items can be added by their ids (GET parameter `id`in Steam URL) by adding one line per id to `workshop.base.txt`. \r\n\r\nAny identifiers added there will automatically be written to each `server.cfg` as well as the respective `workshop.txt` file when running `make_server_cfg.py` (automatically done at server startup).\r\n\r\nTo try out new maps, simply add the desired workshop items and temporarily disable `qlx_enforceMappool` in `server.base.cfg` to be able to start maps not within the map pool.\r\n\r\n## Map Pool\r\n\r\nThe common map pool for all servers is defined in `mappool.base.cfg`. It defines all the maps on rotation and furthermore restricts the maps one can call a vote for (or start manually via the console). To disable pool enforcement, set `qlx_enforceMappool`to 0.\r\n\r\nThe script `make_mappool_cfg.py` generates the `mappool.txt` file for a server (called automatically on server startup).\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopcode81%2Fgrobersumo-quakelive-server-cfg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopcode81%2Fgrobersumo-quakelive-server-cfg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopcode81%2Fgrobersumo-quakelive-server-cfg/lists"}