2016年12月12日星期一

记录搭建 SS-Panel 的过程



物料准备:

1、Bandwagonhost 旗下 XVMLabs 的 OpenVZ VPS 一枚,作为 SS-Panel 主机,年付 $2.99 USD,俺的传家宝。

2、Cloudatcost 的 Vmware VPS 一枚,作为异地 SS 服务端,终身 $3.5 USD,俺的传家宝。




安装 LNMP 环境




# 升级系统,安装 screen
apt-get update -y && apt-get upgrade -y && apt-get install screen -y
screen -S sspanel

# 安装 lnmp
wget -c http://soft.vpser.net/lnmp/lnmp1.3.tar.gz && tar zxf lnmp1.3.tar.gz && cd lnmp1.3 && ./install.sh lnmp

# 设置 MYSQL ROOT 密码
Please setup root password of MySQL.(Default password: root)
Please enter: ifuckyou

# 添加虚拟机
lnmp vhost add


安装 ss-panel




# 进入添加的域名目录
cd /home/wwwroot/lao.si.ji8.me

# 通过 git 命令直接下载 ss-panel 源码到网站根目录:
git clone https://github.com/orvice/ss-panel.git

# 移动 ss-panel 文件夹内所有文件到网站根目录下:
mv -f ss-panel/* .

# 使用 composer 安装需要的依赖
curl -sS https://getcomposer.org/installer | php
php composer.phar install

# 创建 MySQL 数据库
mysql -u root -p

## 创建一个数据库,名字任意,这里是 shadowsocks
create database shadowsocks;

## 创建一个用户及登录密码:任意值,为了不以 root 登录。这里设置用户名 ss,密码 ifuckyou
CREATE USER ss IDENTIFIED BY 'ifuckyou';

## 转到 shadowsocks 数据库
use shadowsocks;

## 导入 ss-panel 数据库到 shadowsocks 数据库
source /home/wwwroot/lao.si.ji8.me/db.sql;

## 赋予用户 x 对数据库 shadowsocks 的权限
grant all privileges on shadowsocks.* to 'ss'@'localhost' identified by 'ifuckyou';

## 刷新权限
flush privileges;

## 退出 MySQL 数据库操作
exit;

# 打开数据库远程登录权限后,还需要添加规则,打开 3306 端口:
iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

# 查看规则是否生效:
iptables -L -n

# 重启也可以生效
service iptables save

# 配置 nginx
vim /usr/local/nginx/conf/vhost/lao.si.ji8.me.conf

# 把 root 一栏,添加 /public
root /home/wwwroot/lao.si.ji8.me/public

# 在 root 这一行下面添加
location / {
try_files $uri $uri/ /index.php$is_args$args;
}

#shift ; 输入: ,再输入 wq 保存退出
# 配置 ss-panel 站点文件,复制站点配置文件到网站根目录下:
cp /home/wwwroot/lao.si.ji8.me/ss-panel/.env.example .env

# 编辑站点配置文件 .env
vim /home/wwwroot/lao.si.ji8.me/.env

# database 数据库配置
db_driver = 'mysql'
db_host = 'localhost'
db_port = '3306'
db_database = 'shadowsocks'
db_username = 'ss'
db_password = 'ifuckyou'
db_charset = 'utf8'
db_collation = 'utf8_general_ci'
db_prefix = ''

#shift ; 输入: ,再输入 wq 保存退出

# 创建 ss-panel 站点管理员
cd /home/wwwroot/lao.si.ji8.me
chown -R www storage
php xcat createAdmin

# 根据提示输入登录名:邮箱,密码,y 确认
# 自定义 ss 端口,到 phpmyadmin 里修改表: user 的 port 字段值为 1024

# 给予网站目录权限
chown www:www /home/wwwroot/lao.si.ji8.me -R

# 重启 nginx,使新配置生效
service nginx restart 或者 service nginx reload

# 这时在浏览器输入你在 nginx 中添加的域名或 IP,便可进入 ss-panel 网站


安装 SS 后端




# 基本库安装
apt-get install python-pip -y && apt-get install git -y

# 安装 cymysql
pip install cymysql

# 获取源代码
git clone -b manyuser https://github.com/breakwa11/shadowsocks.git

# 进入根目录初始化配置

cd ~/shadowsocks
bash initcfg.sh

#shadowsocks 目录内,对 userapiconfig.py 里以下内容进行相应修改:
API_INTERFACE = 'sspanelv3' // 修改接口类型

# 然后修改 usermysql.json 里面的内容:
{
"host": "127.0.0.1",
"port": 3306,
"user": "ss",
"password": "ifuckyou",
"db": "shadowsocks",
"node_id": 1,
"transfer_mul": 1.0,
"ssl_enable": 0,
"ssl_ca": "",
"ssl_cert": "",
"ssl_key": ""
}

# 以上包括(按次序):数据库服务器地址,端口,数据库登陆用户名,密码,数据库表,节点 ID(sspanelv3 支持),流量比率,开启 mysql 的 SSL 连接等等

#sspanelv3 必须正确填写 node_id 才能正常使用,并且在填写该 ID 前,必须在面板上已经添加好该节点,以确定节点 ID 后,再在此处填写。

# 然后编辑 user-config.json:

"method":"aes-256-cfb", // 修改成您要的加密方式的名称
"protocol": "auth_sha1_compatible", // 修改成您要的协议插件名称
"obfs": "tls1.0_session_auth_compatible", // 修改成您要的混淆插件名称

# 服务端运行,进入根目录:
cd shadowsocks

# 运行:
python server.py

这时可查看有运行情况,检查有没有错误。如果服务端没有错误,而连接不上,需要检查 iptables 或 firewall(centos7) 的防火墙配置

# 通过脚本运行,增加脚本可执行权限
chmod +x *.sh

# 后台运行(无 log,ssh 窗口关闭后也继续运行)
./run.sh

# 后台运行(输出 log,ssh 窗口关闭后也继续运行)
./logrun.sh

# 后台运行时查看运行情况
./tail.sh

# 停止运行
./stop.sh

# 注:通过脚本运行默认日志会保存在根目录的 ssserver.log,可手动查看。

# 如果连接数据库遇到这个错误:Can't get hostname for your address,请在数据库服务器的 my.cnf 里 mysqld 添加如下设置
skip-name-resolve

# 然后重启数据库。

# 设置服务开机自启动
echo 'python /root/shadowsocks/server.py' >> /etc/rc.local



安装 Let's encrypt 证书




# 下载到本地
wget https://raw.githubusercontent.com/xdtianyu/scripts/master/lets-encrypt/letsencrypt.conf
wget https://raw.githubusercontent.com/xdtianyu/scripts/master/lets-encrypt/letsencrypt.sh
chmod +x letsencrypt.sh

# 修改 DOMAIN_KEY DOMAIN_DIR DOMAINS 为你自己的信息

ACCOUNT_KEY="letsencrypt-account.key"
DOMAIN_KEY="lao.si.ji8.me.key"
DOMAIN_DIR="/home/wwwroot/lao.si.ji8.me/public"
DOMAINS="DNS:lao.si.ji8.me"
#ECC=TRUE
#LIGHTTPD=TRUE

# 执行过程中会自动生成需要的 key 文件。其中 ACCOUNT_KEY 为账户密钥, DOMAIN_KEY 为域名私钥, DOMAIN_DIR 为域名指向的目录,DOMAINS 为要签的域名列表, 需要 ECC 证书时取消 #ECC=TRUE 的注释,需要为 lighttpd 生成 pem 文件时,取消 #LIGHTTPD=TRUE 的注释。

# 运行
./letsencrypt.sh letsencrypt.conf

# 需要已经绑定域名到 /home/wwwroot/lao.si.ji8.me/public 目录,即通过 http://lao.si.ji8.me 可以访问到 /home/wwwroot/lao.si.ji8.me/public 目录,用于域名的验证

# 将会生成如下几个文件

lets-encrypt-x1-cross-signed.pem
example.chained.crt # 即网上搜索教程里常见的 fullchain.pem
example.com.key # 即网上搜索教程里常见的 privkey.pem
example.crt
example.csr

# 如果 LNMP 下访问 http://lao.si.ji8.me/.well-known/acme-challenge/**** 这个链接 403 的话是因为默认 LNMP 1.3 的虚拟主机里是禁止. 开头的隐藏文件及目录的。需要将

location ~ /\.
{
deny all;
}

# 这段配置删掉或注释掉或在这段配置前面加上

location ~ /.well-known {
allow all;
}


# 在 nginx 里添加 ssl 相关的配置

ssl_certificate /path/to/cert/example.chained.crt;
ssl_certificate_key /path/to/cert/example.key;

cron 定时任务

# 每个月自动更新一次证书,可以在脚本最后加入 service nginx reload 等重新加载服务。

crontab -e

0 0 1 * * /root/lets-encrypt/letsencrypt.sh /root/lets-encrypt/letsencrypt.conf >> /var/log/lets-encrypt.log 2>&1

34 条评论:

  1. 口水 XVMLabs……一般什么情况会有货?哈哈,

    回复删除
  2. 博主为什么放个背景头像图

    回复删除
  3. 上线的时候有货,好像之后再也没有补货了

    回复删除
  4. 是啊,本来以为 oneinstack 会自动更新证书呢

    回复删除
  5. 都说了,附带免流 buff 最好⊙﹏⊙

    回复删除
  6. 用这个:https://lao.si.ji8.me/auth/register?code=ji8-kecBcObAWElWB9Rwd1JSPq6S58MgYY2b

    回复删除
  7. buff 什么鬼?

    回复删除
  8. 效果呀,免流多好。你看我是不是又完美的装了一次逼

    回复删除
  9. 再接再励,哈哈哈哈 h

    回复删除
  10. ss-panel 是什么东西?另外一种 shadowsocks 吗?动图好邪恶,好邪恶,好邪恶。现在这个博客就装在你的传家宝 vps 上了?

    回复删除
  11. 博客不在传家宝上。ss-panel 是多用户的 ss 管理面板,欢迎体验。https://lao.si.ji8.me

    回复删除
  12. 正经的文章内容,永远有一张劲爆的配图

    回复删除
  13. 这图片严重不适。。。。

    回复删除
  14. 博主好邪恶,看的我尴尬癌都犯了

    回复删除
  15. 只能说博主很有个性呀。。。

    回复删除
  16. 头图看得我硬了。。。。

    开个车?

    回复删除
  17. 也就是说:这个可以商用??????

    回复删除
  18. 是的,不少卖 SS 服务的用了这个程序

    回复删除
  19. 路过~SSR 就很不错,速度而言都是可以的。话说你这是要干嘛的节奏?售卖?
    分享的话 SSR 等都可以配置多端口~

    回复删除
  20. 你不是有梯子吗,我这里的线路很一般,没有特别快的

    回复删除
  21. 可以集中闲置的 VPS,方便分享给需要的朋友

    回复删除
  22. 来个邀请码啊。宝宝

    回复删除
  23. 看图就知道博主是老司机啊,哈哈~

    回复删除
  24. 简直不能赞同更多

    菊花万人捅

    回复删除

注意:只有此博客的成员才能发布评论。