====== Coolify SSH Key Setup ======
**Status:** Resolved\\
**Date:** 2026-05 (initial setup)\\
**Affects:** [[folkzone:services:coolify|Coolify]]
Full incident summary. Each root cause has its own atomic page.
===== Root Causes (atomic pages) =====
- [[folkzone:troubleshooting:coolify_ssh_key_ui_only|Private keys must be added via Coolify UI, not directly to database]]
- [[folkzone:troubleshooting:coolify_ssh_docker_gateway|Correct host IP is the Docker network gateway (172.18.0.1), not LAN IP]]
- [[folkzone:troubleshooting:coolify_root_ssh|Coolify requires root SSH access — PermitRootLogin prohibit-password]]
- [[folkzone:troubleshooting:coolify_fail2ban|fail2ban bans the Coolify container IP after repeated failures]]
===== Quick Fix Sequence =====
**1. Generate fresh SSH key:**
sudo ssh-keygen -t ed25519 -a 100 -f /data/coolify/ssh/keys/id_coolify -q -N '' -C 'root@coolify'
**2. Add to authorized_keys (both user and root):**
echo "" >> ~/.ssh/authorized_keys
sudo sh -c 'echo "" >> /root/.ssh/authorized_keys'
**3. Allow root SSH:**
sudo sed -i 's/^PermitRootLogin no/PermitRootLogin prohibit-password/' /etc/ssh/sshd_config
sudo systemctl restart sshd
**4. Set correct IP in database:**
docker exec coolify-db psql -U coolify -d coolify \
-c "UPDATE servers SET ip = '172.18.0.1', \"user\" = 'root' WHERE name = 'localhost';"
**5. Add private key through Coolify UI:** Settings → Private Keys → Add Private Key.
**6. Unban container IP if needed:**
sudo fail2ban-client set sshd unbanip
**7. Verify:**
docker exec coolify ssh -o StrictHostKeyChecking=no \
-i /var/www/html/storage/app/ssh/keys/id_coolify root@172.18.0.1 'echo success'
===== See Also =====
* [[folkzone:troubleshooting:start|Homelab Troubleshooting Index]]
* [[folkzone:services:coolify|Coolify]]
* [[start|Return to wiki home]]