Choose your installation method and get ChatrixCD running quickly! 🚀
| Method | Best For | Difficulty |
|---|---|---|
| Pre-built Binary | Linux users wanting the easiest setup | ⭐ Easy |
| From Source | Development, Windows, macOS | ⭐⭐ Moderate |
| Docker | Containerized deployments | ⭐⭐ Moderate |
Features: No Python needed, fully static, works on any Linux distro
# Download (replace x86_64 with i686 or arm64 for other architectures)
wget https://github.com/CJFWeatherhead/ChatrixCD/releases/latest/download/chatrixcd-linux-x86_64.dist.tar.gz
tar -xzf chatrixcd-linux-x86_64.dist.tar.gz
cd chatrixcd-linux-x86_64.dist
# Run
./chatrixcdAvailable: x86_64 | i686 | ARM64
Windows/macOS: Binaries not available - use Method 2 or Docker
- Python 3.12 or newer
- Git (to clone the repository)
# Clone repository
git clone https://github.com/CJFWeatherhead/ChatrixCD.git
cd ChatrixCD
# Install
pip install -e .
# Run
chatrixcdPlatform-specific notes:
- Windows: Works natively with Python 3.12+
- macOS: Install Python 3.12+ via Homebrew:
brew install python@3.12 - Linux: Most distros have Python 3.12+ in repos
Create docker-compose.yml:
services:
chatrixcd:
image: ghcr.io/cjfweatherhead/chatrixcd:latest
volumes:
- ./config.json:/app/config.json:ro
- ./store:/app/store
restart: unless-stoppedRun:
docker compose up -ddocker run -d \
-v $(pwd)/config.json:/app/config.json:ro \
-v $(pwd)/store:/app/store \
--name chatrixcd \
ghcr.io/cjfweatherhead/chatrixcd:latestCreate config.json in your installation directory:
{
"matrix": {
"homeserver": "https://matrix.org",
"user_id": "@mybot:matrix.org",
"auth_type": "password",
"password": "your-password"
},
"semaphore": {
"url": "https://semaphore.example.com",
"api_token": "your-api-token"
},
"bot": {
"command_prefix": "!cd",
"admin_users": ["@you:matrix.org"],
"allowed_rooms": []
}
}Configuration options: See Configuration Reference
Password Authentication (Simple):
{
"matrix": {
"auth_type": "password",
"password": "your-password"
}
}OIDC/SSO Authentication:
{
"matrix": {
"auth_type": "oidc",
"oidc_redirect_url": "http://localhost:8080"
}
}The bot will display a login URL when starting.
- Log into Semaphore UI
- Click your profile (top right)
- Go to API Keys
- Create new key
- Copy token to
config.json
chatrixcd # Run with TUI (default)
chatrixcd -L # Log-only mode (no TUI)
chatrixcd -D # Daemon mode (background)
chatrixcd -v # Verbose loggingsystemd service (/etc/systemd/system/chatrixcd.service):
[Unit]
Description=ChatrixCD Matrix Bot
After=network-online.target
[Service]
Type=simple
User=chatrixcd
WorkingDirectory=/opt/chatrixcd
ExecStart=/opt/chatrixcd/chatrixcd -L
Restart=always
[Install]
WantedBy=multi-user.targetEnable:
sudo systemctl enable --now chatrixcdAlpine Linux (OpenRC) (/etc/init.d/chatrixcd):
#!/sbin/openrc-run
command="/opt/chatrixcd/chatrixcd"
command_args="-L"
command_user="chatrixcd:chatrixcd"
directory="/opt/chatrixcd"- Invite bot to room: Send invite to your bot's Matrix ID
- Send test command:
!cd help - Check response: Bot should reply with help message
If using encrypted rooms:
- Bot will prompt for device verification
- With TUI: Use interactive verification screen
- Without TUI: Use emoji verification in logs
- Or: Use
!cd verifycommand in room
"No config file found"
- Create
config.jsonin the same directory as the binary/script
"Failed to connect to Matrix server"
- Check
homeserverURL is correct - Verify network connectivity
- Check firewall settings
"Authentication failed"
- Verify
user_idandpasswordare correct - For OIDC: Complete browser login when prompted
Bot joined but silent:
- Check room is in
allowed_rooms(or leave empty to allow all) - Verify bot user is in
admin_usersfor admin commands - Check logs with
chatrixcd -v
"Permission denied" errors:
- Verify bot account has permission to send messages
- Check room power levels
Import errors (from source):
pip install --upgrade pip
pip install -e .Binary "Permission denied":
chmod +x chatrixcd-linux-*Port already in use (OIDC):
- Change
oidc_redirect_urlto different port - Or use password authentication
- 📖 Quick Start Guide - Get running in 5 minutes
- ⚙️ Configuration Reference - All config options
- 🎨 Customization Guide - Customize messages and aliases
- 📚 Full Documentation - Complete docs