コンテナ WordPress + Cloudflared による hyt adversaria のリニューアル(2025)についてです.

リニューアルの理由
本 blog,2011年3月から Conoha VPS 上に構築した WordPress + Mariadb + Eginx で運営してきたのですが,さすがに最も安価な
- CPU: 1コア
- メモリ: 512GB
- SSD: 30GB
のプランだとかなり動作が重たく,記事がなかなか表示されないことも多くなってきました.また,Conoha の VPS のコントロールパネルが ver.2 から ver. 3 に変わったのですが,これは自動的には移行とならず,サーバーを作り直さないとダメ……しかし一から環境を構築し直すのも面倒でした.


なによりとうとうディスク容量もバックアップまで含めて考えると 30GB では足りなくなり,この3連休を利用した完全な引越しを決意しました.

乗り換え先
乗り換え先は,
コンテナ WordPress + Cloudflared
です.乗り換えはかなり手間がかかりましたので,備忘録をかねて少し詳しく紹介したいと思います.

乗り換え手順
旧環境データバックアップ
実は今回,この旧環境データのバックアップと新環境への書き戻しにかなり苦労しました.原因は,
- VPS のディスクの空きがまとめてバックアップに耐えられるほどなかったこと
- phpMyAdmin の現在の安定版が PHP8.1 以降には対応していないこと(旧環境の PHP は ver 8.2.29 が導入されていた)
- WordPress をコンテナで導入したことで blog の URL 他に変更が生じたこと
の3つです.
通常ならば,Wordpress の有名プラグイン All-in-One WP Migration and Backup 辺りを使って,まとめて(もしくはデータベースとその他プラグインに分けて)バックアップを取り,以降先にも同じプラグインを入れて書き戻すのが楽だと思います.しかし,ディスクの空き容量が少なすぎたことと,Wordpress をコンテナで導入したことでこの手が使えませんでした.結果,移行元の WordPress + Mariadb + Egninx 環境の WordPress データのバックアップは以下の通り行うことになりました.
- /var/www/wordpress/wp-content 以下にある plugin, themes, uploads を tar.gz 形式で圧縮して scp で新サーバーに転送
- phpMyAdmin の開発版である ver.6 を /var/www/phpmyadmin 以下にインストールしアクセスできるよう Nginx の設定を変更
- phpMyAdmin で MariaDB の wordpress データをエクスポート
なお,phpMyAdmin の開発版は,

からダウンロード可能でした.また,データベースにアクセスするためのユーザ名とパスワードは /var/www/wordpress/wp-config.php に記されていました.

コンテナ WordPress(セルフホスト)環境の構築
まず,Wordpress は,古い Mac mini 2014 に Ubuntu 24.04 server を入れ,podman でコンテナとして動作させることにしました.データベースの MySQL などと合わせて,podman-compose 用の設定ファイルを
$ vi docker-compose.yaml
services:
wordpress:
image: wordpress
container_name: wordpress_for_hytadv
build:
context: .
dockerfile: DockerFile
restart: always
networks:
hytadv:
ipv4_address: 10.**.**.2
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: xxxxxxxxxxxxxxxxxxxxx
WORDPRESS_DB_NAME: wordpress
volumes:
- /var/lib/containers/volumes/hytadv/html:/var/www/html
db:
image: mysql:9.1
container_name: mysql_for_hytadv
restart: always
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: xxxxxxxxxxxxxxxxxxxxx
MYSQL_RANDOM_ROOT_PASSWORD: MYSQL_RANDOM_ROOT_PASSWORD
volumes:
- /var/lib/containers/volumes/hytadv/db:/var/lib/mysql
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
container_name: phpmyadmin_for_hytadv
restart: always
networks:
hytadv:
ipv4_address: 10.**.**.3
depends_on:
- db
environment:
- MEMORY_LIMIT=1024M
- UPLOAD_LIMIT=1024M
ports:
- 8888:80
networks:
hytadv:
name: hytadv
ipam:
driver: default
config:
- subnet: 10.**.**.0/24
gateway: 10.**.**.1
のように,あと,Wordpress でパスキー認証 (WebAuthn) が使えるよう, Dockerfile を
$ vi Dockerfile FROM wordpress:latest RUN apt-get update RUN apt-get install -y gcc RUN apt-get install -y curl RUN apt-get install -y libgmp-dev RUN docker-php-ext-install gmp RUN docker-php-ext-enable gmp
の内容で作り,
$ sudo podman-compose up -d
として立ち上げました.これらは昔以下の記事で紹介した内容とほぼ同じです.


