3.9 KiB
title: Atuin created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, file-transfer-and-sync, shell, history, rust] confidence: high contested: false sources: [https://selfh.st/apps/?tag=file-transfer-and-sync]
Atuin 🐢
Historique de shell synchronisé, chiffré, full-text searchable (Rust).
| Métadonnée | Valeur |
|---|---|
| Site web | https://atuin.sh |
| GitHub | https://github.com/atuinsh/atuin |
| License | MIT |
| Langage | Rust |
| Étoiles | 24000+ |
| Dernière MAJ | 2025 |
| Catégorie | cat-file-transfer-and-sync |
Description
Atuin remplace le traditionnel ~/.bash_history par une base SQLite locale, liée à un serveur central optionnel qui synchronise l'historique entre toutes les machines d'un même utilisateur. La fonction première est de retrouver une commande exécutée il y a six mois grâce à une recherche fuzzy ultra-rapide (Ctrl+R) avec filtres par répertoire, hôte, durée d'exécution, code de retour.
Chaque entrée est stockée avec son contexte complet : timestamp UTC, répertoire de travail, hostname, durée, exit code, commande. Atuin supporte bash, zsh, fish, nushell et conserve la compatibilité avec l'historique natif (import initial automatique). Les alias atuin search, atuin stats, atuin list permettent d'explorer ses habitudes de travail et de dégager des statistiques utiles.
Le serveur de sync officiel est atuin.sh (gratuit, clé d'API) mais il est aussi possible d'auto-héberger son instance via le binaire atuin server (PostgreSQL requis). Le chiffrement bout-en-bout est systématique : le serveur ne voit que du chiffrement e2e des commandes sensibles.
Installation
Docker Compose (serveur)
services:
atuin:
image: ghcr.io/atuinsh/atuin:latest
container_name: atuin
command: server start
environment:
- ATUIN_HOST=0.0.0.0
- ATUIN_PORT=8888
- ATUIN_OPEN_REGISTRATION=false
- ATUIN_DB_URI=postgres://atuin:***@db:5432/atuin
depends_on:
- db
ports:
- "8888:8888"
restart: unless-stopped
db:
image: postgres:16-alpine
environment:
- POSTGRES_USER=atuin
- POSTGRES_PASSWORD=changeme
- POSTGRES_DB=atuin
volumes:
- ./pgdata:/var/lib/postgresql/data
restart: unless-stopped
Client (Linux / macOS)
curl --proto '=https' --tlsv1.2 -sSf https://setup.atuin.sh | sh
atuin register -u https://atuin.example.com -e moi@example.com -n $USER
atuin import auto
atuin login -u https://atuin.example.com
Configuration
- Ajouter le hook à son shell (Bash, Zsh, Fish) :
eval "$(atuin init bash)" # ou zsh/fish - Pour Zsh, ajouter aussi
bindkey '^R' atuin-searchdans.zshrc. - Configurer le serveur de sync dans
~/.config/atuin/config.toml:sync_address = "https://atuin.example.com" - Exclure des secrets automatiquement via les filtres :
atuin search --before "1 month ago". - Sync manuelle :
atuin sync.
Alternatives
- Open source : app-syncthing (fichiers), fzf + history (basique), McFly (ML sur l'historique), zsh-autosuggestions (suggestions), broot (navigation).
- Propriétaire : Fig, Warp (commercial shell), fish_history (sans sync).
Sécurité
- Chiffrement bout-en-bout des entrées sync (clé dérivée du mot de passe utilisateur).
- Serveur ne peut pas lire le contenu des commandes.
- Tokens d'API personnels (revocables).
- Open registration désactivable en self-host.
- Stockage local SQLite : vérifier les permissions du fichier (
chmod 600).
Ressources
- Documentation : https://docs.atuin.sh
- Démo : https://atuin.sh/demo
- Code : https://github.com/atuinsh/atuin
- Discord : https://discord.gg/FQ8DaM7
Pages Liées
- cat-file-transfer-and-sync — Catégorie parente
- app-syncthing — Sync P2P fichiers
- recettes-docker-compose — Modèles de stacks