Now の簡単な使い方

Now(ZEIT now.sh)の簡単な使い方を紹介しています。

▲ ZEIT https://zeit.co/
Δ Now https://zeit.co/now

ログインしている場合、ZEIT のサイトを参照すると
Dashboard の表示になり、Now の使用状況を参照できます。
一部は now コマンドの代わりにここから設定可能です。

現在 ZEIT Now は動的ファイルの利用が
主流になってきていますが、
(Node.js・Next.js・Go・PHP・Python など)
ここでは静的ファイル(HTML・画像・JS・CSS)での
公開を前提にしています。

※ ZEIT(ツァイト)=▲。Now の提供チーム


ダウンロード

Now Desktop は複数人での作業だとメンバーの経歴などを見れ、
アイコンへのドラッグ&ドロップへアップロード公開もできますが、
個人用途・コマンドライン操作前提であれば、常駐を減らすため
Now CLI をインストールするのが良いでしょう。
Now Desktop に Now CLI も含まれています。

Now CLI
Now Desktop

Node.js を使用している場合、
インストールは npm で簡単に行えます。

npm install -g now

Now をつかおう。では Now CLI による
now コマンドでの操作を主に説明しています。


アカウントの登録・ログイン

Now でのログインは ZEIT アカウントとして扱われます。

Web で登録できます。GitHub・GitLab 連携かメール認証です。
パスワード入力は発生しません。

Sign Up for ZEIT

2019年3月2日よりアカウント登録はステップ表示になっています。
表示に合わせて進めて下さい。

ログインすると、状況をブラウザから確認できます。
メールアドレスなどの設定変更もこちらから可能です。

now コマンド(Now CLI)にも
メールアドレスを割り当てておきます。

now login

メールアドレスを入力すると
メールが届くので認証して下さい。


仮アドレスでの公開(デプロイ)

公開する index.html などがあるフォルダへ cd で移動し、

now

とするだけです。
https://●●●-■■■.now.sh/ で参照できるようになります。
●●● 部分はフォルダ・ディレクトリ名の抜粋、■■■ 部分は毎回変化します。
公開前の試作した Web を自分自身で確認したり、
他の人が確認するために一時的に公開する場合は、このアドレスを使用できます。

2019年2月下旬より(動作に問題があったため、正式には3月上旬より)
now を実行した段階で https://●●●.▲▲▲.now.sh/ でも参照できるようになりました。
この時の ●●● はプロジェクト名(後記)、▲▲▲ はユーザー名です。
now でも仮の固定アドレスが割り当てられるようになりました。

また、2019年3月19日よりチーム開発時の now
https://●●●-■■■.▲▲▲.now.sh/ と毎回異なるアドレスになります。
now --target staging とする事で https://●●●.▲▲▲.now.sh/ になります。
これを公開前の確認用アドレスにする事ができます。


公開用のアドレスを割り当てる

従来は now の後に now alias を実行する公開手順でしたが、
2019年3月19日より、代わりに now --target production のみで
公開できるようになりました。しかし、長いコマンドだった事もあり、
2019年夏に now --prod へ再度変更されています。

公開用のアドレスをファイル now.json
now を実行するフォルダ(ディレクトリ)に入れます。
2018年11月より Version 2 が公開されていますので、
“version”: 2, も入れておくのがおすすめです。

{
  "version": 2,
  "name": "●●●",
  "alias": "○○○.now.sh"
}

2019年8月より ZEIT Web サイト の Projects 内にある各項目で
Domains のところに ◯◯◯.now.sh またはドメイン名を設定する事で
now.json を生成せずに使用できるようになりました。

Zero Config Deployments

その後次のコマンドを実行します。

now --prod

これで https://○○○.now.sh/ で参照できます。
○○○.now.sh は使用されていなければ先着で使用可能です。

なお、従来 alias の値として .now.sh を省略できましたが、
省略するとエラーになる事が分かっています。

また、この際も ●●●.▲▲▲.now.sh と仮アドレスも生成されます。
常に 3 つのアドレスが生成されます。ZEIT Web サイト上でこの状態を確認できます。


静的サイトジェネレーターを使用する場合

例えば Hugo では hugo コマンドで通常に public フォルダに公開ファイルを生成します。
Hugo で生成した後に Now で Web サイトへ公開する操作は次のようになります。

hugo
now --prod public

public が省略されている場合はカレントフォルダ(ディレクトリ)となります。
1 コマンドになった事で、cd で移動する必要がなくなりました。

この時、連結コマンドを使用できます。OS 等によって異なります。
Windows は Powershell と コマンド プロンプト でも異なります。
Powershell は ; が区切り記号です。

hugo;now --prod public

コマンド プロンプトは & が区切り記号です。

hugo & now --prod public

macOS、その他 OS は && が区切り記号です。

hugo && now --prod public

公開時の注意

