depot-apt/app/entrypoint.sh
2025-04-14 21:31:26 +02:00

69 lines
1.8 KiB
Bash

#!/bin/bash
set -e
# Configuration
GPG_KEY_NAME="example"
KEY_PUBLIC="/workspace/apt-repo/pgp-key.public"
KEY_PRIVATE="/workspace/secret/pgp-key.private"
EMAIL="test@exemple.com"
echo "📦 Création du dépôt APT"
mkdir -p ./apt-repo/pool/main/binary-amd64
mkdir -p ./apt-repo/dists/stable/main/binary-amd64
# Génération des clés seulement si elles n'existent pas
make_keys() {
echo "🔐 Génération des clés GPG"
cat > example-pgp-key.batch <<EOF
Key-Type: RSA
Key-Length: 4096
Name-Real: $GPG_KEY_NAME
Name-Email: $EMAIL
Expire-Date: 0
%no-ask-passphrase
%no-protection
%commit
EOF
gpg --batch --gen-key example-pgp-key.batch
gpg --armor --export "$GPG_KEY_NAME" > "$KEY_PUBLIC"
gpg --armor --export-secret-keys "$GPG_KEY_NAME" > "$KEY_PRIVATE"
chmod 600 $KEY_PRIVATE
cp "$KEY_PUBLIC" ./apt-repo/pgp-key.public
}
sign_packages() {
cd ./apt-repo
dpkg-scanpackages --arch amd64 pool/ > dists/stable/main/binary-amd64/Packages
gzip -9 < dists/stable/main/binary-amd64/Packages > dists/stable/main/binary-amd64/Packages.gz
cd dists/stable
gpg --import /workspace/secret/pgp-key.private
echo "⚙️ Génération de Release"
/workspace/generate-release.sh > Release
echo "🔏 Signature du Release"
gpg --default-key "$GPG_KEY_NAME" -abs < Release > Release.gpg
gpg --default-key "$GPG_KEY_NAME" --clearsign < Release > InRelease
}
if [ ! -f "$KEY_PUBLIC" ]; then
make_keys
else
echo "✅ Clés GPG déjà présentes, génération ignorée"
fi
echo "🚚 Copie des paquets"
cp ./depot/* ./apt-repo/pool/main/binary-amd64/ || true
sign_packages
# Lancement serveur
echo "🚀 Lancement du serveur Gunicorn"
cd /workspace
cp index.html logo.png apt-repo/
gunicorn -b 0.0.0.0:8000 server:app
echo "📡 Dépôt APT disponible sur https://votre-domaine.tld"
echo "🔑 Clé publique disponible sur https://votre-domaine.tld/pgp-key.public"