当前位置:   article > 正文

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

emby ipv6

安装

安装有很多种方法,我选择使用安装包,相对简单。因为我的系统是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
  • 1
  • 2

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

问题一,无法选择媒体库目录

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

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

问题二,外网访问

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

2408:1234:1234:1234:1234:1234:abcd:a1b1
  • 1

在浏览器输入

[2408:1234:1234:1234:1234:1234:abcd:a1b1]:8096
  • 1

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

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

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

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

问题三,ipv6地址不稳定的问题

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

python3 -m pip install tencentcloud-sdk-python
  • 1

因为不需要批量操作,可以先手动添加一条记录,获取记录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)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/597065
推荐阅读
  

闽ICP备14008679号