index.html がない場合、ファイル名なしでの参照はファイル一覧表示になります。
構成ファイルが丸見えになるのでご注意下さい。

Version 2(2018年11月以降)は省略時の動作を now.json の routes で設定できます。
(後記 Q&A 内)
また、routes を使用していない場合、拡張子は .html に限らず index.~ のファイル名を参照します。


GitHub・GitLab リボジトリと連携する

GitHub・GitLab と連携する事で、now コマンドを実行する代わりに
GitHub・GitLab へ push する事(コミット)でデプロイ・公開できます。
GitLab は 2019年3月 より対応されました。

Now + GitHub
Now for GitLab

GitHub Pages・GitLab Pages より Now を使うメリットは次があります。

通常はプロジェクト内のファイルがまるごと公開されますが、
now.json の route で参照先・公開範囲を細かく設定可能です。
route の設定で、 GitLab Pages 同等に public 内公開にもできます。

Account Settings へ入り、まだ連携していない場合、
Login With GitHub または Login With GitLab から連携します。、
GitHub では全てのリポジトリ、または特定のリポジトリを選択できます。
数が少なければ全てでも構いません。
Now が動作するのは now.json があるリポジトリに限られます。
GitLab では連携するリポジトリを選択できます。

あとは now.json を含めてリポジトリへファイルを push するだけです。
公開する now.sh サブドメイン または 独自ドメイン は
now.json の alias で設定するので、プロジェクト名は別の名称でも構いません。
ブランチは今のところ master のみで機能します。

通常は push により now --prod 相当が行われる状況となり、
now.json の設定により alias のアドレスで公開された状態にできます。
GitHub の場合、実行状況は Now[bot] からメールで通知が入り、
commits に Now からコメントが入ってデプロイ・公開状況を把握できます。

GitHub でのサンプル - fu-sen/git-to.now.sh | GitHub
GitLab でのサンプル - xn–ck8h/git-lab.now.sh | gitLab

独自ドメインで使用したい場合、まずは now domains add コマンドで、
ドメインの所有者認証を行って下さい。(下項目)

なお、GitLab を使用する場合、連携の代わりに .gitlab-ci.yml を用いて
now コマンドを実行する手段もあります。


独自ドメイン

もちろん Now で独自ドメインを使用できます。
SSL も有効になるので、実際の Web サイト・アプリ・コンテンツを公開する目的でも
Now のままで十分に使えます。

GitHub 連携の場合は、GitHub Pages の代わりに Now を使用して Web 公開が可能です。

ネームサーバレベルで提供されているので、サブドメインを別のサービスで使用したり、
メールサーバを設定して運用する事もできます。
(Now では メールサーバを提供していません。別サービスを設定する必要があります)

now domains ls コマンド、または
ZEIT Web サイトの Dashboard 内 Domains で独自ドメイン関連を参照できます。

ドメインの所有者認証

2019年1月8日より、独自ドメインを追加する際にネームサーバを用いて所有者認証を行う手段が導入されました。
ここでは □□□.com を公開ドメイン名とします。もちろん .com 以外も使用できます。

now domains add □□□.com

ZEIT の Web サイトより Dashboards 内の Domains からも追加できます。

独自ドメインに設定するネームサーバが表示されます。

◎ は a~f のいずれかです。これは独自ドメイン毎に変わります。

すでに運用しているドメインを Now へ移したい場合、
ネームサーバの変更は動作しなくなってしまいます。
またはサブドメインを使用したい場合など他のネームサーバサービスを経由する場合は
これに代わって表示されている TXT レコードを追加して下さい。
Name の _now はシステムによって _now.□□□.com となります。

◎.zeit.world のネームサーバは古いネームサーバです。
後に使えなくなる予定ですので、こちらを設定しないで下さい。

しばらくすると認証された旨のメールを受け取りますが、
代わりに次のコマンドで手動認証も可能です。

now domain verify □□□.com

通常はネームサーバの反映に時間を要するため、
独自ドメイン側で設定してから少なくても数分経過した後に実行すると良いです。

独自ドメイン側のネームサーバ変更作業を行ったために
再度ドメイン所有者認証を行う必要がある場合は、次を実行します。

now domain inspect □□□.com

この認証されたドメインは、承認されたアカウントのみで now --prod が可能です。

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

独自ドメイン同様 now domains add で対象のドメインを追加し、所有者認証します。
ここではサブドメインではなく、独自ドメインです。
この時 TXT レコードで所有者認証して下さい。
now --prod を実行すると独自ドメインを確認して設定するレコードが表示されまず。

実際の設定では CNAME レコードを追加します。

サブドメイン 種類
(目的のサブドメイン) CNAME alias.zeit.co

ネームサーバによって値の末尾に . が付き、alias.zeit.co. と設定する場合があります。

