Align self-host docs with payment-free OSS Docker image.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Atakan Doğan Özban
2026-08-03 07:07:12 +02:00
co-authored by Cursor
parent 7d22f722f6
commit 26c4b22fbb
10 changed files with 102 additions and 70 deletions
+18 -9
View File
@@ -6,13 +6,14 @@ sidebar_position: 4
Self-hosting in production means running the **web app** and the **worker** against shared Postgres, Redis, and upload storage, with a public HTTPS URL for OAuth.
How you package that (bare metal, systemd, Kubernetes, Docker, a PaaS) is up to you. The Compose files in this repo are **optional examples**, not a required stack.
How you package that (bare metal, systemd, Kubernetes, Docker, a PaaS) is up to you. The Compose files in the [OSS repo](https://git.atakanozban.com/Songs2VID/songs2vid) are **optional examples**, not a required stack.
Published image: [`atakanozban/songs2vid:latest`](https://hub.docker.com/r/atakanozban/songs2vid).
## What you must configure
| Requirement | Notes |
|-------------|--------|
| `S2VID_EDITION=selfhosted` | Unlimited allowance, API, and Pro layout features. Root Compose injects this when you use that example. |
| `NEXTAUTH_URL` | Exact public origin users open (e.g. `https://songs2vid.example.com`), no trailing slash |
| `NEXTAUTH_SECRET` | Strong random secret |
| `GOOGLE_CLIENT_ID` / `GOOGLE_CLIENT_SECRET` | OAuth Web client from Google Cloud |
@@ -21,6 +22,8 @@ How you package that (bare metal, systemd, Kubernetes, Docker, a PaaS) is up to
| Worker process | Same `DATABASE_URL`, `REDIS_URL`, and `UPLOAD_DIR` as the web app |
| Persistent uploads | Shared volume or disk for both web and worker |
Stripe, billing, credits, and pricing env vars are **not** used by the OSS self-hosted image.
Env reference: [Environment variables](./environment.md). Local setup: [Getting started](./getting-started.md).
### Google OAuth (required)
@@ -38,9 +41,9 @@ Users sign in with Google; they do not need their own Cloud credentials.
### After go-live
1. Open `NEXTAUTH_URL` and sign in
2. Confirm the YouTube channel connects
3. Generate an API key under **Dashboard → Settings → API access** if you automate uploads
1. Open `NEXTAUTH_URL` and sign in (you land on the dashboard)
2. Confirm the YouTube channel connects under **Settings → YouTube**
3. Generate an API key under **Settings → API key** if you automate uploads
4. Run a small test job (dashboard or [API](./api/overview.md))
### Common issues
@@ -54,13 +57,19 @@ Users sign in with Google; they do not need their own Cloud credentials.
Put any reverse proxy you like in front (Caddy, nginx, Traefik, cloud load balancer) and terminate TLS there so `NEXTAUTH_URL` is HTTPS.
## Optional examples in this repo
## Optional examples
These are starting points only. Adapt or ignore them.
### Root `docker-compose.yml`
### Docker Hub + Compose
Builds web + worker + Postgres + Redis with `S2VID_EDITION=selfhosted`. Useful for a quick all-in-one box. App port defaults to `${S2VID_PORT:-3000}`.
Pull the published image:
```bash
docker pull atakanozban/songs2vid:latest
```
The repo root `docker-compose.yml` builds web + worker + Postgres + Redis. Useful for a quick all-in-one box. App port defaults to `${S2VID_PORT:-3000}`.
```bash
docker compose up -d --build
@@ -70,7 +79,7 @@ Compose reference: [Docker Compose docs](https://docs.docker.com/compose/).
### `deploy/songs2vid/` (Caddy sample)
Sample layout under `deploy/songs2vid/`: Compose services plus a [Caddyfile](https://caddyserver.com/docs/caddyfile) that reverse-proxies the app, optionally serves a static docs build, and optionally puts Prisma Studio behind basic auth.
If present in your checkout, sample layout under `deploy/songs2vid/`: Compose services plus a [Caddyfile](https://caddyserver.com/docs/caddyfile) that reverse-proxies the app, optionally serves a static docs build, and optionally puts Prisma Studio behind basic auth.
Only relevant if you choose Caddy. Useful links: