Releases: MarechJ/hll_rcon_tool
v9.8.1 Docker Compose Bug Fixes
This is just a bug fix for v9.8.0
, please refer to https://github.com/MarechJ/hll_rcon_tool/releases/tag/v9.8.0 for release notes and upgrade instructions.
If you tried v9.8.0
you will need to manually fix your .env
and compose.yaml
files if they still have the old values.
Your .env
should have:
BACKEND_DOCKER_REPOSITORY=cericmathey/hll_rcon_tool
FRONTEND_DOCKER_REPOSITORY=cericmathey/hll_rcon_tool_frontend
and your compose.yaml
file should have the supervisor container using the backend image and Dockerfile instead of the frontend one:
x-supervisor: &supervisor
build:
context: .
dockerfile: Dockerfile
image: ${BACKEND_DOCKER_REPOSITORY}:${TAGGED_VERSION}
What's Changed
Full Changelog: v9.8.0...v9.8.1
v9.8.0 Docker Hub / Docker Compose Changes
v9.8.1
instead, but the release notes are correct, just substitute in v9.8.1
when you do your git checkout
🚨
v9.8.0 Docker Hub / Docker Compose Changes
docker-compose.yml
(and the other architecture versions) from the repository 🚨
🐛 Bug Fixes
- Fixes an issue where matches could be recorded with
bla_
as the map name which would break the match scoreboard
Why the changes?
It is just better for everyone and only requires a small amount of work to upgrade.
The compose files are now simpler which makes it easier for people to add/remove game servers (especially because we only provided a config for up to 3 servers before)
You will no longer see Docker errors about unhealthy
containers for servers you aren't using.
You now have the freedom to run server 2
or 3
, etc. without server 1
being configured.
You no longer have to worry about git
conflicts with your compose files.
You can now choose to use alternate redis
and/or postgres
images if you know what you're doing without manually editing your compose files.
We can build and host images for other architectures such as linux/arm64
which is great for anyone running a Raspberry Pi for instance.
Building images is now easier if you build your own regardless of architecture.
We can track the status of builds from github
and retry failed builds, only Maresh had access to the Docker Hub account.
Maresh' Docker Hub subscription lapses in August so we are switching over to mine. I have builds from v9.5.3
and forward on my repository, if for some reason you really want to use a build older than that you'll either have to pull them from Maresh's repository or build the images manually.
Docker Compose Command Changes
If you want to build your own images, it is now as simple as running docker compose build
from your root CRCON directory.
If you are on any architecture besides linux/amd64
or linux/arm64
there is no guarantee all of the upstream dependencies will work properly.
Docker Compose Templates
We now provide a docker compose template for both a single game server and one for up to 10 game servers in the docker-templates/
directory.
If you only run a single game server and it is server1
in your .env
then you can simply copy docker-templates/one-server.yaml
and rename it compose.yaml
in the root CRCON directory.
It should be much easier for you guys to add extra servers even if you go beyond 10 game servers in a single CRCON install.
If you use a tool with a visual compare option (such as Visual Studio Code) it is very easy to make these changes, otherwise you can simply copy and paste between files: insert gif
docker-compose.yml
from the repository, you will need to make a new compose file, I recommend compose.yaml
because this is the default name that docker compose will search for and we have set git
to ignore this file so you will never have any git
conflicts with it while upgrading to future releases. 🚨
networks
Each game server needs a network defined in the networks
section at the top of the compose file.
Do not remove the one labeled common
, just add one for each game server you have set up (mirroring the services section), so if you use server1
and server2
, include those.
example with 3 game servers:
networks:
common:
server1:
server2:
server3:
services
Each game server needs a service defined in the services
section at the bottom of the compose file or docker compose will not start your containers.
Each game server uses different environment variables from your .env
file, so it is very important that you copy and paste these sections correctly or things aren't going to work properly.
For each game server you want to use server1
, server2
, etc. you just need to copy and paste the relevant section from docker-templates/ten-servers.yaml
Upgrade Instructions
.env
and compose files to upgrade 🚨
.env
Changes
I would recommend just making a new .env
file by copying default.env
(after backing up your old one) and re-populating it with the details from your old .env
, but if you want to update your existing one, this is what has changed:
We have added two new .env
variables that you need to add to your .env
, you can copy and paste directly out of default.env
These two new variables need to be added to your .env
:
REDIS_IMAGE=redis:alpine
POSTGRES_IMAGE=postgres:12-alpine
These two variables have changed and you need to update them to point at my docker hub account or you
BACKEND_DOCKER_REPOSITORY=cericmathey/hll_rcon
FRONTEND_DOCKER_REPOSITORY=cericmathey/hll_rcon_frontend
Each game server now has two new variables for each game server, for each game server you need to include these and make sure that they are named correctly, for example SERVER_NUMBER_2
for server 2 and so on.
SERVER_NUMBER=1
HLL_REDIS_DB=1
You can change the server/redis database numbers but unless you know what you're doing I would leave them as the default.
Upgrade Steps
- Backup your
.env
- Backup your
docker-compose.yml
git fetch --tags
git checkout v9.8.0
- Update your
.env
with changes fromdefault.env
(see the .env changes section) - Create a new compose file (
compose.yml
) from a template indocker-templates/
- Update your
compose.yml
file if you use 2+ game servers see the compose changes section - Shutdown your containers:
docker compose down
- Pull new images
docker compose pull
- Clear the
redis
cache (because the redis database numbers changed):
docker compose up -d redis
docker compose exec redis redis-cli flushall
- Create your containers
docker compose up -d
Downgrading
If you need to downgrade to an older release after upgrading you'll need to essentially follow these instructions in reverse and replace your old .env
and docker-compose.yml
files.
What's Changed
- Bump channels from 4.0.0 to 4.1.0 by @dependabot in #545
- Bump sentry-sdk[django] from 1.44.1 to 1.45.0 by @dependabot in #546
- Bump pydantic from 2.6.4 to 2.7.0 by @dependabot in #544
- Use existing UNKNOWN_MAP_NAME when we can't properly record the map name by @cemathey in #547
- Update/simplify compose and docker files by @cemathey in #517
Full Changelog: v9.7.0...v9.8.0
v9.7.0 Streaming Logs
v9.7.0 Streaming Logs
Please see the wiki for a detailed write up on how this feature is implemented and how to use it.
tl;dr this adds an optional service that allows API consumers to use web sockets to have log events pushed to them rather than having to constantly poll one of the HTTP endpoints and re-process old logs looking for new ones.
A big thanks to the fine people over at The Circle who both asked for the feature and helped test it out for a few months and provided feedback, as well as Craven
🚀 Features
- Adds a new endpoint to support pushing new logs as they're received from the game server
🐛 Bug Fixes
- The
ChatCommandsUserConfig
could not be get/set from the CLI
New Permissions
can_view_log_stream_config
can_change_log_stream_config
Upgrade Instructions
git fetch --tags
git checkout v9.7.0
docker compose pull
docker compose up -d --remove-orphans
What's Changed
- Feat/websocket service by @cemathey in #532
- Bump orjson from 3.9.10 to 3.9.15 by @dependabot in #543
Full Changelog: v9.6.3...v9.7.0
v9.6.3 Bug Fixes
v9.6.3 Bug Fixes
🚀 Features
- The version tag will now show in both log files and API responses to make troubleshooting easier
- The server name shown in log files will now show the locally configured short name and not the game server name
- The server name will now show in all log files and not just the API log files
🐛 Bug Fixes
- Fixes the remaining issues with votemap endpoints that were caused by us changing how we treat maps internally
- Steam API calls will only be attempted when a Steam API key is set
- Fixes persisting steam info to the database for new player records
- Fixes the
ChatCommandsUserConfig
not seeding the database on startup - Seeds all user config records to the database before any other startup tasks are performed to eliminate unnecessary log errors
Upgrade Instructions
git fetch --tags
git checkout v9.6.3
docker compose pull
docker compose up -d --remove-orphans
Full Changelog: v9.6.2...v9.6.3
v9.6.1 Votemap Fix
v9.6.0
v9.6.0 U14.8 Bug Fixes & Miscellaneous Bug Fixes
🚀 Features
- The UI for managing map rotations has been updated for skirmish maps
- The UI has been updated for vote map to reflect some configuration changes to support skirmish maps
- The drop down player name list on
Game View
now lists player names alphabetically (@caranci) - The level enforcement auto mod can now optionally only announce the rules to players who would be impacted by them (@caranci)
- See the
only_announce_impacted_players
setting in your config
- See the
🐛 Bug Fixes
- Seeding cap fight enforcement will no longer apply to skirmish maps
- Using multiple webhooks with scorebot will now work properly
- Skirmish maps will now work properly with vote map
- Simultaneous database migrations will no longer occur causing issues for people running many game servers in the same CRCON install
New Docker Container
We've added another Docker container, maintenance
that you will see running once per CRCON alongside the redis
and postgres
containers.
We added this to perform the database migrations in (both django
and alembic
) because previously these were performed once per backend
container and could intermittently cause issues for people running many game servers.
docker-compose.yml
has changed because of this please review the upgrade instructions
Vote Map Changes
As part of the bug fix for votemap and skirmish maps we changed the vote map configuration slightly.
ratio_of_offensives
and number_of_options
are both gone.
These were replaced with num_warfare_options
, num_offensive_options
and num_skirmish_control_options
and you now specify the number of options for each type of map.
consider_skirmishes_as_same_map
, allow_consecutive_skirmishes
and allow_default_to_skirmish
are also new.
Feature Requests
We now have a feature request forum in Discord to replace the text channel to make it easier for us to keep track of them.
Community Tools
We now have a community tool forum in Discord, if you have a Hell Let Loose tool (whether it works with CRCON or is a stand alone one) that you would like to share, please come by and make a forum post about it!
If it's something that you actively maintain and do releases for we can also add Discord roles for them so you can ping people about it.
Future API Changes
Thanks to @timraay we now have some much more organized code for working with maps, game modes and environments (night, day, etc.).
In a future release we will start returning JSON objects that represent maps instead of plain map names like elalamein_offensive_CW
so the frontend and people who write tools that use the API do not have to maintain their own look up tables.
These examples may change, but two samples of what you can expect the new output to look like:
{
"id": "stmereeglise_warfare",
"map": {
"id": "stmereeglise",
"name": "SAINTE-MÈRE-ÉGLISE",
"tag": "SME",
"prettyname": "St. Mere Eglise",
"shortname": "SME",
"allies": "us",
"axis": "ger"
},
"gamemode": "warfare",
"attackers": null,
"environment": "Day"
}
{
"id": "stmereeglise_offensive_us",
"map": {
"id": "stmereeglise",
"name": "SAINTE-MÈRE-ÉGLISE",
"tag": "SME",
"prettyname": "St. Mere Eglise",
"shortname": "SME",
"allies": "us",
"axis": "ger"
},
"gamemode": "offensive",
"attackers": "Allies",
"environment": "Day"
}'
Upgrade Instructions
docker-compose.yml
(because of the maintenance
container bug fix) if you have manually modified this file, you may want to make a backup, reset your changes use the new file as a template.
Aside from the above it's a standard upgrade
git fetch --tags
git checkout v9.6.0
docker compose pull
docker compose up -d --remove-orphans
What's Changed
- Disable enforce_cap_fight for skirmish maps by @cemathey in #506
- Bump pytest from 8.0.2 to 8.1.1 by @dependabot in #513
- Bump redis from 5.0.1 to 5.0.3 by @dependabot in #516
- Remove duplicate function by @cemathey in #518
- Fix map rotation UI for skirmish maps by @cemathey in #511
- Bump black from 24.2.0 to 24.3.0 by @dependabot in #522
- Bump sentry-sdk[django] from 1.40.5 to 1.42.0 by @dependabot in #520
- Bump cachetools from 5.3.2 to 5.3.3 by @dependabot in #519
- Bump rq from 1.15.1 to 1.16.1 by @dependabot in #514
- Remove old comment that no longer applies by @cemathey in #523
- Update README.md by @cemathey in #524
- Use abu style maps and update votemap for skirmish by @cemathey in #510
- Sort players list drop-down in the game view by @caranci in #526
- Bump python-dateutil from 2.8.2 to 2.9.0.post0 by @dependabot in #529
- Bump sentry-sdk[django] from 1.42.0 to 1.43.0 by @dependabot in #528
- Bump sqlalchemy from 2.0.27 to 2.0.29 by @dependabot in #527
- Bump pydantic from 2.6.2 to 2.6.4 by @dependabot in #531
- add option to only announce level automod to players impacted by curr… by @caranci in #525
- Bump sentry-sdk[django] from 1.43.0 to 1.44.0 by @dependabot in #530
- Support multiple scorebot webhooks by @cemathey in #521
- Add a maintenance container to run database migrations only once by @cemathey in #512
Full Changelog: v9.5.1...v9.6.0
v9.5.1
v9.5.1 U14.8 Maps / Miscellaneous Changes / Bugfixes
There is a bug where the new U14.8 skirmish map names will be reported in the game logs incorrectly as warfare maps.
Docker Changes
We've made some changes to the Docker Compose files to be more explicit about container start order and require that containers be healthy before later containers can start.
This means that both the redis
and postgres
containers must be started/running properly before the backend
containers can start and the frontend
and supervisor
containers depend on the backend
.
Because of these changes and depending on your docker
/docker-compose
/docker compose
versions you may see varying error messages, for instance if you use server 1 and server 2 but not server 3, you may
As a reminder docker-compose
has been deprecated since July 2023, all examples in the README/update instructions use docker compose
and I don't make any effort to test with docker-compose
, please upgrade if it causes you issues
Requests Forum
We have added a feature requests forum in the Discord, I'm leaving the #feature-requests channel (I turned off new messages) so we have all the old stuff, but please put stuff in the forum from now on, it will be much more organized.
Github issues are welcome as well, but I know most people don't have github accounts.
Wiki / README
- The README is now much more up to date (@ElGuillermo)
- We have a Chinese README now thanks to @BrycePPM
- @dapriest_og has been investing time updating the Wiki and any and all contributions are welcome, to include simply translating the current content (README and Wiki) to other languages.
- Translating CRCON itself is not trivial, but translating documentation would help and there are a lot of CRCON users who are not native English speakers or may not speak English at all.
Other Community Tools
There are a lot of private tools (Discord bots, etc.) that exist, some rely on CRCON and some don't. There is a lot of appetite in the community for this kind of stuff, please consider sharing your stuff, even if you've written it specifically for you and your communities needs by open sourcing it you may help people write their own tools.
🚀 Features
- Added some basic highlighting to the logs portion of the live view for different log types (Thanks to @ajaxnine)
- The front end will now show windows store icons for windows store players (steam players will still show the steam icon) and link to https://xboxgamertag.com instead of a non existent steam profile (Thanks to @ajaxnine)
- T17 made changes to the map rotation commands (Thanks for noticing @ABUUUUUUU) and we no longer have to include the
/Game/Maps
prefix in the rotation file.- No action is required on your part, your
MapRotation.ini
file should automatically fix itself from what I was able to determine
- No action is required on your part, your
- Discord audit webhooks will now automatically retry when rate limited so they should no longer just silently fail (Thanks to @ajaxnine)
- Adding a map to the votemap whitelist will now explicitly fail if the map name is not valid as reported by the game server but if you are controlling this with Auto Settings you would have to look in your auto settings log to see the errors
- Turning vote map on will now immediately apply (reducing the rotation to a single map)
🐛 Bug Fixes
- I broke the ability to use most of the RCON commands from the command line in a previous release, this is fixed now
- The
has_at_least_n_sessions
field inSettings > TK Ban On Connect
is now properly checked (@ElGuillermo) - Content sent to the Discord audit webhook is now
markdown escaped
so characters in players names/messages shouldn't change the formatting (@ajaxnine) - Fixes an issue causing exceptions when checking for VAC/game bans on player connect
- Fixes an issue causing SQL integrity errors when updating steam info on player connect
- Vote map now uses the available maps as reported by the game server instead of a hard coded list (
⚠️ this means you'll have to clear your cache after an update that includes new maps⚠️ ) - We now make case insensitive comparisons for map names because the map names are inconsistent
- Fixed some typos in permission descriptions
- Uploading VIP lists that contain windows store IDs should now work properly (@ajaxnine)
Maintenance/Miscellaneous
- If you have not set a
HLL_DB_PASSWORD
environment variable the backend container will explicitly not start- You will only see this if you've unset it, because you will receive an error from the
postgres
container if it was never set
- You will only see this if you've unset it, because you will receive an error from the
Upgrade Instructions
This is a standard upgrade.
git fetch --tags
git checkout v9.5.1
docker compose pull
docker compose up -d --remove-orphans
What's Changed
- Maint/u148 map names by @cemathey in #503
- Add support for win-store playerid "profile" links. by @caranci in #466
- Maint/docker health checks by @cemathey in #431
- Bump pydantic from 2.5.3 to 2.6.0 by @dependabot in #472
- fix vip upload only accepts steam ids, not windows store ids by @caranci in #471
- escape markdown sequences in discord audit webhooks... by @caranci in #469
- Bump black from 23.12.1 to 24.1.1 by @dependabot in #467
- Update pytest requirement from ~=7.4.4 to ~=8.0.0 by @dependabot in #468
- Fix rcon command line registration by @cemathey in #476
- Fix typoes in descriptions by @cemathey in #475
- Hotfix/duplicate steam profile records by @cemathey in #473
- Readme wip by @cemathey in #477
- Update README.md by @ElGuillermo in #478
- Bump sqlalchemy from 2.0.25 to 2.0.26 by @dependabot in #484
- Bump sentry-sdk[django] from 1.39.2 to 1.40.3 by @dependabot in #483
- Bump django from 4.2.7 to 4.2.10 by @dependabot in #479
- Bump black from 24.1.1 to 24.2.0 by @dependabot in #491
- Bump sqlalchemy from 2.0.26 to 2.0.27 by @dependabot in #490
- Add installation guide in zh-cn by @BrycePPM in #485
- Bump pytest from 8.0.0 to 8.0.1 by @dependabot in #489
- Rudimentary highlighting for Logs view by @caranci in #470
- Update game_logs.py by @ElGuillermo in #481
- Update autoMods.js by @ElGuillermo in #480
- Remove /Game/Maps and apply vote map to reduce rotation when toggled by @cemathey in #474
- add support for async discord webhooks by @caranci in #492
- Bump pytest from 8.0.1 to 8.0.2 by @dependabot in #501
- Bump sentry-sdk[django] from 1.40.3 to 1.40.5 by @dependabot in #500
- Bump pydantic from 2.6.0 to 2.6.2 by @dependabot in #499
- Use only valid maps as reported by the game server by @cemathey in #497
New Contributors
Full Changelog: v9.5.0...v9.5.1
v9.4.1 Bug Fixes
What's Changed
🐛 Bug Fixes
- Fixes a caching issue
- Chat commands will now validate message variables properly,
v9.4.0
would let you pass in invalid message variables - Some message variables weren't being populated properly
Upgrade Instructions
This is a standard upgrade, but your config may get reset if it contains invalid message variables you probably want to copy/paste your chat commands config into something prior to upgrading as it may get reset
git fetch --tags
git checkout v9.4.1
docker compose pull
docker compose up -d --remove-orphans
Full Changelog: v9.4.0...v9.4.1
v9.4.0
v9.4.0 Chat Commmands / Bug Fixes
🚀 Features
- The
Level Auto Mod
has a new option (levelbug_enabled
); since the player info command is the only way to determine a players level, and that can fail for various reasons, this auto mod used to skip level checks for level 1 players. (elguillermo)- You can opt out of this behavior by setting
levelbug_enabled
tofalse
in your config - This is enabled by default to match the previous behavior
- You can opt out of this behavior by setting
Settings > CRCON Settings
has a new option (discord_invite_url
) to support Chat Commands, see below!
🐛 Bug Fixes
enrich_db_users
(updates old/missing steam profiles in the database) was running twice a day despite what the comments said, it now runs once a day at1000
system time (elguillermo)enrich_db_users
was only querying the steam API for the first 100 player profiles it pulled from the database- Steam ban information was not being persisted in the database despite there being a column for it
- CRCON API keys could not be generated for any user with
$
character(s) in theirRCONWEB_API_SECRET
- Forwarding commands/requests that authenticated via API key was not working properly (ajax excuseme sourcecode)
New User Permissions
- can_view_chat_commands_config
- can_change_chat_commands_config
Chat Commands
We've got an exciting new feature for you, you can now create your own custom chat commands (from a limited but will grow in the future set of info)
- They're configured under
Settings > Chat Commands
- Command words must start with either the
!
or@
commands?
is automatically available and will describe the command when triggered
Chat commmands are in the form below, the message
is what will be sent to the player in game and the description
will be used when the command is described with either ?
or one of the configured describe_words
.
The message variables must be enclosed in brackets like {last_nemesis_weapon}
and you can only use ones from the list below.
{
"words": [
"!wkm",
"@wkm"
],
"message": "You were last killed by {last_nemesis_name} with {last_nemesis_weapon}",
"description": "Who killed me"
}
- If you configure one or more
describe_words
(these also must start with either!
or@
), and you have set adescription
for each of yourcommand_words
, it will message the player with all of your configured commands and their descriptions.
What variables are available?
At the moment you can use any of these and this will be expanded in the future
player_name
player_steam_id_64
last_victim_steam_id_64
last_victim_name
last_nemesis_steam_id_64
last_nemesis_name
last_victim_weapon
last_nemesis_weapon
last_tk_victim_steam_id_64
last_tk_victim_name
last_tk_victim_weapon
last_tk_nemesis_steam_id_64
last_tk_nemesis_name
last_tk_nemesis_weapon
vip_status
vip_expiration
server_name
server_short_name
discord_invite_url
admin_ping_trigger_words
num_online_mods
num_ingame_mods
next_map
map_rotation
top_kills_player_name
top_kills_player_score
top_kill_streak_player_name
top_kill_streak_player_score
Maintenance
- We've refactored our steam API usage (and have more plans in the future) to try to reduce how often an API key might be rate limited
- If a steam key is set, the player's profile and bans are pulled when they connect (no more often than every 12 hours per game server unless the redis cache is cleared)
- Player profiles/bans are now pulled from the database when they're needed through out CRCON instead of making steam API calls
- If you don't have a steam API key, you should get one it enables extra features like VAC ban checks, etc: https://steamcommunity.com/dev/apikey
- It is entered per server
Settings > Steam API
- The
PlayerSteamID
model now includes player flags in theto_dict
method- This includes anywhere it's used, such as the
player
endpoint
- This includes anywhere it's used, such as the
- CRCON now tracks (on a per match or 2.5 hour basis, the cache is expired for whichever comes first) by player ID (steam ID, windows store ID) the last kill, victim, weapon, etc. to support the chat commands feature, but if you run a fork this is available for whatever your heart desires
- Admin ping trigger words are sorted to enable consistent unit test results
Upgrade Instructions
This is a standard upgrade, but please do read the complete release notes for some of the changed configuration values
git fetch --tags
git checkout v9.4.0
docker compose pull
docker compose up -d --remove-orphans
What's Changed
- Bump sentry-sdk[django] from 1.39.1 to 1.39.2 by @dependabot in #455
- Refactor steam API usage to try to reduce rate limiting by @cemathey in #454
- Feature automod level level1 bug protection enable/disable by @ElGuillermo in #457
- Update crontab by @ElGuillermo in #456
- Bump vite from 4.3.9 to 4.5.2 in /rcongui by @dependabot in #463
- Fix forwarding with API keys by @cemathey in #458
- Add VIP info to PlayerVIP
to_dict
by @cemathey in #464 - Add support for generic player chat commands (trigger words) by @cemathey in #427
Full Changelog: v9.3.3...v9.4.0
v9.3.3 Fix server forwarding / API key generation
v9.3.3 Fix server forwarding / API key generation
🐛 Bug Fixes
- Users with a
$
key in theirRCONWEB_API_SECRET
could not generate API keys (thanks to @koba_yashi for the bug report) - Forwarding between servers (temp bans, VIP additions, etc.) has been broken for a little bit but is now fixed (thanks to @glow for the bug report)
- The
describe_votemap_config
endpoint had the wrong command name in the results
Upgrade Instructions
This is a standard upgrade, if for some reason it doesn't use the correct images when you recreate your containers, just do a docker compose down
and then a docker compose up -d
and it should work properly.
git fetch --tags
git checkout v9.3.3
docker compose pull
docker compose up -d --remove-orphans
What's Changed
- Strip
$
characters from the secret key as it's not allowed in the salt by @cemathey in #453 - Fix server forwarding due to HTTP method checking by @cemathey in #449
- Update votemap.py by @cemathey in #446
- Bump sqlalchemy from 2.0.23 to 2.0.25 by @dependabot in #450
- Update pytest requirement from ~=7.4.3 to ~=7.4.4 by @dependabot in #437
Full Changelog: v9.3.2...v9.3.3