跳到主要内容
版本:2.4

安装指南

本指南为您提供基于 Docker 的安装要求、安装步骤、命令行工具、配置以及升级方法等内容。

安装要求

极狐星TowerFox 当前仅支持单机容器的部署方式。

部署服务器要求:

CPU/内存: 4核 16G
磁盘空间: 100G

服务器软件环境要求:

操作系统:Ubuntu >=18.04,Debian >=9,CentOS >=7, RHEL >= 8 暂时不支持非 X86_64 架构系统。
Docker >=20.10
Docker-compose >=1.29

说明:

对于 CentOS,当前支持的版本包括:CentOS 7CentOS 8CentOS Stream 8

由于 CentOS 官方计划停止维护 CentOS Linux 项目,CentOS 8 已于 2022 年 01 月 01 日停止维护支持,CentOS 7 也将于 2024 年 06 月 30 日停止维护支持。使用停止维护的 CentOS 版本可能会遇到一些系统问题,此类问题不在极狐星TowerFox 的支持范围之内。

安装部署

极狐星TowerFox 基于 docker-compose 安装和配置平台,提供两种安装包:在线安装包和离线安装包。

  1. 在线安装包仅包含必要的安装配置文件,其他相关资源会在安装过程中在线下载,这些资源包括:
  • docker 和 docker-compose
  • 极狐星TowerFox 核心组合和依赖组件镜像

该安装方式适合有网络连接的环境。

  1. 离线安装包包含当前极狐星TowerFox 版本安装所需要的一切资源,适合无网络环境或者网络情况不太理想的环境。

两种安装包仅是包含的资源不同,其余安装配置方式完全一样。

安装步骤

安装极狐星TowerFox:

  1. 以 root 身份登录服务器,下载对应的安装包,并保存到任意目录(如/tmp/demo)。
  2. 解压安装包到当前目录。
root@VM-5-21-ubuntu:/tmp/demo# tar -xvf towerfox-v2.0.0-online.tar.gz
  1. 设置安装参数。

极狐星TowerFox 的初始安装配置参数都保存在 install.env 文件中,需要在该文件中指定安装运行目录、服务运行端口、服务器 Domain 名称、服务运行模式和 SSO 等配置,具体参数说明可参见配置

示例配置如下:

# Basic Configure 
## Install directory
TOWERFOX_BASE=/opt

## Service http Port
TOWERFOX_PORT=80
## Service https port
TOWERFOX_HTTPS_PORT=443

## SSL Certificate (only for https)
TOWERFOX_SSL_ENABLED=false
TOWERFOX_SSL_CERT=
TOWERFOX_SSL_CERT_KEY=

## Service domain,ip address or domain name (Required)
TOWERFOX_DOMAIN=

## Set it when you need different oauth host, eg https://tf.com (optional)
TOWERFOX_OAUTH_EXTERNAL_HOST=

## production or qa ,default:production
TOWERFOX_RAILS_ENV=production

# Running mode(ENTERPRISE or SOFTWARE_PARK)
TOWERFOX_RUN_MODE=ENTERPRISE

# Use external ES, default false
TOWERFOX_EXTERNAL_ES=false
## if TOWERFOX_EXTERNAL_ES is true, the elasticsearch host should be set explicitly, for example: "https://es-domain:9200"
TOWERFOX_ELASTICSEARCH_HOST=
## elastic user and password is optional. if TOWERFOX_EXTERNAL_ES is false, keep them blank!
TOWERFOX_ELASTICSEARCH_USER=
TOWERFOX_ELASTICSEARCH_PASSWORD=

# Postgresql settings
## whether use external postgresql instance, default false
TOWERFOX_EXTERNAL_POSTGRES=false
## database user and password should always be configured
TOWERFOX_POSTGRES_USER=towerfox
TOWERFOX_POSTGRES_PASSWORD=Postgrestf1_
## if TOWERFOX_EXTERNAL_POSTGRES is true, host and port should be configured; if TOWERFOX_EXTERNAL_POSTGRES is false, keep them blank!
TOWERFOX_POSTGRES_HOST=
TOWERFOX_POSTGRES_PORT=
## database name is not configurable for now

# Redis settings
## whether use external redis instance, default false
TOWERFOX_EXTERNAL_REDIS=false
## if TOWERFOX_EXTERNAL_REDIS is true, redis host,port and password should be configured; if TOWERFOX_EXTERNAL_REDIS is false, keep them blank!
TOWERFOX_REDIS_HOST=
TOWERFOX_REDIS_PORT=
TOWERFOX_REDIS_PASSWORD=

