Files
2026-06-09 18:40:21 +02:00

162 lines
5.8 KiB
Markdown

---
title: Wakapi
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, development, statistics, coding-time, wakatime, productivity]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=Development, https://github.com/muety/wakapi]
---
# 💻 Wakapi
> **Serveur de statistiques de temps de codage compatible WakaTime**, open source et auto-hébergeable. Suivez le temps passé à coder, par projet, par langage, par branche, avec dashboard web et API.
## 📋 Informations Générales
| Champ | Valeur |
| :--- | :--- |
| **Site web** | [wakapi.dev](https://wakapi.dev/) |
| **GitHub** | [muety/wakapi](https://github.com/muety/wakapi) |
| **License** | MIT |
| **Langage** | Go |
| **Étoiles GitHub** | 4 336 ⭐ |
| **Catégorie** | [[cat-development\|Development]] |
| **Note** | ⚠️ 100% open source, **compatibilité totale avec les plugins WakaTime** (VS Code, JetBrains, Vim, etc.). Pas d'édition payante. |
## 📝 Description
**Wakapi** est un **clone self-hosted de WakaTime** : un service qui mesure et analyse **combien de temps vous passez à coder**, et sur quoi. Comme WakaTime, il fonctionne avec des **plugins / extensions** installés dans vos IDE (VS Code, IntelliJ, Vim, Sublime, etc.) qui envoient des *heartbeats* anonymes.
**Pourquoi Wakapi plutôt que WakaTime (officiel) ?** :
- **Auto-hébergé** : pas d'envoi de données à un serveur tiers
- **RGPD-friendly** : données hébergées sur votre infra
- **Gratuit à 100%** (WakaTime officiel est freemium : dashboard public au-delà de 7 jours)
- **Open source** : auditable
- **Même plugins** : pas besoin de réécrire la config WakaTime, juste changer l'URL API
**Fonctionnalités** :
- **Dashboard web** : temps total, langages, projets, éditeurs, OS, branches
- **Heatmap** : contributions par jour (style GitHub)
- **Goals** : objectifs quotidiens / hebdo
- **Leaderboards** : classement entre membres d'une équipe
- **Projets privés** : exclus des stats
- **API REST** : pour intégrer dans d'autres outils
- **Export** : JSON, CSV
- **Multi-utilisateurs** : si partagé dans une équipe
- **Notifications** : webhooks, emails
- **Graphiques** : durée, top langages, top projets, top éditeurs
**Cas d'usage** :
- Développeur solo : suivre sa productivité, son temps de focus
- Equipe : comprendre la répartition du temps (debug vs feature, dette technique vs nouveau)
- Facturation : pour les freelances qui facturent au temps passé
- Reporting : générer des rapports hebdo/mensuels
**Plugins compatibles** : tous les éditeurs supportés par WakaTime (VS Code, JetBrains, Vim, Emacs, Sublime, Atom, Brackets…), il suffit de configurer l'URL API et la clé.
## 🚀 Installation
### Via Docker Compose (recommandé)
```yaml
# docker-compose.yml
version: '3.8'
services:
wakapi:
image: ghcr.io/muety/wakapi:latest
container_name: wakapi
restart: unless-stopped
ports:
- "8080:8080"
environment:
- WAKAPI_PASSWORD_SALT=*** - WAKAPI_JWT_SECRET=*** volumes:
- wakapi-data:/data
labels:
- "traefik.enable=true"
- "traefik.http.routers.wakapi.rule=Host(`wakapi.example.com`)"
- "traefik.http.routers.wakapi.entrypoints=websecure"
- "traefik.http.services.wakapi.loadbalancer.server.port=8080"
networks:
- proxy
volumes:
wakapi-data:
networks:
proxy:
external: true
```
### Binaire standalone
```bash
# Télécharger la dernière release
wget https://github.com/muety/wakapi/releases/latest/download/wakapi-linux-amd64
chmod +x wakapi-linux-amd64
./wakapi-linux-amd64
```
### Configuration du plugin WakaTime (VS Code)
Dans `settings.json` de VS Code :
```json
{
"wakatime.serverUrl": "https://wakapi.example.com",
"wakatime.apiKey": "waka_xxxxxxxxxxxxxxxx"
}
```
**Clé API** : à récupérer dans `Settings → API Key` du dashboard Wakapi.
## ⚙️ Configuration
1. **Premier accès** : créer un compte via l'UI (`/register`)
2. **Clé API** : copier la clé générée automatiquement
3. **Plugins IDE** : configurer l'URL + la clé (voir section installation)
4. **Heartbeat** : envoyé toutes les 2 minutes par défaut quand un fichier est édité
5. **Backups** : DB SQLite par défaut (le volume `/data`)
6. **Production** : recommandé de migrer vers PostgreSQL pour les comptes nombreux
7. **Reverse geocoding** : optionnel, pour localiser les pays des commits
## 🔗 Alternatives
- **WakaTime** (SaaS) — Service officiel, freemium, dashboard public au-delà de 7 jours gratuit
- **CodeStats** — Multi-utilisateurs natif, mais pas d'auto-hébergement trivial
- **ActivityWatch** — Time tracking **général** (pas dev), open source
- **Toggl / Clockify** — Time tracking manuel
- **Gource** — Visualisation de l'historique Git (autre approche)
- **Kodyfire** — Payant
- **TimeTagger** — Auto-hébergeable, généraliste, time-tracking
## 🔒 Sécurité
- **HTTPS obligatoire** : le plugin envoie l'URL des fichiers édités, donc sensible
- **Clé API** : à garder secrète, permet l'envoi de heartbeats
- **Auth** : login + password (bcrypt), 2FA non natif
- **SSO** : OIDC, OAuth GitHub/GitLab
- **CSP** : configurer correctement si reverse proxy
- **Données sensibles** : noms de fichiers, projets — ne pas exposer publiquement
- **Projets privés** : marquer un repo "privé" dans Wakapi le masque
- **Rate limiting** : limiter l'envoi de heartbeats (anti-DOS)
## 📚 Ressources
- [Documentation officielle](https://wakapi.dev/docs/)
- [GitHub muety/wakapi](https://github.com/muety/wakapi)
- [Plugins WakaTime (compatibles)](https://wakatime.com/plugins)
- [Démo en ligne](https://wakapi.dev/)
## 🔗 Pages Liées
- [[cat-development]] — Catégorie Development
- [[app-traefik]] — Reverse proxy
- [[app-gitea]] / [[app-forgejo]] / [[app-gitlab]] — Forges (stats par projet)
- [[securisation-home-lab]] — Bonnes pratiques
- [[recettes-docker-compose]] — Templates Docker