主要ポート全滅の10G光クロスで挑む!自宅サーバーに「WordOps」をインストールしてVPS中継の串と完全同期させるWordPress構築ガイド

この記事は約27分で読めます。

1. なぜ自宅サーバーに「WordOps」なのか?

超高速なWordPress環境といえばKUSANAGIが有名ですが、本環境においてKUSANAGIを採用せず、OSの系統を丸ごと「Ubuntu」へ変革させてまでWordOpsをネイティブ導入するのには、運用の継続に関わる決定的な技術的理由があります。

  1. 80番ポート必須のプロビジョン・自動更新トラップ
    KUSANAGIは、最初のサイト構築(プロビジョン)時および3ヶ月ごとのLet’s Encrypt自動更新の際、システムの仕様上、外部からの「80番ポート」へのアクセスを必須とします。
    「今回は外部にVPSを中継させているんだから大丈夫だろう」と思いがちですが、この方式(WEB認証)の場合、認証時に自宅のグローバルIPに対して直接80番ポートを叩きにこられてしまいます。
    主要ポートが全滅し、最初から80番が塞がれているXG-100NEでは、この認証通信を絶対に受けることができません。結果として、初期セットアップ段階で100%エラーを吐いて詰むだけでなく、その後の定期的な自動更新を含めた継続運用が極めて困難な形態なのです。
  2. 仮想化レイヤーによるリソースロスと別OSの抱え込み
    個人が自宅でKUSANAGIを触る場合、VMware等の仮想環境上にStream 9ベースでパッケージングされた巨大なイメージファイルを丸ごと展開して常駐させるか、Dockerコンテナに載せるしかありません。WordPressを動かすためだけに、重たい仮想化のオーバーヘッドを挟むため、普段使いのUbuntuとはコマンド体系も設定も異なる別系統のOSイメージを保守させられるのは、個人運用の自宅サーバーとしては極めて身動きが重く、不便です。

🛠️ WordOpsがもたらす完全な回答

そこで辿り着いた別の手段が、Debian/Ubuntu系でしか動かない救世主「WordOps(ワードオプス)」です。

WordOpsであれば、無駄な仮想化やDockerのネットワーク迷宮は一切不要。ベアメタルのホストOS(Ubuntu)に直接生でインストールし、最初のサイト作成時点でSSL認証を完全に分離(httpのみで構築)することが可能です。
これにより、自動更新が必要なSSL認証自体は前段の「VPS中継(串)」側にスマートに処理させ、自宅のベアメタル側はパケットの処理だけに100%集中できるため、ポート全滅環境でも初期構築からその後の継続運用まで一切バグることなく、100%クリーンに完結させることができます。

今動いているUbuntu上でたった数行のコマンドを叩くだけで、Nginxの最適化、PHPのチューニング、MySQLのセットアップ、そして強力無比なRedisキャッシュ環境の構築までを全自動でネイティブに最適化。
10G光クロスの帯域と物理マシンの生パワーを100%ダイレクトにWordPressへ叩き込む、至高の爆速環境を構築していきましょう。

2. 10G環境の自宅サーバーにWordOpsを迎えるための下地

WordOpsは、独自のスクリプトを使って最適化されたNginxやPHP、MariaDBなどをシステムに直接インストールします。
もし、OSインストール時に「なんとなく」入れてしまった標準のNginxやApache、あるいは古いPHPのパッケージが残っていると、ポートの奪い合いが発生したり、設定ファイルが予期せぬ場所に上書きされて構築が失敗する可能性が飛躍的に増加します。

まずはサーバーを真っ新な「素のUbuntu」に戻し、WordOpsを迎え入れるための下地を作るパージ(完全削除)コマンド群を実行します。

1) 既存サービスの停止と自動起動の解除

まずは、現在裏で動いている可能性があるWebサーバー関連のサービスを確実に停止させます。

Bash
# Nginx、Apache、MySQL、PHP-FPMの停止
sudo systemctl stop nginx apache2 mysql php* 2>/dev/null

# 自動起動の無効化
sudo systemctl disable nginx apache2 mysql php* 2>/dev/null

2) パッケージの「設定ファイルごと」完全パージ

apt remove ではなく、設定ファイルごとシステムから消し去る apt purge を使用して、競合を根絶します。

Bash
# Web・データベース・PHP関連パッケージの完全削除
sudo apt purge -y nginx* apache2* mysql* mariadb* php*

# 使われなくなった依存パッケージの自動削除
sudo apt autoremove -y

# キャッシュのクリーンアップ
sudo apt clean

3) 残存ディレクトリの物理削除(ダメ押し)

設定ファイルやログが /etc/var に中途半端に残っていると、WordOpsのインストーラーが「すでに環境が存在する」と誤認してバグる原因になります。ディレクトリごと物理的に消し去ります。

