Compare commits

...

22 Commits

Author SHA1 Message Date
fd86c86d6b
Merge branch 'master' of git.rogs.me:rogs/yams.media
All checks were successful
Hugo Build and Deploy / Build Hugo Site (push) Successful in 4s
Hugo Build and Deploy / Deploy to Server (push) Successful in 25s
2025-05-14 21:26:55 -03:00
d5b6cf585c
Add hugo cache directory
- Specifies a cache directory for hugo builds.
- Improves build performance by caching hugo assets.
- Sets the cache directory to $PWD/hugo-cache.
2025-05-14 21:26:43 -03:00
ccc36c4326 Merge pull request 'Add GitHub Actions deployment workflow' (#45) from add-gitea-actions into master
All checks were successful
Hugo Build and Deploy / Build Hugo Site (push) Successful in 6s
Hugo Build and Deploy / Deploy to Server (push) Successful in 54s
Reviewed-on: #45
2025-05-14 20:40:11 -03:00
cdb360dc3e
Add GitHub Actions deployment workflow
All checks were successful
Hugo Build and Deploy / Build Hugo Site (pull_request) Successful in 20s
Hugo Build and Deploy / Deploy to Server (pull_request) Has been skipped
- Adds a workflow to build and deploy the Hugo site.
- Uses klakegg/hugo:0.111.3-ext-alpine-ci for the build environment.
- Checks out the code in both build and deploy jobs.
- Deploys to the server using SSH keys and secrets.
- Only deploys on pushes to the master branch.
- Uses `git stash` and `git pull --force` for deployment.
2025-05-14 20:34:07 -03:00
0812dbeef1
Add links to Gitea and GitHub repositories.
- Adds links to the Gitea and GitHub repositories in the sub-footer.
- Includes corresponding image assets.
- Updates Buy Me a Coffee link text for clarity.
2025-05-14 20:31:52 -03:00
a55f74bdd2
Remove GitLab CI configuration
- Removes the .gitlab-ci.yml file.
- This file was used for automated builds and deployments.
- The project no longer requires these automated processes.
2025-05-14 20:31:47 -03:00
1672e76eca
Add documentation for switching to WireGuard
- Adds a new `wireguard.md` file detailing the process of switching from OpenVPN to WireGuard.
- Includes instructions for ProtonVPN users and guidance for other providers.
- Updates existing documentation in `vpn.md` and `port-forwarding.md` to reference the new guide.
- Adds a new section to `vpn.md` explaining the benefits of WireGuard.
- Clarifies the process of updating the `.env` file and `docker-compose.yaml`.
- Provides troubleshooting steps for common WireGuard issues.
2025-04-05 19:25:10 -03:00
Loriage
dc6c8ce332 Plex new restrictions note 2025-04-02 20:07:51 +02:00
Loriage
e54c665574 Fixing md link syntax 2025-04-02 19:49:59 +02:00
Loriage
085909b1d2 Add warning about recent Plex limitations 2025-04-02 19:48:18 +02:00
4a1979bad5
Add acknowledgement to Airwreck
- Acknowledge Airwreck's contribution to the guide.
- Added a line to the content/advanced/env-file.md file.
2025-03-30 15:14:15 -03:00
38dcee41c2
Removes unnecessary space in the CI script. 2025-03-30 10:13:43 -03:00
ea0932b895
Merge branch 'master' of gitlab.com:rogs/yams.media into add-env-documentation 2025-03-30 10:13:22 -03:00
ec868c768e Merge branch 'add-test-ci' into 'master'
Add test stage to CI

See merge request rogs/yams.media!21
2025-03-30 10:00:32 -03:00
ef2075668a
Update Hugo CI image version.
- Use a more specific CI image version.
- Pin the image to include CI tooling.
2025-03-30 09:55:55 -03:00
658581e147
Add test stage to CI
- Adds a test stage using a Hugo image.
- Runs `hugo version` and `hugo --minify` in the test stage.
- Restricts test execution to merge requests and master branches.
2025-03-30 09:53:34 -03:00
e1f022c42f
Add Aider to .gitignore
- Ignore Aider files and directories.
2025-03-30 09:42:24 -03:00
c218948b5f
Merge branch 'master' of gitlab.com:rogs/yams.media into add-env-documentation 2025-03-30 09:41:44 -03:00
61389a9ca8 Merge branch 'add-proxmox-lxc-docs' into 'master'
Add Proxmox LXC docs

See merge request rogs/yams.media!19
2025-03-30 09:35:13 -03:00
db958da6e8
Add summary to env-file.md
- Adds a summary to the top of the env-file.md document.
- This provides a brief overview of the file's purpose.
- The summary explains the role of the .env file in YAMS configuration.
2025-03-29 17:25:33 -03:00
2249d5613b
Adjust documentation weights
- Updated the weight values for several documentation pages.
- Ensured consistent ordering and prioritization of advanced guides.
- Improved overall documentation structure.
2025-03-29 17:19:20 -03:00
fea482b762
Added documentation for environment variables
- Clarifies the purpose and usage of the `.env` file.
- Adds a new page dedicated to explaining the `.env` file.
- Improves the explanation of how environment variables are used in custom containers.
- Adds details about default environment variables and their purpose.
- Includes a section on VPN configuration and `.env` usage.
2025-03-29 17:18:51 -03:00
21 changed files with 294 additions and 31 deletions

View File

@ -0,0 +1,49 @@
name: Hugo Build and Deploy
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
test_build:
name: Build Hugo Site
runs-on: ubuntu-latest
container:
image: klakegg/hugo:0.111.3-ext-alpine-ci
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Check Hugo Version and Build
run: |
hugo version
hugo --minify
deploy:
name: Deploy to Server
runs-on: ubuntu-latest
needs: test_build
if: github.ref == 'refs/heads/master'
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup SSH and Deploy
run: |
eval "$(ssh-agent -s)"
mkdir -p ~/.ssh
echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
chmod 700 ~/.ssh
ssh-keyscan "$SSH_HOST" >> ~/.ssh/known_hosts
chmod 644 ~/.ssh/known_hosts
ssh -p "$SSH_PORT" "$SSH_USER@$SSH_HOST" 'cd repo && git stash && git pull --force origin master && ./build.sh'
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
SSH_USER: ${{ secrets.SSH_USER }}
SSH_HOST: ${{ secrets.SSH_HOST }}
SSH_PORT: ${{ secrets.SSH_PORT }}

3
.gitignore vendored
View File

@ -18,3 +18,6 @@ hugo.linux
# Temporary lock file while building
/.hugo_build.lock
*.webp
# Aider
.aider*

View File

@ -1,16 +0,0 @@
image: alpine:latest
deploy:
stage: deploy
before_script:
- 'command -v ssh-agent >/dev/null || ( apk add --update openssh )'
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- ssh-keyscan $SSH_HOST >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
script:
- ssh -p $SSH_PORT $SSH_USER@$SSH_HOST "cd repo && git stash && git pull --force origin master && ./build.sh"
only:
- master

View File

@ -2,4 +2,4 @@
find ./ -type f -name '*.png' -not -path '*/.git/*' -exec sh -c 'cwebp -lossless $1 -o "${1%.png}.webp"' _ {} \;
find . -type f -not -path '*/.git/*' -exec sed -i -e 's/\.png/\.webp/g' {} \;
hugo -s . -d /var/www/yams.media/ --minify --cleanDestinationDir --gc --verbose
hugo -s . -d /var/www/yams.media/ --minify --cleanDestinationDir --gc --verbose --cacheDir $PWD/hugo-cache

View File

@ -2,7 +2,7 @@
title: "Adding your own containers to YAMS"
date: 2023-10-21T21:41:29-03:00
draft: false
weight: 2
weight: 20
summary: A complete guide to expanding YAMS with your own Docker containers
---
@ -26,7 +26,7 @@ cd /opt/yams
## The Magic Variables ✨
YAMS provides some handy environment variables you can use in your custom containers:
YAMS provides some handy environment variables you can use in your custom containers. These are defined in your central [`.env` settings file]({{< relref "/advanced/env-file" >}}) (learn more about it!) and make it super easy to keep your custom containers working in harmony with YAMS:
```yaml
PUID: Your user ID
@ -102,7 +102,7 @@ Want your custom container to use YAMS's VPN? Add this to your container config:
Check out [Running Prowlarr behind the VPN](/advanced/prowlarr-behind-vpn) for a detailed example!
### 4. Variable Power 💪
You can access any environment variable from YAMS's `.env` file in your custom containers. Just use the `${VARIABLE_NAME}` syntax!
You can access any environment variable defined in YAMS's [`.env` file]({{< relref "/advanced/env-file" >}}) within your custom containers. Just use the `${VARIABLE_NAME}` syntax! This is great for things like API keys or other settings you want to manage centrally.
## Common Gotchas 🚨

View File

@ -2,7 +2,7 @@
title: "Backups"
date: 2023-01-17T19:38:39-03:00
draft: false
weight: 7
weight: 80
summary: Everything you need to know about backing up and restoring your YAMS setup
---

View File

@ -0,0 +1,68 @@
---
title: "Your Environment File (.env)"
weight: 30
description: "Get to know the handy .env file that helps configure YAMS."
summary: Learn about the central .env file used for YAMS configuration variables like paths and user IDs.
---
## Your Environment File (`.env`) - The YAMS Settings Hub!
Think of the `.env` file 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]({{< relref "/install/steps" >}})? The default spot is `/opt/yams`).
### So, What Does It Do?
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:
```env
# 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. Easy peasy!
### How YAMS Uses It (The Magic Part!)
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:
```yaml
# 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. Neat, right?
### Why Bother With `.env`? (Spoiler: It Makes Life Easier!)
Okay, why the extra step? It actually helps you out in a few great ways:
* **Keep Secrets Secret:** Got API keys or passwords? Pop them in your `.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).
* **Change Once, Update Everywhere:** Imagine you move your media library. Instead of editing the path in *every single service* in your `docker-compose.yaml`, you just change the `MEDIA_DIRECTORY` line in your `.env` file once. Done!
* **Easy Tweaks:** It keeps your main `docker-compose.yaml` cleaner and lets you adjust core settings without digging through complex files.
### The Defaults YAMS Gives You
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.
### What About VPN Stuff?
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]({{< relref "/advanced/torrenting" >}}).
---
*Thanks to Airwreck on Discord for contributing to this guide!*

