相変わらずFFTrans Neuの開発をやっているわけですが、2.4.0でモデルダウンロードをCloudflare R2に更新しました。
これまではHugging Faceから直接落としていたのですが、どうしても時間帯や国などで速度が出なかったり不安定なことがあります。
バージョン管理も相手任せですから、ここはやはりちゃんと自分で管理できるようにしたほうが良いなと。
Cloudflare R2はダウンロードだけなら無料ですし、ストレージも10GBまでは無料。
アップロードもある程度までなら費用がかかりませんし。
今回のような開発向けだけでなく、ブログ運用で大きめのファイルを配布したいケースなどにも重宝するはずです。
ざっくりですけど手順をメモがてら書いておこうかなと。
まずはアカウントを作りますが、R2は一応クレジットカードの登録が必要です。
そこは特に難しい部分はないので割愛しますね。
次にメインのドメイン(今回だとsymphonics.biz)をCloudflareに移します。
このドメイン、これまではXServerで運用していて、ドメイン自体もXServer Domainで取得したものです。
まずは「サイトを追加」で「ドメインを接続」を選び、ドメイン名を入力します。
細かいオプションはそのままで大丈夫みたいです。
次はプラン選択で今回は「無料プラン」を選びます。
次に「DNS レコードを確認する」となりますので、ここもオプションはそのままで「アクティベーションに進む」を選び、そこで表示されるネームサーバ2つをメモします。
このネームサーバをXServerのものと置き換えることでこのドメインをCloudflare R2経由とするわけです。
ここからちょっとハマったのですが、ネームサーバの変更はレンタルサーバとしてのXServerのほうではなく、ドメインのXServer Domainのほうで置き換える必要があります。
冷静に考えればたしかにその通りなのですけど、それに気づかずDNSが浸透してないのかと1時間ほど待ってしまいました。
次に「R2 オブジェクトストレージ」から「バケット」を作成します。
バケットの名前を適当につけて、「バケットを作成」を押すだけです。
ここも細かいオプションは変更は不要です。
これでもうファイルはアップロードできるわけですが、ブラウザでアップロードできるのはごく小さなファイルに限られます。
それより大きいファイルはツールでアップロードする必要があり、今回はrcloneを使うことにしました。
rcloneのインストールは「brew install rclone」だけですので簡単です。
利用にはUser APIトークンが必要なので、「R2 オブジェクトストレージ」画面の「APIトークン」の部分の「管理」から「ユーザー API トークン」を作成します。
権限はファイル転送ならばら「オブジェクト読み取りと書き込み」くらいで良いでしょう。
なお、「アカウント API トークン」ではないのでご注意ください。
ここでできたトークンの値、アクセスキーID、シークレットアクセスキー、そしてエンドポイントをメモします。
シークレットアクセスキーはここでしか表示されないので必ずメモを忘れずに。
なお、このAPIはAWS互換みたいです。
あとはこれらを「rclone config」で指示に従って設定していくだけで、そこまで終わったら、「rclone copy」コマンドでアップロードができるはずです。
とりあえず作成したバケットの画面の「設定」から「パブリック開発 URL」を生成して、アップロードしたファイルにブラウザからアクセスできることを確認しておくと良いでしょう。
もっとお手軽にはCyberduckを使うのも良いでしょう。
接続種別に「Amazon S3」を選び、サーバの項目に作ったストレージの「S3 API」から「http://」を外した「乱数.r2.cloudflarestorage.com」を、あとはアクセスキーID、シークレットアクセスキーを入力し、パスにバケット名を指定すればOKです。
そして最後にサブドメインを割り当てます。
これもバケットの画面の「設定」から「カスタム ドメイン」で追加を選べば作成できます。
サブドメイン(例えば「xxx.symphonics.biz」みたいな感じ)を入力して「ドメインに接続」で完成です。
しばらく待ってアクティブになれば、さきほどアップロードしたファイルが「https://xxx.symphonics…」という形でアクセスできるようになるはずです。
あとはおまけでキャッシュルールも追加しておきました。
モデルはそうそう変わるものでもないので7日間キャッシュされるようにし、他は弄らないことにしてあります。
「ドメイン」からCloudflareに置き換えたドメイン(今回ならsymphonics.biz)を選び、左のメニューから「Caching」、「Caching Rule」を選び、「ルールを作成」で追加します。
内容はルール名(任意)、カスタムフィルタ形式、「受信リクエストが一致する場合…」に「完全URI」の「ワイルドカード」で「https://xxx.symphonics.biz/*」といった具合に指定します。
今回は「キャッシュ制御ヘッダーを無視し、この TTL を使用します」として「入力有効期間(TTL)」を「7日間」としました。
以降はこれで順調に運用できていますが、不正アクセスっぽいbotのようなものが来ますのでそこはブロックを仕込みました。
ドメイン画面の左メニューから「セキュリティ」、「セキュリティルール」を選び、「ルールを作成」でIPアドレスをブロックした程度です。
これでAnalyticsを見て様子見し、それでもまだ色々来るようならUser Agentで弾くのも良いかもしれません。
正直、使い方は簡単とは言い難いですが、それを上回る性能と機能を提供してくれてありがたい限りです。
ちょっと画面が少なくてわかりづらいかと思いますが、そこはまた必要に応じて加筆できればと思っています。