Back to tech

nodeモジュール"ngrok"のメモ

2 min read
Table of Contents

以前GoogleHomeMiniの記事をあげました

ここ

nodoで使ったモジュールは色々ですがその中で注目したのがngrokというモジュールです

このモジュールによってローカルエリア外にサーバーを立てに行くだけでなく、dnsで適当にアドレスも振ってくれてるものです(神モジュール)

しかし、デフォルトのままだとセキュリティガバガバの状態で非常に危険です

そのため、このモジュールについて調べたので備忘録がてら書いておきます

ngrok

ngrokはNATやファイアウォールの背後にあるローカルサーバを安全なトンネルをつくってインターネットに公開するモジュールです

httpとhttpsを作ることができる(同時に立てる 片方のみはできないっぽい)

無料プランと有料プランあり(しかし、アカウントを作らなくても使うことができる)

無料プランと有料プランの違いは色々ありますが、個人的に大きな違いは固定ドメインが取れるかどうかでした

現在は有料版でないと取得することができません(以前は無料版でも固定ドメインが取得できたらしい・・・)

無料プランはダッシュボードで現在公開しているサーバーを見ることができることぐらいしかない

詳しくは⇨ http://ngrok.com/pricing

Auth認証をかけることができる

※ただしBasic認証のみ

URL:http://ngrok.com/

プログラム

Basic認証とログインするともらえるAPIを入れたプログラムを乗せておきます

事前に以下のモジュールが必要です

install
npm init
npm install express --save
npm install body-parser --save
npm install ngrok --save

プログラム

起動するとport:8082を開けてwebサーバーを作ります

var express = require('express');
var bodyParser = require('body-parser');
var https = require( 'http' );
var ngrok = require('ngrok');
var app = express();

var myport = 8082;

//parser
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());


//get
app.get('/', function(req, res) {
    res.send("ハロー\n");
});

app.post('/', function(req, res) {
    var text = req.body.text;
    res.send(text + "\n");
});


var server = app.listen(myport, function(){
    ngrok.connect({
        authtoken: "***********************************F", //yourAPI
        addr: myport,
        auth: 'user:password',  //basic認証 ユーザー名:パスワードとりあえずuser passwordにしてる
        }, function (err, url) {
        if(!err){
            console.log("Start Server");
            console.log(url);
        }else{
            console.log(err);
        }
    });
});

起動後

$ node app.js
Start Server
http://de4ad1ec.ngrok.io //ここはランダム

curlをかけて起動を確認

curl -u user:password -H "Accept: application/json" -H "Content-type: application/json" -d '{ "text" : "hello" }' <a data-mce-href="http://de4ad1ec.ngrok.io" http://de4ad1ec.ngrok.io

httpsの上にbasic認証だから安全なのかなぁー・・・うーんって感じです

認証あたりはpassportを使って自前で組み立てたほうがいいかもしれない

なにもしてないよりはいいかも・・・