カテゴリー: PC Page 29 of 56

Steam保存場所の変更とNextcloudの連携。

Steamが稼働しているPCの保存領域を少し減らすため、スクリーンショットの保存場所を変更しました。

Steamツールバーから「表示→スクリーンショット」へと進みます。

ゲーム中タブから「スクリーンショットの非圧縮コピーを保存する」を有効にします。

非圧縮スクリーンショットフォルダーをNextcloudの共有フォルダーに変更します。

後はゲームを立ち上げてスクリーンショットを撮影するだけ。
Nextcloudの画像ファイルに勝手に登録してくれます。

登録日時やシステムタグも登録するので便利です。

Piwigo, Webからのアップデート。

Webでのフォトアルバムアプリ、Piwigo。

https://hideout.reisalin.com/

WordPressやNewxtcloudと同じようにWeb画面上でアップデートができました。

管理者アカウントでログインし、管理>ダッシュボードにアクセスします。

「新しいバージョンのPiwigoが利用可能です」とでるのでこちらをクリック。

アップグレードをクリックします。

しばらく待ちます。

「アップデート完了」のメッセージが出たら作業は完了です。

GrowiのDB格納先を変更。(mongod.conf編集)

GrowiのDB保存先を、冗長性を持たせたディスクに移設したときのメモです。

動作を確認した環境

  • Ubuntu 20.04
  • MongoDB v4.4.13
  • Growi 6.1.14

さっくりとした手順

  1. MongoDBサービスを停止します。
  2. DBの格納ディレクトリを作成します。
  3. MongoDBの設定ファイルを編集します。
  4. MongoDBサービスを再開します。
  5. 格納ディレクトリが変わったことを確認します。

MongoDBの停止

これは確実に行ってください。でないと、作業中にDBが書き換えられ不具合が発生する可能性があります。
(共有Wikiであればなおさらです)

sudo systemctl stop mongodb

systemctl status mongodb
# inactive(dead)を確認します

新規格納ディレクトリの作成

sudo mkdir /home/mongodb
# 任意の保存ディレクトリを作成します

sudo chown -R mongodb:mongodb /home/mongodb

ls -ld /home/mongodb
# ディレクトリの所有者がmongodbであることを確認します

既存データのコピー

  • ディレクトリ移動
cd /var/lib/mongodb && pwd

ll
# .wtで終わるファイルがあることを確認します
  • ファイルコピー
sudo cp -pir * /home/mongodb
# 先ほど作成したディレクトリにコピーします
  • ファイルコピー確認
cd /home/mongodb && pwd

ll
# コピーしたファイル一式があることを確認します

設定ファイル修正

  • 設定ファイルのバックアップ取得
sudo cp -pi /etc/mongod.conf /path/to/backup/mongod.conf.$(date +%Y%m%d)
# 任意のバックアップディレクトリを指定します。

diff -u /etc/mongod.conf /path/to/backup/mongod.conf.$(date +%Y%m%d)
# バックアップが保存されたか、差分がないことで確認します。
  • 設定ファイル編集

/etc/mongod.conf を教義・信仰に沿ったエディタで修正します。

  • 編集内容
  dbPath: /home/mongodb
  • 差分内容
-  dbPath: /var/lib/mongodb
+  dbPath: /home/mongodb

設定反映 (MongoDB再開)

sudo systemctl start mongod.service

systemctl status mongod.service
# active(running)を確認します

設定反映確認

  • ブラウザでの確認
  1. MongoDBを利用しているアプリ(Growi)にアクセスします。
  2. 正常にアクセスできて、Wikiの閲覧や編集、作成ができることを確認します。
  • サーバでの確認
cd /home/mongodb && pwd

ls -lart
# .wtファイルの更新時刻がブラウザで編集した時と同じであることを確認します。

cd /var/lib/mongodb && pwd

ls -lart
# .wtファイルの更新時刻が操作前と同じことを確認します。

事後作業(必要に応じて)

問題なく稼働することが確認されたら、元の保存ファイルを削除(退避)させます。

NFSマウントによるサーバディレクトリのマウント。

予備で使っているUbuntuサーバ。ディスク容量が余っているのでバックアップサーバとして用いてみました。

