タグ: Nextcloud Page 4 of 5

Nextcloudのインストール後の対応:メールサーバ(Gmail連携)

Nextcloudインストール後に出てくるこの警告画面を潰していきます。

メールサーバーの設定が未設定または未確認です。基本設定で設定を行ってください。その後、フォームの下にある「メールを送信」ボタンで設定を確認してください。

基本的に、Redmineと同じ方法でNextcloudはメールサーバの設定が可能になります。

前提

  • Gmailのアプリパスワードを取得していること
  • Nextcloudの個人設定でメールアドレスを登録していること

https://atelier.reisalin.com/projects/zettel/knowledgebase/articles/22

のみです。

管理>基本設定に進みます。

設定の前に

メールサーバーの設定を行います。

  • 送信モード
    • SMTP
  • 暗号化
    • NONE/STRTLS
  • 送信元アドレス
    • Gmailアドレス
  • サーバーアドレス
    • smtp.gmail.com
  • ポート
    • 587

認証情報を入力します。

上記の設定後、「認証を必要とする」にチェックを入れます。

資格情報を入力する欄が出てきます。

  • Username
    • Gmailアドレス
  • パスワード
    • 発行したアプリパスワード

を入力後、保存をクリックします。

送信チェックをします。

「メールを送信」をクリックして、Nextcloudからのメールが送信されれば成功です。

続・Ubuntu 20.04にNextclodを新規インストール。

この記事を作り直したという形です。新たにインストールしたUbuntu20.04系サーバに、一からNextcloudを入れる必要がありました。

上記の記事で不完全なところがありましたので、改めて作成いたします。

前提

以下が稼働済みです。

  • Ubuntu 20.04
  • MySQL 8.0.33
  • Apache 2.4

また、設定するドメインに即したサーバ証明書があることを前提に本記事を作成しています。

さっくりとした手順

※SSHログインし、ターミナルでの操作を行います。

  1. PHPのレポジトリを追加して、Ubuntu20.04でもPHP8.xが使えるようにします。
  2. PHPの設定を行います。
  3. Nextcloud用のDBを作成します。
  4. Nextcloudのプログラムを適切な位置に配置します。
  5. Nextcloudを動かすためのApache設定ファイルを設定します。
  6. Webブラウザで設定を行います。

PHPレポジトリを追加して必要パッケージをインストールします。

  • レポジトリ追加
sudo add-apt-repository ppa:ondrej/php
# Ubuntu20.04系ではこれを行わないとPHP7.4系しかインストールされません。
sudo aptitude update
# 追加後、パッケージのアップデート
  • PHPインストール
sudo aptitude install php8.1

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}

sudo aptitude install php8.1-{imagick,gmp}

sudo systemctl restart apache2.service
# PHPモジュールをWebサーバと連携させるため反映させます
  • 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)
# /path/to/backupは任意のバックアップを設定してください。

diff -u /etc/php/8.1/apache2/php.ini /path/to/backup/php.ini.$(date +%Y%m%d)2
# 差分が存在しないことにより、バックアップが取れていることを確認します。

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 USER 'nextcloud'@'localhost' IDENTIFIED BY 'password';
# パスワードはポリシーに合わせて適切なものを指定してください。

CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

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

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)"
# これらのセクションはSSL暗号化強度を高めるための記述です
# </VirtualHost>の外側に書くことにご注意ください
__EOF__
  • Apache設定ファイル反映
sudo a2ensite nextcloud.conf

sudo apache2ctl configtest
# Syntax OKを確認します

sudo systemctl restart apache2.service

ブラウザ上でNextcloudのセットアップを行います。

  • ブラウザでアクセス

ブラウザで、

http://設定したドメイン

にアクセスし、以下を確認してください。

  • 以下のセットアップ画面が出ること。
  • httpがhttpsとなっていること。

