Setup
YouTube OAuth (Google Cloud)
YouTube upload uses Google Cloud OAuth on youtube-server. Each self-host deployment has its own Postgres database — channel connections stay on your stack. You can link as many channels as you want.
Create OAuth credentials
- Open Google Cloud Console and create (or select) a project: https://console.cloud.google.com/
- Enable the YouTube Data API v3 for that project.
- Configure an OAuth consent screen (External is fine for personal/multi-channel use you control).
- Create OAuth client ID credentials (Web application).
- Add authorized redirect URIs that match your public youtube-server HTTPS domain (the callback path your youtube-upload-api expects).
- Copy the Client ID and Client secret.
Put them in Shared Variables
The Railway template is wired to read Google OAuth from Shared Variables. Add both names exactly:
YOUTUBE_CLIENT_ID=....apps.googleusercontent.com
YOUTUBE_CLIENT_SECRET=...- Services that need OAuth reference ${{shared.YOUTUBE_CLIENT_ID}} and ${{shared.YOUTUBE_CLIENT_SECRET}} — do not scatter paste-only copies across services.
- After domains are public, connect channels from the dashboard YouTube flow.
- More on upload behavior: YouTube upload feature doc. Cost overview: /costs.
Official Google overview for OAuth clients: https://developers.google.com/identity/protocols/oauth2 — use Web client type and keep secrets only in Railway Shared Variables.