这是一个
涨姿势的站点

XS Admin——一个开源Shadowsocks多用户后台管理面板,支持SSR新特性 又一个ss面板,我怎么写上瘾了

特点

  • 前端很骚气
  • 算是支持SSR吧
  • python语言使用django搭建
  • github地址:https://github.com/alishtory/xsadmin
  • 注意:我不提供任何关于本项目的解答,这个项目完成度还不是很高,所以有兴趣的可以试试。

截图

XsAdmin项目部署说明

一步一步教你部署xsadmin,下文中使用CentOS 7 x64,默认用root,如用其他用户登录,执行命令前面要加sudo

如有任何问题,欢迎提出Issues。同时欢迎Fork & Pull requests共同维护本文档 🙂

1. 安装前准备

1.1 安装LNMP环境

1.1.1 一键LNMP

为了方便建站,建议部署环境直接配置一键LNMP环境,虽然整个项目是用的是Python来实现的,但是LNMP作为非常常用的web环境,
安装后,对于我们管理网站(例如管理虚拟机、MySQL数据库操作等)都将带来很大的帮助。

参考:LNMP一键安装包

需要安装的组件:
* PHP:方便使用phpMyAdmin管理MySQL等
* Nginx:作为方向代理服务器
* MySQL:作为主站服务器
* Redis:作为高速Cache,消息队列、异步任务等需要用到的中间件
* phpMyAdmin:方便管理MySQL

请按照上面链接的教程,选择对应组件,安装好LNMP环境

另外,lnmp解压包里面有vhost.sh可以方便的管理虚拟主机,addons.sh可以方便的给我们安装扩展

1.1.2 其他扩展

a 自动部署SSL证书扩展

参考:OneinStack自动部署Let’s Encrypt证书./addons.sh脚本在上面安装lnmp环境的解压包文件夹下已经有了,无需再下载oneinstack)

b 阻止SSH暴力破解扩展

参考:fail2ban阻止SSH暴力破解 (可选,也可自行设置,如限制只能用SSH Key登录)

1.2 安装Supervisor

Supervisor简介

Supervisor是一个Python开发的client/server系统,可以管理和监控*nix上面的进程。目前只支持Python2

1.2.1 安装Supervisor

安装supervisor很简单,通过easy_install就可以安装

yum -y install python-setuptools
easy_install supervisor

安装完成之后,就可以用echo_supervisord_conf命令来生成配置文件

echo_supervisord_conf > /etc/supervisord.conf

1.2.2 supervisor开机脚本

wget https://github.com/Supervisor/initscripts/raw/master/redhat-init-mingalevme
mv redhat-init-mingalevme /etc/init.d/supervisord
chmod +x /etc/init.d/supervisord
chkconfig supervisord on  #开机自启动
service supervisord restart  #启动

1.3 升级Python到3.6

我们的项目环境要求是Python 3.5+,我们需要升级Linux系统默认带的Python2,这次我们升级到最新的Release版本:Python 3.6.0

1.3.1 下载 & install

yum -y install xz wget gcc make gdbm-devel openssl-devel sqlite-devel zlib-devel bzip2-devel
wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz
tar -vxzf Python-3.6.0.tgz
cd Python-3.6.0/
./configure --enable-optimizations --enable-loadable-sqlite-extensions --with-zlib
make && make install

这样,Python3就装好了,默认会安装在/usr/local/bin/python3,还附带安装了pip(/usr/local/bin/pip3),不和原本的Pytho2冲突
可以查看Python3和pip3的版本

python3 -V
pip3 -V

1.3.2 安装必要组件

项目在部署的时候,会用到virtualenv,她能很好的帮我们隔离Python运行环境

执行下面的命令进行安装:

pip3 install virtualenv

2. 初始化项目结构

执行如下命令:

cd /data/
yum install -y git
git clone https://github.com/alishtory/xsadmin_deploy.git
cd xsadmin_deploy
git clone https://github.com/alishtory/xsadmin.git

创建Python的virtualenv环境,执行以下命令:

virtualenv env

整个项目结构如下:

/data/xsadmin_deploy  ##项目根目录
├── env      ## virtualenv根目录
├── xsadmin  ## Django 项目目录
├── logs     ## supervisor日志文件
├── static   ## web静态文件目录
├── upload   ## web文件上传目录
├── conf     ## 一些配置文件
├── LICENSE
├── README.md

3. 配置你的XsAdmin项目

先确定在项目根目录/data/xsadmin_deploy,如果不在,切换到这里

首先,激活virtualenv

source env/bin/activate

切换到Django项目目录

cd xsadmin

安装项目依赖

pip install -r requirements.txt

配置项目

vi xsadmin/settings_custom.py

编辑Django配置文件,

SECRET_KEY = '[email protected]%[email protected]^t7+#%x$^kk8_%pm_wcnq6ga!2='  #建议随机改一下加密Key
ALLOWED_HOSTS = ('127.0.0.1', 'xsadmin.org',)  #自定义域名
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'xsadmin',
        'USER':'xsadmin',
        'PASSWORD':'xsadmin', #用phpMyAdmin建立用户和对应的数据库,这里配置对应数据库及密码
        'HOST':'127.0.0.1', #phpMyAdmin建立用户时,可选只允许本地127.0.0.1(注意不要填localhost)
        'PORT':'3306'  #默认的3306
    }
}
STATIC_ROOT = "/data/xsadmin_deploy/static/"  #改成静态文件目录
MEDIA_ROOT = '/data/xsadmin_deploy/upload/'   #上传文件目录
SITE_CONFIG = {
    'SITE_NAME':'XS Admin',  #网站标题
    'SITE_DESC':'One powerful tool...', #网站说明
}
INIT_TRANS_ENABLE = 6*1073741824 #默认用户流量是6G
#极验证,自己去geetest.com注册生成
GEE_CAPTCHA_ID = 'b46d1900d0a894591916ea94ea91bd2c'
GEE_PRIVATE_KEY = '36fc3fe98530eea08dfc6ce76e3d24c4'

同步数据库

python manage.py migrate

创建管理员帐号

python manage.py createsuperuser  #然后按照提示输入,完成创建超管帐号

同步静态资源文件

python manage.py collectstatic

4. 配置Supervisor

修改配置文件

vi /etc/supervisord.conf

shift+G,跳转至文件末尾,i插入,在配置文件末尾加入

[include]
files = /data/xsadmin_deploy/conf/supervisor_*.ini

重启Supervisor

service supervisord restart

查看Supervisor管理的进程状态

supervisorctl status

确定 uwsgi_xsadmincelery_workercelery_beat 都是RUNNING状态

5. 配置Nginx虚拟主机

进入lnmp解压文件夹下,执行./vhost.sh命令(可参考LNMP一键安装包),完成创建虚拟主机。

本次以xsadmin.org域名为例,来进行说明

创建完虚拟主机后,运行vi /usr/local/nginx/conf/vhost/xsadmin.org,编辑虚拟主机配置文件

5.1 注释root目录

找到#root /data/wwwroot/xsadmin.org;,可以把root注释掉,因为我们这里是Django项目

5.2 配置匹配规则

找到location开始的位置,删除默认配置,改为如下配置:

  charset utf-8; #默认编码方式
  client_max_body_size 75M;

  #文件上传目录
  location /upload {
    alias /data/xsadmin_deploy/upload;
    expires 30d;
    access_log off;
  }

  #静态资源目录,让nginx处理静态文件,速度更快。
  #需要在Django里面配置STATIC_ROOT并运行python manage.py collectstatic
  location /static {
    alias /data/xsadmin_deploy/static;
    expires 30d;
    access_log off;
  }

  # 其他的请求全部交给Python的uWSGI来处理
  location / {
     uwsgi_pass unix:///var/run/xsadmin.sock; #注意这里要和之前的匹配
     include uwsgi_params;
  }

改完后,/usr/local/nginx/conf/vhost/xsadmin.org配置文件如下:

