Git LFS + Cloudflare R2でUnityプロジェクトをGitHubで管理する

Mar 29, 2026|ja|
UnityGitバージョン管理

はじめに

基本的には 「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 オブジェクトストレージ > 概要を開き、バケットを作成します。 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