Files
wiki/Catalogue-Self-Hosted/apps/app-atuin.md
T
2026-06-09 18:40:21 +02:00

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

  1. Ajouter le hook à son shell (Bash, Zsh, Fish) :
    eval "$(atuin init bash)"   # ou zsh/fish
    
  2. Pour Zsh, ajouter aussi bindkey '^R' atuin-search dans .zshrc.
  3. Configurer le serveur de sync dans ~/.config/atuin/config.toml :
    sync_address = "https://atuin.example.com"
    
  4. Exclure des secrets automatiquement via les filtres : atuin search --before "1 month ago".
  5. 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

Pages Liées