# Monitor settings (NOT RECOMMENDED in production environment)
## enable towerfox monitor system, including: prometheus, grafana, node_exporter
TOWERFOX_MONITOR_ENABLED=false
## required when towerfox monitor is enabled
TOWERFOX_INTERNAL_IP=

# Account Configure (Required)
TOWERFOX_ROOT_EMAIL=tf-admin@163.com
## Password must be at least 8 characters and include one number and one letter
TOWERFOX_ROOT_PW=Password123

# Sidekiq console account configuration
## Sidekiq job configuration
TOWERFOX_DATA_EXTRACTOR_COUNT=2
TOWERFOX_SIDEKIQ_CONCURRENCY=20
## Sidekiq memory limitation
## The maximum memory each sidekiq process is allowed to use(m,gb), it should be bigger than 500m!
TOWERFOX_SIDEKIQ_MEMORY_LIMIT=4096m

# true: server logs will not be wrote to log file on disk(/opt/towerfox/api/logs)。 Default value is false
#TOWERFOX_LOG_TO_STDOUT=false

# Audit setting
## log_file_audit_event: audit info is retrieved by gitlab log
## stream_audit_event: audit info is retrieved by gitlab audit stream
TOWERFOX_AUDIT_EVENT_MODE=log_file_audit_event

# SMTP Server settings(optional)
TOWERFOX_MAILER_ADDRESS=smtp.qiye.aliyun.com
TOWERFOX_MAILER_DOMAIN=gitlab.cn
TOWERFOX_MAILER_FROM=demo@gitlab.cn
TOWERFOX_MAILER_PASSWORD=password111
TOWERFOX_MAILER_PORT=465
TOWERFOX_MAILER_USERNAME=demo@gitlab.cn

# Encrption Keys setting (Optional)
## Encrypt session: A 128-bit string consisting of numbers and lowercase letters.
## Generate manually with the following script: towerfox/script/generateKey.sh 4
TOWERFOX_SECRET_KEY_BASE=
## Encrypt database: A 32-bit string consisting of numbers and lowercase letters
## Generate manually with the following script: towerfox/script/generateKey.sh 1
TOWERFOX_DB_KEY_BASE=
## Audit stream url token: A 32-bit string consisting of numbers and lowercase letters
## Generate manually with the following script: towerfox/script/generateKey.sh 1
TOWERFOX_AUDIT_EVENT_ENDPOINT_TOKEN=


## Login jihulab registry to pull images
## DO NOT MODIFY IT
TOWERFOX_GITLAB_REGISTRY_USER=deploy-read_registry-token
TOWERFOX_GITLAB_REGISTRY_TOKEN=MDhMjX8f1zR7Dud9ntUs

## concurrency get commit diff
TOWERFOX_GO_WORKER_COMMIT_CONCURRENT_LIMIT=

## concurrency write commit diff into file
TOWERFOX_GO_WORKER_FILE_CONCURRENT_LIMIT=

## concurrency git clone
TOWERFOX_GO_WORKER_REPO_CLONE_CONCURRENT_LIMIT=
  1. 运行安装脚本。
root@VM-5-21-ubuntu:/tmp/demo# ./install.sh

该脚本会进行如下工作:

  • 检查是否为 root,当前 OS 类型是否支持。
  • 导入初始化配置,拷贝安装文件到指定工作目录。
  • 检查是否已经安装 docker 和 docker-compose。如果没有,进行安装。
  • 依据初始环境变量,更改配置 nginx 服务。包括 nginx 配置文件变量替换;开启 ssl;为 nginx 添加/移除配置(例如 yellow page 和 kibana 等)。
  • 准备当前极狐星TowerFox 所需要的 compose 文件。
  • 检查是否需要预先导入镜像资源(离线模式需要)。
  • 安装启动极狐星TowerFox,并检查是否运行成功。
  • 提示用户是否进行初始化用户设置(可跳过)。

工作目录结构如下(默认使用 /opt 目录):

