You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: installation/production_run.md
+58-21Lines changed: 58 additions & 21 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -63,7 +63,32 @@ Supported Providers:
63
63
Configuration details are available in `.env.example`.
64
64
The .env file expects two different buckets for the two purposes, but you may use the same bucket for both.
65
65
66
-
### 3. Firebase Authentication
66
+
### 3. Google Cloud service account
67
+
68
+
Marble requires valid service account credentials in order to provide the following features:
69
+
70
+
- Authentication via Firebase (mandatory)
71
+
- Blob storage on Google Cloud Storage (if applicable)
72
+
73
+
This service account **must** have the following roles or permissions:
74
+
75
+
- Role: `Storage Object User` on the configured buckets to store and retrieve blobs
76
+
- Permission: `iam.serviceAccounts.signBlob` to generate pre-signed download URLs
77
+
This permission is provided by the `Service Account Token Creator` role, but we recommend creating a custom role containing the required permission only.
78
+
79
+
_Note:_ depending on whether you are hosted on GCP, the service account might need extra permissions to accomodate your setup.
80
+
81
+
#### Provide the credentials to Marble
82
+
83
+
Marble supports two ways to retrieve the service account's credentials:
84
+
85
+
-**Recommended:** Marble is able to retrieve the service account (and associated configuration) from the [Application Default Credentials (ADC)](https://cloud.google.com/docs/authentication/application-default-credentials). If you have properly configured the system on which Marble runs, it should be able to automatically use the configured service account. \
86
+
If Marble is running on Google Cloud Platform, the service account is pulled from the environment, depending on how you configured your infrastructure.
87
+
- Alternatively, you can download a file-based service account key and provide the path to it in the `GOOGLE_APPLICATION_CREDENTIALS` environment variable.
88
+
89
+
By default, it will be assumed that the service account's Google Cloud project is the project where your Firebase tenant lives. If that is the case, no further configuration is required. If, on the other hand, your Firebase project and Google Cloud project are separate, you will need to specify the name of your Firebase project in the `FIREBASE_PROJECT_ID` environment variable.
90
+
91
+
### 4. Firebase Authentication
67
92
68
93
#### Setup Steps
69
94
@@ -75,9 +100,8 @@ The .env file expects two different buckets for the two purposes, but you may us
75
100
2.**Configure Authentication**
76
101
77
102
- Enable Firebase Authentication
78
-
- Go to Project overview → project settings → Service Accounts → Generate new private key
79
-
- Create service account
80
-
- Download service account key
103
+
104
+
_Note:_ see below to configure Google Cloud authentication.
81
105
82
106
3.**Configure Domain**
83
107
@@ -102,7 +126,7 @@ The .env file expects two different buckets for the two purposes, but you may us
102
126
103
127
> 💡 **Cost**: Firebase Auth free tier should be sufficient, but credit card required for project setup.
104
128
105
-
### 4. Convoy (Webhook Gateway)
129
+
### 5. Convoy (Webhook Gateway)
106
130
107
131
Options:
108
132
@@ -120,7 +144,7 @@ Setup Steps:
120
144
CONVOY_PROJECT_ID=your-project-id
121
145
```
122
146
123
-
### 5. Yente + Elasticsearch
147
+
### 6. Yente + Elasticsearch
124
148
125
149
Purpose: Sanctions screening and search functionality
126
150
@@ -201,9 +225,7 @@ Reference the following files for detailed configuration:
201
225
202
226
2.**API URL Configuration**
203
227
204
-
- Frontend needs two API URLs configured:
205
-
-`MARBLE_API_URL_CLIENT`: URL for browser requests (public URL)
206
-
- Example: `https://api.yourdomain.com`
228
+
- Frontend needs one API URLs configured:
207
229
-`MARBLE_API_URL_SERVER`: URL for container-to-container requests
@@ -218,21 +240,36 @@ Reference the following files for detailed configuration:
218
240
- Verify DNS resolution works
219
241
- Test internal container networking
220
242
221
-
4.**Firebase Configuration**
243
+
4.**Invalid Google Cloud Service Account**
244
+
245
+
Check Marble's startup logs for messages related to Google Cloud Platform's authentication, they may be able to point your to a potential misconfiguration:
246
+
247
+
For example, a good configuration would look like this:
248
+
249
+
```
250
+
2025-05-27T14:12:41+02:00 INFO successfully authenticated in GCP [email protected] project=my-project
251
+
2025-05-27T14:12:41+02:00 INFO FIREBASE_PROJECT_ID was not provided, falling back to Google Cloud project project=my-project
252
+
2025-05-27T14:12:41+02:00 INFO firebase project configured project=my-project
253
+
```
254
+
255
+
Those lines indicate:
256
+
257
+
- The authenticated service account is `marble-dev@[email protected] project=my-project`
258
+
- The detected Google Cloud Project is `my-project`
259
+
- The assumed Firebase project is also `my-project`
260
+
261
+
You can verify that those value match your environment if you encounter any issue.
262
+
263
+
5.**Firebase Configuration**
222
264
223
-
- Service Account Key:
265
+
- Service account:
266
+
- Check that the detected Google Cloud project and service account match your environment
224
267
225
-
- ⚠️ Backend service will fail to start without accessible Firebase service account key
226
-
- Exception: On GCP, automatic service account discovery may work
227
-
- Generate key in Firebase Console → Project Settings → Service Accounts
228
-
- Mount key file to container and set `GOOGLE_APPLICATION_CREDENTIALS`
-`FIREBASE_API_KEY`: Web API key from Firebase Console
230
270
231
-
- Required Environment Variables:
232
-
-`GOOGLE_CLOUD_PROJECT`: Firebase project ID
233
-
-`FIREBASE_API_KEY`: Web API key from Firebase Console
234
-
-`FIREBASE_AUTH_DOMAIN`: Auth domain from Firebase settings
235
-
-`FIREBASE_APP_ID`: Application ID from Firebase Console
271
+
- If you plan on using Single-Sign On (SSO) with Firebase (to delegate authentication to another Identity Provider), you will need to configure the following directives:
272
+
-`FIREBASE_AUTH_DOMAIN`: Auth domain from Firebase settings
0 commit comments