「docker」タグアーカイブ

ポート開放が要らないVPN

背景

自宅回線をMoneyForwd 光に変更した結果、v6Plus接続になりダイナミックDNS等でのVPN接続は難しくなったしまったので、別の方法を探していました。

やりたいこと

  • 自宅のHEMSなどにiPhoneからアクセスしたい
  • UGREEN NASyncのdockerコンテナで実現したい

TailScale

探した結果、TailScaleというサービスがあることを知りました。イメージとしてはクラウド上にあるルーターにVPN接続したい機器がVPNを張りに行ってそこでルーティングしてもらう感じですね。なので、OUT方向が通れば固定IPやポート開放ができなくてもOKです。

TailScaleはPersonalプランという無償プランがあります。 3 Users 100 Devicesまで無料というなんとも太っ腹なサービス! 素晴らしい(笑)

早速やってみる

  1. iPhoneでTailScalアプリをダウンロード
  2. 新規にアカウント作成してVPN接続!
  3. PCからTailScalの管理ページに入りSettings -> Keysで Auth KeysをGenerate Auth keyをポチっとと押してキーを払い出しコピーしておく
  4. UGREEN NASyncでdockerアプリからプロジェクト作成で適当なプロジェクト名(vpnなど)と保存パス(docker様にアサインした共有フォルダがいいでしょう)を指定して、以下の内容をCompose設定に記載して今すぐデプロイ!
version: "3.8"

services:
  tailscale:
    image: tailscale/tailscale:latest
    container_name: tailscale
    hostname: nasync
    network_mode: "host"
    privileged: true
    volumes:
      - /var/lib:/var/lib
      - /dev/net/tun:/dev/net/tun
    environment:
      # Tailscale 管理画面で作成した AuthKey を入れる
      - TS_AUTHKEY=tskey-auth-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      # LAN 全体 (192.168.1.0/24) を iPhone に広告
      - TS_EXTRA_ARGS=--advertise-routes=192.168.1.0/24
    restart: unless-stopped
  1. TailScaleの管理ページからMachinesを見ると、iPhoneとnasyncが繋がってるはず!nasyncの…からEdit route settingsを選んで目的のサブネットにチェックを入れて保存すればそのサブネットに行けるようになります。

Machines Edit Route Settings

超簡単で素晴らしい!(^_^)/

QNAP TS-230 to UGREEN DXP2800 コンテナ編

移行編に続き、QNAPでもやっていたMRTGをコンテナで動かしてみようと思います。

Dockerアプリ

DXP2800ではコンテナを動かすためにはDockerアプリをインストールします。コンテナの動かし方はQNAP TS-230とほぼ同じです。ただ、TS-230はARMアーキテクチャなのでsk278/rpi-mrtgを使っていたのですが、今回はfboaventura/dckr-mrtgにしてみました。

ついでに前回は手組でコンテナを作ったのですが、今回はDocker-Composeを使って作ってみました。Docker Hubサイトにdocker-composeの記載があるのでほぼそのまま使えます。

---
services:
  mrtg:
    image: fboaventura/dckr-mrtg:latest
    hostname: mrtg
    restart: always
    ports:
      - "8880:80"
    volumes:
      - "./conf.d:/etc/mrtg/conf.d"
      - "./html:/mrtg/html"
      - "/etc/localtime:/etc/localtime:ro"
      - "/etc/timezone:/etc/timezone:ro"
    environment:
        TZ: "Asia/Tokyo"
        HOSTS: "コミュニティ名:ルーターIP"
        WEBDIR: "/mrtg/html"
        USERID: 1000
        GROUPID: 1000
        REGENERATEHTML: "yes"
        INDEXMAKEROPTIONS: "--section=descr"
        CFGMAKEROPTIONS: ""
        MRTG_COLUMNS: 2
    tmpfs:
      - "/run"

こんな感じで、プロジェクトからcomposeを張り付けて今すぐデプロイ!

これで、http://DXP2800のIP:8880/ でMRTGが立ち上がります。

コンフィグはDockerアプリをインストールすると共有フォルダにdockerフォルダができるのでその中のmrtg/conf.d/にルータIP.cfgができています。これを使うもよし自分でいじったcfgを使うもよし。*.cfgファイルを読んでくれるので、ここに自分で作ったhoge.cfgを置けばOKです。ただし、ルーターIP.cfgはないと勝手に作られちゃうのでダミーでも置いとく必要があります。データはmrtg/htmlに吐き出されます。

はい。動きました。簡単ですね(笑)

こんな感じです。

蛇足

原因がいまいちはっきりしないのですが、どうやっても403 Forbidnになってしまう現象が発生しました。やったことを書くともともと一般ユーザーだったユーザーを管理者に格上げしてそのユーザーでdockerを操作したらなぜか、MRTGのグラフが表示されず、403 Forbidnになってしまいました。ファイルパーミションは実は全部、777で作られるようで、実際の権限管理は別途やってるみたいですね。ただ、ユーザーは確かにUNIX的に別のユーザーなので何等か想定しない操作をしてしまったんだと思います。結局、コンテナを作り直したら戻りました。ファイルは元のコンテナからコピーすればOKでした。

QNAP TS-230でMRTGを動かす

今までTS-269 Proを使っていたが老朽化したのでTS-230に買い替えたのだが、他にも買い替えたい理由があり、その一つがコンテナステーションが使えることだった。

という訳で、さっそくMRTGをQNAPで動かしてみた。びっくりするくらい簡単に動いた(笑)

使ったコンテナは以下の2つ

※TS-230はARMアーキテクチャなのでx86用のコンテナは使えないので注意

ほんとは、docker-compose(コンテナステーションでもCreate Applicationから作れる)でコンテナ連携して上げるのがかっこいいと思うけど今回は手動で。コンテナ内に設定残しちゃってるのであんまりいいやり方ではないです。

とりあえずちゃっちゃっと上げる手順を。

コンテナステーションを立ち上げてCreate選んで検索ウインドウでrpi-mrtgとかnginxとか書いてDocker Hubを検索すると目的のコンテナが出てくるので選んで「Install」!

ちなみに、mrtgで検索を掛けると出てこない。また、アーキテクチャがARMでないものも出てしまうので、コンテナイメージ探しはdocker hubでアーキテクチャを指定して探した方がいいかも。

例) https://hub.docker.com/search?q=mrtg&type=image&architecture=arm%2Carm64

その時に、色々聞かれるけど、ほとんど弄る必要はない。

MRTGのデータを保存するところをShered FolderでQNAP内のフォルダを共有しておく。そうしないとnginxコンテナとコンテンツフォルダを共有できないので。QNAP内のフォルダ共有以外のも色々方法はあるけど。まぁ、これが一番楽でしょう。

あとは、Create押せば立ち上がります。

次にnginxコンテナも作る。MRTGをWEBアクセスすることを考えると、Network ModeはBridgeでIP付けといた方がいいと思う。

nginx側でもフォルダ共有かけときます。MRTGでデータ保管で指定したフォルダを/usr/share/nginx/html(デフォルトでここを見る設定になってます)にマウントしておく。

これで、コンテナを立ち上げればhttp://192.168.1.10/でMRTGが見えるはず。

MRTGのcfg書きとかは、コンテナに入って書く。(ほんとは、ファイルリンクしてQNAP側のファイルを書き換えれば反映さるる方が美しいけど、面倒だったので、コンテナ内を編集しちゃいました。。。)

コンテナに入るには、例えばOverviewからコンテナの「>_」をクリックして/bin/shを起動すればWEBから入れます。

以上!