You-dump is an extremely simple web UI. It just allows the user to queue up URLs to download, and see if a previously queued download is finished or not. Nothing more. It does not even persist the queue and the finished downloads—these are cleared with a restart.
I say “queue” a lot, but it is not really a queue. All the downloads are carried out simultaneously. In the future I may add an option to change that.
The simplicity has one major benefit: this program is very easy to deploy. In order for it to run, one just needs to install the following:
-
The compiled binary (
cargo build --release
) -
A configuration file at
/etc/you-dump.toml
-
A directory that stores the front-end static files. Copy the files in the
static
directory in the repo into this directory. -
Optionally a systemd service file (or equivalent)
-
Optionally a reverse proxy
The program itself does not write anything to disk at all.
In the future I may make this simpler by compiling the static files into the library. These are just two files anyway.
The configuration file contains the following lines:
# Video will be downloaded into this directory. This should exist. download_dir = "/tmp" # The executable of youtube-dl/yt-dlp ydl_exec = "yt-dlp" # The directory that stores the static files static_dir = "/var/lib/you-dump/static" listen_address = "127.0.0.1" listen_port = 8000 # Whether to write timestamps in the log log_timestamp = false # Extra arguments passed to youtube-dl/yt-dlp. Omit to pass no extra # args. extra_args = ["--windows-filenames"]
If you are using a reverse proxy, you can choose to host the static
files in the proxy. Make sure they are served under the static
path.
In that case the static_dir
line can be omitted in the configuration
file. But it is also perfectly fine to let you-dump handle the static
files.
You could choose to let systemd manage the service. In that case here is a minimal service file:
[Unit] Description=You-dump service After=network.target [Service] User=you_dump Group=you_dump ExecStart=/usr/bin/you-dump Environment="RUST_LOG=info" [Install] WantedBy=multi-user.target