以下を入力して「インストール」をクリックします。

  • ユーザ名:
    • 管理者のユーザ名
  • パスワード:
    • 管理者パスワード
  • データベースのユーザー名
    • 作成したユーザー名(nextcloud)
  • データベースのパスワード
    • 設定したデータベースのパスワード
  • データベース名
    • 作成したデータベース(nextcloud)
  • データベースのホスト名
    • localhost:3306
      • (MySQLのポート番号)

推奨アプリのインストールに関しては、好みでスキップかインストールを行ってください。

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

その後の細かい設定に関しては改めて。

Nextcloud、redisサーバー組み込み後の処理。(Ubuntu20.04)

こちらの続き。Ubuntu 20.04で立ち上げたNextcloudサーバの状況を調べると、以下を確認しました。

redis-server.service: Can't open PID file /run/redis/redis-server.pid (yet?) after start

この問題の対処を行います。

参考:

https://github.com/redis/redis/issues/7361

  • ログ確認
cat /var/log/redis/redis-server.log
  • ログ抜粋

WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

  • バックアップ
sudo cp -pi /lib/systemd/system/redis-server.service /path/to/backup/redis-server.service.$(date +%Y%m%d)
# /path/to/backup は任意のバックアップディレクトリを指定します。
diff -u /lib/systemd/system/redis-server.service /path/to/backup/redis-server.service.$(date +%Y%m%d)
# 差分が無いことでバックアップを確認します。
  • 書き換え

以下のファイルを差分の通りに、教義・進行に沿ったエディタで編集します。

/lib/systemd/system/redis-server.service 

※ここでは、PIDFileを参照させない(コメントアウトする)一番簡単な方法を採りました。

 [Service]
 Type=forking
 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf
-PIDFile=/run/redis/redis-server.pid
+#PIDFile=/run/redis/redis-server.pid
sudo systemctl daemon-reload
sudo systemctl enable redis-server
sudo systemctl restart redis.service
  • 対処後確認
systemctl status redis-server.service

で、上記の

redis-server.service: Can't open PID file /run/redis/redis-server.pid (yet?) after start

が出ないことを確認です。

Nextcloudサーバにredisサーバを組み込み。

Nextcloudを27.0.1にアップデート後――管理画面で

・データベースは取引ファイルを見ることに使われています。パフォーマンスをあげるには、可能であればメモリーのキャッシュを設定してください。

が表示されたので、それに対して対応します。

前提環境

  • Ubuntu 20.04
  • Nextcloud27.0.1
  • Apache 2.4
  • PHP 8.1

さっくりとした手順

SSHでログインし、ターミナルでの操作を行います。

  1. redis関係をインストールします。
  2. Nextcloudのコンフィグを追記します。
  3. Webサービスを再起動します。

手順

追加パッケージのインストール

  • redisインストール
sudo aptitude install redis-server php8.1-redis
# 必要に応じてaptを用いてください。
# 自分のPHPバージョンを付与することを忘れないようにしてください。(でないと、最新のPHPもインストールされます)
  • redisインストール確認
systemctl status redis-server.service
# active (running)を確認します
  • hosts確認
cat /etc/hosts

を実行し、

127.0.1.1       localhost

と表示されていれば、

127.0.0.1       localhost

に修正します。Ubuntu20.04系はなぜかlocalhostを127.0.1.1と設定されるケースがありました。

コンフィグ追記

  • ディレクトリ移動
cd /var/www/html/nextcloud/config && pwd
# 移動先は自身の環境に合わせます。
# そのディレクトリにいることを確認します。
  • バックアップ
sudo cp -pi config.php /path/to/backup/config.php.$(date +%Y%m%d)
# バックアップ先は任意のディレクトリを指定してください。
  • バックアップ取得確認
sudo diff -u config.php /path/to/backup/config.php.$(date +%Y%m%d)
# エラーなく実行され、差分が表示されなければバックアップはできています。
  • ファイル追記

教義、信仰に合わせたエディタで以下を追記して保存します。

