Posts

Mainroad ダークモードセットアップ

以前、blognでブログを運用していた頃も、最終的には背景がブラックのダークモードで落ち着いていた。
Hugo + Mainroad に移行後はホワイトベースがデフォルトだったが、やはり自分にはダーク系の方がしっくりくる。

今日は株取引の日でもあるのだが、相場を眺めていると、たまに阿保らしくなってくる(笑)

そこで今日は、相場チェックはそこそこにして、AIに相談しながら Mainroad のダークモード化をセットアップしてみた。

変更点は custom.css のみ。
テーマ本体には一切手を入れていない。

下記はその具体内容

● サイトをダーク系配色にする場合の custom.css 追記分
/static/css/custom.css

/* ===== Mainroad Dark Base ===== */
html, body, .container, .wrapper, .main, .sidebar, .post, .widget {
  background: #202020 !important;
  color: #d6d6d6 !important;
}

/* サイトタイトル・本文 */
.logo a, p, li {
  color: #d6d6d6 !important;
}

/* 見出し */
h1, h2, h3, h4, h5, h6 {
  color: #e6e6e6 !important;
}

/* リンク */
a {
  color: #7aa2ff !important;
}

a:hover {
  color: #a5c0ff !important;
}
/* ウィジェットタイトル下のライン:少し暗くして馴染ませる */
.widget__title {
  border-bottom: 2px solid #444 !important; /* #cccから変更 */
}

/* コードブロック:背景を少しだけ明るくして認識しやすくする */
pre, code {
  background: #2b2b2b !important; /* 全体背景より少し明るいグレー */
  color: #e6e6e6 !important;
  padding: 0.2em 0.4em;
  border-radius: 3px;
}
/* ===== Header & Titles ===== */

.header, .header * {
  color: #ADDFB3 !important;
}

.header svg {
  fill: currentColor;
}

.post__title, .post__title a {
  color: #90D7EC !important;
}
/* ===== Search Widget (Final Optimized) ===== */
/* 1. 検索フォーム全体の枠組み */
.widget-search__form {
  display: flex !important;
  background: #202020 !important;
  align-items: stretch !important;
  border: none !important;
}

/* 2. 入力欄(テキストボックス) */
.widget-search__field {
  flex-grow: 1 !important;
  background: #2b2b2b !important;
  color: #d6d6d6 !important;
  border: 1px solid #444 !important;
  border-radius: 4px 0 0 4px !important;
  padding: 10px !important;
  outline: none;
}

/* プレースホルダー(Search...の文字) */
.widget-search__field::placeholder {
  color: #888 !important;
}

/* 3. 検索ボタン */
.widget-search__submit {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 60px !important;       /* 幅をスリムに固定 */
  min-width: 40px !important;
  padding: 0 !important;
  flex-shrink: 0 !important;
  background-color: #444 !important;
  fill: #ffffff !important;
  color: #ffffff !important;
  border: none !important;
  border-radius: 0 4px 4px 0 !important;
  margin-left: -1px !important;
  cursor: pointer;
  transition: background-color 0.2s;
}

/* 4. マウスを乗せた時の反応 */
.widget-search__submit:hover {
  background-color: #7aa2ff !important;
}

hugo + Mainroad でのブログ再構築内容(覚え書き)

Raspberry Pi 上のサーバーで処理するには重すぎるなど制約が多いため、Windows 版 Hugo を使用し、Windows 上でビルドする方法を採用した。

Hugo の静的サイトでは、記事を 1 件追加するたびにサイト全体をビルドし、サーバーへ同期コピーする必要がある。
一見手間に思えるが、リソースの限られた Raspberry Pi を前提とすれば、合理的な運用方法だと思われる。

ただし、記事の追加がやや面倒になるため、更新頻度は自然と下がるはず。
もっとも、つぶやきのような無駄な投稿が減ると考えれば、それはそれで良いのかもしれない(笑)。

以下、覚え書き。

  1. Windows版 hugo

https://github.com/gohugoio/hugo/releases/hugo_extended_0.154.5_windows-amd64.zip

  1. テーマ Mainbord

Linux機で下記
git clone https://github.com/Vimux/Mainroad.git ./mainroad

  1. hugoサイト 追加ファイル

① layouts\partials\post_meta.html

{{- $root := . -}}
{{- with .Param "post_meta" -}}
	{{- range $field := . -}}
		{{- $p := printf "post_meta/%s.html" $field -}}
		{{- partial $p $root -}}
	{{- end -}}
{{- end -}}

{{ with .Date }}
  <time datetime="{{ .Format "2006-01-02" }}">
    {{ .Format "2006-01-02" }}
  </time>
{{ end }}

② アーカイブリスト表示関連

海辺の放浪記復旧

blogn → blogn+ にて、2004年から21年間運用し、2950件もの記事を蓄積してきた「海辺の放浪記」とやらを、Hugo に移行した。

当初は、ガラケーから画像付きメールを自宅サーバーの所定のメールアドレスに送信することで記事を投稿していた。

