Something not working? Start with the Health Check, then check common issues below.
sudo ./conduit-deploy.sh → Health Check first. It checks everything automatically and tells you what's wrong.cd /opt/conduit && sudo docker compose pshttps://matrix.example.com/_matrix/client/versions in a browserexample.com (not matrix.example.com!)chat.example.comexample.com).
Don't enter the full subdomain there — the script adds the subdomain for you.
Otherwise you'll end up with matrix.matrix.example.com!Caddy gets Let's Encrypt certificates automatically. If it fails:
# Check Caddy logs for errors cd /opt/conduit && sudo docker compose logs caddy --tail 50
sudo docker compose restart caddyIf Health Check shows HTTPS failed (HTTP 000000), Docker containers likely can't reach the internet — so Caddy can't get TLS certificates.
# Check if network interface is bound to firewalld sudo firewall-cmd --zone=public --list-interfaces # If empty — that's the problem! Fix: sudo firewall-cmd --zone=public --add-interface=$(ip route show default | awk '{print $5}') --permanent # Check masquerade (Docker needs this for NAT) sudo firewall-cmd --query-masquerade # If "no": sudo firewall-cmd --permanent --add-masquerade # Apply changes sudo firewall-cmd --reload # Test Docker internet access docker run --rm alpine wget -qO- --timeout=5 http://ifconfig.me/ip # If it works — restart Caddy to get certificates sudo docker restart caddy
The latest version of the installer detects and fixes this automatically. Update: cd ~/conduit-deploy && git pull
# Check TURN ports are open sudo firewall-cmd --list-ports | grep -E "3478|5349" # Check Coturn is running cd /opt/conduit && sudo docker compose logs coturn --tail 20 # Check TLS certs are synced ls -la /opt/conduit/certs/
If turn.crt is missing, restart to trigger cert sync: sudo docker compose restart
sudo firewall-cmd --list-ports | grep 8448https://federationtester.matrix.orgcurl -s https://example.com/.well-known/matrix/serverA kernel or security update was installed. Your server is still running fine — nothing is broken. Reboot when it's convenient:
sudo reboot
Services restart automatically after reboot. The server never reboots on its own.
sudo grep REGISTRATION_TOKEN /opt/conduit/.env
Your token is stored in .env and CREDENTIALS.txt (if not deleted). The token is only needed if you enable self-registration via the Admin Room.
Registration is closed by default for security. The token is only used if you enable self-registration via the Admin Room:
@conduit:example.com allow-registration true
For normal account creation, use the Admin Room instead. See the Admin Room guide.
sudo docker logs conduit# All services (live) cd /opt/conduit && sudo docker compose logs -f # Single service sudo docker compose logs -f conduit sudo docker compose logs -f caddy sudo docker compose logs -f coturn
If your SSH disconnects while using the script, it's usually an idle timeout — not the script itself.
Fix it by adding this to your local ~/.ssh/config:
Host *
ServerAliveInterval 15
ServerAliveCountMax 10
Or connect with: ssh -o ServerAliveInterval=15 user@your-server