No description
Find a file
vndangkhoa bfe204d59e
Some checks failed
/ build (push) Failing after 50s
trigger ci: re-run after runner config fix
2026-04-04 17:43:45 +07:00
.forgejo/workflows fix forgejo actions: use gitea.com action URLs and fix sha syntax 2026-04-04 17:38:47 +07:00
.github/workflows Update docker-publish.yml 2025-09-17 11:43:12 +04:00
src Update README with Synology NAS deployment guide, tag image as v1, fix volume paths 2026-04-04 17:07:28 +07:00
static Update: Modern glass UI, timer fix, Instagram/TikTok cookies, Docker support 2026-04-04 08:23:56 +07:00
templates/media Update: Modern glass UI, timer fix, Instagram/TikTok cookies, Docker support 2026-04-04 08:23:56 +07:00
.dockerignore Add Docker image support for Synology NAS with linux/amd64 platform 2026-04-04 16:01:32 +07:00
.gitignore Switch from youtube-dl to yt-dlp. Upgrade to go 1.23.2, ffmpeg 7.1, alpine 3.20 2024-10-19 13:40:18 -07:00
.tool-versions Upgrade from go 1.25.1 to go 1.25.3 2025-10-19 15:46:59 -07:00
build.sh Update README with Synology NAS deployment guide, tag image as v1, fix volume paths 2026-04-04 17:07:28 +07:00
cookies.txt Update: Modern glass UI, timer fix, Instagram/TikTok cookies, Docker support 2026-04-04 08:23:56 +07:00
docker-build.sh Update README with Synology NAS deployment guide, tag image as v1, fix volume paths 2026-04-04 17:07:28 +07:00
docker-compose.yml Tag image as v1, update README with Synology Container Manager GUI instructions 2026-04-04 17:14:11 +07:00
docker-run.sh Update README with Synology NAS deployment guide, tag image as v1, fix volume paths 2026-04-04 17:07:28 +07:00
Dockerfile Add Docker image support for Synology NAS with linux/amd64 platform 2026-04-04 16:01:32 +07:00
go.mod Upgrade from go 1.25.1 to go 1.25.3 2025-10-19 15:46:59 -07:00
go.sum Upgrade golang.org/x/sys 2025-10-09 20:38:08 -07:00
kv-download.tar Update README with Synology NAS deployment guide, tag image as v1, fix volume paths 2026-04-04 17:07:28 +07:00
README.md Tag image as v1, update README with Synology Container Manager GUI instructions 2026-04-04 17:14:11 +07:00
run.sh Update README with Synology NAS deployment guide, tag image as v1, fix volume paths 2026-04-04 17:07:28 +07:00
tidy.sh Update README with Synology NAS deployment guide, tag image as v1, fix volume paths 2026-04-04 17:07:28 +07:00

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.

Screenshot 1

Screenshot 2

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)

  1. Login to the registry (one-time):
docker login git.khoavo.myds.me -u vndangkhoa -p Thieugia19
  1. Run with docker-compose:
docker compose up -d

Deploy on Synology NAS (Container Manager GUI)

  1. Open Container ManagerRegistryAdd

    • Server: git.khoavo.myds.me
    • Username: vndangkhoa
    • Password: Thieugia19
  2. Search for vndangkhoa/kv-download and download the v1 tag

  3. Go to Container ManagerProjectCreate

    • 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
    
  4. Click NextDone to start the container

  5. 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_DIR where videos are saved. Defaults to /download
  • MR_PROXY will pass the value to yt-dlp with the --proxy argument. 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.