# 開発環境のセットアップ
このガイドでは、BTCPay Server リポジトリへの今後の貢献に備えて、開発環境をセットアップする方法を説明します。開発を始めやすくするため、以下では初心者向けのさまざまなツールを使います。全体的なセットアップ手順を理解したら、使いやすいツールに置き換えて構いません。
タイポ修正や文言修正のような簡単なコード変更方法を探している場合は、簡略版チュートリアルの Write Software を参照してください。すでにローカル開発環境を用意している上級開発者は、LocalDevelopment のドキュメントに進んでください。
# 開発者向けリソース
# Windows セットアップ用ソフトウェア
このガイドを進めるために、以下のソフトウェアをインストールしてください。
- Visual Studio Community Edition (opens new window)
- .NET Core SDK 8.0+ (opens new window)
- Docker Desktop (opens new window)
- PowerShell(Windows OS に含まれています)
- GitBash (opens new window)
- GitHub Desktop (opens new window)
- www.Github.com アカウント (opens new window)(サインアップ)
注: このガイドは、各ソフトウェアを既定の場所にインストールしている前提です。フォルダ構成が異なる場合は、適宜読み替えてください。
# Git セットアップ
# BTCPay Server リポジトリをフォークする
- Web ブラウザを開き、www.Github.com のアカウントにログインします。
- BTCPay Server Repository (opens new window) に移動し、
Forkボタンを押して自分用の BTCPay Server リポジトリを GitHub 上に作成します。 - 続いて GitHub Desktop を開いてログインし、GitHub Desktop が www.Github.com アカウントと接続できるようにします。
# BTCPay Server リポジトリをクローンする
- GitHub Desktop で
Addボタンを使い、リポジトリをクローンするオプションを選びます。 - GitHub Desktop で www.Github.com の認証情報を使用している場合、先ほど www.Github.com でフォークした BTCPay Server リポジトリが表示されます。それを選び、下に表示されるローカルパスを確認してください。(既定では
C:\Users\SatoshisComputer\Documents\GitHub\btcpayserverのようなパスになります。以降これを clone local path と呼びます)その後クローンを実行します。 - GitHub Desktop 上で BTCPay Server リポジトリのクローンが完了し、master ブランチ 上にいる状態になります。
# 開発用フィーチャーブランチを作成する
- 次に、GitHub Desktop でコンピュータにクローンした BTCPay Server リポジトリを使う練習をします。
- 開発では、複数の機能を同時に進めることがあります。その場合、すべての変更を master ブランチに入れるのではなく、複数のフィーチャーブランチを作るのが一般的です。
- ここでは GitBash といくつかの Git コマンドを使うので、GitBash を開きます。(GitBash を使わず GitHub Desktop だけで進めたい場合は、そちらでブランチを作成しても構いません)
- GitBash ターミナルを開いたら、BTCPay Server リポジトリのクローン先ディレクトリに移動する必要があります。
- これを行うには、
cdコマンドで clone local path に移動します:$ cd Documents/Github/btcpayserver - BTCPay Server のクローンが
masterブランチにあることを確認できます。 - master ブランチを開発用に複製するため、次のコマンドを実行します:
$ git branch OurNewDevelopmentBranch - 現在のブランチ一覧を確認します:
$ git branch。masterとOurNewDevelopmentBranchが表示されます。 - Git では、フォークした BTCPay Server リポジトリ(クローン)のコピーを扱っています。ブランチ(クローンのコピー)を切り替えるときは、どのブランチに開発中の変更を紐づけるかを Git に伝える必要があります。次のコマンドでブランチを checkout します:
$ git checkout OurNewDevelopmentBranch - これで GitBash で
OurNewDevelopmentBranchに切り替わりました。 - GitHub Desktop を開くと、master ではなく
OurNewDevelopmentBranchにいることを確認できます。 - GitHub Desktop の上部メニューで
Repository > Show In Explorerをクリックすると、ファイルの場所を確認できます。
# ローカル BTCPay セットアップ
# Bitcoin Regtest ネットワークのセットアップ
- 次の手順に進む前に、Docker-Compose がインストールされていることを確認してください(Docker Desktop に含まれます)。PowerShell ターミナルを開き、clone local path から BTCPayServer.Tests ディレクトリへ移動します:
$ cd Documents/Github/btcpayserver/BTCPayServer.Tests - BTCPay Server.Tests プロジェクトには、プロジェクト依存サービスを起動し、ローカル Regtest ネットワークを作成するための Docker ファイルが含まれています。
- PowerShell で、次のコマンドを実行して Docker サービスを起動します:
docker-compose up dev(このコマンドは BTCPay Server.Tests ディレクトリ内で実行する必要があります)。 - PowerShell ターミナルには、最初に必要な Docker イメージの取得(pull)、その後コンテナのビルドが表示されます。ビルドが成功すると、すべてのコンテナが完了状態になります。

