Linux 服務(wù)器使用 docker 運(yùn)行 Alas
前言
Alas上新了 AlasApp_0.4.1_fullcn 版本,因?yàn)??Electron?的原因,可能不支持在 win7/8 和 winserver2012 設(shè)備上運(yùn)行

我的第一篇專欄寫的是使用 winserver2012 服務(wù)器運(yùn)行 alas? ,
日后可能會(huì)有新的問題 ( 現(xiàn)在能用就別管
所以我在這里寫一份比較小白的 linux 安裝 Alas 教程
免責(zé)聲明
我是文科專業(yè)一路讀上來的,計(jì)算機(jī)什么的我都不懂
我的技術(shù)奇菜無比,故本文必然破綻百出。您若發(fā)現(xiàn)問題還請(qǐng)溫柔提醒,不要人參公雞。
本文內(nèi)容請(qǐng)您自行判斷是否可信可靠可用,若您根據(jù)本文內(nèi)容建立和使用 VPS 服務(wù)器時(shí)出了任何問題和不良結(jié)果,本人概不負(fù)責(zé)。
基于本文`?零基礎(chǔ)用戶??的目標(biāo)受眾,許多內(nèi)容會(huì)盡力詳盡說明,所以語言偏啰嗦,請(qǐng)做好心理準(zhǔn)備。
原料準(zhǔn)備
準(zhǔn)備一個(gè)國內(nèi)的 linux 服務(wù)器/設(shè)備
如果使用 服務(wù)器 + 云手機(jī) 運(yùn)行Alas,需要兩臺(tái)設(shè)備都要在 CN 網(wǎng)絡(luò)環(huán)境內(nèi)
如果 服務(wù)器在深圳 ,云手機(jī)在香港,因?yàn)橛袎Φ拇嬖冢瑑烧叩难舆t可能是繞地球五圈
服務(wù)器基本設(shè)置
系統(tǒng)選擇
服務(wù)器我在騰訊買的,其他的廠商可能后臺(tái)會(huì)不一樣

這里因?yàn)閭€(gè)人習(xí)慣,我使用了 debian11 系統(tǒng)。 用 ubuntu 也可以
重置密碼


勾選離線重置,等待重啟
SSH工具
electerm:https://electerm.html5beta.com
GitHub地址:? https://github.com/electerm/electerm
界面挺好看的,就是運(yùn)存占用稍微有點(diǎn)大。你下載其它的SSH工具也可以

遠(yuǎn)程登陸
打開 electerm ,點(diǎn)擊左側(cè)的加號(hào)

主機(jī)地址: 填你服務(wù)器的公網(wǎng)ip地址
用戶名: 填服務(wù)器默認(rèn)的 root 用戶
密碼: 填你在上一步重置的密碼
端口: 填默認(rèn)的 22 端口
保存并連接
如果你的信息都填寫正確,你將會(huì)看到類似下圖的界面,說明已登錄成功

認(rèn)識(shí)命令行窗口
這個(gè)界面,就等于遠(yuǎn)程服務(wù)器的 桌面 ,但它沒有你熟悉的圖標(biāo)和鼠標(biāo),沒有絢麗的色彩,有的只是簡單文字,這就是?命令行界面
接下來的所有操作, 都會(huì)在這個(gè)命令行界面中完成,你說一句,它做一句
第一次更新 linux 軟件
Linux 下,每個(gè) APP 都叫做一個(gè)“包” (package)。管理 APP 的程序自然就叫做“包管理器”(Package Manager)。你可以通過它安裝、更新、卸載各種軟件?,F(xiàn)在你只需要知道 Debian 系統(tǒng)的包管理器叫做 `apt` 即可。接下來,我們就先使用 `apt` 做一次軟件的全面更新,讓你熟悉它的基本操作。
現(xiàn)在輸入第一條命令
然后輸入第二條命令,并在詢問是否繼續(xù)安裝 `(Y/n)` 時(shí)輸入 `y` 并回車確認(rèn),開始安裝
完整流程圖示意如下

服務(wù)器安全防護(hù)
我們的服務(wù)器不具有太高的價(jià)值, 就掛個(gè) Alas?,一般不會(huì)吸引到高水平的攻擊,需要面對(duì)的基本都是一些自動(dòng)化腳本的惡意掃描和登錄嘗試,跟著本文做一些基礎(chǔ)的防護(hù)即可
將 SSH 登陸端口設(shè)置為 非22端口
SSH 遠(yuǎn)程登錄程序配置文件位置:?/etc/ssh/sshd_config
在 Windows 下,你會(huì)找到文件并雙擊,在 Linux 下該怎么辦呢?
文件名太長的話,可以按 tab 補(bǔ)全
比如說你已經(jīng)輸入了 nano /etc/ssh/sshd ,此時(shí)你按一下鍵盤的 tab 鍵,會(huì)自動(dòng)補(bǔ)全至 nano /etc/ssh/sshd_config?
nano: 你可以粗略的理解為 windows 的記事本
文件打開后,你就進(jìn)入了 nano 的界面,稍微觀察一下,你會(huì)發(fā)現(xiàn),它把重要的快捷鍵都顯示在屏幕下方了(下圖紅框內(nèi)),直接開卷考試、不用死記硬背
^G: 鍵盤 ctrl + G 彈出幫助
^O: 鍵盤 ctrl + O 保存文件
^X: 鍵盤 ctrl + O 退出
^W: 鍵盤 ctrl + W 搜索文本

第一步: 使用 ctrl + w 進(jìn)入搜索模式,輸入 port 22 并回車
第二步: 刪除 22 并修改成 11451 , ( 在 1024 - 65535 之間取一個(gè)合理的整數(shù)就好了
說明: 如果這一行開頭有個(gè) # ,證明這一行 “不生效" (被注釋掉了),把 # 刪掉就好。
第三步: 保存文件并退出,保存是 ctrl+o 然后 按回車,退出是 ctrl+x
第四步: 放行相關(guān)端口
由于騰訊輕量云服務(wù)器的限制,防火墻規(guī)則只能在騰訊的后臺(tái)修改,所以本文不使用 ufw。統(tǒng)一使用騰訊云的后臺(tái)來修改防火墻規(guī)則


第五步: 重啟 ssh 服務(wù),使變更生效
第六步: 使用新 ssh 端口登陸服務(wù)器
先不要關(guān)閉當(dāng)前的窗口,新建一個(gè)配置進(jìn)行連接


成功登陸即可關(guān)閉舊 22 窗口,同時(shí)在防火墻處刪去舊的 22 規(guī)則

這里也可以順便把 ping 規(guī)則刪了
使用非 root 用戶進(jìn)行登陸
Linux 系統(tǒng)中的 root ,不僅僅是一個(gè)管理員賬號(hào)那么簡單。它是整個(gè)系統(tǒng)的主宰,是至高無上的神。一旦root 賬號(hào)出現(xiàn)安全問題,整個(gè)系統(tǒng)都只能任人魚肉
第一步: 新建一個(gè)非 root 用戶

需要你輸入兩次一樣的密碼,密碼在輸入過程中不可見

然后需要輸入一些個(gè)人信息,狂按回車,最后按 Y 就好了

第二步: 賦予普通用戶 sudo 權(quán)限
sudo:? 讓普通用戶臨時(shí)獲得 root 的權(quán)限
騰訊云的 debian 服務(wù)器默認(rèn)安裝了 sudo ( 沒安就手動(dòng)安裝一遍
第三步: 把 cookmaker 用戶加入 sudo 名單里

在? User Privilege Specification 下加入一行? cookmaker ALL=(ALL) NOPASSWD: ALL 即可
說明: cookmaker 改成你自己的用戶名
我要特別說明的是 NOPASSWD 這個(gè)設(shè)置,它的意思是 cookmaker 用戶臨時(shí)使用`root`權(quán)限時(shí),不用額外輸入密碼。這與一般的安全建議相反
如果你希望遵守傳統(tǒng)習(xí)慣、每次使用 sudo 時(shí)需要輸入密碼,那么這一行改成? cookmaker ALL=(ALL:ALL) ALL? 即可。
第四步: 禁用 root 用戶登陸
找到 PermitRootLogin Yes 這一項(xiàng),然后把它后面的設(shè)定值改為 no 即可。還記得怎么操作嗎?
使用 ctrl + w 進(jìn)入搜索模式,輸入 PermitRootLogin? 并回車
刪除 yes 并改成 no
保存文件并退出。還記得怎么操作嗎?
保存是 ctrl+o 然后按回車,退出是 ctrl+x
跟上面一樣,先不要關(guān)閉當(dāng)前的命令行窗口,新建一個(gè)配置進(jìn)行連接


成功連上了再關(guān)閉舊窗口,你可以看到,此時(shí)左側(cè)的用戶名已經(jīng)從 root 變成了 cookmaker
如果你要切換成 root 用戶的話
從 root 用戶切回 cookmaker 用戶的話
使用密鑰登陸而不是密碼登陸
在非root用戶下
使用 ssh-keygen 生成 ed25519 密鑰
輸入按回車,窗口輸出如下
繼續(xù)回車,輸出如下
注意兩行內(nèi)容
私鑰需要下載到你的本地電腦上,公鑰放在你的服務(wù)器上
下載私鑰在你的電腦上

右鍵下載私鑰,私鑰下載完后,從服務(wù)器上刪除

請(qǐng)注意保存好你的 私鑰 。沒有私鑰登不上服務(wù)器別找我
將 PasswordAuthentication 改成 no
將 PubkeyAuthentication 改成 yes
說明: 如果這一行開頭有個(gè) # ,證明這一行 “不生效" (被注釋掉了),把 # 刪掉就好。
先不要關(guān)閉當(dāng)前的命令行窗口,新建一個(gè)配置進(jìn)行連接

如果你在使用 ssh-keygen 的以下的兩個(gè)過程中輸入了內(nèi)容,就是創(chuàng)建了一個(gè) "私鑰密碼"?
安裝 Alas?
是的,墨跡了那么久,終于要開始安裝alas了
這里只演示 Docker 安裝
安裝Docker
這里我只寫國內(nèi)服務(wù)器環(huán)境,TW,HK,MO和外國網(wǎng)絡(luò)。都沒有墻,部分下載的地址會(huì)不一樣,自己google
將以下內(nèi)容復(fù)制進(jìn)去
限制 docker 容器日志大小,保存并退出
下載 Alas 源碼
源碼下載完畢

其中 藍(lán)色的 AzurLaneAutoScript 就是 Alas 的源碼文件夾了
第一步,修改Alas配置文件
Alas 配置文件示例保存在 config 目錄下
默認(rèn)配置
修改Dockerfile
開始構(gòu)建鏡像

稍作等待 10~20分鐘
鏡像構(gòu)建完畢


啟動(dòng) Alas
docker-compose.yml 配置如下,根據(jù)實(shí)際情況進(jìn)行修改
保存,新建一個(gè)會(huì)話來啟動(dòng) alas
啟動(dòng)后會(huì)有一行 git 報(bào)錯(cuò)
進(jìn)入容器內(nèi)部后如下顯示

輸入
在防火墻放行相應(yīng)端口,瀏覽器輸入公網(wǎng) ip地址:端口 ,即可正常使用
注意,直接將 Alas 暴露到公網(wǎng)上請(qǐng)務(wù)必設(shè)置 webui 密碼

Screen 科普
當(dāng)我們使用 ssh 連接上服務(wù)器時(shí),會(huì)創(chuàng)建一個(gè)會(huì)話窗口,在這里我把它叫做 ssh 窗口

然后輸入
此時(shí)新的對(duì)話長這樣,只有你的用戶名字

然后按住 ctrl + A + D , 就可以回到剛才的 ssh 窗口中 ( screen test1 仍在后臺(tái)運(yùn)行

當(dāng)會(huì)話被分離或網(wǎng)絡(luò)中斷時(shí),screen 會(huì)話中啟動(dòng)的進(jìn)程仍將運(yùn)行,我們可以隨時(shí)重新連接到 screen 會(huì)話
一些常用指令
Alas 報(bào)錯(cuò)推送
發(fā)生無法處理的異常后,使用 Onepush 推送一條錯(cuò)誤信息。
配置方法見文檔:
https://github.com/LmeSzinc/AzurLaneAutoScript/wiki/Onepush-configuration-%5BCN%5D
這里只演示QQ機(jī)器人的方法,郵箱推送自己看文檔?
先閱讀 Alas 使用手冊?的 gocq 部分,拿自己電腦成功登陸一遍框架
gocqhttp github 發(fā)行地址?https://github.com/Mrs4s/go-cqhttp/releases
將本地生成的 device.json 和 session.token 上傳到服務(wù)器的 gocq 文件夾內(nèi)

在線查看 Alas log
因?yàn)槭褂?linux 服務(wù)器的原因,如果 Alas 報(bào)錯(cuò)了,需要查看報(bào)錯(cuò)截圖和log,都要 ssh 上去服務(wù)器下載,有點(diǎn)麻煩。
手機(jī)也沒有合適的 ssh 軟件,有點(diǎn)不方便
這里我使用 nginx 建立一個(gè)靜態(tài)網(wǎng)頁來訪問Alas的log
在 http{? ? ? ? ? ? } 這個(gè)塊里面插入以下內(nèi)容
如圖所示

復(fù)制的時(shí)候注意刪去我注釋的內(nèi)容
保存
在防火墻放行相應(yīng)端口,瀏覽器輸入公網(wǎng) ip地址:端口 ,即可正常使用
差不多這種效果


手機(jī)瀏覽器訪問 Alas網(wǎng)頁需要瀏覽器有較新的內(nèi)核
log 文件夾兩三個(gè)月上去清一次就好了? 如果你報(bào)錯(cuò)很多的話,可以一個(gè)月一次
我覺得掛個(gè) Alas,不是很有必要折騰一些更加復(fù)雜的安全策略
我認(rèn)為上個(gè)密碼就差不多了,弄?jiǎng)e的東西學(xué)習(xí)成本也比較高,也要折騰比較久
服務(wù)器也沒什么重要的東西,你的公網(wǎng)ip和端口別隨便泄露出去就好了
怕死的話去騰訊云設(shè)置個(gè)告警策略
https://cloud.tencent.com/document/product/213/5179
負(fù)載超過80%,使用流量超過80% ,小馬哥的員工會(huì)打電話給你,然后你就上去拔網(wǎng)線
順便設(shè)置幾個(gè)快照,服務(wù)器爆炸了可以還原回去