公式ドキュメントに合わせて「サブドメイン」と記載していますが、
サブドメインのないドメインは ALIAS があれば ALIAS レコードで設定できます。
(場所によって ANAME になっていたり、CNAME で設定できる場合があります)
ZEIT・Now はサーバとして Amazon Web Service を主に使用しているため、
運用サーバ構成の変化により、IP アドレスは随時変化している事が想定されます。
そのため、alias.zeit.co の IP アドレスを確認し、A レコードで設定すると
後に参照できなくなる可能性がありますので、A レコードでは設定しないで下さい。

サブドメインを扱う時の注意

独自ドメインのように誰でも使用できるサブドメインは
Public Suffix List に登録されている場合があります。

Public Suffix List

この場合 ZEIT・Now では Public Suffix List に登録しているサブドメインを
独自ドメインのように扱います。

上記で挙げている ~.eu.org ~.jp.eu.org については Q&A で記載しています。

Q&A - 無料提供されている EU.org は使用できますか?

サブドメインのワイルドカード指定

2019年9月より、独自ドメインのサブドメイン(例えば *.□□□.com)を
使用できるようになりました。
サブドメインに関係なく、特定プロジェクトを参照・実行できるようになっています。
now.json を使用する必要がなくなっているため、
公式では ZEIT Web サイトからの追加で紹介しています。
(now.json で指定して使用できるかは公開されていません)

独自ドメインの設定

ここでは □□□.com が公開ドメイン名とします。もちろん .com 以外も使用できます。

now.json の alias、または ZEIT Web サイトの Project 内 Domains では
独自ドメインを完全表記して下さい。now.json の場合は次のとおりです。

{
  "version": 2,
  "name": "●●●",
  "alias": "□□□.com"
}

www. あり・なし で alias を複数指定できます。
また、複数指定は異なるドメインや ●●●.now.sh でも可能です。
例えば 1 プロジェクトに複数のドメインを割り当て、
動的ファイル側でドメイン別に処理する事ができます。

{
  "version": 2,
  "name": "●●●",
  "alias": ["□□□.com", "www.□□□.com"]
}

しかし、この場合は www. あり・なし で同じ動作をする事になり、
検索結果で意図しない URL 検出をする可能性があります。
そこで、□□□.com と www.□□□.com で別々に作成し、
片方をもう片方へ転送するようにするのがおすすめです。
www.□□□.com から □□□.com へ転送するようにするのは次の now.json です。
これと空のファイル index.html などを入れておいたものを now --prod します。

{
  "version": 2,
  "name": "●●●",
  "alias": "www.□□□.com",
  "routes": [
    { "src": "/(.*)", "status": 301, "headers": { "Location": "https://□□□.com/$1" } }
  ]
}

独自ドメインの SSL 証明書

デフォルトでは独自ドメインも Let’s Encrypt による SSL 証明書で SSL が有効になります。
(ZEIT は Let’s Encrypt のスポンサーになっています)

Automatic SSL with Now and Let’s Encrypt

ZEIT の DNS を使用する状態でドメインを追加した場合、
Now はワイルドカード証明書を発行するため、
www はもちろん、任意のサブドメインもそのまま有効です。

サブドメインを追加する場合はサブドメインの証明書で発行されますが、
ドメインの所有者認証を TXT ゾーンで行った後、
サブドメイン別で証明書を発行します。

ZEIT Web サイトの Dashboard 内 Certs から ISSUE で任意に証明書を発行できますが、
この時一度にサブドメインを 5 つまで含めた証明書を発行できます。
また *.□□□.com とワイルドカード指定での証明書も発行可能です。
ただしサブドメインの証明書はそれが Now で公開されている場合、
ワイルドカード証明書は ZEIT World DNS を使用している場合でないと
証明書を更新する事ができません。(Renew の YES・NO で判断できます)
Now の運用状態に合わせて SSL 証明書を発行するようにして下さい。

必要な場合は独自で申請して発行した証明書を使用する事も可能です。
ZEIT Web サイト Certs の UPLOAD、または now certs issue コマンドを使用します。

now certs issue --crt 証明書.crt --key 公開鍵.key --ca 中間証明書.crt □□□.com

独自ドメインの購入

ZEIT の Web サイト上から独自ドメインを購入する事ができます。
WHOIS は ZEIT が名義代行可能。Now で素早く公開でき、
ZEIT の DNS によって他のサービスへも割り当てが可能です。

Find your perfect domain | ZEIT

入力フォームに入れると登録可能なドメインを表示します。
IDN(日本語を含む国際ドメイン名)は Punycode(xn– はじまりの英数)で入力してみて下さい。
購入可能な場合価格が表示されます。プレミアムドメインも対応しています。
ZEIT では世界の人が自由に登録できるドメインを扱っています。
従って日本の住所が必要になる .jp ドメインは扱っていません。
(日本のドメイン業者に .jp ドメインを管理したまま、Now を使用する事は可能です)

Now CLI も独自ドメインの購入に対応しています。

now domain buy ○○○.com