root@VM-5-21-ubuntu:/tmp/demo# tree /opt/towerfox/
/opt/towerfox/
├── api
│   ├── logs # server 的日志目录
│   │   ├── audit_alert_sidekiq.log
│   │   ├── data_scratch.json
│   │   ├── elasticsearch_client.json
│   │   ├── gitlab_client.json
│   │   ├── production.log
│   │   ├── puma.stderr.log
│   │   ├── puma.stdout.log
│   │   └── sidekiq.log
│   └── tmp
│   ├── cache
│   └── pids
├── docker-compose-additional.yml。 # 极狐星 TowerFox 附加服务组件 compose 文件,当前主要是企业黄页
├── docker-compose-es.yml # 极狐星 TowerFox elasticsearch 服务 compose 文件,包括 es 和 kibana
├── docker-compose-pg.yml # 极狐星 TowerFox postgresql 服务 compose 文件
├── docker-compose-redis.yml # 极狐星 TowerFox redis 服务 compose 文件
├── docker-compose.yml # 极狐星 TowerFox 基础服务组件 compose 文件
├── elasticsearch # 极狐星 elasticsearch 组件配置文件
│   └── elasticsearch.yml
├── kibana # 极狐星 kibana 组件配置文件
│   └── kibana.yml
├── nginx # 极狐星 nginx 服务相关配置
│   ├── logs # 极狐星 nginx 服务日志目录
│   │   ├── access.log
│   │   └── error.log
│   ├── nginx.conf # nginx 服务配置文件
│   ├── certs # 开启 ssl 服务时,保存证书文件
│   │   ├── towerfox.crt # ssl 证书文件
│   │   └── towerfox.key # ssl 证书私钥
│   ├── includes # 保存 nginx 中所有可配置项
│   │   ├── https.d
│   │   │   └── ssl.conf # 开启 ssl 的端口 server 配置
│   │   ├── servers.d # nginx 其他 server 配置
│   │   │   └── server.conf # 开启 ssl后,用于重定向到 https 服务的 server 定义
│   │   └── towerfox.d # nginx 服务附加配置文件目录,比如 kibana 和企业黄页
│   │   └── kibana.conf # nginx 中 kibana 服务相关的配置文件
└── script # 极狐星TowerFox 相关脚本,如备份和恢复
│   ├── backup.sh
│   ├── generateKey.sh
│   └── restore.sh
└── version.json

11 directories, 16 files

安装成功后,您可以通过如下方式在浏览器访问极狐星TowerFox:

TowerFox service can be visited by:
URL: http://101.42.174.54:80

初始化管理员用户为 root/[TOWERFOX_ROOT_PW]

配置

极狐星TowerFox 的配置主要集中在安装包的 install.env 文件中,相关字段功能说明如下:

极狐星TowerFox 的安装目录,默认为系统的 /opt 目录,强烈建议不要将安装包的路径作为极狐星TowerFox 的安装目录,以免为日常维护和版本升级带来麻烦。
TOWERFOX_BASE

极狐星TowerFox 服务的对外 HTTP 端口,默认为 80,可以根据实际情况设置。
TOWERFOX_PORT

极狐星TowerFox 服务的对外 HTTPS 端口,默认为 443,可以根据实际情况设置。
TOWERFOX_HTTPS_PORT

极狐星TowerFox 是否开启 ssl,默认为 false,即不开启
TOWERFOX_SSL_ENABLED
SSL 证书文件绝对路径,开启 ssl 时有效。如 “/tmp/certs/domain.crt”
TOWERFOX_SSL_CERT
SSL 证书私钥文件绝对路径,开启 ssl 时有效。如 “/tmp/certs/domain.key”
TOWERFOX_SSL_CERT_KEY

极狐星TowerFox 服务器的域名,可以是 IP 地址(必须)。
TOWERFOX_DOMAIN

极狐星TowerFox oauth callback 对外 host,如访问 TF 的 URL 不等于设置的 TF DOMAIN + TF PORT,则需要设置该变量(非必须)
比如 TF 前面有 LB,访问 tf.com 时,LB 转发到 tf.com:18080,这时就需要设置 TOWERFOX_OAUTH_EXTERNAL_HOST 为 tf.com
TOWERFOX_OAUTH_EXTERNAL_HOST=

极狐星TowerFox 的运行模式,可选值:ENTERPRISE 或 SOFTWARE_PARK,默认为 ENTERPRISE。SOFTWARE_PARK 模式适用于园区场景,会有“企业黄页”以及企业信息审核功能。
TOWERFOX_RUN_MODE

极狐星 PostgreSQL 数据库配置。(使用的数据库名字暂时不可配置,默认为“gumiho_api_production”)
是否使用外部数据库。默认为 false
TOWERFOX_EXTERNAL_POSTGRES
数据库管理员用户名
TOWERFOX_POSTGRES_USER
数据库管理员用户密码
TOWERFOX_POSTGRES_PASSWORD
使用外部数据库时,指定数据库地址; 使用自带数据服务时候,留空即可
TOWERFOX_POSTGRES_HOST
连接数据库的端口,默认为 5432
TOWERFOX_POSTGRES_PORT

极狐星 Redis 服务配置。
是否使用外部 Redis 服务,默认为 false
TOWERFOX_EXTERNAL_REDIS
使用外部 Redis 服务时,指定 Redis 服务地址;使用自带 Redis 服务,留空即可
TOWERFOX_REDIS_HOST
使用外部 Redis 服务时,指定 Redis 服务端口;使用自带 Redis 服务,留空即可。默认 6379
TOWERFOX_REDIS_PORT
使用外部 Redis 服务时,指定 Redis 服务访问密码;使用自带 Redis 服务,留空即可。
TOWERFOX_REDIS_PASSWORD

启用极狐星自带的监控系统,包括:prometheus、grafana、node_exporter 等监控组件
TOWERFOX_MONITOR_ENABLED=true
极狐星服务所在节点的内网 IP 地址,当启用极狐星自带健康系统模块时,用于 node_exporter 组件
TOWERFOX_INTERNAL_IP=172.19.5.21

极狐星服务日志是否写入日志文件。true:server 端日志不再写入日志文件(/opt/towerfox/api/logs 目录下日志),默认为 false
TOWERFOX_LOG_TO_STDOUT

极狐星获取审计信息方式:
1. 从GitLab日志获取审计信息(默认):log_file_audit_event
2. 从GitLab审计流获取: stream_audit_event
TOWERFOX_AUDIT_EVENT_MODE=log_file_audit_event

是否使用外部第三方 ES,默认 false,即使用极狐星自带的 elasticsearch 服务
TOWERFOX_EXTERNAL_ES
如果使用外部第三方 ES,需要明确给出 es 服务的 url,如 “https://es-domain:9200”
TOWERFOX_ELASTICSEARCH_HOST
如果外部第三方 ES 服务开启了用户名/密码认证,需要配置如下两个参数。注意:如果使用极狐星自带的 elasticsearch 服务,不要配置这两个参数!
TOWERFOX_ELASTICSEARCH_USER
TOWERFOX_ELASTICSEARCH_PASSWORD

极狐星Worker配置 (极狐星的 worker 用于处理数据抽取,历史数据统计等任务)
启动的用于处理任务的 worker 服务个数,默认只启动一个
TOWERFOX_DATA_EXTRACTOR_COUNT=1
每个 worker 进程可以并行运行的线程个数,默认为 10
TOWERFOX_SIDEKIQ_CONCURRENCY=10
每个 worker 服务允许使用的最大内存量(单位 m,gb),最小为 500 m。超过指定内存用量,worker 进程会被杀掉,确保主机资源不会被耗尽
TOWERFOX_SIDEKIQ_MEMORY_LIMIT=4096m

初始化管理员 root 用户的邮箱和密码,密码长度至少 8 位,并且包含数字和字母!(必填)
TOWERFOX_ROOT_EMAIL=admin@163.com
TOWERFOX_ROOT_PW=Password123


极狐星的 SMTP 配置,用于发送通知邮件,比如告警信息等,相关字端说明如下:
SMTP 服务器地址
TOWERFOX_MAILER_ADDRESS
邮件中接收域的名称
TOWERFOX_MAILER_DOMAIN
邮件发送人地址
TOWERFOX_MAILER_FROM
SMTP 服务器用户名和密码,一般就是邮箱登录名和密码
TOWERFOX_MAILER_PASSWORD
TOWERFOX_MAILER_USERNAME
SMTP 服务器访问端口
TOWERFOX_MAILER_PORT


极狐星 sesion 加密用的 key。由数字和小写字母组成的 128 位长度的随机字符串
TOWERFOX_SECRET_KEY_BASE
对极狐星数据库敏感字端加密用的 key。由数字和小写字母组成的 32 位长度的随机字符串
TOWERFOX_DB_KEY_BASE
验证极狐星审计流的 token。由数字和小写字母组成的 32 位长度的随机字符串
TOWERFOX_AUDIT_EVENT_ENDPOINT_TOKEN


登录 JihuLab 私有项目的 regisry,拉取镜像资源的配置信息。不要更改!后期会删除!
TOWERFOX_GITLAB_REGISTRY_USER=deploy-read_registry-token
TOWERFOX_GITLAB_REGISTRY_TOKEN=gQtsvV7YZ6RLHgvCmXFL

