主要ポート全滅でも諦めない!最安VPSを「盾」にして、Nginxの小細工で自宅サーバーへ串を通す全手順

この記事は約19分で読めます。
  1. 📄 1. 概念解説
    1. 10G回線のポート制限をすり抜ける「中継サーバー(リバースプロキシ)」の小細工
      1. 🗺️ データの流れ(ネットワークトポロジー)
      2. 💡 なぜこの小細工で壁を突破できるのか?
      3. 🏆 この小細工がもたらす3つの最強メリット
  2. 📄 2. 実践:ConoHa VPSの仕込みと初期設定
    1. ■ ステップ 1:一番安いプランで「Ubuntu」を召喚する
    2. ■ ステップ 2:セキュリティの防衛線を張る(sub-user作成と公開鍵認証)
      1. 🧭 1. あなた専用の作業用ユーザーを追加する
      2. 🧭 2. TeraTermで「公開鍵認証」のペアを生成する
      3. 🧭 3. VPS側に公開鍵を「ペタッ」と登録する
      4. 🧭 4. 【生存確認】新しいユーザー+鍵でログインできるかテストする
      5. 🧭 5. SSHの設定ファイルを編集して鍵専用にする
      6. 🧭 6. 設定をシステムに反映させる
  3. 📄 3. 実践:ConoHa VPSのNginx(表の玄関)を仕込む
    1. 📄 ステップ 1:VPSにNginxをインストールして起動する
    2. 📄 ステップ 2:ConoHa VPS側のNginx設定ファイル(串通し設定)を作る
  4. 🟢 これで「表の玄関(VPS)」の串引き受け準備は完了!
  5. 📄 4. 実践:自宅ルーターのポートフォワーディング設定と自宅側Nginxの受け皿設定
    1. 📄 自宅ルーターのポートフォワーディング(静的IPマスカレード)
  6. 🏁 5. VPS中継インフラの「骨組み」が完全開通!
    1. 🧪 総仕上げ:本当に届いてる?「仮のドア番」を立てて疎通テスト!
      1. 💡 502 / 504エラーが出たらどこを疑う?
  7. 🚀 次回予告:「WordOps」をインストールして爆速WordPressを立ち上げる!

📄 1. 概念解説

10G回線のポート制限をすり抜ける「中継サーバー(リバースプロキシ)」の小細工

前回の記事で解説した通り、我が家の10G光クロス(MAP-E接続)環境では、Webサイト公開に必須な「80番ポート」と「443番ポート」がルーターの仕様で物理的に塞がっています。つまり、一般的な1GB回線のように「自宅サーバー単体でそのまま公開する」という王道ルートは完全に詰んでいる状態です。
仮に利用可能なポートを使用してWebサイトを公開しようとすると、サイトURLはhttp://test-site.online:50080といった感じで、必ず末尾にポート番号を明記しなければならない不格好なものになってしまいます。

「じゃあ、80/443ポートの解放して自宅サーバーでWordPressを動かすのは諦めて、すべてのデータをVPS(クラウド)に引っ越したり、あるいは10Gで80/443ポートが解放できる回線を引き直さなきゃいけないの?」
――いえ、その必要はありません。

ここで登場するのが、10G回線のポート制限を強引に突破するための「中継サーバー(リバースプロキシ)」という最高の小細工です。

データやWordPress本体はすべて手元の「自宅の爆速10Gサーバー」の中に置いたまま、外からのアクセスを一時的に外部のVPSで受け止める。この連携の仕組みをざっくり図解すると、以下のような流れになります。

🗺️ データの流れ(ネットワークトポロジー)

💡 なぜこの小細工で壁を突破できるのか?

