Web dashboard for Anime Upscaling — self-hosted anime upscaling, interpolation and re-encoding
3.1K
Next.js dashboard for Anime Upscaling, a self-hosted app for anime video restoration: upscaling, frame interpolation, re-encoding and integrity checks, powered by video2x and FFmpeg.
This image is the web UI only. It serves the dashboard and proxies requests to the API
container — ivanmicai/anime-upscaling-api,
which runs the actual GPU work. Run both together, on matching tags.
Everything stays on your machine — no cloud, no telemetry, no per-minute pricing.
Website: https://ivanmicai.github.io/anime-upscaling/
upscale + interpolate + optimize as a single jobnode:26-alpinenextjs, uid 1001)3000 by default — override with PORTlinux/amd64This image needs the API container alongside it. Save as docker-compose.yml:
services:
api:
image: ivanmicai/anime-upscaling-api:latest
container_name: anime-upscaling-api
environment:
API_PORT: 4751
PROCESS_DIR: /data
GPU_COUNT: 1
STREAMS_PER_GPU: 1
FFMPEG_STREAMS: 1
expose: ["4751"]
volumes:
- ./data:/data
restart: unless-stopped
web:
image: ivanmicai/anime-upscaling-app:latest
container_name: anime-upscaling-app
environment:
PORT: 4750
API_URL: http://api:4751
PROCESS_DIR: /data
AUTH_PASSWORD: replace-this-password
AUTH_SECRET: replace-with-openssl-rand-hex-32
ports:
- "4750:4750"
volumes:
- ./data:/data:ro
depends_on: [api]
restart: unless-stopped
Then:
mkdir -p data/input data/output data/optimized data/interpolated data/temp
docker compose up -d
Open http://localhost:4750 and log in with your AUTH_PASSWORD.
Drop source videos into data/input. Outputs land in data/output, data/optimized or
data/interpolated, depending on the job or pipeline.
Or clone the repository and run make quickstart, which generates the secrets, creates the
folders and starts both containers for you.
Add the GPU reservation to the api service — the web container never touches the GPU:
api:
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
Requires the NVIDIA Container Toolkit on the host.
| Variable | Default | Description |
|---|---|---|
PORT | 3000 | Port the Next.js server listens on. |
API_URL | http://localhost:4751 | Base URL of the API container. Set it to http://api:4751 under Compose. |
PROCESS_DIR | /data | Container path where the media tree is mounted. |
AUTH_PASSWORD | empty | Password for the login gate. If left empty the gate is disabled and the app is open to anyone who can reach the port. |
AUTH_SECRET | empty | Secret used to derive the session cookie. Generate with openssl rand -hex 32. |
| Tag | Meaning |
|---|---|
latest | Most recent release |
X.Y.Z | Exact release, matching the GitHub release |
X.Y | Latest patch of that minor |
X | Latest release of that major |
Keep this image and anime-upscaling-api on the same tag — they are released together.
Publish the web port only — the API is meant to stay on the internal Compose network. The built-in login is a single shared password for self-hosted use; put the service behind HTTPS, a VPN or a trusted reverse proxy if it is reachable outside a private network.
Content type
Image
Digest
sha256:0b368598b…
Size
80.2 MB
Last updated
about 2 months ago
docker pull ivanmicai/anime-upscaling-app