xserver に Astro

(2024-03-29)

Astro + GitHub + Netlify によるブログはすべて無料で構築でき、GitHub に push するだけで後はすべて自動的にアップデートされるという信じられないようなパーフォマンスですが、私は現在 xserver と契約しており、古い友人のブログやら Laravel が稼働しているので、xserver 上に astro を設定するのが自然です。

実際に Netlify と xserver を比較するとスピードは xserver の方が遥かに速いです。当然ですが。

それと、Netlify では自作の動画を埋め込むことができません。

問題は、ローカルでビルドした src を xserver 上にデプロイすることです。 これはこれまでは FileZilla を使っていました。そして、それは割と面倒でした。

しかし、ビルド + デプロイを自動化してしまえばいいと気づきました。

ssh ログイン時に passphrase を要求されないようにする

鍵ペアを作成して ssh ログインできるとしても、ログインしようとすると passphrase を要求されます。

Terminal window
ssh -i ~/.ssh/moheno.key -p 10022 moheno@sv14154.xserver.jp

私の環境は、linux mint 21.3 ですが、以下の1行でパスフレーズを要求されなくなります。

Terminal window
ssh-add ~/.ssh/moheno.key

と思ったのですが、コンピュータを再起動するとやはりパスフレーズを要求されます。

私の場合は、2 台の NAS に自動 ssh ログインしていろいろと操作するので、少なくとも 3 つの ssh キーが混在しています。

いろいろ考えて、xserver で ssh キー作成時にパスフレーズを入力しなければいいと思い実行してみたらうまくいきました。

セキュリティ的に少し甘くなるかもしれませんが、基本的にブログなのでこれでいいかと思っています。

ローカルでビルドしてデプロイ

ローカルでビルドして xserver と GitHub の両方に自動的にデプロイします。

次のようなシェルスクリプトを作成します。

#!/bin/sh
# ビルドする
cd ~/astroblog
npm run build
# xserver にデプロイ
scp -r -i ~/.ssh/moheno.key -P 10022 dist/* moheno@sv14154.xserver.jp:~/moheno.xsrv.jp/public_html/
scp -r -i ~/.ssh/moheno.key -P 10022 public moheno@sv14154.xserver.jp:~/moheno.xsrv.jp/public_html/
# github にデプロイ
stamp=`date '+%y%m%d%H%M%S'`
git add .
git commit -m $stamp
git branch -M main
git push -u origin main

動画が public に入れてあるので public もアップする必要があるようです。