物料准备:
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
口水 XVMLabs……一般什么情况会有货?哈哈,
回复删除证书终于更新了嘛~
回复删除博主为什么放个背景头像图
回复删除上线的时候有货,好像之后再也没有补货了
回复删除来个邀请码啥!
回复删除是啊,本来以为 oneinstack 会自动更新证书呢
回复删除都说了,附带免流 buff 最好⊙﹏⊙
回复删除不会玩啊,求带
回复删除用这个:https://lao.si.ji8.me/auth/register?code=ji8-kecBcObAWElWB9Rwd1JSPq6S58MgYY2b
回复删除buff 什么鬼?
回复删除效果呀,免流多好。你看我是不是又完美的装了一次逼
回复删除再接再励,哈哈哈哈 h
回复删除ss-panel 是什么东西?另外一种 shadowsocks 吗?动图好邪恶,好邪恶,好邪恶。现在这个博客就装在你的传家宝 vps 上了?
回复删除博客不在传家宝上。ss-panel 是多用户的 ss 管理面板,欢迎体验。https://lao.si.ji8.me
回复删除正经的文章内容,永远有一张劲爆的配图
回复删除这图片严重不适。。。。
回复删除博主好邪恶,看的我尴尬癌都犯了
回复删除只能说博主很有个性呀。。。
回复删除头图看得我硬了。。。。
回复删除开个车?
也就是说:这个可以商用??????
回复删除是的,不少卖 SS 服务的用了这个程序
回复删除路过~SSR 就很不错,速度而言都是可以的。话说你这是要干嘛的节奏?售卖?
回复删除分享的话 SSR 等都可以配置多端口~
给我用 /(ㄒoㄒ)/~~
回复删除你不是有梯子吗,我这里的线路很一般,没有特别快的
回复删除这波配图我给满分
回复删除可以集中闲置的 VPS,方便分享给需要的朋友
回复删除分享的不错,谢谢
回复删除老司机我要上车,求带
回复删除我要上车了
回复删除来个邀请码啊。宝宝
回复删除来个邀请码啊。宝宝
回复删除看图就知道博主是老司机啊,哈哈~
回复删除留图不留种 .....
回复删除简直不能赞同更多
回复删除菊花万人捅