仕組みはめちゃくちゃシンプルです。

  1. 表の玄関はVPS
    読者があなたのブログ(http://test-site.online)にアクセスするとき、最初に見に行くのは自宅ではなくConoHa VPS(IPアドレス)です。VPSはクラウドサーバーなので、当然すべてのポートが24時間いつでもウェルカム状態で全開放されているので80/443ポートが使えます。ここでまず、読者のブラウザからのアクセスを100%安全に受け止めます。
  2. 自宅との間には「裏口の特設トンネル」を通す
    アクセスを受け取ったVPSは、あらかじめ自宅サーバーとの間に張っておいた「裏口のトンネル」を使って、データを自宅へと転送します。
  3. ルーターのポートガチャを回避する
    このとき、VPSから自宅ルーターに向けてデータを送る際、あなたのルーターがポートガチャで引き当てて使用を許可されている「特定のポート番号(例:50080番など)」に変装させて送り込みます。

こうすることで、自宅のルーター(XG-100NE)は「あ、このパケットはうちで使っていい許可済みのポート番号だな!よし通れ!」と素直に通してしまい、最終的に自宅サーバーの中のWordOpsまでデータが無事に届くわけです。

🏆 この小細工がもたらす3つの最強メリット

プロバイダに毎月1万2000円を貢いで固定IPを取るくらいなら、月額数百円の最安VPSを1台借りてこの中継システムを組んだ方が、圧倒的にメリットがデカいです。

  • メリット①:維持費が圧倒的に安い
    データを処理する重たい作業はすべて自宅サーバーがやるため、中継用のVPSは一番スペックが低い最安プラン(月額数百円〜)で十分事足ります。OCNのビジネスプランの足元にも及ばない圧倒的低コストです。
  • メリット②:自宅のグローバルIPが変わっても平気
    MAP-E環境だと、ルーターの再起動などで自宅のグローバルIPアドレスが変わってしまうことがありますが、この仕組みならVPSと自宅サーバーが裏で直接手を握り合っているため、読者側のアクセスが途切れることはありません。
  • メリット③:セキュリティ的にも最強
    自宅サーバーの「生のアドレス(自宅のIP)」を世界中に晒す必要がなくなります。悪意ある攻撃やDDoSアタックの盾にVPSがなってくれるため、宅内ネットワークの健全性がめちゃくちゃ高く保てます。

📄 2. 実践:ConoHa VPSの仕込みと初期設定

■ ステップ 1:一番安いプランで「Ubuntu」を召喚する

データを処理する重たい作業はすべて自宅サーバーがやるため、中継用のVPSは一番スペックが低い最安プラン(月額数百円〜、メモリ512MB〜1GBプラン)で十分足ります。

  • OS選択: Ubuntu 24.04.4 LTS(または導入するリバースプロキシツールが推奨する最新のLTSバージョン)を選んでサーバーを起動。

■ ステップ 2:セキュリティの防衛線を張る(sub-user作成と公開鍵認証)

VPSが立ち上がったら、真っ先にやっておくべきセキュリティの初期設定です。これをやらないと、世界中のボットから24時間ブルートフォースアタック(総当たり攻撃)を食らって秒で踏み台にされます。
ここからの作業はスピード勝負です。無駄な試行錯誤で時間を溶かさないよう、そのままコピペで使える「最短ルートの初期設定カンペ」を用意しました。一気に流し込んでいきましょう!

まずは、お使いのWindowsから「TeraTerm」を起動し、初期ユーザー(root)と契約時に決めたパスワードでVPSにログインした状態でスタートします。

🧭 1. あなた専用の作業用ユーザーを追加する

root(最高管理者)のままで作業するのは危険すぎるので、あなた専用の一般ユーザーを作成します。 コマンド内の sub-user の部分は、あなた自身の好きなアカウント名(半角英数字)に書き換えて実行してください。

Bash
# 新しいユーザーを追加(your-nameの部分は自分の名前に変えてね)
adduser sub-user

# 作成したユーザーにsudo権限(管理者権限)を与える
usermod -aG sudo sub-user

※実行するとパスワードや名前を求められるので、画面の指示に従って入力してください。

🧭 2. TeraTermで「公開鍵認証」のペアを生成する

次に、ユーザー()のパスワード入力なしで安全にログインするための「鍵(暗号化ファイル)」を2つ(公開鍵と秘密鍵)作ります。

  1. TeraTermの上部メニューの [設定] > [SSH鍵生成] をクリックします。
  1. 鍵の種類は [ED25519] のままでOK。そのまま [生成] ボタンを押します。
  1. 鍵用のパスフレーズ(パスワード)を2回入力します(セキュリティのため設定を強く推奨)。
  1. 最後に、以下の2つのボタンを順番に押して、ファイルをWindows内の分かりやすい場所(デスクトップなど)に保存します。
  • [公開鍵の保存] を押す > id_ed25519.pub という名前で保存
  • [秘密鍵の保存] を押す > id_ed25519 という名前で保存

保存したら、一度 exit と叩くかTeraTermを閉じて、今作ったばかりの新しいユーザー(your-name)とパスワードでVPSにログインし直して次の作業へ進みます。

🧭 3. VPS側に公開鍵を「ペタッ」と登録する

手元のWindowsに2つの鍵が保存できたら、現在rootでログインしているTeraTermの画面に戻ります。 新しく作ったユーザー(sub-user)がこの鍵を使えるように、rootの権限を使ってフォルダとファイルを先回りで作成し、鍵の中身を書き込みます。

1. 新ユーザーのフォルダ内に専用ディレクトリを作成する
Bash
# your-nameの部分はご自身が作ったユーザー名に変えてください(以下同)
mkdir -p /home/sub-user/.ssh

# rootのままだと権限がバグるので、フォルダの所有者を新ユーザーに変更する
chown -R your-name:sub-user /home/sub-user/.ssh

# 自分以外は見られないように権限(パーミッション)を制限
chmod 700 /home/sub-user/.ssh
2. 設定ファイル(authorized_keys)を新しく作成して開く
Bash
nano /home/sub-user/.ssh/authorized_keys

黒い画面に、文字の入力ができるエディタ画面(nano)が開きます。

3.Windows側の「公開鍵(id_ed25519.pub)」の中身をコピペする
  • Windowsに保存した id_ed25519.pub を、メモ帳などで開いて中身の文字列(ssh-ed25519 AAAAC3Nza...)を丸ごと全てコピーします。
  • TeraTermの画面に戻り、「マウスの右クリック」 を1発ポンと押すと、コピーした長い文字列がそのまま画面にペタッと貼り付けられます。
4. 保存して閉じる
  • キーボードの Ctrl + OEnter で保存します。
  • キーボードの Ctrl + X でエディタを閉じます。
5. 仕上げにファイルの所有者と権限を整える
Bash
# ファイルの所有者をsub-userに変更
chown sub-user:sub-user /home/sub-user/.ssh/authorized_keys

# 自分以外は読み書きできないようにする(これを忘れるとエラーでログインを拒絶されます)
chmod 600 /home/sub-user/.ssh/authorized_keys

🧭 4. 【生存確認】新しいユーザー+鍵でログインできるかテストする

※注意:今開いているrootのTeraTerm画面は絶対に閉じないでください!
万が一設定が間違っていた場合、締め出されて二度と入れなくなります。

  1. 今の画面はそのまま残した状態で、新しく別のTeraTermをもう1ウィンドウ立ち上げます。
  2. VPSのIPアドレスを入力して [OK] を押します。
  1. ユーザー名に作成した sub-user を入力します。
  1. 認証方式の欄で [RSA/DSA/ECDSA/ED25519鍵を使う] にチェックを入れ、[秘密鍵] ボタンを押して、Windowsに保存した id_ed25519(秘密鍵の方) を選択します。
  1. 鍵生成時に決めた「パスフレーズ」を入力して [OK] を押します。

💡 【超重要】画面の挙動の答え合わせ

  • 鍵作成時にパスフレーズを設定した人: ここでそのパスフレーズを入力すればログインできます。ネットの海に晒されているVPS側の泥臭いアカウントパスワードはもう一切使いません。
  • 鍵作成時にパスフレーズを「空欄」で進めた人: パスフレーズの入力欄は空欄のまま[OK]を押すだけで、文字入力なしでシュッと自動ログインできます!(※手元のPCから鍵ファイルが盗まれない限り安全で、最高に快適な爆速モードです)

新しく作ったユーザー(sub-user)と鍵を使って別ウィンドウで無事にログインできることが確認できたら、いよいよ最後の仕上げです。 まだ閉じずに残しておいた「rootユーザー側」のTeraTerm画面に戻り、ボットが狙ってくる「rootからの侵入」と「泥臭いパスワードの総当たり」のルートを物理的に遮断します。

🧭 5. SSHの設定ファイルを編集して鍵専用にする

Bash
# 設定ファイルを編集
nano /etc/ssh/sshd_config

黒い画面に設定ファイルの中身がズラリと開きます。矢印キーで下へスクロールしながら、以下の2行を探して書き換えてください。

  • PermitRootLogin no
    👉 初期値が yesprohibit-password になっていたら、消して no に書き換えます。これでrootでの直接ログインを完全拒絶します。
  • PasswordAuthentication no
    👉 初期値が yes になっていたら、消して no に書き換えます。これでパスワード認証を禁止し、鍵を持っている人しか入れなくなります。

書き換えたら、キーボードの Ctrl + OEnter で保存し、Ctrl + X でエディタを閉じます。

🧭 6. 設定をシステムに反映させる

最後に、変更した設定を有効にするためにSSHサービスを再起動します。

Bash
# 設定を反映するためにSSHサービスを再起動
sudo systemctl restart ssh

⚠️ 【超重要】これで次回からrootでのログインや、パスワードでのログインは世界中の誰も(あなた自身すらも)不可能になりました。今後は必ず「sub-user + 秘密鍵(id_ed25519)」のコンビでログインしてください!

📄 3. 実践:ConoHa VPSのNginx(表の玄関)を仕込む

世界中からのアクセスを一旦すべてConoHa VPSのNginxで受け止め、そこから自宅ルーターの「ポートガチャで当たったポート」に向けて、Nginxの機能でパスを横流し(リバースプロキシ)します。

まずは、新ユーザー(sub-user)の画面でVPS側にNginxを召喚します。

📄 ステップ 1:VPSにNginxをインストールして起動する

Bash
# パッケージリストを更新
sudo apt update

# Nginxをインストール
sudo apt install nginx -y

# Nginxを起動し、OS再起動時も自動起動するように設定
sudo systemctl start nginx
sudo systemctl enable nginx

📄 ステップ 2:ConoHa VPS側のNginx設定ファイル(串通し設定)を作る

お名前.comで設定したドメインへのアクセスを、自宅サーバーのガチャ当選ポート(例:50080番)へ安全に流し込む設定を書きます。

Bash
# あなたのサイト用の設定ファイルを新規作成
sudo nano /etc/nginx/sites-available/test-site.online

中身は無駄を極限まで削ぎ落とした、以下のような「小細工リバースプロキシ」設定になります。

Nginx
server {
    listen 80;
    server_name test-site.online; # お名前.comで取得したドメイン名

    location / {
        # ★ここが最大の小細工!
        # 「確認くん」等で調べた自宅の現在のIPv4アドレスと、ガチャで当たった利用可能ポートを指定します。
        # (※以下は、自宅IPが 153.156.79.69 で、当選ポートが 50080番 の場合の記述例です)
        proxy_pass http://153.156.79.69:50080;

        # 自宅サーバー側で迷子にならないよう、アクセス元の情報をそのまま引き継ぐ設定
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

書き換えて保存(Ctrl+OEnterCtrl+X)したら、この設定を有効化してNginxをリロードします。
ここでは、最初から入っているデフォルトのサンプル設定と競合してエラーが出るのを防ぐため、古い設定を無効化してから今回の新しい設定を追加します。

Bash
# 1. 最初から入っている初期設定ファイルを無効化(競合防止)
sudo rm /etc/nginx/sites-enabled/default

# 2. 今回作成した設定ファイルのシンボリックリンクを作成して有効化
sudo ln -s /etc/nginx/sites-available/test-site.online /etc/nginx/sites-enabled/

# 3. Nginxの設定に構文エラーがないかチェック
sudo nginx -t

# 4. 「syntax is ok」が出たら、Nginxをリロードして反映
sudo systemctl reload nginx

🟢 これで「表の玄関(VPS)」の串引き受け準備は完了!

これで、世界中の読者が http://test-site.online にアクセスすると、ConoHaのNginxがそれをガチッとキャッチし、即座に自宅側の「(例) 153.156.79.69の50080番ポート(裏口)」へとシュッとパスを回す構造の半分が完成しました。

次は、このパスを自宅側で受け止めるための「自宅ルーターのポートフォワーディング(50080番ポートの転送)設定」と、受け取ったアクセスを処理する「自宅側Nginxの受け入れ設定」へと進みます。

📄 4. 実践:自宅ルーターのポートフォワーディング設定と自宅側Nginxの受け皿設定

VPSのNginxから (例)http://153.156.79.69:50080 で飛んできたアクセスを、自宅のネットワーク内で正しくWordPress(WordOps導入予定の場所)を動かすサーバーまで届ける設定です。

📄 自宅ルーターのポートフォワーディング(静的IPマスカレード)

(※ここでは、光クロス環境で最も普及しているルーター「XG-100NE」を使った具体的な手順で解説します!)

まずは自宅のネットワークの門番であるルーターの設定画面を開きますが、ここが光クロス環境における最大の罠です。

  • XG-100NE(NTTのレンタルルーター)がある人:
    普通の画面(192.168.1.1)を開いても、MAP-E環境のポート設定画面は出てきません。 ブラウザのアドレスバーに必ず http://192.168.1.1/t/ と入力してください。
    すると、以下の「配信済事業者ソフトウェア一覧」という画面が表示されます。
  • 市販ルーター(BUFFALOなど)を使っている人:
    ご自身で用意した市販ルーターの管理画面を開きます。 (※BUFFALOなどのルーターでは初期値 192.168.11.1 などが定番になっていますが、ルーターの動作モード(APモード等)によってはIPアドレスが変わっている場合があります。
    開けない場合は、スマホやPCの『デフォルトゲートウェイ』のIPを確認するか、各メーカーの機器検索ツール等を使って管理画面のアドレスを特定してください)

ログインしたら、以下のように「裏口(50080番)」から入ってきたアクセスを、自宅サーバー(例:192.168.1.100)の「80番」へ変換して中に通す設定を入れます。

  • 変換対象のプロトコル:TCP
  • 外部公開ポート(WAN側)50080 (ポートガチャで当たったポート)
  • 転送先IPアドレス(LAN側)192.168.1.100 (自宅サーバーのプライベートIP)
  • 転送先ポート(LAN側)80

【ここがポイント!】
外からは 50080番 で入ってきますが、ルーターを通過する瞬間に一般的な 80番(HTTP)に変換して自宅サーバーに届くようにします。これで自宅サーバー側は「変なポート」を意識せず、ごく普通のWebサーバーとして待ち構えることができます。

🏁 5. VPS中継インフラの「骨組み」が完全開通!

お疲れ様でした!これで「主要ポート(80/443)全滅」というMAP-E環境の絶望をバイパスする、最強の中継ルートの骨組みが完成しました。

  1. 世界中の読者が http://test-site.online にアクセス
  2. ConoHa VPSのNginx(80番) がそれをガッチリとキャッチ
  3. VPSの小細工設定により、自宅の50080番ポート(裏口) へシュッと転送
  4. 自宅の XG-100NE(ルーター)50080番ポートで捕まえ、一般的な 80番 に変換して自宅サーバーへ流し込む

🧪 総仕上げ:本当に届いてる?「仮のドア番」を立てて疎通テスト!

まだ自宅サーバーにはWebサーバー(Nginx)を入れていませんが、パケットが本当にここまで届いているか、Ubuntuの標準機能を使ってテストしてみましょう!

自宅サーバーのターミナルで、一時的に80番ポートで待ち受ける以下のコマンドを叩きます(※管理者権限が必要です)。

Bash
# 80番ポートで簡易的に待ち受け、アクセスがあったら「TANO-KI!」と返す
sudo nc -lk 80 <<< "HTTP/1.1 200 OK"

(※もし nc コマンドがなければ sudo apt install netcat-openbsd -y で一瞬で入ります)

この状態で、スマホ(Wi-Fiを切った4G/5G回線など)のブラウザから http://test-site.online にアクセスするか、外部環境から curl -I http://test-site.online を叩いてみてください。
画面にHTTP/1.1 200 OKと表示されたら……!!!

世界中からのアクセスが、VPSを通り、XG-100NEの裏口(50080番)を抜け、あなたの自宅サーバーの80番ポートに「今、100%届いた」ことが証明されました!!!大・勝・利です!!!

確認できたら、自宅サーバー側で Ctrl + C を押して簡易待ち受けを終了させておきましょう。

💡 502 / 504エラーが出たらどこを疑う?

もし設定後にドメインを叩いて 502 Bad Gateway504 Gateway Timeout が出たら、VPSまではパケットが届いている証拠(ドメインは合っている)。原因は「VPSから自宅サーバーの間のどこかで詰まっている」ことです。 以下の3点を curl を叩きながら上から順にチェックしましょう!

  1. 自宅のIPアドレスが変わっていないか?(VPSの proxy_pass に書いたIPの再確認)
  2. XG-100NEの http://192.168.1.1/t/ で設定したポート番号(50080など)と、VPS側で指定したポート番号が一致しているか?
  3. 自宅サーバー側のファイアウォール(ufw等)で、80番ポートがブロックされていないか?
    ufw-statusで確認して、もしStatus: inactiveと返ってきた場合はsystemctl start ufwでufwを起動してufw allow 80/tcpと入力したあと、ufw-reloadで再読み込みを行いポート80番を解放しましょう。

🚀 次回予告:「WordOps」をインストールして爆速WordPressを立ち上げる!

ドアの前に届いたアクセスを迎え撃つ「受け皿(Webサーバー)」は、まだこの段階では自宅サーバーの中に存在していません。
次回の記事では、いよいよ自宅のUbuntuサーバーに「WordOps」という最強の爆速環境を数発で構築するコマンドを叩き込み、この流れてきたアクセスをWordPressの画面へと結びつけます!
インフラの開通、まずはここまで完全クリアです!(ヨシ!)

次の記事は2026年7月25日公開です。

主要ポート全滅の10G光クロスで挑む!自宅サーバーに「WordOps」をインストールしてVPS中継の串と完全同期させるWordPress構築ガイド
WordOpsのインストールから、VPS・ルーターを経由したHTTP外線開通、WordPress管理画面へのログインテストまでを徹底解説!複数箇所のポート設定をNginxログで紐解きながら、リバースプロキシ環境下で確実に「Hello world!」を表示させるまでの全手順をまとめました。

コメント

タイトルとURLをコピーしました