|
|
||
|---|---|---|
| .forgejo/workflows | ||
| .github/workflows | ||
| src | ||
| static | ||
| templates/media | ||
| .dockerignore | ||
| .gitignore | ||
| .tool-versions | ||
| build.sh | ||
| cookies.txt | ||
| docker-build.sh | ||
| docker-compose.yml | ||
| docker-run.sh | ||
| Dockerfile | ||
| go.mod | ||
| go.sum | ||
| kv-download.tar | ||
| README.md | ||
| run.sh | ||
| tidy.sh | ||
KV-Download (Media Roller)
A mobile friendly tool for downloading videos from social media. The backend is a Golang server that will take a URL (YouTube, Reddit, Twitter, TikTok, Instagram, etc), download the video file, and return a URL to directly download the video. The video will be transcoded to produce a single mp4 file.
This is built on yt-dlp. yt-dlp will auto update every 12 hours to make sure it's running the latest nightly build.
Note: This was written to run on a home network and should not be exposed to public traffic. There's no auth.
Running
Make sure you have yt-dlp and FFmpeg installed then pull the repo and run:
./run.sh
Or for docker locally:
./docker-build.sh
./docker-run.sh
Docker Image
The Docker image is available from the Forgejo container registry:
docker pull git.khoavo.myds.me/vndangkhoa/kv-download:v1
Deploy on Synology NAS (CLI)
- Login to the registry (one-time):
docker login git.khoavo.myds.me -u vndangkhoa -p Thieugia19
- Run with docker-compose:
docker compose up -d
Deploy on Synology NAS (Container Manager GUI)
-
Open Container Manager → Registry → Add
- Server:
git.khoavo.myds.me - Username:
vndangkhoa - Password:
Thieugia19
- Server:
-
Search for
vndangkhoa/kv-downloadand download thev1tag -
Go to Container Manager → Project → Create
- Project name:
kv-download - Paste this
docker-compose.yml:
services: kv-download: image: git.khoavo.myds.me/vndangkhoa/kv-download:v1 container_name: kv-download restart: unless-stopped ports: - "9292:9292" volumes: - ./downloads:/download environment: - MR_DOWNLOAD_DIR=/download - TZ=Asia/Ho_Chi_Minh - Project name:
-
Click Next → Done to start the container
-
Access the app at
http://<NAS-IP>:9292
Build Your Own Image
docker build -t git.khoavo.myds.me/vndangkhoa/kv-download:v1 --platform linux/amd64 .
docker push git.khoavo.myds.me/vndangkhoa/kv-download:v1
Docker Environment Variables
MR_DOWNLOAD_DIRwhere videos are saved. Defaults to/downloadMR_PROXYwill pass the value to yt-dlp with the--proxyargument. Defaults to empty
File Structure
After downloading videos, files are organized as follows:
/download/
├── <hash>/
│ └── <video-id>.mp4 # Video files
└── json/
└── <video-id>.info.json # Metadata files (separate folder)
API
To download a video directly, use the API endpoint:
/api/download?url=SOME_URL
Create a bookmarklet, allowing one click downloads (From a PC):
javascript:(location.href="http://127.0.0.1:9292/fetch?url="+encodeURIComponent(location.href));
Integrating with mobile
After you have your server up, install this shortcut. Update the endpoint to your server address by editing the shortcut before running it.
https://www.icloud.com/shortcuts/d3b05b78eb434496ab28dd91e1c79615
Unraid
media-roller is available in Unraid and can be found on the "Apps" tab by searching its name.