しかし,このままだとグローバルどころかローカルからも WordPress にアクセスできませんし,SSL にも対応できません.これを可能にするのが Cloudflared です.

Cloudflared の導入と WordPress の公開
Cloudflared はローカルサーバーやネットワークを CDN 運営大手の Cloudflare のネットワークを介して安全に外部に公開できるクライアントサイドプログラムです.ファイヤーウォールやルーターでポートを公開する必要なく,手軽にサーバーをインターネットに公開できます.同様のサービスとして Tailscale が有名どころでしょうか.
他のサイトの記事だと,Cloudflared もコンテナに含めて構築することが一般的みたいですが,私の場合は,Ubuntu 24.04 Server に直接導入しました.というのも,この blog 以外に,

という(長いこと更新してないですが)blog も同じサーバーにあり,別々に Cloudflare へのトンネルを作る必要はないと思ったからです.前節の docker-compose.yaml 内で,コンテナの IP アドレスを明示的に指定しているのはこれが理由です.
この Cloudflared の設定と WordPress の公開ですが,細かく書くと記事が長くなりすぎるので,大まかな流れだけ以下示します.なお,以下は Cloudflare でドメインを管理している場合です(したがって,すでに Cloudflare にアカウントは作成されているという前提です).
- Coudflare にログインして,左のメニューから,Zero Trust を選択する
- 左のメニューから「ネットワーク」=>「コネクタ」の順に選択する
- 右のペインから「+ トンネルを作成する」を選択して「Cloudflared」を選ぶ
- 適当なトンネル名を付けて「トンネルを保存」
- 指示にしたがい,コネクター(Cloudflared のこと)をサーバーにインストール
- パブリックホスト名とサービスを設定し保存する
パブリックホスト名は,本 blog の場合だと,
- サブドメイン: www
- ドメイン: labohyt.net
です.この設定を行うとドメインの DNS の内容が書き変わります(CNAME に www.labohyt.net に対応する部分が追加される).サービスは,
- HTTP
- 10.**.**.2:80(docker-compose.yaml で指定した WordPress の IP アドレス)
です.それからこれは多分なくても大丈夫ですが,私の場合は,さらに「その他のアプリケーション設定」=>「HTTP 設定」の HTTP ホスト ヘッダーに「www.labohyt.net 」を設定しました.Wordpress の公開は SSL 対応を含めてこれで終了です.

新環境へのデータ移行
新環境へのデータ移行手順の概略は以下の通りです.
- /var/lib/containers/volumes/hytadv/html/wp-content 以下に バックアップした plugin, themes, uploads の内容を書き込み
- phpMyAdmin でバックアップした MariaDB のデータをインポート
- phpMyAdmin でデータベース項目 wp_options 以下にある siteurl と home の値を https://www.labohyt.net/blog から https://www.labohyt.net に書き換え
注意として,新環境のコンテナとして立ち上げた phpMyAdmin ですが,標準のまま起動すると,データベースに一度にインポートできる容量がわずか2Mと,移行に全く足りません.これを緩和するのが,前々節の docker-compose.yaml の
environment: - MEMORY_LIMIT=1024M - UPLOAD_LIMIT=1024M
の記述です.
また,phpMyAdmin は,同じ docker-compose.yaml 内で,
ports: - 8888:80
としていますので,http://[Ubuntu server IP Adress]:8080 でアクセスできます.また,データベースにアクセスするためのユーザー名とパスワードも同じ docker-compose.yaml 内に記されている通りです.

移行雑感
ということで,当初予想よりかなり難航したのですが,なんとか半日くらいで完全に移行を終えることができました.
使える資源が大きく違うせいでしょうね.blog のレスポンスが大きく向上し,記事がとても書きやすくなりましたし,Wordpress の設定もとても変更しやすくなりました.せっかくなので,見た目についても特にフォント周りを見直し,より記事を読みやすいようにしたつもりです.
引越しの関係でしばらく blog の記事自体を更新できていなかっただけでなく,blog 環境自体もあまりメインテナンスできておらず少し気がかりでしたが,ようやくこれが完全に解消できました.これから少しでも記事の更新頻度を高くできたらなと思っています.
以上


