铁威马NAS自带jellyfin通过代理实现科学搜刮

自由发言讨论区,与产品技术无关的任何主题。
回复
头像
yz1236547890
帖子: 4
注册时间: 2023年 8月 11日 星期五 10:21 pm

铁威马NAS自带jellyfin通过代理实现科学搜刮

帖子 yz1236547890 »

做为铁威马新用户,最近忙着装了很多软件,jellyfin就是其中之一。毕竟当初买它就是为了方便自己看电影。但是在使用搜刮器的时候遇到了问题,就是总是识别不准或者识别的很慢。针对识别不准可能是文件名的问题,这里不讨论。今天主要说下如何解决识别慢的问题。
安装了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
    }
}
之后直接执行exec trojan & 这样trojan客户端就算是在后台运行了。可用netstat -alntp |grep 1080看下自己的服务是否正常启动了。像我这样就是没问题的。
1.png
1.png (6.95 KiB) 查看 2359 次
2、设置http代理
因为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
这里咱们修改下不用端口映射了,直接使用host网络运行

代码: 全选

docker run -d --name=privoxy --network host caligari/privoxy:latest
成功运行后还不能实现socks5转http,因为原作者打包的config文件没有开启此功能。我们需要把他的config文件修改下。
先备份下他的原始配置

代码: 全选

docker exec -it 5c3727325e0c mv /etc/privoxy/config /etc/privoxy/config_bak
再把咱们修改好的配置上传到容器

代码: 全选

docker cp config 5c3727325e0c:/etc/privoxy/
config文件只需要修改一个地方,就是下面这条,把之前的注释#删掉,然后后面的服务器地址填上配置trojan时的local_addr 和local_port。重启容器后就生效了。

代码: 全选

    forward-socks5t   /               127.0.0.1:1080 .
此时大家可以用命令测试下http-proxy是否已经能使用了,命令如下:

代码: 全选

ter_curl --proxy 127.0.0.1:8118 cip.cc 
如果这是显示的是你搭建vpn的公网地址,那么证明你的操作生效了。
2.png
2.png (7.2 KiB) 查看 2359 次
接下来就是考虑如何让jellyfin通过http代理来访问互联网了。
3、巧用python脚本实现jellyfin代理上网
这里我尝试过修改系统代理,但是因为系统代理只能设置哪些流量不走VPN,但是这样就需要添加无数的ip,显然是不现实的。所以放弃了这个想法。这个就是举例大家看下就行。no_proxy里写的就是不走代理的地址。
3.png
3.png (3.46 KiB) 查看 2359 次
在查了很多资料走投无路之时,想起了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后台运行。

代码: 全选

nohup python jellyfin_proxy.py  & 
想测试效果大家可以手动对影片识别一下对比看看搜刮的速度如何。如果不想使用代理可以后台kill掉python进程,通过web页面启动jellyfin。
以上就是全部内容,希望对大家有帮助。
王先生
帖子: 27
注册时间: 2019年 12月 4日 星期三 5:30 pm
China

Re: 铁威马NAS自带jellyfin通过代理实现科学搜刮

帖子 王先生 »

分享的很详细,准备按照你的方法试下,不过我的水平有限,不知道能不能成 :lol:
回复

回到 “杂谈灌水区”