そのため、ガラケーの仕様上、タイトルがすべて「Message from SkyMail」になっており、内容もほとんど“つぶやき”のような記事ばかり・・・
記事の大半がそうしたもので埋もれていたため、思い切って削除したところ、1250件程度まで減らすことができた。

要するに、ゴミブログだったわけだ(笑)

まあ、公開しても誰も見てくれないのだが、一応、記事の品質を多少なりとも上げたうえでアップしておくことにした。

それにしても、blogn というのは本当によくできたスクリプトだったなあ。

今になって、あらためてそう思う。

Hugoへの移行記録

  1. 移行のきっかけ

長年使ってきた PHPスクリプトであるBlogn+ がOSのアップデートと共に動作しなくなってしまった・・・

PHP8に対応したブログスクリプトなども検討したが、今後の手間やセキュリティー向上のためPHPは削除し、流行りの「静的サイトジェネレーター(Hugo)」を選択。

  1. 苦闘したポイント

テーマ選び: 最初はAnankeを試したが、記事リストが出ず苦戦。最終的にアーカイブ機能に強い「Mainroad」へ。

hugo.tomlの呪文: Hugoのバージョンアップによる仕様変更や、サイドバーが表示されない「Warning」との戦い。

画像表示の壁: サブディレクトリ運用(/retiredlog/)特有のパス問題や、Markdown内の生HTMLを表示するための unsafe = true 設定など、一つずつパズルを解くような作業だった。

  1. Hugo移行後のメリット

圧倒的な速さ: ラズパイ 2Bとは思えないほどページが瞬時に開く。

メンテナンスフリー: PHPもDBも不要なので、ハッキングの心配やアップデートの不安がゼロに。

運用スタイル: Windows側でビルドしてラズパイへ転送。大きな画像はラズパイ側で直接管理して効率化。

  1. 結び

記事を一件追加するごとにビルドが必要な「不便さ」はあるが、それ以上に「一生壊れない安心感」を手に入れた。

記事数が3000近い、更新停止した「海辺の放浪記」についても移植していこうと思う。

PPPoEマルチセッションとRaspberry Piの役割整理

― 余ったB+を「使わない」という選択 ―

祭日で相場も動かず暇なので、現在の自宅ネットワーク構成を整理しておく。

昨日まで、B+のサブルーター配下に攻撃やスキャンのLOGを集めるサーバーを置いてたけど、あほらしくなって廃止した(笑)
その関係で機器の役割を整理。

■ PPPoEマルチセッションの意義

PPPoEマルチセッションは、目的がはっきりしている場合にのみ意味がある。

・回線の論理分離
・実験・検証用トラフィックの隔離
・監視や観測時の挙動切り分け

単に「2セッション張れるから張る」では無意味だが、静かに分離するという思想には非常に相性が良い。

■ サブルーターとしてのRaspberry Pi B+

昨日まで、サブルーターには Raspberry Pi B+ を使用していた。

・上下とも実効22Mbps程度
・PPPoEマルチセッション配下

性能的には低いが、普段の用途では体感的な不足はない。

■ Pi2Bは「余剰」ではなく「予備」

一方、Pi2Bは LIVA-Z ルーターの完全な予備機として、

・等価設定
・定期メンテナンスのみ
・通常は電源OFF

という状態で維持していた。
このPi2Bは、出番が無い=価値が無いではない。
むしろ、出番が無い状態を維持できている → 主系が安定している証拠である。

■ ではサブルーターはPi2Bの方が合理的では?

結論としては YES。

・サブルーターをPi2Bに変更
・B+は2台余る

という構成の方が、全体として無駄が少ない。

理由は単純で、

・サブルーターは「忘れていられる方が良い」
・Pi2Bの方がかなり余裕があり、100MbpsのVDSLサービス下ではボトルネックにならない。
・消費電力はB+と同等(軽負荷時2W程度)
・B+は予備や実験機として割り切れる

というわけで、今日からPi2Bの予備ルーターをB+のサブルーターと置き換え、メンテしながら継続使用することにした。

■ 余ったB+をどうするか

答えは拍子抜けするほど単純。

・何もしない
・電源を入れない
・役割を与えない
・ノイズを増やさない

1台は非常用の保険、もう1台は実験用、あるいは完全放置。
「余ったから使う」という発想は、設計を劣化させる原因になる。

■LIVA-Z(主系)とPi2B(サブ系)での役割の分離

主系のWebサーバー等をWAN側からチェックする様な場合や、単に気分転換に、クライアントからDOSコマンドでルーターやDNSサーバーを切り替えて使用。
あるいは、主系ルーターのアップデート時に主系をpoffして、デフォルトルートにサブ系ルーターを充ててアップデート。

■ サブルーターのもう一つの役割

―「一般ユーザー」を装った自己アクセス―

実はサブルーターには、もう一つ明確な用途がある。
それは、メインサイトに実アクセスが無い状態でも、一般ユーザーと同じ経路・条件で自分自身がアクセスすることである。

■ なぜ自分でアクセスするのか