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:

  1. Open Settings β†’ Server β†’ Connection through the proxy.
  2. 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): ORIGIN does 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.