update zh-CN docs (#539)

* update zh-CN docs

* update zh-CN docs

* update zh-CN docs

* update zh-CN docs
This commit is contained in:
Bruce Huang 2022-10-08 11:36:49 +08:00 committed by GitHub
parent 5725f4b40b
commit 02049bf68d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 357 additions and 108 deletions

View file

@ -138,6 +138,8 @@ system package manager where possible (pacman, homebrew, etc etc).
bash <(curl https://raw.githubusercontent.com/ellie/atuin/main/install.sh) bash <(curl https://raw.githubusercontent.com/ellie/atuin/main/install.sh)
``` ```
And then follow [the shell setup](#shell-plugin)
### With cargo ### With cargo
It's best to use [rustup](https://rustup.rs/) to get setup with a Rust It's best to use [rustup](https://rustup.rs/) to get setup with a Rust

View file

@ -1,4 +1,4 @@
## Docker # Docker
There is a supplied docker image to make deploying a server as a container easier. There is a supplied docker image to make deploying a server as a container easier.
@ -6,7 +6,7 @@ There is a supplied docker image to make deploying a server as a container easie
docker run -d -v "$USER/.config/atuin:/config" ghcr.io/ellie/atuin:latest server start docker run -d -v "$USER/.config/atuin:/config" ghcr.io/ellie/atuin:latest server start
``` ```
## Docker Compose # Docker Compose
Using the already build docker image hosting your own Atuin can be done using the supplied docker-compose file. Using the already build docker image hosting your own Atuin can be done using the supplied docker-compose file.
@ -54,7 +54,7 @@ Start the services using `docker-compose`:
docker-compose up -d docker-compose up -d
``` ```
### Using systemd to manage your atuin server ## Using systemd to manage your atuin server
The following `systemd` unit file to manage your `docker-compose` managed service: The following `systemd` unit file to manage your `docker-compose` managed service:

View file

@ -1,4 +1,4 @@
## Kubernetes # Kubernetes
You could host your own Atuin server using the Kubernetes platform. You could host your own Atuin server using the Kubernetes platform.
@ -167,8 +167,6 @@ spec:
Finally, you may want to use a separate namespace for atuin, by creating a [`namespace.yaml`](../k8s/namespaces.yaml) file: Finally, you may want to use a separate namespace for atuin, by creating a [`namespace.yaml`](../k8s/namespaces.yaml) file:
```yaml
```yaml ```yaml
apiVersion: v1 apiVersion: v1
kind: Namespace kind: Namespace

View file

@ -37,7 +37,7 @@ atuin search --exit 0 --after "yesterday 3pm" make
你可以使用我(ellie)托管的服务器,也可以使用你自己的服务器!或者干脆不使用 sync 功能。所有的历史记录同步都是加密,即使我想,也无法访问你的数据。且我**真的**不想。 你可以使用我(ellie)托管的服务器,也可以使用你自己的服务器!或者干脆不使用 sync 功能。所有的历史记录同步都是加密,即使我想,也无法访问你的数据。且我**真的**不想。
## 特点 ## 功能
- 重新绑定 `up``ctrl-r` 的全屏历史记录搜索UI界面 - 重新绑定 `up``ctrl-r` 的全屏历史记录搜索UI界面
- 使用 sqlite 数据库存储 shell 历史记录 - 使用 sqlite 数据库存储 shell 历史记录
@ -88,6 +88,22 @@ atuin import auto
atuin sync atuin sync
``` ```
### 使用活跃图
除了托管 Atuin 服务器外,还有一个服务可以用来生成你的 shell 历史记录使用活跃图!这个功能的灵感来自于 GitHub 的使用活跃图。
例如,这是我的:
![](https://api.atuin.sh/img/ellie.png?token=0722830c382b42777bdb652da5b71efb61d8d387)
如果你也想要,请在登陆你的同步服务器后,执行
```
curl https://api.atuin.sh/enable -d $(cat ~/.local/share/atuin/session)
```
执行结果为你的活跃图 URL 地址。可以共享或嵌入这个 URL 地址令牌token<i>不是</i>加密的,只是用来防止被枚举攻击。
## 仅离线 (不同步) ## 仅离线 (不同步)
``` ```
@ -107,7 +123,9 @@ atuin import auto
bash <(curl https://raw.githubusercontent.com/ellie/atuin/main/install.sh) bash <(curl https://raw.githubusercontent.com/ellie/atuin/main/install.sh)
``` ```
### 使用cargo 然后可直接看 <a href="#shell-plugin">Shell 插件</a>
### 通过 cargo
最好使用 [rustup](https://rustup.rs/) 来设置 Rust 工具链,然后你就可以运行下面的命令: 最好使用 [rustup](https://rustup.rs/) 来设置 Rust 工具链,然后你就可以运行下面的命令:
@ -115,12 +133,16 @@ bash <(curl https://raw.githubusercontent.com/ellie/atuin/main/install.sh)
cargo install atuin cargo install atuin
``` ```
然后可直接看 <a href="#shell-plugin">Shell 插件</a>
### Homebrew ### Homebrew
``` ```
brew install atuin brew install atuin
``` ```
然后可直接看 <a href="#shell-plugin">Shell 插件</a>
### MacPorts ### MacPorts
Atuin 也可以在 [MacPorts](https://ports.macports.org/port/atuin/) 中找到 Atuin 也可以在 [MacPorts](https://ports.macports.org/port/atuin/) 中找到
@ -129,6 +151,8 @@ Atuin 也可以在 [MacPorts](https://ports.macports.org/port/atuin/) 中找到
sudo port install atuin sudo port install atuin
``` ```
然后可直接看 <a href="#shell-plugin">Shell 插件</a>
### Pacman ### Pacman
Atuin 在 Arch Linux 的 [社区存储库](https://archlinux.org/packages/community/x86_64/atuin/) 中可用。 Atuin 在 Arch Linux 的 [社区存储库](https://archlinux.org/packages/community/x86_64/atuin/) 中可用。
@ -137,6 +161,8 @@ Atuin 在 Arch Linux 的 [社区存储库](https://archlinux.org/packages/commun
pacman -S atuin pacman -S atuin
``` ```
然后可直接看 <a href="#shell-plugin">Shell 插件</a>
### 从源码编译安装 ### 从源码编译安装
``` ```
@ -145,10 +171,11 @@ cd atuin
cargo install --path . cargo install --path .
``` ```
## Shell 插件 然后可直接看 <a href="#shell-plugin">Shell 插件</a>
安装二进制文件后,需要安装 shell 插件。 ## <a id="shell-plugin">Shell 插件</a>
如果你使用的是脚本安装,那么这一切应该都会帮您完成!
安装二进制文件后,需要安装 shell 插件。 如果你使用的是脚本安装,那么这一切应该都会帮您完成!
### zsh ### zsh
@ -164,7 +191,7 @@ zinit load ellie/atuin
### bash ### bash
我们需要设置一些钩子(hooks), 所以首先需要安装 bash-preexec : 我们需要设置一些钩子hooks, 所以首先需要安装 bash-preexec :
``` ```
curl https://raw.githubusercontent.com/rcaloras/bash-preexec/master/bash-preexec.sh -o ~/.bash-preexec.sh curl https://raw.githubusercontent.com/rcaloras/bash-preexec/master/bash-preexec.sh -o ~/.bash-preexec.sh
@ -185,12 +212,17 @@ echo 'eval "$(atuin init bash)"' >> ~/.bashrc
atuin init fish | source atuin init fish | source
``` ```
到 ~/.config/fish/config.fish 文件中的 is-interactive 块中 `~/.config/fish/config.fish` 文件中的 `is-interactive` 块中
### Fig
通过 [Fig](https://fig.io) 可为 zsh bash 或 fish 一键安装 `atuin` 脚本插件。
<a href="https://fig.io/plugins/other/atuin" target="_blank"><img src="https://fig.io/badges/install-with-fig.svg" /></a>
## ...这个名字是什么意思? ## ...这个名字是什么意思?
Atuin 以 "The Great A'Tuin" 命名, 这是一只来自 Terry Pratchett 的 Discworld 系列书籍的巨龟。 Atuin 以 "The Great A'Tuin" 命名, 这是一只来自 Terry Pratchett 的 Discworld 系列书籍的巨龟。
[English]: ../../README.md [English]: ../../README.md
[简体中文]: ./README.md [简体中文]: ./README.md

90
docs/zh-CN/docker.md Normal file
View file

@ -0,0 +1,90 @@
# Docker
Atuin 提供了一个 docker 镜像image可以更轻松地将服务器部署为容器container
```sh
docker run -d -v "$USER/.config/atuin:/config" ghcr.io/ellie/atuin:latest server start
```
# Docker Compose
使用已有的 docker 镜像image来托管你自己的 Atuin可以使用提供的 docker-compose 文件来完成
在 docker-compose.yml 同级目录下创建一个 .env 文件,内容如下:
```
ATUIN_DB_USERNAME=atuin
# 填写你的密码
ATUIN_DB_PASSWORD=really-insecure
```
创建 `docker-compose.yml` 文件:
```yaml
version: '3.5'
services:
atuin:
restart: always
image: ghcr.io/ellie/atuin:main
command: server start
volumes:
- "./config:/config"
links:
- postgresql:db
ports:
- 8888:8888
environment:
ATUIN_HOST: "0.0.0.0"
ATUIN_OPEN_REGISTRATION: "true"
ATUIN_DB_URI: postgres://$ATUIN_DB_USERNAME:$ATUIN_DB_PASSWORD@db/atuin
postgresql:
image: postgres:14
restart: unless-stopped
volumes: # 不要删除索引数据库文件的永久存储空间!
- "./database:/var/lib/postgresql/data/"
environment:
POSTGRES_USER: $ATUIN_DB_USERNAME
POSTGRES_PASSWORD: $ATUIN_DB_PASSWORD
POSTGRES_DB: atuin
```
使用 `docker-compose` 启动服务:
```sh
docker-compose up -d
```
## 使用 systemd 管理你的 atuin 服务器
以下 `systemd` 的配置文件用来管理你的 `docker-compose` 托管服务:
```
[Unit]
Description=Docker Compose Atuin Service
Requires=docker.service
After=docker.service
[Service]
# Where the docker-compose file is located
WorkingDirectory=/srv/atuin-server
ExecStart=/usr/bin/docker-compose up
ExecStop=/usr/bin/docker-compose down
TimeoutStartSec=0
Restart=on-failure
StartLimitBurst=3
[Install]
WantedBy=multi-user.target
```
启用服务:
```sh
systemctl enable --now atuin
```
检查服务是否正常运行:
```sh
systemctl status atuin
```

195
docs/zh-CN/k8s.md Normal file
View file

@ -0,0 +1,195 @@
# Kubernetes
你可以使用 Kubernetes 来托管你的 Atuin 服务器。
为数据库凭证创建 [`secrets.yaml`](../../k8s/secrets.yaml) 文件:
```yaml
apiVersion: v1
kind: Secret
metadata:
name: atuin-secrets
type: Opaque
stringData:
ATUIN_DB_USERNAME: atuin
ATUIN_DB_PASSWORD: seriously-insecure
ATUIN_HOST: "127.0.0.1"
ATUIN_PORT: "8888"
ATUIN_OPEN_REGISTRATION: "true"
ATUIN_DB_URI: "postgres://atuin:seriously-insecure@localhost/atuin"
immutable: true
```
为 Atuin 服务器创建 [`atuin.yaml`](../../k8s/atuin.yaml) 文件:
```yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: atuin
spec:
replicas: 1
selector:
matchLabels:
io.kompose.service: atuin
template:
metadata:
labels:
io.kompose.service: atuin
spec:
containers:
- args:
- server
- start
env:
- name: ATUIN_DB_URI
valueFrom:
secretKeyRef:
name: atuin-secrets
key: ATUIN_DB_URI
optional: false
- name: ATUIN_HOST
value: 0.0.0.0
- name: ATUIN_PORT
value: "8888"
- name: ATUIN_OPEN_REGISTRATION
value: "true"
image: ghcr.io/ellie/atuin:main
name: atuin
ports:
- containerPort: 8888
resources:
limits:
cpu: 250m
memory: 1Gi
requests:
cpu: 250m
memory: 1Gi
volumeMounts:
- mountPath: /config
name: atuin-claim0
- name: postgresql
image: postgres:14
ports:
- containerPort: 5432
env:
- name: POSTGRES_DB
value: atuin
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: atuin-secrets
key: ATUIN_DB_PASSWORD
optional: false
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: atuin-secrets
key: ATUIN_DB_USERNAME
optional: false
resources:
limits:
cpu: 250m
memory: 1Gi
requests:
cpu: 250m
memory: 1Gi
volumeMounts:
- mountPath: /var/lib/postgresql/data/
name: database
volumes:
- name: database
persistentVolumeClaim:
claimName: database
- name: atuin-claim0
persistentVolumeClaim:
claimName: atuin-claim0
---
apiVersion: v1
kind: Service
metadata:
labels:
io.kompose.service: atuin
name: atuin
spec:
type: NodePort
ports:
- name: "8888"
port: 8888
nodePort: 30530
selector:
io.kompose.service: atuin
---
kind: PersistentVolume
apiVersion: v1
metadata:
name: database-pv
labels:
app: database
type: local
spec:
storageClassName: manual
capacity:
storage: 300Mi
accessModes:
- ReadWriteOnce
hostPath:
path: "/Users/firstname.lastname/.kube/database"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
io.kompose.service: database
name: database
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 300Mi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
io.kompose.service: atuin-claim0
name: atuin-claim0
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Mi
```
最后,你可能想让 atuin 使用单独的命名空间namespace创建 [`namespace.yaml`](../../k8s/namespaces.yaml) 文件:
```yaml
apiVersion: v1
kind: Namespace
metadata:
name: atuin-namespace
labels:
name: atuin
```
在企业级安装部署时,你可能想要数据库内容永久存储在集群中,而不是在主机系统中。在上述配置中,`storageClassName` 配置为 `manual`,主机系统的挂载目录配置为 `/Users/firstname.lastname/.kube/database`,请注意,这些配置将会使得数据库内容存储在 kubernetes 集群<i>外部</i>中。
你还应该将 `secrets.yaml` 文件中的 `ATUIN_DB_PASSWORD``ATUIN_DB_URI` 修改为更安全的加密字符串。
Atuin 运行在主机系统的 `30530` 端口上。这是通过 `nodePort` 属性进行陪你的。Kubernetes 有一个严格规则,即不允许暴露小于 30000 的端口号。为了使客户端能够正常工作,你需要在你的 `config.toml` 文件中设置端口号,例如 `sync_address = "http://192.168.1.10:30530"`
使用 `kubectl` 部署 Atuin 服务器:
```shell
kubectl apply -f ./namespaces.yaml
kubectl apply -n atuin-namespace \
-f ./secrets.yaml \
-f ./atuin.yaml
```
上面示例同时也位于 atuin 仓库repository的 [k8s](../../k8s) 目录下。

View file

@ -1,4 +1,4 @@
# 键绑定 # 键绑定
默认情况下, Atuin 将会重新绑定 <kbd>Ctrl-r</kbd>`up` 键。如果你不想使用默认绑定,请在调用 `atuin init` 之前设置 ATUIN_NOBIND 默认情况下, Atuin 将会重新绑定 <kbd>Ctrl-r</kbd>`up` 键。如果你不想使用默认绑定,请在调用 `atuin init` 之前设置 ATUIN_NOBIND
@ -35,3 +35,14 @@ eval "$(atuin init bash)"
# 绑定到 ctrl-r, 也可以在这里添加任何其他你想要的绑定方式 # 绑定到 ctrl-r, 也可以在这里添加任何其他你想要的绑定方式
bind -x '"\C-r": __atuin_history' bind -x '"\C-r": __atuin_history'
``` ```
# fish
```
set -gx ATUIN_NOBIND "true"
atuin init fish | source
# 在 normal 和 insert 模式下绑定到 ctrl-r你也可以在此处添加其他键位绑定
bind \cr _atuin_search
bind -M insert \cr _atuin_search
```

View file

@ -61,94 +61,15 @@ Atuin 服务器应该监听的端口
一个有效的 postgres URI, 用户和历史记录数据将被保存到其中。 一个有效的 postgres URI, 用户和历史记录数据将被保存到其中。
## Docker ### path
提供了一个 docker 镜像image可以更轻松地将服务器部署为容器container path 指的是给 server 添加的路由前缀。值为空字符串将不会添加路由前缀
```sh 默认为 `""`
docker run -d -v "$USER/.config/atuin:/config" ghcr.io/ellie/atuin:latest server start
```
## Docker Compose ## 容器部署说明
使用已有的 docker 镜像image来托管你自己的 Atuin可以使用提供的 docker-compose 文件来完成 你可以在容器中部署自己的 atuin 服务器:
`docker-compose.yml` 同级目录下创建一个 `.env` 文件,内容如下:
```
ATUIN_DB_USERNAME=atuin
# Choose your own secure password
ATUIN_DB_PASSWORD=really-insecure
```
创建一个 `docker-compose.yml` 文件:
```yaml
version: '3.5'
services:
atuin:
restart: always
image: ghcr.io/ellie/atuin:main
command: server start
volumes:
- "./config:/config"
links:
- postgresql:db
ports:
- 8888:8888
environment:
ATUIN_HOST: "0.0.0.0"
ATUIN_OPEN_REGISTRATION: "true"
ATUIN_DB_URI: postgres://$ATUIN_DB_USERNAME:$ATUIN_DB_PASSWORD@db/atuin
postgresql:
image: postgres:14
restart: unless-stopped
volumes: # 不要删除索引数据库文件的永久存储空间!
- "./database:/var/lib/postgresql/data/"
environment:
POSTGRES_USER: $ATUIN_DB_USERNAME
POSTGRES_PASSWORD: $ATUIN_DB_PASSWORD
POSTGRES_DB: atuin
```
使用 `docker-compose` 启动服务:
```sh
docker-compose up -d
```
### 使用 systemd 来管理你的 Atuin 服务器
以下 `systemd` 单元文件用于管理您的 `docker-compose` 托管服务:
```
[Unit]
Description=Docker Compose Atuin Service
Requires=docker.service
After=docker.service
[Service]
# docker-compose 文件所在的位置
WorkingDirectory=/srv/atuin-server
ExecStart=/usr/bin/docker-compose up
ExecStop=/usr/bin/docker-compose down
TimeoutStartSec=0
Restart=on-failure
StartLimitBurst=3
[Install]
WantedBy=multi-user.target
```
使用以下命令启动并启用服务:
```sh
systemctl enable --now atuin
```
检查它是否运行:
```sh
systemctl status atuin
```
* 有关 docker 配置的示例,请参考 [docker](docker.md)。
* 有关 kubernetes 配置的示例,请参考 [k8s](k8s.md)。