2024年初頭、諸々購入しました。その中の一つはこれです。
情報カード大補充

去年の秋頃から使い始めた情報カード。
書くものが予想以上にあり、また、その消費スピードも思った以上なので10束(つまり1000枚)を一気に補充です。
収納


用いたのは、100斤のワイドストッカー。B6を横にしたものがすっぽり入り、ある程度の隙間も確保されています。
当面はこれを使い切ることが目標になります。
いわゆるペーパーバックなので、物理的なカバーを作ることにします。
作り方はネットで適当に検索したものです。
高さをマスキングテープで測ったら、定規とカッターナイフで軽く筋を付けております。
表紙にも折り目を付けます。
表紙、裏表紙共にカッターで筋を彫ってから折ります。
原作に併せ、『ハリー・ポッター』の呪文が書かれたマスキングテープを用いています。
本のタイトルは付箋とマステで貼り付け、本自体はお弁当用のシリコンバンドで留めました。
これにて完成。
作るのは少し手間ですけど
ということで重宝。「これを使って良かった」と思える程度には本の中身にも手を付けていきます。
2025年にサポートされなくなるOSではありますが、まだ現役というパターンがあるため、メモに残しておきます。
Ubuntu系OSをメディアからインストールした場合、SSHがインストールされていないことがほとんどです。
sudo apt install ssh
鍵認証でログインできるようにします。
ssh-keygen -t ed25519
# 鍵の格納場所は空Enter。(/home/hoge/.ssh/
# パスワードを設定します。
cd .ssh
ls -l
# 以下のファイルを確認します
# └id_ed25519
# └id_ed25519.pub
# ※これらのファイルはscp等で自分のクライアントにコピーします
mv id_ed25519.pub authorized_keys
chmod 600 authorized_keys
この後、ローカルにコピーしたid_ed25519をSSHターミナルクライアントに保存して設定し、接続確認を行います。
sudo mkdir /etc/old
任意のバックアップディレクトリを作成します。
sudo cp -pi /etc/ssh/sshd_config /etc/old/sshd_config.$(date +%Y%m%d)
diff -u /etc/ssh/sshd_config /etc/old/sshd_config.$(date +%Y%m%d)
エラーがない(差分がない)ことでバックアップを確認します。
sudo sed -i -e 's/^#PasswordAuthentication yes/PasswordAuthentication no/' -e 's/^#PermitEmptyPasswords no/PermitEmptyPasswords no/' /etc/ssh/sshd_config
diff -u /etc/old/sshd_config.$(date +%Y%m%d) /etc/ssh/sshd_config
-#PasswordAuthentication yes
-#PermitEmptyPasswords no
+PasswordAuthentication no
+PermitEmptyPasswords no
※この作業の前に、必ず、SSH接続は別に開けておいてください。※
sudo systemctl restart ssh.service
パッケージ全体のアップグレードを行います。
sudo apt update && sudo apt upgrade
アップグレード後、再起動を行います。
sudo reboot
Ubuntu系OSはインストール時にhoge.example.com
と設定しても、
uname -n
# hoge(インストール時に設定したホスト名のみ)となっています。
とホスト名だけになるパターンが多いです。そこで、
sudo hostnamectl set-hostname hoge.example.com
として、(ホスト名やドメインや設定に合わせます)
設定語、
uname -n
# hoge.example.comを確認します。
最初期のプロンプトは
hoge@hoge$
になっているので、好みに沿って設定していきます。
cat << ___EOF___ | tee -a ~/.bashrc
PS1="[\u@\H \W]\\$ "
# 一般ユーザ向けのプロンプト設定
if [ "\$PS1" ]; then
if [ "\$(id -u)" -eq 0 ]; then # rootユーザの場合
PS1='\[\e[0;31m\][\u@\H \W]#\[\e[0m\] '
else # 一般ユーザの場合
PS1='\[\e[0;32m\][\u@\H \W]\$\[\e[0m\] '
fi
fi
___EOF___
Ubuntu系は.bashrcが統一されないので、やむなくこの方法をとります。
sudo su -
cat << ___EOF___ | tee -a ~/.bashrc
PS1="[\u@\H \W]\\$ "
# 一般ユーザ向けのプロンプト設定
if [ "\$PS1" ]; then
if [ "\$(id -u)" -eq 0 ]; then # rootユーザの場合
PS1='\[\e[0;31m\][\u@\H \W]#\[\e[0m\] '
else # 一般ユーザの場合
PS1='\[\e[0;32m\][\u@\H \W]\$\[\e[0m\] '
fi
fi
___EOF___
設定後、SSHセッションを開き直します。以下を確認します。
[hoge@hoge.example.com~]$
のように表示される。(一般ユーザー)[root@hoge.example.com~]#
のように表示される。(root)これは完全に筆者の好みです。パッケージ管理をaptではなくaptitudeに変えます。
sudo apt install aptitude
他にもありますので、改めて別に記事を上げます。
2024年最初の「作業」はこの2つでした。
2020年7月頃から再開し、そこからはほぼ休むことなく書き続けているほぼ日手帳。
こちらの分冊スタイルになったお陰で取り回しが良くなったのが特徴です。
今年は、これにどのようなことを綴っていくのかも楽しみですが、
「毎日続けられるだけのモチベーションを保てるのか」
は不安でもあり、それを維持するのも楽しみでもあり。
また、カレンダーも張り込みました。今まで買わなかったのが不思議なぐらいの『ライザのアトリエ』カレンダーです。
壁を覆うかのような大判と、丁寧に描き込まれたイラストは、そこにあるだけでモチベーションを高めてくれます。
これらをしっかり記録していき、2024年を無事に振り替えら得るようにしていきたいです。
2023年もいよいよ終わり。そんな中で、新しく手帳を開封しました。
この時購入したほぼ日ウィークリーです。
ここで記すものは
の2つ。Firefly-iii を利用し始めたので、オフラインバックアップとしてこれを使っています。
情報カードを得たことで、オンラインの記録システムはそれぞれ異なる紙の記録システムを持つようになりました。
そして今回、新たにほぼ日ウィークリーが加わりました。
のが導入の決め手です。
Ubuntu 22.04を検証機にインストールしたので、nginx環境を構築します。
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で統一されている鍵を利用します
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
と表示されていました
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
と表示されていました
依存関係で、apacheが同時にインストールされます。本検証ではnginxを用いるので、apache2を無効化します。
sudo systemctl stop apache2.service
sudo systemctl disable apache2.service
systemctl status apache2.service
inactive(dead)を確認します
sudo systemctl start nginx
sudo systemctl enable apache2.service
sudo systemctl status nginx
curl http://localhost
Welcome to nginx!
を確認します。
nginxとphpを連携させるfpmをインストールします。
sudo aptitude install php8.3-fpm
systemctl status php8.3-fpm
active(running)を確認します。
2023年もじきに終わるということで、今年のまとめ。趣味のサーバ運用という点では大きなものがいくつかありました。
これが一番大きいです。
推しの名前でドメインが取得できたことにより、「これでWebを公開しよう」と思い立ち、正月休みから行動スタート。
ゲーム『ライザのアトリエ3』リリースに間に合わせ、様々な攻略情報を載せることができました。
Redmine自身の各種情報も掲載できたのも満足です。
公開用サイトのアクセス状況を知りたくて、このシステムをインストール。
Redmineとの連携はView_Customize_Pluginでなんとかなりましたし、その際、本邦のRedmineメンテナ様自身直々のアドバイスをいただけたことが印象に残っています。
フォトアルバムもついでに作成。
写真の拡充を図っていくのが来年度の目標になりそうです。
Redmineのプラグイン「knowlegebase」に代わるシステムを探していたら見つけました。
など、おおよその欲しかった機能が備わっていて、今後のメインウェポンとなる予感です。
2022年から継続利用。
2022年から利用しているマークダウンエディタ、growi。
2023年はmermaid.jsにようやく対応したので、デジタルでのメモ残しに大きく貢献しました。
つい先日ではありますが、この財務管理システムを知ったおかげで「お金関係のロギング」を始められるようになりました。
LTSのEOL2025年に備えます。そのためのボトルネックとなっている
と検証を進めます。
これに関しては予算と相談しながら。
Let's Encryptで更新しているワイルドカード証明書。
他のサーバにも適用するのを更に簡便にするため、自動化するスクリプトを出力しました。
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. 「証明書更新が完了しました」のメッセージを出してスクリプト終了
出て来たのはこちら。
#!/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
sudo bash ssl_update.sh [証明書を格納したディレクトリへのパス]
この後、各種を確認して
証明書更新が完了しました
まで出してくれます。
昨日のfirefly-iiiのインストール失敗を受けて、
計画の見直しを迫られました。
OSとミドルウェア(PHP)のミスマッチ。というよりも、Ubuntu 20.04 系の限界が見えてきます。
LTSバージョンのEOLが2025年4月。
猶予が1年ほどあるものの、見直しが必要なものが沢山です。
ミドルウェアがパッケージされなくなったのも問題です。
が必要になってきます。現状のメインツールである
をはじめとして、スムーズに移行できるかが問われます。
取り急ぎ:
という順番です。
Powered by WordPress & Theme by Anders Norén