テクノロジーガイド

Rocky LinuxにownCloudをインストールして構成する方法

3 min read サーバー 更新されました 22 Oct 2025
Rocky LinuxでownCloudをインストールして構築
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: 目次(ハイレベル)

  1. 基本パッケージとリポジトリの準備
  2. Redis の導入と起動
  3. PHP 7.4 と必要な拡張の導入(Remiリポジトリ)
  4. Apache (httpd) の導入とファイアウォール設定
  5. MariaDB の導入、セキュア化、ownCloud用データベース作成
  6. ownCloud ソースダウンロードと配置
  7. httpd仮想ホストとSSL設定
  8. SELinux のラベリングと許可設定
  9. ブラウザからのインストール、cron設定
  10. 運用チェックリスト、トラブルシューティング、セキュリティ強化

H2: インストール手順

H3: 1) 基本依存のインストールとEPELリポジトリ

EPELリポジトリを追加して基本的なパッケージをインストールします。例:

sudo dnf install epel-release

確認プロンプトで y を入力して進めます。

EPELをインストールする画面

次にRedis向けモジュールを有効化します(Rockyのリポジトリは複数バージョンを含むため、ownCloud推奨の安定版を選びます)。

sudo dnf module reset redis
sudo dnf module enable redis:6

確認プロンプトで y を入力します。

Redisモジュールを有効化する画面

その後、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の稼働確認画面

メモ: 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を導入すると動作しないことがあります。

PHP 7.4をインストールした画面

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

firewalldでHTTP/HTTPSを許可する画面

動作確認のため /var/www/html に PHP 情報ページを置いてブラウザからアクセスしてみます。

cat <
EOF

ブラウザで http://サーバーIP/info.php を開き、PHP情報が表示されることを確認します。

phpinfoの画面

H3: 4) MariaDB のインストールとセキュア化、ownCloud用DB作成

ownCloudは複数のRDBMSに対応します。ここではMariaDBを使用します。

sudo dnf install mariadb-server
sudo systemctl enable mariadb
sudo systemctl start mariadb
sudo systemctl status mariadb

MariaDBをセキュアにするため 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

MariaDBのインストールとDB作成画面

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.bz2

OKであれば展開します。

sudo tar -xvjf owncloud-complete-latest.tar.bz2
sudo chown -R apache:apache /var/www/owncloud

ownCloudディレクトリが /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

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

SELinux設定画面

注意: semanage が見つからない場合は policycoreutils-python-utils のインストールを確認してください。SELinuxの許可設定は最小権限で運用することが重要です。

H3: 8) ブラウザからのownCloudインストール

ブラウザで https://your-domain/owncloud/ にアクセスします。管理者アカウントを作成し、データベースに先ほど作成したMariaDB情報を入力してセットアップを完了します(”Finish setup” ボタンをクリック)。

ownCloudインストール画面

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

ownCloudログイン画面

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

ownCloudダッシュボード画面

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)

  1. アプリケーション停止(必須ではないが整合性向上のため推奨):
sudo systemctl stop httpd
sudo systemctl stop redis
sudo systemctl stop mariadb
  1. データベースダンプ:
mysqldump -u root -p owncloud > /root/backup/owncloud-db-$(date +%F).sql
  1. データディレクトリのアーカイブ(/var/www/owncloud/data を想定):
tar -czf /root/backup/owncloud-data-$(date +%F).tar.gz /var/www/owncloud/data
  1. 設定ファイルのバックアップ:
cp -a /var/www/owncloud/config /root/backup/owncloud-config-$(date +%F)
  1. 復元時はデータベースを戻し、ファイルの所有者と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)
共有する: X/Twitter Facebook LinkedIn Telegram
著者
編集

類似の素材

Debian 11 に Podman をインストールして使う
コンテナ

Debian 11 に Podman をインストールして使う

Apt-pinning入門:Debianで複数リポジトリを管理
Linux

Apt-pinning入門:Debianで複数リポジトリを管理

OptiScalerでFSR 4を全対応ゲームに導入する方法
ゲーム

OptiScalerでFSR 4を全対応ゲームに導入する方法

Dansguardian と Squid(NTLM)を Debian Etch に導入する方法
ネットワーク

Dansguardian と Squid(NTLM)を Debian Etch に導入する方法

AndroidでSDカードのインストールエラーを修正する方法
トラブルシューティング

AndroidでSDカードのインストールエラーを修正する方法

KNetAttach と KDE の remote:/ でネットワークフォルダーを設定
Linux ネットワーク

KNetAttach と KDE の remote:/ でネットワークフォルダーを設定