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


Glitch とは?

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

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


複合コンテンツ balloon.asia

……あ、まだ balloon.asia の説明をした事がないんでした。
従来情報サイトはドメイン建てて個々に構築していたのですが、
最近は特に 1 ページ完結で制作しています。
でも、よく考えてみると、Qiita・ブログ・Wikipedia など、
個々のページ内が Google の検索結果に出てくる事も珍しくありません。
それなら 1 ページ完結の情報は 1 サイトにまとめてしまおう! という事で、
日本語情報という事で所有していたドメイン balloon.asia を新たに採用して、
その中にいろいろページを作成していたりします。

このブログと区別するために「複合コンテンツ」と表記しているのですが、
自分の頭では「パーソナル Wiki」という感触。
でも Wiki 専用ツールではなくて、Hugo だったりします。

はい、Hugo が出てきました。Hugo もページを作ってあります。

ほら、こうすると便利じゃないですか。
アドレスも balloon.asia/ページ/ と手入力しやすいですし。
なので サブドメイン.balloon.im にはしなかったのです。


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 がある!

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

……ええ、いろんな事ができてしまうのです。git も curl も入ってます。
なので、 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 で圧縮されています。でも大丈夫。 tar も gzip も入ってます。
ここでは 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 は現在完全無料のサービスです。 安心して使って下さい。
ただし、1 時間 4000 リクエストの制限があります。(2020年2月 現在)


おまけ

PHP が入っているので、Caddy+PHP もできるはできるのですが……

Caddy v1+PHP

Caddy v2+PHP

PHP 7.0 と出てきました。PHP 側ではすでに期限切れですね。😆😅😲
OS パッケージのまま維持されているので、
OS 側で独自にセキュリティ更新はされていると思われますが……