Setup
Shared variables
In Railway → Project Settings → Shared Variables, add the third-party secrets you control. Internal service API keys are generated and cross-referenced by the template (for example s3-server PRESIGN_API_KEY via secret formula, then main-server reads that service variable). You should not manually invent matching keys for those.
Third-party keys (you provide)
OPENROUTER_API_KEY=...
SUNO_API_KEY=...
FAL_KEY=...
YOUTUBE_CLIENT_ID=....apps.googleusercontent.com
YOUTUBE_CLIENT_SECRET=...
# Email — pick Resend OR ZeptoMail (see Email sender / Deploy guide)
EMAIL_SERVER=resendWire each service to ${{shared.NAME}} where the template expects it — including YOUTUBE_CLIENT_ID / YOUTUBE_CLIENT_SECRET for youtube-server. Do not paste Polar organization tokens into the buyer project. Fal keys: create at https://fal.ai/dashboard/keys with ADMIN scope if you want sidebar balances (API scope hides balances).
Internal keys (template / Railway)
- Service secrets use Railway formulas such as ${{secret(32)}} so each deploy gets unique values.
- Consumers reference the producing service (e.g. main-server S3_SERVER_API_KEY → s3-server.PRESIGN_API_KEY).
- You normally leave these alone unless you are debugging a mis-wired reference.
Email (pick one)
Add EMAIL_SERVER plus the Resend or ZeptoMail keys to Shared Variables. See the Deploy guide and Email sender pages for signup links and plan notes.