ドメイン情報を入力せずに登録する状態となるため、
ドメイン情報は ZEIT、更に WHOIS プライバシー(名義代行)の状態で
登録を行っているようです。
個人利用ではこれでも問題ありませんが、
会社向けは WHOIS で実態証明をする必要があるケースがあり
(例えば実在証明を行う SSL サーバ証明書)
その場合 ZEIT Web サイトや Now での登録をおすすめしません。
他のサービスに移管(transfer)する必要がある場合は
ZEIT へ英語での問い合わせを要する点にご注意下さい。

独自ドメインの移管(Transfer)

2019年2月より、他で管理している独自ドメインを ZEIT に移管(Transfer)して
使用する事もできるようになりました。

now domains transfer-in ◯◯◯.com

ZEIT の Web サイトより Dashboards 内の Domains からも手続きできます。

現在管理されているドメイン管理業者でゾーンファイルが提供されている場合は
これを ZEIT World DNS へ反映できます。(ゾーンファイルは BIND named 互換)
これによりネームサーバに設定されているゾーンの状態は維持できます。
完全に Now へ切り替えるのが目的であれば、この手順は不要です。

now dns import ◯◯◯.com ゾーンファイル

Announcing ‘transfer-in’ for Domains


ネームサーバ管理

Now に独自ドメインを登録する場合はネームサーバ ZEIT World DNS を設定しますが、
これにより now dns コマンドでネームサーバを管理できます。

DNS Management

ZEIT Web サイト上ではネームサーバ管理できませんが、Events に実行した状況は一覧されます。

独自ドメインの Web サイトを Now で公開した段階で
サブドメインは *(ワイルドカード・すべて)で Now を参照するように設定されます。
また SSL 証明書も * になっています。
そのため、すでに ZEIT World DNS と Now で管理している独自ドメインへ
新たにサブドメインを追加して公開する場合、ネームサーバの操作は不要で、
now --prod(GitHub への git push)を行うだけです。

なお、TXT レコードで追加した独自ドメインでも
予めレコードを追加してから、ネームサーバを変更できるように
now dns での操作を行う事ができるようになっています。
これにより他のサーバで運用している場合でも、
サーバ参照を止める事なく、Now へ移行する事が可能です。

レコードの追加

now dns add ドメイン名 サブドメイン レコードタイプ 値 [MX 優先度]

ドメイン名 は Now に登録しているドメイン名です。

サブドメイン を付けないドメイン名そのものに対して設定をする場合は @ を使用します。
ただし Windows は @ だとエラーになります。”@” として下さい。

レコードタイプ は次のレコードに対応しています。

は A や AAAA だと IP アドレス、ALIAS・CNAME・MX は ホスト名などになるでしょう。
ALIAS・CNAME 指定の際、末尾 . は不要です。
特殊記号や空白を含む値は “~” または ‘~’ で囲んで下さい。
TXT は通常 “~” を付けますが “~” を付けない場合でも Now が自動付加します。
しかし、SPF・DKIM は空白・記号を含むため、”~” を付ける事を慣習的にしておくと無難です。

now dns add domain.ext sub A 123.124.125.126

Now 登録ドメイン domain.ext に sub.domains.ext として
IP アドレス 123.124.125.126 を割り当てます。(A)

now dns add domain.ext sub CNAME alias.domain-name.ext

Now 登録ドメイン domain.ext に sub.domain.ext として
alias.domain-name.ext の IP アドレスを参照させます。(CNAME)

now dns add domain.ext @ MX mail.server.ex.jp 10

Now 登録ドメイン domain.ext のメールサーバとして
mail.server.ex.jp の IP アドレスを優先度 10 で参照させます。
Windows は @ だとエラーになります。”@” と “” で囲って下さい。(MX)

now dns add domain.ext @ TXT "v=spf1 ip4:123.45.67.89 include:mail.server.ex.jp -all"

Now 登録ドメイン ~@domain.ext のメールアドレスは
IP アドレス 123.45.67.89 または外部メールサーバ mail.server.ex.jp から送られ、
他はすべて拒否させます。通常 TXT の値は “” で囲って下さい。(TXT・SPF)

now dns add domain.ext mailo._domainkey TXT "k=rsa; p=MIad~(長い文字列)~8AsAB"

mailo._domainkey.domain.ext に公開キーを設定します。(TXT・DKIM)

now dns add domain.ext sub CAA '0 issue "comodoca.com"'

sub.domain.ext で使用する SSL サーバ証明書を CODOMO 発行の証明書に限定します。(CAA)

レコードの一覧表示

now dns ls ドメイン名

ドメイン名で設定されているレコードを表示します。
now dns add で追加しているレコードは一番左に ID が表示されます。
それ以外のレコードは Now 側で設定されたレコードです。

レコードの削除

now dns rm ID

now dns ls で表示された ID を指定してレコードの削除を行います。

