第07回 ネット越しアクセス(2)HTTPS対応とApache/Caddy構築編

Ola-UI構築チュートリアル

【第7回】社内AIチャットシステムOla-UIを構築しよう!- ネット越しアクセス(2)HTTPS対応とApache/Caddy構築編

はじめに

「社内AIチャットシステムOla-UI構築シリーズ」の第7回へようこそ!

前回(第6回)では、DDNS経由での外部アクセスを実現しました。しかし、HTTP(非暗号化)での通信はセキュリティ上のリスクがあります。

今回は、HTTPS化による安全な通信と、本格的なWebサーバー(Apache/Caddy)の構築を解説します。

これまでのおさらい

第6回: DDNS経由アクセス

✅ DDNSサービスの登録
✅ ポート転送設定
✅ PHP内蔵サーバーの外部公開
✅ 基本認証の設定

今回は、さらにセキュアで本格的な環境を構築します。


本記事の目標

第7回では、HTTPSによる暗号化通信を実現し、ApacheまたはCaddyを使った本格的なWebサーバーを構築します。

所要時間

学べること


構成の選択肢

方法1: Apache + Let's Encrypt(本格的)

方法2: Caddy(推奨・簡単)

💡 推奨: 初心者はCaddy、経験者はApache

この記事では両方の方法を解説します!


【方法1】Apache + Let's Encrypt

STEP 1: Apacheのインストール

1.1 Apache Lounge版のダウンロード

Windows版Apacheは、Apache Loungeから入手します。

  1. https://www.apachelounge.com/download/ にアクセス
  2. Apache 2.4.xx Win64をダウンロード
  3. ZIPファイルを解凍
  4. Apache24 フォルダを C:\ にコピー

フォルダ構成:

C:\Apache24\
  ├── bin\        ← 実行ファイル
  ├── conf\       ← 設定ファイル
  ├── htdocs\     ← Webコンテンツ
  ├── logs\       ← ログファイル
  └── modules\    ← モジュール

1.2 Visual C++ Redistributableのインストール

Apacheの実行には必要です。

  1. https://aka.ms/vs/17/release/vc_redist.x64.exe をダウンロード
  2. インストール
  3. PCを再起動

1.3 httpd.confの基本設定

C:\Apache24\conf\httpd.conf を編集:

① ServerNameの設定

# 37行目あたり
ServerName myola.ddns.net:80

② DocumentRootの設定

# 251行目あたり
DocumentRoot "C:/ola-ui"
<Directory "C:/ola-ui">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

③ PHPモジュールの追加

ファイルの最後に追加:

# PHP設定
LoadModule php_module "C:/php/php8apache2_4.dll"
PHPIniDir "C:/php"

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

⚠️ 注意: php8apache2_4.dll がPHPフォルダに存在することを確認

1.4 Apacheのサービス登録

管理者権限のコマンドプロンプトで実行:

cd C:\Apache24\bin
httpd.exe -k install

サービスの起動:

httpd.exe -k start

動作確認:

http://localhost/

✅ Apacheのテストページが表示されればOK


STEP 2: Let's Encryptで無料SSL証明書取得

2.1 Win-ACMEのダウンロード

Win-ACMEは、WindowsでLet's Encryptを使うためのツールです。

  1. https://www.win-acme.com/ にアクセス
  2. Downloadから最新版をダウンロード
  3. ZIPファイルを C:\win-acme に解凍

2.2 証明書の取得

事前準備

実行手順

管理者権限のコマンドプロンプトで:

cd C:\win-acme
wacs.exe

対話形式の設定:

1. N: Create certificate (default settings)
2. 2: Manual input
3. ホスト名入力: myola.ddns.net
4. メールアドレス入力: your-email@example.com
5. 利用規約に同意: Y

証明書が自動生成され、Apacheに適用されます。

証明書の保存場所:

C:\Users\<ユーザー名>\AppData\Roaming\win-acme\certificates\

STEP 3: ApacheでHTTPSの有効化

3.1 SSL モジュールの有効化

httpd.conf を編集:

# 以下の行のコメントアウトを外す
LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

# SSL設定ファイルのインクルード
Include conf/extra/httpd-ssl.conf

3.2 httpd-ssl.confの設定

C:\Apache24\conf\extra\httpd-ssl.conf を編集:

# 仮想ホストの設定
<VirtualHost _default_:443>
    ServerName myola.ddns.net:443
    DocumentRoot "C:/ola-ui"

    SSLEngine on
    SSLCertificateFile "C:/Users/<ユーザー名>/AppData/Roaming/win-acme/certificates/myola.ddns.net.crt"
    SSLCertificateKeyFile "C:/Users/<ユーザー名>/AppData/Roaming/win-acme/certificates/myola.ddns.net.key"
    SSLCertificateChainFile "C:/Users/<ユーザー名>/AppData/Roaming/win-acme/certificates/myola.ddns.net-chain.crt"

    # セキュリティヘッダー
    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-Frame-Options "SAMEORIGIN"
</VirtualHost>

3.3 Apacheの再起動

