安装CTlist

新建并进入CTList目录 输入

1
$ mkdir /opt/CTList && cd $_

64位系统下载 输入

1
$ wget https://raw.githubusercontent.com/mboyka/CTList/master/exec/amd64/linux/CTList

32位系统下载 输入

1
$ wget https://raw.githubusercontent.com/mboyka/CTList/master/exec/i386/linux/CTList

arm架构下载 输入

1
$ wget https://raw.githubusercontent.com/mboyka/CTList/master/exec/arm/linux/CTList

下载配置文件

输入命令

1
$ wget https://raw.githubusercontent.com/mboyka/CTList/master/config.json

下载默认主题index.html 输入命令

1
$ wget https://raw.githubusercontent.com/mboyka/CTList/master/index.html

注: 有两个主题可供参考: HaorWu | jackjieYYY
更换主题 下载作者发布的index.html文件 放进CTlist文件夹里面 覆盖掉之前那个默认的主题即可

配置config文件

1
2
3
4
5
6
7
8
9
10
11
"Enable": 1,                  # 0: 关闭, 1: 打开                                              
"UserName": "", # 天翼云网盘登陆用户名,不需要@189.cn.
"Password": "", # 天翼云网盘登陆密码
"CaptchaMode": "0", # 验证码. 0: 遇到验证码拒绝登陆, 1: 手动输入验证, 其他: 自动识别验证码的API.
"RefreshToken": "", # 天翼网盘会话. 保持默认, 如果出现异常, 请将该值清空.
"SubPath": "/CTList", # 指定某账户挂载在网站的某个目录, 多账户时每个目录值必须唯一.
"RootPathId": "-11", # 设置展示天翼网盘目录的ID, 根目录为 -11.
"HideItemId": "0|-16", # 不展示某个目录或文件, 填写其ID. 每项用"|"分隔.
"AuthItemId": "", # 加密某个目录或文件. "<文件或者目录的ID>?<加密模式>?<用户名>:<密码>"
"RefreshURL": 189, # 下载直链缓存的秒数. 超时则被动更新.
"RefreshInterval": 1800 # 刷新目录结构,如果不常更新,建议设置更长时间.

这里配置总共要填写4项 前3项依照自己的情况填
第四项 也就是CaptchaMode这一项 把0改为"https://api.moeclub.org/SampleCode"

开启CTlist服务

这里要开启CTlist 需要用到一个授权码 获取授权码的方式有两种:
1.向萌咖大佬捐赠 这个方法已失效
2.去向Rat’s Blog大佬索要申请码评论区索要即可
然后再授权 只不过时间有点长
获得申请码后 然后获取授权码→传送门
授权截图
申请码使用提示
[Success]: 绑定成功.
[Query Mode]:查询模式, 查询授权码. 申请码已经被使用.
如果没有有效授权的用户, 运行程序时会出现Error! No Valid User.

获取授权码后 开始启动CTlist
直接运行

1
$ /opt/CTList/CTList -a "AUTH_TOKEN" -bind 0.0.0.0 -port 8000

后台运行

1
$ /opt/CTList/CTList -a "AUTH_TOKEN" -bind 0.0.0.0 -port 8000 -d

注:/opt/CTlist/CTlist是一个文件路径 正常跟着这篇文章做得就是这个路径
如果不是 请自行修改你一开始创建的CTlist路径

1
2
AUTH_TOKEN
就是你获得的授权码 不是申请码哦
1
2
port 8000
就是访问的端口

接着启动CTlist 然后在浏览器上用你的ip:端口号8000/CTlist访问即可
如果你访问不了CTList 那有可能是你的防火墙端口没开启 阿里云之类的请去你的安全组那里放行8000端口

这里提供个centos防火墙开启命令:

1
2
3
4
5
6
7
8
$ CentOS 6
iptables -I INPUT -p tcp --dport 8000 -j ACCEPT
service iptables save
service iptables restart

CentOS 7
firewall-cmd --zone=public --add-port=8000/tcp --permanent
firewall-cmd --reload

如果显示not runing 那就直接去安全组放行就好了

如果自己中途更改了配置文件 就必须重新启动CTlist 这样配置才会生效

