Obsah návodu
Připravte nový server, doménu a záchranný přístup
Postup počítá s novým Ubuntu 24.04, veřejnou IPv4, SSH na portu 22, počátečním účtem se sudo a vlastní doménou. Klíč vytvořte před založením instance. Pro již vytvořený prázdný server je níže alternativní větev přes fungující přístup. Příkazy klienta běží v Bash na Linuxu, macOS či WSL, serverové příkazy uvnitř SSH. Pokud cesty patří existujícímu webu, zastavte se.
Nahraďte 203.0.113.10 skutečnou IP a app.example.com vlastním názvem. Účet ubuntu nahraďte výchozím účtem poskytovatele. Před úpravami otevřete záchrannou konzoli. Ověřte dokumentaci firewallu image; Oracle Ubuntu vyžaduje jinou větev než UFW.
Vytvořte klíč a ověřte první spojení
Na počítači vytvořte vlastní klíč s přístupovou frází. Existující soubor nepřepisujte; případný nový název použijte všude. Soukromý soubor zůstává na počítači, .pub je veřejný.
mkdir -p ~/.ssh
ssh-keygen -t ed25519 -f ~/.ssh/ubuntu_vps
cat ~/.ssh/ubuntu_vps.pubNový VPS: nyní vytvořte Ubuntu 24.04 se zobrazeným veřejným klíčem v poli SSH-key. Potvrďte uživatelské jméno a přeskočte následující příkazy pro existující server.
Již vytvořený prázdný VPS: ponechte původní SSH otevřené. Z dalšího lokálního terminálu přeneste veřejný klíč pomocí dosavadního přístupu. existing_vps_key nahraďte stávajícím soukromým klíčem. Při přihlášení heslem nebo agentem vynechte parametr -i ~/.ssh/existing_vps_key; neměňte kvůli tomu autentizační politiku.
scp -i ~/.ssh/existing_vps_key ~/.ssh/ubuntu_vps.pub ubuntu@203.0.113.10:ubuntu-vps-admin.pubV původní serverové relaci ověřte veřejný klíč a připojte jej k authorized_keys svého počátečního účtu. Připojení zachovává existující klíče; nový řádek řeší i soubor bez koncového odřádkování. Nemáte-li funkční přístup, nejprve použijte obnovu poskytovatele.
if ssh-keygen -lf ~/ubuntu-vps-admin.pub; then
mkdir -p ~/.ssh
chmod 700 ~/.ssh
printf '\n' >> ~/.ssh/authorized_keys
cat ~/ubuntu-vps-admin.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
fiPro obě větve před přijetím prvního spojení porovnejte otisk s veřejným host key v důvěryhodné konzoli. Pro Ed25519 spusťte v konzoli:
sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pubNa počítači ověřte nové přihlášení; dosavadní přístup zatím nezavírejte.
ssh -i ~/.ssh/ubuntu_vps ubuntu@203.0.113.10Z dalšího lokálního terminálu nahrajte veřejný klíč pro správce vytvářeného v dalším kroku. Opakovaný přenos tohoto dočasného souboru je v pořádku.
scp -i ~/.ssh/ubuntu_vps ~/.ssh/ubuntu_vps.pub ubuntu@203.0.113.10:ubuntu-vps-admin.pubVytvořte samostatného správce
Na serveru nejprve spusťte getent passwd deploy. Neměl by vrátit účet. Pokud existuje, zvolte nepoužité jméno a nahraďte i všechny domovské cesty a názvy skupin. Jinak byste mohli přepsat klíče jiného uživatele.
Ověřte image, prohlédněte aktualizace a vytvořte správce se silným heslem pro sudo. Příkazy install nastaví vlastníka a omezená oprávnění klíče.
cat /etc/os-release
free -h
df -h /
sudo apt update
sudo apt upgrade
sudo adduser deploy
sudo usermod -aG sudo deploy
sudo install -d -m 700 -o deploy -g deploy /home/deploy/.ssh
sudo install -m 600 -o deploy -g deploy ~/ubuntu-vps-admin.pub /home/deploy/.ssh/authorized_keysV dalším terminálu na počítači otevřete nové připojení:
ssh -i ~/.ssh/ubuntu_vps deploy@203.0.113.10Uvnitř nové relace ověřte sudo. Po přijetí hesla má vrátit root. Pokračujte v této relaci teprve po úspěchu obou kontrol, původní přístup ponechte.
sudo whoamiNainstalujte Nginx a použijte správnou větev firewallu
Na serveru nainstalujte a zapněte Nginx. Síťový firewall poskytovatele i firewall hosta ovlivňují dostupnost; při změnách zachovejte konzoli a fungující SSH.
sudo apt install nginx
sudo systemctl enable --now nginxU poskytovatele povolte TCP 22 z místa správy a TCP 80/443 návštěvníkům. Používáte-li jiný SSH port, zachovejte jej. Síťová pravidla neotevřou port blokovaný na hostu.
Oracle Cloud Ubuntu: následující UFW blok celý přeskočte. UFW může narušit nezbytná pravidla image včetně iSCSI boot a block volumes a zabránit spuštění. Ponechte dodaná iptables pravidla i balíčky firewallu; nastavte OCI security lists/NSG a zdokumentovaná pravidla hosta pro HTTP/HTTPS.
Ostatní nové Ubuntu image: UFW větev použijte jen tehdy, pokud ji poskytovatel podporuje a image nevyžaduje jinou řízenou konfiguraci. Povolte skutečný SSH port před zapnutím; příklad používá 22.
sudo apt install ufw
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbosePo kterékoli větvi otestujte nové SSH přihlášení. Otevřená relace sama nový přístup nepotvrzuje. Před žádostí o certifikát musí projít i vnější HTTP kontrola níže.
Zveřejněte stránku v samostatné konfiguraci Nginx
Na serveru vytvořte nový kořen webu a konfiguraci. Uvnitř bloku nahraďte hostname. Ponechte citované značky EOF, aby shell nerozbalil proměnné Nginx jako $uri.
sudo install -d -m 755 /var/www/first-site
printf '%s\n' '<!doctype html><html lang="cs"><title>První nasazení</title><h1>Tuto stránku poskytuje Ubuntu VPS</h1></html>' | sudo tee /var/www/first-site/index.html
sudo tee /etc/nginx/sites-available/first-site >/dev/null <<'EOF'
server {
listen 80;
listen [::]:80;
server_name app.example.com;
root /var/www/first-site;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
EOF
sudo ln -s /etc/nginx/sites-available/first-site /etc/nginx/sites-enabled/first-site
sudo nginx -tPouze pokud nginx -t uspěje, načtěte konfiguraci znovu:
sudo systemctl reload nginxNa svém počítači vyžádejte doménu přímo z IP ještě před změnou DNS. Očekávejte vlastní nadpis, ne výchozí stránku Nginx.
curl --resolve app.example.com:80:203.0.113.10 http://app.example.com/Nastavte DNS a vystavte certifikát
Vytvořte A záznam domény s IPv4 VPS. AAAA přidávejte jen s funkční IPv6; chybný záznam může odvést návštěvníka i ověření certifikátu jinam. Příklad používá přímé DNS bez proxy.
Na počítači otevřete http://app.example.com/ bez --resolve. Až vrací váš web, na serveru nainstalujte Certbot z archivu Ubuntu s pluginem Nginx. Je potřeba repozitář Universe; chybu nenalezeného balíčku vyřešte před pokračováním.
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d app.example.com --redirect
sudo nginx -t
sudo certbot renew --dry-run
systemctl list-timers --all certbot.timerDokončete výzvy k e-mailu a podmínkám. Certbot upraví konfiguraci a přesměruje HTTP na HTTPS. Ověřte plán obnovy; není-li timer aktivní, použijte sudo systemctl enable --now certbot.timer. Pro HTTP ověřování i obnovu ponechte port 80 dostupný.
Ověřte web zvenčí a po restartu
Na počítači ověřte přesměrování, certifikát i obsah. HTTP má přesměrovat na HTTPS a zabezpečený požadavek zobrazit nadpis. Nepřidávejte curl -k, který skryje chyby certifikátu.
curl -I http://app.example.com/
curl -I https://app.example.com/
curl -fsS https://app.example.com/Ještě v testovacím provozu spusťte na serveru sudo reboot. Po návratu se připojte jako deploy, ověřte systemctl is-active nginx a zopakujte vnější HTTPS požadavek. Restart záměrně ukončí SSH; při neúspěšném návratu použijte konzoli.
Vyřešte konkrétní chybu a připravte obnovu
Tabulku lze posouvat vodorovně.
| Příznak | Co zkontrolovat |
|---|---|
| SSH timeout | Adresu, oba firewally a konzoli |
| Permission denied (publickey) | Účet, klíč a oprávnění authorized_keys |
| Výchozí stránka Nginx | Cíl DNS, server_name a zapnutý site |
| Chyba certifikátu | Veřejné A/AAAA a port 80 |
| Nginx po změně nefunguje | sudo nginx -t a sudo journalctl -u nginx -n 50 --no-pager |
Přístup řešte podle konkrétní SSH chyby. Uchovávejte soubory webu, konfiguraci Nginx, DNS a postup obnovy mimo VPS. Obnovu ověřte na jiném stroji; případné kopie soukromých klíčů certifikátů chraňte.
Pro začátek použijte nácvik obnovy souborů. Neobsahuje celý web, databázi ani certifikáty. Přidejte dohled dostupnosti a expirace certifikátů; dnešní úspěch nehlídá příští obnovu.
Postup nasazuje statické soubory. Databáze či aplikační runtime potřebuje vlastní konfiguraci, zálohu a kontrolu startu. Jeho zdroje změřte podle výběru konfigurace.
Postup vychází z dokumentace uvedené v anglické verzi a cílí na nový Ubuntu 24.04 VPS. Nejde o test vašeho konkrétního serveru. Každý krok přizpůsobte skutečnému image, portům a účtům.
Časté otázky
Mohu příkazy použít na běžícím webu?
Nejprve na samostatném testovacím VPS. Postup vytváří soubory, mění firewall a nechává Certbot upravit Nginx; existující prostředí vyžaduje kontrolu současných služeb a obnovy.
Nainstaluje to WordPress nebo databázi?
Ne. Výsledkem je statický HTTPS web. Až funguje, přidejte požadovaný runtime a samostatně otestujte jeho spuštění i obnovu dat.
Proč znovu ověřovat SSH po změně firewallu?
Již otevřená relace může zůstat dostupná i při chybě blokující nové spojení. Ověřte nový login a zachovejte konzoli pro obnovu.