@@ -30,7 +30,7 @@ the services wait for the database and secrets setup to finish before launching.
3030| ` setup-secrets ` | Executable | Runs ` dev/setup_secrets.ps1 ` — applies ` dev/secrets.json ` to all projects |
3131| ` mssql ` | SQL Server 2022 container | Persistent data volume, port 1433 |
3232| ` run-db-migrations ` | Executable | Runs ` dev/migrate.ps1 ` against ` vault_dev ` (or ` self_host_dev ` ) |
33- | ` azurite ` | Azure Storage emulator | Blob :10000 · Queue :10001 · Table :10002 |
33+ | ` azurite ` | Azure Storage emulator | Blob :10000 · Queue :10001 · Table :10002 · persistent data volume |
3434| ` azurite-setup ` | Executable | Runs ` dev/setup_azurite.ps1 ` after Azurite is ready |
3535| ` mailcatcher ` | Container | SMTP :10250 · Web UI :1080 |
3636| ` redis ` | Container | Redis with AOF persistence, port 6379 |
@@ -71,7 +71,7 @@ dotnet user-secrets set "Database:Password" "<your-sa-password>"
7171| Key | Default | Description |
7272| -----------------------------| ------------------------------------| --------------------------------------------------------------------------------------|
7373| ` SelfHost ` | ` false ` | Switch to self-hosted mode (see [ Self-Hosted Mode] ( #self-hosted-mode ) ) |
74- | ` ClientsPath ` | ` ../../clients/apps ` | Path to the ` clients ` repo's ` apps/ ` directory (used by the Node.js plugin) |
74+ | ` ClientsPath ` | ` ../../clients/apps ` | Path to the ` clients ` repo's ` apps/ ` directory (see [ Git Worktrees ] ( #git-worktrees ) ) |
7575| ` WorkingDirectory ` | ` ../dev ` | Directory where dev scripts are resolved |
7676| ` Services:<name>:BasePort ` | see ` appsettings.Development.json ` | HTTP port for each service; pre-filled to match each service's ` launchSettings.json ` |
7777| ` Database:Image ` | ` mssql/server:2022-latest ` | Docker image for SQL Server |
@@ -85,33 +85,23 @@ dotnet user-secrets set "Database:Password" "<your-sa-password>"
8585| ` MailCatcher:SmtpPort ` | ` 10250 ` | Host SMTP port |
8686| ` MailCatcher:WebPort ` | ` 1080 ` | MailCatcher web UI port |
8787| ` NgrokAuthToken ` | _ (empty)_ | ngrok auth token (used only when ngrok plugin is enabled) |
88- | ` WebFrontend:Port ` | ` 8080 ` | Web frontend port (used only when Node.js plugin is enabled) |
88+ | ` WebFrontend:Port ` | ` 8080 ` | Web frontend port |
8989| ` WebFrontend:Url ` | ` https://bitwarden.test:8080 ` | Web frontend URL shown in the dashboard |
9090
9191## Optional Features
9292
93- ### Web Frontend (Node.js community plugin)
93+ ### Web Frontend
9494
9595Runs the web client alongside the server services. Requires the Bitwarden
9696[ clients] ( https://github.com/bitwarden/clients ) repo cloned as a sibling to ` server ` .
9797
98- 1 . Create an ` AppHost.csproj.user ` file next to ` AppHost.csproj ` (it is covered by ` .gitignore ` ):
99-
100- ``` xml
101- <Project >
102- <PropertyGroup >
103- <EnableNodeJsCommunityPlugin >true</EnableNodeJsCommunityPlugin >
104- </PropertyGroup >
105- </Project >
106- ```
107-
108- 2 . If the clients repo is not at ` ../../clients/apps ` , override the path:
98+ 1 . If the clients repo is not at ` ../../clients/apps ` , override the path:
10999
110100 ``` bash
111101 dotnet user-secrets set " ClientsPath" " <path/to/clients/apps>"
112102 ```
113103
114- 3 . Run ` dotnet run ` as normal. The ` web-frontend ` resource starts with ** explicit start** — open
104+ 2 . Run ` dotnet run ` as normal. The ` web-frontend ` resource starts with ** explicit start** — open
115105 the Aspire dashboard and start it manually when you're ready.
116106
117107### Ngrok (Billing Webhook Tunneling)
@@ -194,6 +184,26 @@ variables for every resource.
194184- If you create an ` appsettings.local.json ` , add it to ` .gitignore ` before writing any values
195185 to it.
196186
187+ ## Git Worktrees
188+
189+ Path-based settings resolve relative to where you run ` dotnet run ` . If your worktree lives in
190+ a different location than the main checkout, those paths won't resolve correctly. Use absolute
191+ paths for any such setting:
192+
193+ - ** ` ClientsPath ` ** defaults to ` ../../clients/apps ` — override if your worktree is not
194+ alongside the ` clients ` repo:
195+
196+ ``` bash
197+ dotnet user-secrets set " ClientsPath" " <absolute/path/to/clients/apps>"
198+ ```
199+
200+ - ** ` AdditionalProjects:<name>:Path ` ** — use an absolute path when adding projects via user
201+ secrets in a worktree:
202+
203+ ``` bash
204+ dotnet user-secrets set " AdditionalProjects:<name>:Path" " <absolute/path/to/Project.csproj>"
205+ ```
206+
197207## Troubleshooting
198208
199209| Symptom | Fix |
0 commit comments