-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrender.yaml
More file actions
137 lines (132 loc) · 4.65 KB
/
Copy pathrender.yaml
File metadata and controls
137 lines (132 loc) · 4.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# yaml-language-server: $schema=https://render.com/schema/render.yaml.json
#
# Arlo on Render: Zoom Apps RTMS meeting assistant
# Template: https://github.com/render-examples/arlo-render-template
# Upstream: https://github.com/zoom/arlo
#
# Pattern: docker-fork (hybrid)
# - backend: Docker (OpenSSL for Prisma)
# - rtms: Docker (Zoom RTMS native SDK + GLIBCXX system packages)
# - frontend: native Node (CRA build + serve)
# - postgres: managed Render Postgres
#
# Only the public backend is internet-facing. Frontend and RTMS are private
# services on Render's private network; the backend proxies UI traffic and
# forwards RTMS webhooks.
previews:
generation: off
projects:
- name: arlo-render-template
environments:
- name: production
services:
- type: web
name: backend
runtime: docker
plan: starter
region: oregon
dockerContext: ./backend
dockerfilePath: ./backend/Dockerfile
# Dockerfile CMD defaults to `npm run dev`; production must use start.
dockerCommand: npm start
preDeployCommand: npm run db:deploy
healthCheckPath: /health
envVars:
- key: NODE_ENV
value: production
# Manual: Zoom Marketplace app credentials + webhook secret token.
- key: ZOOM_CLIENT_ID
sync: false
- key: ZOOM_CLIENT_SECRET
sync: false
- key: ZOOM_WEBHOOK_TOKEN
sync: false
- key: SESSION_SECRET
generateValue: true
- key: TOKEN_ENCRYPTION_KEY
generateValue: true
- key: DATABASE_URL
fromDatabase:
name: postgres
property: connectionString
# Backend proxies UI requests to the internal frontend service.
- key: FRONTEND_URL
fromService:
type: pserv
name: frontend
property: hostport
# backend/src/config.js builds RTMS_SERVICE_URL from host + port.
- key: RTMS_HOST
fromService:
type: pserv
name: rtms
property: host
- key: RTMS_PORT
fromService:
type: pserv
name: rtms
property: port
# AI summaries/chat require AI_ENABLED=true (config.js defaults to false).
- key: AI_ENABLED
value: "true"
# Optional: higher OpenRouter rate limits (free models work without a key).
- key: OPENROUTER_API_KEY
sync: false
- type: pserv
name: frontend
runtime: node
plan: starter
region: oregon
rootDir: frontend
buildCommand: npm install && npm run build
startCommand: npx serve -s build -l $PORT
envVars:
- key: NODE_VERSION
value: "20"
- key: NODE_OPTIONS
value: --max-old-space-size=384
- key: GENERATE_SOURCEMAP
value: "false"
- type: pserv
name: rtms
runtime: docker
plan: starter
region: oregon
dockerContext: ./rtms
dockerfilePath: ./rtms/Dockerfile
envVars:
# RTMS maps ZOOM_* → ZM_RTMS_* at startup; creds flow from backend.
- key: ZOOM_CLIENT_ID
fromService:
type: web
name: backend
envVarKey: ZOOM_CLIENT_ID
- key: ZOOM_CLIENT_SECRET
fromService:
type: web
name: backend
envVarKey: ZOOM_CLIENT_SECRET
- key: ZOOM_WEBHOOK_TOKEN
fromService:
type: web
name: backend
envVarKey: ZOOM_WEBHOOK_TOKEN
# rtms/src/index.js composes BACKEND_URL from host + port.
- key: BACKEND_HOST
fromService:
type: web
name: backend
property: host
- key: BACKEND_PORT
fromService:
type: web
name: backend
property: port
databases:
- name: postgres
plan: basic-256mb
region: oregon
databaseName: meeting_assistant
user: arlo_user
postgresMajorVersion: "15"
ipAllowList: []