Ubuntu 20.04もEOLを迎えたため、こちらのバージョンでのインストールを確認です。
前提
以下が稼働済みです。
- OS: Ubuntu 24.04 LTS
- データベース: MySQL 8.0 (Ubuntu 24.04 の標準リポジトリで利用可能)
- Webサーバー: Apache 2.4 (Ubuntu 24.04 の標準リポジトリで利用可能)
- ドメインと証明書: Nextcloud を設定するドメイン名と、それに対応する有効なSSL/TLSサーバー証明書(例: Let's Encrypt などで取得したもの)が準備されていること。
さっくりとした手順
※SSHログインし、ターミナルでの操作を行います。
- 必要なPHPパッケージ(PHP 8.3 と関連モジュール)をインストールします。
- PHPの設定(メモリ制限、OPcache、APCu)を行います。
- Nextcloud用のデータベースとユーザーを作成します。
- Nextcloudの最新版プログラムをダウンロードし、適切な場所に配置します。
- Nextcloudを動かすためのApache設定ファイルを設定します。
- Webブラウザで設定を行います。
必要パッケージをインストールします。
- PHP・モジュールインストール
sudo aptitude install php8.3 php8.3-fpm php8.3-opcache php8.3-pdo php8.3-bcmath php8.3-calendar php8.3-ctype php8.3-fileinfo php8.3-ftp php8.3-gd php8.3-intl php8.3-json php8.3-mbstring php8.3-mysql php8.3-posix php8.3-readline php8.3-sockets php8.3-bz2 php8.3-tokenizer php8.3-zip php8.3-curl php8.3-iconv php8.3-xml php8.3-imagick php8.3-gmp php8.3-apcu libapache2-mod-php8.3
補足
php8.3-fpm
: Apache でmod_php
の代わりに PHP-FPM を使用する場合にインストールします。(今回はlibapache2-mod-php8.3
を使っていますが、FPMの方がパフォーマンスや分離の点で推奨される場合もあります)。もしFPMを使う場合はApacheの設定も変わります。この手順ではlibapache2-mod-php8.3
(mod_php)を前提とします。php8.3-ldap
: LDAP/AD連携を使用する場合にインストールしてください。php8.3-dev
: 通常の運用には不要ですが、PECLなどで拡張機能をコンパイルする場合に必要です。- Apache再起動
sudo systemctl restart apache2.service
- PHPインストール確認
php -v
表示例:PHP 8.3.n
PHPの設定を行います。
Nextcloud のパフォーマンスと安定性のために、PHPの設定を調整します。
- memcacheとAPCuの有効化
cd /etc/php/8.3/cli/conf.d
以下のファイルのように修正します。ない場合は、以下のように追記します。
cat <<- __EOF__ | sudo tee -a /etc/php/8.3/cli/conf.d/10-opcache.ini
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
__EOF__
cat <<- __EOF__ | sudo tee -a /etc/php/8.3/cli/conf.d/20-apcu.ini
[apcu]
apc.enabled=1
apc.shm_size=32M
apc.ttl=7200
apc.enable_cli=1
apc.serializer=php
__EOF__
- php.iniバックアップ
sudo cp -pi /etc/php/8.3/apache2/php.ini /path/to/backup/php.ini.$(date +%Y%m%d)
任意のバックアップディレクトリを指定します。
- バックアップ確認
diff -u /path/to/backup/php.ini.$(date +%Y%m%d) /etc/php/8.3/apache2/php.ini
差分が存在しないことにより、バックアップが取れていることを確認します。
- sedによるファイル書き換え
sudo sed -i 's/memory_limit = .*/memory_limit = 512M/g' /etc/php/8.3/apache2/php.ini
memory_limitを推奨値の512Mに置き換えます。
- 書き換え後の差分確認
diff -u /path/to/backup/php.ini.$(date +%Y%m%d) /etc/php/8.3/apache2/php.ini
- 差分
-memory_limit = 128M
+memory_limit = 512M
- apache 再起動
sudo systemctl restart apache2.service
NextcloudのDBを作成します。
- MySQLにroot権限でログイン
mysql -u root -p
- MySQLユーザ追加
CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'nextcloud'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YOUR_STRONG_PASSWORD';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
EXIT;
★重要: YOUR_STRONG_PASSWORD
は必ず推測されにくい強固なパスワードに変更してください。
IDENTIFIED WITH mysql_native_password BY
は MySQL 8.0 で推奨される認証方式の一つです。
- 追加したNextcloud用ユーザでログイン
mysql -u nextcloud -p
設定したパスワードでログインできることを確認します
- DB作成確認
SHOW DATABASES;
作成したデータベースnextcloudがあることを確認します
EXIT;
Nextcoludのプログラムを配置します。
- 作業用ディレクトリ移動
cd /hoge && pwd
任意の作業用ディレクトリを指定します。
- ファイル取得
wget https://download.nextcloud.com/server/releases/latest.zip
unzip latest
- Web公開用ディレクトリにファイル一式を移動
sudo mv nextcloud /home/www-data/
自分の環境に合わせます。(筆者はファイルサーバとして運用するので、/home領域に設置しました)
- 所有者変更
sudo chown -R www-data:www-data /home/www-data/nextcloud
Apacheの設定ファイルを作成します。
- ログディレクトリの作成
sudo mkdir /var/log/nextcloud
環境に合わせます。
- ディレクトリの所有者変更
sudo chown www-data:www-data /var/log/nextcloud
- nextcloud用の設定ファイル作成
- 【】部分は自分の環境に合わせます。
cat <<- __EOF__ | sudo tee -a /etc/apache2/sites-available/nextcloud.conf
<VirtualHost *:80>
servername 【hoge.example.com】
# ドメイン名を指定します
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# HTTPアクセスを強制的にHTTPSにリダイレクトします
</VirtualHost>
<VirtualHost *:443>
ServerName 【hoge.example.com】
# ドメイン名を指定します
CustomLog /var/log/nextcloud/nextcloud_access.log combined
ErrorLog /var/log/nextcloud/nextcloud_error.log
DocumentRoot 【/home/www-data/nextcloud】
# 上記手順で指定したディレクトリです
<Directory 【/home/www-data/nextcloud】>
# 上記手順で指定したディレクトリです
Options -MultiViews
AllowOverride All
Require all granted
</Directory>
#SSL設定
SSLEngine on
Protocols h2 http/1.1
# SSLを有効化します
SSLCertificateFile 【/etc/certs/hoge.example.com.crt】
# SSL証明書を指定します
SSLCertificateKeyFile 【/etc/private/hoge.example.com.key】
# 秘密鍵を指定します
# SSLCACertificateFile 【/etc/certs/hoge.example.com.CA.crt】
# 中間証明書が発行元から別ファイルで提供されている場合は、この直上をコメントアウトして中間証明書を指定します
# 推奨されるSSL/TLS設定 (Mozilla Intermediate Compatibility)
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
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
SSLHonorCipherOrder on
SSLCompression off
SSLSessionTickets off # PFSを強化する場合
# OCSP Stapling (パフォーマンス向上)
SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"
# セキュリティヘッダー
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
Header always set Referrer-Policy "no-referrer"
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Permitted-Cross-Domain-Policies "none"
</VirtualHost>
__EOF__
- Apache設定ファイル反映
sudo a2ensite nextcloud.conf
- 設定ファイルのコンフィグ確認
sudo apache2ctl configtest
Syntax OKを確認します
- Apache再起動
sudo systemctl restart apache2.service
ブラウザ上でNextcloudのセットアップを行います。
- ブラウザでアクセス
ブラウザで、
http://設定したドメイン
にアクセスし、以下を確認してください。
- 以下のセットアップ画面が出ること。
- httpがhttpsとなっていること。

以下を入力して「インストール」をクリックします。
- ユーザ名:
- 管理者のユーザ名
- パスワード:
- 管理者パスワード
- データベースのユーザー名
- 作成したユーザー名(nextcloud)
- データベースのパスワード
- 設定したデータベースのパスワード
- データベース名
- 作成したデータベース(nextcloud)
- データベースのホスト名
- localhost:3306
- (MySQLのポート番号)
推奨アプリのインストールに関しては、好みでスキップかインストールを行ってください。

インストールが完了したら、以下のような画面が出ます。

コメントを残す