说明: TOWERFOX_SECRET_KEY_BASETOWERFOX_DB_KEY_BASETOWERFOX_AUDIT_EVENT_ENDPOINT_TOKEN 三个 key 为可选配置。如果用户不设置,极狐星TowerFox 将使用统一的默认值。

上述三个 key 可通过 towerfox/script/generateKey.sh 脚本手动生成。如果使用自定义值,在进行更新/升级时,需要确保这三个 key 的值不变,否则会导致极狐星TowerFox 功能异常。

TOWERFOX_ROOT_EMAILTOWERFOX_ROOT_PW,这两个参数配置极狐星初始管理员 root 账号的 Email 地址和密码,为必填项。 初始登录需要使用该 Email 和密码!

命令行工具

极狐星TowerFox 在安装成功后,内置了命令行工具 tfctl,可用于基本的操作运维。

root@VM-5-21-ubuntu:/tmp/demo# tfctl --help

Usage:
./tfctl [COMMAND] [ARGS...]
./tfctl --help

Commands:
ps Check towerfox service running status
start Start specific towerfox service
stop Stop specific towerfox service, default for all services
restart Restart specific towerfox service, default for all services
reload Start all towerfox services
uninstall Uninstall speicific towerfox services, default for all services. NOTE: service and related resource will be erased!
configure_root Initialize root and demo users. Including configure email and password for root user under /opt/towerfox/.env
create_demodata Generate and insert demo data to towerfox
remove_demodata Remove demo data from towerfox

其中:

  • configure_root:配置管理员 root 用户的邮箱和密码以及用于演示的 demo 用户。注意⚠️:再次执行该命令会覆盖之前的邮箱和密码配置。

  • create_demodata:向系统中导入 demo 数据用做演示,这些数据不会和真实的极狐GitLab 产生互动。

  • remove_demodata:删除导入的 demo 数据,只保留真实数据。

注意: tfctl 命令在运行时,会读取 [TOWERFOX_BASE]/towerfox/.env 配置文件。

监控模块

安装配置

极狐星TowerFox 提供内置的监控模块,用于对极狐星TowerFox 自身运行情况进行实时监控。开启并使用监控功能的方式如下:

  1. install.env 配置文件中开启监控模块。
TOWERFOX_MONITOR_ENABLED=true
TOWERFOX_INTERNAL_IP=172.19.5.21

说明: TOWERFOX_MONITOR_ENABLED:启用极狐星TowerFox 内置监控模块,包括 prometheusgrafananode_exporter 等组件。同时,如果使用极狐星TowerFox 内置的 postgresqlredis 等组件,也会启动对应的 exporter 组件,用于对接监控系统。

TOWERFOX_INTERNAL_IP:极狐星TowerFox 所在服务节点的内网 IP 地址,主要用于 node_exporter 组件。TOWERFOX_MONITOR_ENABLEDtrue 时,其为必填项;如果为空,会导致 node_exporter 启动出错。

  1. 正常安装部署极狐星TowerFox 服务

极狐星TowerFox 安装后,会部署启动一套完整的监控系统,当前包括如下组件:

  • prometheus
  • grafana
  • node-exporter
  • postgres-exporter
  • redis-exporter

完成监控系统的启动后,会自动进行如下监控相关配置:

  • prometheus 的 metric target 配置
  • grafana 中来自 prometheus 的数据源配置
  • grafana 中几个初始默认 dashborad 导入,包括 node-exporter dashbaord、postgres-exporter dashboard 和 redis-exporter dashboard
  • 通过 nginx 实现 grafana 和 prometheus 服务的反向代理

访问使用

通过 /grafana 路径实现对 grafana 的访问,初始默认的用户名和密码为:admin/admin,首次访问需要更改密码。

grafana

通过 /prometheus 路径实现对 prometheus 的访问。

prometheus

注意事项

  1. 极狐星TowerFox 使用内置的持久层服务时(postgresql、redis 和 es 等),也会启动对应的 exporter 服务,方便对接内置或者外部已有监控系统。
  2. 当配置启用极狐星TowerFox 内置监控系统时,才会启动 prometheus、grafana 和 node_exporter 这三个组件;如果用户使用外部已有监控系统,需要用户手动更改相关监控服务配置。
  3. 如果极狐星TowerFox 使用外部持久层服务(postgresql、redis 和 es 等),对这些服务的监控配置不属于极狐星TowerFox 范畴,需要用户手动把这些组件纳入内置或者外部已有监控体系。
  4. 生产系统不建议开启极狐星TowerFox 内置监控系统,因为自带的监控模块不支持高可用特性。
  5. 当前极狐星TowerFox 服务端暂时还未提供 metric 接口,不能对服务端和任务队列等进行监控。