前提

  • サーバA(メイン)とサーバB(バックアップ)が同一NW上につながっている。
  • 両方ともサーバはUbuntu。
  • サーバBの/home/backupディレクトリをバックアップとして用いる。

さっくりとした手順

  1. サーバBでNFSサーバをインストールします。
  2. サーバBでサーバAの許可設定を行います。
  3. サーバAでサーバBのディスクをマウントします。
  4. 再起動時、自動マウントできるように設定します。

NFSサーバインストール (サーバB)

sudo aptitude update
sudo aptitude install nfs-kernel-server

NFSサーバアクセス許可設定 (サーバB)

教義・信仰に沿ったエディタで以下のファイルを編集・追記します。

  • 編集するファイル
/etc/exports
  • 追記する内容
/home/backup <サーバAのIPアドレス>(rw,sync,no_root_squash,no_subtree_check)

NFSサーバの設定反映

sudo systemctl restart nfs-kernel-server

NFSクライアントのインストール(サーバA)

sudo aptitude update
sudo aptitude install nfs-common

マウントするディレクトリの作成(サーバA)

sudo mkdir /mnt/backup

サーバのマウント確認(サーバA)

  • NFSマウント
sudo mount <サーバBのIPアドレス>:/home/backup /mnt/backup
  • マウント確認
df -h
# サーバBのIPアドレス:/home/backup  と見えていれば成功です
  • ファイルの読み書きを行えるか確認
sudo mkdir test

sudo chown -R hoge:hoge test
# hogeは任意のユーザ名を指定します

cd test

touch test.txt

ls test.txt
# ファイルが表示されることを確認します

rm test.txt
ls test.txt
# ファイルが表示されないことを確認します
  • マウント解除
cd
#/mnt/backupにいるとマウント解除できません

sudo umount /mnt/backup
  • マウント解除確認
df -h
# サーバBのIPアドレス:/home/backup が消えていればマウント解除できています

fstab編集(サーバA)

サーバAを再起動しても自動的にサーバBのディレクトリをマウントできるようにします。

教義・信仰に沿ったエディタで以下のファイルを編集・追記します。

  • 編集するファイル
/etc/fstab
  • 追記する内容
<サーバBのIPアドレス>:/backup /mnt/backup nfs rw,sync 0 0

自動マウント確認(サーバA)

※サーバの再起動を行うので、作業時は注意してください。

sudo reboot
df -h
# サーバBのIPアドレス:/home/backup  と見えていれば成功です

rsyncやlsyncと違って、あたかもそのディスクがサーバ上にあるかのように扱えるのがポイントです。

もちろん、NW越しにデータの読み書きをするので、速度はNWの帯域や処理速度に依拠します。過信は禁物です。

Nextcloud 画像認識「Recognize」の自動タグ付けが行われない問題の解決。(occ 実行)

Ubuntu 20.04に新規インストールすることになったNextcloud。

各種設定を済ませ、アプリの動作を確認中に「Recognize(画像自動認識・タグ付けツール)で以下の警告が出ていました。また、自動タグ付けも行われていなかったので、問題の解決を行います。

参考にしたURL

https://help.nextcloud.com/t/machine-learning-models-still-need-to-be-downloaded/151566

さっくりとした手順

  1. Nextcloudの格納ディレクトリに移動します。
  2. Nextcloudのコマンドラインツール(occ)を実行します。
  3. 動作を確認します。

Nextcloudがインストールされているサーバにターミナルでログインします。

任意のクライアントを用います。

格納ディレクトリに移動します。

# 例
cd /var/www/html/nextcloud

# 筆者環境
cd /home/www-data/nextcloud

コマンドラインツールを実行します。

sudo -u www-data php occ recognize:download-models
# 環境によって時間がかかります

sudo -u www-data php occ recognize:recrawl

動作確認を行います。

Nextcloudに管理者でログインし、管理メニュー>Recognizeから以下の通り、警告が消えていることを確認します。

ダッシュボード>アクティビティから、以下の通り、画像のタグ付けが行われていることを確認します。

(表示まで最大15分程かかります)

Nextcloudのインストール後の対応:ログローテーションの設定

Nextcloudは多層的なWebアプリスイートであるため、ログがたちまち肥大化します。

