Salut et bonne année 2025 à tous.
Il m'est venu à l'esprit que jusque ici, je n'avais pas localement mise en place une manière d'archiver les pages Web qui me plaisent et m'ont plues.
Rien n'est éternel, et un marque-page suit la même logique: un beau jour, vous allez cliquer pour revisiter un étrange mais intéressant site web et là c'est le drame. Le domaine a été vendu, l'auteur n'avait plus envie de le maintenir, 404 Not Found... Les raisons peuvent être multiples.
Une solution existe depuis un bon bout de temps sur l'Internet:
Archive.org. La WayBack machine m'a
sauvé (et me sauve encore) pour trouver de vieux exécutables Windows et morceaux
d'informations disparus de l'Internet.
Je me suis donc dit "Est-ce qu'il existe un projet libre et open source équivalent et pas trop dur à lancer?" et fichtrement que oui! J'ai trouvé ma joie avec Readeck : écrit en Go, il suffit de télécharger le binaire pour la bonne plateforme, le rendre exécutable, créer un utilisateur puis enfin démarrer le serveur. Ne pas oublier télécharger l'extension de navigateur (Firefox, Chrome) pour envoyer une page à Readeck en 3 clics!
Dans mon cas, la page de documentation concernant le déploiement
de Readeck n'avait pas de mention de script rc.d de service pour FreeBSD:
c'est embêtant car si je redémarre, Readeck ne sera pas démarré en même
temps que le serveur ! Et pas de possibilité de voir le status ou stopper Readeck via la commande native service
.
Voici donc ci-dessous un script de service rc.d que j'ai créé et testé.
D'abord, créez l'utilisateur readeck
avec les commandes suivantes:
mkdir /home/readeck pw useradd -d /home/readeck -w no -s /usr/sbin/nologin -n readeck chown readeck /home/readeck sysrc readeck_enable="YES"
/etc/rc.d/readeck
:
#!/bin/sh # PROVIDE: readeck # REQUIRE: FILESYSTEMS networking # KEYWORDS: web archiving . /etc/rc.subr name="readeck" program_name="readeck" procname="${name}" rcvar=readeck_enable readeck_user="root" load_rc_config $name : ${readeck_enable="NO"} : ${readeck_launch_user="readeck"} : ${readeck_chdir="/home/readeck"} : ${readeck_config="${readeck_chdir}/config.toml"} : ${readeck_exec="${readeck_chdir}/${program_name}"} : ${readeck_logfile="${readeck_chdir}/${program_name}.log"} required_files="${readeck_config}" exec_path=${readeck_exec} status_cmd="readeck_status" stop_cmd="readeck_stop" pidfile="${readeck_chdir}/${program_name}.pid" command="/usr/local/bin/daemonize" command_args="-u ${readeck_launch_user} -c ${readeck_chdir} -o ${readeck_logfile} -e ${readeck_logfile}.err -p ${pidfile} -l ${exec_path}.lck ${exec_path} serve" readeck_status() { ${exec_path} healthcheck -config ${required_files} > /dev/null 2>&1 if [ $? = 0 ]; then echo "Readeck is running and it's PID is `cat ${pidfile}`." else echo "Readeck is not running:" ${exec_path} healthcheck -config ${required_files} fi } readeck_stop() { echo Stopping readeck... ${exec_path} healthcheck -config ${required_files} > /dev/null 2>&1 if [ $? = 0 ]; then ${exec_path} cleanup -config ${required_files} kill `cat ${pidfile}` rm -f ${pidfile} rm -f ${exec_path}.lck echo Stopped readeck. else echo Server is stopped fi } run_rc_command "$1"
Et un grand merci à Olivier Meunier et leurs contributeurs pour avoir créé Readeck.