# ブラウザーモードでローカル BTCPay Server をビルドする
コーディングは行わず、インターフェース機能の検証用にローカル BTCPay Server だけを作成したい場合は、コマンドラインから起動できます。
Regtest ネットワーク の構築後、btcpayserver\BTCPayServer ディレクトリへ移動して次のコマンドを実行します。
dotnet run --launch-profile Bitcoin
新しいブラウザを開き、http://127.0.0.1:14142 (opens new window) にアクセスします。
# Visual Studio のセットアップ
- ファイルエクスプローラーで BTCPay Server リポジトリのフォルダを開きます。表示されているフォルダは開かずに、
btcpayserver.slnを探して右クリックし、Open with > Visual Studioを選択します。初めてこの種類のファイルを開く場合は、Open with > Choose another app ...から Visual Studio を選ぶ必要があるかもしれません。 - Visual Studio をセットアップするには、上部メニューで
View > Solution Explorerを選びます。この Solution Explorer で BTCPay Server のファイルとフォルダを確認できます。 - 最上位プロジェクトは BTCPay Server です。太字表示になっていることを確認してください。なっていない場合は右クリックして Set as StartUp Project を選択します。
- これで Visual Studio のセットアップは完了です。

# デバッグモードでローカル BTCPay Server をビルドする
- Visual Studio に戻り、
Build > Build Solutionをクリックします。 - Output ウィンドウでは、成功時に次のような表示になります:
========== Build: 6 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== - 次に
Debug > Start Debuggingを押します。 - まず Visual Studio のデバッグコンソールが開き、ローカル BTCPay Server の状態情報が表示されます。
- 続いて Web ブラウザでローカル BTCPay Server が起動し、ホーム画面で
REGTESTモードになっていることが表示されます。 - この時点で、次の3つの画面を確認できます: BTCPay Server のブラウザセッション、Visual Studio のデバッグコンソール、BTCPay Server.Tests の PowerShell ターミナル。
- BTCPay Server で新規ユーザーを登録し、その登録イベントが Visual Studio のデバッグコンソールに表示されることを確認します。


