[![License: CC BY-NC-SA 4.0](https://img.shields.io/badge/License-CC_BY--NC--SA_4.0-lightgrey.svg)](https://creativecommons.org/licenses/by-nc-sa/4.0/) # Archivage web avec Kiwix et Zimit Voici la méthode que j'utilise afin d'archiver une page web ou bien un site internet complet pour une lecture hors ligne. J'utilise un serveur Kiwix afin de lire mes archives ZIM, l'outil Zimit pour créer les archives et celle-ci sont stockées sur un serveur externe au service. :one: Créer un utilisateur/mdp sur le serveur de stockage ainsi qu'un dossier de partage smb/cifs avec les droits qui vont bien. :two: Installer le paquet `cifs-utils` sur le serveur Kiwix, puis monter le partage à l'emplacement voulu ici : `/srv/kiwix` > :arrow_forward: Exemple fstab : >``` >//serveur-de-stockage/kiwix /srv/kiwix cifs credentials=/etc/.smbcredentials-kiwix,uid=0000,gid=000,file_mode=0770,dir_mode=0770,iocharset=utf8 0 0 >``` :warning: J'utilise pour l'authentification un fichier de conf credentials, afin de ne pas laisser en clair le user/pass, car le fichier fstab est par défaut autorisé en lecture par tous, ne pas oublier d'adapter également uid et gid. > :arrow_forward: Exemple credentials : >``` >username=user >password=MotDePasse >``` :three: Dans notre répertoire `/srv/kiwix/zim` il est important d'y déposer une première archive ZIM avant le déploiement de Kiwix, voir ce dépot publique https://library.kiwix.org :four: Ce [docker-compose](https://git.selfitdeploy.com/Willy/Archivage-ZIM/src/branch/main/docker-compose.yml) pour déployer le serveur Kiwix. :five: Utilisation manuel de Zimit Cette commande pour exécuter un archivage web en fichier ZIM : ``` docker run --rm -it -v /srv/kiwix/zim:/output ghcr.io/openzim/zimit zimit --seeds="https://lien-du-site" --name="nom-de-l'archive" --title="titre-de-l'archive" --output=/output --pageLimit=20 --waitUntil=networkidle0 --workers=4 --scopeExcludeRx="(\?q=|signup-landing\?|\?cid=)" ``` > Plus d'infos sur les variables dans le dépot du projet https://github.com/openzim/zimit :six: Utilisation d'une interface web - Mettre en place cette architecture de fichiers ``` zimit-web/ ├── app.py # Serveur Flask (API + gestion des processus) ├── templates/ │ └── index.html # Interface web ├── requirements.txt # Dépendances Python ├── tasks.json # Liste de tâches générée par le front pour le back └── zimit_archives.log # Fichier de log généré au lancement du serveur ``` - Se placer dans le repertoire `zimit-web` - Créer un environement virtuel Python `python3 -m venv menv` - Activer cet environement `menv/bin/activate` - Installer les dépendances `pip install -r requirements.txt` - Démarrer le serveur `python app.py`