Storj DCSで静的Webサイトをホストしてみる

2022.05.09

Amazon S3でもできる静的Webサイトのホスティングと同じようなことがStorj DCSを使っても可能です。

独自ドメインも使えるので、今回はWebサイトのホスティング、そして画像や動画などのアセットなどをStorj DCSで配信する設定を試していきます。

前提

DCSのクライアントツール Uplink CLI が必要です。

以前の記事でも記載してますので、ご参照いただければと。

アップロードはWebのコンソールからできますが、静的Webサイトのホスティングを設定するためには現状ではこのUplink CLIからしかできないようです。

独自ドメインを使うので、もう一つ必要なのは、DNSプロバイダーです。 本記事ではRoute 53を利用します。

設定

ファイルアップロード

静的WebサイトのHTMLファイルを作成し、Storj DCSにアップロードします。

$ uplink cp ~/index.html sj://<<DCSのバケット名>>/<<フォルダ名>>

共有設定

Webサイト/サブドメインのルートとなるバケットまたはオブジェクトプレフィックスを共有します。

uplinkのshareコマンドを使うことで可能です。

uplink share --dns <<独自ドメイン名>> sj://<<DCSのバケット名>>/<<prefix>> --base-url <<linkshare url>>

dnsオプションで指定したドメインで共有できますが、これは全て読み取り専用として共有されます。

base-urlオプションは優先リンクシェアリージョンを指定できます。 デフォルトは、https://link.us1.storjshare.io です。

リージョン URL
アジア https://link.ap1.storjshare.io
EU https://link.eu1.storjshare.io
US https://link.us1.storjshare.io

共有のコマンドを実行すると、3つのDNSレコードを作成するために必要な情報を含むゾーンファイルを出力します。

例)

$ORIGIN example.com.
$TTL    3600
<hostname>        IN  CNAME   link.<region>.storjshare.io.
txt-<hostname>    IN  TXT     storj-root:<bucket>/<prefix>
txt-<hostname>    IN  TXT     storj-access:<access key>

この出力された情報をDNSプロバイダーで設定していきます。

DNS設定

コマンドを実行して出力されたCNAMEとTXTレコードを登録する必要があります。

CNAME

生成されたゾーンファイルのCNAMEをターゲット名として使用して、ホスト名にCNAMEレコードを作成します

TXT(ルートパス)

ルートドメインを解決するバケットまたはオブジェクトプレフィックスキー(およびindex.htmlファイルを含む)を作成します。

TXT(アクセスキー)

ルートパスへの読み取り専用およびパブリックアクセスキーを作成します

確認

digコマンドを使って設定したDNSレコードが登録されているか確認しておきます。

※ ANSWER SECTIONのCNAME,TXT

$ dig @1.1.1.1 <hostname>.<domain>
$ dig @1.1.1.1 txt-<hostname>.<domain> TXT

アクセス確認

DNSレコードが適切に設定されていると、httpでアクセスできるようになっています。

http://<hostname>.<domain> でブラウザでページが表示されるか確認します。

※ index.htmlがルートドメインを解決するバケットまたはオブジェクトプレフィックスキーにあると、index.htmlを省略してアクセスできます

独自ドメインの場合は、Storj DCSだけではhttpsアクセスできないので、Fastly, Cloudflareなどを使ってHTTPSプロキシを行なってサイトを保護する必要が出てくるかと思います。

404ページ

uplink share で設定した共有プレフィックスのルートに、404.htmlという名前のファイルをアップロードしておくことで独自のカスタマイズされた404エラーページを表示させることができます。