Migrace pěti webů z VPS na vlastní server: Proxmox, Cloudflare a provoz bez měsíčních poplatků

Během jednoho víkendu jsem přestěhoval pět webů na Drupalu z pronajatého VPS na vlastní server. Domácí připojení přitom nemá veřejnou IPv4 adresu. Weby jsou dnes aktuální, zabezpečené a jejich provoz nestojí nic kromě elektřiny. Popisuji výchozí stav, rozhodnutí, postup a co jsem se naučil.

Výchozí stav

Pět webů na Drupalu 10 běželo na pronajatém virtuálním serveru s Debianem. Na stejném stroji běžel i poštovní server pro adresy info@ a DNS záznamy spravoval registrátor domén. Server fungoval, ale při inventuře jsem našel víc problémů, než by člověk čekal:

  • jádro Drupalu bez kritické bezpečnostní opravy,
  • moduly nahrané ručně mimo Composer, takže se neaktualizovaly,
  • téma vzhledu ve verzi, která už nemá podporu,
  • správce databáze a správce pošty veřejně dostupné na všech doménách,
  • přihlášení na server heslem.

Cíle

  1. Provoz bez měsíčních poplatků.
  2. Plná kontrola nad serverem, daty a zálohami.
  3. Vyšší bezpečnost než před migrací.
  4. Žádná ztráta dat a funkční e-mailové adresy info@ na všech doménách.

Hlavní překážka: CGNAT

Můj poskytovatel internetu přiděluje jen privátní IPv4 adresu za takzvaným CGNAT. Z internetu se tedy na domácí síť přes IPv4 nedostanete a klasické přesměrování portů nefunguje. Veřejné je jen připojení přes IPv6, jenže to dodnes nemá velká část návštěvníků.

Řešením je Cloudflare v bezplatném tarifu. Návštěvníci se připojují ke Cloudflare přes IPv4 i IPv6 a Cloudflare pak požadavek předá mému serveru přes IPv6. Podrobně to popisuji v článku Domácí server za CGNAT: IPv6, Cloudflare a firewall MikroTik.

Architektura

Server běží doma na Proxmoxu jako lehký kontejner LXC s Debianem 13. Na internet ho připojuje router MikroTik, který na web pouští jen provoz z adres Cloudflare. DNS, šifrování a příchozí poštu řeší Cloudflare, odchozí poštu Gmail.

Schéma architektury: návštěvník, Cloudflare, router MikroTik a kontejner LXC na Proxmoxu; e-mail přes Cloudflare Email Routing do Gmailu

Web jde od návštěvníka přes Cloudflare a router až do kontejneru na Proxmoxu. Pošta pro info@ jde přes Cloudflare do Gmailu a formuláře webů odesílají přes Gmail SMTP.

Postup v deseti krocích

  1. Inventura starého serveru: weby, databáze, certifikáty, poštovní schránky, cron úlohy a servisní skripty.
  2. Příprava nového serveru: kontejner LXC, Apache s PHP-FPM, MariaDB.
  3. Přenos kódu, databází, nahraných souborů a certifikátů.
  4. Bezpečnostní aktualizace: jádro Drupalu, moduly pod Composer, nová verze tématu.
  5. Zabezpečení serveru: SSH jen klíčem, fail2ban, omezení administrace, bezpečnostní audit.
  6. Test všech webů přes soubor hosts, ještě před změnou DNS.
  7. DNS na Cloudflare: převod záznamů, dočasné vypnutí DNSSEC, změna nameserverů u registrátora.
  8. E-mail: přesměrování info@ do Gmailu a odesílání formulářů přes Gmail SMTP.
  9. Přepnutí webů na nový server a omezení firewallu jen na Cloudflare.
  10. DNSSEC znovu zapnutý s klíči od Cloudflare.

Výsledky

OblastPřed migracíPo migraci
Měsíční náklady na hostingpronájem VPS0 Kč (jen elektřina)
Jádro Drupalu10.6.15, bez kritické opravy10.6.20
Téma Bootstrap53.x bez podpory4.0.8
Modulyčást nahraná ručněvšechny pod Composerem
Přihlášení na serverheslemjen SSH klíčem
Administrace databázeveřejně na všech doménáchjen z domácí sítě
Přístup na server z internetupřímojen přes Cloudflare
DNSSECanoano, s klíči Cloudflare

Všech pět webů jsem přepnul během jednoho dopoledne. Data se neztratila a výpadek byl jen krátký, během přepínání DNS.

Co jsem se naučil

  • Inventura se vyplatí. Nejvíc práce nebylo stěhování, ale problémy nalezené cestou. Bez inventury bych je přenesl i na nový server.
  • DNSSEC se musí vypnout před změnou nameserverů. Jinak doména přestane fungovat všude, kde se podpisy ověřují.
  • IPv6 obchází NAT. Zařízení s veřejnou IPv6 adresou je bez firewallu dostupné z celého internetu. Na routeru jsem takovou díru našel a opravil.
  • Testovat před přepnutím. Soubor hosts umožní vyzkoušet nový server pod skutečnou doménou, aniž by to viděl kdokoli jiný.
  • Snapshot před každým krokem. Kontejner v Proxmoxu jde vrátit do předchozího stavu během pár sekund.

Podrobněji v dalších článcích

Potřebujete přestěhovat nebo zabezpečit váš web či server? Napište mi.