投稿者: manualmaton Page 102 of 257

Chromebookへの取り込みとマクロレンズの屋外試し撮り。

マイクロフォーサーズのマクロレンズ、ようやく屋外で撮影する機会に恵まれました。

ChromeookはAndoroidアプリも動かせるので、メーカーが提供している取り込み用アプリがそのまま動くのが高評価です。

取り込んだところでの早速の検証。まずはスナップからです。

焦点距離が実質60mmなだけあって、かなり自然な距離で撮れます。

続いてのマクロ。

こちらに関しても機体を裏切りません。日が遮られている状況下でも捉えてくれますし、フォーカス速度は眼を見張るものがあります。

  • 日常を撮る
  • マクロで別の世界を切り取る

という理想的な動きができました。

Apache脆弱性対応。(リポジトリを用いたパッケージアップデート)

AWS Lightsailを用いてインターネット接続されている自分用のredmine。

いわゆる

  • Linux
  • Apache
  • MySQL
  • Ruby

で動いておりますが、その中のApacheに脆弱性があるので対応しました。

Apache HTTP Server 2.4における複数の脆弱性に対するアップデート

https://jvn.jp/vu/JVNVU94306894/

手順

全て管理者権限で実行しています。

Ubuntu 20.04の標準パッケージでインストールされているApacheのバージョンを確認します。

apache2 -v

# 以下、脆弱性を受けるバージョンです。
Server version: Apache/2.4.41 (Ubuntu)
Server built:   2022-06-14T13:30:55

リポジトリを追加します。

add-apt-repository ppa:ondrej/apache2
# 途中、Press[Enter]と表示されるので空エンターを打ちます。

パッケージを更新します。

aptitude update
aptitude upgrade
# 確認の前に、パッケージ一覧を確認します。

パッケージ更新後のApacheのバージョンを確認します。

apache2 -v
Server version: Apache/2.4.54 (Ubuntu)
Server built:   2022-06-08T15:59:07
# 最新版である2.54であることを確認します。

サービスを再起動し、既存サイトが問題なく動くかを確認します。

systemctl restart apache2.service 

これで、ひとまずは安心です。

完全制圧。(デジタル版『大鎌戦役』でのCPUとの戦い)

かなり珍しい事態が発生しました。

デジタル版ボードゲームの『大鎌戦役』において、「相手勢力に星章を一切獲得させず、こちらだけが星章6つを獲得」という記録。

これ自体は過去にも経験ありますが

星章のすべてが「戦闘による勝利」。通常は2つまでしか得られない中、その上限がない勢力ザクセン帝国だからこそできる勝ち方です。

その上、わずか15ラウンドでの勝利。デジタル版の実績の一つが「15ターン以内(15R以内)に勝利する」ですから、その記録を1Rも縮める快挙です。

これができた理由は

  • 敵勢力:ポラニアが戦力を整えていないうちに外に出ていたのでそれを叩いた
  • 同様に積極的に戦闘を仕掛けてくるクリミアを迎え撃った

などが挙げられますが、デジタル版CPUの癖にも起因しています。

  • 戦力と銭湯カードの合計が「12」にならない限り、CPUは1〜2しか出さない。
  • 唯一の例外がクリミア。(9〜11になるように出す)

という特徴があるため、積極的な連戦はするだけ得になってしまいます。(もちろん、その恩恵を受けるザクセンならなおのこと)

ただ、この戦略は支持(民心)をごっそりと失うこと。「それでもなお速度で勝てる」時に有効なものです。

Chuwi herobox proのLinuxサーバー化(準備編-2-)

こちらの続き。SSH接続できるようにしていきます。

作業メモ

最初のアップデートを行います。

sudo su -
aptitude update
aptitude upgrade

これには多少時間がかかります。

アップデート後、再起動を行います。

reboot

再起動後、heroboxを有線接続できるようにします。

sudo su -
aptitude install linux-image-oem-20.04d
reboot

