Server běžel na starém Debianu, WordPress měl verzi, u které si ani nepamatuju číslo, PHP bylo tak staré, že novější pluginy odmítaly fungovat. Klasická situace – běží to, nesahej na to. Až do chvíle, kdy to přestane běžet.
Výchozí stav
Typický scénář „zapomenutého serveru”:
- Debian několik major verzí pozadu
- PHP verze, která už dávno nemá security updaty
- WordPress s pluginy, které na novém PHP padají
- Stare weby na php 5.6
- Žádný swap, MySQL žere celé CPU
- fail2ban nastavený, ale s chybnou konfigurací VPN subnetu
Klasicky by upgrade znamenal víkend plný stresu, záloha → upgrade → oprava → další oprava → rollback → znova. Tentokrát jsem to udělal jinak.
AI jako upgrade asistent
Celý upgrade jsem řídil přes Claude Code – AI asistent, který se připojí na server přes SSH a provádí příkazy. Workflow:
# Claude Code se připojil na server a:
# 1. Provedl bezpečnostní audit (Lynis)
# 2. Zkontroloval stav všech služeb
# 3. Upgradoval systém
# 4. Opravil konfigurace, které po upgradu nefungovaly
# 5. Ověřil, že vše běží
Nejcennější bylo, že Claude uměl číst logy v reálném čase a reagovat na problémy okamžitě. Když po upgradu spadl OpenVPN kvůli chybějícímu LimitNPROC=infinity, Claude to sám detekoval z logu a opravil.
Co se muselo řešit
1. Wordfence nekompatibilní s PHP 8.3
Nejhorší problém. Wordfence způsoboval fatal error v wfUtils.php a zablokoval celý wp-admin. Řešení:
# Wordfence padal při každém pokusu o deaktivaci
# Musel se deaktivovat přes databázi:
wp db query "UPDATE wp_options SET option_value = ...
WHERE option_name = active_plugins;"
# Plugin přejmenován na wordfence.disabled
Poučení: Wordfence na PHP 8.3 nefunguje spolehlivě. Pro malý osobní server je fail2ban + správná konfigurace Apache dostačující.
2. Deprecated funkce v pluginech
jquery-colorbox používal dynamic properties, které jsou v PHP 8.2+ deprecated. Plugin stále funguje, ale sype warningy. Zatím neškodné, ale časem bude třeba nahradit nebo opravit.
3. OpenVPN po upgradu
openvpn_execve: unable to fork: Resource temporarily unavailable
Řešení bylo přidat do systemd service limity:
# systemctl edit openvpn@
[Service]
LimitNPROC=infinity
4. Dovecot SSL
Po upgradu OpenSSL odmítal staré DH parametry (klíč příliš malý). Řešení: vygenerovat nové DH parametry s větší délkou klíče.
5. fail2ban a VPN
fail2ban měl špatnou masku VPN subnetu (/32 místo /24) – VPN klienti se po pár neúspěšných pokusech zamykali sami sobě. Opraveno + přidán dynamický whitelist pro VPN klienty přes client-connect skript.
Aktuální stav
- Debian 12 (bookworm) – aktuální stable
- PHP 8.3 – aktuální, se všemi security patchi
- WordPress 6.9 – nejnovější verze
- MariaDB 10.11
- AIDE – monitoring integrity souborů
- Lynis – pravidelný bezpečnostní audit
- ClamAV – antivirus integrovaný do Postfixu
- Logwatch – denní reporty emailem
Co by bez AI trvalo celý víkend
S Claude Code jsem celý upgrade + hardening + audit zvládl za jeden večer. AI přitom:
- Četl logy a identifikoval problémy dřív, než jsem si jich všiml
- Znal řešení pro každý error message okamžitě
- Editoval konfigurační soubory přímo na serveru
- Ověřoval, že služby po změnách běží
- Spustil bezpečnostní audit a implementoval doporučení
Největší výhoda: žádné googlení. Místo hledání „dovecot dh key too small debian 12″ na Stack Overflow jsem prostě řekl „dovecot nefunguje po upgradu” a Claude to vyřešil.
Upgrade serveru přestal být noční můra. Je to prostě konverzace.
Žádný komentář do teď