支持 OneDrive 等国外网盘的目录程序已经见过不少了,但是速度的体验并不是很好,可是支持国内网盘的寥寥无几。主流网盘里,天翼云下载不像百度云一样非会员限速(据说下载过多还是有影响),所以萌咔大佬写了这个 CTList 的程序。

目前在 Linux 中搭建 CTList 的教程非常多,可是对于部分极少接触 Linux 的人来说,体验并不是很好。今天特地整理了一下在宝塔面板中搭建的过程。这里不能避免指令的使用,但是已经尽量精简了需要使用指令的步骤。通过 Linux 搭建的教程萌鼠的博客已经写得非常详细了,可以直接到萌鼠的博客看教程。

界面

CTList

功能

  • 支持多账户
  • 支持显示文件夹大小
  • 支持每天自动签到
  • 支持异步缓存
  • 支持隐藏指定文件夹和文件
  • 支持整个目录,单层目录或单文件访问加密
  • 支持展示任意目录,自定义根目录
  • 支持只读挂载到 PotPlayer(WebDAV), nPlayer(WebDAV)

授权码

CTList 启动是授权模式,需要申请码获取授权码。

如果没有授权码,可以购买:传送门,购买捐赠#11 这个商品。

也可以试着和萌鼠大佬PY,目前没有其他的渠道。

下载

GitHub(新地址)

GitHub(原地址)

去项目把内容下载下来,然后解压。

主文件在\exec\amd64\linux文件夹中(这里注意自己的系统架构),然后是主题文件index.html和配置文件config.json

只要这三个文件就可以了。

上传

本地有编辑器可以本地编辑,没有的话上传到宝塔之后再编辑。

登录宝塔,左侧目录找到文件,选择根目录,找到opt文件夹,在opt文件夹中创建CTList文件夹:

创建CTList

把刚刚下载的三个文件上传到CTList文件夹中。

配置

通过宝塔提供的编辑功能修改文件配置。

编辑配置文件:config.json

[
​    {
​        "Enable": 1,                                    # 0: Disable, 1: Enbale.
​                                                        ## 0: 关闭, 1: 打开
​
​        "UserName": "",                                 # Input Phone Number.
​                                                        ## 天翼云网盘登陆用户名(不要带上'@189.cn').
​
​        "Password": "",                                 # Input Password.
​                                                        ## 天翼云网盘登陆密码.
​
​        "CaptchaMode": "0",                             # Captcha Mode. 0: Auto Reject, 1: Manual Input, other: API URL.
​                                                        ## 验证码. 0: 遇到验证码拒绝登陆, 1: 手动输入验证, 其他: 自动识别验证码的API.
​        "ViewMode": 0,                                  # View Mode. 0: Auto. 1: Only Web Page. 2: Only WebDAV.
​                                                        ## 显示模式. 0: 自动识别. 1: 只使用网页模式. 2:只使用WebDAV模式.
​        "RefreshToken": "",                             # Token. * Do Not Modify It.
​                                                        ## 天翼网盘会话. 保持默认, 如果出现异常, 请将该值清空.
​
​        "SubPath": "/CTList",                           # Index Path. * Unique Per Account.
​                                                        ## 指定某账户挂载在网站的某个目录, 多账户时每个目录值必须唯一.
​
​        "RootPathId": "-11",                            # Default Root: -11
​                                                        ## 设置展示天翼网盘目录的ID, 根目录为 -11.
​
​        "HideItemId": "0|-16",                          # Allow Folder and File.
​                                                        ## 不展示某个目录或文件, 填写其ID. 每项用"|"分隔.
​
​        "AuthItemId": "",                               # HTTP 401.
​                                                        ## 加密某个目录或文件. "<文件或者目录的ID>?<加密模式>?<用户名>:<密码>"
​
​        "RefreshURL": 189,                              # Min: 180, Max: 1800; Allow Max: 2329
​                                                        ## 下载直链缓存的秒数. 超时则被动更新.
​
​        "RefreshInterval": 1800                         # Max: Null, Min: 300
​                                                        ## 刷新目录结构,如果不常更新,建议设置更长时间.
​    }
]

修改CTList配置

如果没啥特殊需求,只需要填写账号密码即可,即前 4 项,且CaptchaMode后面将0改为https://api.moeclub.org/SampleCode用于识别登陆验证码。

如果不想显示全部的文件夹,可以通过修改RootPathIdHideItemIdAuthItemId配置项,登陆https://cloud.189.cn,进入需要操作的目录,查看地址栏最后的数字就是这个目录的ID

文件ID需要浏览器F12查看请求项。

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

修改完成后,保存即可。

如果使用期间有修改过配置文件,需要重启CTList

SSH 运行指令

ssh 连接并进入文件夹

