PR

AlmaLinuxを本番環境で試した結果、Debian系に戻った理由【詳細比較】

AlmaLinuxを本番環境で試した結果、Debian系に戻った理由【詳細比較】 - アイキャッチ画像 インフラ・ネットワーク
この記事は約10分で読めます。
スポンサーリンク

はじめに:なぜAlmaLinuxを選んだのか

Lovate本番環境の再構築を機に、これまで使い慣れたDebian系から離れてAlmaLinuxにチャレンジしてみました。

検討の背景

  • 長期サポート: Red Hat Enterprise Linux(RHEL)との互換性
  • 企業環境での実績: エンタープライズ用途での安定性
  • セキュリティ重視: SELinuxによる強固なアクセス制御
  • コンテナ技術: PodmanによるDockerレス運用の可能性

目標は、AdGuardHome + UnboundによるプライベートDNS環境と、Nextcloudを含む自宅サーバー環境の安定運用でした。

AlmaLinuxで構築した環境

基本システム構成

# AlmaLinux 9.4 (Seafoam Ocelot)
$ cat /etc/os-release
NAME="AlmaLinux"
VERSION="9.4 (Seafoam Ocelot)"
ID="almalinux"
ID_LIKE="rhel centos fedora"
VERSION_ID="9.4"
PLATFORM_ID="platform:el9"

実装したサービス

1. Podmanによるコンテナ運用

AdGuardHome コンテナ

podman run -d --name adguardhome \
  --restart=unless-stopped \
  -v /opt/adguardhome/work:/opt/adguardhome/work \
  -v /opt/adguardhome/conf:/opt/adguardhome/conf \
  -p 53:53/tcp -p 53:53/udp -p 3000:3000/tcp \
  adguard/adguardhome

Unbound DNS リゾルバ

podman run -d --name unbound \
  --restart=unless-stopped \
  -v /etc/unbound:/opt/unbound/etc/unbound \
  -p 5335:53/tcp -p 5335:53/udp \
  mvance/unbound:latest

2. systemdサービス定義

# /etc/systemd/system/container-adguardhome.service
[Unit]
Description=AdGuard Home container
Wants=network-online.target
After=network-online.target
RequiresMountsFor=%t/containers

[Service]
Environment=PODMAN_SYSTEMD_UNIT=%n
Restart=on-failure
TimeoutStopSec=70
ExecStartPre=/bin/rm -f %t/%n.ctr-id
ExecStart=/usr/bin/podman run --cidfile=%t/%n.ctr-id \
  --cgroups=no-conmon --rm --sdnotify=conmon -d \
  --replace --name adguardhome \
  -v /opt/adguardhome/work:/opt/adguardhome/work \
  -v /opt/adguardhome/conf:/opt/adguardhome/conf \
  -p 53:53/tcp -p 53:53/udp -p 3000:3000/tcp \
  adguard/adguardhome
ExecStop=/usr/bin/podman stop --ignore --cidfile=%t/%n.ctr-id
ExecStopPost=/usr/bin/podman rm -f --ignore --cidfile=%t/%n.ctr-id
Type=notify
NotifyAccess=all

[Install]
WantedBy=multi-user.target

3. ファイアウォール設定

# FirewallD設定
firewall-cmd --permanent --add-service=dns
firewall-cmd --permanent --add-port=3000/tcp
firewall-cmd --permanent --add-port=5335/udp
firewall-cmd --reload

Nextcloud導入試行

Nextcloud用ディレクトリ準備

mkdir -p /opt/nextcloud/{data,config,apps}
chown -R 33:33 /opt/nextcloud/

Podmanでの起動

podman run -d --name nextcloud \
  -p 8080:80 \
  -v /opt/nextcloud/data:/var/www/html/data \
  -v /opt/nextcloud/config:/var/www/html/config \
  -v /opt/nextcloud/apps:/var/www/html/custom_apps \
  nextcloud:latest

AlmaLinuxで遭遇した課題

1. SELinuxの学習コストとトラブル

問題の詳細

# Samba共有でのアクセス拒否
$ sudo setsebool -P samba_enable_home_dirs on
$ sudo chcon -t public_content_rw_t /shared/data

# それでもアクセス拒否が発生
$ sudo sealert -a /var/log/audit/audit.log
SELinux is preventing smbd from write access on the directory data.

対処に要した時間

  • 調査時間: 各エラーにつき平均2-3時間
  • ドキュメント確認: Red Hat公式ドキュメント、Stack Overflow
  • 試行錯誤: ausearchsealertによる原因分析

2. Podman特有の権限問題

ボリュームマウント時のエラー

