锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

树莓派安装emby,ipv6外网访问,个人家庭影院

时间:2022-09-14 12:30:00 2408连接器

安装

有很多方法可以安装,我选择使用安装包,相对简单。因为我的系统是32位RaspiOS,选择安装下载 armhf.deb,64位的是arm64.deb

 wget https://github.com/MediaBrowser/Emby.Releases/releases/download/4.7.5.0/emby-server-deb_4.7.5.0_armhf.deb  dpkg -i emby-server-deb_4.7.5.0_armhf.deb 

安装完成后,可通过http://yourdiveceip:8096 访问设置服务器。

问题1:无法选择媒体库目录

因为之前挂载硬盘的目录对应samba服务,默认文件夹的权限是766,需要在目录(不给文件)上加x权限。当然,懒惰可以用 chmod -R 777

sudo find /mnt -type d -exec chmod a x {} \; 

问题2,外网访问

因为没有公网 ip,端口转发不好。
先想到的是frp有一穿透,有一个p2p实验结实验后效果不好。如果不打开p2p,访问需要走vps,受带宽限制,很卡。
因为emby是支持ipv6.中国几乎大多数宽带都得到了支持ipv6。
ifconfig 查看
树莓派ipv6地址,
eth0下,类似这样:

1234:1234:1234:1234:1234:abcd:a1b1 

输入浏览器

12348:1234:1234:1234:1234:1234:1234:1234:1234:1234:1234:1234:1234:1234:1234:1234:1234:1234:1234:1234:1234:1234:1234:1234:1234:1234:1234:1244:1244:124:1244:1244:1244:1244:124:124:124:1244:1244:1244:124:124:124:124:124:124:124:124:124:124:124:124:124:12424:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:124:1abcd:a1b1]:8096 

可访问仪表板,证明内网工作正常。

但由于路由器(光猫已桥接)有防火墙,外网无法访问
ssh登录路由器

ip6tables -I FORWARD -p tcp --dport 8096 -j ACCEPT 

您可以通过手机流量测试访问服务器。
路由器重启后 ip6tables 规则被清除
修改/etc/firewall.user
/usr/sbin/ip6tables -I FORWARD -p tcp --dport 8096 -j ACCEPT

问题三,ipv地址不稳定

ipv6的地址会经常变化,所以最好绑定一个域名。
在腾讯云买域名。
腾讯云安装在树莓派上python sdk

python3 -m pip install tencentcloud-sdk-python 

因为不需要批量操作,可以先手动添加记录获取记录ID“RecordId”,后面当ipv6地址变化的时候修改记录。
获取“RecordId,腾讯云可以调用API获得测试工具api
选择获取域名的分析记录,填写域名启动调用。

import json from tencentcloud.common import credential from tencentcloud.common.profile.client_profile import ClientProfile from tencentcloud.common.profile.http_profile import HttpProfile from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException from tencentcloud.dnspod.v20210323 import dnspod_client, models import requests   def getIPv6Address(): #获取公网ipv6参考https://blog.csdn.net/coco56/article/details/106725406/     text = requests.get('https://v6.ident.me').text     return text addr6 = getIPv6Address() try:#获取当前dns解析记录值     cred = credential.Credential("SecretId", "SecretKey")#https://console.cloud.tencent.com/cam/capi 登录并填写密钥     httpProfile = HttpProfile()     httpProfile.endpoint = "dnspod.tencentcloudapi.com"

    clientProfile = ClientProfile()
    clientProfile.httpProfile = httpProfile
    client = dnspod_client.DnspodClient(cred, "", clientProfile)

    req = models.DescribeRecordRequest()
    params = { 
        
        "Domain": "域名",
        "RecordId": #记录ID
    }
    req.from_json_string(json.dumps(params))

    resp = client.DescribeRecord(req)
    print(resp.to_json_string())
    addr6dns = resp.RecordInfo.RecordId #获取记录中的地址

except TencentCloudSDKException as err:
    print(err)
if addr6dns != addr6:#如果获取的公网ipv6,和解析记录值不相等,不严谨,将就用
	try:#更新记录值
	    cred = credential.Credential("SecretId", "SecretKey")#https://console.cloud.tencent.com/cam/capi 登录填入密钥
	    httpProfile = HttpProfile()
	    httpProfile.endpoint = "dnspod.tencentcloudapi.com"
	
	    clientProfile = ClientProfile()
	    clientProfile.httpProfile = httpProfile
	    client = dnspod_client.DnspodClient(cred, "", clientProfile)
	
	    req = models.ModifyRecordRequest()
	    params = { 
        
	        "Domain": "域名",
	        "SubDomain": "子域名",#无此项参数,默认为@
	        "RecordType": "AAAA(解析类型,ipv6填AAAA)",
	        "RecordLine": "默认",
	        "Value": addr6,#树莓派ipv6地址
	        "RecordId": #之前获取的RecordId
	    }
	    req.from_json_string(json.dumps(params))
	
	    resp = client.ModifyRecord(req)
	    print(resp.to_json_string())
	
	except TencentCloudSDKException as err:
	    print(err)

crontab -e 编辑定时任务,检查更新解析记录
手机浏览器可以正常访问,建议使用app

emby server树莓派32位安装包
emby安卓app
大部分内容来自网络,本人仅编辑整理。

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章