This is a quick walkthrough of setting up the Kometa Docker container in the TrueNAS Scale UI.
The TrueNAS Scale UI may differ from these screenshots, but the concepts are the same:
Create a container based on the kometateam/kometa image.
Set environment variables to control the container's behavior [optional].
Point the container to the directory where your configuration files are to be stored.
This walkthrough discusses only the steps required to set up a Kometa container on a TrueNAS Scale NAS. It does not cover creating a config file for Kometa.
There are two walkthroughs for getting familiar with Kometa:
You should go through one of those prior to doing this container setup, as they will familiarize you with the tool and how it works,
and will produce the config.yml you will need to use with this process.
Kometa Installation Walkthrough for TrueNAS Scale¶
Thanks to i.am.stonecutter on Discord.
This guide provides step-by-step instructions to install Kometa on TrueNAS Scale (Community Edition, version 25.04.0 or later) using a Docker container.
Create a dataset named kometa using the Apps preset.
Edit the ACL for the kometa dataset to ensure proper permissions for your user setup. Default settings are usually sufficient, but adjust if issues arise.
In the TrueNAS web interface, go to Apps > Discover Apps.
Click the three-dot menu and select Install via YAML.
In the YAML window, set the container name to kometa and use the following docker-compose template, editing the timezone, volume mapping, and UID/GID as needed:
This is an optional step you can perform if you want to fire off a run right this second to verify that things are working. Whether or not you do this, Kometa will wake up tomorrow at 5AM to process the config [assuming you used the docker-compose YAML just above].
Return to the TrueNAS Scale SSH session.
Execute the following command to force an immediate library refresh based on your config.yml:
sudo docker run --rm -it -v "/mnt/YOUR-STORAGE-POOL/YOUR-DATASET/kometa/config:/config:rw" kometateam/kometa --run
Of course, replace YOUR-STORAGE-POOL/YOUR-DATASET to suit your specific setup.
The config.yml is portable; adjust paths if moving.
Regularly update the Kometa image via Apps > Update.
These services do not store season or episode-level ratings, using these options will allow show ratings to be
applied at the season or episode level.
YAML Lists Explained
YAML supports different ways to define lists. Below are some common methods:
1. List Within a Mapping
fruits:
- apple
- banana
- cherry
2. Inline Style
fruits: [ apple, banana, cherry ]
Each style can be used depending on your needs. The block style is typically more readable for longer lists,
while the inline style is compact and useful for short lists.
YAML Dictionaries Explained
Dictionaries are used to associate key/value pairs that are unordered. Dictionaries can be nested by increasing
the indentation,
or new dictionaries can be created at the same level by resolving the previous one.
cache: true cache_expiration: 60
The "keys" are cache and cache_expiration and the "values" are true and
60 respectively.
You can use multiple score filters but the number will have to match every filter. All unrated items are considered
to have a 0 rating.
These filters only work if the URL is to the List View of the Letterboxd list (i.e. it should have
/detail/ in the URL) or to an account's Reviews (i.e. it should have
/USERNAME/films/reviews/ in the URL).
This filter only works if the URL is to the List View of the Letterboxd list (i.e. it should have
/detail/ in the URL).
When title is not provided and the mapping name was not specified as an ID, the default behaviour is to
use the mapping name as title for matching.
When mapping_id is not provided and the mapping name was specified as an ID, the default behaviour is
to use the mapping name as mapping_id for matching.
When the server does not have a Plex Pass then the Edition Field is not accessible. In this scenario, Kometa will
check the movie's filepath for {edition-...} to determine what the edition is.
Requires Plex Pass.
Must be using the New Plex Movie Agent or the New Plex TV Agent.
Each default has a key that when calling to effect a specific collection/overlay you must replace
<<key>> with when calling.
You can use current_year to have Kometa use the current year's value. This can be combined with a
-# at the end to subtract that number of years. i.e. current_year-2
Also filters out missing movies/shows from being added to Radarr/Sonarr. These values also cannot use the count
modifiers.
You can use current_year to have Kometa use the current year's value. This can be combined with a
-# at the end to subtract that number of years. i.e. current_year-2
Also filters out missing movies/shows from being added to Radarr/Sonarr. These values also cannot use the count
modifiers.
You can use current_year to have Kometa use the current year's value. This can be combined with a
-# at the end to subtract that number of years. i.e. current_year-2
Also filters out missing movies/shows from being added to Radarr/Sonarr. These values also cannot use the count
modifiers.
Also is a Tag Filter and can use all of those modifiers.
Requires Template Variables to function
Designed to use the TRaSH Guides filename naming scheme
Editions overlay is designed to use the Editions field within Plex (which requires Plex Pass to use) or the TRaSH Guides filename naming scheme
Designed to use the TRaSH Guides filename naming scheme
While these overlays can technically be applied at this level, they were not designed for it. For example, a show's
season cannot have a resolution since it is not a video file, and an episode cannot have a Common Sense rating since
only Movies and Shows are rated by Common Sense.