Kiwix / start.sh
madiba-elate's picture
Update start.sh
ffbafd8 verified
Raw
History Blame Contribute Delete
1.8 kB
#!/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 version="20110515"></library>' > "$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