# エラー例
Error: mounting volume "/opt/nextcloud/data": chown /opt/nextcloud/data: operation not permitted
WARN[0000] Failed to decode the keys "[]" from "/run/user/1000/containers/auth.json"

解決策と限界

# 権限調整の試行
sudo podman run --privileged \
  --security-opt label=disable \
  -v /opt/nextcloud/data:/var/www/html/data:Z \
  nextcloud:latest

# それでもSELinuxコンテキストの問題が残る

3. Nextcloudの設定トラブル

発生した問題

# ログ確認
$ sudo podman logs nextcloud
PHP Warning: file_put_contents(/var/www/html/config/config.php): failed to open stream: Permission denied

デバッグプロセス

試行錯誤の流れ
  1. 権限確認: ls -laZでSELinuxコンテキスト確認
  2. ログ分析: /var/log/audit/audit.logの精査
  3. 設定調整: config.phpの手動編集試行
  4. 最終的な断念: 時間コストが予想を大幅に超過

AlmaLinux vs Debian系 詳細比較

セキュリティ機能

項目 AlmaLinux Ubuntu/Debian
強制アクセス制御 SELinux(厳格) AppArmor(柔軟)
設定難易度 高(専門知識必要) 中(直感的)
トラブル時の調査 ausearchsealert aa-status、ログ確認
コミュニティサポート 限定的 豊富

パッケージ管理

# パッケージ検索
dnf search nginx
dnf info nginx

# インストール
dnf install nginx

# 更新
dnf update
# パッケージ検索
apt search nginx
apt show nginx

# インストール
apt install nginx

# 更新
apt update && apt upgrade

コンテナ技術

機能 AlmaLinux (Podman) Ubuntu (Docker)
デーモンレス ✅ セキュリティ向上 ❌ dockerd必要
学習コスト 高(Docker知識+α) 低(豊富な情報)
エコシステム 発展途上 成熟
トラブルシューティング 情報少ない 豊富な事例

運用・保守性

ドキュメントの充実度

AlmaLinux
  • Red Hat公式ドキュメント(有料部分あり)
  • コミュニティWiki(情報量限定)
  • Stack Overflowの情報(CentOS/RHEL流用)
Ubuntu/Debian
  • 公式ドキュメント(無料で充実)
  • Ubuntu Server Guide
  • 膨大なコミュニティ情報

トラブル解決速度

実際のトラブル解決時間を計測:

問題の種類 AlmaLinux Ubuntu
権限エラー 3-4時間 30分-1時間
サービス設定 2-3時間 1-2時間
ネットワーク問題 1-2時間 30分-1時間

Debian系に戻した決定的理由

1. 開発・運用効率の重視

構築時間の比較Ubuntuでの同環境構築時間
  • AdGuardHome + Unbound: 約2時間
  • Nextcloud: 約1時間
  • 総構築時間: 約3時間

AlmaLinuxでの構築時間

  • AdGuardHome + Unbound: 約6時間(SELinux調整含む)
  • Nextcloud: 未完了(8時間で断念)

2. 学習コスト vs ビジネス価値

3. プロジェクトの優先順位

Lovateプロジェクトでは以下を重視:

  1. 迅速な機能開発
  2. 安定した運用環境
  3. 障害時の素早い復旧

この観点で、慣れ親しんだDebian系の方が圧倒的に効率的でした。

最適な選択をするための判断基準

AlmaLinuxを選ぶべき場面

  • 企業の本番環境(Red Hat系が標準)
  • セキュリティが最優先の環境
  • 長期間の安定運用が必要
  • 専任のインフラエンジニアがいる体制

Debian系を選ぶべき場面

  • 開発速度重視のスタートアップ
  • 個人開発者のプロジェクト
  • トラブルシューティングの容易さを求める環境
  • 豊富なドキュメントが必要な場合

まとめ:技術選択は目的に応じて

AlmaLinuxは確かに優れた技術的基盤を持つディストリビューションです。特にエンタープライズ環境での安定性とセキュリティは素晴らしいものがあります。

しかし、個人開発者やスタートアップにとっては、開発効率トラブル解決の速さが最重要です。この観点では、Debian系(特にUbuntu)の方が圧倒的に優位でした。

最終的な結論「技術的に優れている」≠「あなたのプロジェクトに最適」

技術選択は、チームのスキルセット、プロジェクトの目的、時間的制約を総合的に考慮して行うべきです。

じゅんち8
じゅんち8

AlmaLinuxへの挑戦は良い勉強になりました。でも、個人開発では「動くものを早く作る」ことが最優先。技術選択は実用性重視で行きましょう!

関連記事

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