サーバによってはサーバを分散させるため、
一つのサブドメインで複数の IP アドレスを設定する必要がありますが、
now dns add でその項目をすべて追加して構いません。
(すでに存在していても、それを変更・削除するわけではなく、必ず追加されます)
そのため、設定を変える場合は now dns add でレコードを追加し、
古いレコードを now dns rm で消す必要があります。
(add→rm の順にする事で、サーバの参照ができなくなる恐れがなくなります)

サブドメインで外部サービスを使用する場合

現在は常時 SSL が当たり前となってきていますが、
サブドメインを外部サービスで参照するよう設定した場合、
そのサブドメインに対する SSL 証明書は別途発行が必要になります。

別の Web サービスで設定している場合は
そのサービスが自動的に発行する場合がありますが、
証明書のインストール手段のみが提供されている場合、
または専用サーバ・VPS・自宅サーバなどを使用する場合は
自分で証明書を発行して下さい。

ZEIT・Now では Let’s Encrypt を独自ドメインに使用しますが、
サブドメインを別途発行するのは問題なく行えます。

運営者がサーバ向けに Let’s Encrypt を手動発行したブログ記事があります。
こちらも参考にして下さい。

タグ ssl | ふうせん🎈 Fu-sen.

もちろん有償の証明書発行も可能ですが、現実的ではないかもしれません。


プロジェクト

2019年1月よりプロジェクト単位での管理が改善されました。

Projects on Now

ZEIT サイトからログインした時の Dashboard と Projects が変化しています。
Projects より生成されているアドレスが一覧され、
(もちろん GitHub 連携も含まれます。アイコンに GitHub マークが付いています)
必要な場合はここからアドレスの割り当てや削除が可能になっています。

Now CLI でも now projects が加わりました。

now projects ls

で一覧できます。プロジェクト名は now.json での name に指定している値、
なければ上層のフォルダ名や GitHub のプロジェクト名になります。

不要になったプロジェクト ●●● は詳細表示時の Settings または

now projects rm ●●●

で削除できます。
日本語が含まれている場合、Web 上だと詳細表示に問題が発生する事を確認していますので、
now projects rm で削除して下さい。

now コマンドを実行する前にプロジェクトを予め生成しておく事もできます。

now projects add ●●●

複数アカウントの切り替え

複数アカウントを登録する事ができます。
ZEIT はチームによる作成を想定していますが、
個人的に複数アカウントも可能で、それを ZEIT も認めています。
(例えば趣味と仕事用でアカウントを分ける)

now switch によってアカウントの切り替えが可能です。

now switch アカウント名

ここでのアカウント名は ユーザー・チームの ID、ユーザー・チーム名、
ユーザー名のメールアドレスが有効です。

ZEIT Web サイトや Now Desktop でも切り替えに対応しています。

Users and Teams

更に Now CLI では2019年3月より、
一時的な切り替えとして now –scope も増えました。
この実行に限りアカウントを切り替えて実行します。

now --scape アカウント名

また、scope の値を now.json に入れる事もできます。
これで now コマンドに設定せず、固定アカウントでデプロイできます。
ただし、now.json の設定はセキュリティ上 GitHub・GitLab 連携では無効になっています。

{
  "scope": "アカウント名"
}

Introducing Scope


公開状態の確認と無駄な URL の削除

古い URL はしばらく残しておき、
更新した後の意図しない動作を戻して改善する事ができます。
時間の経過と共に使われていない古い URL は削除されますが、
古い URL が完全に不要な場合は手動で削除する事も可能です。

now remove ●●● --safe --yes

now rm ●●● –safe –yes でも削除できます。

ZEIT の Web サイトより Dashboard 内 Projects で
一覧を見ながら古い URL を削除する事も可能です。
(2019年1月17日より Deahboard と Projects の表示が変わりました)

固定アドレス ○○○.now.sh や独自ドメインで割り当てていた
唯一の URL が削除された場合は、参照対象から解除となります。
○○○.now.sh はこの段階で解放され、他の人が割り当て可能になります。


Q&A

無料ではどこまで使用できますか?

2018年11月に Version 2 の価格体系が追加されました。

Pricing

項目 無料の上限
帯域幅 月 100GB
now 実行時のビルド 月 1000 回
動的ファイルの実行・変換 日 1000 回
ログ 日 1000 回
ストレージ容量 100GB
1ファイルの最大サイズ 100MB

「now 実行時のビルド」は now コマンドを実行し、
now.json の build で定義されているファイル群が検出された 1 組がビルド 1 回です。
変換を行わない @now/static はこの回数に含みません。

静的ファイルでの利用だと無料で使用できる範囲が広いですが、
動的に生成を行う場合は回数に気をつけないと使い切ってしまうでしょう。

また、価格一覧にはありませんが、
1 時間で 32 回、24 時間で 100 回のビルド制限があります。
有料プランの場合 1 時間 512 回・24 時間 3000 回の制限になっています。

