Ubuntu 20.04(22.04)にNextcloudをインストール
新たにインストールしたUbuntu20.04系/Ubuntu22.04サーバにNextcloudを導入します。
前提
以下が稼働済みです。
- Ubuntu 20.04
- Ubuntu 22.04でも動作を確認しました。
- MySQL 8.0.33
- Apache 2.4
また、設定するドメインに即したサーバ証明書があることを前提に本記事を作成しています。
さっくりとした手順
※SSHログインし、ターミナルでの操作を行います。
- PHPのレポジトリを追加して、Ubuntu20.04でもPHP8.xが使えるようにします。
- PHPの設定を行います。
- Nextcloud用のDBを作成します。
- Nextcloudのプログラムを適切な位置に配置します。
- Nextcloudを動かすためのApache設定ファイルを設定します。
- Webブラウザで設定を行います。
PHPレポジトリを追加して必要パッケージをインストールします。
- レポジトリ追加
sudo add-apt-repository ppa:ondrej/php
Ubuntu20.04系ではこれを行わないとPHP7.4系しかインストールされません。
- レポジトリ追加後のパッケージアプデート
sudo aptitude update
- PHPインストール
sudo aptitude install php8.1
- PHPモジュールインストール
sudo aptitude install php8.1-{opcache,pdo,bcmath,calendar,ctype,fileinfo,ftp,gd,intl,json,ldap,mbstring,mysql,posix,readline,sockets,bz2,tokenizer,zip,curl,iconv,phar,xml,dev,imagick,gmp}
- Apache再起動
sudo systemctl restart apache2.service
- PHPインストール確認
php -v
表示例:PHP 8.1.21 (cli) (built: Jul 8 2023 07:09:57) (NTS)
PHPの設定を行います。
- memcacheとAPCuの有効化
cd /etc/php/8.1/cli/conf.d
cat <<- __EOF__ | sudo tee -a /etc/php/8.1/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.1/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.1/apache2/php.ini /path/to/backup/php.ini.$(date +%Y%m%d)
任意のバックアップディレクトリを指定します。
- バックアップ確認
diff -u /etc/php/8.1/apache2/php.ini /path/to/backup/php.ini.$(date +%Y%m%d)
差分が存在しないことにより、バックアップが取れていることを確認します。
- sedによるファイル書き換え
sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/8.1/apache2/php.ini
memory_limitを推奨値の512Mに置き換えます。
- 書き換え後の差分確認
diff -u /path/to/backup/php.ini.$(date +%Y%m%d) /etc/php/8.1/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 BY 'password';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
EXIT;
- 追加した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】
# 中間証明書が発行元から別ファイルで提供されている場合は、この直上をコメントアウトして中間証明書を指定します
#セキュリティヘッダー付与
Header always set Strict-Transport-Security "max-age=63072000"
Header set X-Content-Type-Options "nosniff"
Header always append X-Frame-Options "SAMEORIGIN"
Header set X-XSS-Protection "1; mode=block"
</VirtualHost>
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.2
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:EC6-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off
SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"
__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のポート番号)
- localhost:3306
推奨アプリのインストールに関しては、好みでスキップかインストールを行ってください。
インストールが完了したら、以下のような画面が出ます。