ssrpanel:搭建shadowsocksr流量監控和用戶管理面板

更新:

ssrpanel項目已經被作者閉源且刪除,從github上已經下不到源碼了,所以本文提供的github下載鏈接已失效,需要另行尋找下載途徑。

自己如果有台國外伺服器,一般都會用來搭建用來科學上網的代理,VPN被封禁的嚴重,所以一般會使用SS或者SSR搭建,雖然作者已經被請喝茶了,但起碼還能苟一段時間。

shadowsocksR確實是一款強大的代理工具,但只有後端,對於有流量統計和用戶管理需求的管理者來說就不大方便了,目前比較好的解決方案是使用前端面板,也就是以網站的形式將這些內容呈現出來,方便管理,也方便用戶自己進行查詢。

 

比較出名的前端面板是sspanel,不過作者orvice也已經被請喝茶了,所以sspanel目前更新到V4版本就停止更新了,並且GitHub上面的源碼已經被刪除,只不過還可以從releases頁面下載到

sspanel-v4-最後更新時間.png

也可以看到更新時間是2017年7月9日,至今(2018年9月23日)已經有一年多沒更新了,而且部分功能也不夠完善,雖然有其他人進行了fork,完善了部分功能,比如:zxhm001完善的項目ss-panel-v4,曾搭建過,感覺還可以,而且網上也能找到很多教程,雖然都是基於V3的。

點擊查看sspanel的2張截圖

不過今天要介紹的是更好用的SSRPanel,可以看成是sspanel的升級版,先看看效果圖。

點擊查看ssrpanel的4張截圖

在GitHub上,作者也有一段關於ssrpanel功能的介紹列表(所以13和16哪去了?):

1.SSR多節點賬號管理面板,兼容SS、SSRR,需配合SSR或SSRR版後端使用
2.支持v2ray(開發中)
3.開放API,方便自行定製改造客戶端
4.內含簡單的購物、卡券、邀請碼、推廣返利&提現、文章管理、工單(回復帶郵件提醒)等模塊
5.用戶、節點標籤化,不同用戶可見不同節點
6.SS配置轉SSR(R)配置,輕鬆一鍵導入導出SS賬號
7.單機單節點日誌分析功能
8.賬號、節點24小時和本月的流量監控
9.流量異常、節點宕機郵件或ServerChan及時通知
10.賬號臨近到期、流量不夠會自動發郵件提醒,自動禁用到期、流量異常的賬號,自動清除日誌等各種強大的定時任務
11.後台一鍵添加加密方式、混淆、協議、等級
12.屏蔽常見爬蟲、屏蔽機器人
14.支持單埠多用戶
15.支持節點訂閱功能,可自由更換訂閱地址、封禁賬號訂閱地址、禁止特定型號設備訂閱
17.支持多國語言,自帶英日韓繁語言包
18.訂閱防投毒機制
19.自動釋放埠機制,防止埠被大量長期佔用
20.有贊雲支付
21.可以阻止大陸或者海外訪問
22.中轉節點(開發中)
23.強大的營銷管理:PushBear群發消息
24.telegram機器人(開發中)
25.防牆監測,節點被牆自動提醒、自動下線(TCP阻斷)

其實就目前來說,ssrpanel也有一些不夠完善的地方,比如賬戶充值沒有自動確認充值的選項,只能通過發放充值券的方式,也就是說,先讓用戶通過微信或支付寶等方式轉錢過來,然後人工確認之後再發一個充值券下去,讓用戶充值,不過對於用戶量不多,又不決定做大的管理員來說,已經夠用了。

更新:ssrpanel目前已支持對接有贊雲支付寶國際以及支付寶當面付,可以放心食用。

不過在開始之前有一些東西需要說明:ssrpanel的使用需要安裝lnmp套件(Linux + Nginx + MySQL + Php-fpm),網上有一鍵安裝腳本,可自行搜索「寶塔面板」下載腳本進行執行,本教程只提供手動安裝方式,畢竟自己動手安裝的東西心裡才有數,以後出問題才有能力解決,而且也推薦在摸索中學習。

配置基礎環境

安裝ssrpanel需要配置基礎環境,包括安裝常用的lnmp網站套件,畢竟ssrpanel實際上就是一個網站,除此之外,還需要ssrpanel執行腳本需要使用到的php環境。