カーネルを差し替え、オンボードNICを認識させる作業を行います。作業後、再起動をします。

接続を有線に切り替え、IPアドレスを固定します。

こちらに関してはGUIメニューで行いました。また、以下の作業も追加しています。

  • DNSサーバの向き先を自室内のDNSに切り替える
  • IPv6を無効化する

追加作業:DNS登録

ローカルDNSに上記で固定したIPアドレスを登録します。登録後

  • 登録した名前でIPアドレスが解決できること
  • 登録した名前にpingが返ってくること

を確認します。

sshを導入します。

aptitude install ssh

ローカル環境のため、公開鍵暗号の設定は割愛です。

クライアントからSSH接続できることを確認します。

ここまで確認できればディスプレイ接続もキーボード/マウスも不要です。LANケーブルと電源が接続された状態で固定します。

次は、別途、クライアントターミナルからサーバの基本設定を行っていきます。

Chuwi herobox proのLinuxサーバー化(準備編-1-)

こちらを進めるにあたり、まずは物理的な設定を行います。

SSD増設

この機体は、このサイズでありながらSSDスロットがあります。

  1. 蓋を開ける
  2. 固定スペースを取り外す
  3. SSDをコネクタに差し込む
  4. 固定スペースを取り付ける
  5. 蓋を閉める

の順番でSSD取り付け。

インストール前準備

(割と初歩的ですけれど、)こちらが必要です。

  • ディスプレイとケーブル(アナログかHDMIが利用可能)
  • キーボードとマウス
  • 有線と無線のブロードバンド環境
  • LANケーブル
  • Linuxインストールメディア(Rufusを用いてLinuxMint 20.03のブートディスクを作成しました)

インストール

LinuxMintのインストールを行いますが、上述しているようにSSDを取り付けているので、ちょっとした作業が必要でした。

無線LAN設定

Linux Mint 20.03は最初の段階ではherobox proの有線LANを認識しません。なので、無線接続を行い、ブロードバンド環境に接続します。

ディスクパーティション

ディスクの設定はカスタムです。Linuxからは

  • sda :増設した1TBのSSD
  • sdb :最初に備わっている256GBのSSDとして見えています。

これを以下のように設定しました。

sda

すべてを/varに割り当てます。(Webサーバとして運用するため)

