Category: oss
Material for MkDocs で個人ウェブサイトを構築してみた
自分の軽い自己紹介と、 SNS へのリンクだけの www.yamano.dev というウェブサイトが有るのですが、 Material for MkDocs で作り直してみました。 今後、個人の OS インストールメモなどをオープンにしシェアしていくため、ドキュメント向けの静的サイトジェネレータを選定しました。 細かいネタや一度きりのものは、引き続き blog.yamano.dev (Hugo) に投稿し続ける予定ですが、棲み分けは運用しながら考えたいと思っています。
ところで、個人ウェブサイトの良い呼び方が無いかと思って探したら、ポートフォリオサイトと呼ぶケースを多く見かけました。 よくデザイナーや写真家の皆さんがスキルなどを提示してオファーを貰うために運営しているウェブサイトというイメージが有ります。 当方にはそのようなスキルも無く、ただの軽い自己紹介とメモ置き場なのですが、良い呼び方無いですかね…
Duplicity でファイルサーバをバックアップする
前回 BackupPC でバックアップを取得する で BackupPC を使ってみました。
複数クライアントのバックアップを取得でき、バックアップ対象にエージェントが不要など便利なのですが、 VPS 等のVMインスタンスが必要となるのが不便な点です。 NAS等の大容量プールをバックアップする際、それだけ大容量なブロックストレージをアタッチしなければなりません。 安価に構築する手法としてオブジェクトストレージをVMでマウントする方法も有りますが、それでは LUKS 等を利用できないので、バックアップソフトウェアで暗号化を担保する必要も有ります。 (前回の BackupPC では LUKS 上に構築しています)
今回は、ファイルサーバに Duplicity をインストールし、オブジェクトストレージ Backblaze B2 Cloud Storage にバックアップしようと思います。
Duplicity: https://duplicity.gitlab.io/duplicity-web/
Backblaze B2 Cloud Storage: https://www.backblaze.com/b2/cloud-storage.html
Duplicity の主な特徴
- OSS の CLI バックアップソフトウェア(Ubuntu の 標準 GUI バックアップツールである Deja Dup のバックエンド)
- GnuPG を用いた暗号化及び、署名による改竄検知が可能
- 各種オブジェクトストレージ、クラウドストレージサービス、scp、WebDAV 等をサポート
BackupPC でバックアップを取得する
OSS の BackupPC を用いると、 Linux, macOS, Microsoft Windows のファイルレベルのバックアップをエージェントレスで取得できます。 WebUI から複数ユーザで利用する事ができ、重複排除及び圧縮、世代管理など、コンピュータのバックアップには十分な機能だと思います。 今回は、サーバ及びバックアップ対象のクライアント、どちらも Debian を用い、プロトコルとして rsync を用います。
https://backuppc.github.io/backuppc/
BackupPC の主な特徴
- NFS, rsync, smb, ftp 等が利用でき、エージェントレスで実行できる。
- データ圧縮及び、単一もしくは複数コンピュータ間でのデータ重複排除。
- WebUI から複数ユーザで利用する事ができる。(今回は管理ユーザのみ利用する)
- 電子メールでの各種通知。
- Perl 製
Category: dotfiles
atuin でシェルヒストリを複数マシンで共有してみる
以前、 chezmoi を試した時にドキュメントを読んでいたのですが、 Can I store/share my shell history with chezmoi? という Q and A で atuin という OSS が有ることを知りました。
ellie/atuin は、シェルのヒストリを管理するソフトウェアで、単体のマシンで利用することもできますが、同期用のサーバを構成することでマシン間でヒストリを共有できます。 通信は E2EE で、無償で利用できるオフィシャルサーバも用意されているので、すぐに利用することができます。 今回は、 docker-compose を用いてサーバをセルフホストし、 zsh のヒストリを共有してみました。
共有したい幾つかの zsh 設定とプラグイン Part.01
「おすすめの」と記載するのが多いケースだと思いますが、用途や趣味思考によって大きく変わるであろう内容なので、共有したいとしました。
最近、約 6 年ぶりに bash から zsh に戻り、 とても酷い間違いだらけの ~/.zshrc を見直しています。 「工夫している点や便利な設定を教えて」と聞かれすぐに思い出せないことが有るので、自分の備忘録と脳内整理も兼ねて、いくつか記載します。
記載しているコードやアイディアは、多くが私のオリジナルでは有りません。 dotfiles あるあるなのですが、インターネット上で共有していただいたものや、zshの本に記載の内容です。 zshの本 は2009年に発売された書籍ですが、zshについてとても詳しく書かれた良書です。 電子版 も新に発売されています。
urxvt (rxvt-unicode) をセットアップして利用してみた
xterm から urxvt(rxvt-unicode) に乗り換えたので、設定をまとめておきます。
urxvt のフォーク元である rxvt は、 xterm のあまり使われていない機能を省き代替品として開発されたものですから、似た部分もあります。 xterm と比べると、非常に高速に動作し、 Perl 拡張をサポートするなど、多機能なターミナルとしても利用できる側面もあります。
urxvt 以外にも st や GPU アクセラレーション を利用できる Alacritty, WezTerm も人気が有るようなので気になってますが、 xterm で大きな不便を感じなかったので似た代替品を使おうと思い urxvt を試しに使ってみることにしました。
この記事を記載するにあたり、 Arch Wiki および Manual Page を参考にしました。
dotfile manager の chezmoi に移行してみる
chezmoi を使って、 dotfiles を管理することにしました。
dotfiles の管理方法は人それぞれだと思いますが、私は GitHub のパブリックリポジトリでホストしており、 シンボリックリンクを張る Makefile を作成していました。 利用するツールがほぼ統一されていたので、最も利用している環境のみで dotfiles を commit し、他の環境では clone/pull のみ実施し、必要があれば環境固有のファイルを source する運用です。
if [ -f ~/.bashrc_private ]; then
. ~/.bashrc_private # GitHub でホストされていない設定ファイルであり、各マシンで内容は異なる。
fi
Makefile では、パッケージマネージャを用いたパッケージのインストールなども行っていましたが、特定ディストリビューションかつネイティブ Linux 環境に特化しているという問題が有りました。 このような雑運用では当然ながら複数環境への対応に脆く、諸事情によりネイティブ Linux から WSL に移行しなければならない環境が発生した際に大量に差分が発生し破綻しました。 気力でメンテナンスを頑張ったり、 WSL や不自由なソフトウェアへの理解を深めたりすれば継続できたかもしれませんが、今後もディストリビューション追加対応などが発生する可能性を鑑み、これを機にテンプレート機能を持つ dotfile manager に移行することにしました。
触れ初めたばかりで、最も利用している環境でしか利用していませんので、テンプレート機能はまだ利用していません。 他に、暗号化やパスワードマネージャとの連携もまだ試していませんので、それらの利用方法も記載しませんのでご了承ください。
Category: daily
Calibre を Docker Compose 環境に移行した話
ただの日記である。技術的要素は少い。
いくつか複雑な経緯があり、新たに VM インスタンスを契約したので、 Calibre を移行した。 Calibre は有名な電子書籍管理ソフトウェアで、フォーマット変換や、電子ブックリーダーとの同期などもできるが、オンラインでのビューワーとしてのみ利用している。 今回は、 deb パッケージから Docker Compose に移行し、 LinuxServer.io によりメンテナンスされている Docker イメージを用いた。
Category: linux
rss2email で RSS をメールで購読する
rss2email を利用して、 RSS を電子メールとして送信することができます。
RSSアグリゲーターとして Newsboat を利用しており、 Linux CLI ユーザとしては、 TUI で操作でき便利に利用していました。 しかし、同期やスマートフォンなどからの利用を考えると不便だったので、 rss2email を試してみることにします。
なぜ rss2email か
「大量のメールを効率的に捌く手法を構築しており、今後もメールは捨てる見込みが無いから」という理由につきます。 多くの OSS コミュニティはメールベースのコミュニケーション手法を確立しており、当方も procmail レシピによるメッセージデリバリーや、ターミナルベース MUA の NeoMutt などを利用しており、この仕組みに載せてしまえば良いと考えた為です。 同期やスマートフォンなどからの利用としては、 IMAP でカバーする事とします。
Phoronix Test Suite を試してみる
Phoronix Test Suite (pts) を使って、簡単なベンチマークを実施してみることにします。
Phoronix Test Suite は、クロスプラットフォームのベンチマークプラットフォームです。 プラットフォームと記載したのは、各ベンチマークがプロファイルとして記述され、プロファイルに基づきベンチマークのインストール及び実行とレポート生成を実行するフレームワークだからです。
Phoronix Test Suite には、 OpenBenchmarking.org との連携機能や、複数マシンでのベンチマークを管理する Phoromatic も存在します。 今回は、仮想マシンを用いて Phoromatic も試してみることにします。
各ベンチマークの詳細や、プロファイルの記述については記載しません。
Btrfs + Snapper でスナップショット取り放題生活
これまで LUKS + LVM + ext4 で組んでいたのですが、スナップショットを手軽に取得したかったので、 LUKS + Btrfs に移行する事にしました。
LVMを用いているのでスナップショットを取得する事は可能なのですが、ブロックデバイスのスナップショットであり、事前に容量をReserveする必要があり、ファイルシステム用途としては使いやすいものでは有りません。 システムアップデートや巨大なソフトウェアをインストールする前にスナップショットの取得をするのですが、徐々に面倒になり、取得しないままシステムを汚してしまう事も有ったので、 Snapper を用いてスナップショット管理も実施します。
また、Btrfsファイルシステムは1つとし、サブボリュームを作成し /home や /var/log にマウントする事で、スナップショット単位を分割する事にします。
Debian bullseye setup on MacBook Pro Early 2015
COVID-19 が日本で落ち付き始めているので長期外出にも対応できるよう、 macOS Monterey を試用していたラップトップを Linux に戻す事にしました。 MacBook Pro Early 2015 (MacBookPro12,1) を用い、 Arch Linux では無く、 Debian bullseye をベースに構築します。
サーバとして Arch Linux or CentOS を用いていたのを最近は Debian に変更しており、クライアントでも Debian を取り入れようと考えており検証も兼ねています。 X Window Server -> Wayland の変更も検討もしましたが、途中で諦めたので、改めてやり直したいと思っています。
7年ぶりにメインPCを買い替えた話
今まで Haswell (第4世代Intel Coreプロセッサ) のマシンを使っていたのですが、Rocket Lake (第11世代Intel Coreプロセッサ) のマシンに買い変えました。Arch Linux + i3-wm という軽量な環境を利用しているので、性能の観点から買い替えの必要が逼迫していたわけでは有りませんでした。ただし、大きめのコードをコンパイルする時や、NVIDIA + Nouveau の動作安定性などの観点からストレスは有ったので、性能向上とIntel iGPUへの変更を兼ねてリプレースする事としました。
Linux workstation をセットアップした記録 Part.1
久し振りにLinux workstationとしてArch Linuxをセットアップしたので記録を残しておきます。 Part.1 として、OSのインストールまでを実施します。
以前から引き継ぐポイントや重要視した事
- UEFI GPT boot とする。
- UEFI GPT boot に必要な ESP (EFIシステムパーティション) 以外は、/boot も含めて LUKS にて暗号化を実施する。
- ESP に設置するファイルに関しては、UEFI Secure Boot を用いる事で改竄検知の対策とする。
Dell P2720DC ComfortView を ddcutil で制御する
昨年、ディスプレイ故障によりDell製の27インチWQHDディスプレイP2720DC x2に買い替えたのですが、ComfortViewというバックライトや発色を優しくするプリセットモードが有り利用していました。いわゆるムービーモードやゲームモードと同様にOSDにて設定できる表示モードの1つなのですが、最近はコンソール以外に動画等も見る機会が増えたので、標準とComfortViewを容易に切り替えられる事が望ましくなったためスクリプトを組みました。
Category: ets2
ETS2運行記録簿 2022年02月
今月から、MTで運行しはじめました。まだ慣れていないので、変速を誤ったり、変速に気を取られておぼつか無くなっています。
Euro Truck Simulator 2 2022 02 06 Part.01
ETS2運行記録簿 2021年12月
ETS2運行記録簿 2021年11月
先月に引き続き、ETS2という、ドライビングシミュレーションゲームの録画をYouTubeにアップロードしてまとめてます。
Euro Truck Simulator 2 2021 11 21 Part.01で、HCTを初めて引きました、もちろんダブルと比べると長いので気を使いますが、思ったより素直に付いてきてくれました。 ただ、接点が増えているのでバックは段違いに難しいですね、諦めました。
まだ Bダブル は引いた事が無いので、近いうちにトレーラーを購入したいと思います。
プレイスタイルですが、YouTube の「後で見る」リストに貯まった動画を流しながらプレイしており、基本的に集中力が減っている状態である上に、「後で見る」リストが多いほど、その週末にプレイする時間が増える傾向に有ります。
利用しているコントローラも経年劣化により、動作不良が躊躇になってきました。 元々はシーケンシャルを利用していたのですが、ここ最近は前述のプレイスタイルに合わせて、オートマチックを基本にしています。 しかし、調子の悪いコントローラを買い変えて、マニュアルに変更しても良いかなぁと思っています。 ダブル や HCT に合わせて重量貨物が増え、オートマチックの動作に不満が出る事が増えたのも、マニュアルを検討しはじめた理由の1つです。
Euro Truck Simulator 2 2021 11 05 Part.01
ETS2運行記録簿 2021年10月
今月から、ETS2という、ドライビングシミュレーションゲームの録画をYouTubeにアップロードしてまとめる事にしました。 長らく触っておらず、これからリハビリしようと思っています。
10月24日から1440p(WQHD)にしましたが、私が使っているマシンのi7-4770, GeForce GTX 1060では厳しいようです。 得に、最後の動画の前半で雨が降っているのですが、フレームレートが落ちているのが分かりやすいです…
Euro Truck Simulator 2 2021 10 02 Part.01
Category: code
anacron の実行タイミング
本記事は、CentOS 8のリリース時に調査した内容を、Rocky Linux 8.5 ベースで再調査した内容です。
仮想マシンの普及に合わせて、実行タイミングをランダム化しホストサーバに負荷が集中しないようにできる anacron は注目されたタスクスケジューラーですが、設定ファイルの内容とジョブの実行タイミングについて、誤った認識を持つ事が有ります。
例えば、以下の /etc/anacrontab
において、ジョブが実行されるのは次のどれでしょうか?
]$ cat /etc/anacrontab
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22
#period in days delay in minutes job-identifier command
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly
A. START_HOURS_RANGE と RANDOM_DELAY から求められ、[3-22]:00 - [3-22]:45 のいずれかランダム。つまり、3時 ~ 23時 の間の 00分 ~ 45分 のいずれか。
B. 上記のAに delay in minutes
を足した値。cron.dailyであれば 5 なので、 [3-22]:05 - [3-22]:50 のいずれかランダム。
C. 上記のBの範囲にて、 anacron が最も初めに起動したタイミング。つまり24h稼動であれば 3:[05-50] のいずれかランダムに実施し、3:51以降に cron.daily を実施する事は無い。22:00 にマシンが初めて起動した場合、 22:[05-50] のいずれかランダム。
D. 上記のCと似ているが、「delay in minutes
+ (RANDOM_DELAYによってランダムに算出された分数)」は、毎時00分では無く、 anacron の起動タイミングに加算される。つまり、 21:58 に anacron が初めて起動し RANDOM_DELAY で算出された値が3で有る場合に cron.daily であれば 「21:58 + 5 + 3 = 22:06」 に実行される。START_HOURS_RANGE の範囲外である 22:01 にanacronが起動した場合は範囲外なので実行されない。
E. 上記のDと似ているが、ジョブ実行タイミングが START_HOURS_RANGE の範囲内である場合のみ実行する。つまり、 21:52 に anacron が初めて起動し RANDOM_DELAY で算出された値が3で有る場合に cron.daily であれば 「21:52 + 5 + 3 = 22:00」 に実行される。より厳密には、22:00:00 は範囲内として実行されるが、22:00:01 以降であれば、実行しない。
ddコマンドによるpartial readとデータ破損について
dd(1) はブロックデバイスを読み書きする際に非常に便利で、ストレージ装置のバックアップやクローン作成、データ消去などに利用します。その際に(i)bs=[bytes]とcount=[count]で読み込みブロックサイズと個数を指定できますが、ddコマンドと、内部で利用される read(2) の特性を把握しておかなければ、部分的な読み出しにより、期待した出力が得られない事があります。通常は警告が表示されますが、バックアップやクローン用途で使っておりスクリプトで実行している場合、気が付かなければデータ破損に繋がります。
ここではデータ破損と表現していますが、入力と出力がブロック単位で同一とならない事象が発生するものであり、入力データが破損するものでは有りません。
Category: network
自宅ネットワークにFreeRADIUSによるEAP-TLSを導入した
自宅の無線LANにおけるセキュリティ向上の為、WPA2 Enterprise EAP-TLSを導入したので、構築記録として残しておきます。
個人宅における無線LANのニーズは高まっており、スマートフォンはもちろんの事、電子書籍リーダーやスマートスピーカーなど、私の自宅でも数多くの無線LANクライアントが存在します。これまではWPA2-PSK(AES)を使っており、つまりPre-Shared Keyを設定していたわけですが、ネットワーク構成の見直しと同時にEAP-TLSとする事にしました。
なお、EAP-TLSに対応していないデバイスも有るため、これらはセキュリティが低いとして、別ネットワークに収容してWPA2-PSKを利用できるSSIDを吹く事にしました。 合わせてメインネットワークに接続できる端末のセキュリティ要件を定義し、これを満たさないデバイスも別ネットワークに収容し、メインネットワークとはファイアウォールで遮断しました。例えば、私個人以外にも管理権限の有る職場のテレワーク端末や、SecureBoot及びストレージ暗号化を実施していないクライアント端末などです。
今回は、Raspberry Pi 3を利用し、Debian GNU/Linux bullseye及び、FreeRAIUSを用いました。