安裝MariaDB

首先需要配置源,進入MariaDB官網定製MariaDB的官方源,選擇合適MariaDB版本。如CentOS 7選擇:CentOS > CentOS 7 (x86_64) > 10.3 [Stable],配置源的方法在官網頁面選擇源之後,頁面下方會顯示出來。

選擇版本

之後將官網的配置複製下來,添加為源:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 編輯源
vim /etc/yum.repos.d/MariaDB.repo
    
# 將複製來的配置填入
# MariaDB 10.2 CentOS repository list - created 2018-01-27 07:39 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

# 安裝MariaDB
yum install MariaDB-server -y

# 啟動服務並設置開機啟動
systemctl start mariadb
systemctl enable mariadb

之後是設置MariaDB,主要是MariaDB的安全設置,第一次安裝mysql需要運行此命令:

1
mysql_secure_installation

因為是初次設置MariaDB,root密碼是空的,所以在要求輸入密碼時直接回車,然後按照提示設置新密碼:

1
2
3
4
5
6
7
8
9
10
11
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

# 是否設置root密碼,建議設置密碼以提高安全性,輸入y並回車
Set root password? [Y/n] y

# 設置密碼
New password: 

# 再次輸入密碼
Re-enter new password:

接下來是資料庫相關設置,可以全都輸入y,以下是截取的部分輸出:

1
2
3
4
5
6
7
8
9
10
11
12
13
...
Remove anonymous users? [Y/n] y          # 刪除匿名用戶
...

Disallow root login remotely? [Y/n] y    # 禁止root遠程登錄
...

Remove test database and access to it? [Y/n] y    # 刪除test資料庫
...

Reload privilege tables now? [Y/n] y     # 刷新許可權
...
Thanks for using MariaDB!

安裝Php-fpm以及相關組件

安裝php用webtatic源,更新較快,且其命名有自己的特色方式,可以避免與其他源的某些衝突

1
2
3
4
5
6
# 配置PHP源
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

# 安裝PHP以及PHP擴展
yum install php71w-fpm php71w-gd php71w php71w-mysqlnd php71w-pdo php71w-mcrypt php71w-mbstring php71w-xmlrpc php71w-bcmath unzip php71w-xml php71w-devel -y

安裝好後進行配置:

1
2
3
4
5
6
7
# 編輯配置文件
vim /etc/php.ini

# 找到
;cgi.fix_pathinfo=1
# 去掉注釋,並將1改成0
cgi.fix_pathinfo=0

接著編輯php-fpm的配置文件,因為是配合nginx用的,所以需要把使用php-fpm的用戶改為nginx:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 編輯php-fpm的配置文件
vim /etc/php-fpm.d/www.conf

# 修改第8、10行
user = apache
group = apache
# 改為
user = nginx
group = nginx

# 修改33、34行
;listen.owner = nobody
;listen.group = nobody
# 改為
listen.owner = nginx
listen.group = nginx

最後啟動:

1
2
3
# 啟動服務並設置開機啟動
systemctl start php-fpm
systemctl enable php-fpm

安裝nginx

官方nginx有兩個版本,mainline和stable,即開發版和穩定版,區別是前者引入新特性但可能有新bug,後者足夠穩定。事實上,兩者均比較穩定,nginx的網站總是運行在mainline版上,不過還是推薦新手選擇穩定版。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 編輯repo文件
vim /etc/yum.repos.d/nginx.repo

# 輸入如下內容
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

# 安裝nginx
yum install nginx -y

# 啟動服務並設置開機啟動
systemctl start nginx
systemctl enable nginx

這時lnmp環境就安裝成功了。

安裝Nginx之後存在一個默認配置,只要前面配置沒有錯誤,那麼nginx啟動之後就可打開默認網頁。直接用瀏覽器打開主機IP地址或者域名,如果可以看到nginx的歡迎頁面,就說明nginx已經在工作了。

當然也可以設置用域名打開,不過能用域名打開的前提是已經設置了解析,不知道怎麼設置解析可以移步設置域名解析:給域名設置一些實用有趣的二級域名

nginx安裝成功後的歡迎界面

安裝ssrpanel

ssrpanel是由ssrpanel(作者在GitHub上就是這個名字)開發的,在GitHub上開源的項目:SSRPanel,由於作者頭像用的是哆啦A夢裡面的人物胖虎,所以一般也稱作者為胖虎。