cd C:\Apache24\bin
httpd.exe -k restart

3.4 ルーターのポート443転送設定

ルーター管理画面で、ポート443の転送を追加:

項目 設定値
外部ポート 443
内部IPアドレス 192.168.1.100
内部ポート 443
プロトコル TCP

3.5 動作確認

https://myola.ddns.net/index_t.html

✅ 鍵マークが表示され、HTTPSで接続できればOK!🎉


【方法2】Caddy(推奨・簡単)

STEP 4: Caddyのインストール

4.1 Caddyのダウンロード

  1. https://caddyserver.com/download にアクセス
  2. Windows amd64を選択
  3. ダウンロードして C:\caddy\ に配置

フォルダ構成:

C:\caddy\
  ├── caddy.exe
  └── Caddyfile

4.2 Caddyfileの作成

C:\caddy\Caddyfile を作成:

myola.ddns.net {
    # 自動HTTPS(Let's Encrypt)
    email your-email@example.com

    # Ola-UIのルートディレクトリ
    root * C:/ola-ui

    # PHPの処理
    php_fastcgi localhost:9000

    # ファイルサーバー
    file_server

    # セキュリティヘッダー
    header {
        Strict-Transport-Security "max-age=63072000; includeSubDomains"
        X-Content-Type-Options "nosniff"
        X-Frame-Options "SAMEORIGIN"
        X-XSS-Protection "1; mode=block"
    }
}

💡 驚きの簡単さ: これだけでHTTPS自動設定!

4.3 PHP-FPMのインストール

Caddyを使う場合、PHP-FPMが必要です。

ダウンロード

  1. https://windows.php.net/download/ にアクセス
  2. Non Thread Safe版をダウンロード
  3. C:\php-fpm\ に解凍

php-cgi.exeの起動

cd C:\php-fpm
php-cgi.exe -b 127.0.0.1:9000

このコマンドプロンプトは開いたままにします。

4.4 Caddyの起動

管理者権限のコマンドプロンプトで:

cd C:\caddy
caddy.exe run

初回起動時: - Let's Encryptに自動登録 - SSL証明書を自動取得 - HTTPSが自動有効化

ログ出力例:

INFO    using provided configuration    {"config_file": "Caddyfile"}
INFO    tls.obtain      acquiring lock  {"identifier": "myola.ddns.net"}
INFO    tls.obtain      lock acquired   {"identifier": "myola.ddns.net"}
INFO    tls.issuance    certificate obtained successfully
INFO    tls     serve   {"server_name": ["myola.ddns.net"]}

4.5 動作確認

https://myola.ddns.net/index_t.html

✅ HTTPSで自動リダイレクトされ、接続できればOK!🚀


STEP 5: リバースプロキシ設定(Ollamaとの連携)

5.1 Ollamaへのプロキシ(Apache)

httpd.conf に追加:

# リバースプロキシモジュールの有効化
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

# Ollamaへのプロキシ
ProxyPass /ollama http://localhost:11434
ProxyPassReverse /ollama http://localhost:11434

5.2 Ollamaへのプロキシ(Caddy)

Caddyfile に追加:

