Linux 基于 Transmission 搭建 PT 环境并实现外网访问

/ 0评 / 5

背景环境

群晖NAS + CentOS8主机

Transmission部署在CentOS主机上,通过NFS协议挂载群晖NAS的DownLoad文件夹作为PT下载的存储目录;通过内网穿透实现外网访问Transmission,实现远程下载;基于群晖NAS文件系统来管理下载好的资源。

安装 Transmission

使用yum安装

Transmission 包含在 EPEL 拓展仓库中,安装前需要安装 epel-release

yum -y install epel-release
yum -y update

EPEL 源安装成功后,即可安装 Transmission

yum install transmission-daemon

配置

安装成功后,输入 systemctl start transmission-daemon.service 即可启动 Transmission。如果用浏览器打开 web 端(http:// 域名:9091 或 http://IP 地址:9091),会提示 “403: Forbidden”(页面打不开可能是防火墙没有放行相应端口),这是因为 Transmission 还没配置好。

因而,需要输入 systemctl stop transmission-daemon.service 停止 Transmission 服务,再进行配置。

注意,如果安装后没有启动过 Transmission,是不会生成配置文件。因而,需要先启动服务,再停止服务,生成 json 配置文件后再进行配置。值得注意的是,如果在服务启动时修改配置文件再重启服务,配置文件会自动恢复成重启前的内容。

接下来,就可以打开配置文件:

vi /var/lib/transmission/.config/transmission-daemon/settings.json

配置文件的参数非常多,可按自己需求进行修改。如果对 vi 编辑器不了解,Google 或百度一下就有简单的使用介绍。以下条目的修改是本人自己在用的参数:

"download-dir":"/data/nas-download/pt",
"encryption": 2,
“dht-enabled”: false,
"rpc-authentication-required": true,
"rpc-enabled": true,
"rpc-password": "输入你的管理密码",
"rpc-username": "管理你的用户名",
"rpc-whitelist-enabled": false,

更多配置参数,可去 Editing-Configuration-Files探索。

配置好后,保存退出 json 文件,再次输入 systemctl start transmission-daemon.service 启动 Transmission 服务,即可用浏览器打开 web 端(http://域名:9091 或 http://IP 地址:9091),上传种子进行下载。

使用 systemctl enable transmission-daemon 设置服务开机启动。

由于我transmission的下载目录时通过NFS挂载到下载机上,在使用过程中一直出现Permission denied问题,无论如何设置目录权限,都没有解决。后来通过修改transmission-daemon服务运行用户解决:

vim /usr/lib/systemd/system/transmission-daemon.servic

修改Userroot

注意:修改启动用户后,新的配置文件为~/.config/transmission-daemon/settings.json

Web UI 美化界面

Transmission 自带的网页 UI 比较简陋,可以安装 transmission-web-control进行美化:

wget https://github.com/ronggang/transmission-web-control/raw/master/release/install-tr-control.sh --no-check-certificate
sh install-tr-control.sh

制作种子

transmission-create -p -o ./example.torrent -t https://pt.pt-example.com/announce.php -s 4096 ./example.mkv

参数说明:

内网穿透实现Transmission的外网访问

简单来说,要想外网访问家中的transmission,需要路由器通过端口映射的方式访问;由于我家宽带没有外网ip,想在外面访问pt服务只能使用外网穿透的方式,我选择frp来实现。使用内网穿透需要有一台具有外网ip的服务器。

服务端配置

服务器作为公网访问唯一的固定地址,即作为 server 端。内网客户端作为 client 端,会主动向 server 端创建连接,此时再从 server 端反向发送数据即可实现内网穿透。

wget https://github.com/fatedier/frp/releases/download/v0.34.3/frp_0.34.3_linux_amd64.tar.gz

tar -zxvf frp_0.34.3_linux_amd64.tar.gz

mv frp_0.34.3_linux_amd64 /usr/frp

编辑目录下 frps.ini文件:

[common]
# frp 监听地址
bind_port = 7000

#frp 控制面板
dashboard_port = 7500

# dashboard 用户名密码可选,默认都为 admin
dashboard_user = admin
dashboard_pwd = admin

# transmission内网穿透
[transmission]
type = tcp
listen_port = 9010 
auth_token = 12345678

其他具体配置说明请参考frp中文文档

设置完成后执行

./frps -c frps.ini

客户端配置

客户端只需要多配置所链接的服务器端地址,以及要映射客户端的哪些服务端口。

wget https://github.com/fatedier/frp/releases/download/v0.34.3/frp_0.34.3_linux_amd64.tar.gz

tar -zxvf frp_0.34.3_linux_amd64.tar.gz

mv frp_0.34.3_linux_amd64 /usr/frp

编辑目录下 frpc.ini文件:

[common]
# 服务器端地址 填自己服务器端的IP地址或者域名
server_addr = X.X.X.X 
# 服务器端口
server_port = 7000 
# 授权token 要与服务器端的SSH密码一致才能映射 这个密码是6000端口的 1个密码可以对一个端口
auth_token = 12345678 
[ssh]
type = tcp
local_ip = 127.0.0.1 
local_port = 22
# 授权token 要与服务器端的transmission密码一致才能映射 这个密码是9091端口的 1个密码可以对一个端口
auth_token = 12345678 

设置完成后执行

./frpc -c frpc.ini

使用服务启动frpc请参考:FRP systemd 启动脚本 FRP systemd init config

参考文章:

Linux | 如何挂 PT:CentOS 7 安装配置美化 Transmission 及制作种子

CentOS 7.0 (Linux)下配置frp进行内网穿透

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注