注意点:最下行の);直上に追記します。

  'filelocking.enabled' => true,
  'memcache.locking' => '\\OC\\Memcache\\Redis',
  'redis' => 
   array (
     'host' => 'localhost',
     'port' => 6379,
     'timeout' => 3,
   ),
  • ファイル差分確認
sudo diff -u /path/to/backup/config.php.$(date +%Y%m%d) config.php 
# 先程保存したバックアップを指定します。
  • 差分内容
+  'filelocking.enabled' => true,
+  'memcache.locking' => '\\OC\\Memcache\\Redis',
+  'redis' => 
+  array (
+    'host' => 'localhost',
+    'port' => 6379,
+    'timeout' => 3,
+  ),
 );

Webサービス再起動

  • サービス再起動
sudo systemctl restart apache2.service
  • 再起動確認
systemctl status apache2.service
# active (running)を確認します。

設定反映確認

  1. Nextcloudに管理者権限でログインします。
  2. 管理>概要で以下の画面が表示されれば、設定は反映されています。

Nextcloudサーバでcronが止まったときの対処。(自動アップデートされたPHPの復旧)

環境

Ubuntu20.04/Apache 2.4でNextcloudを27にアップデート後、以下のメッセージがありました。

・最後のバックグラウンドジョブの実行は17時間前を実行しました。何かがおかしいようです。バックグラウンドジョブの設定を確認してください。

この問題を解決していきます。

状況確認

  • cronジョブを確認
sudo -u www-data php /var/www/html/nextcloud/cron.php 
# Nextcloudがインストールされているディレクトリ配下にあります
  • 実行結果
Doctrine\DBAL\Exception: Failed to connect to the database: An exception occurred in the driver: could not find driver in /var/www/html/nextcloud/lib/private/DB/Connection.php:140
Stack trace:
#0 /var/www/html/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1531): OC\DB\Connection->connect()
#1 /var/www/html/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1029): Doctrine\DBAL\Connection->getWrappedConnection()
#2 /var/www/html/nextcloud/lib/private/DB/Connection.php(262): Doctrine\DBAL\Connection->executeQuery()
#3 /var/www/html/nextcloud/3rdparty/doctrine/dbal/src/Query/QueryBuilder.php(345): OC\DB\Connection->executeQuery()
#4 /var/www/html/nextcloud/lib/private/DB/QueryBuilder/QueryBuilder.php(280): Doctrine\DBAL\Query\QueryBuilder->execute()
(後略)

この症状をWebで見てみたら、同じような症状を発見。

もしやと思ってphpinfoで調べたら、やっぱりlaravelをインストした時はphp8で、
アプデの時に8.1がインストされたようです。

php -v
PHP 8.2.8 (cli) (built: Jul  8 2023 07:09:59) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.8, Copyright (c) Zend Technologies

サーバの設定変更時にPHPのバージョンアップが走り、新たなPHPにPHPドライバーが走っていなかったようです。

まずはこの問題をただすため、上記URLを参考に以前使っていたバージョンに戻します。

PHPバージョンダウン

sudo update-alternatives --config php
alternative php (/usr/bin/php を提供) には 2 個の選択肢があります。

  選択肢    パス           優先度  状態
------------------------------------------------------------
* 0            /usr/bin/php8.2   82        自動モード
  1            /usr/bin/php8.1   81        手動モード
  2            /usr/bin/php8.2   82        手動モード


現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください: 1
update-alternatives: /usr/bin/php (php) を提供するためにマニュアルモードで /usr/bin/php8.1 を使います

sudo update-alternatives --config phpを実行して、選択肢「1」を実行。

  • Webサービス再起動
sudo systemctl restart apache2.service
  • バージョンダウン確認
php -v
PHP 8.1.21 (cli) (built: Jul  8 2023 07:09:57) (NTS)

これで元に戻っていることを確認。

  • cron再実行
sudo -u www-data php /var/www/html/nextcloud/cron.php 
# Nextcloudがインストールされているディレクトリ配下にあります