sdb

  • 1GBほど、/efiで切ります。(これがないと正常にブートできませんでした
  • 4GBほどをスワップ領域に割り当てます。
  • 残り全ては/として用います。

そうしてディスクのインストールが完了し、

まずはLinuxにログインができるようになりました。

次はSSH接続できるまでを実施します。

自宅サーバ増設と今後の予定。

こちらの件を一歩進めました。

Chuwi Herobox pro到着

結局、現行2台と同じ機種にしました。

  • ファンレス無音
  • 省電力
  • 夏、日中にエアコンを切っていても稼働していた

などの実績からこちらです。

To Do

redmineのリストア

まっさらの機体が手に入ったので、「自宅環境のコアとなっているシステム」redmineが別の機体でも移行できるかを試します。

フォトアルバムリプレース

現状、Lycheeを使っておりますが、このほかのフォトアルバムも検証します。

Nextcloud検証

上記の後の本命。自宅にDropbox的なオンラインストレージを用意することでデータの冗長化を目指します。

PHPアップデート後の処理。(7.4 → 8.1)

検証で動かしていたUbuntu 20.04系サーバで

sudo aptitude update
sudo aptitude upgrade

と実施するとphpパッケージが8.1にアップグレードされていました。

その後、apache/PHPで稼働しているサイトが[Server Error]となったので、その対処方法をメモしました。

手順

今まで動いていたPHP7.4を無効化します。

a2dismod php7.4

PHP8.1を有効化します。

a2enmod php8.1

サービス再起動し、稼働することを確認します。

systemctl restart apahce2

これにより、正常稼働を確認です。

以前にインストールした

  • Lychee フォトアルバム
  • Snipe-IT

はいずれも稼働していました。

新たな問題

完全に見落としていましたが、Zabbix 5.0はphp 8.1では動かず、以下のように表示されます。

これに関してはバージョンアップを見据えつつ、対処していく必要があります。

Growiアップデート。(5.05→5.12)

非常に使いやすいmarkdownシステムGrowi。

2022/08/26時点での最新版にアップデートをします。

環境

  • Ubuntu 20.04
  • node.js 14.20.0
  • npm 6.14.17
  • yarn 1.22.19
  • mongodb 4.4.15

※Dockerではなく、以下のようにインストール済みです

手順

管理者にスイッチします。

sudo su -

growiサービスを停止します。

systemctl stop growi.service
systemctl status growi.service
# inactiveになっていることを確認します

作業ディレクトリに移動します。

cd /opt/growi
pwd
# /opt/growiにいることを確認

バージョンアップ環境を確認します。

git fetch --tags
# 2022/08/26時点での最新版が v5.1.2であることを確認

バージョンアップを行います。

git stash
# No local changes to saveと表示されることを確認
git checkout v5.1.2
yarn
# Done in xx.xxs. と表示されたらアップデートされています

インストール後、growiサービスを起動します。

systemctl start growi.service
# 環境にもよりますが、数分かかります

バージョンアップを確認します。

バージョンアップ後、growiサイトにアクセスし、「Wiki管理トップ」に移動。

システム情報で、GROWIが「5.1.2」になっていることを確認します。

Lightsail上で稼働するSnipe-ITの後処理。(含むMod_Security連携)

ローカル環境からインターネット環境へと移行した資産構成ツールSnipe-IT。これの後処理を行います。

既存の問題に対処

画像をアップロードしても、このように

“Failed to load image”と出て表示されませんでした。

https://github.com/snipe/snipe-it/issues/8701

そのものズバリのissueを発見。

.envファイルのAPP_URLを「httpから始まるドメイン」に変更してapache再起動にて治りました。

APP_URL=http://ドメイン

常時SSL化とMod_Security連携

そして、同じサーバのredmineにMod_Securityが稼働しているので、こちらも利用しない手はありません。

前提:

こちらの通り、

  • Mod_Security有効化
  • 検知したIPアドレスの抜き出ししてブロックできるようにする

処理を事前に施しています。

confファイル修正

sudo vi /etc/apache2/sites-available/snipeit-le-ssl.conf
confファイル内容
<VirtualHost _default_:80>
ServerName ドメイン名
 RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# 強制的にhttps通信に飛ばします
</VirtualHost>

<VirtualHost *:443>
    ServerName ドメイン名
    CustomLog /var/log/redmine/asset_access.log combined
    ErrorLog /var/log/redmine/asset_error.log
 # redmineのログプラグインで参照できるようにしています

# 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
## 念の為、redmineで偽陽性となったフィルタをそのまま除外するようにしています
    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'"
# エラーログを検知した際に検出した不審なIPアドレスを全てブロックする設定です

    DocumentRoot /var/www/html/snipe-it/public
    <Directory /var/www/html/snipe-it/public>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>

  SSLEngine on
    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
SSLHonorCipherOrder On 
SSLOptions +StrictRequire
Header set Strict-Transport-Security: "max-age=31536000; includeSubDomains; preload"

SSLCertificateFile /etc/letsencrypt/live/Let's Encryptで指定したドメイン/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/Let's Encryptで指定したドメイン/privkey.pem

</VirtualHost>

conf反映

sudo a2dissite snipeit.conf
# 最初に設定していたhttp通信のみのconfを無効化します
sudo apache2ctl configtest
# Syntax OKを確認します
sudo systemctl restart apache2

sudo chown www-data:www-data /var/lib/redmine/log/asset*
# redmineのログプラグインが参照できるよう、上記設定したログの所有者を変更します

これにより、常時SSL通信を行いつつ、不正アクセスの脅威をある程度守ることができます。

共存環境。(AWS LightsailにredmineとSnipe-ITを追加)

こちらの資産管理システムSnipe-IT、使っていけば行くほど「これは出先からでも参照したい」と実感。

なので、既にredmineが稼働しているインスタンスに同居させました。

詳細手順は以下のとおりです。

前提

以下の環境で稼働しています。

  • Ubuntu 20.04
  • Apache 2.4
  • Ruby 2.7
  • MySQL 8系

下準備

  • 既に稼働しているインスタンスとDNSに、サブドメインを指定します。
  • そのサブドメインは既に稼働しているインスタンスのIPと紐づけます。

PHPとモジュールを追加します。

sudo add-apt-repository ppa:ondrej/php
sudo aptitude update
sudo aptitude upgrade

sudo apt install php7.4
# バージョンを明示しないと、このあとのモジュールとの兼ね合いで失敗しました

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}
# Web上のマニュアルのとおりに指定しましたが、インストール時に「xml」を入れるよう指示がありました