Builds 内 Build Sources Limit | ZEIT Documentation

静的ファイルで now コマンドを手動実行している場合はあまり遭遇しませんが、
GitHub への git push(コミット)をしていたり、
now コマンドを自動実行している場合は遭遇しやすくなります。
軽微な修正だけで過度に now コマンドを実行させないよう考慮すべきです。

なお、他のところで「デプロイ回数が月 20 回まで」といった記載がありますが、これは古い情報です。

登録しようとしましたが、拒否されました。

その時に表示されている ZEIT のメールアドレスへ連絡してみて下さい。
一部のメールアドレスで発生しているようです。
ただし英語で連絡する必要があるでしょう。

後記にもありますが、一度退会したメールアドレス・連携していた GitHub も
通常手順では登録できなくなります。

~.now.sh は Google で表示されますか?

now.sh は Public Suffix List に登録されています。

Public Suffix List

そのため、Google などの検索エンジンでは独自ドメイン同等に
~.now.sh を独立したサイトとして扱ってくれる事が多いです。

ZEIT は ~.now.sh にロボットの参照制限を行っていません。
従って ~.now.sh のサイト公開も Google などで表示対象になります。
これは now コマンドで生成された一時的なアドレスも含まれます。

site:.now.sh 検索結果 | Google

Google などに公開されるのが嬉しくない場合は、
robots.txt や meta タグを用いてインデックスされないようにして下さい。

Not Found で任意の HTML を表示できますか?

通常は Now 固定の表示になります。
ただし、実行環境によって HTML・JSON・テキスト 表示の変化を行います。

Status Codes

routes を用いて動的ファイルで処理する事は可能です。

動的ファイルを実行できますか?

2018年11月よりビルド機能が追加され、Node.js・Next.js・Go・PHP・Python などが使用できるようになりました。
Markdown などのファイル変換も含まれ、動的ファイルと同じビルドの対象となります。

Bulders/Overview

公式サイト上ではビルド処理を行うシステムを λ(lambda=ラムダ)と表記しています。

2019年3月2日より、GitHub リポジトリへデモプロジェクトを生成する仕組みが加わりました。

Create a new project

使用する場合は now.json に builds プロパティの追記が必要です。
例えば html は変換なく表示、.php は PHP 動作を有効にする場合、
下層のフォルダがない前提だと、now.json は次の記載となります。

{
  "version": 2,
  "name": "●●●",
  "alias": "●●●",
  "builds": [
    { "src": "*.html", "use": "@now/static" },
    { "src": "*.php", "use": "@now/php" }
  ]
}

変換しないファイルはすべて @now/static で明示する必要があります。
Web サイトとしての使用であれば、.jpg・.png・.css・.js、
更に favicon.ico や robots.txt など、表示したいファイルはすべて入れる必要があります。
また下層フォルダがある場合は bulids の src にフォルダを含めて明示が必要です。
これは意図しないファイルの公開・動作を避けるため、このような仕様になっています。
HTML などと動的ファイルは異なる ●●●.now.sh・独自ドメイン を用いるのも手でしょう。
now コマンドや一覧表示で動的・変換ファイルの対象に λ マークが付きます。

上の項目にもあるように、無料で使用できる回数制限にご注意下さい。

なお、Spectrum Chat の反応を見る限り、
現在 Now の利用者はほとんど動的ファイルの実行を目的に使用しているようです。

実際の表示をローカルで確認できますか?

now dev を用いてローカル環境でサーバを起動し、動作を確認できるようになりました。
ブログ公開は 2019年5月1日から、Now CLI は 15.0.0 より対応しています。

Introducing now dev – Serverless, on localhost

now.json で builds を含めていない場合は動作に問題がありますが、
そもそも now dev で確認する必要がない環境なので、直接ブラウザでファイルを参照したり、
静的ファイルジェネレータ(Hugo など)を使用している場合は
こちらのサーバ・プレビュー機能を使用して下さい。

Docker を使用できるようですが?

Now v1 で Serverless Docker Beta を用いた動作手段が存在していましたが、
数ヶ月後に公開された、現行ではメインとなっている Now v2 では Docker をサポートしていません。
Now v1 は提供終了が検討されているため、使用をおすすめしません。

転送処理の良い手段は?

new.jsonroutes を加える事で実現できます。
次の例では、https://●●●.now.sh/~ や https://●●●(独自ドメイン)/~ を
HTTP ステータスコード 301 を用いてすべて https://jpn.now.sh/~ へ転送します。

{
  "version": 2,
  "name": "●●●",
  "alias": "●●●",
  "routes": [
    { "src": "/(.*)", "status": 301, "headers": { "Location": "https://jpn.now.sh/$1" } }
  ]
}

実際のファイルがあっても実行されません。routes が優先されます。
そのため、上の場合 now.json 以外のファイルは不要となりますが、
now.json ファイルしかない状態だと now コマンドでデプロイに問題が発生します。
何でも良いのでファイルを一つ生成しておきます。