1
2
3
4
启动CTlist:systemctl start ctlist
停止CTlist:systemctl stop ctlist
重启CTlist: systemctl restart ctlist
CTlist重载服务: systemctl reload ctlist

设置开机自启

输入命令

1
vi /etc/systemd/system/ctlist.service

把下面这段文字填进文件里面 请先依照自己的状况自行修改

1
2
3
4
设置你的运行监听端口,即你可以通过ip:端口访问程序,这里默认8000。
port="8000"
#设置你的授权码,自行修改
AUTH_TOKEN="xxxxxxx"

将下面这段文字复制到vps上 请先更改存放CTlist的文件路径再输入

1
2
3
4
5
6
7
8
9
10
11
12
13
cat > /etc/systemd/system/ctlist.service <<EOF
[Unit]
Description=ctlist
After=network.target

[Service]
Type=simple
ExecStart=/opt/CTList/CTList -a ${AUTH_TOKEN} -bind 0.0.0.0 -port ${port} -l
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF
1
2
3
启动并设置开机自启
systemctl start ctlist
systemctl enable ctlist

卸载

1
2
未设置开机自启
rm -rf /opt/CTList
1
2
3
4
设置过开机自启
systemctl stop ctlist
systemctl disable ctlist
rm -rf /opt/CTList /etc/systemd/system/ctlist.service

多账号配置

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
28
29
30
[
{
"Enable": 1, # 0: 关闭, 1: 打开
"UserName": "", # 天翼云网盘登陆用户名,不需要@189.cn.
"Password": "", # 天翼云网盘登陆密码
"CaptchaMode": "0", # 验证码. 0: 遇到验证码拒绝登陆, 1: 手动输入验证, 其他: 自动识别验证码的API.
"ViewMode": 0, # 显示模式. 0: 自动识别. 1: 只使用网页模式. 2:只使用WebDAV模式.
"RefreshToken": "", # 天翼网盘会话. 保持默认, 如果出现异常, 请将该值清空.
"SubPath": "/CTList", # 指定某账户挂载在网站的某个目录, 多账户时每个目录值必须唯一.
"RootPathId": "-11", # 设置展示天翼网盘目录的ID, 根目录为 -11.
"HideItemId": "0|-16", # 不展示某个目录或文件, 填写其ID. 每项用"|"分隔.
"AuthItemId": "", # 加密某个目录或文件. "<文件或者目录的ID>?<加密模式>?<用户名>:<密码>"
"RefreshURL": 189, # 下载直链缓存的秒数. 超时则被动更新.
"RefreshInterval": 1800 # 刷新目录结构,如果不常更新,建议设置更长时间.
},
{
"Enable": 1, # 0: 关闭, 1: 打开
"UserName": "", # 天翼云网盘登陆用户名,不需要@189.cn.
"Password": "", # 天翼云网盘登陆密码
"CaptchaMode": "0", # 验证码. 0: 遇到验证码拒绝登陆, 1: 手动输入验证, 其他: 自动识别验证码的API.
"ViewMode": 0, # 显示模式. 0: 自动识别. 1: 只使用网页模式. 2:只使用WebDAV模式.
"RefreshToken": "", # 天翼网盘会话. 保持默认, 如果出现异常, 请将该值清空.
"SubPath": "/CTList", # 指定某账户挂载在网站的某个目录, 多账户时每个目录值必须唯一.
"RootPathId": "-11", # 设置展示天翼网盘目录的ID, 根目录为 -11.
"HideItemId": "0|-16", # 不展示某个目录或文件, 填写其ID. 每项用"|"分隔.
"AuthItemId": "", # 加密某个目录或文件. "<文件或者目录的ID>?<加密模式>?<用户名>:<密码>"
"RefreshURL": 189, # 下载直链缓存的秒数. 超时则被动更新.
"RefreshInterval": 1800 # 刷新目录结构,如果不常更新,建议设置更长时间.
}
]

以上为2个账号配置,注意SubPath不能一样,如果3个账号,直接在[]里面加一次配置文件代码,注意中间使用英文逗号,区分。

目录配置

访问地址

根据配置文件中的SubPath项中参数访问具体网盘,一般SubPath的具体值在终端中显示在中括号内。

1
2
3
4
5
例如: "SubPath": "/CTList"
访问: http://127.0.0.1:5189/CTList