エラーなくcron.phpが実行されることを確認しました。

復旧確認

Nextcloudに管理者権限でログインし、管理>概要へと進みます。

エラーはなくなりました。もう一つの警告画面はまた改めて対処します。

Nextcloud管理画面での警告対応。(occ実行)

概要

Nextcloudをバージョンアップ後、以下のような警告が管理画面で出てきました。

セットアップに関して警告がいくつかあります。
データベースにいくつかのインデックスがありません。 大きなテーブルにインデックスを追加すると、自動的に追加されないまでに時間がかかる可能性があるためです。 "occ db:add-missing-indices"を実行することによって、インスタンスが実行し続けている間にそれらの欠けているインデックスを手動で追加することができます。 インデックスが追加されると、それらのテーブルへのクエリは通常はるかに速くなります。
テーブル "oc_filecache"のインデックス "fs_parent"が見つかりません。

環境

  • Ubuntu 20.04
  • PHP8.1
  • Nextcloud 26.0.1
  • Apache 2.4

での対応です。

実施内容

  • コマンド
cd /var/www/html/ && pwd
# Nextcloudのあるディレクトリに移動します
          
sudo -u www-data /bin/php occ db:add-missing-indices
# Webサービスの実行者(ここではwww-data)を指定します  
  • 処理例
Check indices of the share table.
Check indices of the filecache table.
Adding additional parent index to the filecache table, this can take some time...
Filecache table updated successfully.
Check indices of the twofactor_providers table.
Check indices of the login_flow_v2 table.
Check indices of the whats_new table.
Check indices of the cards table.
Check indices of the cards_properties table.
Check indices of the calendarobjects_props table.
Check indices of the schedulingobjects table.
Check indices of the oc_properties table.
Check indices of the oc_jobs table.
Check indices of the oc_direct_edit table.
Check indices of the oc_preferences table.
Check indices of the oc_mounts table.

実施後

Nextcloudの管理画面でリロードを行いました。

全てのチェックに合格しました。

と出たのでOKです。

プログラム自身がチェックを行ってくれるのがNextcloudの強み。

AWS LightsailからNextcloudをアンインストール。

AWS Lightsailで検証したNextcloudをアンインストールします。

導入していた環境

以下の環境で動かしていたNextcloudをアンインストールします。

  • Ubuntu 20.04
  • Apache 2.4
  • PHP 8.1
  • MySQL 8.0.3

そもそも:なぜアンインストールを行ったか?

スペック不足。

外部公開を目指しAWSのLightsailインスタンスで立ち上げましたが、

  • 表示速度
  • 処理能力

その他が納得いくものではありませんでした。

機能が被っている

  1. タスク管理/文書管理としてRedmine
  2. フォトアルバムとしてPiwigo

をインストールしているため、これらと機能が被るものを同一サーバにインストールするには望ましくありません。

ローカル環境との混同

これが一番の問題でした。ローカル(自宅環境)で既に運用しているNextcloudにはかなりのセンシティブ情報が含まれています。これが外部環境に誤ってアップロードされてしまうのはセキュリティポリシー上問題があると判断。

実施した手順

さっくりとした手順

  1. 本当にアンインストールしていいかいったん深呼吸します。
  2. クライアントからアカウントを削除します。(PCを利用している場合)
  3. バーチャルファイルを無効にします。
  4. DBを削除します。
  5. バーチャルファイルを削除します。
  6. ファイルを削除します。

アンインストールでも残すもの

  • PHPは既に他のサービスで動かしているので残します。
  • MySQL/Apacheについても同様です。

削除対象の確認

  1. 深呼吸する
  2. お茶を入れて飲みながらじっくり考え

削除を決意。

重要なファイルがあるかを確認

もう一度確認します。

PCクライアントから設定削除

WindowsなどでNextcloudのアカウントを設定していたので、こちらを削除します。

バーチャルファイル無効化

  • バーチャルファイル無効化
cd /etc/apache2/sites-available && pwd

