<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Atuin on slash-root.fr</title><link>https://slash-root.fr/tags/atuin/</link><description>Recent content in Atuin on slash-root.fr</description><generator>Hugo -- gohugo.io</generator><language>fr-fr</language><lastBuildDate>Thu, 13 Aug 2026 23:00:00 +0200</lastBuildDate><atom:link href="https://slash-root.fr/tags/atuin/index.xml" rel="self" type="application/rss+xml"/><item><title>Atuin : auto-héberger son historique shell</title><link>https://slash-root.fr/atuin-auto-heberger-historique-shell/</link><pubDate>Thu, 13 Aug 2026 23:00:00 +0200</pubDate><guid>https://slash-root.fr/atuin-auto-heberger-historique-shell/</guid><description>&lt;img src="https://slash-root.fr/atuin-auto-heberger-historique-shell/cover.png" alt="Featured image of post Atuin : auto-héberger son historique shell" /&gt;&lt;h2 id="introduction"&gt;&lt;a href="#introduction" class="header-anchor"&gt;&lt;/a&gt;Introduction&#10;&lt;/h2&gt;&lt;p&gt;L&amp;rsquo;historique du shell, c&amp;rsquo;est un peu la mémoire du sysadmin. On y retrouve cette commande magique copiée à 3 h du matin, le one-liner &lt;code&gt;iptables&lt;/code&gt; dont on a oublié la syntaxe, ou la ligne &lt;code&gt;ffmpeg&lt;/code&gt; qui a enfin fonctionné. Problème : par défaut, cet historique reste prisonnier de chaque machine.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Atuin&lt;/strong&gt; propose de remplacer l&amp;rsquo;historique natif de bash/zsh/fish par une base de données locale synchronisable sur un serveur auto-hébergé. Résultat : on retrouve son historique partout, avec recherche fuzzy et chiffrement côté client.&lt;/p&gt;&#10;&lt;p&gt;Voici comment déployer son propre serveur Atuin proprement.&lt;/p&gt;&#10;&lt;h2 id="quest-ce-quatuin-"&gt;&lt;a href="#quest-ce-quatuin-" class="header-anchor"&gt;&lt;/a&gt;Qu&amp;rsquo;est-ce qu&amp;rsquo;Atuin ?&#10;&lt;/h2&gt;&lt;p&gt;Atuin fait deux choses :&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Enrichir l&amp;rsquo;historique&lt;/strong&gt; : horodatage, durée d&amp;rsquo;exécution, code de retour, répertoire de travail, etc.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Synchroniser entre appareils&lt;/strong&gt; : via un serveur auto-hébergé, l&amp;rsquo;historique reste disponible sur toutes les machines.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Toutes les données envoyées au serveur sont chiffrées avec une clé générée localement. Le serveur stocke des blobs chiffrés : sans la clé, il ne peut rien lire.&lt;/p&gt;&#10;&lt;h2 id="pourquoi-self-hoster-"&gt;&lt;a href="#pourquoi-self-hoster-" class="header-anchor"&gt;&lt;/a&gt;Pourquoi self-hoster ?&#10;&lt;/h2&gt;&lt;p&gt;Le service cloud officiel existe et est pratique. Mais si on déjà self-host Nextcloud, Vaultwarden, Immich… autant garder son historique chez soi aussi. Ça élimine la dépendance à un tiers, et ça permet de maîtriser les données.&lt;/p&gt;&#10;&lt;p&gt;Le déploiement est simple : une image Docker et une base PostgreSQL.&lt;/p&gt;&#10;&lt;h2 id="déploiement-avec-docker-compose"&gt;&lt;a href="#d%c3%a9ploiement-avec-docker-compose" class="header-anchor"&gt;&lt;/a&gt;Déploiement avec Docker Compose&#10;&lt;/h2&gt;&lt;p&gt;Atuin se déploie facilement en self-hosting avec Docker Compose.&lt;/p&gt;&#10;&lt;h3 id="docker-composeyml"&gt;&lt;a href="#docker-composeyml" class="header-anchor"&gt;&lt;/a&gt;docker-compose.yml&#10;&lt;/h3&gt;&lt;p&gt;Voici un exemple minimal. Le port est bindé sur &lt;code&gt;127.0.0.1&lt;/code&gt; pour éviter toute exposition directe sur Internet.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;services&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;atuin&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;image&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;ghcr.io/atuinsh/atuin:latest&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;container_name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;atuin&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;restart&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;unless-stopped&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;command&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;server start&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;environment&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;ATUIN_DB_URI&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;postgres://atuin:${ATUIN_DB_PASSWORD}@db/atuin&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;ATUIN_DB_USERNAME&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;atuin&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;ATUIN_DB_PASSWORD&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;${ATUIN_DB_PASSWORD}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;ATUIN_HOST&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;0.0.0.0&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;ATUIN_PORT&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;8888&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;ATUIN_OPEN_REGISTRATION&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;false&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;ATUIN_TLS__ENABLE&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;false&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;TZ&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;Europe/Paris&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;volumes&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;/etc/localtime:/etc/localtime:ro&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;./config:/config&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;ports&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;127.0.0.1&lt;/span&gt;:&lt;span style="color:#ae81ff"&gt;8888&lt;/span&gt;:&lt;span style="color:#ae81ff"&gt;8888&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;networks&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;atuin&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;db&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;image&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;postgres:18&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;container_name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;atuin-db&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;restart&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;unless-stopped&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;environment&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;POSTGRES_USER&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;atuin&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;POSTGRES_PASSWORD&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;${ATUIN_DB_PASSWORD}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;POSTGRES_DB&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;atuin&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;volumes&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;/etc/localtime:/etc/localtime:ro&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;./pgdata:/var/lib/postgresql/data&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;networks&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;atuin&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;networks&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;atuin&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;&lt;strong&gt;Note sécurité :&lt;/strong&gt; si vous exposez Atuin sur Internet, faites-le derrière un reverse proxy (Traefik, Nginx, Caddy…) avec TLS. Ne laissez jamais le port 8888 accessible directement depuis l’extérieur.&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;h3 id="variables-sensibles--le-fichier-env"&gt;&lt;a href="#variables-sensibles--le-fichier-env" class="header-anchor"&gt;&lt;/a&gt;Variables sensibles : le fichier &lt;code&gt;.env&lt;/code&gt;&#10;&lt;/h3&gt;&lt;p&gt;Le mot de passe de la base de données est injecté via un fichier &lt;code&gt;.env&lt;/code&gt; situé à côté du &lt;code&gt;docker-compose.yml&lt;/code&gt; :&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;ATUIN_DB_PASSWORD&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;un-mot-de-passe-fort&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Docker Compose charge automatiquement ce fichier et remplace &lt;code&gt;${ATUIN_DB_PASSWORD}&lt;/code&gt; dans le compose.&lt;/p&gt;&#10;&lt;h3 id="création-du-premier-compte"&gt;&lt;a href="#cr%c3%a9ation-du-premier-compte" class="header-anchor"&gt;&lt;/a&gt;Création du premier compte&#10;&lt;/h3&gt;&lt;p&gt;Avec &lt;code&gt;ATUIN_OPEN_REGISTRATION=false&lt;/code&gt;, personne ne peut s&amp;rsquo;inscrire librement. Pour créer le premier compte, la méthode classique est d&amp;rsquo;activer temporairement l&amp;rsquo;inscription ouverte, de créer le compte depuis un client Atuin, puis de refermer.&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Activez l&amp;rsquo;inscription ouverte dans &lt;code&gt;.env&lt;/code&gt; :&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;ATUIN_OPEN_REGISTRATION&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;true&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;&#10;&lt;li&gt;Recréez le conteneur pour prendre en compte la variable :&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker compose up -d --force-recreate&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="3"&gt;&#10;&lt;li&gt;Depuis un client Atuin déjà configuré avec &lt;code&gt;sync_address&lt;/code&gt;, créez le compte :&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;atuin register -u julien -e julien@example.com -p votre-mot-de-passe&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="4"&gt;&#10;&lt;li&gt;Repassez &lt;code&gt;ATUIN_OPEN_REGISTRATION=false&lt;/code&gt;, recréez le conteneur, et c&amp;rsquo;est terminé.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;La documentation officielle du self-hosting avec Docker détaille cette procédure :&#10;&lt;a class="link" href="https://docs.atuin.sh/self-hosting/docker-setup/" target="_blank" rel="noopener"&#10; &gt;https://docs.atuin.sh/self-hosting/docker-setup/&lt;/a&gt;&lt;/p&gt;&#10;&lt;h2 id="configuration-client--premier-appareil"&gt;&lt;a href="#configuration-client--premier-appareil" class="header-anchor"&gt;&lt;/a&gt;Configuration client : premier appareil&#10;&lt;/h2&gt;&lt;p&gt;Installez le client sur votre poste :&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl --proto &lt;span style="color:#e6db74"&gt;&amp;#39;=https&amp;#39;&lt;/span&gt; --tlsv1.2 -LsSf https://setup.atuin.sh | sh&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Configurez l&amp;rsquo;adresse du serveur :&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir -p ~/.config/atuin&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat &amp;gt; ~/.config/atuin/config.toml &lt;span style="color:#e6db74"&gt;&amp;lt;&amp;lt;EOF&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;sync_address = &amp;#34;https://history.example.com&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;EOF&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Le compte a été créé côté serveur, mais la clé de chiffrement doit être générée localement. Lancez &lt;code&gt;atuin key&lt;/code&gt; &lt;strong&gt;avant&lt;/strong&gt; le premier login :&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;atuin key&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;atuin login -u julien -p &amp;lt;mot-de-passe&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;atuin sync&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;&lt;strong&gt;Important :&lt;/strong&gt; &lt;code&gt;atuin key&lt;/code&gt; affiche une liste de mots. C&amp;rsquo;est votre clé de chiffrement. Sauvegardez-la dans votre gestionnaire de mots de passe. Sans elle, vous ne pourrez pas récupérer votre historique.&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;h2 id="ajouter-un-autre-appareil"&gt;&lt;a href="#ajouter-un-autre-appareil" class="header-anchor"&gt;&lt;/a&gt;Ajouter un autre appareil&#10;&lt;/h2&gt;&lt;p&gt;Sur les machines suivantes, &lt;strong&gt;ne générez pas une nouvelle clé&lt;/strong&gt; avec &lt;code&gt;atuin key&lt;/code&gt;. Vous ne pourriez pas lire l&amp;rsquo;historique déjà synchronisé.&lt;/p&gt;&#10;&lt;p&gt;Depuis un appareil déjà configuré, affichez la clé existante :&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;atuin key&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Sur la nouvelle machine, placez cette même clé avant de vous connecter :&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir -p ~/.local/share/atuin&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# écrire la clé dans ~/.local/share/atuin/key&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#34;sync_address = \&amp;#34;https://history.example.com\&amp;#34;&amp;#34;&lt;/span&gt; &amp;gt; ~/.config/atuin/config.toml&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;atuin login -u julien -p &amp;lt;mot-de-passe&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;atuin sync&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La clé peut aussi être copiée directement depuis &lt;code&gt;~/.local/share/atuin/key&lt;/code&gt; d&amp;rsquo;une machine vers l&amp;rsquo;autre, par exemple via votre gestionnaire de mots de passe ou &lt;code&gt;scp&lt;/code&gt;.&lt;/p&gt;&#10;&lt;h2 id="intégration-au-shell"&gt;&lt;a href="#int%c3%a9gration-au-shell" class="header-anchor"&gt;&lt;/a&gt;Intégration au shell&#10;&lt;/h2&gt;&lt;h3 id="bash"&gt;&lt;a href="#bash" class="header-anchor"&gt;&lt;/a&gt;Bash&#10;&lt;/h3&gt;&lt;p&gt;Ajoutez dans &lt;code&gt;~/.bashrc&lt;/code&gt; :&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;eval &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;atuin init bash&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="zsh"&gt;&lt;a href="#zsh" class="header-anchor"&gt;&lt;/a&gt;Zsh&#10;&lt;/h3&gt;&lt;p&gt;Ajoutez dans &lt;code&gt;~/.zshrc&lt;/code&gt; :&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;eval &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;atuin init zsh&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="fish"&gt;&lt;a href="#fish" class="header-anchor"&gt;&lt;/a&gt;Fish&#10;&lt;/h3&gt;&lt;p&gt;Dans un shell fish, exécutez :&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fish" data-lang="fish"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;atuin&lt;/span&gt; init fish &lt;span style="color:#f92672"&gt;|&lt;/span&gt; source&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Pour rendre la configuration permanente :&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fish" data-lang="fish"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;echo&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;atuin init fish | source&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.config/fish/config.fish&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Rechargez votre configuration ou ouvrez un nouveau terminal.&lt;/p&gt;&#10;&lt;h2 id="utilisation-quotidienne"&gt;&lt;a href="#utilisation-quotidienne" class="header-anchor"&gt;&lt;/a&gt;Utilisation quotidienne&#10;&lt;/h2&gt;&lt;p&gt;Une fois initialisé, Atuin remplace le rappel de l&amp;rsquo;historique classique (&lt;code&gt;Ctrl+R&lt;/code&gt;) par une interface enrichie :&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="Interface de recherche Atuin" class="gallery-image" data-flex-basis="443px" data-flex-grow="184" height="520" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://slash-root.fr/atuin-auto-heberger-historique-shell/atuin-search.png" srcset="https://slash-root.fr/atuin-auto-heberger-historique-shell/atuin-search_hu_c8b1e2a51a79ac44.png 800w, https://slash-root.fr/atuin-auto-heberger-historique-shell/atuin-search.png 960w" width="960"&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;Ctrl+R&lt;/code&gt; : recherche fuzzy dans l&amp;rsquo;historique.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;atuin search &amp;lt;terme&amp;gt;&lt;/code&gt; : recherche en ligne de commande.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;atuin sync&lt;/code&gt; : synchronisation manuelle.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;atuin stats&lt;/code&gt; : statistiques d&amp;rsquo;utilisation.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;L&amp;rsquo;historique est chiffré localement avant envoi. Le serveur ne voit que des données opaques.&lt;/p&gt;&#10;&lt;h2 id="conclusion"&gt;&lt;a href="#conclusion" class="header-anchor"&gt;&lt;/a&gt;Conclusion&#10;&lt;/h2&gt;&lt;p&gt;Atuin est un petit outil qui change la vie quand on vit dans un terminal. Auto-hébergé, il ajoute une brique de plus à un infrastructure personnelle tout en gardant le contrôle sur ses données.&lt;/p&gt;&#10;&lt;p&gt;Le seul point de vigilance : la clé de chiffrement. C&amp;rsquo;est elle qui protège tout votre historique. Perdez-la, et même vous ne pourrez plus rien lire.&lt;/p&gt;&#10;</description></item></channel></rss>