Installing Collectoh
System requirements, and how to install Collectoh on Windows, macOS, Linux, Docker or a NAS, then finish setup and keep it up to date.
On this page
Collectoh runs on one machine — the computer or NAS that holds your media, or can reach it — and serves everything to web browsers. You install it once, finish a short setup wizard in your browser, and do everything else from the app.
System requirements
| Need | Details |
|---|---|
| System | 64-bit Windows, macOS or Linux, or a NAS that runs Docker. The Docker images are built for x86-64 and ARM64. |
| Processor | Playing a file as it is costs almost nothing. Converting video on the fly (transcoding) is the demanding part: for 4K, HDR or several people watching away from home, use a strong processor or a supported graphics chip — Intel Quick Sync, AMD, NVIDIA, or VideoToolbox on a Mac. |
| Memory | The optional on-server features — photo tags, face recognition, search by meaning and sound-alike music — use up to about half a gigabyte each while they work, and let it go after fifteen quiet minutes. With 8 GB or more you can keep the transcode cache in memory. |
| Disk | Room for artwork and scrubbing thumbnails, which grows with your library, and a fast disk for temporary transcode files. |
| Network | Port 8080 reachable from the devices that will watch. |
| Watching | A current web browser. |
Choose how to install
| Machine | Install with |
|---|---|
| Windows PC | The Windows installer |
| Mac | The macOS app |
| Linux desktop or server | The .deb or .rpm package, or Docker |
| Synology, QNAP, Unraid or TrueNAS | Your NAS's app centre, or the Docker image |
The installers are the quickest route on a computer you already use; Docker is the most flexible for an always-on server.
Windows
- Download the Windows installer from collectoh.com and run it.
- It installs Collectoh as a background service that starts with Windows, then opens the setup wizard in your browser. If the wizard doesn't appear, go to
http://localhost:8080. - From other devices, use
http://<this-pc-address>:8080. If they can't connect, allow port 8080 through the firewall.
macOS
- Download Collectoh for macOS and move it to your Applications folder.
- Open it. Collectoh starts its server in the background and opens the setup wizard at
http://localhost:8080. - A sleeping Mac can't serve anything, so keep it awake while others are watching.
Linux
The packages install Collectoh as a system service that starts at boot.
# Debian, Ubuntu and similar
sudo apt install ./<downloaded-file>.deb
# Fedora, RHEL and similar
sudo dnf install ./<downloaded-file>.rpmThen open http://localhost:8080 on that machine, or http://<server-address>:8080 from another device. The service needs permission to read your media folders; if it can't read one, the scan report names the folder.
Docker
The compose file runs three containers: Collectoh itself (the collectoh/server image, listening on port 8080), its PostgreSQL database and a Redis job queue. You need Docker with Compose v2 — the docker compose command. Docker Desktop on Windows and macOS works too, with the network limits described below.
Start it
mkdir collectoh && cd collectoh
curl -fsSLO https://collectoh.com/docker-compose.yml
printf 'SECRET_KEY=%s\nDB_PASSWORD=%s\nMEDIA_DIR=/path/to/your/media\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 16)" > .env
docker compose up -dReplace /path/to/your/media with your media folder before running the third line — or edit .env afterwards and run docker compose up -d again. Then open http://localhost:8080 (or http://<server-address>:8080) for the setup wizard. Inside the container your media is at /media: that's the path to give the wizard.
To follow the server's log: docker compose logs -f server.
Settings in .env
| Variable | What it does |
|---|---|
SECRET_KEY | Required. 32 or more random bytes. Protects sign-ins and encrypts stored credentials, such as connected cloud drives. Changing it signs everyone out and means connecting those again, so keep it. |
DB_PASSWORD | Required. The database password, used by the database and the server. The database is created with it on first start. |
MEDIA_DIR | Your media folder on this machine, mounted read-only at /media. |
PUBLIC_URL | The address people use to reach the server, such as https://media.example.com. Invitation links and the remote-access test use it. Default http://localhost:8080. |
PUID, PGID | The user and group that own Collectoh's data folders on this machine; find them with id -u and id -g. Default 1000. |
TZ | Your time zone, such as Europe/London. The nightly maintenance window follows it. Default UTC. |
PORT | The port on this machine. Default 8080. |
TMDB_API_KEY, TVDB_API_KEY, TVDB_PIN, FANART_API_KEY, AUDIODB_API_KEY | Optional keys of your own for online catalogues. Without them, your server asks through your Collectoh account; see Metadata and artwork. |
OPENSUBTITLES_API_KEY, OPENSUBTITLES_USERNAME, OPENSUBTITLES_PASSWORD | Optional subtitle search and download from OpenSubtitles. |
After editing .env, run docker compose up -d to apply it. Keep a copy of .env somewhere safe.
Folders
| On this machine | In the container | What it holds |
|---|---|---|
./config | /config | Your optional config.yaml, plugins, and backups (in config/backups unless you choose another folder) |
./metadata | /metadata | Artwork, scrubbing thumbnails, optimised copies, downloaded subtitles and the models for the on-server features |
./pgdata | the database | Accounts, libraries, watch history and everything Collectoh knows about your media |
transcode-cache volume | /cache | Temporary video segments and resized images; safe to lose |
MEDIA_DIR | /media, read-only | Your media |
CONFIG_DIR, METADATA_DIR and PGDATA_DIR in .env move the first three elsewhere.
Your media is mounted read-only (:ro), so nothing Collectoh does can change it. The few opt-in features that write beside your media — saving downloaded subtitles next to a film, writing course.nfo files — need a writable mount, which you'd have to set up deliberately.
More media folders. Add a line for each under the server's volumes: in docker-compose.yml, then run docker compose up -d:
- /mnt/disk2/tv:/tv:roIn Collectoh, pick /tv with Browse this PC… when choosing a library's folders.
Transcode cache in memory. With 8 GB of RAM or more, replace the plain transcode-cache: entry at the bottom of docker-compose.yml:
volumes:
transcode-cache:
driver: local
driver_opts: { type: tmpfs, device: tmpfs, o: "size=8g" }
redis-data:Hardware transcoding
Create a file called docker-compose.gpu.yml beside docker-compose.yml.
For Intel Quick Sync or AMD:
services:
server:
devices:
- /dev/dri:/dev/dri
group_add:
- '${RENDER_GID:-993}'Find your render group's number with getent group render | cut -d: -f3 and add it to .env as RENDER_GID. A wrong number is the most common reason hardware transcoding doesn't work; the container's log says so when it starts, and names the fix.
For NVIDIA, install the NVIDIA Container Toolkit on the host and use:
services:
server:
environment:
NVIDIA_VISIBLE_DEVICES: all
NVIDIA_DRIVER_CAPABILITIES: compute,video,utility
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu, video]Start with both files, and give the same two -f options to every command, updates included:
docker compose -f docker-compose.yml -f docker-compose.gpu.yml up -dAdmin → Diagnostics shows which encoder Collectoh will use, and Re-probe hardware tests again after a change.
Your home network
| Port | Used for |
|---|---|
| 8080/TCP | The app and its API |
| 32443/TCP | Direct access: the one port your router forwards, HTTPS only (HTTPS_PORT) |
| 1900/UDP | DLNA, once you switch it on |
| 32472/UDP and mDNS | Letting apps on your network find the server |
In Docker's default network mode the container can't see your home network's broadcasts, so televisions can't find it over DLNA, apps can't discover it by themselves, and it can't ask your router to open direct access's port, which you then open yourself. Browsing to its address works as normal. For discovery, run it on the host's network on Linux: add network_mode: host to the server service, and it listens on port 8080 of the host directly. Docker Desktop on Windows and macOS can't do this. See DLNA.
NAS
From the app centre. Where your NAS's app centre lists Collectoh, install it from there.
With the Docker image. Otherwise, use your NAS's container tool with the compose file above. Most can take a compose file directly; if yours can't, create the same three containers with the same images, ports, folders and variables. Then:
- Set
PUIDandPGIDto the NAS user that owns your media shares. - Point
MEDIA_DIRat the share — typically something like/volume1/mediaon Synology,/share/Multimediaon QNAP,/mnt/user/mediaon Unraid or/mnt/<pool>/mediaon TrueNAS. - For hardware transcoding on a NAS with an Intel processor, pass through the render device as described above.
- On a smaller NAS, switch on Admin → Settings → Low-priority scanning so a scan never makes playback stutter.
The first-run wizard
The first time you open Collectoh, a five-step wizard sets it up:
- Sign in with Collectoh: the wizard shows a code, like
BXRT-7KQM. Open the link beside it, or go tocollectoh.com/account/linkon any device, sign in to your free Collectoh account, check it's this server that's waiting, and confirm. The wizard notices within a few seconds. A code lasts fifteen minutes; ask for another if it runs out. If you set a server up again, or move it to a new computer, choose the old one it replaces, and the old one is let go. - Create the owner account: a username (at least three characters), an optional display name and a password (at least eight; longer is better). This is your sign-in on the server itself. The owner can do everything; you add other people later.
- Add storage: where your media lives — a name, and the folder's path (
/mediawith Docker). Choose Test; you can carry on once the server can read it. - Create the first library: a name, a type and one or more folders. Before anything is saved, the wizard shows what the scanner would make of them (the first 20 items), so a wrong folder or type shows up straight away. "Nothing found here" usually means one or the other.
- Remote access: optional. Enter the address you'd use from outside your home and test it, or choose Skip and finish. The test doesn't store the address, so put it in
PUBLIC_URLas well. See Remote access.
The first step needs your server to reach collectoh.com. After that, nothing depends on us. Your server checks in once a day with its name, platform and version. If it can't, nothing changes: everyone still signs in and watches as before. Admin → Settings → Collectoh account shows which account the server belongs to.
Collectoh then starts the first scan and opens the home screen with its progress. The server's name, shown on the sign-in screen and to devices on your network, is "Collectoh" until you change it in Admin → Settings → Server.
Updating
Docker:
docker compose pull && docker compose up -dDatabase changes are applied when the new version starts, and they only go forwards: an older version refuses to start on a database a newer one has upgraded. Make a backup before updating (see Backup and restore). Automatic updaters such as Watchtower work, but updating by hand lets you choose when the server restarts.
Knowing when there's a new version: once a day your server asks collectoh.com which version is the latest. The request carries nothing about your server. When a newer one is out, admins get a notification, and Admin → Settings → Updates shows it with a link to what's new. Check now asks straight away. Turn off Look for a newer version once a day if you'd rather your server never asked. Collectoh never updates itself.
Windows, macOS and Linux packages: install the newer version over the old one, the same way as before. Your libraries, settings and watch history are kept.
NAS: update from the app centre, or pull the new image as for Docker.
Where your data lives
Your media stays where it is. Collectoh reads it; it never moves or renames your files, and nothing in the app deletes them. Everything Collectoh knows is kept in its own data — with Docker, the config, metadata and pgdata folders above. The desktop installs keep the same pieces together in the app's data folder.
- The database matters most: from it, everything except artwork can be rebuilt, and artwork can be fetched again.
- The metadata folder is worth backing up too, so artwork and thumbnails needn't be rebuilt.
- The cache is disposable.
Admin → Backup makes backups on demand or every night. See Backup and restore.
Next steps
- Quick start
- Libraries and folders
- Metadata and artwork: add your catalogue keys before a big first scan
- Remote access
Last updated 28 September 2026