Rocky LinuxにownCloudをインストールして構成する方法
重要: 本手順はサーバー管理の基本知識(sudo権限、シェル操作、テキストエディタの使用)を前提とします。個人情報を扱う場合はローカル法令(GDPR等)と組織のポリシーに従ってください。
H2: 概要
ownCloudはGoogle DriveやDropboxのようなファイルホスティングサービスを自前のサーバー上で構築できるオープンソースのソフトウェアです。サーバーコンポーネントとマルチプラットフォームのクライアントを提供し、ファイル同期、カレンダー、アドレス帳、タスク管理などを拡張機能で実現できます。本ガイドはRocky Linux 8.xを想定し、ownCloudの安定稼働に必要な各種コンポーネントのインストールとベストプラクティスを解説します。
用語(1行定義):
- LAMP: Linux+Apache(httpd)+MariaDB(MySQL)+PHP の組み合わせ。
- SELinux: Linuxの強制アクセス制御フレームワーク。
- Redis: メモリ内キー・バリュー型ストア。ownCloudでキャッシュやセッションに使用。
H2: 目的と適用範囲
このチュートリアルは以下を目的とします。
- Rocky Linux 8系にownCloudをインストールしてHTTPSで公開する。
- SELinuxを有効にした環境で動作するようにラベルと権限を設定する。
- Redis、MariaDB、PHP 7.4などの依存関係を正しく導入する。
対象読者: システム管理者、DevOps、セルフホストを検討するエンジニア。
H2: 事前準備
- Rocky Linux 8.x を稼働させたサーバー
- 非rootのsudo権限ユーザー、またはrootユーザー
- ドメイン/サブドメインがサーバーのIPに向いていること(例: howtoforge.local)
- ファイアウォールで80/443を開けられること
重要な注意:
- 本手順ではPHP 7.4を使います。ownCloudのバージョンによっては互換性が異なるため、必ず公式の互換性表を確認してください。
H2: 目次(ハイレベル)
- 基本パッケージとリポジトリの準備
- Redis の導入と起動
- PHP 7.4 と必要な拡張の導入(Remiリポジトリ)
- Apache (httpd) の導入とファイアウォール設定
- MariaDB の導入、セキュア化、ownCloud用データベース作成
- ownCloud ソースダウンロードと配置
- httpd仮想ホストとSSL設定
- SELinux のラベリングと許可設定
- ブラウザからのインストール、cron設定
- 運用チェックリスト、トラブルシューティング、セキュリティ強化
H2: インストール手順
H3: 1) 基本依存のインストールとEPELリポジトリ
EPELリポジトリを追加して基本的なパッケージをインストールします。例:
sudo dnf install epel-release確認プロンプトで y を入力して進めます。

次にRedis向けモジュールを有効化します(Rockyのリポジトリは複数バージョンを含むため、ownCloud推奨の安定版を選びます)。
sudo dnf module reset redis
sudo dnf module enable redis:6確認プロンプトで y を入力します。

その後、ownCloudに必要なパッケージをインストールします。
sudo dnf install libsmbclient redis unzip libzip bzip2 openssl rsync ImageMagickインストール後にRedisを有効化して起動します。
sudo systemctl enable redis
sudo systemctl start redis
sudo systemctl status redis
メモ: RedisはownCloudのキャッシュやファイルロックに有効です。小規模なデプロイでも応答性向上に寄与します。
H3: 2) PHP 7.4 の導入(Remiリポジトリ)
最新のownCloudは執筆時点でPHP 7.4を必要とする場合があります。ここではRemiリポジトリからPHP 7.4と拡張を導入します。
sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm
sudo dnf module reset php
sudo dnf module enable php:remi-7.4拡張類を含めてインストールします。
sudo dnf install --enablerepo=remi php php-intl php-mysql php-mbstring \
php-imagick php-igbinary php-gmp php-bcmath \
php-curl php-gd php-zip php-imap php-ldap \
php-bz2 php-ssh2 php-common php-json \
php-xml php-devel php-apcu php-redis \
php-smbclient php-pear php-phpseclibインストール後、バージョン確認:
php --version※ 注意: 将来的にownCloudがPHP 8.x に対応しているかは公式ドキュメントで確認してください。対応していない環境でPHP 8を導入すると動作しないことがあります。

