本文仅作存档,相关内容已经失效,不推荐使用。新指南请参见: https://www.kmahyyg.xyz/?p=265
更新于 2020-02-14
前言
CAMAL 离线下载套件,顾名思义:Caddy + AriaNG + Mldonkey(ED2K) + Aria2(BT+PT+HTTP+FTP+MAGNET) + Linux 用于简单搭建一个离线下载系统。
上述提到的软件均将运行在 x86_64 架构的计算机上。请在部署时注意您和您所租用的离线下载服务器所在地的法律法规,本人不承担任何相关的法律责任。
如您需要不接受 DMCA 争议的离岸服务器,请参考本人最后一个参考文献。
如果您需要部署 DNS over TLS 规避网络污染,推荐您使用 AdGuard Home .
如果您的网络传输存在极大问题,推荐您使用 KCP 协议加速。
软件下载与基础部署
示例环境:Ubuntu 18.04.1 LTS Full Installation via LXC Virtualization
- Caddy Webserver with FileManager
# apt update -y # apt install curl wget ca-certificates -y # curl https://getcaddy.com | bash -s personal http.filemanager,http.forwardproxy,http.ipfilter,http.login,http.minify,http.nobots,http.upload,tls.dns.rfc2136 $ # 编辑配置文件 /etc/Caddyfile
启动:nohup caddy -conf /etc/Caddyfile > /dev/null 2>&1 &
关于 CaddyServer 的 systmed 后台守护,请参见 此处
- AriaNG Web前端
- Aria2
推荐使用参考文献中对应的一键脚本直接部署,方便简洁快速。如果您熟悉相关配置,您也可以选择从软件仓库安装之后手动配置。
$ sudo apt update -y $ sudo apt install aria2 -y $ # 编辑配置文件 $ aria2c -D --conf-path <Config file path>
一键脚本链接:
# wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/aria2.sh && chmod +x aria2.sh && bash aria2.sh
- MlDonkey
从软件仓库安装并启动:
$ sudo apt update -y $ sudo apt install mldonkey-server -y $ # 编辑系统配置文件 /var/lib/mldonkey/downloads.ini $ sudo systemctl enable mldonkey-server $ sudo systemctl start mldonkey-server
部分配置文件
以下仅展示可运行的最简配置文件,更多详情请参考软件的 Manual Page.
部分文件由于默认配置过长,仅展示修改过的部分。
Caddy (Caddyfile)
由于一般情况下,对于一些特大文件的传输,在运营商不存在劫持或文件过于冷门,且不存在文件审查的情况下,就使用 HTTP 传输就可以了,没必要对这类文件使用 HTTPS。
/aria
为 AriaNG 入口。
https://你的回源二级域名 { root <保存下载路径的上级目录> redir /aria <AriaNG 的 index.html 相对 root 的路径> 302 timeouts none gzip tls <证书> <私钥> header / { Strict-Transport-Security "max-age=31536000;" X-XSS-Protection "1; mode=block" X-Content-Type-Options "nosniff" X-Frame-Options "DENY" } filemanager <网盘入口相对路径> { database <网盘数据库文件保存位置>/filemgr.db } } http://你的CDN加速域名 { root <保存下载路径的上级目录> redir /aria <AriaNG 的 index.html 相对路径> 302 timeouts none gzip filemanager <网盘入口相对路径> { database <网盘数据库文件保存位置>/filemgr.db } }
请在下载目录下执行运行 Caddy 的命令,以避免一些问题。
Aria2 (aria2.conf)
## 文件保存相关 ## # 文件的保存路径(可使用绝对路径或相对路径), 默认: 当前启动位置 dir=<保存下载路径> # 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M disk-cache=32M # 文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc # 预分配所需时间: none < falloc ? trunc < prealloc # falloc和trunc则需要文件系统和内核支持 # NTFS建议使用falloc, EXT3/4建议trunc, MAC 下需要注释此项 file-allocation=trunc # 断点续传 continue=true ## 下载连接相关 ## # 最大同时下载任务数, 运行时可修改, 默认:5 max-concurrent-downloads=5 # 同一服务器连接数, 添加时可指定, 默认:1 max-connection-per-server=16 # 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M # 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载 min-split-size=10M # 单个任务最大线程数, 添加时可指定, 默认:5 split=20 # 整体下载速度限制, 运行时可修改, 默认:0 #max-overall-download-limit=0 # 单个任务下载速度限制, 默认:0 #max-download-limit=0 # 整体上传速度限制, 运行时可修改, 默认:0 #max-overall-upload-limit=1M # 单个任务上传速度限制, 默认:0 #max-upload-limit=1000 # 禁用IPv6, 默认:false disable-ipv6=false ## 进度保存相关 ## # 从会话文件中读取下载任务 input-file=/root/.aria2/aria2.session # 在Aria2退出时保存`错误/未完成`的下载任务到会话文件 save-session=/root/.aria2/aria2.session # 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0 #save-session-interval=60 ## RPC相关设置 ## # 启用RPC, 默认:false enable-rpc=true # 允许所有来源, 默认:false rpc-allow-origin-all=true # 允许非外部访问, 默认:false rpc-listen-all=true # 事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同 #event-poll=select # RPC监听端口, 端口被占用时可以修改, 默认:6800 rpc-listen-port=<修改为你要的端口> # 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项 rpc-secret=<远程管理密码> # 设置的RPC访问用户名, 此选项新版已废弃, 建议改用 --rpc-secret 选项 #rpc-user=<USER> # 设置的RPC访问密码, 此选项新版已废弃, 建议改用 --rpc-secret 选项 #rpc-passwd=<PASSWD> # 是否启用 RPC 服务的 SSL/TLS 加密, # 启用加密后 RPC 服务需要使用 https 或者 wss 协议连接 rpc-secure=true # 在 RPC 服务中启用 SSL/TLS 加密时的证书文件(.pem/.crt) rpc-certificate=<CADDY 申请的 TLS 证书文件> # 在 RPC 服务中启用 SSL/TLS 加密时的私钥文件(.key) rpc-private-key=<CADDY 申请的 TLS 证书私钥文件> ## BT/PT下载相关 ## # 当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:true follow-torrent=true # BT监听端口, 当端口被屏蔽时使用, 默认:6881-6999 listen-port=51413 # 单个种子最大连接数, 默认:55 bt-max-peers=500 # 打开DHT功能, PT需要禁用, 默认:true enable-dht=true # 打开IPv6 DHT功能, PT需要禁用 enable-dht6=true # DHT网络监听端口, 默认:6881-6999 #dht-listen-port=6881-6999 # 本地节点查找, PT需要禁用, 默认:false #bt-enable-lpd=true # 种子交换, PT需要禁用, 默认:true enable-peer-exchange=true # 每个种子限速, 对少种的PT很有用, 默认:50K #bt-request-peer-speed-limit=50K # 客户端伪装, PT需要 peer-id-prefix=-TR2770- user-agent=Transmission/2.77 # 当种子的分享率达到这个数时, 自动停止做种, 0为一直做种, 默认:1.0 seed-ratio=1.5 # 强制保存会话, 即使任务已经完成, 默认:false # 较新的版本开启后会在任务完成后依然保留.aria2文件 #force-save=false # BT校验相关, 默认:true bt-hash-check-seed=true # 继续之前的BT任务时, 无需再次校验, 默认:false bt-seed-unverified=true # 保存磁力链接元数据为种子文件(.torrent文件), 默认:false #bt-save-metadata=true bt-tracker=udp://tracker.coppersurfer.tk:6969/announce,udp://tracker.opentrackr.org:1337/announce,udp://tracker.internetwarriors.net:1337/announce,http://tracker.internetwarriors.net:1337/announce,udp://9.rarbg.to:2710/announce,udp://exodus.desync.com:6969/announce,udp://explodie.org:6969/announce,http://explodie.org:6969/announce,udp://tracker.vanitycore.co:6969/announce,udp://public.popcorn-tracker.org:6969/announce,http://tracker.vanitycore.co:6969/announce,udp://mgtracker.org:6969/announce,http://mgtracker.org:6969/announce,udp://tracker1.itzmx.com:8080/announce,udp://ipv4.tracker.harry.lu:80/announce,http://tracker3.itzmx.com:6961/announce,http://tracker1.itzmx.com:8080/announce,udp://tracker.torrent.eu.org:451/announce,udp://tracker.tiny-vps.com:6969/announce,udp://open.stealth.si:80/announce,udp://tracker.port443.xyz:6969/announce,udp://open.demonii.si:1337/announce,udp://denis.stalker.upeer.me:6969/announce,udp://bt.xxx-tracker.com:2710/announce,http://tracker.port443.xyz:6969/announce,http://open.acgnxtracker.com:80/announce,udp://retracker.lanta-net.ru:2710/announce,http://retracker.telecom.by:80/announce,udp://thetracker.org:80/announce,http://torrent.nwps.ws:80/announce,http://0d.kebhana.mx:443/announce,udp://tracker.uw0.xyz:6969/announce,udp://tracker.cypherpunks.ru:6969/announce,https://tracker.fastdownload.xyz:443/announce,https://opentracker.xyz:443/announce,http://tracker.cypherpunks.ru:6969/announce,http://opentracker.xyz:80/announce,http://open.trackerlist.xyz:80/announce,udp://zephir.monocul.us:6969/announce,udp://tracker.ds.is:6969/announce,wss://ltrackr.iamhansen.xyz:443/announce,udp://tracker2.itzmx.com:6961/announce,udp://tracker.tvunderground.org.ru:3218/announce,udp://tracker.toss.li:6969/announce,udp://tracker.swateam.org.uk:2710/announce,udp://tracker.kamigami.org:2710/announce,udp://tracker.iamhansen.xyz:2000/announce,https://2.track.ga:443/announce,http://wegkxfcivgx.chickenkiller.com:80/announce,http://tracker4.itzmx.com:2710/announce,http://tracker2.itzmx.com:6961/announce,http://tracker.tvunderground.org.ru:3218/announce,http://tracker.torrentyorg.pl:80/announce,http://tracker.city9x.com:2710/announce,http://t.nyaatracker.com:80/announce,http://retracker.mgts.by:80/announce,http://open.acgtracker.com:1096/announce,http://node.611.to:9000/announce,wss://tracker.fastcast.nz:443/announce,wss://tracker.btorrent.xyz:443/announce,udp://tracker.justseed.it:1337/announce,udp://packages.crunchbangplusplus.org:6969/announce,https://1337.abcvg.info:443/announce,http://share.camoe.cn:8080/announce,http://fxtt.ru:80/announce
将 Aria2NG 解压到网站根目录下,从浏览器访问,然后配置对应 Aria2 本地配置项:
- 使用协议
- 域名 地址 端口
- RPC 密钥
即可使用。
Aria2 (trackers_all.txt)
来源:https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt
MLdonkey (/var/lib/mldonkey/downloads.ini)
allowed_ips = ["0.0.0.0/0";] shared_directories = [ { dirname = shared strategy = all_files priority = 0 }; { dirname = "<下载文件保存目录>" strategy = incoming_files priority = 0 }; { dirname = "incoming/directories" strategy = incoming_directories priority = 0 };]
保存目录可以自由修改,需要注意文件夹权限问题。
MLDonkey 的进一步配置
在完成上面的配置之后,我们来添加管理员账户并设置一个普通用户。
同时对 ED2K 服务器列表 server.met 进行一次更新。
$ telnet localhost 4000 > useradd admin <你的管理员密码> > quit $ sudo systemctl restart mldonkey-server $ telnet localhost 4000 > auth admin <你的管理员密码> > d http://ed2k.2x4u.de/v1s4vbaf/max/server.met > useradd 普通用户名 普通用户密码 > quit
经过上述设置之后,你可以通过 http://<你的IP>:4080
来登陆 WebUI 进行下载了。
注意每次拷贝下载完成的文件之前要去 WebUI 右上角命令框里输入一次 commit
.
MLDonkey 忘记管理员密码
/var/lib/mldonkey/users.ini
里:
将对应 user_name = admin
的 user_pass
清空后重启服务。
关于后台进程守护
建议参考 阮一峰老师的 Systemd 相关教程和 计算器启动 与 后台守护相关文章
Unix 哲学: Keep simple, keep stupid.
如果你想学习更多的内容,也欢迎你前往 Arch Linux Wiki 那里有最详细的人类友好型文档,Arch Wiki 中的大多数内容对基于 Systemd 的发行版均是适用的。
CDN 中转加速
准备域名
如果你还没有域名,你需要注册一个域名,个人推荐 NameSilo ,便宜,附送 WHOIS 隐私保护,支持支付宝。
然后建议将域名托管到 https://dns.he.net ,分别添加一个指向 @ 和 www 的 A 记录。再添加一个 cf_www 和 回源二级域名 的 A 记录。
注册一个 Cloudflare 账户,注册完成后不做任何配置。
CNAME 接入 Cloudflare 加速
- 寻找一家 Cloudflare Partner,并确保您的域名 没有 在 Cloudflare 注册过或正在处于 Cloudflare 服务之下。
- 按照提示添加域名,之后按照 Partner 提示设置 www 记录的回源地址为 cf_www 地址。
- 添加一个 CDN 加速域名,此 CDN 加速域名的回源地址指向 回源二级域名 地址。
- 前往您的域名托管商,本例中是 HE,添加一个 CNAME 记录,从 CDN 加速域名 指向
cdn.cf-a.x-gslb.com
或者cdn.cf-b.x-gslb.com
。 - 通过 CDN 加速域名下载文件即可。
完
还有问题?请使用评论框。
公告:本站评论 不对 使用中国大陆 IP 地址访问本站的用户开放。
Hostsolutions 关于 FUSE 无法使用的问题
该站的老板不是专业的 IDC,是个 Oneman,工单回复时效基本按月计算。需要使用 FUSE 进行 rclone 等操作的用户请先工单请求开启 FUSE,然后在 /etc/systemd/system/hostsolutions-enable-fuse.service
中插入下列内容后:
[Unit] Description=Hostsolutions' LXC VPS - Enable FUSE After=basic.target Wants=local-fs.target basic.target [Service] User=root Group=root ExecStart=/bin/mknod -m 666 /dev/fuse c 10 229 Type=oneshot [Install] WantedBy=multi-user.target
执行
# systemctl daemon-reload # systemctl start hostsolutions-enable-fuse.service # systemctl enable hostsolutions-enable-fuse.service
之后使用 ls -alh /dev
检查输出是否为 crw-rw-rw- 1 root root 10, 229 Jan 29 21:13 fuse
参考文献
- Caddy Server Documentation
- Doubi Location
- Cloudflare $5000 Route
- HE.net DNS
- Caddy Filemanager
- Aria 2 Onekey Script
- AriaNG WebUI
- MLDonkey Config
- Hostsolutions Anti-DMCA VPS
Windows Server 端口转发配置:
netsh interface portproxy add v4tov4 listenaddress=INTERFACEIP listenport=LOCALPORT connectaddress=REMOTEIP connectport=REMOTEPORT