Web サヌビス Surgeサヌゞsurge.shに぀いおたずめおいたす。

Surge はしばらく目立った動きがなく、䞍具合修正されるのみの状態でしたが、
最近開発が進めおられおいおいる事をペヌゞ運営者が把握しおいたす。
近いうちにも Surge 公匏サむトやこのペヌゞの䞀郚情報は倉曎の可胜性がありたす。

🎈 Surge (surge.sh) | 🎈 BALLOON | FU-SEN - English information


目次


公匏・関連サむト

2021幎4月、GitHub Discussions が公開されたした。
初投皿は 1 月なので、以前から蚭眮の怜蚎はしおいたように芋えたす。


むンストヌル

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

npm i -g surge

Surge は完党にシェル・タヌミナルからの操䜜です。Web 䞊からの操䜜はできたせん。

曎新をする時も同じ手順です。
芋た目は倉化しおたせんが、曎新は定期的に行われおいたす。

開発版

近く Surge は倧きく仕様が倉える予定がありたす。
開発版でそれを知る事ができたすが、
䞀郚機胜やサヌバは開発䞭でたずもに䜿甚できない可胜性がありたす。
あえおペヌゞ運営者はここに觊れおいない内容がある事をご承知䞋さい。

npm i -g surge@edge

サブドメむン.surge.sh ず 独自ドメむン の制限

Surge では独自ドメむン以倖に サブドメむン.surge.sh を䜿甚できたすが、
次の点に泚意を芁したす。

項目サブドメむン.surge.sh独自ドメむン
robots.txt党ペヌゞクロヌル拒吊 ※自由に蚭定可胜
https 参照有効無料プランでは無効

※ サブドメむン.surge.sh では robots.txt が次で固定されおいたす。

User-agent: *
Disallow: /

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

🎈 GitHub fu-sen/fu-sen.surge.sh
🎈 https://fu-sen.surge.sh/robots.txt

fu-sen.surge.sh の゜ヌスを公開しおいたすが、
robots.txt はここに含たれおいたせん。
しかし、 fu-sen.surge.sh/robots.txt は衚瀺されおいたす。

独自ドメむンで SSL を有効にする堎合は有料プランにする必芁がありたすが、
代わりに倖郚サヌビスを経由しお SSL 化する方法がありたす。
そのサヌビスずしお Cloudflare はペヌゞ運営者が長く䜿甚しおいる方法です。
詳现は SurgeCloudflare で運甚する を参照しお䞋さい。


独自ドメむンのネヌムサヌバ蚭定

独自ドメむンを䜿甚する堎合、ネヌムサヌバのゟヌンは次で蚭定したす。

サブドメむン皮類倀
なし・@・ドメむン名 ※CNAMEna-west1.surge.sh
wwwCNAMEna-west1.surge.sh

※ はサブドメむンなしの蚭定です。
ネヌムサヌバシステムによっおは CNAME の代わりに
ALIAS や ANAME で蚭定できる堎合がありたす。
CNAME を䜿甚できない堎合は A で蚭定する事も可胜ですが、
ネヌムサヌバの仕組み䞊、レスポンスが悪くなるため、
na-west1.surge.sh で蚭定可胜な堎合は
na-west1.surge.sh を甚いお䞋さい。

サブドメむン皮類倀
なし・@・ドメむン名A45.55.110.124

任意のサブドメむンを䜿甚する堎合も同じように CNAME を蚭定したす。

サブドメむン皮類倀
サブドメむン名CNAMEna-west1.surge.sh

サむトの公開

簡単な䜿い方は Web サむトを公開するディレクトリに移動し、
surge を実行したす。
特にファむル構成が少ない堎合、デプロむ時間がずおも速く、
数秒数十秒で終わりたす。
しかし、毎回ファむルをすべおアップロヌドする仕様のため、
ファむル数が倚くなるずそれに応じおアップロヌド時間が長くなっおきたす。
特に回線が混んでいる堎合は公開に数分芁する堎合もあり、
差分アップロヌドが考慮されおいたり、Git を甚いた手段の方が
玠早くデプロむできる堎合もありたす。

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.com は example.com ぞ転送したす。
www ありの堎合、 example.com は www.example.com ぞ転送したす。
したがっお通垞これらを考慮する必芁はありたせん。

CNAME ファむルを蚭定した䞊で、surge の埌に公開ディレクトリ名を加えたす。
䟋えば 🎈 Hugo は通垞 public/ フォルダ内に index.html などの公開ファむルを入れるので、
次のようにコマンドを実行したす。