ssrpanel安裝很簡單,基本就是對接MySQL、Nginx,然後給文件夾改許可權就行了。

下載源碼

先進入需要存放ssrpanel的文件夾,一般和前端相關的我都習慣放在/var/www

1
cd /var/www

然後下載ssrpanel源碼:

1
git clone https://github.com/ssrpanel/ssrpanel.git
錯誤提示:「-bash: git: 未找到命令」的解決辦法

然後ls就能看到一個ssrpanel文件夾,直接進入:

1
cd ssrpanel

設置PHP環境

其實上面安裝Php-fpm的時候已經安裝了部分php組件,在這裡需要安裝ssrpanel需要使用的php組件。

使用工具安裝php組件:

1
php composer.phar install

之後就是一大列的安裝組件過程。

如果是較早版本的ssrpanel,還需要自行下載composer.phar組件:

1
2
# 獲取php組件安裝工具
curl -sS https://getcomposer.org/installer | php
  • 注意:必須在ssrpanel目錄下執行,因為會使用到該目錄下的composer.json文件,這個文件內記錄了ssrpanel所需要的組件。
點擊查看出現』proc_open(): fork failed – Cannot allocate memory』的解決辦法

到這裡ssrpanel基本就配置完成了,不過為了讓網站nginx伺服器能夠成功讀取ssrpanel目錄,需要設置許可權和用戶組:

1
2
3
# 設置許可權和用戶組
chown -R nginx:nginx storage/
chmod -R 755 storage/

配置Nginx

新建一個nginx配置文件:

1
vim /etc/nginx/conf.d/ssrpanel.conf

之後複製下面的內容進去:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
server {
  listen 80;
  server_name 127.0.0.1;

  root /var/www/ssrpanel/public;

  location / {
      try_files $uri $uri/ /index.php$is_args$args;
      index index.php;
  }

  location ~ \.php$ {
      fastcgi_pass 127.0.0.1:9000;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include fastcgi_params;
  }
}

保存退出,然後重載nginx:

1
nginx -s reload

由於ssrpanel需要日誌記錄,所以還需要新建一個日誌存檔:

1
touch /var/www/ssrpanel/storage/logs/laravel-2019-03-09.log

配置MySQL資料庫

剛才設置MySQL的時候設置了root賬戶,所以用root賬戶登陸資料庫:

1
mysql -u root -p

輸入密碼就能進入,然後是設置ssrpanel需要用到的資料庫、用戶和密碼:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 創建ssrpanel資料庫,名稱為ssrpanel,可以根據自己喜好改為別的名字
create database ssrpanel;

# 使用新建的ssrpanel資料庫
use ssrpanel;

# 將數據導入新建的ssrpanel資料庫
source /var/www/ssrpanel/sql/db.sql;

# 創建ssrpanel的MySQL用戶,名稱密碼都為ssrpanel
create user 'ssrpanel'@'localhost' identified by 'ssrpanel';

# 賦予剛才創建的ssrpanel用戶以所有許可權
GRANT ALL ON ssrpanel.* TO 'ssrpanel'@'localhost';

# 刷新許可權
flush privileges;

# 退出MySQL
exit

可以按照自己喜好將資料庫、用戶和密碼改成其他,但如果不是按照上面的名字設置,需要在配置文件裡面修改成對應欄位。

接下來把資料庫信息寫進配置文件,複製一份配置文件出來:

1
cp .env.example .env

.env.example是原本就存在的文件,在複製出.env添加配置文件之後,源文件就相當於備份了,以後折騰出錯還能找回來,事實上,折騰伺服器也應該養成備份這個好習慣。

然後編輯配置文件:

1
vim /var/www/ssrpanel/.env

找到對應的位置修改這三項:

1
2
3
DB_DATABASE=ssrpanel    # 資料庫名稱
DB_USERNAME=ssrpanel    # 資料庫用戶
DB_PASSWORD=ssrpanel    # 資料庫密碼

這三行是ssrpanel用來連接MySQL資料庫用的,等號=後面接的就是設置的參數,這三個參數可以改成自己想要設的欄位,只要能記住即可,後面會在配置MySQL的時候進行添加資料庫和用戶的操作。

