A bash-based updater script for Project Ebonhold, a World of Warcraft custom server. The updater downloads and verifies game files by comparing MD5 hashes against a remote manifest.
As of January 24 2026, checking for updates and downloading updates requires you to be logged using your Project Ebonhold user account. Project Ebonhold's team has said that this is a precausionary measure to avoid issues related to resource management. This script will prompt you for username and password, and will request an authToken from Project Ebonhold's API. It will then store the token in a file called .updaterToken for further use. There is no obfuscation in this script and you can see that the script only connects to Project Ebonhold's API. The token is stored in plain text, but this is the same as the official launcher or your webbrowser does when you are logged into a website like Project Ebonhold. However a webbrowser does obfuscate where it stores the token.
- Automated File Verification: Compares local file MD5 hashes against remote manifest
- GUI Progress Tracking: User-friendly progress dialogs using zenity
- Steam Integration: Seamlessly handles Steam launch arguments
- Game Mods: using
--mods=hd_patchyou can enable downloading/updating/verifying the hd_patch - Game Modes: using
--game=roguelikefor the PTR server, currently it defaults to--game=roguelike-prod
The following system packages are required:
curljq
Optional dependency
zenity
Zenity is needed for a GUI, if you don't have Zenity installed you need to run the script in a terminal (not background task)
All of these are pre-installed on SteamOS and some other game releated distros, if not they should be easy to install (package name is same as the programs name)
- Place
ebonhold-updater.shin your World of Warcraft Wrath of the Litchking directory or the directory where you want to download World of Warcraft - Make the script executable:
chmod +x ebonhold-updater.shThis will either update your local installation or ask you if you want to download the full game if it doesn't find Wow.exe
./ebonhold-updater.sh--mods accepts a comma separated list of mods,
at the time of writing only hd_patch is available
./ebonhold-updater.sh --mods=hd_patchScript will output information to the terminal if you run it with the debug flag
./ebonhold-updater --debug
# or
debug=true ./ebonhold-updater.shVerifying game files will check all game files, and download, missing, outdated or files that doesn't match.
./ebonhold-updater.sh --verifyAt the time of writing two options are available for --game
roguelike-prod is the main game, this is the default selection (if you don't use the --game option)
roguelike is the Public test realm (ptr)
./ebonhold-updater.sh --game=roguelikenote not having --game=roguelike is the same as --game=roguelike-prod and will download the main game. If you want to stay in PTR permanently make a shortcut including --game=roguelike
if in the future the API changes such that the main game is called roguelike and the ptr is called roguelkike-ptr instead, Ill update the default game, and the readme.
- If you don't already have World of Warcraft Wrath of the Litchking installed, please run the ebonhold-updater.sh script one time first.
- Add
Wow.exeas a Non-Steam Game - Make sure "Start In" target in Steam is the folder that has
Wow.exe, it should already be the correct value. - Set Force the Use of a Specific Steam Play Compatibility tool by: right clicking the game, Properties, Compatibility.
- Add the following as a launch option
./ebonhold-updater.sh %command%
Technically, the script will detect it is running in Steam, and rewrite Steam's launch command so that the script is running inside the Steam Runtime, and inside gamescope (if in use). We need to do this so we are able to display the window with the progress bar on systems that use gamescope
- Optionally display the latest news entry using --news
- Improve handling og --game= currently it works fine, but when Project Ebonhold add more game modes we might have to handle deleting files when switching game mode
