Repository navigation
For Maintainers
pip install -e ".[dev]"
pytestThe test suite runs the full install → upgrade → crash → rollback cycle against a fake
java and a fake server, so it needs no network and no Minecraft.
-
Test builds: every CI run builds the Windows, macOS and Linux executables. Open the run under the repository's Actions tab (workflow test), scroll to Artifacts, and download
test-build-…for your system. It's a zip containing the executable; you need to be signed in to GitHub. -
CurseForge key in releases (optional): like Prism Launcher, release builds can carry the project's own CurseForge API key so people don't need one. Add it as the repository secret
CURSEFORGE_API_KEY(Settings → Secrets and variables → Actions); the release workflow writes it into the executables at build time (packaging/write_build_keys.py) and it never goes in the source. A key someone enters in Craft Conductor settings always takes priority. Use a key CurseForge issued for Craft Conductor as an app, since anything inside a program can be dug out of it. -
Real end-to-end test: the e2e workflow (
packaging/e2e_test.py) uses a built executable against the real services:- it creates real Fabric, NeoForge, Forge, Paper and vanilla servers with real Modrinth mods, downloads Java, and boots Minecraft;
- it upgrades the Fabric server to the newest version its mods support;
- it drives the web UI, RCON and player commands, then stops cleanly.
It runs on Linux, plus Fabric on Windows and macOS, on every pull request and every Monday. You can also start it by hand under Actions → e2e → Run workflow.
- Set
__version__insrc/craft_conductor/__init__.py, e.g."0.2.0", and merge it tomain. - Go to Actions → release → Run workflow, enter
0.2.0, and run it. This creates thev0.2.0tag for you. Pushing the tag yourself works too:git tag v0.2.0 && git push origin v0.2.0. - The release workflow tests the code and builds the
Windows, macOS and Linux executables with PyInstaller. It
smoke-tests each one on its own OS, then publishes a GitHub release with the
executables, the friends'
craft-conductor-join-...copies of them, the Python wheel, andSHA256SUMS.txt, then publishes the invite page (it links to those downloads). - Running copies of craft-conductor notice the release within a day and offer to update.
To build an executable yourself:
-
Linux:
packaging/build_linux.sh. It uses a portable Python from python-build-standalone, so the result runs on glibc 2.17+ and not just on your own distribution.packaging/check_linux_compat.sh dist/craft-conductorproves it in a CentOS 7 container. -
Windows or macOS:
pip install pyinstaller && pyinstaller packaging/craft-conductor.spec. - Then run
python packaging/smoke_test.py dist/craft-conductor(ordist/craft-conductor.exe).
The executables aren't code-signed yet, which is why Windows and macOS show warnings. Windows signing through SignPath Foundation (free for open source) is ready in the release workflow and switches on once the project is accepted: see docs/code-signing.md. macOS needs an Apple Developer ID ($99/year) and notarization.
User manual
- Start here
- What it can and can't do
- Getting started
- Creating a server
- Messages
- Your servers
- Dashboard
- Console
- Players
- Mods
- Updates
- Backups
- Java
- Settings
- Playing with friends
- Joining a friend's server
- Remote access and phones
- People and what they may do
- Craft Conductor settings
- Troubleshooting
- Getting help
Power users
- Power users: start here
- Configuration (craft-conductor.toml)
- Building servers from the command line
- Running it forever
- Linux servers without a screen
- Managing players from the command line
- Java in detail
- How an upgrade works
- Updating Craft Conductor
- Mods that block third-party downloads
- Security
- Other ways to install
- For maintainers
- Where Craft Conductor keeps things
- Command line