View File

@ -2,7 +2,7 @@
title: "Lidarr"
date: 2023-01-31T11:20:14-03:00
draft: false
weight: 9
weight: 100
summary: Lidarr is a music collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new albums from your favorite artists and will interface with clients and indexers to grab, sort, and rename them. It can also be configured to automatically upgrade the quality of existing files in the library when a better quality format becomes available.
---

View File

@ -2,7 +2,7 @@
title: "Port Forwarding"
date: 2024-12-30T10:14:29-03:00
draft: false
weight: 4
weight: 50
summary: Everything you need to know about configuring and using a VPN with YAMS
---
@ -11,6 +11,8 @@ Port forwarding helps you get better download speeds by allowing incoming connec
## ProtonVPN Users 🚀
ProtonVPN makes port forwarding easy! Just follow these steps:
> 🆕 ProtonVPN now supports **WireGuard with port forwarding**! If you want faster VPN performance, check out our [Switching Gluetun to WireGuard](/advanced/wireguard/) guide.
1. Create a script to update qBittorrent's port. Make sure you change `/your/install/location`:
```bash
mkdir -p /your/install/location/scripts
@ -51,6 +53,8 @@ You should see an output similar to this:
## Other VPN Providers 🌐
For other VPN providers, port forwarding configuration varies.
> 💡 Some providers support WireGuard too! See [Switching Gluetun to WireGuard](/advanced/wireguard/) for details.
For detailed provider-specific instructions, check the [Gluetun Port Forwarding Documentation](https://github.com/qdm12/gluetun-wiki/blob/main/setup/advanced/vpn-port-forwarding.md).
## Verifying Port Forwarding ✅

View File

@ -2,7 +2,7 @@
title: "Portainer"
date: 2023-01-30T15:46:05-03:00
draft: false
weight: 8
weight: 90
summary: Your visual control center for all YAMS containers
---

View File

@ -2,7 +2,7 @@
title: "Running Prowlarr Behind the VPN"
date: 2024-09-27T16:44:00-03:00
draft: false
weight: 5
weight: 60
summary: A complete guide to routing Prowlarr's traffic through your VPN for extra privacy
---

View File

@ -2,7 +2,7 @@
title: "Proxmox LXC Prerequisites"
date: 2025-03-29T10:00:00-03:00
draft: false
weight: 1
weight: 10
summary: Required steps before installing YAMS in a Proxmox LXC container.
---

View File

@ -2,7 +2,7 @@
title: "Readarr"
date: 2023-01-31T13:52:34-03:00
draft: false
weight: 10
weight: 110
summary: Readarr is a ebook collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new books from your favorite authors and will interface with clients and indexers to grab, sort, and rename them.
---

View File

@ -2,7 +2,7 @@
title: "Torrenting"
date: 2023-01-16T14:48:14-03:00
draft: false
weight: 6
weight: 70
summary: Everything you need to know about safe and effective torrenting with YAMS
---

View File

@ -2,7 +2,7 @@
title: "VPN"
date: 2023-01-15T21:16:29-03:00
draft: false
weight: 3
weight: 40
summary: Everything you need to know about configuring and using a VPN with YAMS
---
@ -131,6 +131,16 @@ If you get an error, double-check all your settings and make sure they're correc
3. **Speed Matters**: Choose a VPN server that's relatively close to you for better download speeds
4. **Port Problems**: If you can't access qBittorrent after setting up the VPN, check the troubleshooting section below
## Switching to WireGuard ⚡
By default, YAMS uses **OpenVPN** for Gluetun. But if your VPN provider supports it, you can switch to **WireGuard** for faster speeds and quicker connections.
We recommend ProtonVPN for this, and weve written a full guide to help you switch:
👉 [Switching Gluetun to WireGuard](/advanced/wireguard/)
> 💡 If you store your WireGuard private key in the `.env` file, make sure to read the [Environment File Guide](/advanced/env-file/) to learn how to manage secrets securely.
## Troubleshooting 🔧
### Common Issues:

View File

@ -0,0 +1,137 @@
---
title: "Switching Gluetun to WireGuard"
date: 2025-04-05T12:00:00-03:00
draft: false
weight: 55
summary: Learn how to switch your Gluetun VPN configuration from OpenVPN to WireGuard for faster and more reliable connections.
---
Want faster VPN speeds and quicker connection times? It's time to switch from OpenVPN to **WireGuard**! This guide will walk you through updating your Gluetun configuration to use WireGuard — with a focus on **ProtonVPN**.
> ✅ **Why switch?** WireGuard is a modern VPN protocol thats faster, more efficient, and easier to configure than OpenVPN.
---
## For ProtonVPN Users 🚀
ProtonVPN makes it easy to use WireGuard with Gluetun. Here's how to update your configuration.
### Step 1: Get Your WireGuard Private Key 🔑
1. Go to [ProtonVPN WireGuard Config Generator](https://account.proton.me/u/0/vpn/WireGuard)
2. Select a server and enable **Port Forwarding** and **Moderate NAT** (optional)
3. Click **Download** to get the `.conf` file
4. Open the file and copy the value of `PrivateKey`
It will look something like this:
```
PrivateKey = wOEI9rqqbDwnN8/Bpp22sVz48T71vJ4fYmFWujulwUU=
```
---
### Step 2: Update Your `.env` File 🛠️
Open your `.env` file and remove the OpenVPN credentials:
```bash
nano /opt/yams/.env
```
Remove or comment out:
```env
VPN_USER=your-username
VPN_PASSWORD=your-password
```
You can also remove `VPN_SERVICE=protonvpn` if you want to hardcode it in the compose file (see below), or leave it — both work.
> 💡 Not sure how the `.env` file works? Check out our [Environment File Guide](/advanced/env-file/) to learn how to manage variables like `WIREGUARD_PRIVATE_KEY` securely.
---
### Step 3: Update `docker-compose.yaml` 🐳
Find the `gluetun` service and replace the `environment:` section with the following:
```yaml
environment:
- VPN_SERVICE_PROVIDER=protonvpn
- VPN_TYPE=wireguard
- WIREGUARD_PRIVATE_KEY=wOEI9rqqbDwnN8/Bpp22sVz48T71vJ4fYmFWujulwUU=
- VPN_PORT_FORWARDING=on
- VPN_PORT_FORWARDING_PROVIDER=protonvpn
- PORT_FORWARD_ONLY=on
```
> 🧠 **Tip:** You can still use `${VARIABLE}` syntax if you prefer to keep the private key in your `.env` file. See the [Environment File Guide](/advanced/env-file/) for more info.
---
### Step 4: Restart YAMS 🔄
Apply the changes:
```bash
yams restart
```
---
### Step 5: Verify Its Working ✅
Run the VPN check:
```bash
yams check-vpn
```
You should see your qBittorrent IP is different from your local IP — and located in the country you selected in ProtonVPN.
You can also check the Gluetun logs:
```bash
docker logs gluetun
```
Look for lines like:
```
Using VPN provider: protonvpn
VPN type: wireguard
Port forwarding is enabled
```
---
## For Other VPN Providers 🌐
WireGuard support varies by provider. Heres what to do:
1. Visit the [Gluetun Provider Docs](https://github.com/qdm12/gluetun-wiki/tree/main/setup/providers)
2. Find your VPN provider and follow their WireGuard instructions
3. Replace the `gluetun` environment variables in your `docker-compose.yaml` accordingly
> ⚠️ Not all providers support WireGuard or port forwarding. Check their documentation carefully.
---
## Troubleshooting 🔧
### Gluetun wont start?
- Double-check your `WIREGUARD_PRIVATE_KEY`
- Make sure `VPN_TYPE=wireguard` is set
- Check for typos in your `docker-compose.yaml`
### Port forwarding not working?
- Ensure `VPN_PORT_FORWARDING=on` and `PORT_FORWARD_ONLY=on` are set
- Verify that port forwarding is enabled in your ProtonVPN config
- Check Gluetun logs for forwarded port info
---
## Need Help? 🆘
If you're stuck:
- Visit our [Common Issues](/faqs/common-errors/) page
- Join our [Discord](https://discord.gg/Gwae3tNMST) or [Matrix](https://matrix.to/#/#yams-space:rogs.me) chat
- Or ask in the [YAMS Forum](https://forum.yams.media)

View File

@ -14,6 +14,8 @@ From their [website](https://www.plex.tv/):
In YAMS, Plex is going to be your streaming service powerhouse! 🌟 It's like having your own Netflix, but with way more control. Plus, sharing with friends and family is super easy!
**Note:** Be warned that Plex has [recently](https://www.plex.tv/blog/important-2025-plex-updates/) put its most basic features behind a monthly subscription or a single lifetime purchase.
## First steps
Before we dive in, we need to do a bit of setup magic to let Plex work its charms. First, stop YAMS:

View File

@ -189,7 +189,7 @@ Pick your streaming service:
Each service has its strengths:
- **Jellyfin**: Free, open-source, easy to set up
- **Emby**: Similar to Jellyfin but with premium features
- **Plex**: Most polished, but requires online account and is more complex to configure
- **Plex**: Most polished, but requires online account and is more complex to configure. Be aware of these [new limitations](https://www.plex.tv/blog/important-2025-plex-updates/) if you don't have a Plex Pass
### 8. VPN Configuration

View File

@ -7,9 +7,15 @@
<li class="zerostatic">
<img src="/pics/yams-small.png"/> <a href="https://yams.media">yams.media</a>
</li>
<li class="zerostatic">
<img src="/pics/gitea-small.png"/> <a href="https://git.rogs.me/rogs/yams">git.rogs.me/rogs/yams</a>
</li>
<li class="zerostatic">
<img src="/pics/gitlab-small.png"/> <a href="https://gitlab.com/rogs/yams">gitlab.com/rogs/yams</a>
</li>
<li class="zerostatic">
<img src="/pics/github-small.png"/> <a href="https://github.com/rogsme/yams">github.com/rogsme/yams</a>
</li>
<li class="zerostatic">
<img src="/pics/discord-small.png"/> <a href="https://discord.gg/Gwae3tNMST">Discord</a>
</li>
@ -22,7 +28,7 @@
</li>
{{ end }}
<li class="zerostatic">
<a href="https://www.buymeacoffee.com/rogs"><img src="https://img.buymeacoffee.com/button-api/?text=Support YAMS&emoji=\U0001f355&slug=rogs&button_colour=40DCA5&font_colour=ffffff&font_family=Lato&outline_colour=000000&coffee_colour=FFDD00" /></a>
<a href="https://www.buymeacoffee.com/rogs">🍕 Support YAMS! 🤑</a>
</li>
</ul>
</div>

BIN
static/pics/gitea-small.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 411 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 B