這裡為了方便演示全都設為ssrpanel,注意是為了演示方便才這樣設的,可以的話把用戶和密碼設的複雜一些。

之後是生成站點key:

1
php artisan key:generate

配置域名訪問

這個時候網站就搭建起來了,直接訪問伺服器ip地址就能打開網頁。

ssrpanel登陸界面.png

如果打開網站發現還是那個nginx的默認界面,就把nginx存在的默認配置刪掉:

1
rm /etc/nginx/conf.d/default.conf

之後再重載nginx即可:

1
nginx -s reload

如果自己有域名,也按照上面說的設置了解析,就修改nginx配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
server {
  listen 80;
  server_name ssrpanel.wenjinyu.me;

  root /var/www/ssrpanel/public;

  location / {
      try_files $uri $uri/ /index.php$is_args$args;
      index index.php;
  }

  location ~ \.php$ {
      fastcgi_pass 127.0.0.1:9000;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include fastcgi_params;
  }
}

之後就可以通過域名訪問了,域名容易記,而且設置好的二級域名,一看便知是用來做什麼的,比如我設置的ssrpanel.wenjinyu.me

不過,為了提高安全,強烈建議使用ssl加密,不了解ssl或者https的可以看:使用 Let』s Encrypt 為網站製作ssl加密,啟用https協議,設置好後網址就是https://ssrpanel.wenjinyu.me,這時需要修改nginx配置文件, 下面這個就是最終結果了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
server {
  listen 443 ssl;
  server_name ssrpanel.wenjinyu.me;   # 設置成自己的域名
  # 下面兩行是ssl密鑰存放目錄
  ssl_certificate       /etc/letsencrypt/live/ssrpanel.wenjinyu.me/cert.pem;
  ssl_certificate_key   /etc/letsencrypt/live/ssrpanel.wenjinyu.me/privkey.pem;

  root /var/www/ssrpanel/public;

  location / {
      try_files $uri $uri/ /index.php$is_args$args;
      index index.php;
  }

  location ~ \.php$ {
      fastcgi_pass 127.0.0.1:9000;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include fastcgi_params;
  }
}

server {
  listen 80;
  server_name ssrpanel.wenjinyu.me;   # 設置成自己的域名
  return 301 https://$server_name$request_uri;
}

設置完記得重新載入nginx使更改生效:

1
nginx -s reload

添加管理員用戶

之所以不將添加管理員的步驟放在ssrpanel配置裡面,是因為添加用戶需要用到MySQL,所以需要先配置MySQL後才能添加用戶。

由於ssrpanel文件夾裡面的資料庫已經存在設置好的管理員賬戶,所以直接用默認的管理員賬戶登錄即可:

1
2
賬戶:admin
密碼:123456
點擊查看舊版ssrpanel新增管理員賬戶的方式

登錄管理員賬戶之後第一件事就是更改賬戶名和密碼,密碼比較容易更改,登錄之後點擊右上角的賬戶,打開個人設置就可以改密碼了。

與此同時,很建議將賬戶名也一起更改,能夠降低被爆破(暴力破解)的風險。可以在用戶管理 -> 用戶列表裡面找到管理員賬戶,點擊後面的操作 -> 編輯進入編輯界面即可更改用戶名。

查看通過系統後台資料庫方式更改用戶名步驟

之後就可以使用這個賬戶登陸ssrpanel面板了。

進入ssrpanel.png

安裝shadowsocksR多用戶版本

為了配合ssrpanel,這裡使用的是資料庫版本的ssr,也就是說,ssr裡面的用戶信息——包括埠之類的參數和使用流量數據等——都存在資料庫裡面。

下載安裝shadowsocksr:

1
git clone -b manyuser https://github.com/shadowsocksrr/shadowsocksr.git /var/www/shadowsocksr

然後再修改shadowsocksr的資料庫配置文件:

1
vim /var/www/shadowsocksr/usermysql.json

將資料庫、用戶名和密碼修改成之前設置的ssrpanel,node_id也要設置為1:

1
2
3
4
5
6
7
8
9
10
11
12
13
{
    "host": "127.0.0.1",
    "port": 3306,
    "user": "ssrpanel",
    "password": "ssrpanel",
    "db": "ssrpanel",
    "node_id": 1,
    "transfer_mul": 1.0,
    "ssl_enable": 0,
    "ssl_ca": "",
    "ssl_cert": "",
    "ssl_key": ""
}

