From 3b975de2aae7619293282c3e5c57150fa9438e3f Mon Sep 17 00:00:00 2001 From: Lachie Date: Fri, 13 Sep 2024 09:27:17 +1000 Subject: [PATCH] fix(webui): incorrect docker permissions --- .changeset/lucky-planes-fry.md | 5 +++++ .dockerignore | 1 + Dockerfile | 17 +++++++++++------ deemix/src/utils/getPreferredBitrate.ts | 15 +++++++++++---- 4 files changed, 28 insertions(+), 10 deletions(-) create mode 100644 .changeset/lucky-planes-fry.md diff --git a/.changeset/lucky-planes-fry.md b/.changeset/lucky-planes-fry.md new file mode 100644 index 00000000..a161a557 --- /dev/null +++ b/.changeset/lucky-planes-fry.md @@ -0,0 +1,5 @@ +--- +"deemix-webui": patch +--- + +Actually fix docker permissions diff --git a/.dockerignore b/.dockerignore index fcbe09c3..11b7fac3 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,3 +1,4 @@ **node_modules/ **dist/ gui/ +**/tsconfig.tsbuildinfo diff --git a/Dockerfile b/Dockerfile index a1191c57..7998a143 100644 --- a/Dockerfile +++ b/Dockerfile @@ -29,25 +29,30 @@ RUN pnpm turbo build --filter=deemix-webui... FROM base AS runner +RUN apk add --no-cache su-exec + ENV NODE_ENV=production ENV DEEMIX_DATA_DIR=/config ENV DEEMIX_MUSIC_DIR=/downloads ENV DEEMIX_HOST=0.0.0.0 -RUN apk add --no-cache shadow +COPY --from=installer /app . -# RUN groupmod -g 1000 users -RUN useradd -u 911 -U -d /config -s /bin/false abc -RUN usermod -G users abc RUN mkdir -p \ $DEEMIX_DATA_DIR \ $DEEMIX_MUSIC_DIR -COPY --from=installer /app . +# Create an entrypoint script +RUN echo '#!/bin/sh' > /entrypoint.sh && \ + echo 'chown -R nobody:users $DEEMIX_DATA_DIR $DEEMIX_MUSIC_DIR' >> /entrypoint.sh && \ + echo 'chmod -R 775 $DEEMIX_DATA_DIR $DEEMIX_MUSIC_DIR' >> /entrypoint.sh && \ + echo 'exec su-exec nobody:users "$@"' >> /entrypoint.sh && \ + chmod +x /entrypoint.sh EXPOSE 6595 WORKDIR /app/webui -ENTRYPOINT ["node", "dist/main.js"] +ENTRYPOINT ["/entrypoint.sh"] +CMD ["node", "dist/main.js"] diff --git a/deemix/src/utils/getPreferredBitrate.ts b/deemix/src/utils/getPreferredBitrate.ts index ccc0e431..6fc3ddc5 100644 --- a/deemix/src/utils/getPreferredBitrate.ts +++ b/deemix/src/utils/getPreferredBitrate.ts @@ -1,5 +1,12 @@ import { Deezer, TrackFormats, errors as _errors, utils } from "deezer-sdk"; -import { HTTPError, ReadError, TimeoutError, default as got } from "got"; +import { + HTTPError, + ReadError, + TimeoutError, + default as got, + type CancelableRequest, + type Response as GotResponse, +} from "got"; import { generateCryptedStreamURL } from "../decryption"; import { PreferredBitrateNotFound, TrackNot360 } from "../errors"; import Track from "../types/Track"; @@ -35,7 +42,7 @@ export async function getPreferredBitrate( async function testURL(track: Track, url: string, formatName: string) { if (!url) return false; - let request; + let request: CancelableRequest>; try { request = got .get(url, { @@ -75,8 +82,8 @@ export async function getPreferredBitrate( let url; wrongLicense = ((formatName === "FLAC" || formatName.startsWith("MP4_RA")) && - !dz.current_user.can_stream_lossless) || - (formatName === "MP3_320" && !dz.current_user.can_stream_hq); + !dz.current_user?.can_stream_lossless) || + (formatName === "MP3_320" && !dz.current_user?.can_stream_hq); if ( track.filesizes[`${formatName.toLowerCase()}`] && track.filesizes[`${formatName.toLowerCase()}`] !== "0"