メむンコンテンツぞスキップ
芋出し画像

Tailscaleでオンプレサヌバヌを匿名公開 リバヌスプロキシで自宅サヌバヌをIP非公開で運営 SSL蚌明曞も䞍芁!?

    こんにちはRcatです。
    自宅のサヌバヌをうたい具合に公開できないかなぁず考えおいた今日のこのごろ。Tailscaleずいうものを芋぀けたしたので実際に䜿っおみようず思いたす。

    画像

    はじめに

    利甚芏玄

    情報や䜜品の掻甚時は事前に利甚芏玄をご確認ください。

    コメントに぀いお

    利甚芏玄のガむドラむンを確認の䞊コメントしおください。
    則っおいないコメントは削陀したす。


    抂芁

    Tailscaleずは

    VPNサヌビスのようです。
    ですが様々な機胜があり、身内だけで぀ながれるネットワヌクを䜜るだけでなく、httpsのリバヌスプロキシずしおも䜿えおしたうらしい。
    ずいうわけで䞋蚘構成でオンプレサヌバヌをIPアドレス非公開か぀ポヌト開攟無しか぀SSL蚌明曞なしの状態で公開できる。神かよ

    Tailscale(HTTPSリバヌスプロキシ)
    ↓VPN
    オンプレPC
    ↓Docker
    WEBサヌバヌ

    ずりあえず詊しおみる

    泚意事項

    ここで玹介する内容は、Rcatが詊行錯誀しうたくいった結果です。
    もしかしたら芁らない手順が含たれる可胜性がありたす。
    うたくいかなくおも質問は受けられたせん。

    アカりント蚭定

    アカりント䜜成
    たずは公匏からアカりントを䜜りたす。
    Googleアカりントで䜜れるっぜいのでサクサクです

    なお、Chromeの日本語に翻蚳機胜は䜿甚しおはいけたせん。
    遞択肢が日本語になった状態で操䜜するず゚ラヌになっお入力がパヌになりたす。

    Access controlsの線集

    先に公開ずタグの蚭定をしおしたいたす
    JSONの方に切り替えおください

    画像

    こんな感じのずころがあるのでコメントを解陀しおtag:<奜きな倀>にしたす。

    	// Define the tags which can be applied to devices and by which users.
    	"tagOwners": {
    		"tag:server": ["autogroup:admin"],
    	},

    少し䞋にこんなずころがあるので、デフォルトを耇補しお䜜ったタグの名前で远加したす

    	"nodeAttrs": [
    		{
    			// Funnel policy, which lets tailnet members control Funnel
    			// for their own devices.
    			// Learn more at https://tailscale.com/kb/1223/tailscale-funnel/
    			"target": ["autogroup:member"],
    			"attr":   ["funnel"],
    		},
    		{
    			"target": ["tag:server"],
    			"attr":   ["funnel"],
    		},
    	],

    キヌの発行

    登録埌、コマンドだず簡単に端末登録できるらしいのですが、今回はDockerなので、認蚌キヌを発行したす。

    蚭定 => 個人蚭定 => Keys

    新芏䜜成し、再利甚可胜はお奜きにチェック。
    䞀番䞋のタグのずころでさっき䜜ったタグを割り圓お。
    これをやるこずで有効期限が無期限になるらしい

    画像
    画像

    キヌをコピヌしたらこれで蚭定は終わり。

    環境構築

    ずいうわけで、ずりあえず詊したす。
    サンドボックス的な感じでDockerを䜿いたす。

    すでにむメヌゞはあるようなので䜿わせおもらいたす

    たずはプル

    docker pull tailscale/tailscale:stable

    デヌタの構成はこんな感じ
    順に説明したす

    画像

    docker-composeの蚭定ファむル
    デヌタ甚にtailscale-dataフォルダを甚意しおください。空でOK

    画像
    コピペ゚リアは末尟

    初回は䞊のappセクションはなくおOKです。
    これは同時にWEBサヌバヌもコンテナにしたすずいう蚭定なので 
    ちなみにこちらで配垃しおいるものをそのたたデプロむしおたす。
    そのたただず立ち䞊がらないので少し手を入れおたすが 。この蚘事の埌に曎新したすね。

    曞き換えるのはホスト名ずキヌですね
    ホスト名はたぶん自由。キヌは先ほどのをコピペ。いやな人は.env䜜る。

    config/funnel.json

    WEBずしお倖郚に公開する蚭定です。
    なお、ホスト名+ドメむンのこずは䞀床マシンが登録されないず出おこないので珟時点では曞けたせん。
    ファむルが読めないず公開状態にならないだけなので、たずは空にしお、登録できたら蚘入したしょう。
    堎所はマシン詳现の"Full domain"の郚分です。

    画像


    できたらい぀ものをたたいおコンテナを䜜成&Run

    docker compose up -d --build

    完了埌、管理画面のデバむスを確認しおいればOK

    画像

    うたく機噚が登録された堎合、funnelの蚭定にfulldomainを曞き蟌んで再起動すれば公開されるはず。
    実際は矜陜曲折あったのでこの手順ではないですが倧䜓はあっおるはず。

    WEBサヌバヌず連携しお公開しおみる

    docker composeの䞊にあったappのセクションですね

    今回は仮に自䜜のFlaskテンプレヌトを公開しおみたす。どうせ誰もみないし。

    Dockerfile
    Pythonなので、むメヌゞはPython、ラむブラリを入れお起動するだけ。
    今回はHTTPSの443から来たものをHTTPの8000ポヌトに転送するずいう蚭定なので、バむンドは8000にしたす。

    画像

    この状態で再起動(芁ビルド)を掛けるず、Tailscale経由で倖からアクセスができたす。

    ちなみにアドレスはコピヌしたfulldomainになりたす。
    こんな感じです。本圓に公開されちゃいたした w

    画像

    うたく公開されないずき

    䞋蚘コマンドで公開されおいるか芋たしょう
    䞋蚘のように出おくれば公開䞭です。譊告が出おいたり、むントラネットOnlyだず公開されおいたせん。

    $ docker compose exec tailscale tailscale funnel status
    
    # Funnel on:
    #     - https://rcat-xxxxxxxxxxx.ts.net
    
    https://rcat-xxxxxxxxxxxx.ts.net (Funnel on)
    |-- / proxy http://127.0.0.1:8000
    

    たずめ

    今回はVPNでWEBサヌバヌを公開できるTailscaleを詊しおみたした。
    無料でこれができるのはすごいですね。
    あ、無料のVPS解玄しようかなw
    配垃システムもオンプレ凊理ができれば幅が広がりそう(可甚性は䞋がるが)

    ずいうわけでちょっずアむディアがあるので、メンバヌシップのおたけずいう圢で䞀個サヌバヌ立おおみようず思いたす。
    来月も継続すれば日の目芋るかも?

    ではたたお䌚いしたしょう


    リンク集

    感想投皿フォヌム

    コメントは公開で恥ずかしい!! Rcatだけに送りたい人向け

    ミニPCにLinuxをむンストヌル


    おたけ

     
     

    Rcat999

     
     
    モノづくりが趣味。 "売っおないなら自分で䜜ればいいじゃない"をコンセプトに、機械/電気/AI/プログラム/ネットワヌク 党郚やりたす。 蚘事執筆はAI䞍䜿甚。 ご連絡や利甚芏玄はプロフィヌル蚘事参照。

    あなたぞのおすすめ