Bash
# 競合の可能性があるディレクトリを完全に削除
sudo rm -rf /etc/nginx /etc/apache2 /etc/mysql /etc/php
sudo rm -rf /var/lib/mysql /var/lib/nginx /var/log/nginx /var/log/mysql

これで、あなたのUbuntuサーバーは、WordOpsという最強の城を建てるのにふさわしい「完全な更地(まっさらな素のUbuntu)」になりました。何一つ衝突するものはありません。

3. パケット中継先の生存チェック

競合パッケージをパージしてUbuntuを完全に更地(まっさらな状態)にしたら、WordOpsをインストールする前に、前回の記事で構築したVPS(ConoHa)側のリバースプロキシ設定をいま一度、目視確認しておきます。

ハードウェアトラブルなどでOSをイチからクリーンインストールし直した場合などの理由により、この「VPS側が認識している転送先」と「自宅サーバーの現在のグローバルIP」がズレたりすると、この後の構築や疎通確認で確実に迷宮入りするからです。

🛠️ チェック手順

VPSにSSHログインし、前回の記事で作成したNginxの設定ファイル(例: /etc/nginx/sites-available/test-site.online)を開いて、proxy_pass の記述を確認します。

Nginx
# VPS側の設定ファイルを目視確認
location / {
    # ⭕️ ここが「現在の自宅のグローバルIP: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;
}

注意
もし自宅のプロバイダーから割り当てられている現在のグローバルIPアドレスが変わっている場合は、このタイミングでVPS側の記述を現在の正しいIPへ修正し、sudo systemctl restart nginx で反映させておいてください。

VPS側の転送先が、しっかりと現在の自宅の「IPアドレス:50080」をロックオンしていることが確認できたら、いよいよ自宅サーバー側での本丸召喚フェーズへと進みます。

4. WordOpsのインストール & httpサイトの爆速作成

事前確認が完了したら、いよいよ自宅のベアメタルUbuntu上に「WordOps」をインストールし、まずは「串通し」の受け皿となるサイト(http環境)を立ち上げます。

KUSANAGIのように初期セットアップ時に80番ポートでのLet’s Encrypt認証を強要されないため、主要ポート全滅環境の10G回線でも一切のエラーを吐くことなく、一撃でサイト構築が完了します。

1) WordOpsのワンライナーインストール

WordOpsの導入は非常にシンプルです。まずは以下のたった1行のスクリプトを実行するだけで、WordOpsの管理ツール(woコマンド)本体と、その実行に必要な最小限の環境がすべて自動でインストールされます。

Bash
# WordOpsのインストールスクリプトを実行
wget -qO wo wops.cc && sudo dst_wops=standard bash wo

上記コマンドを入力すると、以下のようなログが流れます。
インストールの途中で、Gitの内部管理用に使用する「ユーザー名(Name)」と「メールアドレス(Email)」を求められるので、任意のものを入力してください(外部に送信されることはなく、ローカルにのみ保存されます)。

Bash
Welcome to WordOps install/update script v3.22.0

Installing wo dependencies      [OK]
Installing WordOps      [OK]
Running post-install steps      [OK]
WordOps (wo) require an username & and an email address to configure Git (used to save server configurations)
Your informations will ONLY be stored locally
Enter your name: test-user
Enter your email: test-user@example.com
Synchronizing wo database, please wait...
WordOps (wo) installed successfully

To enable bash-completion, just use the command:
bash -l

To install WordOps recommended stacks, you can use the command:
wo stack install

To create a first WordPress site, you can use the command:
wo site create site.tld --wp

WordOps Documentation : https://docs.wordops.net
WordOps Community Forum : https://community.wordops.net

Give WordOps a GitHub star : https://github.com/WordOps/WordOps/

WordOps (wo) installed successfully と表示されれば、コアのインストールは完了です。

2) 【超重要】WordOps推奨パッケージ(Stack + Redis)の段階的インストール

WordOps本体が入った直後は、まだコマンドが使えるようになっただけです。WordPressを動かすための各種Webサーバー一式(最適化されたNginx、PHP 8.3、MariaDBなど)に加え、今回の環境の要となる「Redisキャッシュサーバー」を組み込みます。
※WordOpsの仕様上、これらは一発でまとめず、必ず以下の「順序」で2回に分けて段階的にインストールしてください。この順序通りに進めることで、依存関係の警告を吐かないクリーンな環境が構築されます。

Bash
# まずはRedisをインストールする
sudo wo stack install --redis

▼ 1回目の実行ログ