myola.ddns.net {
    email your-email@example.com
    root * C:/ola-ui
    php_fastcgi localhost:9000
    file_server

    # Ollamaへのプロキシ
    reverse_proxy /ollama/* localhost:11434
}

5.3 config.iniの修正

C:\ola-ui\config.ini を編集:

[Ollama]
; ローカル直接アクセス(内部ネットワーク用)
endpoint = http://127.0.0.1:11434

; プロキシ経由アクセス(外部からのアクセス用)
; endpoint = https://myola.ddns.net/ollama

STEP 6: 自動起動スクリプトの作成

6.1 Apache版

C:\ola-ui\start_all_apache.bat:

@echo off
title Ola-UI System (Apache + HTTPS)

echo ========================================
echo  Ola-UI System 起動
echo ========================================
echo.

REM No-IP DUC起動
echo [1/3] No-IP DUC起動中...
start "" "C:\Program Files (x86)\No-IP\DUC.exe"
timeout /t 3 /nobreak > nul
echo ✅ 完了
echo.

REM Ollama起動
echo [2/3] Ollama起動中...
start /B ollama serve
timeout /t 5 /nobreak > nul
echo ✅ 完了
echo.

REM Apache起動
echo [3/3] Apache起動中...
cd C:\Apache24\bin
httpd.exe -k start
echo ✅ 完了
echo.

echo ========================================
echo  すべてのサービスが起動しました
echo ========================================
echo.
echo アクセスURL: https://myola.ddns.net
echo.
pause

6.2 Caddy版

C:\ola-ui\start_all_caddy.bat:

@echo off
title Ola-UI System (Caddy + HTTPS)

echo ========================================
echo  Ola-UI System 起動
echo ========================================
echo.

REM No-IP DUC起動
echo [1/4] No-IP DUC起動中...
start "" "C:\Program Files (x86)\No-IP\DUC.exe"
timeout /t 3 /nobreak > nul
echo ✅ 完了
echo.

REM Ollama起動
echo [2/4] Ollama起動中...
start /B ollama serve
timeout /t 5 /nobreak > nul
echo ✅ 完了
echo.

REM PHP-FPM起動
echo [3/4] PHP-FPM起動中...
cd C:\php-fpm
start /B php-cgi.exe -b 127.0.0.1:9000
timeout /t 3 /nobreak > nul
echo ✅ 完了
echo.

REM Caddy起動
echo [4/4] Caddy起動中...
cd C:\caddy
start /B caddy.exe run
timeout /t 3 /nobreak > nul
echo ✅ 完了
echo.

echo ========================================
echo  すべてのサービスが起動しました
echo ========================================
echo.
echo アクセスURL: https://myola.ddns.net
echo.
pause

STEP 7: セキュリティ強化

7.1 HTTPからHTTPSへの自動リダイレクト

Apache

httpd.conf に追加:

<VirtualHost *:80>
    ServerName myola.ddns.net
    Redirect permanent / https://myola.ddns.net/
</VirtualHost>

Caddy

Caddyは自動でリダイレクトしてくれます(設定不要)!

7.2 セキュリティヘッダーの設定

すでにSTEP 3.2とSTEP 4.2で設定済みですが、確認しましょう。

重要なヘッダー

7.3 SSL/TLS設定の最適化

Apache

httpd-ssl.conf に追加:

# 強力な暗号スイートのみ許可
SSLCipherSuite HIGH:!aNULL:!MD5:!3DES
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder on

Caddy

Caddyは自動で最適化してくれます(デフォルトで最新のセキュリティ設定)!


STEP 8: パフォーマンス最適化

8.1 圧縮の有効化

Apache

httpd.conf に追加:

LoadModule deflate_module modules/mod_deflate.so

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
</IfModule>

Caddy

Caddyfile に追加:

myola.ddns.net {
    encode gzip zstd
    # ... その他の設定
}

8.2 キャッシュの設定

Apache

httpd.conf に追加:

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpg "access plus 1 month"
    ExpiresByType image/jpeg "access plus 1 month"
    ExpiresByType image/png "access plus 1 month"
    ExpiresByType text/css "access plus 1 week"
    ExpiresByType application/javascript "access plus 1 week"
</IfModule>

STEP 9: 監視とログ管理

9.1 アクセスログの確認

Apache

C:\Apache24\logs\access.log
C:\Apache24\logs\error.log

Caddy

C:\caddy\caddy.log

9.2 ログローテーション

ログファイルが大きくなりすぎないよう、定期的に削除または圧縮します。

PowerShellスクリプト C:\ola-ui\rotate_logs.ps1:

# 7日以上前のログを削除
Get-ChildItem "C:\Apache24\logs\" -Filter *.log | Where-Object {
    $_.LastWriteTime -lt (Get-Date).AddDays(-7)
} | Remove-Item

Write-Host "✅ ログローテーション完了"

タスクスケジューラで週次実行。


トラブルシューティング

Q1: SSL証明書の取得に失敗する

原因: ポート80または443が開いていない

確認:

netstat -an | findstr ":80"
netstat -an | findstr ":443"

解決策: 1. ルーターのポート転送を確認 2. Windowsファイアウォールを確認 3. 他のプログラムがポートを使用していないか確認

Q2: 「NET::ERR_CERT_AUTHORITY_INVALID」エラー

原因: 証明書の検証に失敗

解決策(Let's Encrypt): 1. DDNSドメインが正しく設定されているか確認 2. DNSの伝播を待つ(最大48時間) 3. Win-ACMEまたはCaddyを再実行

Q3: Apacheが起動しない

原因: 設定ファイルに誤りがある

確認:

cd C:\Apache24\bin
httpd.exe -t

エラーメッセージを確認して修正。

Q4: PHPが動作しない

原因: PHPモジュールが読み込まれていない

確認: - php8apache2_4.dll が存在するか - httpd.conf で正しくLoadModuleされているか

解決策: - PHP Thread Safe版を使用(Apache用) - PHP Non Thread Safe版を使用(Caddy用、PHP-FPM)


まとめ

本記事で学んだこと

✅ SSL/TLSとHTTPSの基本
✅ Let's Encryptでの無料SSL証明書取得
✅ Apacheのインストールと設定
✅ Caddyによる自動HTTPS(簡単!)
✅ リバースプロキシ設定
✅ セキュリティヘッダーの設定
✅ パフォーマンス最適化

所要時間


次回予告

第8回: ネット越しアクセス(3)レンタルサーバー経由編

次回は、レンタルサーバーにOla-UIを配置し、自宅PCのOllamaにリモートアクセスする方法を解説します。

次回の内容

お楽しみに!


参考リンク


著者: Ola-UI サポートチーム
公開日: 2026年1月29日
カテゴリ: チュートリアル, HTTPS, SSL/TLS, Apache, Caddy


タグ

#OlaUI #HTTPS #SSL #Apache #Caddy #Let'sEncrypt #セキュリティ #チュートリアル

📚 記事一覧に戻る