このキーボードを導入して1年以上。
お陰で
- 手を広げての入力が可能
- 間にタブレットや手帳を入れて視認性が良く
- 入力効率が良くなった
などの恩恵に与りました。それに少し手を入れました。

畳のパームレスト『コテマクラ フタゴ』。

これを据え付けのパームレストと差し替えます。

この通り、分割キーボードの左右それぞれにフィットです。また、裏面はコルク張りなのでスベりにくくなっています。

「合間にものを入れられる」機能性は損なわずに和のたたずまいを入れることができました。
むような出費を抑えるため、唐突にやってくる衝動買いにも耐えられるため、こういう管理が必要だと改めて思いました。
redmineの肝となるチケット、様々なissue(チケット)がどの状態にあるかをkanban(agile)プラグインでこのように一瞥できるようにしています。
これによって、
を把握できるようになっています。
チケット個別でも
「いつ」「どこで」「何を」「いくら」使ったかを記録しているのですが……
記録することで逆に数値が可視化される恐怖が出てくるわけで。
自身のオンプレ環境にNextcloudを運用するようになって一ヶ月ちょっと。
思ったことを少し述べます。
スマートフォン/iPadで保存したファイルを逐次アップロードしてくれる安心感は本当に素晴らしいです。しかも、自宅内NWでのみアップロードする環境なので不要な通信を抑えられます。
アプリ「recognize」のおかげで、ある程度の画像の分類をしてくれるようになりました。
など、様々なアプリが用意されていますが、それ専門に特化したWebサービスには及ばないという印象。ToodleDoなどのようにToDoの繰り返し登録などがあれば良かったのになと思います。
機械学習によるタグ付けは、それだけでCPUを激しく消費します。特に、画像を大量登録していた移行期〜3週間ほどはロードアベレージが7〜8を超えていてヒヤヒヤものでした。
「Dropboxから安全に移行できるか」が鍵になります。そうなると、ディスクの冗長化や一層のセキュリティ対策が求められるので、課題は続きます。
使い勝手を試してみます。
Redmineのプラグインと異なり、NextcloudのアプリはWeb管理画面から行うことができます。
検索などで「Quick Notes」を検索します。
「ダウンロードして有効にする」をクリックします。このとき、管理者パスワードを訊かれるので入力後に「Confirm」をクリックします。
有効化後、
トップページに「Quick notes」が出てきます。
インストール直後は当然ながら、右側の所にはなにもありません。「+ New note」をクリックします。
Google Keepのような入力画面。写真も添付できますが、NextCloud上のものしか添付できません。
Google KeepのようでGoolge Keepでないというのが第一印象でした。特に、デフォルトでは自動セーブされない(更新したい場合はSaveを推す必要がある)のは結構違和感があります
なので、Settingsで
このチェックを外して自動セーブをデフォルトにするのがいい感じになりそうです。
そして、
のはKeepにない強み。
とはいえ、「Google Keepの代替になり得るか」に関しては現時点ではNo。今後の運用を見つけていく形です。
半年ぐらいの問題が解決しました。
エラーになるものの、元のページに戻ると記事は作成されているため割と放置していました。
とはいえ、記事を発行するたびにエラーが発生するのはストレスフル。今回、その事象を解決までこぎ着けます。
tail -f /var/log/redmine/production.log
その結果、以下のログに突き当たりました。
Completed 500 Internal Server Error in 1091ms (ActiveRecord: 869.6ms)
ActionView::Template::Error (undefined method `thumbnail_path' for #<#<Class:0x0000564f87f6a428>:0x0000564f87600360>
Did you mean? thumbnail_tag
thumbnail_url):
1: <h1><%= l(:label_new_article) %>: <%= link_to(h(@article.title), @article_url) %>
2: (<%=h @article.category.title %>)</h1>
3:
4: <% if thumb = get_article_thumbnail_url_absolute( @article ) %>
5: <p><img src="<%= thumb %>" alt="[Thumbnail]"></p>
6: <% end %>
7:
このエラーで検索したところ、そのものズバリの記事が書かれています。
これを元に解決させていきます。
全て管理者権限で実施しています。
cd /var/lib/redmine/plugins/redmine_knowledgebase/app/helpers
cp -pi /var/lib/redmine/plugins/redmine_knowledgebase/app/helpers/knowledgebase_helper.rb /hoge/knowledgebase_helper.rb.org
vi /var/lib/redmine/plugins/redmine_knowledgebase/app/helpers/knowledgebase_helper.rb
(上述したバージョンであれば184行目)
thumb = get_article_thumbnail( article )
if thumb
- return "#{Setting.protocol}://#{Setting.host_name}#{thumbnail_path(thumb)}"
+ return polymorphic_url(thumb, :host => Setting.host_name, :protocol => Setting.protocol)
else
return ''
end
cd /var/lib/redmine
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
systemctl restart apache2.service
WordPressと変わらない操作感でバージョンアップを行うことができました。
NextcloudのWeb画面にログインし、「Administration settings」をクリックします。
「アップデーターを開く」をクリックします。
「Start update」をクリックします。
どの段階まで進んだかを示してくれる親切設計でした。(写真を大量に保管しているのでバックアップ作成はかなりの時間がかかりました)
「Disable maintenance mode and continue in the web based updater」をクリックします。
「アップデートを開始」をクリックします。
何も問題がなければ、Nextcloudの管理者にログインされた状態でページが切り替わります。
アップデート対象に「Themes」が含まれていたので、背景が真っ白になっていました。これを修正するため再び「Administation settings」に進み、テーマをクリックします。
Background and login imageをクリックして任意の画像に置き換えます。
この後、「概要」をクリックすることで
「最新版です」となっていることを確認しました。
Linux Mint 20.3でGrowiを運用しています。
aptによるアップデート後、Growiで全文検索ができない現象が発生しました。
[root@chisato.lyco.reco ~]# systemctl status elasticsearch.service
● elasticsearch.service - Elasticsearch
Loaded: loaded (/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sun 2022-10-30 19:06:41 JST; 1 day 1h ago
Docs: https://www.elastic.co
Process: 983 ExecStart=/usr/share/elasticsearch/bin/systemd-entrypoint -p ${PID_DIR}/elasticsearch.pid --quiet (code=exited, status=1/FAILURE)
Main PID: 983 (code=exited, status=1/FAILURE)
10月 30 19:06:41 chisato.lyco.reco systemd-entrypoint[983]: at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.<init>(ThreadPoolExecutor.java:637)
10月 30 19:06:41 chisato.lyco.reco systemd-entrypoint[983]: at java.base/java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:928)
10月 30 19:06:41 chisato.lyco.reco systemd-entrypoint[983]: at java.base/java.util.concurrent.ThreadPoolExecutor.processWorkerExit(ThreadPoolExecutor.java>
10月 30 19:06:41 chisato.lyco.reco systemd-entrypoint[983]: at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1158)
10月 30 19:06:41 chisato.lyco.reco systemd-entrypoint[983]: at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
10月 30 19:06:41 chisato.lyco.reco systemd-entrypoint[983]: at java.base/java.lang.Thread.run(Thread.java:1589)
10月 30 19:06:41 chisato.lyco.reco systemd-entrypoint[983]: at java.base/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186)
10月 30 19:06:41 chisato.lyco.reco systemd[1]: elasticsearch.service: Main process exited, code=exited, status=1/FAILURE
10月 30 19:06:41 chisato.lyco.reco systemd[1]: elasticsearch.service: Failed with result 'exit-code'.
10月 30 19:06:41 chisato.lyco.reco systemd[1]: Failed to start Elasticsearch.
→ この後、
systemctl restart elasticsearch.service
を行っても起動しません。この事象を解決したときのメモです。
cat /var/log/elasticsearch/elasticsearch.log
(中略)
java.lang.IllegalArgumentException: Plugin [analysis-icu] was built for Elasticsearch version 7.17.6 but version 7.17.7 is running
を発見しました。ElasticSearchをバージョンアップしたのに、動いてるプラグインが対応しきれなかったためエラーになったようです。
以下のコマンドを実行しました。
/usr/share/elasticsearch/bin/elasticsearch-plugin remove analysis-icu
/usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu
/usr/share/elasticsearch/bin/elasticsearch-plugin remove analysis-kuromoji
/usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji
# 問題を起こしているプラグインの削除→再インストールを実施
systemctl restart elasticsearch.service
systemctl status elasticsearch.service
● elasticsearch.service - Elasticsearch
Loaded: loaded (/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2022-10-31 21:23:02 JST; 23s ago
Docs: https://www.elastic.co
Main PID: 5424 (java)
Tasks: 94 (limit: 9199)
Memory: 768.5M
CGroup: /system.slice/elasticsearch.service
├─5424 /usr/share/elasticsearch/jdk/bin/java -Xshare:auto -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl=10 -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true>
└─5617 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller
10月 31 21:22:38 chisato.lyco.reco systemd[1]: Starting Elasticsearch...
10月 31 21:23:02 chisato.lyco.reco systemd[1]: Started Elasticsearch.
で、正常に起動したことを確認できました。
ここから更に改良を加えました。
以下を導入済みです。
全て管理者権限で実施しました。
mkdir /var/lib/redmine/log/suspicious_ip
cd /hoge/
vi negativelist_add.sh
#!/bin/sh
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
cd /var/lib/redmine/log
cat error.log | awk 'match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/) { print substr($0, RSTART, RLENGTH) }' | sort | uniq > /var/lib/redmine/log/suspicious_ip/suspicious_ip.`date +%Y%m%d`
chown www-data:www-data /var/lib/redmine/log/suspicious_ip/suspicious_ip.`date +%Y%m%d`
cat /var/lib/redmine/log/suspicious_ip/suspicious_ip.2* |sort |uniq > /var/lib/redmine/log/suspicious_ip_all.txt
cat suspicious_ip_all.txt > /etc/apache2/sites-available/negativelist.txt
chown www-data:www-data suspicious_ip_all.txt
sed -i /除外したいIPアドレス/d /etc/apache2/sites-available/negativelist.txt
chmod +x negativelist_add.sh
ここでは/etc/apache2/sites-available/redmine-le-ssl.conf にコンフィグを作成済みです。
cd /etc/apache2/sites-available
cp -pi redmine-le-ssl.conf redmine-le-ssl.conf.bak
vi redmine-le-ssl.conf
<VirtualHost _default_:80>
servername [redmineのドメイン名]
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>
<VirtualHost _default_:443>
servername [redmineのドメイン名]
CustomLog /var/log/redmine/access.log combined
ErrorLog /var/log/redmine/error.log
Alias /redmine /var/lib/redmine/public
# Mod Security
SecRuleEngine On
## ModSecurity有効化
SecRequestBodyInMemoryLimit 524288000
SecRequestBodyLimit 524288000
## ファイルのアップロードをできるようにします。
SecRuleRemoveById 949110
SecRuleRemoveById 941310
SecRuleRemoveById 980130
SecRuleRemoveById 911100
SecRuleRemoveById 200002
SecRuleRemoveById 200003
SecRuleRemoveById 200004
SecRuleRemoveById 959100
## 上記を無効化しないとチケット更新時にエラーとなりました(偽陽性)ため、上記ルールを除外します。
SecRule ARGS:modsecparam "@contains test" "id:4321,deny,status:403,msg:'ModSecurity test rule has triggered'"
## テスト用の検知パラメータを付け加えます。
## Negativelist
SecRule REMOTE_ADDR "@pmFromFile negativelist.txt" "phase:1,id:2,deny,msg:'Negativelisted IP address'"
# /etc/apache2/sites-available/negativelist.txt に記載されたIPアドレスを自動的に遮断します。
<Location /redmine>
PassengerBaseURI /redmine
PassengerAppRoot /var/lib/redmine
Require all granted
<RequireAll>
Require all granted
</RequireAll>
</Location>
SSLEngine on
Protocols h2 http/1.1
Header always set Strict-Transport-Security "max-age=63072000"
SSLCertificateFile [let's encryptが指定した証明書ファイルのパス]
SSLCertificateKeyFile [let's encryptが指定した秘密鍵ファイルのパス]
#Include /etc/letsencrypt/options-ssl-apache.conf
RewriteEngine On
RewriteCond %{HTTP_HOST} ^samplehoge\.hogehoge
RewriteRule ^/$ https://samplehoge.hogehoge/redmine/ [R]
</VirtualHost>
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 off
SSLSessionTickets off
SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"
apache2ctl configtest
# Syntax OKを確認します
systemctl restart apache2
crontab -e
0 8 * * * /hoge/negativelist.sh
これで、以下の動きができるようになります。
Nextcloudにアップロードされた画像をタグ付けしてくれる「recognize」アプリを使っています。
それを用いて運用したところ、以下のエラーに出くわしました。
メニュー > Administration settings > 概要
これを放置していったところ、Webサービスが止まり、SSHにも接続できなくなりました。そのため、以下の対処を施しました。
以下の環境で動いています。
※snapは使わず、オンプレで構築しました。
また、Opcacheモジュールは設定済みです。
以下、管理者権限で実施しています。
mkdir /etc/old
cd /etc/php/7.4/mods-available
cp -pi opcache.ini /etc/old/opcache.ini.`date +%Y%m%d`
vi opcache.ini
opcache.interned_strings_buffer=16
; 8 → 16に修正
apache2ctl configtest
# Syntax OK を確認します
systemctl restart apache2
メニュー > Administration settings > 概要
へと進みます。
「全てのチェックに合格しました。」
を確認します。
万単位のファイルを既にインポートしたため、画像認識とタグ付けのためにかなりのCPUリソースを消費します。(平均オーバーロードが7を超えるときもありました)
そのため、zabbix等で負荷を監視している場合は認識中は閾値を上げておく等の対処が必要です。
Dropboxのようにファイルを保存できて、各種アプリ(プラグイン)で様々な機能を拡張できるOSS、Nextcloudをインストールしました。
この、2台目のChuwi Herobox Proです。redmineのデータ同期サーバのデータをマウントするために選びました。
以下が導入済みです。
全て管理者権限で実施しました。
sudo apt install php7.4-{opcache,pdo,bcmath,calendar,ctype,fileinfo,ftp,gd,intl,json,ldap,mbstring,mysqli,posix,readline,sockets,bz2,tokenizer,zip,curl,iconv,phar,xml}
systemctl restart apache2
mysql -u root -p
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'パスワード';
CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
導入したサーバは/homeディレクトリを別SSDにマウントしているため、以下のようにしました。
wget https://download.nextcloud.com/server/releases/latest.zip
unzip latest.zip /home/www-data
chown -R www-data:www-data /home/www-data/nextcloud
mkdir /var/log/apache2/nextcloud
chown -R www-data:www-data /var/log/apache2/nextcloud
vi /etc/apache2/sites-available/nextcloud.conf
<VirtualHost _default_:80>
ServerName [公開するドメイン名]
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
CustomLog /var/log/apache2/nextcloud/access.log combined
ErrorLog /var/log/apache2/nextcloud/error.log
</VirtualHost>
<VirtualHost _default_:443>
ServerName [公開するドメイン名]
CustomLog /var/log/apache2/nextcloud/ssl_access.log combined
ErrorLog /var/log/apache2/nextcloud/ssl_error.log
SSLEngine on
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
SSLProtocol All -SSLv2 -SSLv3 -TLSv1
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLCertificateFile /etc/certs/ssl.crt
# 証明書のファイルパス
SSLCertificateKeyFile /etc/private/ssl.key
# 秘密鍵のファイルパス
DocumentRoot /home/www-data/nextcloud
<Directory /home/www-data/nextcloud>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
a2ensite nextcloud.conf
apache2ctl configtest
# Syntax ok を確認します
systemctl restart apache2
ブラウザから設定したドメインにアクセスします。
アクセス後、ガイドに従い
を設定後、以下の画面が出てくれば成功です。
Powered by WordPress & Theme by Anders Norén