🐈
Omeka-S Docker環境を別サーバーに移行する完全ガイド
はじめに
本記事では、Docker ComposeでセットアップされたOmeka-S環境を、volumeデータを含めて別のサーバーに移行する手順を解説します。データの整合性を保ちながら、安全に移行作業を進めることができます。
環境
- 移行元サーバー: Ubuntu 22.04
- 移行先サーバー: Ubuntu 22.04(新規セットアップ)
- 構成: Omeka-S + MariaDB + phpMyAdmin + Traefik + Mailpit
移行の流れ
- 移行元サーバーでのバックアップ
- ローカルマシンへのダウンロード
- 移行先サーバーのDocker環境セットアップ
- データの復元と起動
ステップ1: 移行元サーバーでのバックアップ
1.1 現在の環境確認
# 実行中のコンテナを確認
docker ps
# Dockerボリュームを確認
docker volume ls
出力例:
DRIVER VOLUME NAME
local omeka-s-docker_mariadb
local omeka-s-docker_omeka
1.2 バックアップファイルの作成
# /optディレクトリに移動
cd /opt
# 設定ファイル等をバックアップ(約60MB)
sudo tar -czf omeka-backup-$(date +%Y%m%d).tar.gz omeka-s-docker/
# Dockerボリュームのデータをバックアップ(約1GB)
sudo docker run --rm \
-v omeka-s-docker_omeka:/data/omeka \
-v omeka-s-docker_mariadb:/data/mariadb \
-v /opt:/backup \
alpine tar -czf /backup/omeka-volumes-$(date +%Y%m%d).tar.gz -C /data .
# バックアップファイルの確認
ls -lh /opt/*.tar.gz
出力例:
-rw-r--r-- 1 root root 59M Oct 16 17:02 /opt/omeka-backup-20251016.tar.gz
-rw-r--r-- 1 root root 1.1G Oct 16 17:04 /opt/omeka-volumes-20251016.tar.gz
1.3 バックアップファイルの権限変更
ダウンロード用に、現在のユーザーに所有権を変更します:
sudo chown $USER:$USER /opt/omeka-backup-20251016.tar.gz
sudo chown $USER:$USER /opt/omeka-volumes-20251016.tar.gz
ステップ2: ローカルマシンへのダウンロード
ローカルマシンのターミナルで実行:
# ダウンロード先ディレクトリに移動
cd ~/Downloads
# SCPでファイルをダウンロード
scp user@source-server-ip:/opt/omeka-backup-20251016.tar.gz ./
scp user@source-server-ip:/opt/omeka-volumes-20251016.tar.gz ./
# ダウンロード確認
ls -lh omeka-*.tar.gz
注意: 1.1GBのファイルのため、ダウンロードには時間がかかります。
ステップ3: 移行先サーバーのセットアップ
3.1 システムの更新
sudo apt update
sudo apt upgrade -y
3.2 既存のDockerパッケージの削除(クリーンインストール)
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do
sudo apt-get remove $pkg
done
3.3 Dockerの公式リポジトリを追加
# GPGキーの追加
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# リポジトリの追加
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
3.4 Docker Engineのインストール
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
3.5 インストール確認
# rootでテスト実行
sudo docker run hello-world
3.6 一般ユーザーでのDocker実行権限設定
# dockerグループの作成(すでに存在する場合はエラーが出ますが問題ありません)
sudo groupadd docker
# 現在のユーザーをdockerグループに追加
sudo usermod -aG docker $USER
# グループ変更を反映
newgrp docker
# 一般ユーザーでテスト実行
docker run hello-world
ステップ4: データの転送と復元
4.1 バックアップファイルのアップロード
ローカルマシンから実行:
# 移行先サーバーにアップロード
scp omeka-backup-20251016.tar.gz user@target-server-ip:/tmp/
scp omeka-volumes-20251016.tar.gz user@target-server-ip:/tmp/
4.2 移行先サーバーでの展開
# /optディレクトリに移動
cd /opt
# バックアップファイルを移動
sudo mv /tmp/omeka-backup-20251016.tar.gz /opt/
sudo mv /tmp/omeka-volumes-20251016.tar.gz /opt/
# 設定ファイル等を展開
sudo tar -xzf omeka-backup-20251016.tar.gz
# 所有権を変更
sudo chown -R $USER:$USER omeka-s-docker
# プロジェクトディレクトリに移動
cd omeka-s-docker
4.3 Dockerボリュームの復元
まず、コンテナを作成(起動はしない)してボリュームを準備します:
# docker-compose.ymlを使用する場合
docker compose up --no-start
# 特定のcomposeファイルと環境変数ファイルを使用する場合
docker compose -f docker-compose-omeka-traefik.yml --env-file .env.omeka up --no-start
次に、バックアップからボリュームにデータを復元:
docker run --rm \
-v omeka-s-docker_omeka:/data/omeka \
-v omeka-s-docker_mariadb:/data/mariadb \
-v /opt:/backup \
alpine tar -xzf /backup/omeka-volumes-20251016.tar.gz -C /data
このコマンドの意味:
-
-v omeka-s-docker_omeka:/data/omeka: Omekaのボリュームをマウント -
-v omeka-s-docker_mariadb:/data/mariadb: MariaDBのボリュームをマウント -
-v /opt:/backup: バックアップファイルのあるディレクトリをマウント -
alpine tar -xzf ...: Alpine Linuxイメージでtarコマンドを実行してデータを展開
4.4 ボリューム確認
docker volume ls
出力例:
DRIVER VOLUME NAME
local omeka-s-docker_mariadb
local omeka-s-docker_omeka
ステップ5: コンテナの起動
5.1 環境変数の確認
起動前に、.envファイル(または.env.omekaなど)で以下を確認・設定します:
# .envファイルを編集
nano .env.omeka
最低限必要な設定:
OMEKA_HOST=your-domain.com # または localhost
# その他の環境変数...
5.2 コンテナの起動
# 標準のdocker-compose.ymlを使用する場合
docker compose up -d
# 特定のcomposeファイルと環境変数ファイルを使用する場合
docker compose -f docker-compose-omeka-traefik.yml --env-file .env.omeka up -d
5.3 起動確認
# コンテナの状態確認
docker ps
# ログの確認
docker compose logs -f
# 特定のサービスのログを確認
docker compose logs -f omeka
docker compose logs -f mariadb
トラブルシューティング
問題1: Traefikでホスト名が空のエラー
エラーメッセージ:
error="error while adding rule Host(``): error while checking rule Host: empty args for matcher Host, []"
解決方法:
.envファイルでOMEKA_HOSTが設定されているか確認してください。
# .envファイルを確認
cat .env.omeka
# OMEKA_HOSTが設定されていない場合は追加
echo "OMEKA_HOST=localhost" >> .env.omeka
# 再起動
docker compose down
docker compose up -d
問題2: データベース接続エラー
MariaDBの起動に時間がかかる場合があります。以下を確認:
# MariaDBのログを確認
docker compose logs mariadb
# "ready for connections"というメッセージが表示されるまで待つ
問題3: 権限エラー
# ファイルの所有権を確認
ls -la /opt/omeka-s-docker
# 必要に応じて所有権を変更
sudo chown -R $USER:$USER /opt/omeka-s-docker
セキュリティに関する注意事項
公開サーバーでの自動スキャン
サーバーを公開すると、すぐに自動化されたスキャンボットがアクセスを試みます。以下のようなアクセスログが記録されることは正常です:
POST /graphql HTTP/1.1" 404
GET /.env HTTP/1.1" 404
GET /swagger-ui.html HTTP/1.1" 404
これらは脆弱性を探すボットで、すべて404(見つからない)または403(アクセス拒否)であれば問題ありません。
推奨セキュリティ対策
- ファイアウォールの設定
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw enable
- Fail2banのインストール
sudo apt install fail2ban
- 定期的な更新
sudo apt update && sudo apt upgrade -y
便利なエイリアス設定
特定のcomposeファイルと環境変数ファイルを使用する場合、エイリアスを設定すると便利です:
# ~/.bashrcに追加
echo "alias omeka-compose='docker compose -f docker-compose-omeka-traefik.yml --env-file .env.omeka'" >> ~/.bashrc
source ~/.bashrc
# 使用例
omeka-compose up -d
omeka-compose down
omeka-compose logs -f
まとめ
この手順により、Docker環境のOmeka-Sを安全に移行できます。重要なポイント:
- ✅ バックアップは2つ作成: 設定ファイル用とボリュームデータ用
- ✅ ボリューム復元前にコンテナを作成:
up --no-startでボリュームを準備 - ✅ 環境変数ファイルの確認: 特にホスト名の設定
- ✅ セキュリティ対策: 公開サーバーでは必須
この手順は他のDocker Compose環境の移行にも応用できます。
参考情報
記事の最終更新: 2025年10月
Discussion