备份和恢复

极狐星TowerFox 安装运行后,相关文件的分布路径如下:

  • /opt/towerfox

    默认运行路径,在安装时可设置。主要存放系统运行时所需的配置文件及运行时产生的日志数据。

  • /usr/local/bin/tfctl

    命令行工具

  • /var/lib/docker

    默认加载的 docker 镜像以及保存运行数据的 docker volume,最重要的运行数据都保存在这里。

/opt/towerfox 目录下的配置文件在安装后一般不会频繁变更,因此这部分数据的备份,用户手动保存一次即可。

对于保存系统实时运行数据的 docker volume,包括 postgresql、redis、upload 等信息,极狐星TowerFox 提供了备份和恢复脚本,用于用户进行实时备份,并恢复到备份之前的状态。

备份

备份步骤如下:

  1. 定位到 [TOWERFOX_RUN_BASE]/script 目录下(默认为"/opt/towerfox/script")。
  2. 执行 "backup.sh" 脚本。
  3. 备份脚本之后,默认会在 [TOWERFOX_RUN_BASE] 目录下,生成名为 "backup" 的文件夹,并生成多个后缀名为 "tar.gz" 的压缩文件,对应各个 docker volumne 卷内容,如下所示:
root@VM-5-21-ubuntu:/opt/towerfox# ls -l backup/
total 52720
-rw-r--r-- 1 root root 49M Feb 25 10:55 towerfox_es_data.tar.gz
-rw-r--r-- 1 root root 52M Feb 25 10:55 towerfox_postgres.tar.gz
-rw-r--r-- 1 root root 1.5K Feb 25 10:55 towerfox_rails_cache.tar.gz
-rw-r--r-- 1 root root 92K Feb 25 10:55 towerfox_redis.tar.gz
-rw-r--r-- 1 root root 1.5K Feb 25 10:55 towerfox_upload_storage.tar.gz

至此,您已完成备份操作。您还可以将 [TOWERFOX_RUN_BASE]/backup 保存到其他位置。

注意⚠️: 您必须以 root 身份执行备份;再次执行备份脚本,会覆盖之前备份生成的数据!

恢复

将极狐星TowerFox 实例恢复到备份时的状态,步骤如下:

  1. 定位到 [TOWERFOX_RUN_BASE]/script 目录下(默认为 /opt/towerfox/script)。
  2. 设置 BACKUP_FOLDERTOWERFOX_RUN_BASE 两个环境变量,分别指定备份文件保存目录和当前极狐星TowerFox 实例的运行目录,示例如下:
export BACKUP_FOLDER=/tmp/backup/
export TOWERFOX_RUN_BASE=/opt/towerfox/
  1. 执行 restore.sh 脚本,开始进行数据恢复。该脚本执行如下操作:
  • 找到 BACKUP_FOLDER 目录下的备份文件。
  • 停止当前极狐星TowerFox 服务,并将相关数据卷删除
  • 使用备份数据进行数据恢复。
  • 再次启动极狐星TowerFox 服务。
  1. 数据恢复完成。

注意⚠️:

  1. 您必须以 root 身份进行数据恢复;数据恢复需要指定备份文件路径和极狐星TowerFox 运行目录两个参数,否则,数据恢复操作不会执行。
  2. 数据恢复最好在一个全新安装的相同版本的极狐星TowerFox 实例中执行,如果目标极狐星TowerFox 实例中已有数据,这些数据会被覆盖!

系统升级

极狐星TowerFox 的升级功能分为两个部分:自动配置更新和用户手动检查和启动。

自动配置更新

这部分通过升级脚本 upgrade.sh 完成,主要完成如下工作:

  1. 停止当前极狐星TowerFox 服务。
  2. 自动备份当前极狐星TowerFox 的 [TOWERFOX_RUN_BASE] 工作目录(默认为 /opt/towerfox)下的内容。
  • [TOWERFOX_RUN_BASE] 目录下的文件夹(比如 api、nginx、elasticsearch、script 等)直接以 .old 为后缀名备份到当前目录。
  1. 完成新版本安装。
  • 将最新安装文件拷贝到当前工作目录。
  • 完成相关环境变量替换。
  • 将最新 tfctl 命令后工具拷贝到 PATH 中。
  1. 在极狐星TowerFox 的当前工作目录中生成最新的 .env文件。
  • 老版本极狐星TowerFox 工作目录下的 .env 内容保持不变。
  • 将新版本极狐星TowerFox 中新增的环境变量添加到这个 .env 文件中。

