サーバー構築の話

Screenshot

現在は上記のような構成でサーバーが実行されています。

Cloudflare編

CFはいまではメジャーなCDNです。そんなにアクセスはないでしょうけど、サーバーのセキュリティを鑑みてCDNを利用した方がいいと判断しました。 Webサーバー自体は普通に公開し、CF Tunnelsを設定しCFはそこでキャッシュをしてもらいます。 ドメインは10$弱/年なのでかなり安く買えたのではないでしょうか。

詰まったところ

大きく詰まった点はなかったですが、自宅サーバーがHTTPだけでもCF側にHTTPSとしてアクセスできる機能があり、混乱したりしていました。 CF Tunnelsですが、これ設定するところはありますけど、アクセス制限ができないようにみえてちょっとご心配。

Hg編

Gitが有名な現在、Mercurial=Hgにした理由ですが、画像を管理したかったためです。 Gitよりはバイナリファイルのバージョン管理がまし、といった知識しかないですが、まぁその程度でも十分でしょう。 今のところ個人でしか使う予定ないですから

詰まったところ

クライアント側

ローカルで編集したところをHgの機能でサーバーにPushしていくという管理法にしました。 そして、サーバーはSSHとHTTP以外公開しないと決めていて、サーバーソフトを起動したくなかったので、HgはSSHを経由することにします。 そしてこれが難点でした。

手元のPCはWindowsなわけですが、TortoiseHgを使うことにしました。 しかし、GUIの機能からSSHをclone元に指定し、それに公開鍵を使う方法がわかりませんでした。 結局、GUIではなくCUIでcloneしたわけですが、今度はPushに問題がありました。 GUIで公開鍵を見させる方法が結局わかりません。

結局のところ、HGがSSHの秘密鍵公開鍵方式にネイティブに設定できないところが問題でしたね。

[ui]
ssh = "C:/fullpathof/ssh.exe" -i "C:/fullpathof/.ssh/id_ed25519_hg"

最終的にhgrcに手書きしました。備忘録としてメモメモ

サーバー側

次はサーバー側です。Mercurialで管理するのは、この文書や画像です。 そして、それをサーバーにPushしたら公開までの処理を自動でやってもらいたい。

調べたところHookという機能があり、サーバー側からみてPushされたときに何らかのコマンドが実行できそうです。 しかし、更新内容がないと実行してもらえず、コマンドが実行されているかどうかもよくわかりませんでした。

[hooks]
changegroup = /fullpath/update.sh

こちらもhgrcに手書きしました。Python Scriptもできるっぽいですが、うちのもとめるものとしては機能過剰ですのでスルー

Hugo編

Go言語で実装されている=早いだろう、という程度の知識で使用を決めました。 今のところ困った点はHugoというよりも使用を決めたテーマの問題でしたので、特にHugo自体には困っていません。 もちろん長期運用していけば変わるのかもしれませんね。

テーマというスキンのようなものを使用できます。 シンプルなのが欲しかったのでhugo-coderを選びました。

詰まったところ

まず、このhugo-coderですが、SCSS、CSSのプログラミングに生成を使用します。 しかし、Hugoデフォルトの本体ではこの自動生成に対応しておらず、Windows側で最初にダウンロードしたバイナリでは事前に生成されていたものを利用している状態でした。 これに気づかず、Hugoのサーバーモード、hugo -D serveで自動更新しつつSCSSを修正しても何も変わらない……と数時間悩んでしまいました。 最終的に_genディレクトリを削除したあとHugoのサーバーモード再起動しようとしたらエラーが起きて気づきました。

バイナリが2種類あったとは、盲点でしたね……

終わり

以上です。レンタルブログもいいですが、画像も自由におけるので、自宅サーバーバンザイですね。 ストレージ容量問題があるのでサーバーはもう少しいじることになりそうです。