至於node_id為什麼要設為1,對於需要配置多節點的人來說很需要了解。

在後台管理界面:節點管理 – 節點列表可以通過添加節點按鈕添加節點,添加完後可以在改節點的第一項看到ID,這個ID就是node_id,也就是說,node_id是告訴面板這是第幾個序號的節點。很重要的一點是,node_id是在面板添加節點之後才生成的,所以要增加節點,首先需要在面板添加節點,之後再對節點進行配置。

配置好後進入ssr目錄進行相關配置:

1
2
3
4
5
6
7
cd /var/www/shadowsocksr/

# 安裝依賴(cymysql)
./setup_cymysql.sh

# 初始化配置
./initcfg.sh

然後編輯用戶配置文件:

1
vim userapiconfig.py

API_INTERFACE等號後面改成'glzjinmod',也就是:

1
API_INTERFACE = 'glzjinmod'

glzjinmod是多用戶模式,其他幾個模式暫時沒找到相關資料,所以我也不是很懂到底是做什麼的。

此時就可以試運行ssr了:

1
python server.py

如果沒報錯,那麼就可以Ctrl+C結束進程,然後放在後台運行了:

1
./run.sh

如果需要記錄運行日誌,可以用下面這個腳本:

1
./logrun.sh

設置守護進程

shadowsocksr如果用上面的方式運行,那麼關掉命令行窗口之後進程就會被殺死,如果用nohup或者&之類的也有可能在後台運行的時候被殺死,所以最好還是設置成守護進程。

添加一個配置文件:

1
vim /etc/systemd/system/shadowsocksr.service

加入以下配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[Unit]
Description=ShadowsocksR server
After=syslog.target
After=network.target

[Service]
LimitCORE=infinity
LimitNOFILE=512000
LimitNPROC=512000
Type=simple
WorkingDirectory=/var/www/shadowsocksr
ExecStart=/usr/bin/python /var/www/shadowsocksr/server.py
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
Restart=always

[Install]
WantedBy=multi-user.target
Alias=ssr

然後就可以通過守護進程的方式啟動了:

1
2
3
4
5
# 啟動ssr
systemctl start shadowsocksr

# 設置開機自啟
systemctl enable shadowsocksr

設置防火牆

有些時候並不是ssr或者ssrpanel設置好就能用的,還需要注意系統的防火牆,很多新手都會卡在這個地方。

由於個人習慣使用iptables進行防護牆管理,所以一般會關掉自帶的selinux或者firewalld。

關閉SELinux

SELinux是一般Linux會自帶的防火牆,但是一開始接觸的就是iptables,而且不打算換,所以一般都會把SELinux關掉。

查看SELinux是否開啟:

1
/usr/sbin/sestatus -v

如果SELinux status參數為enabled即為開啟狀態:

1
SELinux status:                 enabled

關閉SELinux,修改配置文件:

1
vim /etc/selinux/config

1
SELINUX=enforcing

改為

1
SELINUX=disabled

然後重啟

關閉firewalld

firewalld也是一個防火牆工具,centos伺服器一般會預裝,但用不習慣,所以一般會關掉。

查看firewalld運行狀態:

1
systemctl status firewalld

關閉firewalld:

1
systemctl stop firewalld

關閉firewalld開機自啟:

1
systemctl disable firewalld

或者乾脆點,直接卸了:

1
yum remove firewalld

設置iptables規則

iptables是一款好用的防火牆管理工具,可用於加強伺服器安全。使用方法有也很簡單,例如規定ssr能使用的埠範圍為10000到11000這1001個埠,那麼就這樣添加規則:

1
2
iptables -A INPUT -p tcp --dport 10000:11000 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 10000:11000 -j ACCEPT

然後保存規則:

1
service iptables save

iptables的安裝以及詳細規則解說網上很多,一搜就有,這裡就不贅述了。

定時任務

ssrpanel需要設置定時任務,否則就看不到每個用戶使用流量的曲線圖。

添加定時任務:

1
crontab -e -u nginx

加入下面這一行:

1
* * * * * php /var/www/ssrpanel/artisan schedule:run >> /dev/null 2>&1

ssrpanel的記錄規則是每小時和每天,所以添加定時任務後的下一個小時就可以看到數據了。