# ローカル BTCPay Server で Visual Studio からコード変更を確認する
- Visual Studio でコードを変更します(例:
~\BTCPayServer\Views\UIStores\Dashboard.cshtmlのThis store is ready to accept transactions, good job!というテキストを変更する) - ページを更新し、ホーム画面にテキスト変更が反映されることを確認します。
- コード変更によっては、反映のために Debugging の再起動が必要です。
- Visual Studio でブレークポイントを設定し、ローカル BTCPay Server の機能を操作したときにそのブレークポイントで停止することを確認します。
# Git メンテナンス
# フォークした BTCPay Server リポジトリを同期する
- 多くのコントリビューターが BTCPay Server のメインリポジトリにコードを追加するため、新しい変更をフォークへ取り込まないと、自分のフォークが遅れることがあります。
- www.Github.com 上の自分の BTCPay Server フォークを見ると、ブランチが何コミット遅れているかを示すメッセージが表示されます。例:
This branch is 32 commits behind btcpayserver:master。 - 更新には GitBash を使うか、GitHub Desktop の同期プロンプトをたどる方法があります。
- GitBash ターミナルを開き、以下のコマンドで BTCPay Server リポジトリを更新します。
- まず clone local path に移動し、
masterブランチにいることを確認します:$ cd Documents/Github/btcpayserver。
$ git fetch upstream
$ git merge upstream/master
$ git commit -m <SomeCommitMessage>
メッセージ例: ...your branch is ahead of origin master by "X" commits... use git push to publish...
$ git add .
$ git push origin master
$ git fetch upstream 実行時に fatal: 'upstream' does not appear to be a git repository というエラーが出る場合は、先に upstream リポジトリを指す remote を Git に設定する必要があります。これは最初の1回だけ必要です。clone local path にいる状態で次のコマンドを実行してください。
$ git remote add upstream https://github.com/btcpayserver/btcpayserver.git
# upstream リポジトリが正しく追加されたか確認
$ git remote -v
# 次のような表示になります:
origin YOUR_FORKED_GITHUB_REPO (fetch)
origin YOUR_FORKED_GITHUB_REPO (push)
upstream https://github.com/btcpayserver/btcpayserver.git (fetch)
upstream https://github.com/btcpayserver/btcpayserver.git (push)
# プルリクエスト作成のためにコードをコミットする
- フィーチャーブランチ(例:
Fix/BugBranch)でコード変更を行い、BTCPay Server Repository に Pull Request を作成したい場合は、GitBash ターミナルを開いて clone local path へ移動します:$ cd Documents/Github/btcpayserver。その後、コミット対象の 正しいブランチ にいることを確認し、git statusで変更ファイルが意図どおりか確認します。
$ git status
$ git add .
$ git commit
テキストエディターが開き、コミットメッセージを入力できます...
コミットメッセージ例: update button のバグを修正
変更を確定: Ctrl + x
保存: Shift + y
Enter でエディターを閉じる
$ git push origin Fix/BugBranch
www.Github.com 上の BTCPay Server Fork に新しいブランチが作成されたことを確認し、変更内容をレビューして Pull Request を作成します。
# プルリクエストのブランチを作成する
高度な開発者でなくても貢献しやすい方法として、他のコントリビューターの Pull Request をテストすることがあります。手動テストは、他の人の変更を検証し、BTCPay Server のコード変更が正しく動作することを確認するのに有効です。ここでは、以前の PoS Pull Request https://github.com/btcpayserver/btcpayserver/pull/454 を例に、他者の Pull Request からブランチを作る方法を示します。GitBash ターミナルを開き、clone local path に移動します: $ cd Documents/Github/btcpayserver。git status でステージ済みコミットがない(git status が clean)ことを確認してください。
$ git status
$ git fetch upstream pull/454/head:pos-new-design
$ git branch(新しいテスト用ブランチ pos-new-design が表示されます)
注: テストしたい pull request 番号に合わせて /454/ を変更してください。通常、/head: はそのままで問題なく、その後ろに pull request のブランチ名を指定します。
# ローカルブランチを削除する
Github.com のフォーク済み BTCPay リポジトリでブランチを削除しても、ローカルマシン上のコピーは削除されません。必要なら次のように削除します。
$ git checkout master
$ git branch -D <branch name>
注: checkout 中のブランチは削除できないため、上記の例のように先に master など別ブランチへ切り替えてください。
# Docker コンテナを扱う
ローカル開発中に Docker コマンドを使う場合は、BTCPayServer.Tests ディレクトリで次のコマンドを実行できます。
- 実行中コンテナを表示
docker ps - コンテナのログを表示
docker ps logs <container> - Docker コンテナを起動
docker-compose up dev - Docker コンテナを停止
docker-compose down - Docker コンテナを破棄
docker-compoose down --v
# Greenfield API 開発
BTCPay Greenfield API は 現在も開発中 です。利用例は こちらの例 で確認できます。BTCPay REST API を使って開発したい開発者向けに、公式の Greenfield API リファレンスドキュメント (opens new window) も用意されています。
Greenfield API に貢献したい開発者は、追加や修正時に BTCPay プロジェクトの 開発者ガイドライン (opens new window) に従ってください。ガイドラインが不明瞭だと感じる場合は、コミュニティチャット(development channel)で相談するか、エンドポイント実装案を議論するために GitHub issue を作成 (opens new window) することを検討してください。
# データベースを扱う
BTCPay は既定で PostgreSQL データベースを使用します。開発中は簡単に接続でき、データ保存の確認、レコード修正、開発時の問題調査に役立ちます。これには無料ツールの PgAdmin4 (opens new window) を利用できます。
ローカル環境で BTCPay を起動し、デバッグコンソールでデータベース接続情報を確認します。
次に PgAdmin を開き、Servers > Create > Server... を選んでサーバーに接続します。サーバー名を設定し、Visual Studio のデバッグコンソールに表示されたホスト接続情報を入力します。

保存して開発用 btcpayserver データベースに接続します。btcpayserver データベースでは、
Schemas > public > Tables を確認すると BTCPay Server データを保持しているテーブルを参照できます。
例として、AspNetUsers テーブルの行を表示すると、開発用 BTCPay に登録されているユーザーをすべて確認できます。データベース内で登録済みユーザー名を変更し、Save Changes と Refresh (F5) を実行してみてください。その後、新しいユーザー名と元のパスワードで BTCPay にログインできます。

# 質問
BTCPay Server のローカル開発セットアップについて質問がある場合は、コミュニティチャット (opens new window) に参加できます。その他のツールやコマンドについての質問は、インターネット検索や StackOverflow (opens new window) でも解決策を見つけられることが多いです。