Configuring Plex on UGreen NAS with Docker and Ansible

#ansible #docker #nas #plex #ugreen

 

Previously I had a plex setup on a dedicated computer in my house, however, I recently purchased a Ugreen NAS, and wanted to migrate plex to the Ugreen machine since it supports docker. Here are the steps to get it working.

  1. Install the docker app on the Ugreen.
  2. Ensure SSH is enabled, and optionally setup SSH certs (see: https://www.jasonernst.com/posts/2024/07/18/UGreen-NAS-SSH-certs)

2.a Ensure your user is able to access docker, either manually, or via ansible:

- name: adding {{ username }} to group docker
  tags: docker
  become: true
  ansible.builtin.user:
    name: "{{ username }}"
    groups: docker
    append: true

You can test it's working by ssh-ing into the NAS and issuing docker ps - if you get no errors, you're good.

I have previously created an ansible role for installing plex here: https://github.com/compscidr/ansible-media-server, so I'll be using this going forward.

  1. Add the following to your meta/requirements.yml:
collections:
    - name: compscidr.media_server
        version: "<insert version here>"
  1. Install the collection: ansible-galaxy install -r meta/requirements.yml
  2. Create an ansible playbook for the nas:
- name: Services for nas.local
  hosts: nas.local
  roles:
    - role: compscidr.media_server.plex
      vars:
        plex_dri_devices: true
        plex_bonjour_port: 5354
        plex_tv_folder: /volume1/storage/tv
        plex_movies_folder: /volume1/storage/movies
        plex_pid: "999"
        plex_gid: "10"

** Note **, the GID and PID are what the UGOS containers seem to run with - if you don't do this part, plex will have trouble scanning the libraries due to permissions.

** Note2 **, on the first run you will also want to add plex_claim: with the token you get from https://www.plex.tv/claim/ in order to claim the server. After the server is setup, you can remove this.

  1. deploy the ansible play ansible-playbook -i inventory.yml playbook.yml --ask-become-pass --limit nas.local --tags plex

  2. Optionally deploy the watchtower container to keep the plex container up to date:

- name: docker watchtower container
  tags: docker, watchtower
  become: true
  community.docker.docker_container:
    name: watchtower
    image: containrrr/watchtower
    pull: true
    command: --http-api-update --http-api-periodic-polls --include-restarting --log-level debug
    env:
      WATCHTOWER_HTTP_API_TOKEN: mytoken
    ports:
      - "8081:8080"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    restart_policy: unless-stopped

Comments (0)


Leave a Comment

Log in to leave a comment.

Most Recent Post

Searching the Parts of the Internet Google Doesn't: Five Years of darksearch.xyz

There's a whole slice of the internet that's public but almost impossible to search. Content on IPFS is addressed by what it is (a content hash, the CID) rather than where it is, so there's no domain to crawl, no robots.txt, and no single server to point a search engine at. If you don't already have...