From 2f86a6c1e3aec933a00f321adc63504ffeb630fa Mon Sep 17 00:00:00 2001 From: Esteban Date: Fri, 3 Jul 2026 22:11:15 +0200 Subject: [PATCH] BloomFeed v0.11 --- docs/bloomfluxdb-setup.sql | 49 +++++++++++++++++++------------------- scriptsite.sh | 14 +++++++++-- 2 files changed, 36 insertions(+), 27 deletions(-) diff --git a/docs/bloomfluxdb-setup.sql b/docs/bloomfluxdb-setup.sql index 1977fe5..1257ecd 100644 --- a/docs/bloomfluxdb-setup.sql +++ b/docs/bloomfluxdb-setup.sql @@ -1,12 +1,11 @@ --- ============================================================ --- BloomFluxDB — catalogue central de flux RSS pour les instances BloomFeed --- À exécuter sur le serveur catalogue (163.5.159.95), en root MariaDB/MySQL : --- mysql -u root -p < bloomfluxdb-setup.sql --- --- Prérequis réseau : MariaDB doit écouter sur l'extérieur --- (bind-address = 0.0.0.0 dans /etc/mysql/mariadb.conf.d/50-server.cnf, --- puis systemctl restart mariadb) et le port 3306 doit être ouvert. --- ============================================================ +/* ============================================================ */ +/* BloomFluxDB — catalogue central de flux RSS pour les instances BloomFeed */ +/* À exécuter sur le serveur catalogue (163.5.159.95), en root MariaDB/MySQL : */ +/* mysql -u root -p < bloomfluxdb-setup.sql */ +/* Prérequis réseau : MariaDB doit écouter sur l'extérieur */ +/* (bind-address = 0.0.0.0 dans /etc/mysql/mariadb.conf.d/50-server.cnf, */ +/* puis systemctl restart mariadb) et le port 3306 doit être ouvert. */ +/* ============================================================ */ CREATE DATABASE IF NOT EXISTS bloomfluxdb CHARACTER SET utf8mb4 @@ -29,25 +28,25 @@ CREATE TABLE IF NOT EXISTS feeds ( KEY idx_feeds_active (is_active) ) ENGINE = InnoDB; --- ------------------------------------------------------------ --- Utilisateur en LECTURE SEULE pour les instances BloomFeed ('%' = accessible --- depuis n'importe quelle IP). Changez le mot de passe si vous voulez restreindre, --- et reportez-le dans le .env des instances (BLOOMFLUX_DB_PASSWORD). --- ------------------------------------------------------------ +/* ------------------------------------------------------------ */ +/* Utilisateur en LECTURE SEULE pour les instances BloomFeed ('%' = accessible */ +/* depuis n'importe quelle IP). Changez le mot de passe si vous voulez restreindre, */ +/* et reportez-le dans le .env des instances (BLOOMFLUX_DB_PASSWORD). */ +/* ------------------------------------------------------------ */ CREATE USER IF NOT EXISTS 'bloomflux_reader'@'%' IDENTIFIED BY 'BloomFlux_Public_Read_2026'; GRANT SELECT ON bloomfluxdb.feeds TO 'bloomflux_reader'@'%'; FLUSH PRIVILEGES; --- ------------------------------------------------------------ --- Liste de flux pré-faite (extensible à volonté : INSERT depuis root/localhost) --- ------------------------------------------------------------ +/* ------------------------------------------------------------ */ +/* Liste de flux pré-faite (extensible à volonté : INSERT depuis root/localhost) */ +/* ------------------------------------------------------------ */ INSERT IGNORE INTO feeds (title, url, category, lang, description) VALUES --- Actualités générales +/* Actualités générales */ ('Le Monde', 'https://www.lemonde.fr/rss/une.xml', 'Actualités', 'fr', 'La une du journal Le Monde.'), ('France Info', 'https://www.franceinfo.fr/titres.rss', 'Actualités', 'fr', 'Les titres de France Info en continu.'), ('Courrier International', 'https://www.courrierinternational.com/feed/all/rss.xml', 'Actualités', 'fr', 'L''actualité internationale vue par la presse étrangère.'), ('BBC News', 'https://feeds.bbci.co.uk/news/rss.xml', 'Actualités', 'en', 'Fil d''actualité mondial de la BBC.'), --- Tech & informatique +/* Tech & informatique */ ('Korben', 'https://korben.info/feed', 'Tech', 'fr', 'Actu tech, astuces et bidouilles.'), ('Numerama', 'https://www.numerama.com/feed/', 'Tech', 'fr', 'Société numérique, tech et sciences.'), ('Next', 'https://next.ink/feed/', 'Tech', 'fr', 'Actualité informatique et numérique de fond.'), @@ -55,24 +54,24 @@ INSERT IGNORE INTO feeds (title, url, category, lang, description) VALUES ('Ars Technica', 'https://feeds.arstechnica.com/arstechnica/index', 'Tech', 'en', 'Analyses tech approfondies.'), ('Hacker News', 'https://news.ycombinator.com/rss', 'Tech', 'en', 'Les liens les plus discutés de la communauté HN.'), ('The Verge', 'https://www.theverge.com/rss/index.xml', 'Tech', 'en', 'Tech, science et culture numérique.'), --- Linux & open source +/* Linux & open source */ ('Phoronix', 'https://www.phoronix.com/rss.php', 'Open source', 'en', 'Linux, matériel et open source.'), ('LinuxFr', 'https://linuxfr.org/news.atom', 'Open source', 'fr', 'L''actualité du logiciel libre en français.'), ('It''s FOSS', 'https://itsfoss.com/rss/', 'Open source', 'en', 'Tutoriels et actus Linux/open source.'), --- Sécurité +/* Sécurité */ ('CERT-FR', 'https://www.cert.ssi.gouv.fr/feed/', 'Sécurité', 'fr', 'Alertes et avis de sécurité de l''ANSSI.'), ('Krebs on Security', 'https://krebsonsecurity.com/feed/', 'Sécurité', 'en', 'Investigations cybersécurité de Brian Krebs.'), ('Zataz', 'https://www.zataz.com/feed/', 'Sécurité', 'fr', 'Actualité cybersécurité et fuites de données.'), --- Développement +/* Développement */ ('Dev.to', 'https://dev.to/feed', 'Développement', 'en', 'Articles de la communauté dev.to.'), ('GitHub Blog', 'https://github.blog/feed/', 'Développement', 'en', 'Nouveautés et ingénierie GitHub.'), ('Laravel News', 'https://feed.laravel-news.com/', 'Développement', 'en', 'L''écosystème Laravel au quotidien.'), --- Sciences +/* Sciences */ ('Futura Sciences', 'https://www.futura-sciences.com/rss/actualites.xml', 'Sciences', 'fr', 'Actualités scientifiques tous domaines.'), ('CNRS Le Journal', 'https://lejournal.cnrs.fr/rss', 'Sciences', 'fr', 'Le journal de la recherche française.'), --- Jeux vidéo +/* Jeux vidéo */ ('Gamekult', 'https://www.gamekult.com/feed.xml', 'Jeux vidéo', 'fr', 'Actualité et critiques jeux vidéo.'), ('Rock Paper Shotgun', 'https://www.rockpapershotgun.com/feed', 'Jeux vidéo', 'en', 'Jeux PC, tests et actus.'); --- Vérification rapide +/* Vérification rapide */ SELECT category, COUNT(*) AS nb FROM feeds GROUP BY category ORDER BY category; diff --git a/scriptsite.sh b/scriptsite.sh index 1b10f13..c2aec03 100755 --- a/scriptsite.sh +++ b/scriptsite.sh @@ -67,8 +67,18 @@ for i in $(seq 1 30); do sleep 3 done -echo "==> Migrations (filet de sécurité, l'entrypoint les exécute déjà au démarrage)" -sudo docker compose exec -T app php artisan migrate --force +# NOTE : ne PAS lancer "artisan migrate" ici — l'entrypoint du conteneur app le fait +# déjà au démarrage, et deux migrations concurrentes corrompent le registre des +# migrations ("table already exists"). +echo "==> Attente de la fin des migrations de l'entrypoint" +for i in $(seq 1 30); do + if curl -sf -o /dev/null "http://localhost:${HOST_PORT}/up"; then + echo "==> Application démarrée" + break + fi + echo "==> App pas encore prête, nouvelle tentative ($i/30)" + sleep 3 +done echo "==> Vérification des conteneurs" sudo docker compose ps