H3: 3) Apache (httpd) のインストールとファイアウォール設定
ownCloudはApacheやNginxで動作します。本例ではApache(httpd)を使います。
sudo dnf install httpd httpd-devel httpd-tools mod_ssl
sudo systemctl enable httpd
sudo systemctl start httpd
sudo systemctl status httpdファイアウォールでHTTP/HTTPSを開放します。
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-services
動作確認のため /var/www/html に PHP 情報ページを置いてブラウザからアクセスしてみます。
cat <
EOF ブラウザで http://サーバーIP/info.php を開き、PHP情報が表示されることを確認します。

H3: 4) MariaDB のインストールとセキュア化、ownCloud用DB作成
ownCloudは複数のRDBMSに対応します。ここではMariaDBを使用します。
sudo dnf install mariadb-server
sudo systemctl enable mariadb
sudo systemctl start mariadb
sudo systemctl status mariadbMariaDBをセキュアにするため mysql_secure_installation を実行します。質問に従ってrootパスワード設定、匿名ユーザー削除、testデータベース削除、リモートのrootログイン無効化等を行います。
sudo mysql_secure_installation次にownCloud用のデータベースとユーザーを作成します(’owncloudpass’は安全なパスワードに置き換えてください)。
sudo mysql -u root -p
CREATE DATABASE owncloud;
CREATE USER IF NOT EXISTS 'owncloud'@'localhost' IDENTIFIED BY 'owncloudpass';
GRANT ALL PRIVILEGES ON owncloud.* TO 'owncloud'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
quit
H3: 5) ownCloud のダウンロードと設置
作業ディレクトリを /var/www に移し、ownCloudの最新安定版アーカイブとSHA256を取得します。
cd /var/www
wget https://download.owncloud.com/server/stable/owncloud-complete-latest.tar.bz2
wget https://download.owncloud.com/server/stable/owncloud-complete-latest.tar.bz2.sha256ダウンロード後、sha256sumで検証します。
sudo sha256sum -c owncloud-complete-latest.tar.bz2.sha256 < owncloud-complete-latest.tar.bz2OKであれば展開します。
sudo tar -xvjf owncloud-complete-latest.tar.bz2
sudo chown -R apache:apache /var/www/owncloudownCloudディレクトリが /var/www/owncloud に配置されます。
H3: 6) httpd仮想ホストの設定とSSL(Let’s Encrypt想定)
/etc/httpd/conf.d/owncloud.conf を作成し、以下の例のように設定します(ドメイン名と証明書パスは環境に合わせて変更してください)。
ServerName howtoforge.local
Redirect permanent / https://howtoforge.local/
ServerName howtoforge.local
DocumentRoot /var/www
Protocols h2 http:/1.1
Redirect permanent / https://howtoforge.local/
ErrorLog /var/log/httpd/howtoforge.local-error.log
CustomLog /var/log/httpd/howtoforge.local-access.log combined
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/howtoforge.local/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/howtoforge.local/privkey.pem
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLCompression off
Header always set Strict-Transport-Security "max-age=63072000"
Alias /owncloud "/var/www/owncloud/"
Options +FollowSymlinks
AllowOverride All
Dav off
SetEnv HOME /var/www/owncloud
SetEnv HTTP_HOME /var/www/owncloud
設定ファイルの文法チェックとhttpd再起動:
sudo apachectl configtest
sudo systemctl restart httpd
メモ: Let’s Encryptを使う場合はcertbotで証明書を取得・自動更新設定してください。証明書のパスは /etc/letsencrypt/live/
H3: 7) SELinuxの設定(有効化時)
SELinuxを有効にしている場合、ownCloudのディレクトリに適切なラベルを付け、httpdからDBやネットワークへ接続できるようにブール値を設定します。
sudo dnf install policycoreutils-python-utils
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/owncloud/data(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/owncloud/config(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/owncloud/apps(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/owncloud/apps-external(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/owncloud/.htaccess'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/owncloud/.user.ini'
sudo restorecon -Rv '/var/www/owncloud/'
sudo setsebool -P httpd_can_network_connect_db on
sudo setsebool -P httpd_unified on
sudo setsebool -P httpd_can_connect_ldap on
sudo setsebool -P httpd_can_network_connect on
sudo setsebool -P httpd_can_network_memcache on
sudo setsebool -P httpd_can_sendmail on
sudo setsebool -P httpd_use_cifs on
sudo setsebool -P httpd_use_fusefs on
sudo setsebool -P httpd_use_gpg on
注意: semanage が見つからない場合は policycoreutils-python-utils のインストールを確認してください。SELinuxの許可設定は最小権限で運用することが重要です。
H3: 8) ブラウザからのownCloudインストール
ブラウザで https://your-domain/owncloud/ にアクセスします。管理者アカウントを作成し、データベースに先ほど作成したMariaDB情報を入力してセットアップを完了します(”Finish setup” ボタンをクリック)。

成功するとログイン画面が表示されます。

ダッシュボードからフォルダ作成やファイルアップロードを試して、正常に動作することを確認します。

H3: 9) cronによるバックグラウンドジョブ設定
ownCloudの推奨はcronを使った定期処理です(WebcronやAJAXでも可能ですが、安定性の観点でcronを推奨)。
まず、occコマンドでバックグラウンド方法を確認・設定します。
sudo -u apache /var/www/owncloud/occ background:cron次にapacheユーザーのcrontabを編集して15分ごとに実行する設定を追加します。
sudo crontab -u apache -e
*/15 * * * * /usr/bin/php -f /var/www/owncloud/occ system:cron保存後、ownCloudの「設定」→「一般」→「Security and setup warnings」 に “All checks passed” が表示されることを確認します。

H2: 追加の運用・セキュリティ強化(価値追加)
以下は本番運用を見据えたチェックリスト、セキュリティ対策、バックアップ方法、トラブルシューティングとロール別作業項目などの付加情報です。
H3: 役割別チェックリスト(運用・管理)
- システム管理者:
- OS/パッケージの定期的なアップデート(セキュリティパッチ適用)
- 定期バックアップのスケジュール設定(データベース+データディレクトリ)
- SSL証明書の自動更新(Certbotの設定確認)
- SELinuxとファイルシステム権限の監査
- セキュリティ担当:
- TLS設定の定期レビュー(脆弱なプロトコルの無効化)
- HTTPヘッダー(HSTS, CSP等)の確認
- ログ監視と侵入検知ルールの整備
- アプリ管理者:
- ownCloudのアプリ(拡張機能)のレビューと最小化
- ユーザーとグループの権限管理
- ストレージバックエンド(外部ストレージ)の接続テスト
H3: バックアップとリストアのミニ手順(SOP)
- アプリケーション停止(必須ではないが整合性向上のため推奨):
sudo systemctl stop httpd
sudo systemctl stop redis
sudo systemctl stop mariadb- データベースダンプ:
mysqldump -u root -p owncloud > /root/backup/owncloud-db-$(date +%F).sql- データディレクトリのアーカイブ(/var/www/owncloud/data を想定):
tar -czf /root/backup/owncloud-data-$(date +%F).tar.gz /var/www/owncloud/data- 設定ファイルのバックアップ:
cp -a /var/www/owncloud/config /root/backup/owncloud-config-$(date +%F)- 復元時はデータベースを戻し、ファイルの所有者とSELinuxコンテキストを復元し、httpdを再起動します。
H3: トラブルシューティング常套パターンと対処法(ランブック)
問題: Webで “All checks passed” が出ない
- 対処:
- /var/log/httpd/error_log と ownCloudの owncloud.log を確認
- ディレクトリの所有権とパーミッションを確認: sudo chown -R apache:apache /var/www/owncloud
- SELinuxが原因の可能性: sudo ausearch -m avc -ts recent を確認
- 対処:
問題: DB接続に失敗する
- 対処:
- MariaDBが起動しているか: sudo systemctl status mariadb
- ‘owncloud’ ユーザーの権限を確認: SHOW GRANTS FOR ‘owncloud’@’localhost’;
- SELinuxのブール値で httpd_can_network_connect_db が on か確認
- 対処:
問題: ファイルアップロードが失敗する(大きいファイル)
- 対処:
- php.ini の upload_max_filesize と post_max_size を確認・調整
- ApacheのTimeoutやProxyの設定を見直す
- 対処:
問題: cronが動いていない
- 対処:
- crontabがapacheユーザーで設定されているか確認
- /var/www/owncloud/occ system:cron を手動で実行してエラー出力を確認
- 対処:
H3: セキュリティ強化チェックリスト
- TLS:
- 最新の推奨暗号スイートを使用
- HSTS(Strict-Transport-Security)を設定
- アプリケーション権限:
- 不要なownCloudアプリは無効化
- ファイル所有者はapache:apache(またはウェブサーバー専用ユーザー)に限定
- ネットワーク:
- 管理用ポートはVPNやジャンプサーバー経由に限定
- fail2ban等でブルートフォース対策
- ログと監査:
- ownCloudログの定期収集と長期保存
- 重要イベントのアラート設定
H3: 代替アプローチと比較(短評)
- Nginx を使う場合
- 高並列処理でパフォーマンスが有利になることがある。設定はApacheとは異なるため、ownCloudのドキュメントに沿ってnginx向けのルール(try_filesやfastcgi設定)を適用する。
- データベースにPostgreSQLを使う場合
- MySQL/MariaDBと同等にサポートされており、要件に応じて選択可能。構文やユーザー管理の差に注意。
- マネージドDBや外部ストレージ
- 可用性やバックアップを外部に委託できるが、ネットワーク遅延や追加コストを考慮する必要がある。
H2: 運用上のヒューリスティック(考え方の枠組み)
- セキュリティ優先: 初期構築時にTLS、SELinux、最小権限を整える。後から修復するのは面倒。
- インクリメンタル構築: まず小さなユーザーベースで検証し、モニタリングを導入してから利用範囲を拡大する。
- 最小限の拡張: 必要なアプリだけをインストールし、アップデートと互換性チェックを行う。
H2: 互換性・移行メモ
- ownCloudのバージョンによってはPHPやDBのバージョン要件が変わるため、公式互換表を参照してください。
- 別のセルフホストサービス(例: Nextcloud)から移行する場合は、データの整合性とアプリの互換性を検証する必要があります。移行前にバックアップを必ず取得してください。
H2: 小さな事実ボックス(Fact box)
- 想定ポート: 80(HTTP)、443(HTTPS)
- 推奨PHP: 7.4(執筆時点のownCloud安定版に合わせた例)
- Redis: キャッシュとファイルロックに使用
- 推奨DB: MariaDB/MySQL または PostgreSQL
H2: 簡易決定フロー(Mermaid)
以下は、インストール方法の選択を簡単に示すフローです。
flowchart TD
A[サーバー準備済み?] -->|はい| B[ドメインあり?]
A -->|いいえ| Z[OS準備]
B -->|はい| C[ApacheかNginx?]
B -->|いいえ| Y[DNS設定]
C -->|Apache| D[本ガイドの手順]
C -->|Nginx| E[Nginx用手順へ]
D --> F[SSL取得]
F --> G[インストール完了]H2: よくある質問(1行回答)
- Q: PHP 8は使えますか? A: ownCloudのバージョンに依存します。公式互換性表を確認してください。
- Q: 外部ストレージは使えますか? A: 可能です。SMB/CIFS、S3などを設定できますが権限とパフォーマンスに注意。
- Q: どのくらいのユーザー数まで? A: ワークロード、ハードウェア、キャッシュ設計によって変わるため、負荷試験を実施してください。
H2: トラブル発生時のロール別初動チェックリスト
- システム管理者:
- サービス状態: systemctl status httpd, mariadb, redis
- ディスク容量: df -h(/var/wwwとDBストレージを確認)
- アプリ管理者:
- ownCloudログ /var/www/owncloud/data/owncloud.log を確認
- occ コマンドで診断: sudo -u apache /var/www/owncloud/occ status
- セキュリティ担当:
- SELinuxのAVCログを確認(/var/log/audit/audit.log)
H2: 終わりに — 要点のまとめ
このガイドではRocky Linux 8にownCloudをインストールして安全に運用するための包括的な手順を示しました。LAMPスタックの構築、Redis導入、SELinux設定、SSL化、cron設定、運用チェックリスト、トラブルシューティングの基本を網羅しています。セルフホストは自由度が高い一方で運用責任も伴います。初期構築後はバックアップ、監視、定期的なアップデートを継続してください。
重要: 本文のコマンドや設定例は環境に合わせて調整してください。特にパスワード、ドメイン、証明書パス、ファイルパーミッションは実運用前に確認することを強く推奨します。
H2: 参考(関連トピック/次に読むべき内容)
- Let’s Encrypt による自動証明書更新
- NginxでownCloudを運用する際の設定
- ownCloudと外部ストレージ連携(SMB/S3)
- ownCloudのパフォーマンスチューニング(PHP-FPM, APCu, Redis)