sudo a2dissite nextcloud.conf
# 自分が設定した環境に合わせます。
  • 無効化反映
sudo systemctl restart apache2.service

この時点でアクセスできないことを確認です。

DB削除

mysql -u root -p
# mysqlのrootパスワードでログイン
SHOW DATABASES;
/* 削除対象を確認します */

DROP DATABASE nextcloud;
/* DB名を再度確認します */
/* 容赦なく削除されるので慎重に行ってください */

SHOW DATABASES;
/* DBがないことを確認します */

EXIT

プログラム一式を削除

  • nextcloud配置ディレクトリ削除
cd /var/www/html && pwd
# nextcloudが格納しているディレクトリ

ls -ld nextcloud
# ディレクトリがあることを確認します

sudo rm -rf nextcloud

ls -ld nextcloud
# ディレクトリがないことを確認します
  • nextcloudバーチャルファイル削除
cd /etc/apache2/sites-available && pwd
# 対象ディレクトリにいることを確認します

sudo rm nextcloud.conf 

後始末

  • 独自ドメインで運用していたのであれば、Nextcloudのために設定していたDNS情報を削除します。
  • 削除されたことを確認します。

最後に

スペックや機能の面でほぼほぼ「こうなるだろうな」という予感はありました。
ですが、一応、やってみるだけの価値はありました。(ローカル環境と比べ著しく遅いと体感でき、後の未練を断つことができました)

NextcloudサーバのPHPアップグレードとエラー解消、そして再設定。(PHP7.4→PHP8.1)

Nextcloudを動かしている自宅サーバでPHPをアップグレード。

ちょっとだけハマったのでメモを残します。

環境

以下の環境でNextcloudを動かしています。

  • Ubuntu 20.04
  • Apache
  • MySQL
  • PHP 7.4

さっくりとした手順

  1. PHP7.4をアンインストールします。
  2. PHP8.1をインストールします。
  3. 追加モジュールを有効化します。
  4. NextCloudの追加設定を行います。

手順

  • 今回は全て通常ユーザで作業をします。
  • また、viを使わずコマンドを用いて設定を置き換えています。
  • 設定をするのはPHPのみです。他は設定の変更をしていません。
  • パッケージ/モジュールのインストールにaptitudeを用いています。好みに合わせてaptをご利用ください。

PHPの削除を行います。

sudo apt-get --purge autoremove php*

PHP8.1をインストールします。

sudo aptitude install php8.1

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}

sudo aptitude install php8.1-apcu

sudo aptitude install php8.1-memcached

php -v
# PHP 8.1.14 (cli)を確認しました。(2023/01/19)

apache再起動を行います。

sudo systemctl restart apache2.service

アップグレード後にエラー。

PHPアップグレード後、Nextcloudにアクセスするとこうなりました。

前の設定が全て消えたので、エラーが発生しました。

こちらを解消していきます。

エラーチェック

cd /var/www/html/nextcloud/
# Nextcloudの格納ディレクトリに移動します。自分の環境に置き換えてください。

sudo -u www-data php ./occ
# NextcloudのCLIインタフェースです
エラー内容
An unhandled exception has been thrown:
OCP\HintException: [0]: Memcache \OC\Memcache\APCu not available for local cache (Is the matching PHP module installed and enabled?)

memcacheとAPCuが読み込まれていないと怒られましたので、有効化していきます。

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__
sudo systemctl restart apache2.service

再設定後の確認

cd /var/www/html/nextcloud/
# nextcloudの格納ディレクトリに移動します

sudo -u www-data php ./occ
# エラーが出ず、occのオプションが表示されることを確認しました。

この後、Nextcloudにアクセスし、画面が表示されることを確認しました。

管理者画面確認

