Jak podpiąć domenę pod VPS i włączyć HTTPS za darmo
Jak podpiąć domenę pod VPS: dodaj rekordy A, sprawdź DNS (dig, nslookup), otwórz porty 80 i 443, a potem włącz darmowy HTTPS z Let's Encrypt i Certbotem.
Z tego poradnika dowiesz się, jak podpiąć domenę pod VPS, tak aby pod adresami example.com i www.example.com otwierała się twoja strona, oraz jak włączyć HTTPS z darmowym certyfikatem Let's Encrypt. [1] Poradnik przyda się każdemu, kto ma domenę i VPS z Ubuntu 24.04 LTS, na którym działa nginx lub Apache, a DNS domeny obsługuje rejestrator lub Cloudflare. Zamiast example.com i 203.0.113.10 wpisuj własną domenę i adres swojego serwera.
Czego potrzebujesz, zanim zaczniesz
Będą ci potrzebne cztery rzeczy:
- Dostęp do DNS domeny – u rejestratora albo w Cloudflare, jeśli domena korzysta z serwerów nazw Cloudflare.
- Dostęp przez SSH z uprawnieniami sudo – z logowaniem kluczem SSH zamiast hasła roota, jak opisujemy na naszej liście kontrolnej zabezpieczania SSH.
- Serwer nginx lub Apache – zainstalowany i uruchomiony.
- Publiczny adres IPv4 serwera – znajdziesz go w szczegółach serwera u swojego dostawcy. Każdy VPS Linux w StealthRDP ma dedykowany adres IPv4.
IPv6 jest opcjonalny: rekord AAAA wiąże nazwę z adresem IPv6, więc dodawaj rekordy AAAA tylko wtedy, gdy serwer ma taki adres. [2] Dopiero wybierasz serwer? Pomoże ci nasz poradnik o doborze VPS do hostingu stron.
Jak podpiąć domenę pod VPS za pomocą rekordów DNS
Aby podpiąć domenę pod VPS, utwórz rekordy A, które kierują example.com i www.example.com na adres IPv4 serwera. [2] Zmiany wprowadź tam, gdzie znajduje się strefa DNS domeny.
Jeśli pod domeną działa już strona lub poczta, najpierw zanotuj istniejące rekordy. Zmieniaj tylko rekordy A, AAAA i CNAME dla @ i www, a pozostałych, takich jak rekordy MX dla poczty, nie ruszaj.
1. Dodaj rekordy A dla domeny głównej i www
Rekord A wiąże nazwę z adresem IPv4, a @ w polu nazwy oznacza wierzchołek strefy (zone apex), czyli samą domenę example.com. [2]
| Typ | Nazwa | Wartość | Status proxy (tylko Cloudflare) |
|---|---|---|---|
| A | @ |
203.0.113.10 |
DNS only (na razie) |
| A | www |
203.0.113.10 |
DNS only (na razie) |
| AAAA | @ i www |
Adres IPv6 serwera, tylko jeśli serwer go ma | DNS only (na razie) |
Usuń wszystkie inne rekordy A i AAAA dla tych nazw, na przykład te, które kierują na stronę parkingową rejestratora.
2. Albo skieruj www rekordem CNAME
Rekord CNAME wiąże nazwę z inną nazwą zamiast z adresem. [2] Rekord CNAME dla www wskazujący na example.com zawsze prowadzi tam, dokąd prowadzi rekord domeny głównej, więc po zmianie adresu serwera edytujesz tylko jeden rekord. Dla www użyj albo rekordu A, albo CNAME – nie obu naraz.
W Cloudflare zostaw oba rekordy w trybie DNS only (szara chmurka), dopóki certyfikat nie zostanie wystawiony; powód wyjaśniamy w części o Cloudflare.
3. Zrozum TTL, zanim zaczniesz czekać na zmiany w DNS
TTL (time to live) określa, jak długo resolwery DNS przechowują odpowiedź w pamięci podręcznej, zanim zapytają ponownie, więc stara odpowiedź może być jeszcze zwracana, dopóki jej TTL nie wygaśnie. [2] W Cloudflare rekordy z włączonym proxy mają domyślnie TTL Auto, czyli 300 sekund, a rekordy DNS only – wartość, którą wybierzesz. [2] Inni dostawcy pokazują domyślną wartość w kolumnie TTL.
4. Sprawdź rekordy poleceniem dig lub nslookup
Zapytaj o obie nazwy publiczny resolwer, na przykład Google Public DNS pod adresem 8.8.8.8: w Linuksie i macOS użyj dig, a w Windows nslookup. [3]
dig -t A example.com @8.8.8.8
dig -t A www.example.com @8.8.8.8nslookup -type=A example.com 8.8.8.8
nslookup -type=A www.example.com 8.8.8.8Dla obu nazw odpowiedź powinna zawierać 203.0.113.10; aby sprawdzić IPv6, zapytaj o AAAA zamiast A. Jeśli odpowiedź jest inna, zajrzyj do części o typowych problemach poniżej.
Otwórz porty 80 i 443 w UFW
HTTP działa zwykle na porcie TCP 80, a HTTPS na porcie 443; Certbot wymaga, aby port 80 był dostępny z internetu. [4] Po instalacji UFW jest wyłączony, a jego domyślna polityka blokuje połączenia przychodzące. Włączenie zapory może zerwać istniejące połączenia, na przykład twoją sesję SSH, a jeśli włączasz ją przez SSH, UFW poprosi o potwierdzenie. [5]
Zezwól na SSH, zanim uruchomisz sudo ufw enable, bo inaczej możesz odciąć sobie dostęp do serwera. Jeśli SSH nasłuchuje na innym porcie niż 22, zezwól zamiast tego na ten port.
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw statusJeśli wolisz zezwalać na profile aplikacji zamiast na numery portów, polecenie sudo ufw app list pokaże profile dostępne na serwerze, a sudo ufw app info – porty, które otwiera każdy z nich; nazwy ze spacjami ujmij w cudzysłów. [5] Gdy w UFW jest włączona obsługa IPv6 (to ustawienie domyślne), każda reguła obejmuje IPv4 i IPv6. [5] Jeśli dostawca ma przed serwerem własną zaporę, otwórz na niej te same porty. [4]
Uruchom stronę example.com w nginx lub Apache
Zanim dodasz HTTPS, skonfiguruj example.com na serwerze WWW, bo Certbot oczekuje strony, która już odpowiada przez zwykły HTTP. [4]
nginx: jeden blok server dla obu nazw
W Ubuntu każdy blok server nginx ma własny plik w /etc/nginx/sites-available, a włącza się go dowiązaniem symbolicznym w /etc/nginx/sites-enabled; w wierszu server_name podaj obie nazwy. [6]
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /srv/example.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}sudo mkdir -p /srv/example.com/html
echo "example.com works" | sudo tee /srv/example.com/html/index.html
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginxApache: odpowiednik w postaci wirtualnego hosta
W Apache wirtualny host w /etc/apache2/sites-available używa dyrektywy ServerName dla example.com i ServerAlias dla www.example.com; utwórz go jako kopię domyślnego pliku i włącz poleceniem a2ensite. [7]
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com
</VirtualHost>Restart Apache wpływa na wszystkie strony na serwerze. Jeśli działają na nim inne strony, najpierw sprawdź nowy plik i nie zamykaj sesji SSH.
sudo mkdir -p /var/www/example.com
echo "example.com works" | sudo tee /var/www/example.com/index.html
sudo a2ensite example.com
sudo systemctl restart apache2.serviceOtwórz http://example.com i http://www.example.com: pod oboma adresami powinna się wyświetlić strona testowa.
Włącz darmowy HTTPS z Let's Encrypt i Certbotem
Certbot uzyskuje certyfikat od Let's Encrypt i potrafi skonfigurować nginx lub Apache tak, aby z niego korzystał. [4]
1. Zainstaluj Certbota jako pakiet snap
Strona Certbota zdecydowanie zaleca większości użytkowników instalację z pakietu snap. Wymaga ona snapd; najpierw usuń ewentualny pakiet Certbota zainstalowany przez apt, aby polecenie certbot uruchamiało wersję ze snapa. [4]
sudo apt-get remove certbot
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/local/bin/certbot2. Uzyskaj certyfikat i włącz HTTPS
Wtyczka dla twojego serwera WWW uzyskuje certyfikat i zmienia konfigurację tak, aby serwer z niego korzystał – HTTPS włączasz więc w jednym kroku. [4]
sudo certbot --nginxsudo certbot --apacheOdpowiedz na pytania Certbota i podaj obie nazwy – jeden certyfikat może obejmować kilka nazw. [1] Jeśli wolisz samodzielnie zmienić konfigurację, uruchom sudo certbot certonly --nginx – to polecenie tylko uzyskuje certyfikat. [4] Potem otwórz https://example.com i sprawdź, czy przeglądarka pokazuje ikonę kłódki. [4]
3. Przetestuj automatyczne odnawianie
Certbot instaluje zadanie cron lub timer systemd, dzięki któremu certyfikaty są odnawiane przed wygaśnięciem, więc nie musisz ponownie uruchamiać Certbota, chyba że zmienisz konfigurację. [4] Przetestuj odnawianie teraz i ponownie po każdej zmianie w DNS, zaporze lub Cloudflare:
sudo certbot renew --dry-run
systemctl list-timersOkres ważności certyfikatów Let's Encrypt
Domyślne certyfikaty Let's Encrypt są ważne 90 dni. [1] Od 10 lutego 2027 certyfikaty wystawiane lub odnawiane przez Let's Encrypt będą domyślnie ważne 64 dni; ostatnie certyfikaty 90-dniowe mają wygasnąć 11 maja 2027, a na 2028 rok Let's Encrypt planuje domyślny okres ważności 45 dni. [8] Jeśli masz własne zadanie cron ze stałym interwałem, Let's Encrypt zaleca, aby zamiast tego odnawiać certyfikat po upływie mniej więcej dwóch trzecich okresu ważności i sprawdzić skrypty pod kątem wpisanych na sztywno wartości, takich jak 60, 80 czy 83. [8]
Używaj trybu Full (strict), gdy proxy Cloudflare jest włączone
Gdy proxy Cloudflare jest włączone, ustaw tryb szyfrowania SSL/TLS na Full (strict). Tryb określa, jak działa połączenie odwiedzających z Cloudflare i połączenie Cloudflare z twoim serwerem. [9]
| Tryb | Połączenie Cloudflare z serwerem | Weryfikacja certyfikatu serwera |
|---|---|---|
| Flexible | Zwykły HTTP, bez szyfrowania | Nie |
| Full | Ten sam protokół, którego użył odwiedzający | Nie |
| Full (strict) | Ten sam protokół, którego użył odwiedzający | Tak |
| Strict (SSL-Only Origin Pull) | Zawsze HTTPS | Tak |
Unikaj trybu Flexible: przeglądarka pokazuje HTTPS, ale ruch między Cloudflare a twoim serwerem nie jest szyfrowany, a sama firma Cloudflare zdecydowanie zaleca tryb Full lub Full (strict). [9] Tryb Flexible koliduje też z przekierowaniem z HTTP na HTTPS, które Certbot może dodać do konfiguracji. [4] Cloudflare wysyła do serwera żądanie przez zwykły HTTP, serwer przekierowuje je na HTTPS, a przeglądarka wpada w pętlę przekierowań. [9] Full (strict) sprawdza certyfikat serwera, który może pochodzić z publicznego urzędu certyfikacji (CA), takiego jak Let's Encrypt. [9]
Gdy certyfikat wygaśnie, Cloudflare nie przełączy strefy z Full (strict) z powrotem na Full, więc odnawianie musi stale działać. [9] Najprościej jest najpierw uzyskać certyfikat, a dopiero potem włączyć proxy.
Wybierz Full (strict) dopiero wtedy, gdy certyfikat jest zainstalowany, a próbne odnowienie (dry run) kończy się powodzeniem.
- Uzyskaj certyfikat, gdy oba rekordy są ustawione na DNS only.
- Przełącz oba rekordy na Proxied.
- Na stronie SSL/TLS Overview wybierz Full (strict); jeśli strefa korzysta z Automatic SSL/TLS, najpierw wybierz Custom. [9]
- Ponownie uruchom
sudo certbot renew --dry-run.
Wystawienie certyfikatu może się udać także przy włączonym już proxy: w trybach Full i Full (strict) Cloudflare łączy się z serwerem przez HTTP, gdy żądanie przyszło przez HTTP, więc weryfikacja Certbota na porcie 80 może przejść przez proxy. [9] W trybie Strict (SSL-Only Origin Pull) Cloudflare zawsze łączy się przez HTTPS, więc weryfikacja nie przejdzie, dopóki serwer nie ma certyfikatu. [9] Jeśli wystawienie certyfikatu się nie uda, przełącz rekordy z powrotem na DNS only, uzyskaj certyfikat, a potem ponownie włącz proxy.
Nawet przy włączonym proxy serwer nadal odpowiada każdemu, kto zna jego adres IP. Aby zamknąć tę lukę, na portach 80 i 443 zezwól tylko na adresy IP Cloudflare.
Typowe problemy i ich rozwiązania
Większość problemów sprowadza się do DNS, zapory albo zbyt wielu ponownych prób.
Zmiany w DNS nie są jeszcze widoczne. Jeśli widzisz stary adres, resolwer nadal zwraca odpowiedź z pamięci podręcznej i może to robić, dopóki nie wygaśnie TTL. [2] Po zmianie serwerów DNS lub rejestratora stare odpowiedzi może zwracać także Google Public DNS; wyczyścisz je narzędziem Flush Cache. [3]
Błędny lub brakujący rekord. Sprawdź, czy w adresie nie ma literówki, czy nie został stary rekord od rejestratora, czy istnieje rekord www i czy zmian nie wprowadzono u dostawcy DNS, z którego domena już nie korzysta. Brak rekordu www blokuje też HTTPS, bo weryfikację musi przejść każda nazwa w żądaniu certyfikatu. [10] Usuń rekordy AAAA, chyba że serwer naprawdę odpowiada pod tym adresem IPv6.
Port 80 jest zablokowany. Według Let's Encrypt nieudane weryfikacje HTTP-01 wynikają zwykle z ustawień sieci lub zapory, które nie pozwalają serwerom Let's Encrypt połączyć się z twoim. [10] Sprawdź wynik sudo ufw status i zaporę dostawcy, a po przejściu na HTTPS nie zamykaj portu 80, bo korzystają z niego wtyczki Certbota dla nginx i Apache. [4]
Zbyt wiele nieudanych prób. Jedno konto może mieć najwyżej 5 nieudanych weryfikacji tej samej nazwy na godzinę; limit odnawia się w tempie jednej próby co 12 minut, a dopóki się nie odnowi, Let's Encrypt odrzuca nowe zamówienia dla tej nazwy. [10] Wystawia też najwyżej 5 certyfikatów na dokładnie ten sam zestaw nazw w ciągu 7 dni, a ponowne instalowanie klienta podczas szukania przyczyny problemu to częsty powód przekroczenia tego limitu. [10] Let's Encrypt nie może zresetować limitu przed czasem, a unieważnienie certyfikatów też go nie resetuje, więc przed kolejną próbą usuń przyczynę błędu; do testów zaleca swoje środowisko testowe (staging), które ma znacznie wyższe limity. [10]
Jeśli domena i certyfikat działają, ale strona pokazuje błąd 502 Bad Gateway, skorzystaj z naszego poradnika o naprawie błędu 502 Bad Gateway.
Częste pytania
Po jakim czasie domena zacznie wskazywać na nowy VPS?
To zależy od TTL rekordów i od tego, co resolwery mają już w pamięci podręcznej. W Cloudflare rekordy z włączonym proxy mają domyślnie TTL 300 sekund, a rekordy DNS only – wartość, którą ustawisz; resolwer może przy tym zwracać starą odpowiedź, dopóki nie wygaśnie jej TTL. [2]
Czy www powinno być rekordem A, czy CNAME?
Oba rozwiązania działają. Rekord A kieruje www bezpośrednio na adres IPv4 serwera, a CNAME – na inną nazwę, na przykład example.com, więc www zawsze prowadzi tam, dokąd prowadzi tamten rekord, także po zmianie adresu. [2]
Czy Let's Encrypt jest bezpłatny?
Tak. Let's Encrypt nie pobiera opłat za swoje certyfikaty, a jego domyślne certyfikaty są ważne 90 dni. [1]
Jak długo są ważne certyfikaty Let's Encrypt?
Obecnie domyślne certyfikaty Let's Encrypt są ważne 90 dni. [1] Od 10 lutego 2027 nowe i odnowione certyfikaty będą domyślnie ważne 64 dni, a na 2028 rok Let's Encrypt planuje domyślny okres ważności 45 dni. [8]
Jakiego trybu SSL/TLS w Cloudflare używać z Let's Encrypt?
Używaj trybu Full (strict). Sprawdza on certyfikat twojego serwera, który może pochodzić z Let's Encrypt, natomiast tryb Flexible pozostawia połączenie między Cloudflare a serwerem nieszyfrowane. [9]
Źródła i odnośniki
- FAQ — Let's Encrypt (dostęp: 2026-11-03)
- DNS record types — Cloudflare Docs (dostęp: 2026-11-03)
- Troubleshooting — Google Public DNS (dostęp: 2026-11-03)
- Certbot instructions: Nginx on Linux (snap) — Certbot (EFF) (dostęp: 2026-11-03)
- ufw(8): program for managing a netfilter firewall — Ubuntu Manpages (dostęp: 2026-11-03)
- How to configure nginx — Ubuntu Server documentation (dostęp: 2026-11-03)
- How to configure Apache2 settings — Ubuntu Server documentation (dostęp: 2026-11-03)
- 64-Day Certificate Lifetimes Coming Feb 2027 — Let's Encrypt (dostęp: 2026-11-03)
- Encryption modes — Cloudflare Docs (dostęp: 2026-11-03)
- Rate Limits — Let's Encrypt (dostęp: 2026-11-03)
Czytaj dalej
VPS Windows czy Linux: który system wybrać dla firmy?
VPS Windows czy Linux? Porównujemy licencje, zużycie zasobów, oprogramowanie, zarządzanie i bezpieczeństwo. Sprawdź, który system pasuje do twoich zadań.
Jak zabezpieczyć SSH na VPS z Linuksem: lista kontrolna
Zabezpieczenie SSH na nowym VPS z Ubuntu 24.04 krok po kroku: klucze SSH, ustawienia sshd, UFW i Fail2ban, z testem na każdym etapie, by nie stracić dostępu.
Dopuść tylko adresy IP Cloudflare: nginx, Apache i IIS
Jak na portach 80 i 443 dopuścić tylko adresy IP Cloudflare w UFW, nginx, Apache i IIS, aktualizować ich listę i zablokować bezpośredni dostęp do IP serwera.
