docker部署sspanel-uim与xrayr

发布于 2022-04-04  444 次阅读


有。麻烦

手里服务器有点多,我也渐渐开始感到管理翻墙工具很麻烦。一开始只是想要找个自动生成订阅链接的工具,省得客户端一直要设置,但是找了一圈没发现什么自动化的工具,反倒是机场面板都带这个功能。得了,自己搭个机场面板呗。

部署SSpanel

SSPanel-Uim感觉是支持协议最多的,所以就部署了这个。

不过SSPanel-Uim的文档实在是说得不清楚,还屏蔽国内IP。issue也基本没什么参考价值,一堆在吵架的。而且开发者还特别执着于让别人保留staff链接,看样子还主动ddos去掉了staff链接的人,实在是显得心眼有点小。看不惯别人拿你软件赚钱别开源就得了呗。当然,考虑到有些去做机场的人是什么素质,也不算完全不能理解。

总之我虽然拿这个最后部署成功了,但中间也浪费不少时间解决一些本来应该文档来解决的问题,所以如果真的要选面板部署建议还是选别的。

一些alternative:

django-sspanel
V2Board 这个似乎关了issue,请自行判断
x-ui

dockerfile与docker-compose.yml

官方没有提供任何docker部署的方法,文档里是先装lnmp环境的。

我的Dockerfile:

FROM php:7.4-fpm

RUN apt-get update || : && apt-get install git unzip wget libzip-dev libssl-dev libbz2-dev libcurl4-gnutls-dev libpng-dev libxml2-dev cron -y
RUN docker-php-ext-install mysqli pdo pdo_mysql curl gd xml xmlrpc opcache zip json bz2 bcmath

COPY init.sh /

ENTRYPOINT []

init.sh:

cd /var/www/html
chattr -i .user.ini
rm .user.ini
wget https://getcomposer.org/installer -O composer.phar
php composer.phar
php composer.phar install
chmod 755 -R *
chown www-data -R *
touch crontab.list
echo "*/1 * * * * /usr/local/bin/php /var/www/html/xcat Job SendMail >> /var/log/cron.log 2>&1
*/1 * * * * /usr/local/bin/php /var/www/html/xcat Job CheckJob >> /var/log/cron.log 2>&1
0 */1 * * * /usr/local/bin/php /var/www/html/xcat Job UserJob >> /var/log/cron.log 2>&1
30 23 * * * /usr/local/bin/php /var/www/html/xcat SendDiaryMail >> /var/log/cron.log 2>&1
0 0 * * * /usr/local/bin/php /var/www/html/xcat Job DailyJob >> /var/log/cron.log 2>&1
5 0 * * * /usr/local/bin/php /var/www/html/xcat FinanceMail day >> /var/log/cron.log 2>&1
6 0 * * 0 /usr/local/bin/php /var/www/html/xcat FinanceMail week >> /var/log/cron.log 2>&1
7 0 1 * * /usr/local/bin/php /var/www/html/xcat FinanceMail month >> /var/log/cron.log 2>&1
*/1 * * * * /usr/local/bin/php /var/www/html/xcat DetectGFW >> /var/log/cron.log 2>&1
0 1 * * * /usr/local/bin/php /var/www/html/xcat Backup simple >> /var/log/cron.log 2>&1" >> crontab.list
crontab crontab.list
rm crontab.list
service cron start

docker-compose.yml:

version: "3"

services:
sspanel:
build: .
volumes:
- ./webroot:/var/www/html
- ./config/php.ini:/usr/local/etc/php/conf.d/custom.ini
- ./config/zz-custom.conf:/usr/local/etc/php-fpm.d/zz-custom.conf
- ./log/cron.log:/var/log/cron.log
ports:
- "127.0.0.1:3000:9000"
container_name: sspanel
restart: always
networks:
- default
stdin_open: true
tty: true
depends_on:
- db
command: sh -c "/init.sh && php-fpm"

db:
image: mariadb
container_name: sspanel_db
networks:
- default
volumes:
- ./mariadb:/var/lib/mysql
- ./dump.sql:/dump.sql
restart: always
environment:
MARIADB_ROOT_PASSWORD: xxxxxxxxxxx
MARIADB_DATABASE: sspanel
MARIADB_USER: sspanel
MARIADB_PASSWORD: xxxxxxxxxxx

总之是按照文档把运行的代码照搬过来,反代需要另外单独配置。比较需要小心的是php extention,我主要是按照文档里“使用 RPM 包部署 SSPanel UIM”部分来的。docker的crontab也得在init.sh里配置一下。

在docker-compose对应的webroot文件夹内运行

git clone https://github.com/Anankke/SSPanel-Uim.git .
cp config/.config.example.php config/.config.php
cp config/appprofile.example.php config/appprofile.php

获取代码。记得把数据库模板移出来,并且重命名成docker-compose.yml里面对应的名字。

配置数据库和config

先进入db容器,然后按照文档操作配置数据库是最方便的。数据库文件名跟上一步改的保持一致。

config里头db host填“db”即可,其他配置按需修改。

完成之后应该可以build并启动了。

启动后进入主容器,运行

vendor/bin/phinx migrate
php xcat User createAdmin
php xcat Tool initQQwry

分别是执行数据库迁移、创建管理员账户、下载 ip 数据库。

如果已经配置好了反代,现在应该可以正常访问面板地址了。

部署XrayR

SSPanel UIM提供的后端看上去不怎么更新,也懒得去改了,有现成的开源后端框架,何乐而不为呢。

XrayR

文档很清楚,部署还是很方便的,不过我想要在我闲置的那些服务器上自动部署,就写了个脚本,填入对应的nodeid和dns对应的地址之后,自动安装acme.sh,部署xrayr和nginx,签发证书然后启动。

总之单纯部署一个普通的无伪装节点的话按照文档的docker-compose就可以,需要伪装的话就加上nginx和证书之类的,按照需求即可。

建议如果要伪装的话用Apache或者nginx来处理证书,原因可以参考XrayR文档。使用nginx或Apache的情况下记得设置CertMode: none

连接前端与后端

sspanel那个自定义配置暂时没用,还是得通过节点地址来配置节点。

相关链接

自建机场的一些坑(记录)


Sup