用户手动检查和启动

完成脚本升级后,当前极狐星TowerFox 工作目录下已经是最新版本,并且对应的 .env 中也是最新且最全的环境变量,此时需要用户手动进行检查:

  1. 极狐星TowerFox 工作目录下的 .env 文件(默认为 /opt/towerfox/.env)。
  • 升级前配置的值是否正确。
  • 新版本新增的环境变量是否正确。
  1. 极狐星TowerFox 工作目录下其他文件夹的内容。
  • 主要是 nginx 文件夹下的配置文件,以及 script 文件夹下的内容。
  1. 极狐星TowerFox 工作目录下的 docker-compose.yml 内是否是最新版本。
  2. 通过 tfctl reload 启动最新的极狐星TowerFox 服务。

升级示例

将极狐星TowerFox v1.4.0 版本升级至 v1.5.0 版本。

  • 当前极狐星TowerFox v1.4.0 的工作目录是默认的 /opt/towerfox
  • 下载极狐星TowerFox v1.5.0 的安装包,解压到 /tmp/towerfox-package 目录。
  • 在进行升级操作之前,建议进行极狐星TowerFox 的备份操作,防止重要数据意外丢失。
  • 根据当前极狐星TowerFox 的实际情况,设置 v1.5.0 安装包对应的配置文件,即 /tmp/towerfox-package/install.env 文件,确保配置文件内容是正确的。
  • 执行如下命令,进行版本升级准备工作。
root@VM-5-21-ubuntu:/tmp/towerfox-package# export TOWERFOX_RUN_BASE=/opt/towerfox
root@VM-5-21-ubuntu:/tmp/towerfox-package# ./upgrade.sh

上述命令对应输出如下:

⚠️  It's strongly recommended that you backup your Towerfox data  before upgrading! \n
⚠️ Do you want to continue?
Continue? [y/n]: y
======================= Begin to upgrade towerfox =======================
[TOWERFOX Log]: Step 1: Stop current Towerfox service