ssrpanel流量圖.png

設置用戶註冊驗證郵箱

如果網站開放註冊,那麼就會有一個激活賬戶的問題。

有一個方法是由管理員手動激活,這樣做缺點也比較明顯,就是麻煩。

第二個方法就是配置好註冊激活郵箱,如果用戶註冊了帳戶,那麼就用這個配置的郵箱把賬戶激活鏈接發送給用戶,然後用戶通過點擊這個鏈接就可以激活賬戶了。

這個用來把激活鏈接發送給用戶的郵箱並沒有什麼特殊要求,不過最好還是用一些比較特殊的郵箱,比如本站域名為wenjinyu.me,使用的激活郵箱就是"[email protected]",這樣子好管理,收到郵件的用戶對發送方的身份也是一目了然。

註冊企業郵箱

如果只是使用普通郵箱,那麼可以直接跳到下一步。

配置域名郵箱,例如上面用來舉例子的"[email protected]",需要有自己的域名。域名郵箱可以自己搭建郵件系統,但是這種方式並不推薦,原因是搭建起來容易,卻不容易維護,原因有以下幾個:

  1. 自建郵箱發送的郵件很容易被接收方的郵件服務商分類為垃圾郵件,這個需要和各個郵件服務商溝通解決。
  2. 反垃圾機制的缺失,自建郵件通常會收到一大堆垃圾郵件。

自建郵件伺服器不容易,和郵件服務商的溝通先不說,反垃圾就夠嗆的了,即使有毅力維護,也需要花費不少時間精力,這樣做並不值得,所以還是安心使用企業郵箱。本來最推薦的是gmail企業郵箱,不過現在已經收費了,$5/月,現在網站還是入不敷出,所以就只能先尋找免費方案湊合著用。

目前本站使用的是網易企業郵箱,優點是免費,缺點不少,比如配置簡陋,還有就是不少郵件發不出去,經常收到退信,原因不明(官方說明是「發送的信件大小超過了對方的接收限制」,不過4k不到的郵件怎麼可能超),猜測是接收方的郵件伺服器在國外,最近也在尋找更好的方案,有推薦的話歡迎和我交流。

註冊網易企業郵箱的網址在這裡:http://app.ym.163.com/ym/reg/view/index

註冊過程比較簡單,就不多說,註冊之後需要設置域名DNS解析,按照提示操作就行。設置完之後需要等待一段時間才能使解析生效,然後就可以使用了。

配置註冊驗證郵箱

有了自己的郵箱之後需要在ssrpanel中進行配置才能使用。許多使用ssrpanel的人都卡在這一步,我也摸索了許久,以下只能以我自己在用的網易企業郵箱作為例子。

1
2
3
4
5
# 進入ssrpanel文件夾
cd /var/www/ssrpanel

# 編輯配置文件
vim .env

找到MAIL_開頭的部分,網易企業郵箱的配置如下:

1
2
3
4
5
6
7
8
MAIL_DRIVER=smtp
MAIL_HOST=smtp.ym.163.com
MAIL_PORT=994
[email protected]
MAIL_PASSWORD=*************
MAIL_ENCRYPTION=ssl
[email protected]
MAIL_FROM_NAME=SSRPanel

了解更多網易企業郵箱的相關設置可以訪問網易企業免費郵–幫助中心,客戶端設置部分摘錄如下:

客戶端的設置方法
網易免費企業郵支持POP3/IMAP/SMTP服務,您可以通過電腦客戶端軟體更好地收發郵件,伺服器地址:

POP3:pop.ym.163.com 默認埠為:110 (如勾選ssl安全鏈接,埠號為995)

SMTP:smtp.ym.163.com 默認埠為:25 (如勾選ssl安全鏈接,埠號為994)

IMAP:imap.ym.163.com 默認埠為:143 (如勾選ssl安全鏈接,埠號為993)

需要注意的地方:

  1. MAIL_USERNAMEMAIL_FROM_ADDRESS是一樣的
  2. 如果使用的是QQ郵箱,那麼MAIL_PASSWORD就不是填郵箱密碼,而是需要登陸QQ郵箱網頁版,進入設置 – 賬戶 – POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務,找到下方的生成授權碼
    qq郵箱生成授權碼.png
    然後會提示發送簡訊生成授權碼:
    qq郵箱發送簡訊生成授權碼.png
    之後把這個授權碼作為郵箱登陸密碼填到MAIL_PASSWORD

