Configuration - API - Troubleshooting - License
AIOFiles is a self-hosted media toolkit for downloading videos, converting and compressing files, and processing images.
It runs as a web app backed by background workers, stores its data on disk, and exposes the same functionality through an HTTP API.
The fastest way to run AIOFiles is with Docker Compose:
- Copy .env.example to
.env. - Get docker-compose.yml
- Set
PUIDandPGIDto match your host user if you want the files in./datato be owned by you. - Set
AUTH_USERNAMEand eitherAUTH_PASSWORD_HASHorAUTH_PASSWORDif you want login enabled. - Start the stack with
docker compose up -d. - Open
http://localhost:1144.
To generate a password hash:
docker compose run --rm --entrypoint aiofiles aiofiles -hash-password 'your password'- Downloads media with
yt-dlp. - Converts and compresses files with
ffmpeg. - Processes images with ImageMagick.
- Queues work, tracks progress, and streams updates over SSE.
- Persists jobs, uploads, and sessions in SQLite.
Everything is driven by environment variables. The defaults and the rules that are easy to miss are documented here:
- The app stores persistent data under
./databy default. - Authentication is optional, but when it is enabled you need both a username and a password hash.
- Behind a reverse proxy, set
TRUSTED_PROXIESso login rate limiting andSecurecookies see the real client.ALLOWED_HOSTSandPROXY_ONLY=1restrict the instance to the name your proxy answers to, sohttp://<lan-ip>:1144stops working whilehttps://aio.example.comkeeps working. - Large uploads, retention, and worker concurrency are all controlled through environment variables rather than a settings screen.