server {
  listen 80;
  listen 443 ssl http2;
  ssl_certificate /usr/local/nginx/conf/ssl/xsadmin.org.crt;
  ssl_certificate_key /usr/local/nginx/conf/ssl/xsadmin.org.key;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
  ssl_prefer_server_ciphers on;
  ssl_session_timeout 10m;
  ssl_session_cache builtin:1000 shared:SSL:10m;
  ssl_buffer_size 1400;
  add_header Strict-Transport-Security max-age=15768000;
  ssl_stapling on;
  ssl_stapling_verify on;
  server_name xsadmin.org;
  index index.html index.htm index.php;
  include /usr/local/nginx/conf/rewrite/none.conf;
  #root /data/wwwroot/xsadmin.org;   #可以把root注释掉,我们是Django项目
  if ($ssl_protocol = "") { return 301 https://$server_name$request_uri; }  #我们开启了全站SSL

  #error_page 404 = /404.html;
  #error_page 502 = /502.html;

  #上面的配置可以用./vhost.sh默认生成的

  #下面是我们需要修改的地方

  charset utf-8;
  client_max_body_size 75M;
  location /upload {
    alias /data/xsadmin_deploy/upload;
    expires 30d;
    access_log off;
  }

  location /static {
    alias /data/xsadmin_deploy/static;
    expires 30d;
    access_log off;
  }

  location / {
     uwsgi_pass unix:///var/run/xsadmin.sock;
     include uwsgi_params;
  }
}

配置完成后,重启Nginx服务

nginx -s reload

访问您的网站,Done~

# XsAdmin ShadowsocksR端部署教程

本ss服务端支持多用户流量控制、支持SSR新特性,需配合xsadmin面板项目Restfull接口使用

1. 安装相关依赖

1.1 安装Requests/Git等

CentOS:

yum install -y git python-setuptools && easy_install pip

ubuntu/debian:

apt-get install -y python-pip git

1.2 安装libsodium

如果要使用 salsa20 或 chacha20 或 chacha20-ietf 算法,请安装 libsodium :

centos:

yum install -y epel-release libsodium

如果想自己编译,那么可以用以下的命令

yum -y groupinstall "Development Tools"
wget https://github.com/jedisct1/libsodium/releases/download/1.0.10/libsodium-1.0.10.tar.gz
tar xf libsodium-1.0.10.tar.gz && cd libsodium-1.0.10
./configure && make -j2 && make install
echo /usr/local/lib > /etc/ld.so.conf.d/usr_local_lib.conf
ldconfig

ubuntu/debian:

apt-get install -y build-essential
wget https://github.com/jedisct1/libsodium/releases/download/1.0.10/libsodium-1.0.10.tar.gz
tar xf libsodium-1.0.10.tar.gz && cd libsodium-1.0.10
./configure && make -j2 && make install
ldconfig

如果曾经安装过旧版本,亦可重复用以上步骤更新到最新版,仅1.0.4或以上版本支持chacha20-ietf

1.3 安装Supervisor

安装supervisor很简单,通过easy_install就可以安装

yum -y install python-setuptools
easy_install supervisor

安装完成之后,就可以用echo_supervisord_conf命令来生成配置文件

echo_supervisord_conf > /etc/supervisord.conf

supervisor开机脚本

wget https://github.com/Supervisor/initscripts/raw/master/redhat-init-mingalevme
mv redhat-init-mingalevme /etc/init.d/supervisord
chmod +x /etc/init.d/supervisord
chkconfig supervisord on  #开机自启动
service supervisord restart  #启动

1.4 安装依赖

pip install requests

2. 获取项目源码

git clone -b manyuser https://github.com/alishtory/shadowsocksr.git

执行完毕后此目录会新建一个shadowsocksr目录,其中根目录的(./shadowsocksr)是多用户版

进入根目录初始化配置(假设根目录在~/shadowsocksr,如果不是,命令需要适当调整):

cd ~/shadowsocksr

3. 配置客户端

3.1 配置API

进入xsadmin项目管理员后台,添加节点,然后点击进入编辑节点页面,右上角有一个API配置信息,点击进入API配置信息页面

复制user-config.json配置内容,并在~/shadowsocksr文件夹下建立并保存成user-config.json文件

同理,复制config_xsadmin.py配置内容,并在~/shadowsocksr文件夹下建立并保存成config_xsadmin.py文件

3.2 配置supervisor进程管理

执行以下命令:

cat<< EOF >> /etc/supervisord.conf
[program:ssserver]
command = python /root/shadowsocksr/xsadmin_server.py
directory = /root/shadowsocksr
user = root
autostart = true
autorestart = true
redirect_stderr=true
stdout_logfile = /root/shadowsocksr/ssserver.log
EOF

重启supervisor:

service supervisord restart

查看ss的运行log:

supervisorctl tail -f ssserver

重启ssserver

supervisorctl restart ssserver

我搭建这个站点的时候就出现问题了,是页面400问题,后来通过这个issue解决。

如果有问题欢迎跟原作者提issur提问。

可以转载,注明出处。91vps » XS Admin——一个开源Shadowsocks多用户后台管理面板,支持SSR新特性

评论 8

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #4

    git都被删了404

    金发大表哥12个月前 (12-24)回复
    • 估计被骂多了吧。。。这个作者真是心大,半成品就放出来,描述的有点过了。

      肥羊12个月前 (12-24)回复
  2. #3

    站长,这项目从头到尾都没提及可不可以自动重置流量。。。。

    Ashe1年前 (2017-08-01)回复
  3. #2

    老大,能不能也做一个一键脚本装这个?

    360_life1年前 (2017-06-28)回复
    • 我拒绝,请看第一段内加粗黑字。

      肥羊1年前 (2017-06-28)回复
  4. #1

    你好,非常喜欢这个颜值很高的平台,尝试进行了安装,新手原因,在STATIC_ROOT = “/data/xsadmin_deploy/static/” #改成静态文件目录
    MEDIA_ROOT = ‘/data/xsadmin_deploy/upload/’ #上传文件目录这个步骤中,改成静态文件是否表示lnmp的web的页面位置?例如我额是/home/wwwroot/123/。是这样意思嘛?应为在这个步骤之前的。cd/data/这步,我就有点蒙,没找到根目录下的data。瞎胡搞的新建了一个data的文件夹,给予了777的权限。也不知道下面如何进行了。卡这里了。

    小蚂蚁2年前 (2017-05-31)回复