安装了jellyfin后都会安装插件也就是所谓的搜刮器,但是大部分都是需要访问国外的IP,这就造成每次手动识别都非常的慢,识别一个片子大概要1-2分钟。片子少还好,一旦多了就很麻烦了。于是想到通过代理的方式实现科学上网和搜刮。奈何jellyfin本身设置里并不支持配置代理,所以只能另辟蹊径。
正好自己有香港阿里云的服务器,之前也搭建了trojan,不论是手机还是电脑使用起来是相当方便。于是就考虑把jellyfin也通过它来实现代理。话不多说详细教程如下:
1、nas安装trojan客户端
因为我的服务器是trojan搭建的,所以直接在nas上安装和运行trojan客户端即可。下载链接https://github.com/trojan-gfw/trojan/releases/。自己根据系统选择合适的客户端,铁威马NAS直接选择amd64.tar.xz后缀的即可。
下载到nas后解压,修改config.json 。把服务器ip和端口替换成你搭建VPN服务的ip和端口,密码也是。
代码: 全选
{
"run_type": "client",
"local_addr": "127.0.0.1",
"local_port": 1080,
"remote_addr": "服务器IP",
"remote_port": 服务端口,
"password": [
"密码"
],
"log_level": 1,
"ssl": {
"verify": false,
"verify_hostname": true,
"cert": "",
"cipher_tls13":"TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384",
"sni": "",
"alpn": [
"h2",
"http/1.1"
],
"reuse_session": true,
"session_ticket": false,
"curves": ""
},
"tcp": {
"no_delay": true,
"keep_alive": true,
"fast_open": false,
"fast_open_qlen": 20
}
}
因为trojan默认提供的是socks5代理,这个是没法直接给jellyfin使用的。需要把它变成http-proxy。
经过网上查资料发现可以使用privoxy这个软件来实现。网上的教程都是通过apt-get或者yum直接安装使用,但是因为咱们铁威马没有开放后台的软件安装权限或者有命令我还没有发现。于是想到通过docker一样能达到效果(docker真是个好东西)。网上搜了一下果然已经有人打好了包,原文链接:https://github.com/rafacouto/docker-privoxy
原文运行方式是
代码: 全选
docker run -d --name=privoxy -p 8118:8118 caligari/privoxy:latest
代码: 全选
docker run -d --name=privoxy --network host caligari/privoxy:latest
先备份下他的原始配置
代码: 全选
docker exec -it 5c3727325e0c mv /etc/privoxy/config /etc/privoxy/config_bak
代码: 全选
docker cp config 5c3727325e0c:/etc/privoxy/
代码: 全选
forward-socks5t / 127.0.0.1:1080 .
代码: 全选
ter_curl --proxy 127.0.0.1:8118 cip.cc
3、巧用python脚本实现jellyfin代理上网
这里我尝试过修改系统代理,但是因为系统代理只能设置哪些流量不走VPN,但是这样就需要添加无数的ip,显然是不现实的。所以放弃了这个想法。这个就是举例大家看下就行。no_proxy里写的就是不走代理的地址。 在查了很多资料走投无路之时,想起了chatgpt,于是我就请教了一下它,果然没有让我失望。它成功的给了我解决方案。就是利用python脚本来单独针对jellyfin软件来实现代理上网。当然你也可以用这个方法让任何一个支持http_proxy的软件实现单独代理上网。python脚本如下:
代码: 全选
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import subprocess
import sys
def enable_proxy(proxy_host, proxy_port):
os.environ['http_proxy'] = 'http://{}:{}'.format(proxy_host, proxy_port)
os.environ['https_proxy'] = 'http://{}:{}'.format(proxy_host, proxy_port)
def disable_proxy():
os.environ.pop('http_proxy', None)
os.environ.pop('https_proxy', None)
def start_jellyfin():
jellyfin_command = [
'/Volume1/@apps/Jellyfin/bin/program/jellyfin',
'-d', '/usr/local/@APP_CONFIG/Jellyfin/data',
'-C', '/usr/local/@APP_CONFIG/Jellyfin/cache',
'-c', '/usr/local/@APP_CONFIG/Jellyfin/config',
'-l', '/usr/local/@APP_CONFIG/Jellyfin/log'
]
subprocess.call(jellyfin_command)
def main():
proxy_host = '127.0.0.1' # 替换为实际的代理服务器地址
proxy_port = 8118 # 替换为实际的代理服务器端口
try:
enable_proxy(proxy_host, proxy_port)
start_jellyfin()
finally:
disable_proxy()
if __name__ == '__main__':
main()
代码: 全选
nohup python jellyfin_proxy.py &
以上就是全部内容,希望对大家有帮助。