通过 ssh 工具连接系统。

  • 进入文件夹:
cd /opt/CTList
  • 给予权限:
chmod +x CTList
  • 调高 limits:
[ -f /etc/security/limits.conf ] && LIMIT='262144' && sed -i '/^\(\*\|root\)[[:space:]]*\(hard\|soft\)[[:space:]]*\(nofile\|memlock\)/d' /etc/security/limits.conf && echo -ne "*\thard\tmemlock\t${LIMIT}\n*\tsoft\tmemlock\t${LIMIT}\nroot\thard\tmemlock\t${LIMIT}\nroot\tsoft\tmemlock\t${LIMIT}\n*\thard\tnofile\t${LIMIT}\n*\tsoft\tnofile\t${LIMIT}\nroot\thard\tnofile\t${LIMIT}\nroot\tsoft\tnofile\t${LIMIT}\n\n" >>/etc/security/limits.conf
  • 启动 CTList:

这里需要授权码,已经购买了授权码的,需要去绑定账户 →传送门Apply Token和用户名即手机号必填,且一个申请码只能绑定一个天翼云账号,绑定多个账号需要在同样的授权码上绑定其它账号。

直接运行:

/opt/CTList/CTList -a "AUTH_TOKEN" -bind 0.0.0.0 -port 9000

后台运行:

/opt/CTList/CTList -a "AUTH_TOKEN" -bind 0.0.0.0 -port 9000 -d

AUTH_TOKEN为获取到的授权码,9000为访问端口,运行前自行修改。

启动了后,就可以使用ip:9000/CTList访问程序了,后面为SubPath参数路径,自行修改。新手的话,就默认吧。

如果你访问不了程序,可能要检查下防火墙端口,有安全组的也要放行下相关端口,不会的可以自己百度看一下各家的服务器怎么放行端口。

  • 开机自启

建立一个简单的 systemd 配置文件,适用CentOS 7Debian 8+Ubuntu 16+

回到目录:

cd

设置运行监听端口,即可以通过 ip:端口访问程序,这里默认 9000:

port="9000"

设置授权码,自行修改:

AUTH_TOKEN="xxxxxxx"

全部复制执行:

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
systemctl start ctlist
systemctl enable ctlist
  • 其他命令

启动:systemctl start ctlist

停止:systemctl stop ctlist

重启:systemctl restart ctlist

查看状态:systemctl status ctlist

这时候基本就可以正常的访问了,访问地址是:ip:9000/CTListip改成自己服务器的 ip,9000是默认的端口,/CTList是默认的 SubPath 路径。

绑定域名

通过 ip 访问使用肯定是不方便的,这时候我们需要再宝塔面板里面绑定我们的域名。

  • 把需要的域名解析到服务器上
  • 在宝塔的网站中添加站点:所有项目一律不创建,PHP 版本任意,我的是纯静态

CTList

  • 通过宝塔后台部署 ssl,不需要 https 可以跳过此步。
  • 反向代理设置,不要开启缓存:

CTList

这时候,我们就可以通过:域名/CTList访问了。

卸载

未设置开机自启

宝塔面板删除opt文件夹下面的CTList文件夹即可,或者 ssh 执行命令:

rm -rf /opt/CTList

设置过开机自启

ssh 执行命令:

systemctl stop ctlist
systemctl disable ctlist
rm -rf /opt/CTList /etc/systemd/system/ctlist.service

总结

  1. 访问地址

配置文件中SubPath项设置了相应的参数。

默认:"SubPath": "/CTList"

访问: http://127.0.0.1:9000/CTList

例如: "SubPath": "/"

访问: http://127.0.0.1:9000/

  1. 加密目录

AuthItemId配置项采用HTTP 401认证方式加密。

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

# 字段解析
<文件或者目录的ID>?<加密模式>?<用户名>:<密码>

# 加密模式,加密文件选0和1效果相同.
0: 只加密这一层文件夹,可以直接访问这层文件夹内部的内容.
1: 加密这个文件夹的所有子项目.
  1. 刷新策略

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

    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.
  3. 目录访问
    SubPath配置项,控制目录访问。
# 多账户时,确保 SubPath 项唯一.

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

当 SubPath 配置为具体字段("/CTList")时, "/CTList" 可以修改成自己喜欢的字段.
访问路径为 http://0.0.0.0/CTList
  1. 在 nPlayer 播放器中使用

    # 网络 --> 添加 --> WebDAV
    # 主机: 填写域名.
    # 路径: 填写 SubPath 值. 如: /CTList
    # 其他请按照情况填写.
    
    # 优势: 在播放器中可以播放各种编码格式的视频.
    # 可以适当的将最小缓存时间调小,提高浏览体验.
  2. 报错相关

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

本文部署内容总结自萌鼠博客:原文

文章目录