Un service en arrière-plan qui synchronise votre emploi du temps Pronote sur Google Agenda. Celui-ci vous alerte aussi lorsqu'un cours est modifié ou annulé via ntfy ou Telegram (optionnel).
- Guide complet de déploiement sur Dokploy - Instructions détaillées pour déployer sur Dokploy
- Installation locale - Voir ci-dessous pour une installation manuelle
Vous aurez besoin d'une version récente de Node.js Vous pouvez installer pm2 pour démarrer le service en arrière-plan Vous pouvez configurer ntfy ou Telegram pour recevoir des notifications lors de certaines actions apportées à l'EDT
- Cloner le dépôt
git clone https://github.com/johan-perso/syncpronote.git- Installer les dépendances
cd syncpronote
npm install
# ou "pnpm install" si vous utilisez pnpm- Configurer le service
cd cli
node auth-pronote.js
# Suivez les instructions pour configurer l'accès à Pronote
node auth-google.js
# Suivez les instructions pour configurer l'accès à Google Calendar
# Important : un fichier `google-credentials.json` doit exister à la racine du projet, il doit correspondre au fichier JSON téléchargé sur le dashboard Google (détails d'authentification du client, choissisez "application de bureau")
mv .config/secrets.example.json .config/secrets.json
nano .config/secrets.json
# (!) Sur Docker, vous devrez créer un volume pour `.config/secrets.json` puisqu'il est modifiée automatiquement à chaque reconnexion à Pronote
# Ajouter une valeur `GOOGLE_CALENDAR_ID` avec l'identifiant de l'agenda Google qui contiendra les nouveaux événements (format similaire à celui d'une adresse mail)
# Vous pouvez ajouter `NTFY_URL` + `NTFY_TOPIC` et les réglages d'authentification facultatifs (`NTFY_USERNAME` + `NTFY_PASSWORD`) pour recevoir des notifications lors de la modification ou suppression d'un cours.
# Vous pouvez également ajouter `TELEGRAM_BOT_TOKEN` + `TELEGRAM_CHAT_ID` pour recevoir des notifications via Telegram.- Lancer le service
npm start
# ou vous pouvez utiliser pm2 pour le lancer en arrière plan
pm2 start index.js --name "SyncPronote"Dokploy est une plateforme de déploiement qui facilite le déploiement d'applications conteneurisées. Voici comment déployer SyncPronote sur Dokploy :
- Configurer les authentifications localement (sur votre machine) :
cd cli
# Configurer Pronote
node auth-pronote.js
# Configurer Google Calendar
node auth-google.js
# Important : un fichier `google-credentials.json` doit exister à la racine du projetCela créera un fichier .config/secrets.json avec vos tokens d'authentification.
-
Sur Dokploy, créer une nouvelle application Docker Compose
-
Configurer le repository Git : pointez vers votre fork de ce dépôt
-
Configurer les variables d'environnement dans Dokploy avec les valeurs de votre fichier
.config/secrets.json:GOOGLE_CALENDAR_IDGOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRETGOOGLE_REFRESH_TOKENPRONOTE_ROOT_URLPRONOTE_TOKENPRONOTE_ACCOUNT_KIND(généralement6pour un compte étudiant)PRONOTE_USERNAMEPRONOTE_DEVICE_UUID
Optionnel (pour les notifications) :
NTFY_URL(par défaut :https://ntfy.sh)NTFY_TOPICNTFY_USERNAME(si authentification requise)NTFY_PASSWORD(si authentification requise)TELEGRAM_BOT_TOKEN(token du bot Telegram)TELEGRAM_CHAT_ID(ID du chat Telegram)
Optionnel (pour le monitoring) :
UPTIME_PING_URL
-
Configurer un volume persistant (important !) :
- Créer un volume monté sur
/usr/src/app/.config - Cela permettra au fichier
secrets.jsond'être mis à jour automatiquement à chaque reconnexion à Pronote
- Créer un volume monté sur
-
Déployer : Dokploy construira l'image Docker et lancera le conteneur
# Copier le fichier d'exemple
cp .env.example .env
# Éditer .env avec vos valeurs
nano .env
# Créer le répertoire de configuration
mkdir -p config
# Lancer le conteneur
docker-compose up -d
# Voir les logs
docker-compose logs -fToutes les demies-heures (x:00 et x:30) entre 6h et 21h, les cours sur la semaine actuelle ainsi que les trois semaines à venir seront récupérés depuis Pronote et comparés aux entrées de l'agenda Google. Les événements manquants seront ajoutés, les cours modifiés seront mis à jour et les cours annulés seront supprimés.
Seules les entrées considérées comme des cours peuvent être mises à jour ou supprimées. Les autres événements du calendrier ne seront pas touchés.
Pour recevoir des notifications via ntfy, configurez les variables suivantes dans .config/secrets.json :
NTFY_URL: URL du serveur ntfy (par défaut :https://ntfy.sh)NTFY_TOPIC: Le topic à utiliser pour les notificationsNTFY_USERNAMEetNTFY_PASSWORD: Identifiants si authentification requise (optionnel)
Pour recevoir des notifications via Telegram :
-
Créer un bot Telegram :
- Ouvrez Telegram et cherchez @BotFather
- Envoyez
/newbotet suivez les instructions - Récupérez le token du bot (format :
123456789:ABCdefGHIjklMNOpqrsTUVwxyz)
-
Obtenir votre Chat ID :
- Envoyez un message à votre bot
- Visitez
https://api.telegram.org/bot<VOTRE_TOKEN>/getUpdates - Récupérez la valeur
chat.iddans la réponse
-
Configurer les variables dans
.config/secrets.json:TELEGRAM_BOT_TOKEN: Le token de votre botTELEGRAM_CHAT_ID: Votre Chat ID
Vous pouvez activer ntfy et Telegram simultanément pour recevoir des notifications sur les deux plateformes.
Personnaliser les heures des cours :
Le fichier
utils/custom-hourspermet de changer les heures de début et de fin des cours annoncées par Pronote. Vous devrez modifier les valeurs pour les faire correspondre à votre emploi du temps.
Personnaliser le nom des matières :
Vous pouvez modifier le fichier
utils/classnames.jspour personnaliser le nom affiché dans votre agenda pour chacune de vos matières. Certaines matières sont déjà préconfigurées et seront affichées dans votre agenda sans modification à effectuer.
MIT © Johan. Soutenez ce projet si vous souhaitez m'aider 💙