Przewodnik: Bezpieczne wystawianie lokalnych usług w ServBay za pomocą Cloudflare Tunnel
Cloudflare Tunnel (dawniej Argo Tunnel) to usługa sieciowa w modelu Zero Trust oferowana przez Cloudflare. Umożliwia ona bezpieczne wystawienie lokalnie działających usług WWW, SSH lub innych aplikacji do internetu bez konieczności otwierania portów publicznych czy konfigurowania złożonych reguł firewalla. W tym przewodniku szczegółowo pokazujemy, jak w środowisku deweloperskim ServBay skorzystać z narzędzia cloudflared
do zbudowania bezpiecznego tunelu, co pozwoli udostępnić usługi ServBay przez internet.
Najważniejsze zalety:
- Większe bezpieczeństwo: Korzystaj z globalnej ochrony Cloudflare, w tym zabezpieczeń przed DDoS i Web Application Firewall (WAF).
- Uproszczona konfiguracja sieci: Brak potrzeby ustawiania przekierowań portów, translacji adresów (NAT) czy dodatkowych reguł firewalla.
- Model zero trust: Połączenia są inicjowane na zewnątrz, co redukuje powierzchnię ataku.
- Integracja z ekosystemem Cloudflare: Wykorzystaj cache, optymalizacje i analitykę dostępną w usługach Cloudflare.
Przegląd
ServBay oferuje deweloperom zintegrowane, łatwe w zarządzaniu lokalne środowisko programistyczne, wspierające wiele języków (PHP, Node.js, Python, Go, Java, Ruby, Rust itp.), bazy danych (MySQL, PostgreSQL, MongoDB, Redis itd.) oraz serwery WWW (Caddy, Nginx, Apache). Zazwyczaj strony lub aplikacje rozwijane w ServBay są widoczne jedynie lokalnie. Dzięki integracji z Cloudflare Tunnel możesz łatwo udostępnić swoją pracę członkom zespołu lub zewnętrznym użytkownikom zarówno tymczasowo, jak i na stałe, korzystając jednocześnie z wydajności i ochrony Cloudflare.
Zasada działania
Sednem Cloudflare Tunnel jest uruchomienie na Twojej lokalnej maszynie (na której działa ServBay) klienta cloudflared
, który samodzielnie nawiązuje jedno lub wiele szyfrowanych połączeń (opartych na protokole QUIC) z najbliższym węzłem brzegowym Cloudflare. Połączenia te są zawsze inicjowane wychodząco, więc nie musisz tworzyć żadnych reguł przychodzących w routerze czy firewallu. Gdy użytkownik odwiedza powiązaną z tunelem domenę, ruch trafia najpierw do Cloudflare, skąd jest przekierowywany ustanowionym tunelem do klienta cloudflared
, a następnie do Twojej lokalnej usługi w ServBay (np. witryny działającej pod https://servbay.local
albo http://localhost:8000
). Odpowiedź wraca tą samą ścieżką.
Przygotowanie środowiska
Przed rozpoczęciem konfiguracji upewnij się, że spełniasz następujące wymagania:
- ServBay zainstalowane i działające: Środowisko ServBay musi być poprawnie skonfigurowane, a strona lub usługa, którą chcesz wystawić, powinna być dostępna lokalnie (np. domyślna lokalna domena ServBay
servbay.local
). - Konto w Cloudflare: Musisz posiadać konto w Cloudflare.
- Domena zarządzana przez Cloudflare: Wymagana jest domena dodana do Twojego konta Cloudflare i zarządzana przez DNS Cloudflare.
- Zainstalowany klient
cloudflared
: Należy zainstalować narzędziecloudflared
na maszynie z macOS, na której działa ServBay.
1. Instalacja klienta cloudflared
Na systemach macOS zaleca się instalację przez Homebrew. Jeśli nie masz Homebrew, najpierw zainstaluj je zgodnie z dokumentacją oficjalną.
Instalacja przez Homebrew (zalecana):
bash
brew update
brew install cloudflared
1
2
2
Ręczne pobranie i instalacja (dla Apple Silicon):
bash
# Pobierz binarkę dla macOS ARM (Apple Silicon)
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-darwin-arm64.tgz | tar xz
# Przenieś plik wykonywalny do katalogu w PATH
sudo mv cloudflared /usr/local/bin/
1
2
3
4
2
3
4
Weryfikacja instalacji: Po zakończeniu instalacji sprawdź, czy cloudflared
działa i wyświetla wersję:
bash
cloudflared --version
# Przykładowy wynik: cloudflared version 2024.5.0 (built 2024-05-01)
1
2
2
Numer wersji może się różnić, lecz jeśli jest wyświetlany, instalacja powiodła się.
2. Logowanie do Cloudflare
W terminalu uruchom polecenie w celu autoryzacji na swoim koncie Cloudflare:
bash
cloudflared tunnel login
1
Po wykonaniu powyższego polecenia cloudflared
automatycznie otworzy przeglądarkę z formularzem logowania Cloudflare. Wybierz swoje konto powiązane z domeną i potwierdź autoryzację dla cloudflared
. Po pomyślnym uwierzytelnieniu zobaczysz komunikat o sukcesie, a w terminalu pojawi się potwierdzenie i w domyślnym katalogu (~/.cloudflared/
) zostanie utworzony plik cert.pem
.
Praktyczna konfiguracja tunelu
W kolejnych krokach utworzysz nowy tunel i skierujesz jego ruch do lokalnych usług ServBay.
Główne etapy konfiguracji
Tworzenie tunelu
W terminalu wpisz polecenie, które utworzy nowy tunel. Nadaj mu czytelną nazwę, np.
servbay-demo-tunnel
.bashcloudflared tunnel create servbay-demo-tunnel
1Po udanej operacji otrzymasz identyfikator tunelu (UUID) oraz ścieżkę do pliku z poświadczeniami (
credentials-file
). Zanotuj swoje UUID tunelu, np.a7b8c9d0-e1f2-3a4b-5c6d-7e8f9a0b1c2d
. W katalogu~/.cloudflared/
powstanie plik JSON zawierający potrzebne do uruchomienia tunelu dane uwierzytelniające – zachowaj go w bezpiecznym miejscu!Konfiguracja rekordu DNS
Aby powiązać domenę z tunelem, utwórz rekord CNAME w panelu DNS Cloudflare. Możesz to zrobić jednym poleceniem:
bashcloudflared tunnel route dns servbay-demo-tunnel servbay-demo.yourdomain.com
1Zamień
servbay-demo-tunnel
na nazwę tunelu, aservbay-demo.yourdomain.com
na subdomenę, której chcesz użyć do dostępu do lokalnej usługi (yourdomain.com
musi być domeną zarządzaną przez Cloudflare).Po tej operacji
cloudflared
doda w DNS rekord CNAME kierującyservbay-demo.yourdomain.com
na<ID_tunelu>.cfargotunnel.com
.Tworzenie pliku konfiguracyjnego
cloudflared
korzysta z pliku YAML do określenia zachowań tunelu, w tym mapowania domen na lokalne usługi. Domyślnie plik znajduje się w~/.cloudflared/config.yml
. Jeśli go nie ma, utwórz go.Edytuj
~/.cloudflared/config.yml
i dodaj:yaml# tunnel: UUID tunelu – zamień na własny identyfikator tunnel: a7b8c9d0-e1f2-3a4b-5c6d-7e8f9a0b1c2d # credentials-file: Ścieżka do poświadczeń tunelu, zwykle w ~/.cloudflared/ i nazwą UUID credentials-file: /Users/yourusername/.cloudflared/a7b8c9d0-e1f2-3a4b-5c6d-7e8f9a0b1c2d.json # Zamień na swoją nazwę użytkownika i faktyczną ścieżkę ingress: # Reguły kierujące ruch - hostname: servbay-demo.yourdomain.com # Zewnętrzna domena – zgodna z rekordem DNS service: https://servbay.local # Lokalny adres usługi ServBay (domyślnie SSL). originRequest: # noTLSVerify: true # Jeśli lokalna usługa używa własnego certyfikatu (np. z User CA ServBay), włącz to, by pominąć walidację TLS # Jeśli strona w ServBay ma ważny certyfikat (np. Let's Encrypt przez ACME), nie włączaj tej opcji. # Często dla uproszczenia przy lokalnym rozwoju używa się własnych certyfikatów (User CA) z noTLSVerify: true. - service: http_status:404 # Reguła domyślna – jeśli hostname nie pasuje, zwróć 404
1
2
3
4
5
6
7
8
9
10
11
12
13
14Ważne wskazówki:
- Zamień wartości
tunnel
icredentials-file
na odpowiadające Twojemu UUID i ścieżce pliku. hostname
to subdomena z kroku 2.service: https://servbay.local
kieruje na domyślną stronę ServBay. Jeśli Twoja aplikacja działa pod innym adresem lub portem (np. Node.js nahttp://localhost:3000
), zmień odpowiednio tę wartość.- Opcja
originRequest.noTLSVerify: true
służy do wyłączenia weryfikacji certyfikatu SSL lokalnych usług. Włącz ją, mając własne certyfikaty (np. wygenerowane przez User CA ServBay), w przeciwnym raziecloudflared
nie nawiąże połączenia. Dla ważnych, zaufanych certyfikatów (np. z ACME/Let's Encrypt) nie trzeba tej opcji.
- Zamień wartości
Uruchamianie tunelu
Po przygotowaniu pliku config.yml
możesz wystartować tunel poleceniem:
bash
cloudflared tunnel run servbay-demo-tunnel
1
Zamień servbay-demo-tunnel
na swoją nazwę tunelu.
cloudflared
połączy się z siecią Cloudflare i zestawi tunel. W terminalu zobaczysz status i logi połączenia. Tunel pozostaje aktywny tak długo, jak polecenie działa na pierwszym planie. Aby działał w tle, można skonfigurować go jako usługę systemową (np. przez launchctl
na macOS; szczegóły wykraczają poza zakres tego dokumentu).
Weryfikacja działania usługi
Po wystartowaniu tunelu możesz zdalnie uzyskać dostęp do swojej lokalnej usługi ServBay przez skonfigurowaną domenę.
Wejdź na skonfigurowaną domenę: Otwórz w przeglądarce adres, który ustawiłeś w kroku 2, np.
https://servbay-demo.yourdomain.com
.Sprawdź poprawność:
- Strona powinna wczytać się i prezentować ten sam widok, co przy lokalnym dostępie do
https://servbay.local
. - W pasku adresu pojawi się certyfikat SSL wystawiony przez Cloudflare dla Twojej domeny (nie ten lokalny z ServBay – ten służy wyłącznie między
cloudflared
a ServBay). - W narzędziach developerskich zobaczysz nagłówki, takie jak
CF-RAY
, potwierdzające obsługę przez Cloudflare.
- Strona powinna wczytać się i prezentować ten sam widok, co przy lokalnym dostępie do
Wskazówki zaawansowane
Routing wielu usług
Możesz zdefiniować wiele reguł routingu w sekcji ingress
pliku config.yml
, kierując ruch do różnych usług w ServBay na podstawie domeny:
yaml
ingress:
- hostname: api.yourdomain.com
service: http://localhost:8080 # Np. API działa lokalnie na porcie 8080
- hostname: app.yourdomain.com
service: https://servbay.local # Główna strona WWW
- service: http_status:404
1
2
3
4
5
6
2
3
4
5
6
Monitorowanie ruchu i logi
cloudflared
udostępnia polecenia ułatwiające monitorowanie i debugowanie tunelu:
- Podgląd bieżących statystyk:bash
cloudflared tunnel info servbay-demo-tunnel
1 - Szczegółowe logi: Polecenie
cloudflared tunnel run
wyświetla logi w terminalu. Możesz też ustawić poziom logowania lub przekierować je do pliku.
Integracja z Cloudflare Access
Aby dodatkowo zabezpieczyć swoje usługi, możesz skorzystać z Cloudflare Access (część platformy Cloudflare Zero Trust) celem ograniczenia dostępu przez autoryzację i uwierzytelnianie użytkowników – to znacznie bezpieczniejsze i bardziej elastyczne niż tradycyjny VPN. Konfiguracji dokonuje się w panelu Cloudflare.
Rozwiązywanie problemów
W razie problemów z konfiguracją lub korzystaniem z tunelu, poniżej znajdziesz typowe przypadki i rozwiązania:
Objaw | Rozwiązanie |
---|---|
502 Bad Gateway przy wejściu na domenę | Sprawdź, czy lokalna usługa ServBay działa i jest dostępna (np. w przeglądarce pod https://servbay.local lub innym lokalnym adresem).Zweryfikuj w config.yml , czy ustawiony jest poprawny adres i port lokalnej usługi.Gdy usługa HTTPS i nie włączono noTLSVerify: true , sprawdź certyfikat lub aktywuj tę opcję. |
Błąd DNS, brak dostępu do domeny | Upewnij się, że rekord CNAME wskazujący <ID_tunelu>.cfargotunnel.com został poprawnie dodany w DNS Cloudflare. Sprawdź rozwiązywanie DNS za pomocą dig lub nslookup . |
Błąd certyfikatu przy wejściu na domenę | Jeśli chodzi o certyfikat wystawiony przez Cloudflare, sprawdź czy hostname w config.yml jest zgodny z odwiedzaną domeną.Jeśli problem dotyczy klienta cloudflared i lokalnego połączenia TLS, sprawdź poprawność adresu usługi i ewentualnie włącz originRequest.noTLSVerify: true . |
Błąd polecenia cloudflared tunnel run | Sprawdź, czy plik ~/.cloudflared/config.yml istnieje i poprawnie sformatowany (YAML).Zweryfikuj, czy wartości tunnel i credentials-file są prawidłowe.Upewnij się, że cloudflared ma dostęp do odpowiednich plików. |
Wolne lub niestabilne połączenie | Sprawdź stabilność swojego połączenia internetowego. Cloudflare Tunnel korzysta z protokołu QUIC – sprawdź, czy sieć go obsługuje. Rozważ zmianę ustawień regionu w Cloudflare albo skontaktuj się z ich pomocą techniczną. |
Podsumowanie korzyści rozwiązania
Łącząc ServBay z Cloudflare Tunnel:
- Bezpiecznie dzielisz się postępem pracy: Wygodnie pokazujesz efekty klientowi lub zespołowi, udostępniając rozwijane aplikacje czy strony.
- Testujesz zewnętrzne callbacki/Webhooki: Możesz sprawdzić funkcjonalność, która wymaga dostępu z internetu.
- Korzystasz z ochrony na poziomie przedsiębiorstwa: Zyskujesz zabezpieczenia Cloudflare (ochrona przed DDoS, WAF) – Twój lokalny serwer jest lepiej chroniony przed atakami.
- Uproszczasz konfigurację sieci: Nie musisz martwić się o przekierowania portów czy ustawienia firewalla.
- Korzystasz z globalnej infrastruktury Cloudflare: Anycast przyspiesza i stabilizuje dostęp do wystawionych usług.
ServBay w połączeniu z Cloudflare Tunnel pozwala stworzyć środowisko pracy, które jest zarówno wydajne, jak i bardzo bezpieczne.
Wnioski
Powyższy przewodnik szczegółowo opisuje instalację i konfigurację cloudflared
w środowisku ServBay, utworzenie oraz uruchomienie Cloudflare Tunnel, umożliwiając bezpieczne udostępnienie lokalnych usług WWW do internetu. Postępując według tych kroków, maksymalnie wykorzystasz możliwości ServBay (wielu technologii naraz) i atuty bezpieczeństwa Cloudflare Tunnel, co wyraźnie usprawni zarówno Twój proces deweloperski, jak i współpracę zespołową. Pamiętaj, że Cloudflare Tunnel to część platformy Zero Trust – rozważ także poznanie możliwości Cloudflare Access dla zaawansowanej kontroli dostępu i ochrony.