{{i18nTranslate('_layout.t11')}} {{i18nGetLang()==='zh' ? 'EN' : '中文'}}

# 使用Docker安装GoEdge独立实例

## 简介

当前镜像GoEdge独立实例镜像，包含了管理系统（EdgeAdmin）、API节点（EdgeAPI）、边缘节点（EdgeNode）、用户系统（EdgeUser，仅专业版以上才能登录）。

## 安装

可以使用以下命令安装当前独立实例镜像（代号edge-instance）和MySQL容器（代号mysql，非root用户请使用sudo执行）

    curl https://goedge.cloud/docker/instance/install.sh | bash

执行命令后会自动安装两个容器：

- `goedge-instance` - 为edge-instance容器
- `goedge-mysql` - 为mysql容器

然后使用以下网址访问管理系统：

    http://宿主机IP:7788

第一次登录的时候，需要设置管理员密码。

使用以下网址访问默认网站（要求80端口不被别的程序占用）：

    http://宿主机IP

其他可以访问的服务参考本文的“端口号”部分。

## 容器信息

### 网络（networks）

容器IP地址：

- `172.20.0.2` - MySQL容器IP
- `172.20.0.3` - edge-instance容器IP

### 端口号（ports）

- `7788` - 管理系统端口号
- `8001` - API grpc端口号
- `8002` - API HTTP端口号
- `7799` - 用户系统端口号（只有商业版可以登录）
- `80` - 边缘节点网站端口号
- `443` - 边缘节点HTTPS端口号（默认不启动，需要自己进入管理系统设置）

### 数据目录（volumes）

默认数据目录在 `/usr/local/goedge`，如果你想修改此目录，可以自行修改compose.yaml。

数据目录下的相关目录说明如下：

- `cache/` - 默认缓存策略设置的缓存目录
- `edge-admin/` - 管理系统相关数据
- `edge-api/` - API节点相关数据
- `edge-node/` - 边缘节点相关数据
- `edge-user/` - 用户系统相关数据
- `mysql/` - MySQL相关数据

在迁移容器时到新服务器时，你需要将当前数据目录拷贝到新的服务器，然后才能启动容器。

## 管理容器

### 查看容器运行状态

    docker ps -a

### 启动和停止

启动容器：

    docker start goedge-instance

停止容器：

    docker stop goedge-instance

### 查看日志

    docker logs goedge-instance

### 删除容器

    docker stop goedge-instance
    docker rm goedge-instance

    docker stop goedge-mysql
    docker rm goedge-mysql

### 数据库管理

可以在宿主机上通过以下命令连接数据库：

    mysql -uroot -h172.20.0.2 -p

然后输入密码 `123456`。

## 防火墙

在运行 `install.sh` 时会自动在宿主机下载并安装一个防火墙服务，名称为 `edge-firewall-server`，以便于容器可以通过利用此服务器来封禁IP。

此防火墙可以在 `https://github.com/TeaOSLab/firewall-server` 单独下载，独立启动命令：

    edge-firewall-server -addr=ADDR地址

要想在节点中使用此防火墙服务，需要在compose.yaml中配置 `EDGE_HTTP_FIREWALL_ENDPOINT`，在官网提供的 `compose.yaml` 中已经加入此变量。

## compose.yaml示例

如果你想修改数据库初始密码、数据目录等，可以在 https://goedge.cloud/docker/instance/compose.yaml 查看compose.yaml示例。

compose.yaml变量说明：

- `DATA_PREFIX=/usr/local/goedge` - 数据目录
- `NETWORK_PREFIX=172.20.0` - 网络IP前缀
- `DB_NAME=edges` - 数据库名称
- `DB_PASSWORD=123456` - 数据库密码

可以在和 `compose.yaml` 同个目录下的 `.env` 文件中设置这些变量，然后再在此目录下执行：

    docker compose up -d

{{i18nTranslate('_layout.t27')}}
{{i18nTranslate('_layout.t12')}}