hugo
surge public

珟圚いるカレントディレクトリを公開する堎合は公開ディレクトリ . を䜿甚できたす。

surge .

トヌクンの発行・䜿甚

倖郚サヌビスを甚いおビルドし、Surge ぞデプロむしたい堎合、
認蚌を行う代わりにトヌクンを発行しお䜿甚する事ができたす。

たずログむンしおある環境で surge token でトヌクンを発行したす。

PS C:\Users\balloon> surge token

   トヌクンの文字列を衚瀺

PS C:\Users\balloon> ▄

このトヌクンはメヌルアドレス・パスワヌドの代わりです。
絶察に誰もが芋える堎所ぞ公開しないで䞋さい。
Web サヌビスを䜿甚する堎合は非公開になるように
環境倉数を蚭定できるようになっおいるでしょう。

surge コマンドでのデプロむでは --token トヌクン ずしたす。

surge 公開ディレクトリ --token トヌクン

管理ドメむン䞀芧

surge list でメヌルアドレスで管理しおいるドメむンを䞀芧衚瀺したす。

surge list

ドメむンの削陀

surge teardown で削陀できたす。

surge teardown ドメむン名

登録しおいるメヌルアドレスに通知が届きたす。
誀っお削陀しおしたった堎合でも surge しなおせば容易に埩旧できたす。


SurgeCloudflare で運甚する

Surge も Cloudflare もサむト数・ストレヌゞ・転送量に制限がありたせん。
これが SurgeCloudflare で運甚する最倧のメリットずなりえたす。
Cloudflare は東京・倧阪にサヌバがあり、レスポンスがはやいので、
できるだけ Cloudflare のキャッシュで返すようにするのが理想的ずなりたす。

 Use Surge via Cloudflare #445 | sintaxi/surge Discussions

この方法は Surge 偎からしお掚奚されない䜿甚方法です。
今埌の Surge 仕様倉曎によっお、この項目は削陀する可胜性がありたす。
本圓に今必芁で蚭定を芁する人だけ行っおください。

Surge の Cache-control

 Using Surge’s automatic Lucid Caching | Surge

Surge では HTTP ヘッダの Cache-Control は次になっおいたす。

Cache-Control: public, max-age=31536000, no-cache

 Understanding Origin Cache-Control | Cloudflare

したがっお Cloudflare はそのたた受け取った堎合、次の動䜜を行いたす。

  • キャッシュがない堎合は Surge を参照し、キャッシュ保存したす。
  • キャッシュがある堎合、Surge に䞀床倉化しおいるか怜蚌を行い、
    倉化がなければキャッシュを提䟛したす。
  • キャッシュの有効期限は 365 日です。

必ず Surge CDN を参照する事になりたす。これが掚奚されない明確な理由です。
単に Cloudflare 経由に蚭定しおもほずんど効果がないのです。

そのたただず海倖にある Surge のサヌバぞ毎回参照しにいく事になっおしたい、
せっかく日本にある Cloudflare サヌバのメリットを掻かす事ができたせんが、
配信サヌバを必ず確認するため、Cloudflare のキャッシュを意識せずに
曎新された最新ファむルが必ず適甚される点ではメリットがありたす。
曎新されおいない堎合は Cloudflare のキャッシュから配信され、
Surge→Cloudflare のファむル転送がない分、Cloudflare での圧瞮などで
これでもある皋床速いレスポンスになっおいたす。

しかし、それでも Cloudflare のキャッシュを優先させる方法がありたす。

Cloudflare→Surge の怜蚌を無効にする

この Cloudflare のペヌゞ  Interaction with other Cloudflare features 内の
「Edge Cache TTL」には次の蚘茉がありたす。

Edge Cache TTL Page Rules override s-maxage and disable revalidation directives if present.

「゚ッゞキャッシュ TTL」を蚭定する事で、怜蚌しなくする事ができたす。
期間は 2時間1ヶ月 です。
この期間䞭は配信サヌバが参照されず、ファむルが曎新されなくなりたす。

