Solarna stacja meteo z wykorzystaniem Wemos D1 mini Pro oraz Raspberry Pi 3 B+ – część 3

Solarna stacja meteo z wykorzystaniem Wemos D1 mini Pro oraz Raspberry Pi 3 B+ – część 3

W trzeciej, ostatniej części opisu projektu budowy amatorskiej stacji meteo poruszę następujące zagadnienia:

  • konfiguracja naszego domowego routera (wpuszczamy ruch z sieci Internet do Raspberry pełniącego rolę serwera WEB),
  • podpięcie dowolnej nazwy domenowej z dynamicznym DNS,
  • instalacja certyfikatu SSL Let’s Encrypt,
  • konfiguracja SSL na naszym Raspberry Pi.

Poprzednie części opisu:

Dane pomiarowe ze stacji:

https://malinowemeteo.zgora.pl

 

Opublikuj swój projekt i odbierz 50% rabatu do wykorzystania w sklepie Nettigo.pl

Podstawowym warunkiem pozwalającym na udostępnienie danych z naszej stacji meteo jest posiadanie stałego dostępu do sieci Internet z dynamicznym lub statycznym publicznym adresem IP. Takiego warunku na pewno nie spełniają operatorzy komórkowi (chyba że dokupicie opcję publicznego adresu IP) oraz wielu małych operatorów sieci osiedlowych.
Ja korzystam z dostępu do sieci Internet od UPC – ten operator przydziela dynamicznie publiczną adresację IP. Nie korzystam też z urządzenia dostępowego („modemu” kablowego) operatora funkcjonującego jako router. Na „modemie” od UPC mam ustawiony tryb Bridge. Dzięki temu na pierwszym porcie LAN „modemu” otrzymuję publiczny adres IP, który następnie „natuję” na własnym routerze. Takie rozwiązanie jest mi potrzebne ze względu na konieczność zestawionych tuneli VPN „site to site”, a router od UPC nie posiada takich możliwości konfiguracyjnych. Dodatkowo własny, w miarę dobry router ma zdecydowanie więcej innych, przydatnych funkcji w porównaniu z urządzeniami od providerów internetowych.
Jeśli chodzi o szybkość łącza, to  podstawowe znaczenie ma wartość Upload naszego łącza. W moim przypadku jest to 10 Mb/s. Dla Raspberry, ze względu na jego wydajność w zupełności wystarczy ok. 1 Mb/s.

 

Przepuszczamy ruch z sieci Internet do naszego serwera WEB

Aby nasza strona www z danymi pomiarowymi hostowana na Raspberry Pi była widoczna w Internecie, musimy przepuścić odpowiedni ruch na naszym domowym routerze. W opcjach konfiguracyjnych routera musimy poszukać opcji Virtual Server / Port Forwarding. Standardowo usługi WEB działają na porcie 80/TCP oraz 443/TCP https. Musimy więc zezwolić na ruch na tych portach do naszej „malinki”.
Dopuszczamy więc taki ruch do adresu IP naszego serwera Raspberry w naszej lokalnej sieci LAN (jak na poniższym przykładzie mojego routera).

Solarna stacja meteo z wykorzystaniem Wemos D1 mini Pro oraz Raspberry Pi 3 B+ – część 3

