feat(server): supply YouTube cookies to the API container via .env
Set YTDLP_COOKIES_HOST in server/.env and compose mounts the host cookies.txt read-only at /cookies.txt and wires YTDLP_COOKIES automatically — no compose edits per host. Falls back to /dev/null when unset so the container still starts. Add server/.env.example, gitignore server/.env, and document the flow. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -2,4 +2,5 @@ __pycache__/
|
|||||||
*.pyc
|
*.pyc
|
||||||
|
|
||||||
server/log.txt
|
server/log.txt
|
||||||
|
server/.env
|
||||||
cookies.txt
|
cookies.txt
|
||||||
|
|||||||
14
README.md
14
README.md
@@ -207,15 +207,17 @@ Use a Netscape-format cookie exporter, then point `--cookies` / `$YTDLP_COOKIES`
|
|||||||
./musicfetch --repair --cookies ~/cookies.txt -o /media/music
|
./musicfetch --repair --cookies ~/cookies.txt -o /media/music
|
||||||
```
|
```
|
||||||
|
|
||||||
For the API container, mount it and set the env var (see `server/docker-compose.yml`):
|
For the API container, just point it at the host file via `.env` — no compose
|
||||||
|
edits needed (see `server/.env.example`):
|
||||||
|
|
||||||
```yaml
|
```bash
|
||||||
environment:
|
# server/.env
|
||||||
YTDLP_COOKIES: "/cookies.txt"
|
YTDLP_COOKIES_HOST=/host/path/cookies.txt
|
||||||
volumes:
|
|
||||||
- /host/path/cookies.txt:/cookies.txt:ro
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
The compose mounts it read-only at `/cookies.txt` and sets `YTDLP_COOKIES`
|
||||||
|
automatically. Leave `YTDLP_COOKIES_HOST` unset to run without cookies.
|
||||||
|
|
||||||
Cookies expire — if YouTube starts rejecting them, re-export. Treat `cookies.txt` like a
|
Cookies expire — if YouTube starts rejecting them, re-export. Treat `cookies.txt` like a
|
||||||
password (it *is* your logged-in session); keep it out of git (`.gitignore` it).
|
password (it *is* your logged-in session); keep it out of git (`.gitignore` it).
|
||||||
|
|
||||||
|
|||||||
13
server/.env.example
Normal file
13
server/.env.example
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# Copy to server/.env and fill in. docker-compose reads it automatically.
|
||||||
|
|
||||||
|
# Lidarr (preferred source)
|
||||||
|
LIDARR_API_KEY=
|
||||||
|
|
||||||
|
# API key clients must send to musicfetch-api
|
||||||
|
MUSICFETCH_API_KEY=
|
||||||
|
|
||||||
|
# Optional: authenticated YouTube cookies to dodge the bot-check
|
||||||
|
# ("Sign in to confirm you're not a bot") and rate limits.
|
||||||
|
# Set to the host path of a Netscape-format cookies.txt (see README
|
||||||
|
# "Getting YouTube cookies"). Leave unset to run without cookies.
|
||||||
|
# YTDLP_COOKIES_HOST=/host/path/cookies.txt
|
||||||
@@ -13,10 +13,14 @@ services:
|
|||||||
MUSICFETCH_API_KEY: "${MUSICFETCH_API_KEY}"
|
MUSICFETCH_API_KEY: "${MUSICFETCH_API_KEY}"
|
||||||
MUSICFETCH_ROOT: "/media/music"
|
MUSICFETCH_ROOT: "/media/music"
|
||||||
MUSICFETCH_PORT: "6769"
|
MUSICFETCH_PORT: "6769"
|
||||||
# Optional: authenticated YouTube cookies to avoid bot-check / rate limits.
|
# Optional: authenticated YouTube cookies to avoid bot-check ("Sign in to
|
||||||
# Mount a cookies.txt below and point this at it (in-container path).
|
# confirm you're not a bot") / rate limits. To enable, set in a .env file
|
||||||
YTDLP_COOKIES: "${YTDLP_COOKIES:-}"
|
# (see server/.env.example):
|
||||||
|
# YTDLP_COOKIES_HOST=/host/path/cookies.txt
|
||||||
|
# The host file is mounted read-only at /cookies.txt and used automatically.
|
||||||
|
YTDLP_COOKIES: "${YTDLP_COOKIES_HOST:+/cookies.txt}"
|
||||||
volumes:
|
volumes:
|
||||||
- /media/music:/media/music
|
- /media/music:/media/music
|
||||||
# Uncomment and set host path to supply cookies (see YTDLP_COOKIES above):
|
# Cookies bind: maps to the host cookies.txt when YTDLP_COOKIES_HOST is set,
|
||||||
# - /path/to/cookies.txt:/cookies.txt:ro
|
# otherwise /dev/null (harmless no-op so the container still starts).
|
||||||
|
- "${YTDLP_COOKIES_HOST:-/dev/null}:/cookies.txt:ro"
|
||||||
|
|||||||
Reference in New Issue
Block a user