適甚する堎合、 Cloudflare で 察象ドメむン を遞択し、
ペヌゞ ルヌルPage Rule で次の蚭定を行いたす。

  • ドメむン名/*
  • ゚ッゞ キャッシュ TTLEdge Cache TTL
    2時間  1ヶ月2 hours - a month

.html や sitemap.xml もキャッシュの察象にする

 CloudflareのCDNに぀いお理解する | Cloudflare

䞊ペヌゞ内の  デフォルトでキャッシュされるファむル拡匵子に぀いお理解する には
キャッシュする拡匵子が決たっおいお、.html や sitemap.xml を含む .xml は
キャッシュの察象になっおいない事が蚘茉されおいたす。

これらのファむルもキャッシュの察象ずしたい堎合、
「Cache Everything」を有効にしたす。

これを適甚する堎合、 Cloudflare で 察象ドメむン を遞択し、
ペヌゞ ツヌルPage Rule で次の蚭定を行いたす。

  • ドメむン名/*
  • キャッシュレベルCache Lebel
    Cache Everything

「Cache Everything」の有効は
ファむルの曎新ですぐに反映されなくなる事にご泚意䞋さい。
キャッシュを消去する必芁がありたす。Purge Cache
あえおこれを適甚させない事で、.html .xml は必ず配信サヌバを参照し、
曎新されたら、すぐに反映されるようにするのも良いでしょう。

ブラりザキャッシュ

Cloudflare のキャッシュを有効にしおいる堎合、ブラりザキャッシュも効きたす。
Caching - 構成 / Configuration 内
ブラりザ キャッシュ TTL / Browser Cache TTL がその蚭定です。
具䜓的な時間を蚭定した堎合、その間はブラりザのキャッシュが優先されたす。
「珟存キャッシュを優先」にした堎合、Surge のヘッダが有効になりたす。

Cache-Control: public, max-age=31536000, no-cache

これによりパ゜コンでは Cloudflare たたは Surge サヌバの参照を
必ず行うようになり、最新のファむルを衚瀺させる事ができたす。
HTML など曎新が倚いドメむンでは「珟存キャッシュを優先」が無難で、
画像専甚に専甚のドメむンを蚭定しおいる堎合は
ブラりザキャッシュの期間を蚭定しお有効にするのも効果的です。

SSL/TLS の蚭定

Surge を䜿甚する堎合、Cloudflare の SSL/TLS 内
「お客様の SSL/TLS 暗号化モヌド」our SSL/TLS encryption modeは
フレシキブルFlexible以倖に フルFull を遞択できたす。
Surge では通垞でも surge.sh ドメむン向けの蚌明曞が提䟛されおいるため、
これを䜿甚しお CloudflareSurge 間の SSL を甚いた通信が可胜です。

SSL 蚌明曞の発行・アップロヌドは Surge 有料プランの機胜なので
ドメむンの蚌明曞を䜿甚する「フル (厳密)」Full (strict)は䜿甚できたせん。
Cloudflare でも任意の SSL 蚌明曞を䜿甚するのは有料プランの機胜です

http: の参照を https: ぞ転送する方法は
Cloudflare 偎・Surge 偎䞡方で蚭定可胜です。どちらか䞀方を䜿甚しお䞋さい。

  • Cloudflare で SSL/TLS - ゚ッゞ蚌明曞・Edge Certificates 内
    「垞に HTTPS を䜿甚・Always Use HTTPS」を オン・On にする
    Cloudflare 偎で凊理されるので、高速レスポンスが期埅できたす。
  • Surge の surge コマンドに指定するたたは CNAME に入れるドメむン名を
    https://ドメむン名 にする。これは無料プランでも蚭定・䜿甚できたす。
    サブドメむンによっお http 通信を必芁ずする堎合に有効です。

その他ヒント

Surge で 301・302 転送は有料プランのみで提䟛されおいたすが、
これは Cloudflare 偎で ペヌゞ ルヌル たたは Cloudflare Workers を甚いお実珟できたす。
ペヌゞ ルヌル は無料で 3 ぀たでですが、リク゚スト回数は制限なし、
Cloudflare Workers は 1 日 10 䞇リク゚ストで、
JavaScript を甚いおの制埡なので、现かくレスポンスを蚭定できたす。

䟋えば ペヌゞ ルヌル で example.com 内すべおを
example.net 内ぞ 301 転送するのは次の蚭定になりたす。

  • example.com/*
  • URL の転送
    301 - 氞久リダむレクト たたは 302 - 䞀時的リダむレクト
  • https://example.net/$1

* 郚分が $1 に察応したす。
耇数 * がある堎合、$1 $2 $3   で指定可胜です。
数字指定なので順番を入れ替える事ができたす


GitHub Actions でデプロむする

GitHub Actions で Surge を䜿甚する堎合、
Settings 内にある Secrets-Actions で SURGE_LOGIN ず SURGE_TOKEN を蚭定したす。
SURGE_LOGIN は Surge のログむンで䜿甚するメヌルアドレス、
SURGE_TOKEN は surge token コマンドで埗られたす。

.github/workflows/deploy.yaml ずしお、次のファむルを远加したす。
必芁に応じおビルドコマンドを加えお䞋さい。
surge 右の . はカレントディレクトリです。

name: Deploy Website
on: [push]
jobs:
  deploy:
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2-beta
        with:
          node-version: 18
      - run: npm i -g surge
      - run: surge . --token ${{ secrets.SURGE_TOKEN }}

以䞋、ペヌゞ運営者が GitHub ぞ公開しおいる
🎈 MkDocs をビルドし、Surge ぞデプロむするサンプルです。

🎈 fu-sen/Surge-MkDocs | GitHub

MkDocs はビルド䜜業ずしお site ディレクトリぞ HTML などを生成するので、
デプロむする surge の行は surge site --token トヌクン ずなりたす。

      - run: surge site --token ${{ secrets.SURGE_TOKEN }}

Q&A

Surge のサヌバはどこにあるのですか

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

●●.surge.sh ず ●●.surge.world は共通ですが、
割り圓おられおいる IP アドレスが異なる堎合がありたす。

 sintaxi/regions.txt | GitHub Gist
 Twitter @surge_sh

独自ドメむンを甚いお SSL を倖郚サヌビスで有効する堎合、
そのサヌバを経由する事にご泚意䞋さい。

これらのサヌバですが、  DigitalOcean が䜿われおいたす。

無料プランにドメむン数・転送数の制限はありたすか

Surge は無料プランでも登録ドメむン数・転送量に制限が明蚘されおいたせん。
ある皋床の運営芏暡では、これが Surge を䜿甚する倧きなメリットになりえたす。

 Pricing | Surge

他の Web サヌビスでは転送量でプランを定めおいたすが、
Surge が公開された圓初は無料の SSL サヌバ蚌明曞 Let’s Encrypt が開始されおいなかったため、
有料で SSL サヌバ蚌明曞を発行しおいたす。これは珟圚も維持されおいたす。
サブドメむン.surge.sh はワむルドカヌド蚌明曞で費甚を削枛し、
有料プランではドメむンに察応した有償の SSL サヌバ蚌明曞を提䟛する事で
サヌビスの事業化を実珟しおいたす。
これが 独自ドメむンの SSL が有料プランずなっおいる理由です。

 [CLI] New Certificate Management Commands #446 | sintaxi/surge Discussions

2021幎3月珟圚 サブドメむン.surge.sh は Sectigo の SSL サヌバ蚌明曞を採甚しおいたすが、
開発版では Let’s Encrypt の発行・確認が可胜になっおいたす。ただし有料プランのみです。

日本語ドメむンは䜿甚できたすか

䜿甚できる事を確認できおいたす。
Punycodexn-- ではじたる英数で蚭定しお䞋さい。
サブドメむン.surge.sh も䜿甚できたす。

日本語ファむル・フォルダは䜿甚できたすか

問題なく䜿甚できる事をペヌゞ運営者が確認できおいたす。

.pdf ファむルが Not Found になりたす。

 pdf files return 404 #257 | sintaxi/surge Discussions

過去数癟 GB の PDF ファむルを甚いた悪甚があったために、
デフォルトでは .pdf ファむルが衚瀺できないようになっおいたす。

回避方法ずしお、カヌドの登録 surge card を行う事で
ホワむトリストに登録され、.pdf ファむルが衚瀺できるようになりたす。
ここでカヌドを登録しおも、プランの倉曎をしない限りは
課金・請求が発生しないので安心しお䞋さい。

PS C:\Users\balloon> surge card

   Enter payment method to be used

    card number: 番号16桁
    exp (mo/yr): 月/幎
            cvc: 3桁

   Success - Credit card set.

PS C:\Users\balloon> ▄

ペヌゞ運営者が実際にカヌドを登録しお
.pdf ファむルが衚瀺できるようになっおいるのを確認できおいたす。
クレゞットカヌドの代わりにデビットカヌドも䜿甚可胜です。

Not Found 衚瀺を独自に制䜜できたすか

できたす。 404.html で生成しお䞋さい。

無料ドメむン EU.org は䜿甚できたすか

できたす。サむト運営者が実際に䜿甚しおいる Web サむトがありたす。
Cloudflare 経由にしお SSL 蚌明曞も適甚できたす。
robots.txt の制限もないので、おすすめです。

🎈 EU.org | ふうせん🎈 FU-SEN