Installation - dvnkln/hdtracker GitHub Wiki
hdtracker runs as a single Docker container. All data lives in one volume.
1. Folder and files
The quick way β create a folder and download the two files into it:
mkdir hdtracker && cd hdtracker
curl -fsSLO https://raw.githubusercontent.com/dvnkln/hdtracker/main/docker-compose.yml
curl -fsSL -o .env https://raw.githubusercontent.com/dvnkln/hdtracker/main/.env.example
No curl on your system? wget does the same:
wget https://raw.githubusercontent.com/dvnkln/hdtracker/main/docker-compose.yml
wget -O .env https://raw.githubusercontent.com/dvnkln/hdtracker/main/.env.example
Or create the folder by hand with this docker-compose.yml:
services:
hdtracker:
image: ghcr.io/dvnkln/hdtracker:latest
container_name: hdtracker
restart: unless-stopped
ports:
- '3000:3000'
env_file: .env
volumes:
- hdtracker-data:/data
volumes:
hdtracker-data:
Another port? Change the left side of 3000:3000 (e.g. 8080:3000) and adjust ORIGIN accordingly.
2. .env
Fill in the .env file you downloaded β or create it next to the docker-compose.yml (template: .env.example):
SECRET=
TMDB_API_TOKEN=
IGDB_CLIENT_ID=
IGDB_CLIENT_SECRET=
TZ=Europe/Berlin
ORIGIN=http://192.168.1.50:3000
| Variable | What to put in |
|---|---|
SECRET |
Random string, at least 32 characters: openssl rand -hex 32 |
TMDB_API_TOKEN |
themoviedb.org β Settings β API β API Read Access Token (the long one, not the short API key) |
IGDB_CLIENT_ID / IGDB_CLIENT_SECRET |
dev.twitch.tv/console/apps β Register Your Application (Redirect URL http://localhost, Category Application Integration, Client Type Confidential) β copy the Client ID, create a secret with New Secret |
TZ |
Your time zone, e.g. Europe/Berlin |
ORIGIN |
Exactly the address you open the app with (protocol + host + port, no trailing slash) β otherwise login fails. E.g. http://192.168.1.50:3000, or https://tracker.example.com behind a reverse proxy. Several addresses: comma-separated |
Anime (AniList) needs no key; only the episode titles of anime come from TMDB. Without TMDB or IGDB keys only those areas are unavailable β you can also hide areas you don't use under Settings β General.
Prefer passing the values with environment: instead of env_file? That works too; the variable names are the same.
3. Start
docker compose up -d
Open the ORIGIN address. On the first start you create your account. It is the admin of the installation and can add accounts for others later β see Users.
Everything else (interface language, content language, region, β¦) is set inside the app under Settings.
4. Behind a reverse proxy?
If you reach hdtracker through a reverse proxy (Nginx Proxy Manager, Caddy, Traefik, β¦), confirm the proxy once:
- Open Settings β Server β Connection through the proxy.
- Follow what it shows β one click, or a key with one line for your proxy.
Without it everything works, but after several wrong passwords all visitors are blocked together instead of only the one who typed them.
Settings β Server also has an overview that tells you whether anything else needs attention. Details: HTTPS and installing as an app.
Trouble?
- Login or any form fails with βCross-site POST form submissions are forbiddenβ (403):
ORIGINdoes not match the address in your browser exactly. See HTTPS and installing as an app. - ββ¦ is missing in .envβ: the variable name is misspelled or the value did not reach the container. Check with
docker exec hdtracker env. - Forgot your password? See Reset your password.