Nextcloudに管理者アカウントでログインし、管理者設定を確認すると

  • PHPのメモリ制限が推奨値の512MB以下です。
  • テーマ別アプリは有効ですが、PHPモジュール「imagick」が有効ではありません。ファビコン生成を正しく行うには、このモジュールをインストールし、有効化する必要があります。
  • PHP モジュール "gmp" および "bcmath" が有効になっていない。WebAuthnパスワードレス認証を利用する場合は、これらのモジュールが必要です。

が出てきました。これを修正していきます。

php.ini修正

sudo cp -pi /etc/php/8.1/apache2/php.ini /etc/old/php.ini.$(date +%Y%m%d)
# /etc/oldがなければディレクトリを作成するか、任意のバックアップパスを指定してください

diff -u /etc/php/8.1/apache2/php.ini /etc/old/php.ini.$(date +%Y%m%d)
# 差分が存在しないことにより、バックアップが取れていることを確認します。

sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/8.1/apache2/php.ini
# memory_limitを推奨値の512Mに置き換えます。
差分確認
diff -u  /etc/old/php.ini.$(date +%Y%m%d) /etc/php/8.1/apache2/php.ini
# 取得したバックアップと置き換えたファイルの差分を確認します
  • 差分
-memory_limit = 128M
+memory_limit = 512M

不足モジュールのインストール

sudo aptitude install php8.1-{imagick,gmp}

設定反映と確認

sudo systemctl restart apache2.service

Nextcloudに管理者アカウントでログインし、管理者設定を確認。

「すべてのチェックに合格しました」

と出たので設定完了です。

Nextcloudのリリース判定。

そもそも、このNextcloudを導入しようと思っていたきっかけは「Dropboxの代わりにならないか」でした。

なので、それを判定です。

スマートフォンの画像をアップロードできるか

→ 問題なし。出先からアップロード出来ないという問題がありますが、逆に無線Wi-Fiルータの帯域を消費せずに住みます。

表示速度などは大丈夫か

→ やはり問題なし。むしろローカル環境なので(インターネット回線に左右されないので)回線速度は良好。プレビューが少しもたつくかなぐらいですが誤差の範囲内です。

システムリソースに負荷がかからないか

→ アップロードした画像にタグ付けや顔認識をする「recognize」のせいで、ロードアベレージが常時10を超える事態が導入直後から1週間以上続きました。

ですが、その処理が無事に終わったあとは収束を見せています。

データの冗長化はどうなっているか

→ こちらも、lsyncによるデータのリアルタイム動機により解決。

結論

10年以上用いていたDropboxを解約するに至りました。(というよりも、並行期間中、Dropboxが使えないことに不便は感じていません)

あと、やることがあるとするならこのサーバ自体のスペックアップとデータストレージの増強ぐらいかなと。

Nextcloudが稼働している小型PC[Chuwi Herobox pro]

NextCloudを利用してのフィードバック。

自身のオンプレ環境にNextcloudを運用するようになって一ヶ月ちょっと。

思ったことを少し述べます。

よかったこと

画像ファイルの保存

スマートフォン/iPadで保存したファイルを逐次アップロードしてくれる安心感は本当に素晴らしいです。しかも、自宅内NWでのみアップロードする環境なので不要な通信を抑えられます。

自動タグ付けによる取り回し

アプリ「recognize」のおかげで、ある程度の画像の分類をしてくれるようになりました。

やや難点

「統合的」に用いることはできない

  • カレンダー
  • ノート
  • スケジュール

など、様々なアプリが用意されていますが、それ専門に特化したWebサービスには及ばないという印象。ToodleDoなどのようにToDoの繰り返し登録などがあれば良かったのになと思います。

自動タグ付けのCPU消費

機械学習によるタグ付けは、それだけでCPUを激しく消費します。特に、画像を大量登録していた移行期〜3週間ほどはロードアベレージが7〜8を超えていてヒヤヒヤものでした。

今後の展望

「Dropboxから安全に移行できるか」が鍵になります。そうなると、ディスクの冗長化や一層のセキュリティ対策が求められるので、課題は続きます。

Page 4 of 5

Powered by WordPress & Theme by Anders Norén