├── .dockerignore ├── .github └── FUNDING.yml ├── .gitignore ├── Dockerfile ├── README.md ├── deemix-server.sh └── docker-compose.yaml /.dockerignore: -------------------------------------------------------------------------------- 1 | # Docker ignore file 2 | .assets 3 | .git 4 | .github 5 | .gitignore 6 | README.md 7 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: codefaux # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 12 | polar: # Replace with a single Polar username 13 | buy_me_a_coffee: # Replace with a single Buy Me a Coffee username 14 | thanks_dev: # Replace with a single thanks.dev username 15 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 16 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | tmp/ 2 | *.md.backup 3 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM --platform=$TARGETPLATFORM docker.io/library/node:16-alpine 2 | 3 | ARG TARGETPLATFORM 4 | ARG BUILDPLATFORM 5 | 6 | ARG S6_OVERLAY_VERSION=3.1.6.2 7 | ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-noarch.tar.xz /tmp 8 | RUN tar -C / -Jxpf /tmp/s6-overlay-noarch.tar.xz 9 | ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-x86_64.tar.xz /tmp 10 | RUN tar -C / -Jxpf /tmp/s6-overlay-x86_64.tar.xz 11 | 12 | RUN echo "Building for TARGETPLATFORM=$TARGETPLATFORM | BUILDPLATFORM=$BUILDPLATFORM" 13 | RUN apk add --no-cache git jq python3 make gcc musl-dev g++ && \ 14 | rm -rf /var/lib/apt/lists/* 15 | RUN git clone --recurse-submodules https://gitlab.com/RemixDev/deemix-gui.git 16 | WORKDIR deemix-gui 17 | RUN case "$TARGETPLATFORM" in \ 18 | "linux/amd64") \ 19 | jq '.pkg.targets = ["node16-alpine-x64"]' ./server/package.json > tmp-json ;; \ 20 | "linux/arm64") \ 21 | jq '.pkg.targets = ["node16-alpine-arm64"]' ./server/package.json > tmp-json ;; \ 22 | *) \ 23 | echo "Platform $TARGETPLATFORM not supported" && exit 1 ;; \ 24 | esac && \ 25 | mv tmp-json /deemix-gui/server/package.json 26 | RUN yarn install-all 27 | # Patching deemix: see issue https://github.com/youegraillot/lidarr-on-steroids/issues/63 28 | RUN sed -i 's/const channelData = await dz.gw.get_page(channelName)/let channelData; try { channelData = await dz.gw.get_page(channelName); } catch (error) { console.error(`Caught error ${error}`); return [];}/' ./server/src/routes/api/get/newReleases.ts 29 | RUN yarn dist-server 30 | RUN mv /deemix-gui/dist/deemix-server /deemix-server 31 | 32 | RUN chmod +x /deemix-server 33 | 34 | COPY deemix-server.sh / 35 | RUN chmod +x /deemix-server.sh 36 | 37 | ENV PUID=99 38 | ENV PGID=100 39 | ENV UMASK=0022 40 | 41 | VOLUME ["/deemix-gui/config", "/downloads"] 42 | EXPOSE 6595 43 | ENTRYPOINT /deemix-server.sh 44 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DEPRECATED AND NO LONGER REQUIRED, SEE ISSUE [#12](https://github.com/codefaux/deemix-for-lidarr/issues/12) 2 | 3 | DEPRECATED AND NO LONGER REQUIRED, SEE ISSUE [#12](https://github.com/codefaux/deemix-for-lidarr/issues/12) 4 | 5 | Kept for archival purposes only. I apologize for just nuking the container images, but using an outdated project is potentially very unsafe and there's no real reason for me to be involved beyond the instructions, when deployed using the maintained version I've added nothing beyond that. 6 | 7 | . 8 | 9 | . 10 | 11 | . 12 | 13 | . 14 | 15 | . 16 | 17 | . 18 | 19 | . 20 | 21 | # Lidarr/Deemix Integration Setup Guide 22 | 23 | ## Introduction 24 | This guide provides instructions for setting up Deemix integration with Lidarr, allowing for seamless downloading of music from Deezer. This setup is based on the work of several projects, including Deemix GUI by RemixDev, Lidarr.Plugin.Deemix by ta264, and the hotio/lidarr Docker image with plugin support, as well as Docker-on-steroids. 25 | 26 | ### Relevant Projects 27 | - [Deemix GUI by RemixDev](https://gitlab.com/RemixDev/deemix-gui) 28 | - [Lidarr.Plugin.Deemix by ta264](https://github.com/ta264/Lidarr.Plugin.Deemix) 29 | - [hotio/lidarr Docker image with plugin support](https://ghcr.io/hotio/lidarr:pr-plugins) 30 | - Extracted from [Docker-on-steroids](https://github.com/youegraillot/lidarr-on-steroids/) 31 | 32 | ## Links of Note 33 | - Issue #92 ([Origin, initial discussion](youegraillot#92)) 34 | - Issue #63 ([Patch during docker build](youegraillot#63)) 35 | 36 | ## NOTES: 37 | - This expects a Lidarr branch that supports Plugins. I'm using Docker; ghcr.io/hotio/lidarr:pr-plugins. 38 | - My work here is solely rewriting [Dockerfile](https://github.com/youegraillot/lidarr-on-steroids/blob/main/Dockerfile) and documenting things. The Dockerfile downloads and builds [Deemix GUI](https://gitlab.com/RemixDev/deemix-gui) with a patch as suggested in youegraillot#63. 39 | 40 | ## Docker-compose 41 | - Example provided; https://github.com/codefaux/deemix-for-lidarr/blob/main/docker-compose.yaml 42 | - Adjust PID/GID as necessary. 43 | - You must provide `/deemix-gui/config` via Docker mountpoint or volume. 44 | 45 | ## Quick Setup Info 46 | 47 | ### In Deemix 48 | To configure Deemix for integration with Lidarr, follow these steps: 49 | 50 | 1. Go to Settings in Deemix. 51 | 2. Enable "Create Folder Structure for" on Artists, Albums, and Singles. 52 | 3. Set the download folder where albums will be stored for import. Typically, `/downloads` is used. Ensure Lidarr uses the same volume/path. 53 | 4. Log into Deezer. 54 | 55 | ### In Lidarr 56 | To set up Deemix integration in Lidarr, follow these steps: 57 | 58 | 1. Install the Deemix plugin via URL: [Lidarr.Plugin.Deemix](https://github.com/ta264/Lidarr.Plugin.Deemix). 59 | 2. Configure a Deemix download client under Settings / Download Clients. 60 | 3. Use Docker's container name resolution feature for intra-container connections. Regardless of methodology, Docker will resolve a container name to its most accessible IP when referenced from inside a Docker environment. IE, name your containers `deemix` and `lidarr` and use `deemix:6595` instead of `:6595` when configuring both Download Client -and- Indexer. (Also useful for other containers, such as those requiring external database containers, regardless of whether or not they're in a docker-compose.yaml service group together.) 61 | 4. Add and configure a Deemix indexer under Settings / Indexers. Disable RSS feeds. 62 | 5. In Settings / Profiles, enable the Deemix protocol for Default or custom profiles under Delay Profiles. 63 | 64 | ## Important Notes 65 | - This setup guide may require adjustments based on individual preferences or system configurations. 66 | - Despite appearances, I don't claim to fully know what I'm doing. 67 | - I don't anticipate changes unless issues are raised, but I don't intend to abandon it. 68 | - Contributors to this guide welcome feedback, suggestions, or contributions via issues or pull requests. 69 | - The project does not undertake fixing issues in upstream projects beyond its scope. 70 | - For any missing information, attribution, or other, please let the maintainers know. 71 | -------------------------------------------------------------------------------- /deemix-server.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | test -d /deemix-gui/config || ( echo -- /deemix-gui/config is not present. This must be mounted via docker.; sleep 5; exit 1 ) 3 | echo -- Using user ID ${PUID}, group ID ${PGID}, umask ${UMASK} 4 | umask ${UMASK} 5 | echo -- Effective ownership downloaded files will be ${PUID}:${PGID} $(umask -S) 6 | chown -R ${PUID}:${PGID} /deemix-gui/config || (echo -- Unable to change ownership of /deemix-gui/config directory. Ensure it is mounted in Docker and has correct permissions. && exit ) 7 | exec /command/s6-setuidgid "$PUID:$PGID" /deemix-server --singleuser true --host 0.0.0.0 8 | -------------------------------------------------------------------------------- /docker-compose.yaml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | name: deemix-for-lidarr 3 | services: 4 | deemix: 5 | container_name: deemix 6 | image: codefaux/deemix-for-lidarr 7 | environment: 8 | - PUID=100 9 | - PGID=99 10 | - UMASK=0022 11 | - TZ=Etc/UTC 12 | volumes: 13 | - /docker/deemix/downloads:/downloads 14 | - /docker/deemix/config:/deemix-gui/config 15 | ports: 16 | - 6595:6595 17 | restart: unless-stopped 18 | 19 | lidarr: 20 | container_name: lidarr 21 | image: ghcr.io/hotio/lidarr:pr-plugins 22 | environment: 23 | - PUID=100 24 | - PGID=99 25 | - UMASK=0022 26 | - TZ=Etc/UTC 27 | volumes: 28 | - /docker/deemix/downloads:/downloads 29 | - /docker/lidarr/config:/config 30 | ports: 31 | - 8686:8686 32 | restart: unless-stopped 33 | --------------------------------------------------------------------------------