[TOWERFOX Log]: Step 2: Add new added variable from install.env to .env file
[TOWERFOX Log]: TOWERFOX_BASE already exist in /opt/towerfox/.env, skip it
[TOWERFOX Log]: TOWERFOX_PORT already exist in /opt/towerfox/.env, skip it
[TOWERFOX Log]: TOWERFOX_HTTPS_PORT already exist in /opt/towerfox/.env, skip it
[TOWERFOX Log]: TOWERFOX_SSL_ENABLED already exist in /opt/towerfox/.env, skip it
[TOWERFOX Log]: TOWERFOX_SSL_CERT already exist in /opt/towerfox/.env, skip it
[TOWERFOX Log]: TOWERFOX_SSL_CERT_KEY already exist in /opt/towerfox/.env, skip it
[TOWERFOX Log]: TOWERFOX_DOMAIN already exist in /opt/towerfox/.env, skip it
[TOWERFOX Log]: TOWERFOX_RUN_MODE already exist in /opt/towerfox/.env, skip it
[TOWERFOX Log]: TOWERFOX_GITLAB_URL already exist in /opt/towerfox/.env, skip it
[TOWERFOX Log]: TOWERFOX_OAUTH_APPLICATION_ID already exist in /opt/towerfox/.env, skip it
[TOWERFOX Log]: TOWERFOX_OAUTH_SECRET already exist in /opt/towerfox/.env, skip it
[TOWERFOX Log]: TOWERFOX_EXTERNAL_ES already exist in /opt/towerfox/.env, skip it
[TOWERFOX Log]: TOWERFOX_EXTERNAL_POSTGRES already exist in /opt/towerfox/.env, skip it
[TOWERFOX Log]: TOWERFOX_POSTGRES_USER already exist in /opt/towerfox/.env, skip it
[TOWERFOX Log]: TOWERFOX_POSTGRES_PASSWORD already exist in /opt/towerfox/.env, skip it
[TOWERFOX Log]: TOWERFOX_FETCH_AFTER_MAPPING already exist in /opt/towerfox/.env, skip it
[TOWERFOX Log]: TOWERFOX_FETCH_HISTORY_DAYS already exist in /opt/towerfox/.env, skip it
[TOWERFOX Log]: TOWERFOX_ROOT_EMAIL already exist in /opt/towerfox/.env, skip it
[TOWERFOX Log]: TOWERFOX_ROOT_PW already exist in /opt/towerfox/.env, skip it
[TOWERFOX Log]: TOWERFOX_GITLAB_REGISTRY_USER already exist in /opt/towerfox/.env, skip it
[TOWERFOX Log]: TOWERFOX_GITLAB_REGISTRY_TOKEN already exist in /opt/towerfox/.env, skip it
⚠️ Please Check & Confirm new configuration files under /opt/towerfox/.env \n
TOWERFOX_BASE=/opt
TOWERFOX_DOMAIN=152.136.177.209
TOWERFOX_EXTERNAL_ES=false
TOWERFOX_FETCH_AFTER_MAPPING=true
TOWERFOX_FETCH_HISTORY_DAYS=7
TOWERFOX_GITLAB_REGISTRY_TOKEN=xxxxxxxxxxxx
TOWERFOX_GITLAB_REGISTRY_USER=deploy-read_registry-token
TOWERFOX_GITLAB_URL=http://43.143.142.127
TOWERFOX_OAUTH_APPLICATION_ID=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TOWERFOX_OAUTH_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TOWERFOX_PORT=80
TOWERFOX_ROOT_EMAIL=admin@163.com
TOWERFOX_ROOT_PW=Password123
TOWERFOX_RUN_BASE=/opt/towerfox
TOWERFOX_RUN_MODE=ENTERPRISE
TOWERFOX_HTTPS_PORT=443
TOWERFOX_SSL_ENABLED=true
TOWERFOX_SSL_CERT=/tmp/mycerts/domain.crt
TOWERFOX_SSL_CERT_KEY=/tmp/mycerts/domain.key
TOWERFOX_EXTERNAL_POSTGRES=false
TOWERFOX_POSTGRES_USER=postgres
TOWERFOX_POSTGRES_PASSWORD=postgres
TOWERFOX_HOST=https://152.136.177.209:443
⚠️ Do you want to continue?
Continue ? [y/n]: y
[TOWERFOX Log]: source new configuration file under /opt/towerfox/.env
[TOWERFOX Log]: Step 3: Backup current files to .old folder
[TOWERFOX Log]: delete exist .old folder: /opt/towerfox/api.old
[TOWERFOX Log]: delete exist .old folder: /opt/towerfox/nginx.old
[TOWERFOX Log]: delete exist .old folder: /opt/towerfox/script.old
[TOWERFOX Log]: delete exist .old folder: /opt/towerfox/elasticsearch.old
[TOWERFOX Log]: delete exist .old folder: /opt/towerfox/kibana.old
[TOWERFOX Log]: Step 4: New configuration file will be shipped under /opt/towerfox
[TOWERFOX Log]: remove http configuration content
[TOWERFOX Log]: generate https audit url
check and move ssl certificate files to run folder
[TOWERFOX Log]: check and copy ssl certificate files to /opt/towerfox/nginx/certs
[TOWERFOX Log]: remove yellow page from nginx for enterprise mode
[TOWERFOX Log]: login jihulab registry to pull images
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
[TOWERFOX Log]: login to registry.jihulab.com successfully!
net.ipv4.ip_forward = 1
[TOWERFOX Log]: Upgrade process complete!

⚠️ Please check new configuration and env files under /opt/towerfox
⚠️ Especially for .env and component config files!

⚠️ After that, Start new Towerfox service with command: tfctl reload
  • 至此,您已完成升级所需的"自动配置更新"步骤。此时极狐星TowerFox 工作目录(/opt/towerfox)已经是最新版本配置,但此时服务还未启动。

  • 手动检查极狐星TowerFox 工作目录下的关键配置文件:

    • /opt/towerfox/.env
    • /opt/towerfox/docker-compose.yml
    • /opt/towerfox/nginx/
  • 配置文件无误,手动启动极狐星TowerFox 服务。

root@VM-5-21-ubuntu:/opt/towerfox# tfctl reload

Starting towerfox-nginx ... done
Starting towerfox-redis ... done
Recreating towerfox_front_end_1 ... done
Recreating towerfox-db ... done
Recreating towerfox_runner_1 ... done
Recreating towerfox_sidekiq_1 ... done
Recreating towerfox_rails_1 ... done
root@VM-5-21-ubuntu:/opt/towerfox#
  • 登录检查极狐星TowerFox 检查服务和数据是否正常。

支持的升级路径

极狐星TowerFox 支持的升级路径如下表所示。

当前版本升级到 1.7(⚫:支持;◯:不支持)
1.6.2
1.6.1
1.6.0
1.5.2
1.5.1
1.5.0
1.4.1
1.4.0
1.3.0
1.2.3