S3互換のオブジェクトストレージ minio を動かしてNextcloudのプライマリストレージにする
経緯
現在我が家では自宅サーバが一機稼働している1のだが、諸々の理由2により、将来的にraspberry pi のような省電力で安価なSBCとコンテナを利用したクラスタ構成にしたいと思っている。
その際、バックアップやセキュリティの都合上、オブジェクトストレージやデータベースといった、永続化したいサービスのみファイルサーバで動かし、それ以外のウェブアプリケーションは別のホストに分離したい。
現在我が家では自宅サーバが一機稼働している1のだが、諸々の理由2により、将来的にraspberry pi のような省電力で安価なSBCとコンテナを利用したクラスタ構成にしたいと思っている。
その際、バックアップやセキュリティの都合上、オブジェクトストレージやデータベースといった、永続化したいサービスのみファイルサーバで動かし、それ以外のウェブアプリケーションは別のホストに分離したい。
今月(2021年8月、投稿時点)Debianの新しいバージョン、Debian 11 Bullseyeがリリースされた。早速試したい1のだが、AWS LightsailではまだBullseyeでのインスタンス作成はできなかった。
自宅サーバ上でNextcloudなどのwebアプリケーションを稼働させるにあたって悩ましいのがhttpsをどうするか。
パブリックへは公開していないので盗聴などの危険性はあまりないとはいえ、httpsがスタンダードとなりゼロトラストが叫ばれる昨今、プライベートネットワークだからと例外扱いせず、SSL(TLS)でのエンドツーエンドな暗号化を行っておきたい。
こちらの記事はQiitaに投降した記事と同一の内容になります
ブログをWordpressからZola(Rust製の静的サイトジェネレータ)へ移行して数か月、自作テーマはテーマは依然として作成途中であるが、とりあえず今のところ問題もなさそうなので、重い腰を上げて旧ブログの記事を移行することにした。
具体的な工程としては以下
ブログプラットフォームでおなじみのWordpress ブログから大規模サイトまで作れる CMS | WordPress.org 日本語
多言語用にサブディレクトリ型のマルチサイトを使用
本記事の工程でも多言語、マルチサイト用の余計な工程ががかかってる。シングルサイトならもっと楽。
静的サイトジェネレーターZolaで生成 Zola
今回はZolaだが、移行の手順の流れや考え方自体は他でも使えるのではないかと思う。
Zola用のツールがあるとは思えなかったので、ほかにメジャーなSSGであるところのHUGO用のツールを探す。
SSHでサーバーに入り、以下のようにプラグインを入れる
$ cd /path/to/wordpress/wp-content/plugins/
$ sudo wget https://github.com/SchumacherFM/wordpress-to-hugo-exporter/archive/2.0.0.zip
$ sudo unzip 2.0.0.zip
自分のケースではsudoが必要だったが共有してるタイプのレンタルサーバーならHOMEディレクトリ以下にあると思うので、sudoしなくてもいい。
次にWordpress上の画面で対応
プラグインを有効化し… {{image(src=“activate.png”, alt=“有効化!”)}}
エクスポート {{image(src=“export.png”, alt=“エクスポート!”)}}
なぜか一部のマークダウンがAtomにディレクトリ扱いされて読めないというイレギュラーがあったが、VSCodeでは開けたのでそのまま続行する。 Atom最近使ってなかったから更新されてなくてバグってたのかもしれない。
Hugoならこれで終わりかもしれないが、今回は別のSSGなので、ここからが本番。
正直今回のケースでは記事が少ないので手動修正のほうが早かったのだけれど、せっかく記事にするなら役に立つ記事にしたいというのと、bashを学ぶちょうどいい機会ということもあって、極力bashで一括でやれるようにした
出力時のディレクトリの構造としてはこんなかんじ
posts内のファイル名は投稿日-スラッグ.mdという形式だった
aboutが固定ページで、ほかの投稿はpost配下に日付-スラッグという形式で入っている模様。
config.yamlはサイトの設定だが今回は移行先のブログはすでにあるので使わない また、固定ページは1件しかなかったのと内容を更新するつもりだったので後述の自動処理では扱っていない。
これが日本語と英語と2組ある(英語は英語勉強したい気分の時にしか にある
まずはこれを移行先の構造に合わせ以下のようなレイアウトに移動したい
最終的に出来たのがこれ
ROOT=${PWD} # hugo-exportの親ディレクトリで実行することを想定。
SRC="$ROOT/hugo-export/posts" # 移動元のディレクトリ
DST="$ROOT/content/posts" # 移動先のディレクトリ
cd $SRC
for $FILE in *.md
do
LEN=$((${#FILE} - 14)) # スラッグ未設定の場合は日付だけだったので、判別する。
if [[ $LEN -eq 0 ]]; then
AFTER="$DST/${FILE:0:-3}" # 日付だけの場合は仕方がないのでとりあえずそのまま移行する。
else
AFTER="$DST/${FILE:11:-3}" # スラッグがある記事については日付を取り除く。
fi
mkdir $AFTER
echo "$FILE to $AFTER"
cp "$FILE" "$AFTER/index.md" # 英語記事を移動するときはここだけ変える
done
これでだいたい移動ができた。
誤算だったのは下書きで、slugがファイル名にもフロントマターにも反映されていなかった。原因が下書きだからかスラッグが未入力だったからか? とはいえブログを移行して数か月という状況で、旧ブログに残っていた下書きの必要はなさそうなので、気にせず続行する。
Hugo-exporterはその名の通りHUGO用なので、Zolaとはフロントマター(ワードプレスで言うところの記事名とかスラッグとか、要は本文以外の情報が書いてるとこ)の書式が違う。 具体的に言うとHugo exporterの出力形式だとフロントマターはYAMLだが、ZolaはTOMLというのを使っているらしい。
出力時が以下
---
title: タイトル
author: ワードプレスのユーザー名
type: post
date: 2019-06-24T12:01:46+00:00
draft: true (公開済みの記事はこの行自体がない)
url: /ja/slug/
featured_image: /path/to/image
categories:
- 未分類
tags:
- tag1
- tag2
---
移行MD形式の本文
移行先に合わせた修正後のフォーマットが以下 ※移行ついでにいらない情報削除したりスラッグの構造を変えつつ旧パーマリンクにエイリアスをつくって以前のurlでも飛べるようにとかしてるんで同じ内容というわけではない。
本記事はQiitaに投稿した記事と同一の内容となります。
半年前にサーバーの移転に伴ってNextcloudも引っ越ししたのだが、いくつかエラーが起きていたので、致命的なのだけ修正して放置していた。
ドメインを移行したついでにサーバー自体をレンタルサーバーからAmazon Light sailに移行した。
ファイル共有兼同期できるメモ帳としてNextcloudを導入したら思ったよりもいろいろできて感動した話。
前回の記事の続き。
サーバのOSを入れ直しに伴いバックアップと再設定をした。
これまでUbuntu19.04で運用していたファイルサーバが、アップグレードに伴いなぜか自動でサスペンドするようになってしまった。
非常に不便なので早急になんとかしたかったがざっと調べても同様の事例が見つからなかったので、諦めてクリーンインストールすることにした。
ついでに興味があったManjaroにOSを変えることにした。
引数として先程のMACアドレスを使って## 経緯
節電のためにファイルサーバを平日の昼間サスペンドさせることにしたのだが、そうすると祝日の平日に手動でサスペンドを解除する必要がある。
コレ自体は仕方ないとして、せめて電源ボタンではなくメインマシンからLAN経由で遠隔で電源を入れられるようにしたい。
調べたところWake-on-LANというそれらしい機能があったので利用する
自作のファイルサーバがあるのだが、平日の日中は当然使われていない。
にもかかわらずつけっぱなしなのもどうかと思うので、そのあいだサスペンドするようにする
調べたところ、 時間を指定してサスペンド、一定時間後の復帰をさせる rtcwake と
定期的にコマンドを実行させるcrontabを使えば行けそうなので設定してみる。
PCを自作NASに移行して半年弱、当時は予算の関係で保留にしていたが、そろそろHDD買い足してバックアップなども万全にしたい
当初はファイルシステムは無難にext4、マザーボードの機能でRAID1を組むつもりだったが、いろいろ調べた結果ZFSというファイルシステムを導入することにした。