From 3dd8a579cb6268252f691e838dd8e936d63cae7c Mon Sep 17 00:00:00 2001 From: Viren070 Date: Fri, 18 Jul 2025 00:54:02 +0100 Subject: [PATCH] feat: add plexio --- .env | 1 + apps/authelia/compose.yaml | 1 + apps/cloudflare-ddns/compose.yaml | 1 + apps/plexio/.env | 10 +++++ apps/plexio/compose.yaml | 64 +++++++++++++++++++++++++++++++ compose.yaml | 1 + 6 files changed, 78 insertions(+) create mode 100644 apps/plexio/.env create mode 100644 apps/plexio/compose.yaml diff --git a/.env b/.env index 89a3604..b1e5d45 100644 --- a/.env +++ b/.env @@ -157,6 +157,7 @@ OMG_TV_STREMIO_ADDON_HOSTNAME=omg-tv-addon.${DOMAIN} OVERSEERR_HOSTNAME=overseerr.${DOMAIN} PLAUSIBLE_HOSTNAME=plausible.${DOMAIN} PLEX_HOSTNAME=plex.${DOMAIN} +PLEXIO_HOSTNAME=plexio.${DOMAIN} PORTAINER_HOSTNAME=portainer.${DOMAIN} PROWLARR_HOSTNAME=prowlarr.${DOMAIN} QUETRE_HOSTNAME=quetre.${DOMAIN} diff --git a/apps/authelia/compose.yaml b/apps/authelia/compose.yaml index 605d40d..00cd7ea 100644 --- a/apps/authelia/compose.yaml +++ b/apps/authelia/compose.yaml @@ -27,6 +27,7 @@ services: ${EASYNEWS_PLUS_PLUS_HOSTNAME}, ${MEDIAFUSION_HOSTNAME}, ${JACKETTIO_HOSTNAME}, + ${PLEXIO_HOSTNAME}, ${STREMIO_AI_SEARCH_HOSTNAME}, ${STREMIO_JACKETT_HOSTNAME}, ${STREMIO_LETTERBOXD_HOSTNAME}, diff --git a/apps/cloudflare-ddns/compose.yaml b/apps/cloudflare-ddns/compose.yaml index 8a00d14..ebd891b 100644 --- a/apps/cloudflare-ddns/compose.yaml +++ b/apps/cloudflare-ddns/compose.yaml @@ -56,6 +56,7 @@ services: ${OVERSEERR_HOSTNAME}, ${PLAUSIBLE_HOSTNAME}, ${PLEX_HOSTNAME}, + ${PLEXIO_HOSTNAME}, ${PORTAINER_HOSTNAME}, ${PROWLARR_HOSTNAME}, ${QUETRE_HOSTNAME}, diff --git a/apps/plexio/.env b/apps/plexio/.env new file mode 100644 index 0000000..ad35ad4 --- /dev/null +++ b/apps/plexio/.env @@ -0,0 +1,10 @@ +# If you are using Plexio with a Plex server that you do not own (you will see a "shared" badge next to the server name), +# you must provide the PLEX_MATCHING_TOKEN environment variable. This token is an access token from a Plex server you own, +# which will be used to query the Plex API and resolve the Plex GUID using IMDB IDs. + +# To find your Plex authentication token, open any media on a Plex server you own. +# Look for the XML data for the media and find the X-Plex-Token in the URL. Copy the token from the URL. + +# You can learn more about finding your authentication token in the official Plex article "Finding an authentication token" +# https://support.plex.tv/articles/204059436-finding-an-authentication-token-x-plex-token/ +# PLEX_MATCHING_TOKEN=your_plex_matching_token_here \ No newline at end of file diff --git a/apps/plexio/compose.yaml b/apps/plexio/compose.yaml new file mode 100644 index 0000000..a6767b5 --- /dev/null +++ b/apps/plexio/compose.yaml @@ -0,0 +1,64 @@ +services: + plexio: + image: ghcr.io/vanchaxy/plexio + container_name: plexio + restart: unless-stopped + build: + context: https://github.com/vanchaxy/plexio.git + dockerfile_inline: | + FROM node:18.2.0-alpine AS build + + WORKDIR /app + + COPY frontend/package.json . + + RUN npm install + + COPY frontend . + + RUN npm run build + + FROM unit:1.32.1-python3.11 + + WORKDIR /app + + COPY pyproject.toml pyproject.toml + COPY plexio plexio + + RUN pip install -e . --no-cache-dir + + COPY --from=build /app/dist frontend + + COPY unit-nginx-config.json /docker-entrypoint.d/config.json + + + + expose: + - 80 + env_file: + - .env + labels: + - "traefik.enable=true" + - "traefik.http.routers.plexio.rule=Host(`${PLEXIO_HOSTNAME?}`)" + - "traefik.http.routers.plexio.entryPoints=websecure" + - "traefik.http.routers.plexio.tls.certresolver=letsencrypt" + - "traefik.http.services.plexio.loadbalancer.server.port=80" + - "traefik.http.routers.plexio.middlewares=authelia@docker" + healthcheck: + test: + [ + "CMD", + "curl", + "--fail", + "--silent", + "--show-error", + "--max-time", + "10", + "http://localhost/manifest.json", + ] + interval: 30s + timeout: 10s + retries: 3 + profiles: + - plexio + - all \ No newline at end of file diff --git a/compose.yaml b/compose.yaml index e8b354c..a4a083d 100644 --- a/compose.yaml +++ b/compose.yaml @@ -48,6 +48,7 @@ include: - apps/plausible/compose.yaml - apps/plex/compose.yaml - apps/plex-trakt-sync/compose.yaml + - apps/plexio/compose.yaml - apps/portainer/compose.yaml - apps/prowlarr/compose.yaml - apps/quetre/compose.yaml