そのため、設定後、ログローテーションの設定を行います。

動作確認環境

  • Ubuntu 20.04
  • Nextcloud 27.02
  • Apache2.4経由で稼働
  • PHP 8.1

さっくりとした手順

  1. logrotate.dにファイルを追加します。
  2. 動作を確認します。
  3. logrotateサービスを再起動します。

ファイルの追加

以下の通り、ファイルを追加します。【】内は設定したログファイルの格納ディレクトリにしてください。

cat <<- __EOF__ | sudo tee -a /etc/logrotate.d/nextcloud
【/var/log/nextcloud/】*.log {
    daily
    dateext
    dateformat -%Y%m%d
    rotate 10
    missingok
    notifempty
    su www-data www-data
    create 640 www-data www-data
    sharedscripts
    compress
    delaycompress
        postrotate
                if invoke-rc.d apache2 status > /dev/null 2>&1; then \
                    invoke-rc.d apache2 reload > /dev/null 2>&1; \
                fi;
        endscript
}
__EOF__
それぞれの内容
  1. /var/log/nextcloud/*.log: /var/log/nextcloud/ ディレクトリ内の全ての .log ファイルを対象にしてログローテーションが行われます。
  2. daily: 日ごとにログをローテートします。
  3. dateext: ログファイル名に日付が追加されます。
  4. dateformat -%Y%m%d: 日付のフォーマットが "年4桁月2桁日2桁" の形式で指定されます。
  5. rotate 10: ログファイルは10世代まで保持され、古いファイルは削除されます。
  6. missingok: ログファイルが存在しない場合でもエラーを出さずに処理を続行します。
  7. notifempty: ログファイルが空の場合、ローテーションを行わずにスキップします。
  8. su www-data www-data: ローテーション操作時にログファイルの所有者とグループを www-data ユーザーに変更します。
  9. create 640 www-data www-data: 新しいログファイルが作成される際、所有者 www-data とグループ www-data、パーミッション 640 で作成されます。
  10. sharedscripts: ローテーションの前後に prerotate および postrotate セクション内のコマンドを共有します。
  11. compress および delaycompress: ローテート後にログファイルを圧縮し、以前のファイルを圧縮しないようにします。
  12. postrotate: ローテーションが完了した後、Apache2サーバーが起動している場合にApache2をリロードします。

設定確認

sudo logrotate -v /etc/logrotate.d/nextcloud

エラーがないことを確認します。

設定反映

sudo systemctl restart logrotate.service

これで設定は完了です。後日、アクセスログが圧縮されていることを確認します。

すぐ確認したい場合は

sudo logrotate -f /etc/logrotate.d/nextcloud

で、強制的にローテートさせます。

growiのデータ移行。

サーバの整理のため、Growiサイトを別サーバに引っ越すことにしました。

前提

  • 移行元と移行先のGrowiが互いに見えている(同じNW越しにいる)
  • 移行元と移行先のGrowiバージョンが一致している。
  • 移行先のGrowiが立ち上がっていることを確認している。
  • 移行元のGrowiの管理者アカウントを管理している。
  • 利害関係者間で、Growiを移行することに同意が取れている。

さっくりとした手順

  1. 移行先のgrowiで移行キーを発行する。
  2. 移行元のgrowiでデータ移行を開始する。
  3. 移行元のgrowiでデータ移行が完了したことを確認する。

移行先Growiでの作業

  • 移行先のGrowiを立ち上げた状態(ログインアカウントなどは発行していない)状態で、移行先のGrowiにアクセスします。
  • ログイン画面で「データ移行」タブをクリックします。

「移行キーを発行する」をクリックします。

出てきた移行キーをコピーします。

移行元Growiでの作業

  1. 移行元のGrowiで、管理者権限でログインします。
  2. 設定>データ移行に移動します。

上記、移行先で発行した移行キーを貼り付けて「移行を開始する」をクリックします。

※この時、以降元と移行先のバージョンが違うとエラーが出ました。

移行先Growiでの移行確認

  1. 移行先GrowiのURLにアクセスします。
  2. 移行元のアカウントでログインできることを確認します。
  3. 各種データ(添付ファイル含む)が元と同じであることを確認します。

何というか、恐ろしく簡単にデータ移行ができて拍子抜けしました。

Nextcloudのインストール後の対応:cron設定

Nextcloudのインストール後の設定で概要でのセキュリティチェックがパスしましたが、

管理>基本設定で

最終ジョブ実行は %s です。何か問題が発生しています。

と出ていますので、これの設定を行います。

動作を確認した環境

  • Ubuntu 20.04
  • Apache 2.4系
  • PHP8.1
  • Nextcloud 27.0.2

さっくりとした手順

  1. Nextcloud上で設定を変えます。
  2. 一度Cronを走らせます。
  3. Cron設定を行います。
  4. 動作を確認します。

Nextcloud設定変更

  1. Nextcloud>管理>基本設定に進みます。
  2. バックグラウンドジョブをCronに設定します。

Cron作動

NextcloudがインストールされたサーバにSSHログインし、以下を実行します。

sudo -u www-data /usr/bin/php /var/www/html/nextcloud/cron.php

# 自分がnextcloudをインストールした環境に合わせます。
# 筆者環境
# sudo -u www-data /usr/bin/php /home/www-data/nextcloud/cron.php

Cron実行確認

  1. Nextcloud>管理>基本設定に進みます。
  2. 以下のように「最終ジョブ実行は○分前です」が表示されることを確認します。

Cronログ設定

Ubuntu 20.04の初期設定はcronログの出力が無効になっているので、修正します。

cd /etc/rsyslog.d

sudo cp -pi 50-default.conf /path/to/backup/50-default.conf.$(date +%Y%m%d)
# 任意のバックアップディレクトリを指定します。

diff -u 50-default.conf /path/to/backup/50-default.conf.$(date +%Y%m%d)
# 差分がないことでバックアップされていることを確認します。
  • ファイル修正

教義・信仰に合わせたエディタで以下を修正します。

  • 修正前
#cron.*                         /var/log/cron.log
  • 修正後
cron.*                         /var/log/cron.log
  • 設定反映
sudo systemctl restart rsyslog.service

Cron登録

  • crontab起動
sudo -u www-data crontab -e
  • 追記内容
*/5 * * * * /usr/bin/php -f /var/www/nextcloud/cron.php
# 自分の環境に合わせます。
# 筆者環境
# */5 * * * * /usr/bin/php -f /home/www-data/nextcloud/cron.php
  • Cron登録確認
