📅 最終更新日: 2026年4月12日
Knowledge Base

Windows Home Server
完全構築ガイド

Windows PCを最強のWebサーバーへ。後に続く同志たちのための、血と汗と涙の構築記録。

OS: Windows 11 Nginx 1.26.3 PHP 8.5.5 MariaDB 11.x WordPress 6.x win-acme 2.2.9 DeNSuke
PHASE 01

基礎インフラ (Nginx + PHP + MariaDB)

Windows上でサーバーを動かすなら、軽量かつ爆速な Nginx が最適解。バックエンドにはPHP-CGIを複数プロセス立ち上げ、データベースにはMariaDBを採用しました。

# NginxでのPHP-CGIへの受け渡し設定
location ~ \.php$ {
    fastcgi_pass php_backend;
    fastcgi_index index.php;
}
PHASE 02

WordPressの動的URL設定

ルーター内(ローカルIP)とルーター外(独自ドメイン)の両方からアクセス可能にするため、WordPressのURL設定をハードコードから動的取得へと変更します。

// wp-config.php の魔法の呪文
$protocol = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']==='on') ? "https://" : "http://";
define('WP_HOME', $protocol . $_SERVER['HTTP_HOST']);
define('WP_SITEURL', $protocol . $_SERVER['HTTP_HOST']);
💡 これにより、どのドメインやIPでアクセスされても、WPは自身のURLを柔軟に切り替えることができます。
PHASE 03

DDNS (MyDNS + DeNSuke)

家庭用回線はIPアドレスが変動するため、MyDNS.jpを利用して無料の独自ドメインを取得します。

⚠️ MyDNSの罠(DOMAIN INFO)
ドメイン設定時、下部にある「子ドメイン(Hostname, Type, Content等)」の表には絶対に何も入力してはいけません!必ず画面の一番上にある「Domain (FQDN)」の枠の左側に希望の文字(例: tel110me)を入力し、右側でドメインを選んで保存してください。

その後、Windows常駐ツールの DeNSuke にMyDNSのIDとパスワードを設定し、IP変更を自動通知させます。
※DeNSukeの一番上にある「更新サービス」のプルダウンメニューを、必ず「MyDNS」に変更してください。
万が一「サブドメイン名の入力が必要です」というエラーが出た場合は、迷わず mydns.jp と入力すれば成功します(MyDNSの仕様により、正しいID/PASSさえ合っていればこれで通ります)。

PHASE 04

Let's EncryptによるHTTPS(無料SSL化)

WindowsとNginxの組み合わせなら win-acme (wacs.exe) が”楽勝”です。コマンド一発で証明書の取得・更新作業を全自動化できます。

wacs.exe --target manual --host your-domain.mydns.jp
--validation filesystem --webroot "C:\Ai\Web"
--store pemfiles --pemfilespath "C:\nginx\conf\ssl"
PHASE 05

立ちはだかる壁 (ファイアウォール & Hairpin NAT)

外部からアクセスできない時、原因はだいたいこの2つです。

1. Windowsファイアウォール
PowerShell(管理者)から443ポートを必ず開けること。
2. ルーターのポートフォワーディング
192.168.11.x サーバーへ ポート80と443を紐付け(転送)してください。

New-NetFirewallRule -DisplayName "Nginx HTTPS" -Direction Inbound -LocalPort 443 -Protocol TCP -Action Allow
SECRET PHASE

【超重要】Nginx for Windows の HTTP/2 バグ

もし、SSL化後に Chrome系ブラウザからのみ ERR_CONNECTION_CLOSED で弾かれる 現象が起きた場合、NginxのWindows版特有のバグに遭遇しています。

Windows版NginxのHTTP/2機構は、Chromeの通信処理と相性が最悪です。設定ファイルの listen 443 ssl http2; から http2 の記述を削除し、HTTP/1.1へとフォールバックさせることで劇的に安定します。