Tout ce qu'il faut preparer avant de lancer l'installateur
LaNotif est une plateforme de notifications push auto-hebergee. Elle permet d'envoyer des notifications iOS (APNs) et Android (FCM) via une API REST, un dashboard web et une app mobile de gestion.
install.php.
Suivez chaque etape dans l'ordre pour une installation sans accroc.
Environ 30 a 45 minutes si vous avez deja un serveur et les comptes developeur Apple / Google.
| Composant | Version minimum |
|---|---|
| PHP | >= 8.0 |
| MySQL / MariaDB | >= 5.7 / >= 10.3 |
| Apache ou Nginx | Derniere version stable |
PDO + pdo_mysql — Acces base de donneescURL — Requetes HTTP (APNs, FCM, Stripe)OpenSSL — Chiffrement et tokens JWTmbstring — Manipulation de chaines multi-octetsJSON — Encodage/decodage JSONfileinfo — Detection types MIMEphp -m en SSH pour lister les extensions installees, ou creez un fichier phpinfo.php temporaire.
# Verifier la version PHP php -v # Lister les extensions php -m | grep -iE "pdo|curl|openssl|mbstring|json|fileinfo" # Installer les extensions manquantes (Ubuntu/Debian) sudo apt install php8.2-mysql php8.2-curl php8.2-mbstring php8.2-xml
Le module mod_rewrite doit etre actif pour les URLs propres de l'API.
# Activer mod_rewrite
sudo a2enmod rewrite
sudo systemctl restart apache2
.htaccess dans votre configuration de vhost. Un exemple est fourni dans nginx.conf.example.
Creez une base de donnees dediee et un utilisateur avec les permissions appropriees.
-- Connectez-vous a MySQL en root mysql -u root -p -- Creer la base de donnees CREATE DATABASE lanotif_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- Creer l'utilisateur CREATE USER 'lanotif_user'@'localhost' IDENTIFIED BY 'VotreMotDePasseSecurise123!'; -- Accorder les permissions GRANT ALL PRIVILEGES ON lanotif_db.* TO 'lanotif_user'@'localhost'; -- Appliquer FLUSH PRIVILEGES;
root pour l'application.
| Champ | Exemple |
|---|---|
| Hote | localhost |
| Nom de la base | lanotif_db |
| Utilisateur | lanotif_user |
| Mot de passe | VotreMotDePasseSecurise123! |
Vous aurez besoin de ces informations lors de l'installation.
Transferez les fichiers du projet sur votre serveur via FTP, SFTP ou SSH.
/var/www/lanotif/ # Racine du projet ├── api/ # Endpoints API REST ├── cron/ # Scripts cron jobs ├── dashboard/ # Dashboard web ├── includes/ # Classes PHP et helpers ├── keys/ # Cles APNs et FCM (securise) │ ├── apns_key.p8 # Cle privee APNs │ └── firebase_sa.json # Service account FCM ├── .htaccess # Regles de rewrite ├── config.php # Configuration (genere par install.php) └── install.php # Installateur
# Permissions des dossiers find /var/www/lanotif -type d -exec chmod 755 {} \; # Permissions des fichiers find /var/www/lanotif -type f -exec chmod 644 {} \; # Securiser les cles privees chmod 600 /var/www/lanotif/keys/apns_key.p8 chmod 600 /var/www/lanotif/keys/firebase_sa.json # Securiser la config chmod 600 /var/www/lanotif/config.php
keys/ ne doit JAMAIS etre accessible depuis le web. Verifiez que votre .htaccess ou configuration Nginx bloque l'acces a ce repertoire.
Pour envoyer des notifications push sur iOS, vous devez creer une cle d'authentification APNs dans votre compte Apple Developer.
developer.apple.com.
LaNotif APNs Key)ABC123DEF4)ABCDE12345)com.votreentreprise.lanotif)| Champ | Exemple |
|---|---|
| Fichier .p8 | AuthKey_ABC123DEF4.p8 |
| Key ID | ABC123DEF4 |
| Team ID | ABCDE12345 |
| Bundle ID | com.votreentreprise.lanotif |
Pour envoyer des notifications sur Android (et en complement d'APNs), configurez un projet Firebase.
LaNotif)firebase_sa.json et placez-le dans le dossier keys/lanotif-12345)project_id.
| Champ | Exemple |
|---|---|
| Fichier JSON | firebase_sa.json |
| Project ID | lanotif-12345 |
Si vous souhaitez monetiser votre service avec des abonnements, configurez un compte Stripe.
pk_)sk_)pk_test_... / sk_test_...) pendant le developpement. Passez aux cles live uniquement en production.
https://votredomaine.com/api/stripe/webhookcheckout.session.completed,
customer.subscription.updated,
customer.subscription.deleted,
invoice.payment_succeeded,
invoice.payment_failed
whsec_)| Champ | Exemple |
|---|---|
| Publishable Key | pk_test_... |
| Secret Key | sk_test_... |
| Webhook Secret | whsec_... |
Maintenant que tout est prepare, lancez l'installateur web.
https://votredomaine.com/install.phpconfig.phpinstall.php pour des raisons de securiteinstall.php immediatement apres l'installation. Ce fichier permet de reinitialiser completement votre instance.
# Supprimer l'installateur apres usage rm /var/www/lanotif/install.php # Ou le deplacer hors de la racine web mv /var/www/lanotif/install.php /var/www/lanotif_backup/
Les cron jobs sont indispensables pour le traitement asynchrone des notifications.
| Script | Frequence | Role |
|---|---|---|
push_worker.php |
Toutes les minutes | Envoie les notifications push en file d'attente |
digest_worker.php |
Toutes les 5 min | Compile et envoie les digests groupes |
dispatch_worker.php |
Toutes les minutes | Dispatche les notifications vers les abonnes |
scheduled_publisher.php |
Toutes les minutes | Publie les notifications planifiees |
cleanup.php |
1x par jour | Nettoie les anciennes donnees et tokens expires |
# Ouvrir l'editeur crontab crontab -e # Ajouter les lignes suivantes : # Push worker — toutes les minutes * * * * * /usr/bin/php /var/www/lanotif/cron/push_worker.php >> /var/log/lanotif/push.log 2>&1 # Digest worker — toutes les 5 minutes */5 * * * * /usr/bin/php /var/www/lanotif/cron/digest_worker.php >> /var/log/lanotif/digest.log 2>&1 # Dispatch worker — toutes les minutes * * * * * /usr/bin/php /var/www/lanotif/cron/dispatch_worker.php >> /var/log/lanotif/dispatch.log 2>&1 # Scheduled publisher — toutes les minutes * * * * * /usr/bin/php /var/www/lanotif/cron/scheduled_publisher.php >> /var/log/lanotif/scheduled.log 2>&1 # Cleanup — tous les jours a 3h du matin 0 3 * * * /usr/bin/php /var/www/lanotif/cron/cleanup.php >> /var/log/lanotif/cleanup.log 2>&1
sudo mkdir -p /var/log/lanotif && sudo chown www-data: /var/log/lanotif
# Lister les cron jobs actifs crontab -l # Tester manuellement un script /usr/bin/php /var/www/lanotif/cron/push_worker.php # Verifier les logs tail -f /var/log/lanotif/push.log
Verifiez que tout fonctionne correctement apres l'installation.
# Verifier que l'API repond curl -s https://votredomaine.com/api/health | python3 -m json.tool # Reponse attendue : { "status": "ok", "version": "1.0" } # Tester l'authentification curl -s -H "Authorization: Bearer VOTRE_TOKEN" \ https://votredomaine.com/api/device/info | python3 -m json.tool
install.php est supprime ou inaccessibleconfig.php n'est pas accessible depuis le webkeys/ retourne une erreur 403# Verifier que les fichiers sensibles sont proteges curl -s -o /dev/null -w "%{http_code}" https://votredomaine.com/config.php # Doit retourner 403 ou 404 curl -s -o /dev/null -w "%{http_code}" https://votredomaine.com/keys/apns_key.p8 # Doit retourner 403 ou 404
https://votredomaine.com/dashboard/