162 lines
5.8 KiB
Markdown
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
|