From fdc40da561d505b40233e6299daa446c3e94d2f3 Mon Sep 17 00:00:00 2001 From: Morgan Wattiez <morgan@zoemp.be> Date: Tue, 29 Apr 2025 23:51:23 +0200 Subject: [PATCH] wip bumping version solved it. well... --- CloudronManifest.json | 5 ++--- Dockerfile.cloudron | 11 ++++++----- VERSION | 2 +- build.sh | 14 ++++++-------- dev.sh | 18 ++++++++++++------ start.sh | 16 ++++++++++------ 6 files changed, 37 insertions(+), 29 deletions(-) diff --git a/CloudronManifest.json b/CloudronManifest.json index 7b25903..c538412 100644 --- a/CloudronManifest.json +++ b/CloudronManifest.json @@ -3,16 +3,15 @@ "title": "slskd", "author": "Morgan", "description": "file://DESCRIPTION.md", - "changelog": "file://CHANGELOG.md", "tagline": "A modern client-server application for the Soulseek file-sharing network.", "version": "1.0.3", - "manifestVersion": 2, - "minBoxVersion": "8.3.1", "healthCheckPath": "/health", "httpPort": 5030, "addons": { "localstorage": {} }, + "manifestVersion": 2, + "minBoxVersion": "8.3.1", "website": "https://zoemp.be/slskd", "contactEmail": "morgan@zoemp.be", "icon": "file://logo.png", diff --git a/Dockerfile.cloudron b/Dockerfile.cloudron index ce3c003..26ff872 100644 --- a/Dockerfile.cloudron +++ b/Dockerfile.cloudron @@ -1,4 +1,4 @@ -# syntax=docker/dockerfile:1 +# 1) Télécharger et unzipper slskd FROM debian:bookworm-slim AS downloader RUN apt-get update \ && apt-get install -y --no-install-recommends \ @@ -16,22 +16,23 @@ RUN TAG=$(curl -fsSL https://api.github.com/repos/slskd/slskd/releases/latest \ && curl -fsSL "$URL" -o slskd.zip \ && unzip slskd.zip +# 2) Image finale FROM debian:bookworm-slim RUN apt-get update \ && apt-get install -y --no-install-recommends \ tini jq ca-certificates gosu libstdc++6 \ && rm -rf /var/lib/apt/lists/* -# créer les dossiers et l'utilisateur cloudron +# Créer les répertoires code, data et cache RUN mkdir -p /app/code /app/data /run/slskd/cache \ && useradd -u 1000 -m -d /app/data -s /bin/bash cloudron \ - && chmod -R 777 /app/data /run/slskd/cache + && chown -R cloudron:cloudron /app/data /run/slskd/cache -# copier binaire + UI +# Copier binaire + UI statique COPY --from=downloader /tmp/slskd /app/code/slskd COPY --from=downloader /tmp/wwwroot /app/code/wwwroot -# config exemple & script de démarrage +# Copier config example et script de démarrage COPY slskd.yml.example /app/code/slskd.yml.example COPY start.sh /app/code/start.sh diff --git a/VERSION b/VERSION index 21e8796..ee90284 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.0.3 +1.0.4 diff --git a/build.sh b/build.sh index 9970180..3bff754 100755 --- a/build.sh +++ b/build.sh @@ -3,24 +3,22 @@ set -xeuo pipefail VERSION=$(<VERSION) IMAGE="dr.zoemp.be/slskd:${VERSION}" -LOCATION="slskd" # sous-domaine ⇒ slskd.ton-domaine.be +LOCATION="slskd" FQDN="${LOCATION}.${CLOUDRON_APP_DOMAIN:-zoemp.be}" -# 1) build + push +# 1) Build & push docker build --platform linux/amd64 -t "${IMAGE}" -f Dockerfile.cloudron . docker push "${IMAGE}" -# 2) install ou update sur Cloudron +# 2) Install ou update sur Cloudron if cloudron status --app "${FQDN}" &>/dev/null; then echo "🔄 Mise à jour de ${FQDN} → ${IMAGE}" - cloudron update \ - --image "${IMAGE}" \ - --app "${FQDN}" + cloudron update --app "${FQDN}" --image "${IMAGE}" else - echo "🚀 Installation de l’app sur ${FQDN}" + echo "🚀 Installation de org.zoemp.slskd sur ${FQDN}" cloudron install \ --image "${IMAGE}" \ --location "${LOCATION}" \ - "${CLOUDRON_MANIFEST_ID:-slskd.zoemp.be}" + org.zoemp.slskd fi diff --git a/dev.sh b/dev.sh index a447b2e..5f73ae7 100755 --- a/dev.sh +++ b/dev.sh @@ -2,15 +2,21 @@ set -xeuo pipefail VERSION=$(<VERSION) -IMAGE=dr.zoemp.be/slskd:${VERSION} +IMAGE="dr.zoemp.be/slskd:${VERSION}" -# build -docker build --platform linux/amd64 -t ${IMAGE} -f Dockerfile.cloudron . +# Préparation du dossier data (config + cache) +mkdir -p data/cache +chmod 770 data data/cache -# run localement en mappant ./data +# Build +docker build --platform linux/amd64 -t "${IMAGE}" -f Dockerfile.cloudron . + +# Run en mode dev docker run --rm -it \ --platform linux/amd64 \ - -v "$(pwd)/data:/app/data" \ + -v "$(pwd)/data":/app/data \ + -v "$(pwd)/data/cache":/run/slskd/cache \ -p 8080:5030 \ - ${IMAGE} + -e DOTNET_BUNDLE_EXTRACT_BASE_DIR=/run/slskd/cache \ + "${IMAGE}" diff --git a/start.sh b/start.sh index 63e2ba7..4e46cb0 100755 --- a/start.sh +++ b/start.sh @@ -1,16 +1,20 @@ #!/usr/bin/env bash set -xeuo pipefail -# 0) on s'assure que /app/data et /run/slskd/cache sont écrits par cloudron -chmod -R 777 /app/data /run/slskd/cache +chown -R cloudron:cloudron /app/data +chmod -R 755 /app/data +ls -ld /app/data +stat /app/data -# 1) répertoire d'extraction pour dotnet +# 1) Préparer le cache d'extraction .NET export DOTNET_BUNDLE_EXTRACT_BASE_DIR=/run/slskd/cache +mkdir -p "${DOTNET_BUNDLE_EXTRACT_BASE_DIR}" +chown cloudron:cloudron "${DOTNET_BUNDLE_EXTRACT_BASE_DIR}" -# 2) invariant globalization +# 2) Mode globalization invariant export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true -# 3) si la conf n'existe pas, on la copie depuis l'exemple +# 3) Copier la config si nécessaire if [ ! -f /app/data/slskd.yml ]; then echo "ℹ️ Copie de la config d'exemple dans /app/data/slskd.yml" cp /app/code/slskd.yml.example /app/data/slskd.yml @@ -19,7 +23,7 @@ else echo "ℹ️ Utilisation de /app/data/slskd.yml existant" fi -# 4) on lance en user cloudron +# 4) Lancer slskd sous l'utilisateur cloudron exec gosu cloudron /app/code/slskd \ --config /app/data/slskd.yml \ --http-port "${SLSKD_HTTP_PORT:-5030}" \