#author("2025-04-06T16:56:25+09:00","default:dramsukohome","dramsukohome")
#author("2025-04-10T12:04:58+09:00","default:dramsukohome","dramsukohome")
[[LinuxServer]]

#shadowheader(1,"nextcloud");

#contents




* 初回設定、参考サイト [#p3618aa5]
-このサイトが一番わかりやすそうかな。。。~
自分は既存の環境(LAMP)にインストール、設定しました。
--[[NextCloud : インストール:https://www.server-world.info/query?os=CentOS_7&p=nextcloud]]




* rsyslogのインストール [#n2a6b87d]
 sudo apt install rsyslog




* Log出力設定の変更 [#ie24b2e0]

 

** 参考サイト [#we05392c]
-[[【techblog】Nextcloudの管理用CLI「occ」詳細: ログ管理に関するコマンド:https://nextcloud.stylez.co.jp/blog/techblog/occ_details_log.html]]



** ログの出力、確認 [#gda26f11]
 php (nextCloudのルートフォルダ)/occ log:file



** ログの出力方式変更 [#l736066e]
 php (nextCloudのルートフォルダ)/occ log:manage --level=info --timezone Asia/Tokyo




* Install後のセキュリティ&セットアップ警告 [#yd6b5317]
-&color(red,){''自分の環境に特化した内容が含まれますので、あくまでご参考です''};



** 「.soファイル」のコピー先の確認方法 [#f9eea653]
-phpinfo で「extension_dir」を確認



** OPcache [#g37d322d]


*** Install [#p20b5ae0]
 sudo yum install php74-php-opcache php74-php-pecl-apcu


*** 必要なファイルをApacheが参照しているディレクトリへコピー [#o4d4dced]
+必要なファイルの検索1
 find /opt -name "*opcache*"
+必要なファイルの検索2
 find /etc -name "*opcache*"
+ファイルのコピー
 sudo cp /etc/opt/remi/php74/php.d/10-opcache.ini /etc/php.d/
 sudo cp /opt/remi/php74/root/usr/lib64/php/modules/opcache.so /usr/lib64/php/modules/


*** 設定変更 [#m6fa9c49]
+sudo vim /etc/php.d/10-opcache.ini
 zend_extension=opcache
 opcache.enable=1
 opcache.interned_strings_buffer=8
 opcache.max_accelerated_files=10000
 opcache.memory_consumption=128
 opcache.save_comments=1
 opcache.revalidate_freq = 60
 opcache.validate_timestamps = 0


***確認 [#o892298a]
+php -v
++結果例
 PHP 7.4.33 (cli) (built: Apr 10 2024 09:34:29) ( NTS )
 Copyright (c) The PHP Group
 Zend Engine v3.4.0, Copyright (c) Zend Technologies
     with Zend OPcache v7.4.33, Copyright (c), by Zend Technologies
+phpinfoにも「Zend OPcache」の項目として出てきます



** APCu [#h69a73a4]


*** Install [#i8258739]
 sudo yum install php74-php-pecl-apcu


*** 必要なファイルをApacheが参照しているディレクトリへコピー [#h86464df]
+必要なファイルの検索1
 find /opt -name "*apcu*"
+必要なファイルの検索2
 find /etc -name "*apcu*"
+ファイルのコピー
 sudo cp /etc/opt/remi/php74/php.d/40-apcu.ini /etc/php.d/
 sudo cp /opt/remi/php74/root/usr/lib64/php/modules/apcu.so /usr/lib64/php/modules/


*** 設定変更 [#vfc31d5b]
+sudo vim (nextCloudのルートフォルダ)/config/config.php
--「'memcache.local' => '\OC\Memcache\APCu',」を追加
   'installed' => true,                                                                                                    │
   'default_phone_region' => 'JP',                                                                                         │
   'memcache.local' => '\OC\Memcache\APCu',                                                                                │
   'memcache.distributed' => '\OC\Memcache\Redis',                                                                         │
   'memcache.locking' => '\OC\Memcache\Redis',                                                                             │
   'redis' => [                                                                                                            │
        'host' => 'localhost',                                                                                             │
        'port' => 6379,                                                                                                    │
   ],                                                                                                                      │
 );    


***確認 [#pe9ef05a]
+httpdを再起動
 sudo systemctl restart httpd
+phpinfoに「apcu」の項目として出てきます。



** redis [#z0120fd3]


*** Install [#e2a8ffa9]
 sudo yum install php74-php-pecl-redis


*** 必要なファイルをApacheが参照しているディレクトリへコピー [#w3e0141c]
+redis関連
++必要なファイルの検索1
 find /opt -name "*redis.so*"
++必要なファイルの検索2
 find /etc -name "*redis*"
++ファイルのコピー
 sudo cp /etc/opt/remi/php74/php.d/50-redis.ini /etc/php.d/
 sudo cp /opt/remi/php74/root/usr/lib64/php/modules/redis.so /usr/lib64/php/modules/
+igbinary.so
++必要なファイルの検索1
 find /opt -name "*igbinary*"
++必要なファイルの検索2
 find /etc -name "*igbinary*"
++ファイルのコピー
 sudo cp /etc/opt/remi/php74/php.d/40-igbinary.ini /etc/php.d/
 sudo cp /opt/remi/php74/root/usr/lib64/php/modules/igbinary.so /usr/lib64/php/modules/
+msgpack.so
++必要なファイルの検索1
 find /opt -name "*msgpack*"
++必要なファイルの検索2
 find /etc -name "*msgpack*"
++ファイルのコピー
 sudo cp /etc/opt/remi/php74/php.d/40-msgpack.ini /etc/php.d/
 sudo cp /opt/remi/php74/root/usr/lib64/php/modules/msgpack.so /usr/lib64/php/modules/



*** 設定変更 [#xbc91c06]
+sudo vim (nextCloudのルートフォルダ)/config/config.php
--「'memcache.distributed' => '\OC\Memcache\Redis',」以下を追加
   'installed' => true,
   'default_phone_region' => 'JP',
   'memcache.local' => '\OC\Memcache\APCu',
   'memcache.distributed' => '\OC\Memcache\Redis',
   'memcache.locking' => '\OC\Memcache\Redis',
   'redis' => [
        'host' => 'localhost',
        'port' => 6379,
   ],
 );


***確認 [#g53e5f09]
+httpdを再起動
 sudo systemctl restart httpd
+phpinfoに「redis」の項目として出てきます。



** OPcacheのインターン化文字列バッファーがまもなく一杯になります。全てのスクリプトをキャッシュに保管できるようにするには、opcache.interned_strings_bufferの値を8より多い値で、PHP設定に適用することを推奨します。 [#a821c6d5]
-sudo vim /etc/php.d/10-opcache.ini
 opcache.interned_strings_buffer=32
-restart httpd
 sudo systemctl restart httpd



** php-fpm のチューニング [#ad171cf5]
- [[参考サイト(nextcloudが速くなるチューニングポイント):https://blog.future.ad.jp/nextcloud%E3%81%8C%E9%80%9F%E3%81%8F%E3%81%AA%E3%82%8B%E3%83%81%E3%83%A5%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88]]
- sudo vim /etc/php/8.2/fpm/pool.d/www.conf
- 設定値参考
 pm = static
 pm.max_children = 120
 pm.start_servers = 12
 pm.min_spare_servers = 6
 pm.max_spare_servers = 18




* 全文検索機能を組み込む(elasticsearch,Full text search) [#g3cf3572]



** 環境 [#dd9b58d6]
-NextCloud純正のVMイメージから仮想マシンを作ってます。~
elasticsearchはNextCloudのサーバに同居させてます。
|debian|12.9|
|nextcloud|Nextcloud Hub 9 (30.0.6)|
|elasticsearch|Version: 8.17.2, Build: deb/747663ddda3421467150de0e4301e8d4bc636b0c/2025-02-05T22:10:57.067596412Z, JVM: 23|
|java|openjdk version "17.0.14" 2025-01-21&br;OpenJDK Runtime Environment (build 17.0.14+7-Debian-1deb12u1)&br;OpenJDK 64-Bit Server VM (build 17.0.14+7-Debian-1deb12u1, mixed mode, sharing)|



** elasticsearchサーバの構築 [#gc64b426]


*** install [#if1ec6eb]
+レポジトリkeyのインストール
 wget https://artifacts.elastic.co/GPG-KEY-elasticsearch -O /etc/apt/keyrings/GPG-KEY-elasticsearch.key
 echo "deb [signed-by=/etc/apt/keyrings/GPG-KEY-elasticsearch.key] https://artifacts.elastic.co/packages/8.x/apt stable main" | tee /etc/apt/sources.list.d/elastic-8.x.list 
+関連パッケージのインストール(ただあとでsslは無効化するので不要かも。。。)
 sudo apt-get install apt-transport-https
+install
 sudo apt update
 apt -y install elasticsearch
+アナライザ トークナイザ、「analysis-kuromoji」のインストール
 sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji


*** メモリ関連の設定 [#qf100bdf]
 sudo vim /etc/elasticsearch/jvm.options 
+以下を追加(値は各自のサーバ状況に合わせて下さい)
 ################################################################
 ## IMPORTANT: JVM heap size
 ################################################################
 ##
 ## The heap size is automatically configured by Elasticsearch
 ## based on the available memory in your system and the roles
 ## each node is configured to fulfill. If specifying heap is
 ## required, it should be done through a file in jvm.options.d,
 ## which should be named with .options suffix, and the min and
 ## max should be set to the same value. For example, to set the
 ## heap to 4 GB, create a new file in the jvm.options.d
 ## directory containing these lines:
 ##
 ## -Xms4g
 ## -Xmx4g
 ##
 ## See https://www.elastic.co/guide/en/elasticsearch/reference/8.17/heap-size.html
 ## for more information
 ##
 ################################################################
 
 -Xms1g
 -Xmx2g


*** sslの無効化 [#x6826800]
 sudo vim /etc/elasticsearch/elasticsearch.yml

 # Enable security features
 #xpack.security.enabled: true
 xpack.security.enabled: false
 
 #xpack.security.enrollment.enabled: true
 xpack.security.enrollment.enabled: false
 
 # Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
 #xpack.security.http.ssl:
 #  enabled: true
 #  keystore.path: certs/http.p12
 #
 xpack.security.http.ssl:
   enabled: false
 #  keystore.path: certs/http.p12
 
 
 # Enable encryption and mutual authentication between cluster nodes
 #xpack.security.transport.ssl:
 #  enabled: true
 #  verification_mode: certificate
 #  keystore.path: certs/transport.p12
 #  truststore.path: certs/transport.p12
 
 xpack.security.transport.ssl:
   enabled: false
 #  verification_mode: certificate
 #  keystore.path: certs/transport.p12
 #  truststore.path: certs/transport.p12
 
 
 
 # Create a new cluster with the current node only
 # Additional nodes can still join the cluster later
 cluster.initial_master_nodes: ["serverName"]
 
 # Allow HTTP API connections from anywhere
 # Connections are encrypted and require user authentication
 http.host: 0.0.0.0
 
 # Allow other nodes to join the cluster from anywhere
 # Connections are encrypted and mutually authenticated
 #transport.host: 0.0.0.0
 
 #----------------------- END SECURITY AUTO CONFIGURATION -------------------------


*** elasticsearchデーモンの起動と自動起動設定 [#m144ae35]
 sudo systemctl restart elasticsearch 
 sudo systemctl enable elasticsearch 


*** 動作確認 [#d40e98d3]
+なんかしら帰ってきます。ブラウザでも確認可能。
 curl http://localhost:9200



** nextcloud側の設定 [#k91666f3]


*** 関連アプリのインストール [#ff580305]
+右上のイニシャルボタンから「アプリ」を選択
--&imgr(./image/nextCloud/nextCloudApp01.png,100%);
+左側の「ダッシュボード」を選択し、上の検索から「full text」で検索~
下の画像の3つを有効にしてインストールします。
--&imgr(./image/nextCloud/nextCloudApp02.png,100%);


*** 設定 [#a6d7c376]
+右上のイニシャル・アイコンから「管理者設定」を選択
--&imgr(./image/nextCloud/nextCloudApp03.png,100%);
+左側から全文検索を選択
--&imgr(./image/nextCloud/nextCloudApp04.png,100%);
+設定イメージ
--&imgr(./image/nextCloud/nextCloudApp05.png,100%);
--&imgr(./image/nextCloud/nextCloudApp06.png,100%);
+設定値(コピペできるように)
--http://localhost:9200/
--nextcloud
---これ、はまりました。。。この文字列でないとelasticsearchが動かないです。。。
--analysis-kuromoji



** 全文検索、index作成テストと作成 [#n74b0712]
-occ は、/var/www/nextcloud/occ かもしれない。
 sudo -u www-data php occ fulltextsearch:check
 sudo -u www-data php occ fulltextsearch:test
-indexの作成
 sudo -u www-data php occ fulltextsearch:index
-エラー数をリセットしたい場合
 sudo -u www-data php occ fulltextsearch:index "{\"errors\": \"reset\"}"



** daemon化 [#i6dcb3c9]


*** scriptの作成 [#ud6b6f62]
+sudo vi /usr/local/bin/nextCloudFullTextSearch.sh
 #!/bin/sh
 
 # Quick start-stop-daemon example, derived from Debian /etc/init.d/ssh
 set -e
 
 # Must be a valid filename
 NAME=fulltextsearch-daemon
 PIDFILE=/var/run/$NAME.pid
 #This is the command to be run, give the full pathname
 DAEMON="/usr/bin/php"
 DAEMON_OPTS="/var/www/nextcloud/occ fulltextsearch:live"
 
 export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"
 
 case "$1" in
   start)
         echo -n "Starting daemon: "$NAME
         start-stop-daemon --start --background --quiet --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_OPTS
         echo "."
         ;;
   stop)
         echo -n "Stopping daemon: "$NAME
         start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE
         echo "."
         ;;
   restart)
         echo -n "Restarting daemon: "$NAME
         start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile $PIDFILE
         start-stop-daemon --start --background --quiet --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_OPTS
         echo "."
         ;;
 
   *)
         echo "Usage: "$1" {start|stop|restart}"
         exit 1
 esac
 
 exit 0
+実行権限の追加
 sudo chmod +x /usr/local/bin/nextCloudFullTextSearch.sh


*** systemctlへ登録 [#kb68eec9]
- [[参考サイト1(systemdの.serviceファイルで、実行ユーザーを指定する):https://qiita.com/todanano/items/f66f1a3ad76f76de0772]]
- [[参考サイト2(systemd のユニットファイルの作り方):https://tex2e.github.io/blog/linux/create-my-systemd-service]]
+ sudo vi /etc/systemd/system/nextCloudFullTextSearch.service
 [Unit]
 Description = nextCloudFullTextSearch
 
 [Service]
 Restart = no
 Type = forking
 User=www-data
 Group=www-data
 ExecStart = /usr/local/bin/nextCloudFullTextSearch.sh start
 ExecReload = /usr/local/bin/nextCloudFullTextSearch.sh reload
 ExecStop = /usr/local/bin/nextCloudFullTextSearch.sh stop
 
 [Install]
 WantedBy = multi-user.target
+ 登録できたか確認
 sudo systemctl list-unit-files --type=service  | grep next
+ maskの解除
 sudo systemctl unmask nextCloudFullTextSearch.service
-- 何故か上記のファイルが消えたので再度作成


*** 起動と自動起動化 [#o3c8d902]
 sudo systemctl enable nextCloudFullTextSearch.service
 sudo systemctl restart nextCloudFullTextSearch.service


*** 実行されているか確認 [#o1b541ba]
- ps ax | grep occ



** エラー対応 [#rb73b766]


*** Testing search platform. fail [#q498f982]
-エラー内容
 $ sudo docker exec --user www-data nextcloud php occ fulltextsearch:test
 .Testing your current setup:
 Creating mocked content provider. ok
 Testing mocked provider: get indexable documents. (2 items) ok
 Loading search platform. (Elasticsearch) ok
 Testing search platform. fail
 .Testing your current setup:
 Creating mocked content provider. ok
 Testing mocked provider: get indexable documents. (2 items) ok
 Loading search platform. (Elasticsearch) ok
 Testing search platform. fail
-原因
--多分、ssl関連
-対策
--elasticsearchの非ssl化(https -> http)


*** retrieving content from a big index (license). fail [#z807c189]
-原因
--「インデックス,インデックスの名前」が間違えている
-- &imgr(./image/nextCloud/nextCloudApp07.png,100%);
-対策
-- インデックス名を正しい文字列へ
-- NextCloud -> &br; -> 右上(イニシャル・アイコン)から「管理者設定」-> &br; -> 左側「全文検索」-> &br; -> 「インデックス,インデックスの名前」




* その他 [#a7b320c1]



** sessionディレクトリへ権限追加 [#z716795d]
-参考サイト[[【Nextcloud】ログインループ (3) -アッサリ解決-:https://diary.d-yoshi.com/%E3%80%90nextcloud%E3%80%91%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%83%AB%E3%83%BC%E3%83%97-3-%E3%82%A2%E3%83%83%E3%82%B5%E3%83%AA%E8%A7%A3%E6%B1%BA/]]


*** sessionディレクトリの確認 [#k4f34570]
-phpinfo()で確認する
 <?php
 
 phpinfo();
 
 ?>


*** sessionディレクトリへアクセス兼を設定 [#u0bacdbf]
 sudo chown apache: -R /var/lib/php/session



** パスワード・リセット [#l342e888]
 sudo -u www-data php /var/www/nextcloud/occ user:resetpassword admin



** WebDav [#xf4dde6b]


*** WindowsのExplorer(エクスプローラー)でマウント [#g43934d8]
-なんとなくできなくなった?あるいはできなくなる?
--[[Microsoft、WebDAVを含む3つの機能をWindowsから非推奨へ:https://news.mynavi.jp/techplus/article/20231108-2812731/#:~:text=Microsoft%E3%81%AFWindows%E5%90%91%E3%81%91%E3%81%AE,%E3%81%A8%E8%AA%AC%E6%98%8E%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%80%82&text=%E4%BB%8A%E5%9B%9E%E3%80%81%E9%9D%9E%E6%8E%A8%E5%A5%A8%E3%81%AE%E3%83%AA%E3%82%B9%E3%83%88,%E6%A6%82%E8%A6%81%E3%81%AF%E4%BB%A5%E4%B8%8B%E3%81%AE%E9%80%9A%E3%82%8A%E3%80%82&text=Computer%20Browser%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AFWindows,%E6%98%8E%E3%82%89%E3%81%8B%E3%81%AB%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84%E3%80%82]]
-[[参考サイト:https://qiita.com/legitwhiz/items/9ec7d672874ca8ce35bb]]


*** サードパーティのWebDavクライアントソフトを使います。 [#eb612d86]
-[[WebDavクライアントのまとめサイト:https://www.nminoru.jp/~nminoru/pc/webdav_clients.html]]
-- 個人的には「RaiDrive」が良いかな、と思いました。
--- [[RaiDrive download site:https://www.raidrive.com/download]]



** Apache実行ユーザーの変更 [#u3efce90]


***ログインできない [#w8acd740]
-大体、sessionフォルダへのアクセス権の問題
 sudo chown apacheUser:ApacheUsers /var/lib/php/sessions -R


*** redis エラー [#m1c11177]
-redis グループへApache2実行ユーザーを追加
 sudo gpasswd -a apacheUser redis
-daemon再起動
 systemctl restart redis
 systemctl restart apache2


***cron実行ユーザーの変更 [#u5ae7346]
- sudo vim /etc/cron.d/nextcloud



** 詳細ログ(ログイン、ログオフなど)の記録 [#pc5e887a]
+NextCloudへ「Auditing / Logging」アプリのインストール
+ログレベルを1(info)へ変更
-- sudo vi /var/www/nextcloud/config/config.php
  'log_type' => 'file',
  'logfile' => '/var/www/nextcloud-data/nextcloud.log',
  'loglevel' => 1,
+以下のディレクトリ内、2つのファイルに記録される
 /var/www/nextcloud-data/nextcloud.log
 /var/www/nextcloud-data/audit.log



** upgrade後のレストア(restore)、バックアップから戻す [#b5f22786]


*** 参考サイト(公式) [#m7e339db]
-[[Restoring backup:https://docs.nextcloud.com/server/latest/admin_manual/maintenance/restore.html]]


*** restoreコマンド例 [#z9a3e831]
+最初にメンテンスモードをオン
 sudo vi /var/www/nextcloud/config/config.php
   'maintenance' => true,
+rsyncコマンドでバックップディレクトリからコピーする。
 sudo rsync -Aaxv /var/www/nextcloud-data/updater-563ec6d8383a3/backups/nextcloud-30.0.6.2-1740524203/* /var/www/nextcloud/*
+メンテナンス・モードをオフ
 sudo vi /var/www/nextcloud/config/config.php
    'maintenance' => false
+apache2のリスタート
 systemctl restart apache2



** NextCloudクライアント(Windows)、仮想ファイルのローカルPathを変更 [#rb98b3b9]
+以下のファイルを編集
 %appdata%\nextcloud\nextcloud.cfg
+以下の場所を変更~
(フォルダのデリミッタはスラッシュなので注意。~
バックスラッシュ(\)ではない)
 0\FoldersWithPlaceholders\1\localPath
--例
 0\FoldersWithPlaceholders\1\localPath=D:/nextCloud



* エラー対処 [#g0b254b3]



** 参考サイト [#a7bad03f]
-[[Linuxで様々なサービスを構築しよう!!!:https://www.bigbang.mydns.jp/nextcloud-x.htm]]

 

** cron.phpが実行されない [#g5e94c4d]
-以下に変更(/dev/null 2>&1を消し、apc.enable を追加)
-sudo vim /etc/cron.d/nextcloud
 /usr/bin/php -f /var/www/nextcloud/cron.php --define apc.enable_cli=1
-設定変更後は少し時間がかかる事がありますが、何回か実行していると5分以内に収まるようになります。
-実行されているかの確認は、NextCloudの「管理者設定」->「基本設定」で確認可能です。



** updateに失敗する(create backup failed) [#c9e0f87d]
+最初に「対応バージョンがないアプリ」を確認。対応してないと動かなくなります。
+以下のコマンドで確認
 sudo -u www-data php --define apc.enable_cli=1 /var/www/nextcloud/updater/updater.phar
+バックアップの失敗はpermissionエラーの場合が多い。~
以下のコマンドを実行
 sudo chown www-data:www-data -R /var/www/nextcloud/*



** メンタンス・モード(Maintenanceモード)が解除されない。 [#k7c3ec42]
+以下のファイルを編集
 sudo vim /var/www/nextcloud/config/config.php
+以下の場所
  'maintenance' => false,



** Downgrading is not supported and is likely to cause unpredictable issues [#g8e26f06]
+apacheの再起動
 sudo systemctl restart apache2



** 同期エラーで修正しようとしても「ローカルファイルコピー元のファイルが存在しません」となる [#n8dd5369]
+NextCloud側にゴミが残っているので、ブラウザでNextCloudにアクセスし、当該ファイルを削除する。~
(F5キーなど最新の情報に更新するのを忘れずに。。。)



** Windows用, NextCloud ファイル・クライアントで VCOMP140.DLLが見つからないエラー [#d581ec3a]
+以下をインストール
--[[Visual C++ Redistributable for Visual Studio 2015:https://www.microsoft.com/en-ca/download/details.aspx?id=48145]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS