投稿者: manualmaton Page 34 of 238

お茶と在庫。(2024年)

2024年版のルピシア福袋

今年も福袋が手に入りました。

これを仕入れる度に、年が変わったという実感がわきます。

お茶リスト

2024年は

  • 竹(フレーバー/紅茶ベース)

の2種類。

https://barrel.reisalin.com/books/93db8/page/20241

特典として

竜があしらわれた蓋碗がついてきました。

急須も兼ねているのでテイスティングにも役立つことでしょう。

2024年は、これらの消費からスタートです。

新たな手帳。

2023年もいよいよ終わり。そんな中で、新しく手帳を開封しました。

ほぼ日ウィークリー

この時購入したほぼ日ウィークリーです。

用途:お金のやり取り

ここで記すものは

  • 収入
  • 支出

の2つ。Firefly-iii を利用し始めたので、オフラインバックアップとしてこれを使っています。

情報カードを得たことで、オンラインの記録システムはそれぞれ異なる紙の記録システムを持つようになりました。

  • WordPress: ほぼ日デイリー / ジブン手帳
  • Redmine: 情報カード / BookStack

そして今回、新たにほぼ日ウィークリーが加わりました。

  • デイリーよりも軽いため、すぐに取り出せる
  • 直近や過去の記録を取り出せる

のが導入の決め手です。

Ubuntu22.04検証環境に最新版のnginxとphp8.3をインストール。

概要

Ubuntu 22.04を検証機にインストールしたので、nginx環境を構築します。

前提

  • OSインストール済み
  • 初期設定完了済み

さっくりとした手順

  1. 必要なパッケージをインストールします。
  2. nginxのレポジトリを追加します。
  3. aptitudeでnginxのインストールを行います。
  4. phpのレポジトリを追加します。
  5. aptitudeでphpのインストールを行います。
  6. apache2を停止し、nginxサービスを有効化します。
  7. php8.3用のfpmをインストールします。

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

sudo aptitude install curl gnupg2 ca-certificates lsb-release ubuntu-keyring build-essential zlib1g-dev libssl-dev libreadline-dev libyaml-dev libcurl4-openssl-dev git

先を見据えてgit等もついでにインストールします。

レポジトリ追加

  • レポジトリ追加
cat <<- __EOF__ | sudo tee -a /etc/apt/sources.list.d/nginx.list
deb https://nginx.org/packages/ubuntu/ jammy nginx
deb-src https://nginx.org/packages/ubuntu/ jammy nginx
__EOF__
  • 鍵追加
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ABF5BD827BD9BF62

nginxで統一されている鍵を利用します

nginxインストール

  • パッケージ更新
sudo aptitude update

実行時、W: https://nginx.org/packages/ubuntu/dists/jammy/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.の警告は無視して大丈夫です。

  • インストール
sudo aptitude install nginx
  • バージョン確認
nginx -v

2023/12/29時点ではnginx/1.24.0と表示されていました

php8.3インストール

  • レポジトリ追加
sudo add-apt-repository ppa:ondrej/php
  • パッケージアップグレード
sudo aptitude update
sudo aptitude install php8.3

sudo aptitude install php8.3-{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.3-{imagick,gmp}
  • バージョン確認
php -v

2023/12/29時点では PHP 8.3.1と表示されていました

apache2の無効化とnginxの再開

依存関係で、apacheが同時にインストールされます。本検証ではnginxを用いるので、apache2を無効化します。

  • apache2停止
sudo systemctl stop apache2.service
  • apache2自動起動停止
sudo systemctl disable apache2.service
  • apache2停止確認
systemctl status apache2.service

inactive(dead)を確認します

  • nginx再開
sudo systemctl start nginx
  • nginx自動起動有効化
sudo systemctl enable apache2.service
  • nginx起動確認
sudo systemctl status nginx
  • curlによる起動確認
curl http://localhost

Welcome to nginx! を確認します。

php-fpmインストール

nginxとphpを連携させるfpmをインストールします。

  • インストール
sudo aptitude install php8.3-fpm
  • インストール確認
systemctl status php8.3-fpm

active(running)を確認します。

2023年の主な出来事-サーバ編-

概要

2023年もじきに終わるということで、今年のまとめ。趣味のサーバ運用という点では大きなものがいくつかありました。

新たにインターネット上に構築したサイト

公開用Redmine作成

これが一番大きいです。

推しの名前でドメインが取得できたことにより、「これでWebを公開しよう」と思い立ち、正月休みから行動スタート。

ゲーム『ライザのアトリエ3』リリースに間に合わせ、様々な攻略情報を載せることができました。

Redmine自身の各種情報も掲載できたのも満足です。

アクセス解析システム:matomo作成

  • 非公開

公開用サイトのアクセス状況を知りたくて、このシステムをインストール。

Redmineとの連携はView_Customize_Pluginでなんとかなりましたし、その際、本邦のRedmineメンテナ様自身直々のアドバイスをいただけたことが印象に残っています。

フォトアルバムサイト:piwigo作成

フォトアルバムもついでに作成。

写真の拡充を図っていくのが来年度の目標になりそうです。

ドキュメント保存システム:BookStack作成

Redmineのプラグイン「knowlegebase」に代わるシステムを探していたら見つけました。

  • 本棚や本という概念
  • Markdownフレンドリー
  • 見出しに合わせたスクロール

など、おおよその欲しかった機能が備わっていて、今後のメインウェポンとなる予感です。

ローカルに構築したサイト

Nextcloud

2022年から継続利用。

Growi

2022年から利用しているマークダウンエディタ、growi。

2023年はmermaid.jsにようやく対応したので、デジタルでのメモ残しに大きく貢献しました。

firefly-iii

つい先日ではありますが、この財務管理システムを知ったおかげで「お金関係のロギング」を始められるようになりました。

来年度の目標

Ubuntu 20.04リプレース。

LTSのEOL2025年に備えます。そのためのボトルネックとなっている

  • Redmineのメジャーバージョンアップ
  • およびknoledgebaseの代替システム(現状候補はBookStack)

と検証を進めます。

サーバのスペックアップ

これに関しては予算と相談しながら。

2023年、インフルエンザ罹患記録

何年ぶりかという記憶すら定かでないのですが、インフルエンザを患いました。

その経過をメモしておきます。

2023/12/22

  • 未明、喉の痛みで目が覚める。
  • この時点では平熱
  • 段々と熱が高くなってきたために休みを取る
  • 寒気、関節痛が続く
  • 水をとっても汗が出ないためにトイレの回数が上がる
  • 夜、39.8℃まで跳ね上がる

2023/12/23

  • 熱は高く、睡眠が取れないため体調は最悪
  • 発熱外来にて診察
    • インフルエンザA型陽性
    • コロナに関しては引っかからず
    • 解熱剤と治療薬(タミフル系)処方されず
  • 喉の痛みが続く
  • 治療薬を飲んでしばらくしたら汗が出てくるようになる
  • 少し眠れるようになる
  • 夜、一時的に38.5℃。解熱剤を飲む

2023/12/24

  • 回復の兆しを見せる
  • 喉の痛みが若干収まってくる
  • 固形物が食べられるようになった
  • 体温は37℃台で落ち着く

2023/12/25

  • 24日よりも深い眠り
  • 平熱に戻る
  • 「解熱後48時間は待機」と診察時に言われているので、この日は待機
  • 夜まで平熱

2023/12/26

  • 復調
  • 体の各種センサーが戻ってきたような感覚

で、現在に至ります。

思ったこと

対策をしていても、どこからかやってくるのがわからなかったです。また、コロナ罹患時と違って喉は痛くても「喉がふさがったような呼吸の辛さ」がなかったのは救いでした。

そして、治療薬が劇的に効いたのも救いでした。

年末年始の時期をかろうじて外せたのは不幸中の幸いではありました。

ChatGPTによるシェルスクリプト(SSL証明書の更新)

Let's Encryptで更新しているワイルドカード証明書。

他のサーバにも適用するのを更に簡便にするため、自動化するスクリプトを出力しました。

動作を確認した環境

  • Ubuntu 20.o4
  • Apache2.4

要件

1. 証明書と鍵ペアがあるディレクトリを引数にしてコマンドを実行
 → ファイルがなければエラーを返す
 → ファイルが次の形式でなくてもエラーを返す
 ・hoge.example.com.crt.$(date +%Y%m) ← hoge.example.com.crtの部分を変数化
 ・hoge.example.com.key.$(date +%Y%m) ← hoge.example.com.keyの部分を変数化
2. 引数内のディレクトリのcrt.$(date +%Y%m)を対象に、以下のコマンドを実行する
  2.1 次のハッシュ値をそれぞれ参照し合っていれば後続
  openssl x509 -pubkey -in hoge.example.com.crt.$(date +%Y%m) -noout | openssl md5
  openssl pkey -pubout -in hoge.example.com.key.$(date +%Y%m)  | openssl md5
  2.2 次のハッシュ値をそれぞれ参照し合っていれば後続
  openssl x509 -issuer_hash -noout -in hoge.example.com.crt.$(date +%Y%m)
  sed -n -e'1d' -e'/BEGIN/,$p' hoge.example.com.crt.$(date +%Y%m) | openssl x509 -subject_hash -noout
3. openssl x509 -noout -dates -subject -in hoge.example.com.crt.$(date +%Y%m)
 のnotAfterを参照し、
 「ドメイン『hoge.example.com』有効期限:notAfterで出力した値 で更新します。よろしいですか?」
 を出力。y/nで後続判断
4. 整合性を確認したファイルを以下のディレクトリにコピー
 ・hoge.example.com.crt.$(date +%Y%m) → /etc/certs
 ・hoge.example.com.key.$(date +%Y%m) → /etc/private
 コピー完了の出力をする
5. 証明書のシンボリックリンクを貼り替える
  5.1 cd /etc/certs
  5.2 sudo ln -sf hoge.sample.com.crt.$(date +%Y%m) hoge.sample.com.crt
  5.3 1のコピーとリンクしたファイルのハッシュ値が同じであることを確認
6. 秘密鍵のシンボリックリンクを貼り替える
  6.1 cd /etc/private
  6.2 sudo ln -sf hoge.sample.com.key.$(date +%Y%m) hoge.sample.com.key
  6.3 1のコピーとリンクしたファイルのハッシュ値が同じであることを確認
7. 「Webサービスを再起動しますか?」y/n
 → yの場合は systemctl restart apache2.serviceして後続
 → nの場合はスクリプトを抜ける
8. 「証明書更新が完了しました」のメッセージを出してスクリプト終了

結果

出て来たのはこちら。

ssl_update.sh

#!/bin/bash

# 変更するドメイン
domain="hoge.example.com"

# OpenSSLのパス
openssl_path="/usr/local/ssl/bin/openssl"

# 証明書ファイルの格納位置
cert_dir="/etc/certs"

# 秘密鍵ファイルの格納位置
private_dir="/etc/private"

# 引数の数を確認
if [ "$#" -ne 1 ]; then
  echo "Usage: $0 <directory>"
  exit 1
fi

# ディレクトリが存在するか確認
directory="$1"
if [ ! -d "$directory" ]; then
  echo "Error: Directory not found"
  exit 1
fi

# 証明書と鍵のファイルパスを設定
cert_file="$directory/$domain.crt.$(date +%Y%m)"
key_file="$directory/$domain.key.$(date +%Y%m)"

# ファイルの存在を確認
if [ ! -e "$cert_file" ] || [ ! -e "$key_file" ]; then
  echo "Error: Certificate or key file not found"
  exit 1
fi

# ハッシュの確認
cert_hash=$("$openssl_path" x509 -pubkey -in "$cert_file" -noout | "$openssl_path" md5)
key_hash=$("$openssl_path" pkey -pubout -in "$key_file" | "$openssl_path" md5)

if [ "$cert_hash" != "$key_hash" ]; then
  echo "Error: Certificate and key do not match"
  exit 1
fi

issuer_hash=$("$openssl_path" x509 -issuer_hash -noout -in "$cert_file")
subject_hash=$(sed -n -e '1d' -e '/BEGIN/,$p' "$cert_file" | "$openssl_path" x509 -subject_hash -noout)

if [ "$issuer_hash" != "$subject_hash" ]; then
  echo "Error: Issuer hash and subject hash do not match"
  exit 1
fi

# 有効期限の確認
expiration_date=$("$openssl_path" x509 -noout -dates -subject -in "$cert_file" | grep "notAfter" | cut -d "=" -f 2)

echo "ドメイン『$domain』有効期限:$expiration_date で更新します。よろしいですか? (y/n)"
read response

if [ "$response" != "y" ]; then
  echo "証明書更新がキャンセルされました"
  exit 1
fi

# ファイルをコピー
sudo cp "$cert_file" "$cert_dir"
sudo cp "$key_file" "$private_dir"

# シンボリックリンクを貼り替え
cd "$cert_dir"
sudo ln -sf "$(basename $cert_file)" "$domain.crt"
cd "$private_dir"
sudo ln -sf "$(basename $key_file)" "$domain.key"

# リンクとコピーのハッシュが一致しているか確認
if [ "$("$openssl_path" x509 -pubkey -in "$cert_dir/$domain.crt" -noout | "$openssl_path" md5)" != "$cert_hash" ]; then
  echo "Error: Certificate hash mismatch after linking"
  exit 1
fi

if [ "$("$openssl_path" pkey -pubout -in "$private_dir/$domain.key" | "$openssl_path" md5)" != "$key_hash" ]; then
  echo "Error: Key hash mismatch after linking"
  exit 1
fi

echo "Webサービスを再起動しますか? (y/n)"
read restart_response

if [ "$restart_response" == "y" ]; then
  sudo systemctl restart apache2.service
  echo "Webサービスが再起動しました"
fi

echo "証明書更新が完了しました"
exit 0

作成後、

sudo chmod 744 ssl_update.sh

使う前の準備

  1. 変数を適度に修正します。
  2. 任意のディレクトリにドメインの条件に沿った証明書を格納します。

使い方

sudo bash ssl_update.sh [証明書を格納したディレクトリへのパス]

この後、各種を確認して

証明書更新が完了しました

まで出してくれます。

『ライザのアトリエ3』クーケン島周辺エリアで入手可能な各種インゴットの素材。(ネタバレあり)

概要

8周目をプレイ中の『ライザのアトリエ3』。

今回は引き継ぎなし(まっさらの状態)でプレイしているため、アイテムなどを持っていません。なので、序盤から素材探しに奔走しています。

そんな中で、各種インゴットの素材をクーケン島周辺エリアだけで取得可能なことを確認しました。

インゴット(無条件で採取可能)

必須素材

  1. アマタイト鉱 (アトリエ周辺で採取可能)
  2. 鉱石 (同上)
  3. 石材 (同上)

基本的なインゴット系だけあって、最初から調合可能。ただ、本当に最初の頃に調合する際は属性値0となりがちです。

中和剤・緑の効果で石材を付与し、「属性1」のインゴットを作るのが最初の目標と言えます。

スタルチウム(レシピ変化)

前作と同様にインゴットからのレシピ変化。

ですが、前作よりもやや条件が緩くなっているという印象です。

必須素材:アークナイト

火山ヴァイスベルクの「古い吊り橋」に出てくる魔石の傀儡がドロップします。

必須素材:ペントナイト

リーゼ渓谷、石巨人塚の『土塊の使役者』からドロップ。こちらは、後述する

  • 創世の逆さ石

も入手できます。

クリミネア:スキルツリー解放

スキルツリーが割と高めの位置にありますが、カーク群島探索開始時から調合可能です。

必須素材:創世の逆さ石

上述したリーゼ渓谷、石巨人塚の『土塊の使役者』からドロップします。

必須素材:モルディナイト

リーゼ渓谷、門前前階段のメテオライトドールがドロップします。

後述するゴルディナイトも回収できます。

ゴルドテリオン(クリミネアからのレシピ変化)

必須素材:ゴルディナイト

上記、リーゼ渓谷、門前前階段のメテオライトドールがドロップします。

必須素材:琥珀水晶

クーケン島周辺エリアでの入社は確認できませんでした。そのため、調合方法はクリミネアからレシピ変化をするのみとなっています。

品質を上げるには、水の部分で旅人の水珠を入れればどうにかなります。

琥珀水晶がないので、右からのマテリアル環を伸ばせません。

それでも、「装備作成 全能+5」と、特製2つまでは伸ばすことができます。

グランツオルゲン:スキルツリー解放

※こちらはあくまでも理論の話です※

必要SPが更に高くなり、投入数も材料も半端ではありませんが、理論上はクーケン島から出ない状態で調合は可能です。

前提条件

  1. このスキルツリーを解放していること。
  2. 最初のクーケン島での探索を終わらせたこと。
  3. クーケン島の最初のワールドクエストをクリアしていること。

必須素材

条件3を満たすことで、リーゼ渓谷のランダムクエストに巨岩の兵士がランダムクエストとして現れることがあります。

  1. セプトリエン
  2. 七煌原石

は、上記で入手できます。そして、エリキシルはクーケン島の強敵を倒してドロップできる竜眼を使う感じです。

以上、やりこみプレイ以外には参考にせずストーリーを進めた方が良いという情報でした。

サーバ:OSの入れ替えに向けて。

昨日のfirefly-iiiのインストール失敗を受けて、

計画の見直しを迫られました。

根本的原因

OSとミドルウェア(PHP)のミスマッチ。というよりも、Ubuntu 20.04 系の限界が見えてきます。

LTSバージョンのEOLが2025年4月。

猶予が1年ほどあるものの、見直しが必要なものが沢山です。

ミドルウェアがパッケージされなくなったのも問題です。

等の延命策を採ってきましたが、限界が来るのは否めません。

まずは

Ubuntuのバージョンアップ検証

が必要になってきます。現状のメインツールである

  • Redmine
  • Nextcloud

をはじめとして、スムーズに移行できるかが問われます。

取り急ぎ:

  1. 空いているデスクトップPCにUbuntu 22(23)を入れてみる
  2. そこに、現在稼働しているデータを移行する。
  3. それと同時に検証を行う。
  4. 問題が無かったら自宅内の運用環境に改めて移行する

という順番です。

検証:firefly-iii v6.1.0をUbuntu 20.04にインストール(失敗)

概要

PHPもDBも入っていない検証機があったので、Firefly iii 6系を入れようとしましたが、失敗しました。

以下は失敗の記録です。

環境

  • Ubuntu 20.04
  • Nginx

結論

php8.3-bcmatchがインストールできないことによるComposerエラーです。

やってみた手順

1.Postgresqlのインストール
1.PostgresのDB作成
1.PHPのインストール
1.composerのインストール
1.firefly iiiの配置
1.Composerによるインストール

PostgreSQLのインストール

  • パッケージアップデート
sudo aptitude update
  • PostgreSQLインストール
sudo aptitude install postgresql postgresql-contrib
  • PostgreSQLの軌道確認
 systemctl status postgresql.service 

Active: active (exited) を確認します

PostgreSQLのDB作成

  • コンソールログイン
sudo -u postgres psql
  • DBとユーザ作成
CREATE DATABASE firefly;
CREATE USER firefly_user WITH PASSWORD 'your_password';
ALTER ROLE firefly_user SET client_encoding TO 'utf8';
ALTER ROLE firefly_user SET timezone TO 'Asia/Tokyo';
GRANT ALL PRIVILEGES ON DATABASE firefly TO firefly_user;
quit

パスワードはポリシーに沿って適切なものを指定します

PHP8.3インストール

  • リポジトリ追加
sudo aptitude install software-properties-common

sudo curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg

sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
  • パッケージアップデート
sudo aptitude update
  • PHP8.3インストール
sudo aptitude install php8.3 php8.3-cli php8.3-fpm php8.3-pgsql php8.3-xml php8.3-mbstring php8.3-gd 
  • バージョン確認
php -v

8.3系であることを確認します。

Composerインストール

cd /hoge
# 任意の作業ディレクトリに移動します
sudo php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
sudo php composer-setup.php
sudo mv composer.phar /usr/bin/composer
  • パス確認
which composer

/usr/bin/composerにあることを確認します

  • バージョン確認
composer --version

2023/12/23現在、2.6.6でした

プログラム配置

  • ディレクトリ移動
cd /var/www/html/ && pwd

任意の公開用ディレクトリを指定します

  • gitでファイル取得
sudo -u www-data git clone https://github.com/firefly-iii/firefly-iii.git
  • ディレクトリ移動
cd firefly-iii && pwd

※失敗:Composerでインストール※

sudo -u www-data composer install --no-dev --prefer-dist

以下のエラーが出て来ました。

Installing dependencies from lock file
Verifying lock file contents can be installed on current platform.
Your lock file does not contain a compatible set of packages. Please run composer update.

  Problem 1
    - Root composer.json requires PHP extension ext-bcmath * but it is missing from your system. Install or enable PHP's bcmath extension.
sudo apittude install php8.3-bcmatch

としてもプログラムは見つからず。

まずは記録として遺しておきます。

今後の展望

Ubuntuそのもののバージョンアップを見据えて動きます。

Firefly III とGmail連携

概要

インストールが完了したFirefly iiiと、Gmailを連携させていきます。

基本的にRedmineのGmail連携と同じ手順でした。

前提

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

に従って、アプリパスワードを設定していることが条件です。

※Googleアカウントにフルアクセス可能なパスワードのため、取り扱いは注意してください。※

手順

ディレクトリ移動

cd /home/www-data/firefly-iii &&pwd

自分がインストールしたディレクトリを指定します。

ファイル編集

  • .env

以下の箇所を変更して保存します。

MAIL_MAILER=smtp
MAIL_HOST=[googleから指定されたメールアドレス]
MAIL_PORT=587
MAIL_FROM=[Gmailアドレス]
MAIL_USERNAME=[Gmailアドレス]
MAIL_PASSWORD=[アプリパスワード]
MAIL_ENCRYPTION=true

設定反映

sudo systemctl restart apache2.service

自分がインストールしているWebサービスを利用します

設定確認

  1. firefly-iiiのサイトにアクセスします。
  2. ログインします。
  3. 管理>メッセージを送信をクリックします。
  4. メールが送信されていれば設定完了です。

Page 34 of 238

Powered by WordPress & Theme by Anders Norén