🏡

おうちサーバーをポケットWiFi+VPSで運用してみた

2024/12/05に公開

みっなさ〜〜〜〜ん!こ〜んに〜ちわ〜〜〜〜〜〜〜!!!! 🖐️
jig.jp Advent Calender 2024 5日目いかがお過ごしでしょうか?
本日の記事を担当します@haruyuki_16278 です。
まただいぶ久しぶりのエンジニアブログになりましたね。今回はおうちサーバーの話をします。

🖥️ おうちサーバー、ありますよね?

あります。先代のデスクトップマシンにUbuntuをインストールしたやつが。


このケースマジで可愛いのでお気に入りです🌸

このマシンでMinecraftサーバーを立てたりnginxを立てたりして遊んでたのですが、誰がアクセスしてくるか分からないサーバーと同じネットワーク内に普段使いのスマホやノートPCをつなぐのは不安です。
なので、過去の私は↓のような構成としていました。

こうすると普段使いのデバイスがおうちサーバーのPCから見えづらくなるので少し安心感が高まります。
しかし、この構成だとルーター2が安物だったこともありwindowsゲームマシンのpingが高い等の問題がありました。

💔 ネットワーク分離構成

そこで、使えずに余らせていたポケットWiFiにサーバーを繋いで、家に引き込んでいる光回線は普通に普段使いにすることでネットワークを完全に分離してしまおうと考えました。
NASのような利用はしづらくなりますが、もともと外向けのサーバーなので今回は問題にはなりませんでした。

具体的には↓のような構成です。

🧑‍🍳 レシピ

  1. Ubuntuをサーバー用マシンにインストールする
    • ハードウェア構成に合わせてストレージのマウント先を設定しておく
    • ポケットWiFiからインターネット接続するようにする
      • ポケットWiFiはブリッジ接続にして、クレードルを用いるなどして有線接続する
  2. Dockerをセットアップする
  3. VPS(OS:debian12,1Core,RAM:512MB,SSD:25GB)を契約してセットアップする
    • nginxのインストールとセットアップをする
      • リバースプロキシに利用する
  4. サーバーからVPSに対してsshできるように公開鍵認証を設定する
  5. Dockerコンテナ等でself-hostedサービスを適当に作成してみる
  6. SSHポートフォワーディングでVPSから転送するようにする
  7. VPSでufwを設定して必要なポートの通信を通すようにする
  8. VPSのコントロールパネルから必要であればポートのアクセス制限を設定する

Dockerコンテナのデーモン化

これはDocker Composeをsystemdのサービスにするという記事を参考に、というかそのまま利用させてもらいました。😈

$ sudo systemctl enable --now docker-compose-service@nginx

↑のコマンドを実行するだけでDockerコンテナを利用したサービスを作成できるのがめっちゃ便利で助かっています。

このおかげで手軽にMinecraftサーバーも作れたり...いいことづくめです!

SSH ポートフォワーディング

おうちサーバーに対して外からアクセスするためにさくらのVPSを借りて、このVPSに対してリモートポートフォワーディングしています。

また、多段SSHやポートフォワーディングを '.ssh/config' に書くを参考にしながらサーバーの起動時に自動でポートフォワーディングするように設定しています。

✅ 運用してみて

Minecraftのマルチプレイに利用するくらいならちょっと重めのネットも気になりませんでした。pingは100ms前後くらいで安定してました。
が、UDPが問題で、FIFOとSSHポートフォワーディングでUDP転送をやる方法や、socatを使う方法を試したのですが、どれもうまくできませんでした。
やはりVPNを張るしか...(1敗済み)

それはそうと、無事回線を分離できたのでValorantのpingが20ms前後で安定するようになりました。ランクもブロンズで安定です 🥺
お手元にポケットWiFiと適当なPCが余っている方、ぜひ自宅の回線から独立したネットワークでのおうちサーバー運用にチャレンジしてみて下さい!

おうちサーバーを立ててみんなでマイクラした日のgrafana

jig.jp Engineers' Blog

Discussion