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
Instead of cloning the repository, you can also download the `docker-compose.local.yml` file from the repo and use that directly.
22
-
23
-
Or create your own compose file using the image:
24
-
```yaml
25
-
services:
26
-
relay:
27
-
# For production stability, pin to a specific version tag instead of 'latest'
28
-
# See available tags at: https://github.com/ThreeHats/foundryvtt-rest-api-relay/tags
29
-
image: threehats/foundryvtt-rest-api-relay:latest
30
-
container_name: foundryvtt-rest-api-relay
31
-
ports:
32
-
- "3010:3010"
33
-
environment:
34
-
- APP_ENV=production
35
-
- PORT=3010
36
-
- DB_TYPE=sqlite
37
-
volumes:
38
-
- ./data:/app/data
39
-
restart: unless-stopped
40
-
```
21
+
Or create your own minimal compose file:
22
+
```yaml
23
+
services:
24
+
relay:
25
+
# For production stability, pin to a specific version tag instead of 'latest'
26
+
# See available tags at: https://github.com/ThreeHats/foundryvtt-rest-api-relay/tags
27
+
image: threehats/foundryvtt-rest-api-relay:latest
28
+
container_name: foundryvtt-rest-api-relay
29
+
ports:
30
+
- "3010:3010"
31
+
environment:
32
+
- APP_ENV=production
33
+
- DB_TYPE=sqlite
34
+
volumes:
35
+
- ./data:/app/data
36
+
restart: unless-stopped
37
+
```
41
38
42
-
:::tip Version Pinning for Production
43
-
For production deployments, replace `latest` with a specific version tag (e.g., `threehats/foundryvtt-rest-api-relay:3.0.0`) to avoid unexpected breaking changes from updates.
44
-
:::
39
+
:::tip Version Pinning for Production
40
+
For production deployments, replace `latest` with a specific version tag (e.g., `threehats/foundryvtt-rest-api-relay:3.0.0`) to avoid unexpected breaking changes from updates.
41
+
:::
45
42
46
-
:::info Request limits
47
-
The Docker image has **no request limits by default** (`MONTHLY_REQUEST_LIMIT=0` — unlimited). If you want to enforce a monthly quota on your self-hosted users, add it to your compose file's `environment` section:
48
-
```yaml
49
-
- MONTHLY_REQUEST_LIMIT=5000
50
-
```
51
-
Paid subscribers (Stripe `active` status) are always unlimited regardless of this value.
52
-
:::
43
+
:::info Request limits
44
+
The Docker image has **no request limits by default** (`MONTHLY_REQUEST_LIMIT=0` — unlimited). If you want to enforce a monthly quota on your self-hosted users, add it to your compose file's `environment` section:
45
+
```yaml
46
+
- MONTHLY_REQUEST_LIMIT=5000
47
+
```
48
+
Paid subscribers (Stripe `active` status) are always unlimited regardless of this value.
49
+
:::
53
50
54
-
:::info Billing / subscription UI
55
-
Subscription-related UI (plan badges, upgrade buttons) is automatically **hidden** when `STRIPE_SECRET_KEY` is not set. Self-hosted deployments show a clean dashboard with no billing elements.
56
-
:::
51
+
:::info Billing / subscription UI
52
+
Subscription-related UI (plan badges, upgrade buttons) is automatically **hidden** when `STRIPE_SECRET_KEY` is not set. Self-hosted deployments show a clean dashboard with no billing elements.
53
+
:::
57
54
58
-
:::info Headless sessions
59
-
Headless browser sessions (automated GM login via Chromium) are **enabled by default** on self-hosted instances (`ALLOW_HEADLESS=true`). Key tuning variables:
60
-
- `HEADLESS_SESSION_TIMEOUT` — inactivity timeout in seconds before a session is stopped (default: `600`). Set to `0` to never time out.
61
-
- `MAX_HEADLESS_SESSIONS` — max concurrent headless sessions (default: `0` = no limit).
62
-
- `PUPPETEER_EXECUTABLE_PATH` — path to Chrome/Chromium if not auto-detected.
55
+
:::info Headless sessions
56
+
Headless browser sessions (automated GM login via Chromium) are **enabled by default** on self-hosted instances. Key tuning variables:
57
+
- `HEADLESS_SESSION_TIMEOUT` — inactivity timeout in seconds before a session is stopped (default: `600`). Set to `0` to never time out.
58
+
- `MAX_HEADLESS_SESSIONS` — max concurrent headless sessions (default: `0` = no limit).
59
+
- `PUPPETEER_EXECUTABLE_PATH` — path to Chrome/Chromium if not auto-detected.
63
60
64
-
See [Server Configuration](./configuration) for the full list of variables.
65
-
:::
61
+
See [Server Configuration](./configuration) for the full list of variables.
62
+
:::
66
63
67
64
2. **Start the server:**
68
65
```bash
69
66
docker compose -f docker-compose.local.yml up -d
70
67
```
71
-
This will pull the latest Docker image and start the relay server in the background. The server will be available at `http://localhost:3010`.
68
+
This pulls the latest Docker image and starts the relay server in the background. The server will be available at `http://localhost:3010`.
72
69
73
70
3. **Create Your Account:**
74
71
The default Docker setup uses an SQLite database for persistence, stored in the `data` directory.
@@ -139,7 +136,7 @@ To use it from another device, just hit `http://<that-ip>:3010` instead of `loca
139
136
A few things to check if it doesn't work:
140
137
141
138
- **Host firewall** — make sure inbound TCP on port `3010` is allowed (ufw, firewalld, Windows Defender Firewall, etc.).
142
-
- **Docker** — the example `docker-compose.local.yml`already publishes `3010:3010`, which is all you need. If you're running with `docker run`, include `-p 3010:3010`.
139
+
- **Docker** — the example `docker-compose.local.yml` publishes `3010:3010`, which is all you need. If you're running with `docker run`, include `-p 3010:3010`.
143
140
- **Foundry module** — when configuring the FoundryVTT REST API module, point its relay URL at the LAN IP (`http://192.168.1.42:3010`), not `localhost`, unless Foundry is running on the exact same machine as the relay.
144
141
- **CORS** — already permissive (`*`), so browser-based clients on other LAN devices work without extra config.
0 commit comments