.env) - The YAMS Settings Hub!Let’s talk about the .env file. Don’t let the technical name scare you; it’s actually your best friend for customizing YAMS! Think of it as the central control panel for some of YAMS’s key settings. It’s a simple text file living right where you installed YAMS (remember specifying that location during the install steps? The default spot is /opt/yams).
You might notice that you don’t immediately see this file when you list the contents of your YAMS directory. That’s because files starting with a dot (.) are typically hidden on Linux/Unix systems. But don’t worry, it’s easy to find! To view it, just use the command ls -a in your terminal (the -a stands for “all”, showing you all files, even the hidden ones).
At its heart, the .env file holds environment variables. That sounds technical, but it’s just a fancy way of saying “named settings”. You give a setting a name, set its value, and then you can easily reuse that name elsewhere.
It looks like this inside:
# Lines starting with # are comments (ignored)
PUID=1000
PGID=100
MEDIA_DIRECTORY=/srv/media
# You might add your own later!
# MY_API_KEY=supersecret123
See? Just SETTING_NAME=some_value on each line. It’s incredibly straightforward to read and edit!
Now, where do these settings get used? Primarily in your docker-compose.yaml and docker-compose-custom.yaml files. These files tell Docker how to run all the YAMS services (like Radarr, Sonarr, Plex, etc.).
Instead of writing the same path or ID over and over again in those files, we can just use the name of the setting from .env, but with a dollar sign ($) in front. Like this:
# Inside a service definition in docker-compose.yaml...
environment:
- PUID=$PUID # Aha! Use the PUID value from .env
- PGID=$PGID # And the PGID value too!
volumes:
- $MEDIA_DIRECTORY:/data # Map the media folder defined in .env
When Docker starts the container, it automatically swaps $PUID with 1000 (or whatever you set in .env), $MEDIA_DIRECTORY with /srv/media, and so on. This makes your configuration much cleaner and easier to manage.
.env? (Spoiler: It Makes Life Easier!)Okay, why the extra step? It actually helps you out in a few great ways:
.env file. This way, you can share your docker-compose.yaml file if you need help, without accidentally giving away sensitive info! Super Important: Make sure you add .env to your .gitignore file so you don’t accidentally upload your secrets to Git! (We’ve already suggested adding this for you).docker-compose.yaml, you just change the MEDIA_DIRECTORY line in your .env file once. Done! This saves you a ton of time and prevents errors.docker-compose.yaml cleaner and lets you adjust core settings without digging through complex files. It’s designed to be user-friendly!When you first set up YAMS, your .env file comes pre-filled with a few essentials:
PUID and PGID: These numbers tell the containers which user on your computer “owns” the files they create. This is super important for permissions (making sure Radarr can actually save files to your media folder!). You usually don’t need to change the defaults (often 1000 for both) unless you know you need to run things as a different specific user.MEDIA_DIRECTORY: This is the main folder on your computer where all your media lives (or will live!). The default is /srv/media. Feel free to change it to wherever you keep your stuff, just make sure the user from PUID/PGID can read and write there! Heads Up: For smooth sailing and efficient hardlinking (which saves disk space!), try to keep all your media (movies, TV, music, books) in subfolders under this one main directory.INSTALL_DIRECTORY: This tells YAMS where its own configuration files for each service should live. Default is /opt/yams. You set this during install and probably won’t touch it again.Good question! Some VPN setups also rely on settings you might put in your .env file. For the specifics on that, head over to the Torrenting with VPN guide.
Thanks to Airwreck on Discord for contributing to this guide!