Linux 服务器使用 docker 运行 Alas
前言
Alas上新了 AlasApp_0.4.1_fullcn 版本,因为 Electron 的原因,可能不支持在 win7/8 和 winserver2012 设备上运行

我的第一篇专栏写的是使用 winserver2012 服务器运行 alas ,
日后可能会有新的问题 ( 现在能用就别管
所以我在这里写一份比较小白的 linux 安装 Alas 教程
免责声明
我是文科专业一路读上来的,计算机什么的我都不懂
我的技术奇菜无比,故本文必然破绽百出。您若发现问题还请温柔提醒,不要人参公鸡。
本文内容请您自行判断是否可信可靠可用,若您根据本文内容建立和使用 VPS 服务器时出了任何问题和不良结果,本人概不负责。
基于本文` 零基础用户 的目标受众,许多内容会尽力详尽说明,所以语言偏啰嗦,请做好心理准备。
原料准备
准备一个国内的 linux 服务器/设备
如果使用 服务器 + 云手机 运行Alas,需要两台设备都要在 CN 网络环境内
如果 服务器在深圳 ,云手机在香港,因为有墙的存在,两者的延迟可能是绕地球五圈
服务器基本设置
系统选择
服务器我在腾讯买的,其他的厂商可能后台会不一样

这里因为个人习惯,我使用了 debian11 系统。 用 ubuntu 也可以
重置密码


勾选离线重置,等待重启
SSH工具
electerm:https://electerm.html5beta.com
GitHub地址: https://github.com/electerm/electerm
界面挺好看的,就是运存占用稍微有点大。你下载其它的SSH工具也可以

远程登陆
打开 electerm ,点击左侧的加号

主机地址: 填你服务器的公网ip地址
用户名: 填服务器默认的 root 用户
密码: 填你在上一步重置的密码
端口: 填默认的 22 端口
保存并连接
如果你的信息都填写正确,你将会看到类似下图的界面,说明已登录成功

认识命令行窗口
这个界面,就等于远程服务器的 桌面 ,但它没有你熟悉的图标和鼠标,没有绚丽的色彩,有的只是简单文字,这就是 命令行界面
接下来的所有操作, 都会在这个命令行界面中完成,你说一句,它做一句
第一次更新 linux 软件
Linux 下,每个 APP 都叫做一个“包” (package)。管理 APP 的程序自然就叫做“包管理器”(Package Manager)。你可以通过它安装、更新、卸载各种软件。现在你只需要知道 Debian 系统的包管理器叫做 `apt` 即可。接下来,我们就先使用 `apt` 做一次软件的全面更新,让你熟悉它的基本操作。
现在输入第一条命令
然后输入第二条命令,并在询问是否继续安装 `(Y/n)` 时输入 `y` 并回车确认,开始安装
完整流程图示意如下

服务器安全防护
我们的服务器不具有太高的价值, 就挂个 Alas ,一般不会吸引到高水平的攻击,需要面对的基本都是一些自动化脚本的恶意扫描和登录尝试,跟着本文做一些基础的防护即可
将 SSH 登陆端口设置为 非22端口
SSH 远程登录程序配置文件位置: /etc/ssh/sshd_config
在 Windows 下,你会找到文件并双击,在 Linux 下该怎么办呢?
文件名太长的话,可以按 tab 补全
比如说你已经输入了 nano /etc/ssh/sshd ,此时你按一下键盘的 tab 键,会自动补全至 nano /etc/ssh/sshd_config
nano: 你可以粗略的理解为 windows 的记事本
文件打开后,你就进入了 nano 的界面,稍微观察一下,你会发现,它把重要的快捷键都显示在屏幕下方了(下图红框内),直接开卷考试、不用死记硬背
^G: 键盘 ctrl + G 弹出帮助
^O: 键盘 ctrl + O 保存文件
^X: 键盘 ctrl + O 退出
^W: 键盘 ctrl + W 搜索文本

第一步: 使用 ctrl + w 进入搜索模式,输入 port 22 并回车
第二步: 删除 22 并修改成 11451 , ( 在 1024 - 65535 之间取一个合理的整数就好了
说明: 如果这一行开头有个 # ,证明这一行 “不生效" (被注释掉了),把 # 删掉就好。
第三步: 保存文件并退出,保存是 ctrl+o 然后 按回车,退出是 ctrl+x
第四步: 放行相关端口
由于腾讯轻量云服务器的限制,防火墙规则只能在腾讯的后台修改,所以本文不使用 ufw。统一使用腾讯云的后台来修改防火墙规则


第五步: 重启 ssh 服务,使变更生效
第六步: 使用新 ssh 端口登陆服务器
先不要关闭当前的窗口,新建一个配置进行连接


成功登陆即可关闭旧 22 窗口,同时在防火墙处删去旧的 22 规则

这里也可以顺便把 ping 规则删了
使用非 root 用户进行登陆
Linux 系统中的 root ,不仅仅是一个管理员账号那么简单。它是整个系统的主宰,是至高无上的神。一旦root 账号出现安全问题,整个系统都只能任人鱼肉
第一步: 新建一个非 root 用户

需要你输入两次一样的密码,密码在输入过程中不可见

然后需要输入一些个人信息,狂按回车,最后按 Y 就好了

第二步: 赋予普通用户 sudo 权限
sudo: 让普通用户临时获得 root 的权限
腾讯云的 debian 服务器默认安装了 sudo ( 没安就手动安装一遍
第三步: 把 cookmaker 用户加入 sudo 名单里

在 User Privilege Specification 下加入一行 cookmaker ALL=(ALL) NOPASSWD: ALL 即可
说明: cookmaker 改成你自己的用户名
我要特别说明的是 NOPASSWD 这个设置,它的意思是 cookmaker 用户临时使用`root`权限时,不用额外输入密码。这与一般的安全建议相反
如果你希望遵守传统习惯、每次使用 sudo 时需要输入密码,那么这一行改成 cookmaker ALL=(ALL:ALL) ALL 即可。
第四步: 禁用 root 用户登陆
找到 PermitRootLogin Yes 这一项,然后把它后面的设定值改为 no 即可。还记得怎么操作吗?
使用 ctrl + w 进入搜索模式,输入 PermitRootLogin 并回车
删除 yes 并改成 no
保存文件并退出。还记得怎么操作吗?
保存是 ctrl+o 然后按回车,退出是 ctrl+x
跟上面一样,先不要关闭当前的命令行窗口,新建一个配置进行连接


成功连上了再关闭旧窗口,你可以看到,此时左侧的用户名已经从 root 变成了 cookmaker
如果你要切换成 root 用户的话
从 root 用户切回 cookmaker 用户的话
使用密钥登陆而不是密码登陆
在非root用户下
使用 ssh-keygen 生成 ed25519 密钥
输入按回车,窗口输出如下
继续回车,输出如下
注意两行内容
私钥需要下载到你的本地电脑上,公钥放在你的服务器上
下载私钥在你的电脑上

右键下载私钥,私钥下载完后,从服务器上删除

请注意保存好你的 私钥 。没有私钥登不上服务器别找我
将 PasswordAuthentication 改成 no
将 PubkeyAuthentication 改成 yes
说明: 如果这一行开头有个 # ,证明这一行 “不生效" (被注释掉了),把 # 删掉就好。
先不要关闭当前的命令行窗口,新建一个配置进行连接

如果你在使用 ssh-keygen 的以下的两个过程中输入了内容,就是创建了一个 "私钥密码"
安装 Alas
是的,墨迹了那么久,终于要开始安装alas了
这里只演示 Docker 安装
安装Docker
这里我只写国内服务器环境,TW,HK,MO和外国网络。都没有墙,部分下载的地址会不一样,自己google
将以下内容复制进去
限制 docker 容器日志大小,保存并退出
下载 Alas 源码
源码下载完毕

其中 蓝色的 AzurLaneAutoScript 就是 Alas 的源码文件夹了
第一步,修改Alas配置文件
Alas 配置文件示例保存在 config 目录下
默认配置
修改Dockerfile
开始构建镜像

稍作等待 10~20分钟
镜像构建完毕


启动 Alas
docker-compose.yml 配置如下,根据实际情况进行修改
保存,新建一个会话来启动 alas
启动后会有一行 git 报错
进入容器内部后如下显示

输入
在防火墙放行相应端口,浏览器输入公网 ip地址:端口 ,即可正常使用
注意,直接将 Alas 暴露到公网上请务必设置 webui 密码

Screen 科普
当我们使用 ssh 连接上服务器时,会创建一个会话窗口,在这里我把它叫做 ssh 窗口

然后输入
此时新的对话长这样,只有你的用户名字

然后按住 ctrl + A + D , 就可以回到刚才的 ssh 窗口中 ( screen test1 仍在后台运行

当会话被分离或网络中断时,screen 会话中启动的进程仍将运行,我们可以随时重新连接到 screen 会话
一些常用指令
Alas 报错推送
发生无法处理的异常后,使用 Onepush 推送一条错误信息。
配置方法见文档:
https://github.com/LmeSzinc/AzurLaneAutoScript/wiki/Onepush-configuration-%5BCN%5D
这里只演示QQ机器人的方法,邮箱推送自己看文档
先阅读 Alas 使用手册 的 gocq 部分,拿自己电脑成功登陆一遍框架
gocqhttp github 发行地址 https://github.com/Mrs4s/go-cqhttp/releases
将本地生成的 device.json 和 session.token 上传到服务器的 gocq 文件夹内

在线查看 Alas log
因为使用 linux 服务器的原因,如果 Alas 报错了,需要查看报错截图和log,都要 ssh 上去服务器下载,有点麻烦。
手机也没有合适的 ssh 软件,有点不方便
这里我使用 nginx 建立一个静态网页来访问Alas的log
在 http{ } 这个块里面插入以下内容
如图所示

复制的时候注意删去我注释的内容
保存
在防火墙放行相应端口,浏览器输入公网 ip地址:端口 ,即可正常使用
差不多这种效果


手机浏览器访问 Alas网页需要浏览器有较新的内核
log 文件夹两三个月上去清一次就好了 如果你报错很多的话,可以一个月一次
我觉得挂个 Alas,不是很有必要折腾一些更加复杂的安全策略
我认为上个密码就差不多了,弄别的东西学习成本也比较高,也要折腾比较久
服务器也没什么重要的东西,你的公网ip和端口别随便泄露出去就好了
怕死的话去腾讯云设置个告警策略
https://cloud.tencent.com/document/product/213/5179
负载超过80%,使用流量超过80% ,小马哥的员工会打电话给你,然后你就上去拔网线
顺便设置几个快照,服务器爆炸了可以还原回去