解決問題

設置好之後可以自己實驗性地註冊一個賬號看看能否收到註冊激活郵件,如果沒有收到,那麼可以通過查看ssrpanel後台管理的郵件投遞記錄分析問題所在:

ssrpanel郵件投遞記錄.png

如果註冊沒有收到郵件,郵件投遞記錄提示time out

ssrpanel郵件投遞提示time_out.png

一般都是郵箱配置正確,但是防火牆沒有打開對應埠,可以參照前文設置防火牆一節,然後通過以下命令把對應埠加入白名單:

1
2
iptables -A INPUT -p tcp --dport 埠 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 埠 -j ACCEPT

不過有些運營商僅僅設置這些是不夠的,比如:

  1. 阿里雲:需要配置安全組,方法如下:進入網頁版管理控制台 – 雲伺服器ECS – 網路和安全 – 安全組,然後在安全組上面添加規則。
  2. Digit Ocean:DO似乎限制smtp郵箱發送,可以參考這個issue:https://github.com/ssrpanel/SSRPanel/issues/965。

其他的運營商並沒有過多了解,就不多言。

客戶端下載

新版更新:新版本已經添加好客戶端下載鏈接了,如果想要使用自己提供的客戶端,可以按照本節步驟操作。

點擊展開

安裝libsodium

安裝libsodium可以支持SSR的ChaCha20加密方式,如果需要用到可以安裝,直接安裝的方式也很簡單:

1
yum -y install libsodium

也可以自己下載源碼進行編譯安裝,不過估計一般人都是圖省事,就不放方法了,有興趣的直接網上去搜吧。

mysql改用戶名和密碼

有的人偷懶,跟著我的例子把資料庫名,用戶名還有密碼都設為了ssrpanel,只在本地登錄還沒什麼。

但是如果之後需要添加節點,那麼就要設置用戶為ssrpanel@%,也就是說任何地方都可以登陸了,那麼這樣的資料庫就很容易被人爆破了,這個時候就需要改名了。

因為本來就有用戶存在了,直接用root用戶登陸MySQL,然後改名字就行了:

1
update mysql.user set user='新用戶名' where user='ssrpanel';

改了名字就變成一個新用戶了,這個時候就需要在改完之後重新授予新用戶對ssrpanel資料庫的操作許可權:

1
GRANT ALL ON ssrpanel.* TO '新用戶名'@'localhost';

如果多節點需要登陸MySQL,那麼還需要設置MySQL用戶的可登陸IP為%,也就是任意IP都可登陸,而不止局限於本地用戶:

1
update mysql.user set host='%' where user='新用戶名';

把用戶名改複雜一點,這樣不容易被爆破,然後再把密碼改改,起碼別用ssrpanel

1
UPDATE user SET password=PASSWORD("新密碼") WHERE user='新用戶名';

或者也可以用這條命令:

1
set password for '新用戶名'@'localhost'=password('新密碼');

改完記得刷新許可權

1
flush privileges;

如果想新建一個用戶而不是改名的話,那麼就需要取消原來的用戶ssrpanel所擁有的許可權:

1
revoke all on ssrpanel.* from ssrpanel@localhost;

如果是想刪除這個用戶,那麼用下面的命令

1
delete from user where user='ssrpanel' and host='localhost';

後話

為了搭建這個面板著實費了一番功夫,胖虎在發布ssrpanel的時候是有說明的,但是說的不詳細,不是很了解的話,還是需要踩很多坑後才能裝上去,這次裝面板花了兩三天才成功,主要是前期尋找解決方案花了不少時間,因為除了ssrpanelssrpanel之外,還有moess等其他優秀的面板,只是懶得試過然後再選了,所以直接敲ssrpanel了。

這次搭建完然後寫這篇文章也是想分享一下經驗,畢竟肯定不少人需要,只是沒想到寫了這麼一大篇下來,這是在裝好面板幾天後才動手寫出來的文章,難免會有疏漏,如果有人發現教程有疏漏或者安裝過程中有問題,可以在下面評論,我會儘快回復。

原文:https://www.wenjinyu.me/zh/ssrpanel-shadowsocksr-ssr-users-management-monitoring/