はじめに
基本的には 「Git LFS × AWS S3」で大容量ファイルを構成管理する - 電通総研 テックブログ と同じ内容になりますが、普段AWSではなくCloudflareをよく使うため、Cloudflare R2に向き先を変えて同様のことを実現してみました。
UnityのプロジェクトをGItHubで管理する場合、サイズが大きいアセットを管理するためにGit LFSが必要になります。
しかしGitHub公式が提供しているGit LFSは無料枠が小さく追加コストがすぐにかかるため、バックエンドをCloudflare R2に切り替えてコストを抑える方法を紹介します。
ちなみにGitHubが提供するLFSを使う場合は、次のドキュメントに制限などが記載されているため参考にしてください。
About Git Large File Storage - GitHub Docs
環境
- Windows 11 Home
- PowerShell 7.x
- Scoop
- WinGet
- Unity 6.x
準備
Git/Git LFS/OpenSSLのインストール
scoop bucket add main
scoop install main/git
scoop install main/git-lfs
scoop install main/openssl
各種コマンドがインストールされたことを次のコマンドで確認。
git -v
git-lfs -v
openssl -v
Dockerのインストール
winget install -e --id Docker.DockerDesktop
DockerとDocker Composeがインストールされたことを次のコマンドで確認。
docker -v
docker compose version
Cloudflare R2のセットアップ
Cloudflareのダッシュボード上でR2のバケットを作成します。
ビルド > ストレージとデータベース > R2 オブジェクトストレージ > 概要を開き、バケットを作成します。

ここではgit-lfsというバケットを作成しておきます。位置情報やデフォルトのストレージクラスの設定はそのままで構いません。

Rudolfsのセットアップ
リポジトリをクローンします。ここではgit-lfsというディレクトリ名に変えておきます。
git clone https://github.com/jasonwhite/rudolfs.git git-lfs
その後Cloudflare R2のエンドポイントを指定できるようにするために、git-lfs/docker-compose.ymlのEnvironmentにAWS_S3_ENDPOINTを追記しておきます。
# docker-compose.yml
...
environment:
- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
- AWS_DEFAULT_REGION
- AWS_S3_ENDPOINT # <- 追記する
- LFS_ENCRYPTION_KEY
- LFS_S3_BUCKET
- LFS_MAX_CACHE_SIZE
...
環境変数の用意
クローンしたgit-lfsディレクトリの直下に.envを作成し、次の内容を記述。
AWS_ACCESS_KEY_ID=<トークンのアクセスキーID>
AWS_SECRET_ACCESS_KEY=<トークンのシークレットアクセスキー>
AWS_DEFAULT_REGION=auto
AWS_S3_ENDPOINT=https://<アカウントID>.r2.cloudflarestorage.com
LFS_ENCRYPTION_KEY=<openssl rand -hex 32>
LFS_S3_BUCKET=git-lfs
LFS_MAX_CACHE_SIZE=10GB
AWS_ACCESS_KEY_IDとAWS_SECRET_ACCESS_KEYに関しては Authentication にトークンの作成方法が載ってあるため、ドキュメントに従ってCloudflare R2のトークンを作成すると得られます。
アクセス許可は「オブジェクト読み取りと書き込み」を指定してください。
またアカウントIDは、CloudflareのダッシュボードのURL(https://dash.cloudflare.com/your-account-id/home/overview)のyour-account-idの値になります。
LFS_ENCRYPTION_KEYはシェルで次のコマンドを生成した値を記述してください。
openssl rand -hex 32
Rudolfsコンテナを起動
クローンしたgit-lfsディレクトリで次のコマンドでコンテナを起動。
docker compose up -d
Unityプロジェクトのセットアップ
ここからはUnityのセットアップになります。
Unityプロジェクトにディレクトリ移動したうえで操作してください。
Git/Git LFSを有効化
プロジェクト直下で次のコマンドを実行する。
git init
git lfs install
Git LFS関連ファイルの用意
.lfsconfig
以下の内容でプロジェクト直下に配置する。
[lfs]
url = "http://localhost:8081/api/my-org/my-repo"
my-orgやmy-repoはUnityプロジェクトを管理するGitHubのリポジトリ名に変えます。
例えば、seiya8bit/tetrisというリポジトリの場合は次のようになります。
[lfs]
url = "http://localhost:8081/api/seiya8bit/tetris"
.gitattributes
.gitattributesというファイルをプロジェクトの直下に作成し、以下の内容に変更。
gitattributes/gitattributes/blob/master/Unity.gitattributes
.gitignore
.gitignoreというファイルをプロジェクトの直下に作成し、以下の内容に変更。
github/gitignore/blob/main/Unity.gitignore
任意の設定
Gitのグローバル設定を変更して処理を高速化。
# Increase the number of worker threads
git config --global lfs.concurrenttransfers 64
# Use a global LFS cache to make re-cloning faster
git config --global lfs.storage ~/.cache/lfs