tail -50 /var/log/cron.log
  • BEGIN EDIT (www-data)
  • REPLACE EDIT (www-data)
  • END EDIT (www-data)

と表示されていれば、Cron登録は確認されています。

  • メール設定
  • config.phpの設定
  • メモリキャッシュの設定
  • redis-serverの組み込み
  • cron設定

が終われば、一応、初期準備は済んだと思います。

Nextcloudのインストール後の対応:config.php修正とredis-server組み込み

本記事はNextcloudに関する記事を再構成して2023年8月現在の安定版27.0.2に合わせた設定となっています。

メール設定後、Nextcloudのセキュリティ&セットアップ警告をまとめて対応します。

  • データベースは取引ファイルを見ることに使われています。パフォーマンスをあげるには、可能であればメモリーのキャッシュを設定してください。
  • ご使用のシステムには、デフォルトの電話地域が設定されていません。
    メモリーキャッシュが構成されていません。

動作を確認した環境

  • Ubuntu 20.04
  • Apache 2.4系
  • PHP8.1
  • Nextcloud 27.0.2

さっくりとした手順

  1. 追加パッケージ(redis-server)をインストールします。
  2. config.phpを追記・修正します。
  3. Apacheを再起動します。

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

※Nextcloud 27系からキャッシュサーバの組み込みは推奨となりました。

  • 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)
# エラーなく実行され、差分が表示されなければバックアップはできています。
  • ファイル追記

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

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

  'default_phone_region' => 'JP',
  'memcache.local' => '\OC\Memcache\APCu',
  '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 
# 先程保存したバックアップを指定します。
  • 差分内容
+  'default_phone_region' => 'JP',
+  'memcache.local' => '\OC\Memcache\APCu',
+  '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のインストール後の対応:メールサーバ(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からのメールが送信されれば成功です。

Page 29 of 56

Powered by WordPress & Theme by Anders Norén