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

  1. Open Google Cloud Console and create (or select) a project: https://console.cloud.google.com/
  2. Enable the YouTube Data API v3 for that project.
  3. Configure an OAuth consent screen (External is fine for personal/multi-channel use you control).
  4. Create OAuth client ID credentials (Web application).
  5. Add authorized redirect URIs that match your public youtube-server HTTPS domain (the callback path your youtube-upload-api expects).
  6. 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.