zeit/now-examples / redirect | GitHub

Rewrite は可能ですか?

上の項目で紹介している now.jsonroutes を用いる方法で
Rewrite 相当の実現が可能になっています。

routes | Deployment Configuration (now.json)

SSL に対応していますか?

○○○.now.sh・独自ドメイン共に https(常時 SSL)の状態で公開されます。
○○○.now.sh はワイルドカード(*.now.sh)で SSL 証明書が発行されていますが、
独自ドメインを使用する場合、now --prod の実行で自動的に証明書発行が行われます。
(無料で発行できる Let’s Encrypt が採用されています)
そのため証明書の手続きなく、すぐに SSL で参照可能です。
独自ドメインでは自分で発行した SSL 証明書を適用する事もできます。

逆にいうと、http での公開は行えません。

無料提供されている EU.org は使用できますか?

~.eu.org や ~.jp.eu.org が使用可能な事を運営者が確認しています。

EU.org https://nic.eu.org/

EU.org は登録申請の段階でネームサーバを設定する必要があります。
しかし Now は now --prod の段階でドメインの所有者認証を実施するため、
一度ネームサーバサービスなどに追加して、登録申請し、
承認・登録された後に Now へ追加する必要があります。

EU.org 管理のサブドメインは Public Suffix List に登録してあるため、
EU.org で登録したサブドメインが独自ドメインのような扱いとなります。
通常はネームサーバを ZEIT の DNS に設定して Now を使用可能です。

EU.org については別途サイトを構築してあります。こちらをご参照下さい。

EU.org をつかう。

IDN・国際化ドメイン名は使用できますか?

●●●.now.sh・独自ドメイン共に日本語ドメインを含む IDN・国際化ドメイン名を使用できます。
正式には ●●●.now.sh はサブドメインで日本語なども使用できる事になります。
ただし Punecode(xn– ではじまる英数)に変換して now.json で割り当てて下さい。
ZEIT サイト Dashboard 内の一覧も Punycode 表示になります。

https://サンプル.now.sh/
fu-sen/xn–vck8cuc4a.now.sh | GitHub - サンプル.now.sh の構成ファイル

ドメインを購入する now domains buy は国際化ドメインが失敗するようです。
未確認ですが now domains transfer-in も失敗するかもしれません。
他の業者からドメインを登録した上で、Now に適用して下さい。

削除した独自ドメインが一覧に残っています

SSL 証明書を発行している影響で、独自ドメインは管理を外してもしばらく表示されます。
証明書の期限切れで一覧がなくなります。証明書(Let’s Encrypt)は 3 ヶ月おきです。
ドメインを抹消済みであるなど、すぐに一覧から削除したい場合は
now domains remove ドメイン名 で削除できます。

サーバはどこにありますか?

ネームサーバは日本・東京を含む世界中に設置されています。

Network

2019年3月より CDN も日本・東京が加わりました。アジア初設置です。
Now の CDN は 5 ヶ所目でした。その後も CDN を増やしています。
これにより無料プランでも特に日本からのアクセスは快適なレスポンスを期待できます。
(Now v2 のみ対象で、近く終了予定の Now v1 では使用できません)
Now CLI・Now Desktop で日本から使用する場合は特に指定する事なく、
東京 CDN を使用するのを運営者が確認できています。
GitHub・GitLab は sfo1(アメリカ・サンフランシスコ)になります。
静的ファイルはこれらに関係なく、近くの CDN を使用するため、
日本からは通常東京 CDN を参照します。
動的ファイルを使用する場合、now.json などで region を指定ができ、
hnd1 で東京 CDN になります。日本向けはこれを指定すると良いでしょう。
ちなみに bru1(ベルギー・ブリュッセル)の Routing を除き、
Aamazon Web Service を使用しているようです。

Now in Tokyo
ZEIT Now (now.sh) が東京に CDN を設置。| ふうせん🎈 Fu-sen.

CDN の一覧はこちらに記載してあります。

Regions and Providers

Cloudflare のエラーが表示されました。

Cloudflare 側の DNS で ☁ をオレンジ(Cloudflare を有効)にした状態で
ZEIT Now から進めた場合、ZEIT Now 側で証明書の取得に失敗し、
525 Origin SSL Handshake Error などのエラーを表示させる場合があります。
Cloudflare でドメインを管理し続ける場合、Now に割り当てるドメイン・サブドメインは
必ず ☁ をグレー(Cloudflare 無効)にして追加し、使用して下さい。

