Raspberry Pi


64) Vzdálený přístup k Raspberry Pi bez veřejné IP adresy - NGROK.com


Objevil jsem službu, pomocí které je možné se vzdáleně připojit k domácímu RasPi i když nemáte veřejnou IP adresu.
Tato služba spočívá ve vytvoření "tunelu" přes server https://ngrok.com
V základní variantě je tato služba zdarma.

Povedl se mi zatím zprovoznit přístup k terminálu (PuTTy) a po instalaci webového serveru v RasPi dokážu zobrazit i webovou stránku, která je v RasPi uložená.


POZOR - BEZPEČNOST!

Před tím, než se do instalace pustíte, uvědomte si, že tím přestáváte být chráněni firewally a routery před útočníky z internetu. Takže si minimálně nastavte nějaké silnější přístupové heslo.

sudo raspi-config

(položka "Change User Password")

Nebo si v RasPi založte dalšího uživatele, který nebude mít tak silná práva, jako root.


Od jednoho z návštěvníků jsem dostal zprávu:

"...Může to být náhoda, ale při zkoušení této služby se mi stalo do dvou hodin od instalace ngrok, že se mi vyresetovala anténa na internet. Nic jiného jsem neinstaloval a internet chodil do té doby 6 měsíců bez problému. Doporučuji být hodně obezřetný u instalace této služby..."

Pokud byste zpozorovali nějaké podobné problémy, prosím, napište mi.
U mně je to zatím bez problémů, ale jestli se to projeví u více lidí, tak raději článek zruším. 


Instalace

 Nejdříve je třeba se na stránce https://ngrok.com zaregistrovat.
 Je to jednoduché zadání jména, e-mailové adresy a hesla (alespoň 10 znaků).
 

Pak je třeba stáhnout instalační ZIP do RasPi.
Protože se podle verze programu asi bude adresa měnit, je třeba nejdříve zjistit, kde se ten ZIP nachází.

Já jsem to dělal tak, že jsem si tu adresu zkopíroval z tlačítka na webu https://ngrok.com/download :

V terminálu RasPi pak stačilo zadat příkaz wget a za něj vložit tu zkopírovanou adresu
Po stažení souboru se ZIP rozbalil příkazem unzip:

Dalším krokem bylo přihlášení k vytvořenému účtu na stránce ngrok.com.
V menu najděte svůj AUTHTOKEN a zkopírujte si celou spodní řádku ( ./ngrok authtoken xxxxxxxxxxxxxx):

Zkopírovanou řádku pak vložte do terminálu:

Tím je základní instalace hotová.


Vzdálený přístup k terminálu

Pro vytvoření tunelu stačí spustit program ngrok s těmito parametry :

/home/pi/ngrok tcp 22 -region eu

V terminálu se objeví toto:

Důležitá je adresa a číslo portu - na obrázku je to fialově podtržené. Číslo portu se mění náhodně při každém spuštění.
Adresa zatím zůstává stejná, ale nemůžu tvrdit na 100 %, že se časem také třeba nezmění.

Stejné informace byste měli obdržet i po přihlášení do vašeho účtu na ngrok.com:

 

Když pak tyto údaje zadáte do přihlašovacího formuláře PuTTy z libovolného počítače někde na internetu, připojíte se tím k terminálu vašeho domácího RasPi:


Vzdálený přístup na WEB server v RasPi

 

Tohle se hodí, když třeba chcete sledovat nějaké údaje z domácího RasPi v grafické podobě (třeba fotky z webkamery).
Nebudu se v tomto základním článku zabývat sběrem a publikací informací z čidel nebo kamery na serveru.
Popíšu jen zprovoznění přístupu k hotové webové stránce ze vzdáleného počítače v nějakém prohlížeči.

V první fázi je třeba nainstalovat do RasPi webový server pomocí příkazů:

sudo apt-get update
sudo apt-get install apache2 -y

Pak by se po zadání názvu "raspberrypi" do adresního řádku webového prohlížeče na nějakém počítači v lokální síti mělo zobrazit toto:

Tím je ověřeno, že webserver na RasPi funguje.

Tuto informační stránku je možné změnit:

Nejdřív se původní stránka zazálohuje (protože obsahuje nějaké užitečné informace, které se občas mohou hodit):

sudo mv /var/www/html/index.html /var/www/html/zalohaindex.html

Pak se vytvoří nový soubor "index.html":
sudo nano /var/www/html/index.html

A do něj se vloží jednoduchý ukázkový HTML kód - například:

<html>

<head>
 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <title>RasPi</title>
</head>

<body>

Tohle je webová stránka

<br>
<br>

<center><H1>RASPBERRY PI</H1></center>

</body>

</html>

Teď je třeba nastavit http tunel v programu ngrok:

/home/pi/ngrok http 80 -region eu

Hotovo! Tunel je vytvořený.

V terminálu se zobrazí informace o veřejné webové adrese, na které je dostupná ukázková webová stránka z domácího RasPi.
Tady také platí, že se tato adresa mění při každém spuštění.

A stejně jako při předchozím zprovozňování vzdáleného přístupu k terminálu, i v tomto případě je stejná informace dostupná i po přihlášení na ngrok.com .

 

Pak už jen stačí když se tato adresa zadá z libovolného počítače do webového prohlížeče a stránka z RasPi se zobrazí:


Automatické spouštění při startu RasPi

Při předchozích ukázkách bylo nutné ručně spouštět tunely z terminálu na Raspberry Pi.
Lepší by ale bylo, aby se tunely vytvářely automaticky při startu RasPi.

Tohle mi dalo trochu víc práce a nejsem si jistý, jestli je tento postup správný. 
Pokud by někdo znal lepší způsob, rád se nechám poučit a tento článek opravím.

 

Můj postup je takovýto:

V konfiguračním souboru programu ngrok jsem nadefinoval oba dva tunely - terminálový (TCP) i webový(HTTP).
nano /home/pi/.ngrok2/ngrok.yml

Obsah toho souboru vypadá takto:

authtoken: 6exm******************************hQeAF
json_resolver_url: ""
dns_resolver_ips: []

region: eu

tunnels:

 web:
   addr: 80
   proto: http

 terminal:
   addr: 22
   proto: tcp

Na první řádce je authtoken, který budete mít samozřejmě úplně jiný.
V tunelech je možné nastavovat i další spoustu parametrů (například doplňkovou ochranu heslem),  ale pro funkční základ stačí jen toto.

Po uložení konfiguračního souboru jsem v adresáři "/home/pi/" vytvořil spouštěcí skript:
nano /home/pi/autostartngrok.sh

Do spouštěcího skriptu jsem vložil tento kód, který spustí všechny nadefinované tunely:


#!/bin/bash
/home/pi/ngrok start --all

 

Nastavil jsem skriptu atribut pro spouštění:
sudo chmod 777 /home/pi/autostartngrok.sh

Pak jsem zaeditoval crontab:
crontab -e

 A v něm jsem nechal po restartu spouštět autostartngrok.sh přidáním řádky na konec souboru:

@reboot /home/pi/autostartngrok.sh

Po restartu RasPi a dalším přihlášení do terminálu bylo vidět, že je ngrok spuštěný (příkaz: ps ax):

Po přihlášení na účet ngrok.com byly vidět všechny tunely aktivní:

 

 

 


úvodní strana webu AstroMiK.org

poslední úprava stránky 7.11.2016