Install
Choose one way to run Smart Transcode. They give the same web page; pick the one that suits your server. Only the Linux service uses the downloadable package. Docker and Podman pull a ready-made image and need no download from this site.
Whichever you choose: user and group IDs
Smart Transcode replaces your files, so it must run as a user that may write them. Read User and group IDs before you install (it takes five minutes).
Linux service
Runs on the machine itself as a systemd service. The installer asks no questions: it installs what is missing, builds a private Python environment and starts the service. It needs a Linux system with systemd, Python 3.9 or newer and an ffmpeg that has your GPU's encoder.
1. Download and unpack in a terminal on the server. The file name never changes: it always holds the newest release.
wget https://transcode.aarondyck.ca/downloads/smart-transcode-latest.tar.gz
tar xzf smart-transcode-latest.tar.gz
cd smart-transcode
2. Install, giving the folder that holds your media. The service runs as that folder's owner.
sudo ./install.sh --media /srv/media
3. Open http://your-server:8080.
Optional: verify the download with wget https://transcode.aarondyck.ca/downloads/smart-transcode-latest.tar.gz.sha256 && sha256sum -c smart-transcode-latest.tar.gz.sha256.
Next: Linux service guide (all options, GPU notes) · Upgrading · Getting started
Older versions
Every release stays available under its own file name, for example smart-transcode-1.0.tar.gz.
Docker
One image holds the program and an ffmpeg build with every encoder it uses. There is nothing to download from this site: Docker pulls the image from Docker Hub.
| Image | Use it for |
|---|---|
aarondyck/smart-transcode:1.0 | The current release, pinned: it never changes under you. |
aarondyck/smart-transcode:latest | Always the newest release. |
Platform: linux/amd64.
Set it up for your hardware
The image is the same for everyone, but the container must be configured for the video hardware you have, so that it can use the GPU. Follow the guide for yours; each has a complete compose file:
- NVIDIA GPU: needs the NVIDIA Container Toolkit on the host
- Intel GPU: Quick Sync / VA-API through
/dev/dri - AMD GPU: VA-API through
/dev/dri - No GPU: CPU encoding
Next: Docker guide · User and group IDs (PUID / PGID) · Upgrading
Podman
The same image, run with Podman 4.4 or newer, rootless or rootful. Podman needs the full image name:
docker.io/aarondyck/smart-transcode:1.0 # the current release
docker.io/aarondyck/smart-transcode:latest # always the newest
Podman differs in three ways
- Who the container runs as. Rootless Podman runs it as you (
--userns=keep-id), so your media must belong to you. - GPUs. NVIDIA uses CDI (
--device nvidia.com/gpu=all); Intel and AMD pass/dev/driwith--group-add keep-groups. - SELinux. On Fedora, RHEL and derivatives the container needs
--security-opt label=disableto reach your media.
Next: Podman guide (every GPU, rootless and rootful, start at boot with Quadlet) · User and group IDs
After installing
Open the page, then follow Getting started: add a root folder, choose your encoding device and convert a first file. Behind HTTPS? See Reverse proxy. Something not working? Troubleshooting has a section for each platform.