安装
安装有很多种方法,我选择使用安装包,相对简单。因为我的系统是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 访问设置服务器。
问题一,无法选择媒体库目录
因为之前挂载硬盘的目录,对应了samba服务,默认文件夹的权限是766,需要给目录(不给文件)加上x权限,当然偷懒可以用 chmod -R 777
sudo find /mnt -type d -exec chmod a+x {} \;
问题二,外网访问
因为没有公网 ip,端口转发是不行的了。
先想到的是frp内网穿透,有一个p2p模式,实验后效果不好。如果不开p2p,访问需要走vps,受带宽限制,很卡。
因为emby是支持ipv6的,而国内几乎大多数宽带都已经支持ipv6。
ifconfig 查看树莓派ipv6地址,
eth0下的,类似这种:
2408:1234:1234:1234:1234:1234:abcd:a1b1
在浏览器输入
[2408:1234:1234:1234:1234:1234:abcd: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
问题三,ipv6地址不稳定的问题
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
大部分内容来自网络,本人仅编辑整理。