Plaintext
Start : wo-kernel [OK]
Updating apt-cache              [OK]
Installing APT packages         [OK]
Tuning Redis configuration      [OK]
Restarting redis-server         [OK]
Successfully installed packages
Bash
# 【2回目】推奨パッケージ(Nginx、PHP、MariaDB等)をインストール
sudo wo stack install

▼ 2回目の実行ログ

Plaintext
WP-CLI is already installed
Adding repository for MySQL, please wait...
Adding repository for NGINX, please wait...
Adding repository for PHP, please wait...
Updating apt-cache              [OK]
Installing APT packages         [OK]
Testing Nginx configuration     [OK]
Restarting Nginx                [OK]
Configuring Nginx               [OK]
Testing Nginx configuration     [OK]
Restarting Nginx                [OK]
Restarting php8.3-fpm           [OK]
Configuring php8.3-fpm          [OK]
Tuning MySQL configuration      [OK]
Restarting mariadb              [OK]
Restarting fail2ban             [OK]
Configuring Fail2Ban            [OK]
Configuring Sendmail            [OK]
Downloading PHPMyAdmin          [OK]
Downloading phpRedisAdmin       [OK]
Downloading Composer            [OK]
Downloading Adminer             [OK]
Downloading Adminer theme       [OK]
Downloading MySQLTuner          [OK]
Downloading Netdata             [OK]
Downloading WordOps Dashboard   [OK]
Downloading eXtplorer           [OK]
Downloading cheat.sh            [OK]
Downloading bash_completion     [OK]
Downloading clean.php           [OK]
Downloading opcache.php         [OK]
Downloading Opgui               [OK]
Downloading OCP.php             [OK]
Downloading Webgrind            [OK]
Downloading pt-query-advisor    [OK]
Installing composer             [OK]
Installing Netdata              [OK]
Restarting netdata              [OK]
Configuring packages            [OK]
HTTP Auth User Name: WordOps
HTTP Auth Password: g1LcubE2m8ztPOShCBPTrDu0
WordOps backend is available on https://203.0.113.111:22222 or https://ubuntu24044:22222
Successfully installed packages

⚠️ 【初見殺しの致命的な罠】
ログの末尾に出力される HTTP Auth Password(ランダムな英数字)は、絶対に、何が何でも今すぐメモ帳にコピーするか、スマホで写真を撮影するなど物理的に保管してください。
WordOpsの仕様上、このパスワードはここで一度表示されるだけで、後からコマンドや設定ファイルで確認する術が一切ありません。 もしこれを控えずに画面をクリアしたりSSHを閉じたりすると、サーバー管理ダッシュボード(22222ポート)へのアクセス権を永久に失い、最初からOSを入れ直すハメになるので確実に控えましょう!

3) WordPressサイトの構築

下地(Stack)のプロビジョンが完了したら、いよいよ今回の環境の受け皿となるWordPressサイトを構築します。
自宅内サーバーは80番ポートが閉じているため、ここではSSL(Let’s Encrypt)は呼ばず、純粋なhttp環境としてWebサイトを構築します。

Bash
# 自分のドメイン(例: your-domain.com)でWordPressサイトを構築
sudo wo site create test-site.online --wp

📌 【最重要】初期パスワードの物理メモについて
コマンド実行後、画面の最下部にWordPress管理画面へのログインに必要な Admin Name(ユーザー名)Admin Password(初期パスワード) が出力されます。
WordOpsの仕様上、この初期パスワードはここで一度表示されるだけで、後からコマンドや設定ファイルで確認する術はありません。

もしこれを控えずに画面をクリアしたりSSHを閉じたりすると、WordPress管理画面へログインすることが不可能になります。 必ずこのタイミングで、テキストファイル等へコピーするか、スマートフォン等で写真を撮影するなどして物理的に保管してください。

Plaintext
Running pre-update checks       [OK]
Setting up NGINX configuration  [Done]
Setting up webroot              [Done]
Downloading WordPress           [Done]
Setting up database             [Done]
Configuring WordPress           [OK]
Installing WordPress            [OK]
Installing plugin
nginx-helper  [OK]
Testing Nginx configuration     [OK]
Reloading Nginx                 [OK]
WordPress admin user : test-user
WordPress admin password : u3eSon4JCUhKEtyasR9zFgjc
Successfully created site http://test-site.online

4)自宅側のNginx設定修正

WordOpsのデフォルト状態では、サイト個別の設定ファイルにポートの待ち受け(listen)が明示されていません。このままだとVPSから転送されてきたパケットが自宅サーバー内で迷子になるため、設定ファイルを修正して明示的に80番ポートをlistenさせます。

Bash
# 自宅サーバー側で実行:設定ファイルを開く
sudo nano /etc/nginx/sites-available/test-site.online

