Dashboard personnel — agenda, tâches, notes — exposé via Cloudflare Tunnel.
- Backend : FastAPI + SQLite (Python 3.11)
- Frontend : Vanilla JS/CSS (dark theme)
- Auth : Cloudflare Access (Zero Trust)
- Déploiement : Docker Compose sur VPS
cd dashboard
pip install -r requirements.txt
uvicorn main:app --reload
# → http://localhost:8000git clone <repo-url>
cd dashboardpython3 -m venv .venv
.venv/bin/pip install -r requirements.txtpm2 start ecosystem.config.js
pm2 save
pm2 startup # pour démarrer au bootLe serveur écoute sur 127.0.0.1:8000 (pas exposé publiquement).
./deploy.shOu manuellement :
git fetch origin main
git merge origin/main
.venv/bin/pip install -r requirements.txt -q
pm2 reload dashboardpm2 status # état du process
pm2 logs dashboard # voir les logs
pm2 restart dashboard
pm2 stop dashboarddocker compose up -d --build- Compte Cloudflare avec un domaine
cloudflaredinstallé sur le VPS
# Debian/Ubuntu
curl -L https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared jammy main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
sudo apt update && sudo apt install cloudflaredcloudflared tunnel logincloudflared tunnel create dashboardCréer ~/.cloudflared/config.yml :
tunnel: <TUNNEL_ID>
credentials-file: /root/.cloudflared/<TUNNEL_ID>.json
ingress:
- hostname: dashboard.ton-domaine.com
service: http://localhost:8000
- service: http_status:404cloudflared tunnel route dns dashboard dashboard.ton-domaine.comcloudflared service install
systemctl enable cloudflared
systemctl start cloudflared- Dans le dashboard Cloudflare → Zero Trust → Access → Applications
- Add an application → Self-hosted
- Application domain :
dashboard.ton-domaine.com - Ajouter une Policy :
- Name :
Owner only - Action : Allow
- Include : Emails →
ton@email.com
- Name :
- Cloudflare gère l'authentification — aucun code d'auth à écrire
| Section | Description |
|---|---|
| Agenda | Mini calendrier + événements du jour avec timeline |
| Tâches | CRUD complet, priorités, filtres, groupes (retard/aujourd'hui/à venir) |
| Notes | Post-its colorés, persistés en SQLite |
Ctrl+N— Nouvelle tâcheEscape— Fermer la modal
dashboard/
├── main.py # FastAPI app + API REST
├── requirements.txt
├── Dockerfile
├── docker-compose.yml
├── data/ # SQLite (auto-créé)
│ └── dashboard.db
├── static/
│ ├── css/style.css
│ └── js/app.js
└── templates/
└── index.html