💻カタカタ… えっ、Glitch ってコンソールがあるんだ!
という事は……Caddy が動いてしまうんじゃないかな?


Glitch とは?

その前に Glitch を知らない人がいると思いますので……

 Glitch: The friendly community where everyone builds the web

オンライン上で Web アプリを開発できます。
単に HTML などのファイルを置いて静的 Web サイトとしても使用できます。
簡単な説明はこちらにまとめてありますよ。

🎈 Glitch | ふうせん🎈 FU-SEN


Glitch と格闘した結果

さて、Glitch 内にファイルを作っていろいろ試行錯誤したところ……
……できました! Caddy が動きました!!

Caddy v1

Caddy v2

ソース画面を貼り付ける事もできるのですが、
表示するまでに時間を要して、しかも重くなってしまうので、リンクにしています。

使い方は左上のアイコンより Remix Project を選ぶと
プロジェクトを複製して新たなプロジェクトを生成します。
そうしたら index.html を選択し、中身を編集して下さい。
もちろんファイルを追加しても構いません。👓 Show ですぐに表示できます。
Glitch は Git リポジトリのエクスポート・インポートも対応しています。
GitHub などの連携もできる、という事ですよ。


仕掛け

なんと Glitch は glitch.json から任意の実行ができるんですね~。

{
  "start": "bash caddy-start.sh"
}

なので bash caddy-start.sh で実行させてます。
caddy-start.sh は Caddy v2 だと caddy run ですね。

#!/bin/bash

~/caddy run &

wait

実行しているのは 1 行なので、 glitch.json の start に入れて良いのですが、
更に実行したいものがある事を想定して、このようにしてあります。
PHP とか、MySQL とか、……

実行している Caddy へ移ります。

caddy は Caddy の実行ファイルそのものです。
Caddy v2 はベータ版、Caddy v1 はライセンスの選択があるので、
実行ファイルの更新が必要になる場合があります。
左下の Tools - Full Page Console または
Tools - Logs を選択し、下にログが表示されたら Console を選びます。

Glitch には Console がある!

うぉっ! コンソール!! これがあれば何でもできてしまうではないか~~~!! 🤩キラリーン

……ええ、いろんな事ができてしまうのです。gitcurl も入ってます。
なので、 curl を使って Caddy の実行ファイルをダウンロードすれば良いのですね。

Caddy v2(2.0.0-beta14)は実行ファイルそのものが配布されています。
忘れていけないのが、パーミッションの実行権限、
更にコンソールと編集環境は別領域で同期するために refresh コマンドが必要です。

curl -L https://github.com/caddyserver/caddy/releases/download/v2.0.0-beta.14/caddy2_beta14_linux_amd64 -o ~/caddy
chmod +x caddy
refresh

Caddy v1 は .tar.gz で圧縮されています。でも大丈夫。 targzip も入ってます。
ここでは personal ライセンスの場合です。
getcaddy.com は /usr/bin に入れようとするので、直接ダウンロードします。

curl -L "https://caddyserver.com/download/linux/amd64?license=personal&telemetry=off" -o ~/caddy.tar.gz
tar zxvf caddy.tar.gz
chmod +x caddy
refresh

なお、 refresh はサーバの再起動も行います。
glitch.json などで起動コマンドを変更した場合は refresh する事になります。
もちろん kill を使っても構いません。

あと Caddyfile ですね。ポート 8080 で立ち上げます。
公開 URL が何でも良いように :8080 とだけ入れています。
Caddy v1 では 0.0.0.0:8080 としています。ここは変更しなくて OK。
また、Glitch が SSL サーバ証明書を適用するので、Caddy は発行不要です。
Caddy v2 は tls 記載なし、Caddy v1 は tls off となります。

:8080

# Do not rewrite up to this point!

root * /app/
file_server
templates

/app にファイルがあるので、それを参照しています。
public を公開ディレクトリにするなら root * /app/public/ にします。


Caddy を動かすメリット・デメリット

templates でテンプレートを動かしたりできるわけです。
Caddy v1 ならエラーメッセージのカスタマイズもできます。

Glitch は 2020年2月現在 12 時間参照がないと停止する仕様で、
再度起動する時はしばらく待たされます。
割り当てメモリが 512MB しかないのが大きいようですね。

まともな運用に Caddy 経由で動作させるのは定期参照させるなど工夫が必要ですが、
試しに Caddy の動作を確認するには十分でしょう。

……あ、 Glitch は現在完全無料のサービスです。 安心して使って下さい。


追加 2022/06/26

🎏 Why is my generated static site using project hours? | Glitch FAQ

Glitch は現在 GENERATED STATIC SITE に対応しています。
ビルド動作して、出力した内容が静的サイトの扱いになります。

package.json に指定する仕様のため、
起動も package.json に変更してあります。
scripts 内の start でコマンドを入れます。

{
  "glitch": {
    "projectType": "generated_static"
  },
  "scripts": {
    "start": "caddy run"
  }
}

Caddy のインストールも webinstall.dev を採用しました。

 Hugo | webinstall.dev

最新版のインストールはこのコマンドを実行するだけです。

curl -sS https://webinstall.dev/hugo | bash

Windows でも使用できます。

curl.exe -A "MS" https://webinstall.dev/hugo | powershell