Surge(surge.sh)

Web サービス Surge(サージ/surge.sh)についてまとめています。


公式・関連サイト


Node.js 14 使用時の不具合

Node.js を 14 系にした場合、surge のコマンド実行で
次のメッセージが表示されます。動作そのものは可能です。

(node:●●●●) Warning: Accessing non-existent property 'padLevels' of module exports inside circular dependency
(Use `node --trace-warnings ...` to show where the warning was created)

GitHub の issues に報告しました。

Warning is output with Node.js 14 #403 | sintaxi/surge issues


インストール

Node.js をインストールした状態で、
シェル・ターミナルから次のコマンドでインストールできます。

npm i -g surge

Surge は完全にシェル・ターミナルからの操作です。Web 上からの操作はできません。


サブドメイン.surge.sh と 独自ドメイン の制限

Surge では独自ドメイン以外に サブドメイン.surge.sh を使用できますが、
次の点に注意を要します。

項目 サブドメイン.surge.sh 独自ドメイン
robots.txt 全ページクロール拒否 ※ 自由に設定可能
https 参照 有効 無料プランでは無効

※ サブドメイン.surge.sh では robots.txt が次で固定されています。

User-agent: *
Disallow: /

このため、Google などでインデックスされない状態になっています。
独自ドメインではこれが発生せず、自由に設定できます。

独自ドメインで SSL を有効にする場合は有料プランにする必要がありますが、
代わりに外部サービスを経由して SSL 化する方法があります。
次のサービスが使用できる事を確認しています。無料で使用可能です。

特に Cloudflare は日本で東京・大阪に CDN サーバがあるので、
Surge+Cloudflare での組み合わせは高速表示も実現でき、
ドメイン数・転送数無制限で Web サーバは完全無料(ドメイン代のみ)で使用できます。


独自ドメインのネームサーバ設定

独自ドメインを使用する場合、ネームサーバのゾーンは次で設定します。

サブドメイン 種類
なし・@・ドメイン名 ※ CNAME na-west1.surge.sh
www CNAME na-west1.surge.sh

※ はサブドメインなしの設定です。
ネームサーバシステムによっては CNAME の代わりに
ALIAS や ANAME で設定できる場合があります。
CNAME を使用できない場合は A で設定する事も可能です。

サブドメイン 種類
なし・@・ドメイン名 A 45.55.110.124

任意のサブドメインを使用する場合も同じように CNAME を設定します。

サブドメイン 種類
サブドメイン名 CNAME na-west1.surge.sh

サイトの公開

簡単な使い方は Web サイトを公開するディレクトリに移動し、
surge を実行します。
この公開までの時間がとても速く、数秒~数十秒で終わります。
運営者はこの公開するまでの速さが気に入っていて、Surge を長く使っています。

cd 公開ディレクトリ
surge

最初は次の順序で尋ねられます。

  • メールアドレス このメールアドレスは Surge からの通知があります。
  • パスワード 再認証の時に入力します。
  • プロジェクト パス 公開するディレクトリ。相対指定可能です。
  • ドメイン サブドメイン.surge.sh または 独自ドメイン を指定できます。

再び surge をした場合は プロジェクト パス と ドメイン のみです。
この動作も省略したい場合は、まず CNAME ファイルに公開ドメイン名を入れます。
これは GitHub Pages と同じ形式です。

example.surge.sh

https:// を付加すると https 強制になります。
http で参照してきた場合、https へ転送します。

https://example.surge.sh

もちろん独自ドメインも使用可能です。

example.com

www なしの場合、 www.example.comexample.com へ転送します。
www ありの場合、 example.comwww.example.com へ転送します。
したがって通常これらを考慮する必要はありません。

CNAME ファイルを設定した上で、surge の後に公開ディレクトリ名を加えます。
例えば Hugo は通常 public/ フォルダ内に index.html などの公開ファイルを入れるので、
次のようにコマンドを実行します。

hugo
surge public

現在いるカレントディレクトリを公開する場合は公開ディレクトリ . を使用できます。

surge .

管理ドメイン一覧

surge list でメールアドレスで管理しているドメインを一覧表示します。

surge list

ドメインの削除

surge teardown で削除できます。

surge teardown ドメイン名

登録しているメールアドレスに通知が届きます。
誤って削除してしまった場合でも surge しなおせば容易に復旧できます。


Q&A

Surge のサーバはどこにあるのですか?

8 ヶ所の CDN サーバが存在します。日本にはありません。
日本から参照した場合、主にシンガポール、
他にアメリカ・カナダの CDN サーバを参照すると思われます。

sintaxi/regions.txt | GitHub Gist

独自ドメインを用いて SSL を外部サービスで有効する場合、
そのサーバを経由する事にご注意下さい。

無料プランにドメイン数・転送数の制限はありますか?

Surge は無料プランでも登録ドメイン数・転送量に制限がありません。

Pricing | Surge

他の Web サービスでは転送量でプランを定めていますが、
Surge が公開された当初は無料の SSL サーバ証明書 Let’s Encrypt が開始されていなかったため、
有料で SSL サーバ証明書を発行しています。これは現在も維持されています。
サブドメイン.surge.sh はワイルドカード証明書で費用を削減し、
有料プランではドメインに対応した有償の SSL サーバ証明書を提供する事で
サービスの事業化を実現しています。
これが 独自ドメインの SSL が有料プランとなっている理由です。
2020年3月現在 サブドメイン.surge.sh は Sectigo の SSL サーバ証明書を採用しています。

日本語ドメインは使用できますか?

使用できる事を確認できています。
Punycode(xn-- ではじまる英数)で設定して下さい。
日本語サブドメイン.surge.sh も使用できます。

Not Found 表示を独自に制作できますか?

できます。 404.html で生成して下さい。

無料ドメイン EU.org は使用できますか?

できます。サイト運営者が実際に使用している Web サイトがあります。
robots.txt の制限もないので、おすすめです。

🎈 EU.org | ふうせん🎈 Fu-sen.