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.

Trackback

Žádný komentář do teď

Přidejte svůj komentář