例如: "SubPath": "/"
访问: http://127.0.0.1:5189/

寻找目录id

用于RootPathIdHideItemIdAuthItemId配置项, 打开链接 登录自己的账号
进入需要操作的目录,查看地址栏最后的数字就是这个目录的ID
文件ID需要浏览器F12查看请求项。

1
2
3
RootPathId: 列表展示的根目录对应的天翼网盘文件夹ID, 天翼网盘根目录ID为 -11 
HideItemId: 在展示目录中隐藏天翼网盘内的文件或文件夹,填写其ID,使用 "|" 分隔
AuthItemId: 在展示目录中加密天翼网盘内的文件或文件夹,使用 "|" 分隔

加密目录

AuthItemId配置项采用HTTP 401认证方式加密。
在CTlist文件夹中有个config文件 在里面找到AuthItemId这一项进行配置

1
2
3
4
单个写法
"AuthItemId": "-11?0?UserName:Password"
多个写法
"AuthItemId": "-11?1?UserName:Password|-16?1?UserName:Password"

字段解析:

1
2
3
4
5
AuthItemId 就是目录的id 
0 就是只加密这一层的文件夹 但是依然可以访问里面文件夹的内容
1 就是这个文件夹的所有子项目
username:password 就是你进入文件夹的账号和密码
| 就是多个目录id隔开的符号

刷新策略

1
2
3
4
5
4个刷新逻辑完全异步,互不影响.
Token(登陆保活): 60 * 60 * 10
Cookie(会话授权): 60 * 30
RefreshURL(真实下载链接): 189 (配置文件可改 <RefreshURL>)
RefreshInterval(刷新目录结构): 60 * 15 (配置文件可改, 全局最小值生效 <RefreshInterval>)

使用说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Usage of CTList:
-bind string
Bind Address (default "127.0.0.1")
-port string
Port (default "5189")
-a string
Auth Token.
-c string
Config file. (default "config.json")
-t string
Index file. (default "index.html")
-json
Output json.
-d
Run in the background.
-l
Less output.

目录访问

SubPath配置项,控制目录访问

1
2
3
4
5
6
7
多账户时,确保 SubPath 项唯一.

当 SubPath 配置为空("")或者为单斜杆("/")时
访问路径为 http://0.0.0.0

当 SubPath 配置为具体字段("/CTList")时, "/CTList" 可以修改成自己喜欢的字段.
访问路径为 http://0.0.0.0/CTList

在nplayer 播放器中使用

1
2
3
4
5
网络 --> 添加 --> WebDAV
主机: 填写域名.
路径: 填写 SubPath 值. 如: /CTList
其他请按照情况填写.
可以适当的将最小缓存时间调小,提高浏览体验.

报错相关

1
2
3
4
400(Not Found URL): 未能找到该文件的链接.
404(Not Found): 未完成初次缓存目录结构或文件路径不正确.
422(Not Found Real URL): 未能生成真实的文件下载链接(一般是文件被举报了,无法下载).
5XX: 一般是服务器端的问题. 部分可能的情况有: 主程序没开, 端口不通, 反代配置不正确.

绑定域名

注:有宝塔的就用宝塔面板来绑定 这样简单一点 没有的也可以用caddy

宝塔面板

进入宝塔 点击左侧网站(需先安装Nginx) 添加网站 申请ssl证书 开启强制https
在证书下面找到反向代理 在目标URl填入:http://127.0.0.1:8000
需先申请ssl证书 再反代

caddy配置

以下全部内容是一个整体,请修改域名后一起复制到SSH运行!

1
2
3
4
5
6
7
8
9
10
11
12
13
http访问,该配置不会自动签发SSL 
echo "www.moerats.com {
gzip
tls admin@moerats.com
proxy / 127.0.0.1:8000
}" > /usr/local/caddy/Caddyfile

#https访问,该配置会自动签发SSL,请提前解析域名到VPS服务器
echo "www.moerats.com {
gzip
tls admin@moerats.com
proxy / 127.0.0.1:8000
}" > /usr/local/caddy/Caddyfile

启动caddy 输入

1
/etc/init.d/caddy start

这样打开域名就可以访问了 哈哈

本次教程到此结束 欢迎提出建议! 谢谢!