最上部の server { の直後に、listen 80; を書き足します。

Nginx
server {
    # ⭕️ これを追記して、80番ポートでパケットを待つ意思表示をする
    listen 80;

    server_name test-site.online www.test-site.online;
    ...

修正したら保存し、Nginxの構文チェックを行ってリロードします。

Bash
# 構文チェック([OK]が出ればクリア)
sudo nginx -t

# Nginxをリロードして反映
sudo systemctl reload nginx

5)自宅サーバーのアクセスログのリアルタイム監視

ここまでの設定がすべて終わったら、外からドメインを叩いたパケットが本当に自宅まで届くかを確認するため、アクセスログを垂れ流し状態にして待機します。

Nginx
# 自宅サーバー側で実行:アクセスログをリアルタイム表示
sudo tail -f /var/log/nginx/test-site.online.access.log

6)ブラウザからの疎通確認

全ての準備が整ったら、外部の端末(PCやスマホ)のブラウザからドメイン名でアクセスを試します。
※まだSSL化を行っていないため、必ず http:// でアクセスしてください。

Plaintext
http://test-site.online

アクセスした瞬間に、先ほど自宅サーバー側で流したアクセスログの画面に、以下のようなログがシュババッと表示されれば接続成功です!

Plaintext
118.27.203.45 0.057 - [12/Jul/2026:04:25:00 +0900] test-site.online "GET / HTTP/1.0" 200 68976 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36" "HTTP/1.0" ""

【ログのチェックポイント】

  • 接続元のアドレス(ログ先頭)が ConoHa VPSのグローバルIP になっていること
  • ターゲットドメインが 自身のドメイン になっていること
  • ステータスコードが "GET / HTTP/1.0" 200 (正常応答)になっていること

ブラウザ側にWordPressの初期画面(Hello World!)が無事に表示されれば、VPSから自宅サーバーへの「リバースプロキシ×静的IPマスカレード」による串通し設定はすべて完了です!

🚪 WordPress管理画面へのログイン手順

  1. ブラウザを開き、以下のURL(HTTP)へアクセスします。
Plaintext
http://test-site.online/wp-admin/
  1. 画面にWordPressのログインフォームが表示されたら、先ほど wo site create コマンドを実行した際に画面に表示されたWordPress admin userWordPress admin password を入力してログインボタンをクリックします。
  2. 無事にダッシュボード(管理画面)が表示されれば、ログインは成功です!

左上のメニューから「サイトを表示」をクリックしたり、設定メニューを行き来して、URLが綺麗なドメインのままサクサクとページが切り替わることを確認してください。

502 Bad Gateway が出た場合

wo site createでWordPressをインストールした直後に現れる502 Bad Gatewayは概ね以下の項目を見直すことで解決することができます。

  • 自宅ルーターのポート転送(IPv4)またはパケットフィルタ(IPv6)
    中継VPSからの通信(または外からの直接通信)が、ルーターのファイアウォールやポートフォワーディング設定で遮断されていないか。
  • UFW(自宅サーバーのファイアウォール)
    サーバーに入ってきた通信に対して、UFWが80/tcpポートを閉じたままにしていないか。
  • Nginx ⇄ PHP-FPM(サーバー内部)
    通信自体は自宅サーバーに届いたものの、肝心のバックエンド(PHP-FPM)が死んでいてNginxが受け皿を失っている。

まとめ

本記事では、自宅サーバーへのWordOpsのインストールから、VPS・ルーターを経由したHTTPによる「外線開通確認」、そしてWordPress管理画面へのログインテストまでの手順を解説しました。

コントロールする場所が「VPS」「ルーター」「自宅サーバー」の3箇所に及ぶため、どこか1つでも待ち受け(listen)や転送のポート設定がズレるとパケットが迷子になる難所ですが、Nginxのログをリアルタイムで監視しながら紐解くことで、無事にHTTPでのクリーンな疎通を達成することができました。

✔ ここまでの開通ポイント

  • VPS側:listen 80;で待ち受けて自宅ルーターの50080番ポートへパケットを転送する
  • 自宅ルーター:50080番ポートで待ち受けて静的マスカレードで80番ポートへパケットを流し込む
  • 自宅サーバー側: WordOpsを導入してnginxのconfファイルに listen 80; を明示してパケットを捕まえる

これでドメインによるアクセスと管理画面の操作までは、HTTP環境下で完璧にクリアできました。

無事に外線が開通し、管理画面へのログインまで確認できたら、今回のインフラ構築の第一段階は無事にコンプリートです。しっかり初期パスワードを手元に控えたら、次なるステップである「常時SSL化(HTTPS)」への準備を進めていきましょう。

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

404 NOT FOUND | 半ちゃーはん特盛り テック別館
なんか動いたからヨシ
管理人
管理人

無事のサイト開通とログイン成功、本当にお疲れ様でした!

コメント

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