Dockerfile
Rama main · réplica de lectura del repositorio original.
FROM debian:trixie-slim
ARG NASDROP_VERSION=0.9.29
ARG VCS_REF=unknown
ARG TARGETARCH
ARG SEVENZIP_VERSION=2603
ARG SEVENZIP_SHA256_AMD64=dc99eff5008f1ab79bd7084c68513701547a808a89502bf4133683535ab3c695
ARG SEVENZIP_SHA256_ARM64=2389ba20e4d8295e8709c20b6263b69bd1ec4972fe38a04ad7a1badbf595b996
LABEL org.opencontainers.image.title="NASDrop" \
org.opencontainers.image.description="Self-hosted direct-to-storage download portal" \
org.opencontainers.image.source="https://github.com/littleweirdlab0514-web/NASDROP" \
org.opencontainers.image.version="${NASDROP_VERSION}" \
org.opencontainers.image.revision="${VCS_REF}" \
org.opencontainers.image.licenses="MIT"
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
ca-certificates \
curl \
gosu \
nodejs \
python3 \
tzdata \
xz-utils \
&& case "${TARGETARCH:-$(dpkg --print-architecture)}" in \
amd64) sevenzip_arch=x64; sevenzip_sha256="$SEVENZIP_SHA256_AMD64" ;; \
arm64) sevenzip_arch=arm64; sevenzip_sha256="$SEVENZIP_SHA256_ARM64" ;; \
*) echo "Unsupported Docker architecture: ${TARGETARCH:-$(dpkg --print-architecture)}" >&2; exit 64 ;; \
esac \
&& curl --fail --location --silent --show-error \
"https://github.com/ip7z/7zip/releases/download/26.03/7z${SEVENZIP_VERSION}-linux-${sevenzip_arch}.tar.xz" \
--output /tmp/7zip.tar.xz \
&& echo "${sevenzip_sha256} /tmp/7zip.tar.xz" | sha256sum --check --strict - \
&& mkdir -p /tmp/7zip /usr/share/doc/7zip \
&& tar -xJf /tmp/7zip.tar.xz -C /tmp/7zip 7zz License.txt \
&& install -m 0755 /tmp/7zip/7zz /usr/local/bin/7zz \
&& install -m 0644 /tmp/7zip/License.txt /usr/share/doc/7zip/License.txt \
&& rm -rf /tmp/7zip /tmp/7zip.tar.xz /var/lib/apt/lists/*
WORKDIR /app
COPY backend.py transfer_parts.py gofile_wt.mjs LICENSE THIRD_PARTY_NOTICES.md ./
COPY synology/web ./synology/web
COPY docker/account.py /app/docker/account.py
COPY docker/entrypoint.sh /usr/local/bin/nasdrop-entrypoint
COPY docker/account-command.sh /usr/local/bin/nasdrop-account
# Release ZIPs can preserve owner-only source modes. Normalize the files copied
# into the image so the configured non-root PUID can import and serve them.
RUN sed -i 's/\r$//' /usr/local/bin/nasdrop-entrypoint /usr/local/bin/nasdrop-account \
&& chmod 0755 /usr/local/bin/nasdrop-entrypoint /usr/local/bin/nasdrop-account \
&& chmod -R a+rX /app \
&& mkdir -p /config /downloads \
&& python3 -m py_compile /app/backend.py /app/docker/account.py \
&& node --check /app/gofile_wt.mjs \
&& 7zz i > /tmp/7zip-formats \
&& grep -q ' Rar ' /tmp/7zip-formats \
&& grep -q ' Rar5 ' /tmp/7zip-formats \
&& rm /tmp/7zip-formats
ENV NAS_PORTAL_STATE_DIR=/config \
NAS_PORTAL_STATIC_DIR=/app/synology/web \
NAS_PORTAL_NAS_TARGET=/downloads \
NAS_PORTAL_STORAGE_ROOTS=/downloads \
NAS_PORTAL_LISTEN_HOST=0.0.0.0 \
NAS_PORTAL_LISTEN_PORT=8791 \
NAS_PORTAL_LAUNCHER_PORT=8791 \
NAS_PORTAL_7ZZ=/usr/local/bin/7zz \
NAS_PORTAL_VERSION=${NASDROP_VERSION} \
NAS_PORTAL_DOWNLOAD_MODE=segmented \
NAS_PORTAL_AUTO_EXTRACT_ARCHIVES=true \
NAS_PORTAL_DISK_PROTECTION=true \
PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
PYTHONPATH=/app \
HOME=/config \
TZ=UTC \
PUID=1000 \
PGID=1000
EXPOSE 8791
VOLUME ["/config", "/downloads"]
HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \
CMD curl --fail --silent --show-error http://127.0.0.1:8791/api/auth/status >/dev/null || exit 1
ENTRYPOINT ["/usr/local/bin/nasdrop-entrypoint"]
CMD ["python3", "/app/backend.py"]