Troubleshooting
brūhi Desktop
Section titled “brūhi Desktop”App won’t start on Linux
Section titled “App won’t start on Linux”Symptom: The app crashes immediately on launch, or shows a blank window.
Cause: Missing libwebkit2gtk-4.1 or libwebkit2gtk-4.0.
Fix:
# Ubuntu / Debiansudo apt install libwebkit2gtk-4.1-0
# Older Ubuntu / Debiansudo apt install libwebkit2gtk-4.0-37
# Fedorasudo dnf install webkit2gtk4.1No audio output / can’t hear anything
Section titled “No audio output / can’t hear anything”Symptom: Tracks play (position advances) but no sound.
Steps:
- Go to System → Audio Devices.
- Check that the Output bus is set to the correct device.
- Check that system volume is not muted.
- On Linux: check that PulseAudio or PipeWire is running.
Audio device not found after connecting hardware
Section titled “Audio device not found after connecting hardware”Symptom: A USB audio interface or headset appears in system settings but not in brūhi.
Cause: brūhi enumerates audio devices at startup. Hot-plugged devices may not appear automatically.
Fix: Restart brūhi after connecting the device. Hot-plug re-enumeration is on the roadmap.
JACK not detected on Linux
Section titled “JACK not detected on Linux”Symptom: JACK does not appear as an audio device option.
Cause: JACK must be running before brūhi starts.
Fix:
# Start JACK firstjackd -d alsa -r 48000 &
# Then start brūhiIf using PipeWire-JACK:
pw-jack bruhi-desktopMIDI device not detected
Section titled “MIDI device not detected”Symptom: A MIDI controller is connected but not showing in the MIDI mapping panel.
Steps:
- Confirm the MIDI device is detected by the OS (
aconnect -lon Linux, Audio MIDI Setup on macOS). - In brūhi, go to System → MIDI and check the port list.
- If still not visible, restart brūhi (MIDI ports are enumerated at startup).
SRT output fails to connect
Section titled “SRT output fails to connect”Symptom: SRT output shows as “connecting” or immediately disconnects.
Cause 1: libsrt is not installed on the host.
Fix: Install libsrt-dev (Linux) or the SRT binaries (Windows/macOS), then rebuild brūhi from source with --features srt.
Cause 2: Firewall blocking the SRT port (default 9000 UDP).
Fix: Open the UDP port in your firewall: sudo ufw allow 9000/udp
Broadcast output disconnects repeatedly
Section titled “Broadcast output disconnects repeatedly”Symptom: Icecast/Shoutcast output reconnects every few minutes.
Steps:
- Check the Icecast server logs for the reason (too many listeners, source timeout, etc.).
- Increase the Icecast
<source-timeout>setting inicecast.xml. - Check network stability between brūhi and the Icecast server.
- Verify the Icecast
<max-sources>limit has not been reached.
SQLite database errors on startup
Section titled “SQLite database errors on startup”Symptom: Error dialog about database corruption or locked file.
Fix:
# macOScd ~/Library/Application\ Support/bruhi/
# Linuxcd ~/.local/share/bruhi/
# Windowscd %APPDATA%\bruhi\
# Backup and remove the database to resetcp bruhi.db bruhi.db.bakrm bruhi.dbRestarting brūhi will create a fresh database. The library will need to be rescanned.
brūhi Cloud
Section titled “brūhi Cloud”Error: ICECAST_SOURCE_PASSWORD must be explicitly configured in production mode
Section titled “Error: ICECAST_SOURCE_PASSWORD must be explicitly configured in production mode”Cause: ICECAST_SOURCE_PASSWORD is missing or commented out in your .env file while running in production mode.
Fix: Ensure your .env contains explicit passwords for Icecast:
ICECAST_SOURCE_PASSWORD=your_secure_passwordICECAST_ADMIN_PASSWORD=your_secure_passwordICECAST_RELAY_PASSWORD=your_secure_passwordOr auto-generate them:
echo "ICECAST_SOURCE_PASSWORD=$(openssl rand -hex 16)" >> .envecho "ICECAST_ADMIN_PASSWORD=$(openssl rand -hex 16)" >> .envecho "ICECAST_RELAY_PASSWORD=$(openssl rand -hex 16)" >> .envdocker compose up -dError: fatal: not a git repository
Section titled “Error: fatal: not a git repository”Cause: The ~/bruhi-cloud directory on production servers is not a Git repository — it was initialized by install.sh.
Fix: Use curl to refresh files instead of git pull:
cd ~/bruhi-cloudcurl -fsSL https://raw.githubusercontent.com/bruhi-technologies/bruhi-deploy/main/docker-compose.yml -o docker-compose.ymldocker compose pulldocker compose up -dError: Permission denied: /tmp/bruhi-audio/api_token
Section titled “Error: Permission denied: /tmp/bruhi-audio/api_token”Cause: Docker mounted the bruhi_audio_sockets volume with root ownership, preventing the internal unprivileged process from writing tokens.
Fix: Update to the latest image tag (v0.10.1+), or fix socket permissions manually:
docker compose exec bruhi-cloud chown -R bruhi:bruhi /tmp/bruhi-audiodocker compose restart bruhi-cloudContainer keeps restarting (Crash Loop)
Section titled “Container keeps restarting (Crash Loop)”Steps:
# Check startup logs for error detailsdocker compose logs --tail=50 bruhi-cloud
# Check container exit statusdocker compose ps| Common Cause | Resolution |
|---|---|
| Missing required env variable | Check .env — ensure BRUHI_URL, DOMAIN, and passwords are set |
| Port 8000 already bound | Run sudo lsof -i :8000 on host; change PORT= in .env |
| Database migration error | Run docker compose exec bruhi-cloud sqlite3 /app/data/bruhi.db "PRAGMA integrity_check;" |
WebRTC connection drops after a few seconds
Section titled “WebRTC connection drops after a few seconds”Symptom: DJ clicks “Go Live” and the stream appears active, but audio drops after 10–30 seconds.
Steps:
- Ensure the brūhi dashboard is served over HTTPS (required for WebRTC audio streams in all browsers).
- Check that firewall allows WebRTC UDP return traffic (
49152–65535). - Ensure server clock and client browser are synchronized.
bruhi-audio engine runner not starting
Section titled “bruhi-audio engine runner not starting”Symptom: GET /api/stations/{id}/logs shows engine runner errors immediately after station start.
| Symptom | Cause | Fix |
|---|---|---|
Could not connect to bruhi-audio API | Daemon not listening on internal port 7700 | Check container logs: docker compose logs bruhi-cloud |
Could not open output to Icecast | Incorrect Icecast password or host port | Check ICECAST_SOURCE_PASSWORD and output settings |
harbor: Address already in use | Harbor port conflict | Verify harbor port availability (8100+) |
Stream shows as offline even though DJ is live
Section titled “Stream shows as offline even though DJ is live”Symptom: DJ is connected and on air in the dashboard, but listeners cannot connect to the stream.
Steps:
- Verify the Icecast mountpoint is active by opening
http://your-server:8010/status.xslin a browser. - Check that the Icecast port (
8010) is open in your cloud firewall / AWS security group. - Confirm the output settings in Admin → Stations → Outputs match your configured
ICECAST_SOURCE_PASSWORD.
Dashboard shows “Connection refused” after deploy
Section titled “Dashboard shows “Connection refused” after deploy”Symptom: Opening http://your-server:8000 shows a connection error immediately after docker compose up.
Cause: The FastAPI server and Rust audio engine take a few seconds to complete startup and health checks.
Fix:
# Check health statusdocker compose ps# Inspect application logsdocker compose logs bruhi-cloud