sudo systemctl restart apache2

Snipe-IT用のDBを設定します。

sudo mysql -u root -p
CREATE DATABASE snipeit_db;
CREATE USER  'snipeit'@'localhost' IDENTIFIED WITH mysql_native_password BY 'パスワード';
GRANT ALL PRIVILEGES ON snipeit_db.* TO 'snipeit'@'localhost' with grant option;
FLUSH PRIVILEGES;
exit

Snipe-ITをダウンロードします。

cd /var/www/html
sudo git clone https://github.com/snipe/snipe-it snipe-it
cd /var/www/html/snipe-it

Snipe-ITの基本設定を行います。

sudo cp -pi .env.example .env
sudo vi .env
設定ファイル内容
APP_URL=設定したURL
APP_TIMEZONE='Asia/Tokyo'
DB_CONNECTION=mysql
DB_HOST=localhost # 127.0.0.1だと接続できないことがありました
DB_DATABASE=snipeit_db
DB_USERNAME=snipeit
DB_PASSWORD=パスワード
DB_PREFIX=null
DB_DUMP_PATH='/usr/bin'
DB_CHARSET=utf8mb4
DB_COLLATION=utf8mb4_unicode_ci

(オプション)Gmailと連携をさせます。

先程の.envの以下の箇所を編集します。

# --------------------------------------------
# REQUIRED: OUTGOING MAIL SERVER SETTINGS
# --------------------------------------------
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=Gmailアドレス
MAIL_PASSWORD='Gmailのアプリパスワード'
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDR=Gmailアドレス
MAIL_FROM_NAME='Snipe-IT'
MAIL_REPLYTO_ADDR=Gmailアドレス
MAIL_REPLYTO_NAME='Snipe-IT'
MAIL_AUTO_EMBED_METHOD='attachment'

Composerのインストールを行います。

sudo su -
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
cd /var/www/html/snipe-it/
exit
sudo composer update --no-plugins --no-scripts
sudo composer install --no-dev --prefer-source --no-plugins --no-scripts
sudo php artisan key:generate
sudo chown -R www-data:www-data /var/www/html/snipe-it
sudo chmod -R 755 /var/www/html/snipe-it

Snipe-ITのバーチャルサイトを設定します。

cd /etc/apache2/sites-available
vi snipe-it.conf
snipe-it.conf内容
<VirtualHost *:80>
    ServerName 前準備で設定したドメイン
    DocumentRoot /var/www/html/snipe-it/public
    <Directory /var/www/html/snipe-it/public>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

設定を反映します。

a2ensite snipe-it.conf
apache2ctl configtest
# Syntax OKを確認
systemctl restart apache2

設定後、前準備で指定したURLにアクセスします。

  • プレフライトチェックが走れば問題ありません。
  • let's encryptが設定済みの場合は、最初にこのドメイン用のcertbotを設定します。

これで、Lightsailに2つのWebサービスを稼働させることができました。

Page 102 of 257

Powered by WordPress & Theme by Anders Norén