チャットで多数報告があり、運営者が確認したところ、
この問題を再現できました。その後次の手順で改善できています。

  1. Cloudflare 側で該当する ☁ をグレーに変更して Cloudflare を無効化し、
    その際に TTL を 2 minutes にして、すぐに反映されるようにします。
  2. 数分置いた後(これ重要です)、ZEIT Web サイトの Certs より
    該当の証明書を一度削除し、再度発行します。
    改めて Cloudflare の DNS へ TXT ゾーンを設定して下さい。(従来のものを変更)
  3. この段階でブラウザで参照すると、エラーメッセージは Now からのエラーに変化します。
    (Now からのエラーは白背景・黒文字で中央に表示されるシンプルな表示です。
  4. 改めて Now 側で now --prod を実行し、デプロイして下さい。
    ファイルを変更するか、デプロイを削除してデプロイしなおす必要があります。

なお、近く CDN 機能を更新する予定があるようです。
これは Cloudflare 関連も含んでいると ZEIT メンバーからの予告があります。

特定の now コマンドが実行できません。

Now CLI の新機能に関連したコマンドはバージョンアップにより追加されています。

Now Desktop では通常自動的に更新されますが、
更新されていない場合は自動更新を無効にしているかもしれません。
メニューを確認して下さい。

実行ファイルを直接ダウンロードしていたり、npm などでインストールしている場合は
Now CLI を更新して下さい。(下項目)

now コマンドの更新はどうすれば良いですか?

now コマンドを実行した時に次のコマンドが表示されているでしょう。

UPDATE AVAILABLE The latest version of Now CLI is ●.●.●

Now CLI をインストールした場合は、インストールと同じ手順で更新が行えます。

npm install -g now

Now Desktop は自動更新されます。自動更新の有無はメニューにあります。

Updating Now CLI

Now CLI が更新されません

過去 Now Desktop をインストールしていた環境で、Now Desktop を削除し、
Now CLI をインストールした場合、Now Desktop がインストールした Now CLI が残り、
その Now CLI が優先されるため、更新に問題が生じる場合があります。
Now CLI は同じ動きでも、Now Desktop・npm・yarn で異なる場所にインストールされます。

npm install -g now を行っても旧バージョンのままになっている場合、
一度 npm uninstall -g now で Now CLI を削除し、
Now Desktop をインストールして、こちらから Now CLI を更新させて下さい。
これで最新版に更新できます。
そのまま使用もできますが、必要な場合は Now Desktop を削除し、
npm install -g now で Now CLI に戻して下さい。

運営者が Windows 10 で経験しています。
バグ報告済みで、その後詳細な状況も確認できています。
この詳細が把握できる場合は、
手動で該当の Now CLI ファイルを削除して一時的に改善させる事も可能です。

Now CLI is not updated to 13.0.0 due to installing Now Desktop in the past. #1809 | GitHub zeit/now-cli issues

Now について分からない事があります

英語が可能であれば、チャットへ入って質問してみるのがおすすめです。
Spectrum を採用しています。けっこう見ている人がいるので、返信もはやいです。
ただし、ZEIT メンバーは通常日本時間の夜~朝に活動しています。
ZEIT として存在しているので、Now のところに入って質問して下さい。

Join ▲ZEIT on Spectrum

Spectrum Chat では実例もよく出てくるので、
Now の新たな活用法や設定などのヒントも見つかるでしょう。

動作・記載がおかしい部分を発見しました

正常に使えていたのに、急に動作がおかしくなった場合は
ZEIT Status を確認してみて下さい。
Now v1 と Now v2 は異なるサーバで動作している事にご注意下さい。

ZEIT Status

明らかに Now CLI や Now Desktop に不具合がある場合は
GitHub で該当アプリの issue を確認してみて下さい。

ZEIT | GitHub

ドキュメントの記載ミスなどについては
ログインしている場合、ZEIT Web サイト右上にある FEEDBACK… より
チームへメッセージを送れます。英語で送信する必要があります。
場合によっては担当者からメールで返信されてきます。

ちなみに運営者は不具合報告を何度か行っていますが、
はやいと数時間で不具合修正をしてくれます。ZEIT メンバーは素晴らしいです。

アカウントを削除したいのですが……

Accouns Seetings に Delete Account がありますが、
一度削除するとそのメールアドレスで再度登録する事ができなくなります。
英語で問い合わせてアカウントを復旧してもらう必要があります。(運営者はこれを経験しています)
なので、Now を使う用途がなくなっている場合でもアカウントは残しておいた方が良いでしょう。

Surge との違いは?

●●●.now.sh か ●●●.surge.sh かで悩んでいる場合、
Google などの検索エンジンで表示される
不特定多数向けに公開する Web サイトであれば ●●●.now.sh を使用すべきです。
●●●.surge.sh ではクローラー(検索エンジンロボット)の参照を完全に禁じています。
そのため、検索エンジンの結果へ反映されない、または検索結果に出てこない問題が生じます。
(Surge で独自ドメインを使用する場合はこの問題が発生しません)
●●●.now.sh はこの問題がなく、安心して公開する Web サイトに使用できます。

また、次の点は Now が Surge よりも有利な点です。