Tunelowanie z Dockerem w tle
Ostatnio zakupiłem testowy serwer VPS mikrusa projektu Kuby Mrugalskiego. Świetna i przede wszystkim tania usługa umożliwiająca testowanie przeróżnych aplikacji. Całemu projektowi smaczku dodaje adresacja z klasy IPv6, co umożliwia użytkownikom dodatkowe zabawy z konfiguracją np. za pomocą cloudflare.
Mój problem był jednak z goła inny. Wymyśliłem sobie, że wrócę do testowania aplikacji umieszczonych w kontenerach - w tym celu użyłem do tego Dockera - przerobię parę kursów i generalnie pobawie się środowiskiem. Mój zamysł obejmował, że odpalę sobie parę usług na VPSie i sprawdzę ich działanie z poziomu przeglądarki. Wszystko spoko, tylko jak uruchomić sobie usługę na serwerze wirtualnym i odpalić ją lokalnie w przeglądarce na wybranym porcie?
Z pomocą przyszło mi tunelowanie po ssh. Poniżej krótka instrukcja jak to wygląda.
(Kliknij w obrazek, a odpalisz go w pełnej rozdzielczości)
- pobieramy sobie jakiś image - w moim przypadku jest to obraz Nginxa.
- uruchamiamy kontener wystawiając, go na porcie 8080 na serwerze oraz na porcie 80 bezpośrednio w kontenerze.
- curlem możemy sprawdzić czy usługa działa prawidłowo. Parametr -L poleca curlowi, aby podążał za przekierowaniem HTTP. Localhost:8080 - wskazuje nam adres jaki chcemy sprawdzić oraz port na jakim działa usługa. Pamiętajmy, że w tym przypadku port na VPSie na którym usługa Nginxa została uruchomiona to - 8080.
- w celu podłączenia się do zdalnego serwera, musimy uruchomić u siebie na komputerze jakieś środowisko systemu GNU/Linux. W moim przypadku odpalam WSL2, a na nim system Ubuntu.
- jak widać na powyższym obrazku logujemy się pomocą ssh. Parametr -L służy do lokalnego przekierowania portu - w tym przypadku usługę przekierowujemy na port 1234. Po dwukropku podajemy adres z serwera na którym działa usługa, czyli localhost:8080. Na koniec podajemy dane do logowania na serwer. Użytkownika, adres oraz port.
- po prawidłowym zalogowaniu się na serwer i wpisaniu w oknie przeglądarki adresu - localhost:1234 powinniśmy zobaczyć działającego Nginxa.
Należy jednak pamiętać, że przekierowanie portu ze zdalnego serwera na localhosta zadziała wyłącznie w momencie w którym usługa będzie działać na zdalnym serwerze (stąd weryfikacja działania usługi curlem).