# RustFS

## [English Documentation](README.md) ｜中文文档

### 前置要求

| 软件包    | 版本     | 下载链接                                                                                                                             |
|--------|--------|----------------------------------------------------------------------------------------------------------------------------------|
| Rust   | 1.8.5+ | [rust-lang.org/tools/install](https://www.rust-lang.org/tools/install)                                                           |
| protoc | 30.2+  | [protoc-30.2-linux-x86_64.zip](https://github.com/protocolbuffers/protobuf/releases/download/v30.2/protoc-30.2-linux-x86_64.zip) |
| flatc  | 24.0+  | [Linux.flatc.binary.g++-13.zip](https://github.com/google/flatbuffers/releases/download/v25.2.10/Linux.flatc.binary.g++-13.zip)  |

### 构建 RustFS

#### 生成 Protobuf 代码

```bash
cargo run --bin gproto
```

#### 使用 Docker 安装依赖

```yaml
- uses: arduino/setup-protoc@v3
  with:
    version: "30.2"

- uses: Nugine/setup-flatc@v1
  with:
    version: "25.2.10"
```

#### 添加控制台 Web UI

1. 下载最新的控制台 UI：
   ```bash
   wget https://dl.rustfs.com/artifacts/console/rustfs-console-latest.zip
   ```
2. 创建静态资源目录：
   ```bash
   mkdir -p ./rustfs/static
   ```
3. 解压并编译 RustFS：
   ```bash
   unzip rustfs-console-latest.zip -d ./rustfs/static
   cargo build
   ```

### 运行 RustFS

#### 配置

设置必要的环境变量：

```bash
# 基础配置
export RUSTFS_VOLUMES="./target/volume/test"
export RUSTFS_ADDRESS="0.0.0.0:9000"
export RUSTFS_CONSOLE_ENABLE=true
export RUSTFS_CONSOLE_ADDRESS="0.0.0.0:9001"

# 可观测性配置
export RUSTFS_OBS_ENDPOINT="http://localhost:4317"

# 事件消息配置
#export RUSTFS_EVENT_CONFIG="./deploy/config/event.toml"
```

#### 启动服务

```bash
./rustfs /data/rustfs
```

### 可观测性系统

#### 部署

1. 进入可观测性目录：
   ```bash
   cd .docker/observability
   ```

2. 启动可观测性系统：
   ```bash
   docker compose -f docker-compose.yml  up -d
   ```

#### 访问监控面板

- Grafana: `http://localhost:3000` (默认账号/密码：`admin`/`admin`)
- Jaeger: `http://localhost:16686`
- Prometheus: `http://localhost:9090`

#### 配置可观测性

```
OpenTelemetry Collector 地址(endpoint):  http://localhost:4317 
```