#!/bin/bash set -e LIBRARY_FILE=/data/library.xml JSON_FILE=/home/default/library.json # Emplacement dans l'image echo "=== Initialisation de la bibliothèque ===" rm -f "$LIBRARY_FILE" # Ajouter les fichiers ZIM déjà présents dans /data (persistance) shopt -s nocaseglob nullglob zim_files=(/data/**/*.zim) shopt -u nocaseglob nullglob if [ ${#zim_files[@]} -gt 0 ]; then for f in "${zim_files[@]}"; do [ -f "$f" ] && kiwix-manage "$LIBRARY_FILE" add "$f" done fi [ -f "$LIBRARY_FILE" ] || echo '' > "$LIBRARY_FILE" echo "=== Démarrage du serveur Kiwix ===" kiwix-serve --library "$LIBRARY_FILE" --port=7860 & SERVER_PID=$! # Téléchargement automatique en arrière‑plan ( if [ ! -f "$JSON_FILE" ]; then echo "[auto-dl] $JSON_FILE introuvable. Aucun téléchargement automatique." exit 0 fi python3 -c " import json, subprocess, os, signal, time with open('$JSON_FILE') as f: data = json.load(f) for name, url in data.items(): fname = url.split('/')[-1] dest = '/data/' + fname if os.path.exists(dest): print(f'[auto-dl] {fname} déjà présent, ignoré.') continue print(f'[auto-dl] Téléchargement de {fname}…') ret = subprocess.run(['wget', '-c', '-O', dest, url]).returncode if ret == 0: print(f'[auto-dl] {fname} terminé, ajout à la bibliothèque.') subprocess.run(['kiwix-manage', '$LIBRARY_FILE', 'add', dest]) # Recharger la bibliothèque du serveur sans redémarrage pid = int(subprocess.check_output(['pidof', 'kiwix-serve']).strip()) os.kill(pid, signal.SIGHUP) else: print(f'[auto-dl] Échec du téléchargement de {fname}') " ) & # Attendre la fin du serveur principal wait $SERVER_PID