Aby sprawdzić, czy działa już dostęp do naszych stron hostowanych na Raspberry Pi w naszej sieci LAN, wystarczy sprawdzić, jaki jest nasz aktualny publiczny adres IP (np.: http://www.ip.pl/m_mojeip_sprawdzip.htm), a następnie, najlepiej na smartfonie z wyłączonym Wi-Fi (ale z włączoną transmisją danych od operatora komórkowego) wpisać w przeglądarce http://nasz.publiczny.adres.ip. Powinniśmy ujrzeć stronę hostowaną na Raspberry Pi.

 

Podpięcie dowolnej nazwy domenowej do naszego serwera z dynamicznym IP

Jak pewnie zauważyliście, moja strona z danymi ze stacji pogodowej dostępna jest w sieci Internet pod nazwą domenową: https://malinowe.meteo.zgora.pl. Należy więc wykupić u dowolnego dostawcy domen wybraną przez siebie nazwę domeny. Ja wszystkie swoje domeny kupuję i utrzymuję w firmie Netmark. Mają przyzwoite ceny – powyższa domena to koszt 6,15 PLN za pierwszy rok i 23,37 PLN za odnowienie na rok czasu. (Uwaga! Link do firmy Netmark zawiera mój kod do programu partnerskiego – jeśli zdecydujecie się na zakup dowolnych usług w tej firmie, ja będę miał z Waszego zakupu punkty w programie partnerskim).
Ponieważ mój provider nie zapewnia mi stałego, publicznego adresu IP, potrzebuję wykorzystać do tego celu usługę dynamicznego DNS (DDNS) z możliwością podpięcia własnej domeny. Na rynku jest wiele płatnych rozwiązań do tego typu potrzeb. Najbardziej znanym jest http://no-ip.org (obecnie przejęty przez Microsoft). Rozwiązanie jest o tyle dobre, że ma dużo poradników i właściwie po 5 minutach uzyskujemy domenę od nich (.ddns.net, bądź inną darmową). Raz na 30 dni musimy potwierdzać aktywność naszego hosta + specjalnym programem co określony czas dajemy „znać” serwerowi DDNS o naszym nowym adresie IP. Niestety, podpięcie własnej domeny nie jest darmowe i jest to koszt 35 dolarów na rok. Szukając bezpłatnych alternatyw natrafiłem na https://dns.he.net.

Rejestrujemy się na podanej stronie, a następnie dodajemy naszą nową domenę z menu po lewej stronie (Add new domain – w moim przykładzie będzie to na potrzeby tego artykułu domena majsterkowo.zgora.pl). Na stronie dostawcy naszej domeny oddelegowujemy Name Servery (NS) naszej domeny na: ns1.he.net, ns2.he.net, ns3.he.net, ns4.he.net i ns5.he.net. Cierpliwie czekamy, gdyż oddelegowanie domeny może potrwać do 72 godzin (zwykle trwa to około 12 godzin).

Solarna stacja meteo z wykorzystaniem Wemos D1 mini Pro oraz Raspberry Pi 3 B+ – część 3

Solarna stacja meteo z wykorzystaniem Wemos D1 mini Pro oraz Raspberry Pi 3 B+ – część 3

Solarna stacja meteo z wykorzystaniem Wemos D1 mini Pro oraz Raspberry Pi 3 B+ – część 3

W międzyczasie możemy już skonfigurować nasze „odświeżanie”. Wchodzimy na stronę edycji rekordów dla naszej domeny (ikonka z ołówkiem), klikamy w „New A”, wpisujemy w nazwie nazwę domeny i zaznaczamy „Enable entry for dynamic DNS”. IP zostanie zmapowane automatycznie na nasz adres IP, który jest przecież tożsamy z publicznym adresem IP naszego serwera WEB. TTL zostawiamy na 5 minut (czas odświeżenia rekordu po zmianie).

Solarna stacja meteo z wykorzystaniem Wemos D1 mini Pro oraz Raspberry Pi 3 B+ – część 3

Solarna stacja meteo z wykorzystaniem Wemos D1 mini Pro oraz Raspberry Pi 3 B+ – część 3

Następnie w kolumnie przy nowo powstałym rekordzie wciskamy przycisk pod kolumną DDNS (dwie strzałeczki w okręgu) i wpisujemy ręcznie, lub generujemy klucz do odświeżania domeny, zapamiętajmy go, gdyż będzie potrzebny później. 


Solarna stacja meteo z wykorzystaniem Wemos D1 mini Pro oraz Raspberry Pi 3 B+ – część 3

Powinniśmy jeszcze dodać rekord CNAME z przedrostkiem www naszej domeny, aby nasza strona otwierała się również po wpisaniu www przed adresem. Ponownie wchodzimy na stronę edycji rekordów dla naszej domeny (ikonka z ołówkiem), klikamy w „New CNAME”

Solarna stacja meteo z wykorzystaniem Wemos D1 mini Pro oraz Raspberry Pi 3 B+ – część 3

Po poprawnej konfiguracji nasz DDNS powinien wyglądać jak na poniższym obrazku (oczywiście z własną domeną i adresem IP):

Solarna stacja meteo z wykorzystaniem Wemos D1 mini Pro oraz Raspberry Pi 3 B+ – część 3

Pozostało nam jeszcze skonfigurowanie na Raspberry Pi zadania CRON, które będzie informowało co 5 minut nasz DDNS o naszym adresie IP. W tym celu logujemy się przy pomocy Putty do naszego RPi. Po zalogowaniu wpisujemy komendę:

Następnie wybieramy edytor, przy pomocy którego będziemy edytować zadania CRON (polecam znany już Nano – 2). W edytorze wpisujemy następujące polecenie:

Oczywiście zamieniamy adres http, klucz odświeżania domeny i hostname na własne. Zapisujemy plik (CTRL + o) i zamykamy edytor (CTRL + x). Następnie wpisujemy komendę

Dynamiczny DNS został skonfigurowany. Po około 12 godzinach nasza strona powinna być widoczna pod nazwą naszej domeny.

 

Instalacja obsługi darmowych certyfikatów SSL Let’s Encrypt oraz konfiguracja protokołu SSL na naszym Rspberry Pi

Od pewnego czasu mamy możliwość pozyskania darmowego certyfikatu SSL dla naszej domeny. Zalecam korzystanie z certyfikatów SSL choćby z uwagi na wyższe wyniki w wyszukiwarce Google. W niedługim czasie przeglądarki (pierwsza będzie Chrome) będą ostrzegać nas, że witryna bez wdrożonego SSL nie jest bezpieczna. Gdy mamy pewność że nasz serwer WEB widoczny jest w sieci Internet pod nazwą domeny, logujemy się do naszego Raspberry Pi i wydajemy następujące polecenia:

Instalujemy program Certbot, przy pomocy którego wygenerujemy i zainstalujemy certyfikat SSL:

Następnie generujemy certyfikat SSL poleceniem:

Oczywiście nazwę domenową zamieniamy na własną. Podajemy adres e-mail na który otrzymamy powiadomienie o zbliżającym się terminie wygaśnięcia certyfikatu i akceptujemy (A) warunki. W ten sposób wygenerowaliśmy i pobraliśmy na nasz serwer niezbędne pliki certyfikatu SSL.

Pozostało nam skonfigurowanie naszego serwera Lighttpd do obsługi SSL. W pierwszej kolejności musimy przenieść klucz prywatny i certyfikat do jednego pliku web.pem poleceniem:

Następnie edytujemy plik konfiguracyjny serwera Lighttpd poleceniem:

I wklejamy na końcu pliku poniższą treść (zamieniając oczywiście nazwę domeny w dziewięciu miejscach na własną):

Powyższa konfiguracja serwera Lighttpd zapewnia nam (stan na dzień pisania artykułu) w pełni bezpieczną obsługę certyfikatów SSL. Omówienia wymaga linia 11 oraz linie 23 – 39. W standardowej konfiguracji SSL nasz serwer jest podatny na różnego rodzaju ataki związane z błędami w obsłudze SSL. Jednym z warunków poprawnego wdrożenia SSL jest wzmocnienie klucza szyfrującego dla protokołu Diffiego-Hellmana (protokół uzgadniania kluczy szyfrujących). W tym celu należałoby wygenerować specjalny klucz z szyfrowaniem 4096-bitowym na naszym serwerze. Jednak taka operacja na RPi może trwać kilkanaście godzin. Jeśli chcecie skusić się na samodzielne generowanie takiego certyfikatu należy wydać następujące polecenie:

Aby nie czekać tych kilkanaście godzin, możemy skorzystać z załączonego do artykułu pliku (zmieniając rozszerzenie pliku z .txt na .pem) i wgrać go na nasz serwer RPi do katalogu /etc/lighttpd/.

Linie 23 – 39 konfigurują nasz serwer Lighttpd w ten sposób, aby wpisanie adresu http://majsterkowo.zgora.pl lub http://www.majsterkowo.zgora.pl lub https://www.majsterkowo.zgora.pl zawsze kierowało na adres https://majsterkowo.zgora.pl

Oczywiście po zapisaniu powyższej konfiguracji serwera Lighttpd należy przeładować usługę poleceniem:

Teraz możemy wejść na stronę https://www.ssllabs.com/ssltest i wpisać tam adres naszej strony. Po kilku minutach testów powinniśmy uzyskać wynik poprawności konfiguracji protokołów SSL na naszym serwerze. U mnie wygląda to tak:

Solarna stacja meteo z wykorzystaniem Wemos D1 mini Pro oraz Raspberry Pi 3 B+ – część 3

 

 

To już koniec opisu budowy oraz oprogramowania amatorskiej stacji meteo wykorzystującej serwer WEB na Raspberry Pi 3 B+ uruchomiony we własnej sieci LAN. Wszystkim oceniającym oraz komentującym poprzednie części artykułu serdecznie dziękuję. Jeśli macie jakieś pytania również do tej części opisu, zapraszam do ich zadawania w komentarzach lub na mój e-mail.

 

Pliki załączone do artykułu:

Ocena: 5/5 (głosów: 7)
Nettigo - patron działu Elektronika

Podobne posty

Arduino ethernet device

Arduino ethernet device

Poniżej opisany projekt przedstawia „wrap” biblioteki EtherCard https://github.com/njh/EtherCard.Biblioteka EtherCard bardzo ładnie rozwiązuje konfigurację modułu ethernet…

12 komentarzy do “Solarna stacja meteo z wykorzystaniem Wemos D1 mini Pro oraz Raspberry Pi 3 B+ – część 3

  • ‚Standardowo usługi WEB działają na porcie 80/TCP oraz 443/TCP https. Musimy więc zezwolić na ruch na tych portach do naszej „malinki”.’
    Nie musimy zezwalać na akurat tych portach. Mój router (Ma już pewnie z 7 lat, więc nie jest najnowszy) pozwala skierować dowolny zewnętrzny port na dowolny wewnętrzny. Czyli mogę skonfigurować taki adres mojadomena.pl:4444, a otworzy się strona na malinie na porcie 80. Mając kilka serwerów w lanie (wszystkie na portach 80). Mogę mieć je wszystkie pod jedną domeną, mieniając tylko port 4444. Oczywiście można też na malinie postawić serwer na innym porcie.

    ‚Niestety, podpięcie własnej domeny nie jest darmowe i jest to koszt 35 dolarów na rok.’
    Tu też można trafić na rejestratora domen, który pozwala zarządzać rekordami DNS. Mój akurat pozwala i wystarczy swojej domenie dać rekord CNAME.

    Odpowiedz
    • Oczywiście nie musimy zezwalać na standardowych portach. Jednak poradnik pisałem w ten sposób, aby również początkujący w tematach IT użytkownicy poradzili sobie z tematem. W artykule na zrzucie ekranu z konfiguracji routera Asus jest niewypełniona kolumna Local Port. Właśnie tu możemy wykonać takie ustawienia, o których piszesz.

      Odnośnie podpięcia własnej domeny do zmiennego IP, to nie bardzo rozumiem, jak odświeży się rekord CNAME po zmianie IP?

      Odpowiedz
  • Ej, co się stało moim komentarzem?
    Dziś rano dodałem, ale go nie było widać. Przed publikacją sobie go skopiowałem. Skoro tamtego nie było widać, to wkleiłem go i jeszcze raz dodałem. Ale wtedy już pokazał się komunika o duplikacie. A tu nadal komentarza nie ma.

    Odpowiedz
    • Ja mam na routerze skonfigurowany dyndns, a u operatora domeny CNAME wskazuje właśnie na tę domenę dyndns. Zależnie od operatora dyndns. Jedni chcą aby co jakiś czas się odpytywać o domenę, nawet bez zmiany IP, innym wystarcza tylko przy przydzieleniu nowego IP. Router już o to zadba. Też zależnie od sprzętu jeden ma możliwość ustawienia co jaki czas ma się odświeżać, inny wykryje zmianę IP, a jeszcze inny będzie odświeżał tylko przy starcie (tego można restartować w jakieś nocnej porze).

      Odpowiedz
      • Wszystko jasne – tylko co, jak ktoś nie ma routera z możliwością skonfigurowania DDNS, lub też (jak w sporej ilości routerów) do wyboru ma płatne usługi dynamicznego DNS?
        Moim celem było napisanie artykułu w formie zrozumiałej nie tylko dla osób zaawansowanych informatycznie, ale także dla zaczynających swoją przygodę w tematach elektroniki i IT.

        Odpowiedz
        • Nie wiem jak nowe routery, ale wszystkie moje (a mam ich sześć i nie są to najnowsze modele, bo najstarszy ma ponad 10 lat, a najmłodszy chyba 5) mają konfigurację dyndnsa. I nie były to modele z wysokiej półki. Akurat w nich większość dostępnych dostawców dyndsna padła lub zmieniła właściciela i nie da się w nich tego skonfigurować. Z tego co mam do wyboru to jest noip i kilka płatnych. Z tego wnioskuję, że trudno dziś dostać router bez dyndnsa. Z tego co wiem, to nawet pierwszy dostępny w Polsce funbox od orange miał dostęp do noip.

          Odpowiedz
          • Dokładnie tak jest, jak piszesz. Ale ponieważ mamy w projekcie wykorzystane Raspberry Pi, to żaden problem wykorzystać go do automatycznego odświeżania bezpłatnego dyndnsa, którego podałem w opisie. Rozwiązanie w 100% działające i całkowicie niezależne od posiadanego routera.

            Odpowiedz

Odpowiedz

anuluj

Solarna stacja meteo z wykorzystaniem Wemos D1 mini Pro oraz Raspberry Pi 3 B+ – część 3

Nie przegap nowych projektów!

Zapisując się na nasz Newsletter będziesz miał pewność, że nie przegapisz żadnego nowego projektu opublikowanego w Majsterkowie!

Od teraz nie przegapisz żadnego projektu!

Masz uwagi?