Document payment-free OSS self-host quick start and Docker Hub overview.
This commit is contained in:
@@ -0,0 +1,48 @@
|
|||||||
|
# Songs2VID
|
||||||
|
|
||||||
|
Payment-free, self-hosted software that turns cover art and audio into YouTube videos (FFmpeg + BullMQ). Full entitlements in every deployment — no plans, credits, Stripe, or paywall.
|
||||||
|
|
||||||
|
**Image:** `atakanozban/songs2vid:latest`
|
||||||
|
|
||||||
|
**Docs:** https://docs.songs2vid.com
|
||||||
|
**Source:** https://git.atakanozban.com/Songs2VID/songs2vid
|
||||||
|
**Hosted SaaS (separate):** https://songs2vid.com
|
||||||
|
|
||||||
|
## Quick start
|
||||||
|
|
||||||
|
1. Clone the repo (Compose + `.env.example`) from Gitea, or reuse the sample `docker-compose.yml`.
|
||||||
|
2. Copy `.env.example` → `.env` and set:
|
||||||
|
- `NEXTAUTH_SECRET`
|
||||||
|
- `GOOGLE_CLIENT_ID`
|
||||||
|
- `GOOGLE_CLIENT_SECRET`
|
||||||
|
3. Enable **YouTube Data API v3** in Google Cloud and add OAuth redirect:
|
||||||
|
- `http://localhost:3000/api/auth/callback/google` (or your public HTTPS origin)
|
||||||
|
4. Run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker pull atakanozban/songs2vid:latest
|
||||||
|
docker compose up -d --build
|
||||||
|
```
|
||||||
|
|
||||||
|
Open http://localhost:3000 → sign in with Google → dashboard.
|
||||||
|
|
||||||
|
No Stripe or billing environment variables are required.
|
||||||
|
|
||||||
|
## What you get
|
||||||
|
|
||||||
|
- Batch encode: cover art + audio → YouTube upload
|
||||||
|
- Classic and art-track layouts, blur, typography, watermarks
|
||||||
|
- Playlists, privacy, tags, resolutions
|
||||||
|
- REST API (Dashboard → Settings → API key)
|
||||||
|
- Always-on self-hosted entitlements
|
||||||
|
|
||||||
|
## Stack
|
||||||
|
|
||||||
|
Next.js 15 · PostgreSQL/Prisma · Redis/BullMQ · NextAuth (Google + YouTube) · FFmpeg
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
- Full documentation: https://docs.songs2vid.com
|
||||||
|
- Getting started: https://docs.songs2vid.com/docs/getting-started
|
||||||
|
- Environment variables: https://docs.songs2vid.com/docs/environment
|
||||||
|
- REST API: https://docs.songs2vid.com/docs/api/overview
|
||||||
@@ -1,42 +1,72 @@
|
|||||||
# Songs2VID OSS
|
# Songs2VID OSS
|
||||||
|
|
||||||
Payment-free, self-hosted software for creating videos from cover art and audio, then uploading them
|
Payment-free, self-hosted software that turns cover art and audio into YouTube videos
|
||||||
to YouTube. All features are available in every deployment; there are no plans, credits, purchases,
|
(FFmpeg encoding + BullMQ jobs). Every deployment has full entitlements — there are no
|
||||||
subscriptions, or Stripe integration.
|
plans, credits, purchases, subscriptions, paywalls, or Stripe.
|
||||||
|
|
||||||
## Quick start with Docker
|
Sign in with Google, open the dashboard, and create videos. Settings cover account,
|
||||||
|
YouTube connection, and API keys only.
|
||||||
|
|
||||||
1. Copy `.env.example` to `.env` and set `NEXTAUTH_SECRET`, `GOOGLE_CLIENT_ID`, and
|
## Quick start (Docker)
|
||||||
`GOOGLE_CLIENT_SECRET`.
|
|
||||||
2. In Google Cloud Console, enable YouTube Data API v3 and add
|
Published image: [`atakanozban/songs2vid:latest`](https://hub.docker.com/r/atakanozban/songs2vid)
|
||||||
`http://localhost:3000/api/auth/callback/google` as an OAuth redirect URI.
|
|
||||||
3. Start the stack:
|
1. Clone this repo (or copy `docker-compose.yml` + `.env.example`).
|
||||||
|
2. Copy `.env.example` to `.env` and set at least:
|
||||||
|
- `NEXTAUTH_SECRET`
|
||||||
|
- `GOOGLE_CLIENT_ID`
|
||||||
|
- `GOOGLE_CLIENT_SECRET`
|
||||||
|
3. In [Google Cloud Console](https://console.cloud.google.com/), enable **YouTube Data API v3**
|
||||||
|
and add an OAuth redirect URI:
|
||||||
|
- Local: `http://localhost:3000/api/auth/callback/google`
|
||||||
|
- Production: `https://YOUR_DOMAIN/api/auth/callback/google`
|
||||||
|
4. Start the stack (web + worker + Postgres + Redis):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker compose up -d --build
|
docker compose up -d --build
|
||||||
```
|
```
|
||||||
|
|
||||||
Open http://localhost:3000.
|
Or pull the published image and run Compose after pointing services at
|
||||||
|
`atakanozban/songs2vid:latest` (same env and volumes).
|
||||||
|
|
||||||
|
Open http://localhost:3000 → sign in → dashboard.
|
||||||
|
|
||||||
|
No Stripe keys or billing env vars are required.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- Batch: one cover (or per-track covers) + many audio files → YouTube uploads
|
||||||
|
- Classic letterbox and art-track layouts (blur backgrounds, typography, fine-tuning)
|
||||||
|
- Custom watermarks (badge, text, or logo) and curated or uploaded fonts
|
||||||
|
- YouTube playlists, privacy, tags, resolution, categories
|
||||||
|
- REST API for automation (keys under **Dashboard → Settings → API key**)
|
||||||
|
- Always-on self-hosted entitlements (no quota paywall)
|
||||||
|
|
||||||
## Local development
|
## Local development
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker compose -f docker-compose.dev.yml up -d
|
docker compose -f docker-compose.dev.yml up -d
|
||||||
|
cp .env.example .env # then edit secrets / Google OAuth
|
||||||
npm install
|
npm install
|
||||||
npm run db:migrate
|
npm run db:migrate
|
||||||
npm run dev:all
|
npm run dev:all
|
||||||
```
|
```
|
||||||
|
|
||||||
The web app runs on http://localhost:3000. `dev:all` starts both the Next.js app and BullMQ worker.
|
- App: http://localhost:3000
|
||||||
|
- `dev:all` runs Next.js and the BullMQ worker
|
||||||
|
|
||||||
## Stack
|
## Stack
|
||||||
|
|
||||||
- Next.js 15, TypeScript, Tailwind
|
- Next.js 15, TypeScript, Tailwind
|
||||||
- PostgreSQL and Prisma
|
- PostgreSQL and Prisma
|
||||||
- Redis and BullMQ
|
- Redis and BullMQ
|
||||||
- NextAuth with Google OAuth
|
- NextAuth with Google OAuth (YouTube scopes)
|
||||||
- FFmpeg
|
- FFmpeg
|
||||||
- YouTube Data API v3
|
- YouTube Data API v3
|
||||||
|
|
||||||
Documentation, including the REST API reference, is at
|
## Links
|
||||||
[docs.songs2vid.com](https://docs.songs2vid.com).
|
|
||||||
|
- Docs: [docs.songs2vid.com](https://docs.songs2vid.com)
|
||||||
|
- Docker Hub: [atakanozban/songs2vid](https://hub.docker.com/r/atakanozban/songs2vid)
|
||||||
|
- Source: [git.atakanozban.com/Songs2VID](https://git.atakanozban.com/Songs2VID)
|
||||||
|
- Hosted SaaS (separate product): [songs2vid.com](https://songs2vid.com)
|
||||||
|
|||||||
Reference in New Issue
Block a user