Install¶
This page is for the person who will run Evey for the household. You need a computer or a NAS that stays on, with Docker installed. It takes three steps:
- Save one file, the compose file.
- Start Evey with one command.
- Open Evey in a browser.
Then the First setup wizard takes over.
Evey runs as a single container. Its database and search engine are inside
it, so there is nothing else to install, no .env file to write, and no
memory or CPU setting.
Use the file on this page, not the one in the Git repository
The docker-compose.yml at the root of the Git repository is a different
setup, for developers and advanced installs: it needs a .env file and
runs extra services. It is described in
Advanced deployments.
What you need¶
- A computer or NAS that stays on, with an x86-64 processor (Intel or AMD). ARM64 machines need a release tag, which does not exist yet: see ARM hosts.
- Docker with Compose v2. The command is
docker compose, with a space, not the olderdocker-compose. - Your media folder: where your films, series, music or photos are.
- Some disk space for Evey's own data (database, artwork, search index).
The compose file below keeps it in a folder named
evey-data, next to the file.
Evey answers in plain HTTP on your home network. Watching from outside your home needs HTTPS, which you can add later: Remote access and HTTPS.
Step 1: Save the compose file¶
Create a folder for Evey, for example evey, and save this file in it as
docker-compose.yml. Change one line: the path to your media (the line
marked 5). For example, if your films are in /srv/media, the line becomes
- /srv/media:/media.
services:
evey:
image: eveyproject/evey:latest # (1)!
container_name: evey-server
ports:
- "9091:9091" # (2)!
volumes:
- ./evey-data:/data # (3)!
- evey-cache:/cache # (4)!
- /path/to/your/media:/media # (5)!
stop_grace_period: 60s # (6)!
restart: unless-stopped
volumes:
evey-cache:
- The version of Evey.
latestis the newest release. To stay on a given version, use a release tag such as0.1.0, or asha-<commit>tag: see Backups and updates. - The port. The number on the left is the one you will type in the browser
and in the apps. Keep
9091unless another program already uses it. - Evey's own data: database, keys, generated passwords, search index, artwork, logs, backups, plugins. This is the folder to back up.
- A cache of converted video, resized photos and music covers. It can be
deleted at any time and fills up again by itself. The poster variants are
not in it: they live under
evey-data/artworks. - Your media. Replace
/path/to/your/mediawith the real folder. Inside Evey, this folder is called/media. It is writable on purpose, so that Media health can repair a file when you ask. Add:roat the end to make it read-only: Evey then cannot write there, and repairs fail. - Gives the database time to stop cleanly when the container stops. Docker's default of 10 seconds is short for a large collection.
Step 2: Start Evey¶
In a terminal, in the folder that holds the file:
Evey starts in the background. To watch what it is doing, run
docker compose logs -f evey; press Ctrl+C to stop watching, Evey keeps
running.
On the first start, Evey creates its passwords and its database in
evey-data. You have nothing to prepare.
Step 3: Open Evey in a browser¶
The address is http://, then the address of the machine running Docker,
then :9091:
| Where your browser is | Address to type |
|---|---|
| On the machine running Docker | http://localhost:9091 |
| On another computer or a phone at home | http:// + the IP address of the machine running Docker + :9091, for example http://192.168.1.20:9091 |
| Outside your home | Not yet. This needs HTTPS and a public address: see Remote access and HTTPS. |
To find the IP address of the machine running Docker, look in your router's
list of connected devices, or run ip a on Linux, ipconfig on Windows,
ifconfig on macOS. If you changed the port in step 1, use the number on the
left of the ports: line instead of 9091.
The first time, the address opens the setup wizard. Continue with First setup. Once the wizard is done, the same address opens the sign-in page.
Write this address down
Everyone at home will need it. The Android and Android TV apps ask for
exactly this address on their first screen, with http:// and the port:
Connect the apps.
Where your data lives¶
| Location | What it holds | Can you delete it? |
|---|---|---|
./evey-data |
Database, keys, generated passwords, search index, timeline thumbnails, artwork, logs, backups, plugins | No. Losing it loses every account, watch history and setting. The only exception is meili/ inside it, the search index: the command evey admin reindex-search rebuilds it from the database. |
evey-cache volume |
Converted video, resized photos and music covers (poster variants are in evey-data/artworks) |
Yes. It fills up again by itself. |
| Your media folders | Your files | Evey never deletes them. Removing a title in Evey removes it from the library, not from the disk. |
Evey writes into your media folders in three cases only:
- a repair you start from Media Health (the original is kept as a backup);
- a subtitle downloaded from OpenSubtitles (saved in a
.subtitlesfolder next to the film); - a small test file, deleted right after, that checks Evey still notices new files.
Common changes¶
Each of these is a few lines in the same file.
A second media folder. Add - /other/path:/media2 under volumes:. A
third one is /media3, and so on.
A second Evey on the same host. Give it another container_name and
other host ports, otherwise docker compose up refuses to start (the name
is already in use).
Another port. Change only the number on the left, for example
"8080:9091". Then type :8080 in the browser and in the apps.
Who owns the files. By default, Evey adopts the owner of your media
folder, so that repairs can write. To choose yourself, add PUID and PGID
under environment:, with the numbers given by id -u and id -g. The
container starts as root only to apply this; Evey itself never runs as root.
A graphics card for video conversion. Give the container access to the card: see Hardware acceleration.
Which version you run. The image: line decides:
image: |
You get |
|---|---|
eveyproject/evey:latest |
the newest release, each docker compose pull moves you to the next one |
eveyproject/evey:0.1 |
the newest fix of that minor line (0.1.0, 0.1.1, ...), never a new minor |
eveyproject/evey:0.1.0 |
exactly that release, until you change the line |
eveyproject/evey:sha-<commit> |
one exact build, the only tag that never moves |
eveyproject/evey:master |
the development branch, rebuilt at every push: for testing, not for a server you rely on |
Release numbers follow semantic versioning and start
at 0.1.0; the 0.x line is the public beta. To change version, edit the
line, then docker compose pull && docker compose up -d; your data stays in
./evey-data. The running version shows in Admin → Dashboard, at
/healthz, and with docker exec evey-server evey version. A tag without a
suffix is the full image, with every plugin runtime (Python, Node.js, PHP,
Ruby and Lua); -nodejs and -lean are slimmer builds with fewer of them
(details).
You already run a reverse proxy (a program that puts HTTPS in front of your services): see Remote access and HTTPS.
On a NAS (Synology Container Manager, QNAP Container Station)
- Create the
evey-datafolder before the first start. These interfaces refuse to mount a folder that does not exist, unlike the Docker command line. Nothing else needs creating. - Set
PUIDandPGIDto the NAS user that owns the media (id <user>over SSH; on Synology usually around1026, group100). NAS shares are often owned byroot, which Evey never adopts on its own. - Intel NAS with Quick Sync: add the
devices:andgroup_add:lines described in Hardware acceleration.
What Evey sets up by itself¶
You do not configure these:
- How much video the server can convert at once. It measures the machine at its first quiet moment.
- The graphics card. Evey detects the card you gave the container and checks it with a real conversion.
- How each device plays a file. Decided for each playback: see How playback is decided.
- Access from outside your home. Off until you give the server a public address.
Settings that you may change later (server name, schedules, limits, API keys) are in the admin panel, not in the compose file. The few environment variables that exist are listed in the Configuration reference.