首页 公告 项目 RSS

搭建Atuin服务器同步你的shell历史记录

May 9, 2023 本文有 750 个字 需要花费 2 分钟阅读

简介

Atuin 使用 SQLite 数据库取代了你现在拥有的 shell 历史,并为你的命令记录了额外的内容。此外,它还通过 Atuin 服务,在机器之间提供可选的、完全加密的历史记录同步功能。

简单来说就是可以在你的多台机器之间同步你输入过的命令,很不错,应该会作为我的一个长期服务一直玩下去,所有的命令在数据库中都是加密的,所以不用担心安全问题,下面是官网

https://atuin.sh/

操作

虽然atuin提供了他的k8syaml的文件但是我还是使用我自己写的

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: atuin
  namespace: app
spec:
  selector:
    matchLabels:
      app: atuin
  serviceName: atuin
  replicas: 1
  template:
    metadata:
      labels:
        app: atuin
    spec:
      containers:
        - name: atuin
          image: ghcr.io/ellie/atuin:14.0.1
          args:
            - "server"
            - "start"
          env:
            - name: ATUIN_HOST
              value: "0.0.0.0"
            - name: ATUIN_PORT
              value: "8888"
            - name: ATUIN_OPEN_REGISTRATION
              value: 'true'
            - name: ATUIN_DB_URI
              value: postgres://xxx:xxx@xxxx/atuin
          volumeMounts:
            - name: atuin-data
              mountPath: /config
          ports:
            - containerPort: 8888
              name: web
  volumeClaimTemplates:
    - metadata:
        name: atuin-data
      spec:
        accessModes:
          - ReadWriteOnce
        storageClassName: managed-nfs-storage
        resources:
          requests:
            storage: 200Gi

解释下环境变量参数

  • ATUIN_HOST: 监听的主机,这里就直接0.0.0.0吧
  • ATUIN_PORT: 端口
  • ATUIN_OPEN_REGISTRATION: 是不是开放注册
  • ATUIN_DB_URI: postgresql数据库地址,创建完数据库之后,默认的表结构什么的会在程序启动的时候自动创建
apiVersion: v1
kind: Service
metadata:
  name: atuin
  namespace: app
spec:
  type: ClusterIP
  selector:
    app: atuin
  ports:
  - port: 80
    targetPort: 8888
    name: http
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: atuin-ingress
  namespace: app
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/ssl-passthrough: "true"
    nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
spec:
  rules:
  - host: "atuin.xxx.cn"
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: atuin
            port:
              number: 80
  tls:
  - hosts:
    - atuin.xxx.cn
    secretName: atuin-xxx-cn-tls

创建完成服务器之后就是在shell上安装atuin,我的是mac使用的是zsh

brew install atuin

安装完成之后配置zsh

echo 'eval "$(atuin init zsh)"' >> ~/.zshrc

之后重新打开一个zsh会话

配置自己的服务器

vim ~/.config/atuin/config.toml

sync_address = "https://atuin.xxx.cn"

注册一个账号

atuin register -u xxx -e [email protected] -p xxx

登录

atuin login -u xxx -p xxx

如果你想登录到另外一台机器,那么还需要一个密钥,密钥在第一台机器的

cat ~/.local/share/atuin

倒入zsh的命令历史记录

atuin import zsh

同步

atuin sync

查看命令报告

atuin stats

[▮▮▮▮▮▮▮▮▮▮] 3947 ls
[▮▮▮▮      ] 1659 cd
[▮▮▮       ] 1224 ssh
[▮▮▮       ] 1192 git push
[▮▮        ] 1152 git add
[▮▮        ]  840 git commit
[]  636 vim
[]  398 bash
[          ]  380 git pull
[          ]  350 curl
Total commands:   17222
Unique commands:  4322

登出

atuin logout

默认搜索的快捷键是方向键上键,和ctrl +r 当你找到命令之后直接回车就好了

其他的貌似也没有什么可以玩的

欢迎关注我的博客www.bboy.app

Have Fun