玩EVE Online的同学应该都对SeAT这款军团管理工具有所了解,绝大多数军团在成员加入之前都会要求玩家提交SeAT以供审查。由于SeAT的搭建教程在中文互联网上几乎没有,导致本人在搭建时研究了很久。今天本文将详细的介绍SeAT的搭建方式,SeAT的安装方法有两种,分别是通过PHP手动安装和Docker安装,由于手动安装收到操作系统不同会有不同的命令,本文将只介绍Docker的安装过程。(注:部署SeAT的前提是能够连接外网)
安装Docker
Linux
如果您没有安装Docker,请使用以下命令进行安装:
sh <(curl -fsSL get.docker.com)
Windows
如果您使用的是Windows系统,请下载并安装Docker Desktop:Docker Desktop下载
安装Docker Compose
Linux
如果您没有安装Docker Compose,请使用以下命令进行安装:
Centos/RHEL
yum install -y epel-release
yum install -y docker-compose
Ubuntu
sudo apt-get update
sudo apt-get install docker-compose-plugin
Windows
Docker Compose 包含在 Windows 上的 Docker Desktop 中,不需要单独安装
下载SeAT模板文件
Linux
创造一个目录来存放SeAT文件,比如/opt/seat-docker,然后下载并解压SeAT的Docker模板:
mkdir -p /opt/seat-docker
cd /opt/seat-docker
curl -fsSL https://github.com/eveseat/seat-docker/archive/refs/heads/master.zip -o seat-docker.zip
unzip seat-docker.zip -d /opt/seat-docker -j
接下来将 seat-docker 根目录中的 .env.example 文件重命名为 .env
mv /opt/seat-docker/.env.example /opt/seat-docker/.env
接下来,将生成一个唯一的密钥,用于内部加密:
sed -i -- 's/APP_KEY=insecure/APP_KEY='$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c32 ; echo '')'/g' .env
Windows
(注意!!!Windows需要使用PowerShell而不是cmd)创造一个目录来存放SeAT文件,比如/opt/seat-docker,然后下载并解压SeAT的Docker模板:
mkdir C:\seat-docker
cd C:\seat-docker
Invoke-WebRequest -Uri https://github.com/eveseat/seat-docker/archive/refs/heads/master.zip -OutFile seat-docker.zip
Expand-Archive -Path c:\seat-docker\seat-docker.zip -DestinationPath c:\seat-docker
接下来将 seat-docker 根目录中的 .env.example 文件重命名为 .env
Rename-Item -Path "c:\seat-docker\.env.example" -NewName ".env"
接下来,将生成一个唯一的密钥,用于内部加密:
$appkey = (-join ((65..90) + (97..122) | Get-Random -Count 32 | % {[char]$_})); (Get-Content .env -Raw) -replace "APP_KEY=insecure", "APP_KEY=$appkey" | Set-Content .env
ESI 配置
登录EVE Online 开发者门户并创建一个新的应用程序。
为您的应用程序填写名称和描述,用户在查看第三方应用程序对其帐户的访问权限时会看到此名称。
接下来,将连接类型设置为身份验证和 API 访问,选择全部的ESI 范围并指定回调 URL
回调地址是身份验证成功后,用户应重定向到的回调 URL。应设置为:
https://你的域名/auth/eve/callback
创建新应用程序后,需要记住EVE_CLIENT_ID和EVE_CLIENT_SECRET这两个值后面会用到。
修改配置项
使用 Traefik
Traefik 是一款开源的反向代理与负载均衡工具,它监听后端的变化并自动更新服务配置。
如果您计划使用Traefik部署SeAT,它将自动在Let's Encrypt注册您的帐户,它将为您提供免费的域名证书,请使用以下命令创建ACME配置文件:
mkdir acme
touch acme/acme.json
chmod 600 acme/acme.json
自行代理
如果您有Nginx等代理服务器可以跳过以上步骤。
修改.env文件
- 自行代理的服务端口,请修改为服务器未占用的端口。如果使用Traefik可以注释掉
PROXY_BACKEND_HTTP_PORT=8080
- Traefik部署使用的端口,如果服务器没有开放80端口,ACME可能无法正常获取到证书。如果使用自行代理可以注释掉。
TRAEFIK_HTTP_PORT=80 # Only used for ACME, SeAT won't listen here.
TRAEFIK_HTTPS_PORT=443
- Traefik部署时ACME获取证书所用的邮箱,要求真实有效。如果使用自行代理可以注释掉。
TRAEFIK_ACME_EMAIL=you@domain.tld
- 部署的SeAT的域名。
SEAT_DOMAIN=seat.xxxxx
- SeAT使用的数据库地址,SeAT默认会生成一个mariadb数据库容器,如果你想使用外置数据库请修改以下配置项并注释掉docker-compose.yml中对mariadb容器的依赖。请勿使用mysql数据库,而是使用mariadb,否则会报错。
DB_CONNECTION=mysql
DB_DATABASE=seat
DB_USERNAME=seat
DB_HOST=mariadb
DB_PORT=3306
DB_PASSWORD=i_should_be_changed
- SeAT默认并不使用redis作为缓存,如果你想要使用redis作为缓存在后续配置项中将缓存设置为redis。
REDIS_HOST=cache
REDIS_PORT=6379
REDIS_PASSWORD= #如果有密码
7.SeAT所使用的邮件通知服务。如果你不知道如何设置请自行搜索smtp服务的相关教程。
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=noreply@localhost.local
MAIL_FROM_NAME='SeAT Administrator'
- 之前在 ESI 配置时生成的内容。
EVE_CLIENT_ID=
EVE_CLIENT_SECRET=
EVE_CALLBACK_URL=${APP_URL}/auth/eve/callback
- SeAT可以添加的额外软件包,可在官方文档中获取,将包名填入以下配置项,每项之间用逗号隔开。
SEAT_PLUGINS=
- SeAT默认使用文件作为缓存,如果你想要使用redis作为缓存请在第六项中设置好redis地址,并将下列项改为redis。
ESEYE_CACHE_DRIVER=file
启动SeAT服务
自行代理
docker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.traefik.yml up
如果采用外置数据库可以去掉 -f docker-compose.mariadb.yml
如果需要后台启动请使用以下命令:
docker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.traefik.yml up -d
容器启动后便可以通过设置的 APP_URL
访问您的SeAT。
使用 Traefik
docker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.proxy.yml up
如果采用外置数据库可以去掉 -f docker-compose.mariadb.yml
如果需要后台启动请使用以下命令:
docker compose -f docker-compose.yml -f docker-compose.mariadb.yml --f docker-compose.proxy.yml up -d
容器启动后便可以通过设置的 http://host:port
访问您的SeAT。host为您的服务器地址,port为您之前设置的 PROXY_BACKEND_HTTP_PORT
。
管理员登录
您登录SeAT之后默认是没有管理员权限的。需要使用内置的管理员账户给其他账户进行授权,过程如下,
- 进入seat-docker目录并执行以下命令:
cd /opt/seat-docker
docker-compose exec seat-web php artisan seat:admin:login
- 之后会显示一个链接,通过该链接登录SeAT。
- 在左侧列表中选择设置-用户。
- 选择您要授予管理员权限的用户,点击修改,勾选超级用户并保存。
监控SeAT
当容器启动或运行一段时间时,您可以随时进入文件所在的目录并运行logs命令以查看所有容器的输出情况。
cd /opt/seat-docker
docker compose logs --tail 10 -f
配置变更
所有相关配置都位于.env文件中,如果您修改了.env文件,请重新启动容器。