MENU

折腾|N1 搭建家庭影库/游戏机/NAS/智能家居中枢(持续更新)

2024 年 04 月 14 日 • 阅读: 2816 • 技法笔记

前几年我爸问我能不能让他们房间的老电视连上网看电视剧,我灵机一动给他买了台斐讯 N1 做电视盒子。从二手市场淘了一台,收到时已经刷了 YYF 的电视系统还配备了 T1 的遥控器,我再从网上买了个 HDMI 转 AV 转换器,甚至也不用我折腾了,索性直接拿去给我爸用了。

后来由于原来的老电视实在太老又或者是转换器的问题,电视的显示信号总是不太稳定,DIY 系统也远不如客厅的智慧屏系统用的方便,在尝鲜了一段时间后,我爸就再也没用它看过电视,我一直也没有太大兴趣再去折腾。一直到最近搬家,我打算把这台搁置很久的 N1 好好利用起来,开整!

目录

  1. Android + CoreElec 双系统刷机
  2. 安装 Docker + Portainer (图形界面)
  3. NAS:CloudDrive2 Alist
  4. 私人影库:Jellyfin Xiaoya
  5. 游戏机系统:EmuElec
  6. 智能家居:HomeAssistant
  7. 内网穿透

0. 准备工具

  • N1 * 1
  • U 盘 * 1
  • USB 双公头数据线 * 1
  • HDMI 视频线 * 1
  • Windows 电脑 * 1

1. Android + CoreElec 双系统

首先是系统问题,使用的 joyo1 大佬的双系统固件。CoreElec 为 Kodi 深度优化过的基于 JeOS(Just Enough OS)的精简 Linux 系统,适用于大多数搭载 Amlogic 处理器的设备,之后的软件大部分都将会挂在 CoreElec 上,而安卓则主要作为 U 盘启动的中转。

1.1 开始刷机

如果是未刷过机的原版固件则需要先降级,具体步骤可以自行搜索,我这里从 YYF 系统刷其它系统直接开始线刷就好了。

  1. 下载 USB_Burning_Tool 刷机工具和系统固件,安装过程中会提示安装驱动
  2. 打开 USB_Burning_Tool,导入 img 格式的系统镜像,然后只勾选擦除 flash,点击开始,此时进入就绪状态
  3. 用 USB 数据线连接 N1 和电脑,断开 N1 电源,再马上插回去,在开机的瞬间会自动进入刷机模式,软件会自动开始进行烧录,耐心等待就好了

开始刷机

等待烧录完成后,默认进入安卓系统,可以插一个 USB 键盘进行控制,重启到 CoreElec 系统。

1.2 打开 SSH

这个是核心,大部分东西都要通过 SSH 安装。

打开 CoreElec 设置 -> CoreElec -> 服务 -> 启用 SSH

2. 安装 Docker + Portainer(可选)

我这里 CoreElec 的官方库连接不上,所以选择了下载插件包到电脑,再通过 Windows/SMB 共享的方式,在 CoreElec 中添加局域网共享的目录,然后在安装插件的地方选择“从 ZIP 文件安装”,选择共享目录中的插件,正常安装即可。

Docker 装好后就可以开始安装 Docker 的 Web 图形管理界面 Portainer,直接连接 SSH 然后使用命令:

docker run -d \
      --name Portainer \
      --restart=always \
      -p 9000:9000/tcp \
      -v /storage/portainer/data:/data \
      -v /var/run/docker.sock:/var/run/docker.sock \
      portainer/portainer-ce:latest

等待安装完成后打开浏览器输入 IP:9000 即可打开 Portainer,设置好密码后就可以开始可视化管理 Docker

安装 Portainer

CoreElec Docker 插件包下载:https://relkai.coreelec.org/?dir=addons/Amlogic-ng/21.0/arm/repository.linuxserver.docker

3. NAS

CloudDrive2 的部分内容已经弃用,现在用 Alist 代替

由于 N1 本身的容量只有 8GB,想要本地 Nas 的话只有扩容或者外置硬盘十分不美观,所以这里采用的是云盘做 Nas。这里我用的是 CloudDrive2 + 阿里云盘 的方案,主要是给私人影库做云存储。

3.1 安装 fuse3

在正式安装 CloudDrive2 之前,还需要安装 fuse3 这个依赖。

先安装包管理器entware,CoreElec 直接内置了安装脚本:

installentware

接着开始安装fuse3

opkg install fuse3-utils

等待安装完成就好了。

3.2 CloudDrive2

这里安装 CloudDrive2 的 Docker 版本,启动命令如下:

docker run -d \
      --name clouddrive \
      --restart unless-stopped \
      --env CLOUDDRIVE_HOME=/Config \
      -v /storage/jellyfin/media:/CloudNAS:shared \
      -v /storage/cloudrive:/Config \
      --network host \
      --pid host \
     --privileged \
     --device /dev/fuse:/dev/fuse \
     cloudnas/clouddrive2

/storage/jellyfin/media/storage/cloudrive 是映射目录,分别是作为云盘挂载目录和 CloudDrive2 配置存放目录,可以自行更改。

默认管理面板的端口是19789,打开后注册账号进入面板,点击左上角云图标选择“阿里云盘 Open”扫码登陆。

之后就是把阿里云盘挂载到本地,这是选择使用 CloudDrive2 的主要原因,它支持把网盘内容直接挂载到本地,同样也是为了后面的私人影库做准备。

选择你的阿里云盘,点击上面一排的挂载到本地,名称这里可以自己随意更换,挂载点选择/CloudNAS(刚在启动时映射的目录)。

创建挂载

此时就可以进服务器打开挂载的目录看一下是否挂载成功,如果里面有你阿里云盘的目录那就是成功了。

3.1 安装 Alist

这部分待完善...

4. 私人影库

Jellyfin 的部分内容已经弃用,现在用 Alist + 小雅代替

4.1 安装 Jellyfin

私人影库用的是 Jellyfin,Jellyfin 是一个开源的媒体系统,目前客户端包括 Web、Windows、MacOS、Android TV、Apple TV、Android、IOS 等。这里也可以装个小雅作为内容扩展。

还是用 Docker 安装:

docker run -d \
      --name jellyfin \
      --restart always \
      -p 8096:8096 \
      -v /storage/jellyfin/config:/config \
      -v /storage/jellyfin/media:/media \
      jellyfin/jellyfin

默认端口是8096,注意这里 /storage/jellyfin/media 也是上面 CloudDrive2 的映射目录,这样就可以在 Jellyfin 中访问到 CloudDrive2 中挂载的阿里云盘文件了。

4.2 添加媒体库

打开 Jellyfin,根据提示安装然后登陆管理员账号,进入控制台添加媒体库,文件夹选择你阿里云盘存放电影的目录,剩下的根据需要设置即可。

添加媒体库

4.1 安装小雅(Xiaoya)

小雅同样是通过 Docker 进行安装,下面是官方给的一键安装脚本:

# bridge 模式
bash -c "$(curl http://docker.xiaoya.pro/update_new.sh)"
# host 模式
bash -c "$(curl http://docker.xiaoya.pro/update_new.sh)" -s host

但是如果你直接这么安装会出现报错,提示/etc目录么没有写权限,这也是 CoreElec 系统设计的缘故,所以需要把配置文件转移到别的地方。

手动将官方安装脚本中的/etc/全部替换成/storage/,文末附上替换好的安装脚本,把替换好的文件上传到 N1,执行脚本:

# bridge 模式
bash -c /更新脚本.sh
# host 模式
bash -c /更新脚本.sh -s host

5. 游戏机系统 EmuElec

EmuElec.jpg

这里因为写教程的时候和操作间隔时间比较久也没有截图,所以只简单讲一下。

需要准备一个至少 32G 的 U 盘,然后下载人中日月大佬的整合包(文末附地址),用 balenaEtcher 把镜像烧录到 U 盘里。

这里可能会遇到的一个问题就是,32G 的整合包内容可能会超过 32G U 盘的容量,出现这个问题的话需要先对镜像进行缩容,具体方法可以看这篇文章:《80后游戏,N1刷EmuELEC变身游戏盒子,内含救砖和缩容方法适合新手

U盘烧录成功后 N1 进入安卓系统,插上U盘,选择重启 LibreELEC 后会自动进入U盘的 EmuElec 系统。

6. 智能家居 HomeAssistant

6.1 安装 Supervisor

首先配置跳过健康检查

docker run -d \
      --name hassio_supervisor \
      --privileged \
      -v /var/run/docker.sock:/var/run/docker.sock \
      -v /var/run/dbus:/var/run/dbus \
      -v /storage/hassio:/data \
      -e SUPERVISOR_SHARE="/storage/hassio" \
      -e SUPERVISOR_NAME=hassio_supervisor \
      -e HOMEASSISTANT_REPOSITORY="homeassistant/qemuarm-64-homeassistant" \
      --restart unless-stopped \
      homeassistant/aarch64-hassio-supervisor

6.2 安装 HomeAssistant

docker run -d \
      --name homeassistant \
      --restart=unless-stopped \
      -v /etc/localtime:/etc/localtime:ro \
      -v /storage/hass:/config \
      --network=host \
      homeassistant/home-assistant:stable

6.3 安装 Node-red(可选)

docker run -it \
      -p 1880:1880 \
      --restart=unless-stopped \
      -v /storage/hass/node-red:/data \
      --name mynodered \
      -e TZ=Asia/Shanghai \
      -u root \
nodered/node-red

安装好后打开 IP + 8123 打开 HomeAssistant。

后面关于如何将米家或者其他智能设备接入HomeAssistant 的部分内容太多了,而且网上现成的教程跟着来基本不会出现什么问题,这里就只记录安装命令。

7. 内网穿透

  此方案需要一台有公网 IP 的服务器作为中转。

7.1 服务端

7.1.1 配置

首先配置服务端,前往Releases · fatedier/frp (github.com)页面下载服务器对应架构的版本,上传到服务器后解压,会发现里面主要就四个文件,分别是frpc开头和frps开头的文件,frps的两个文件就是服务端需要的文件,打开frps.toml,可以设置 FRP 服务的连接端口,默认是 7000。

bindPort = 7000

7.1.2 启动

./frpc -c frps.toml

可以看到frps started successfully表示启动成功。

7.2 客户端

客户端配置同理,先去下载客户端对应的 FRP 版本,然后保留frps开头的文件即可。

7.2.1 配置

打开客户端配置文件frpc.toml

serverAddr = "127.0.0.1"
serverPort = 7000

[[proxies]]
name = "test-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000

简单说一下这几个配置项:

  • serverAddr服务器IP
  • serverPort服务器连接端口(即 frps.tomlbindPort的值)
  • localPort本地需要内网穿透的服务端口
  • remotePort穿透后供外网访问的端口

7.2.2 启动

./frpc -c frpc.toml

在客户端和服务端上均可以看到success字样,FRP 连接成功,可以开始愉快的玩耍了。

服务端用到的bindPortremotePort这两个端口需要在防火墙和服务器安全组中放行才可以正常连接。

7.3 设置后台运行和开机启动

7.3.1 服务端

我这里系统是 Debian 11,如果不同系统请参照自己系统的开机启动设置方法。

创建一个frps.service的服务文件:

vim /etc/systemd/system/frps.service

添加以下内容,ExecStart配置项修改为自己的 FRP 位置:

[Unit]  
Description=FRP Server Daemon  
After=network.target  

[Service]  
ExecStart=你的 FRP 路径/frps -c 你的 FRP 路径/frps.toml
Restart=always  
User=root 
Group=root  

[Install]  
WantedBy=multi-user.target

重新加载systemd配置,设为开机启动并运行 frps 服务:

systemctl daemon-reload  
systemctl enable frps.service
systemctl start frps.service

7.3.2 客户端

CoreElec中 etc目录是只读的,所以用上面的方法行不通。

新建启动脚本:

vi /storage/.config/autostart.sh

加入如下内容,中间路径换成自己的 frp 目录:

#!/bin/bash
(
/storage/frp/frpc -c /storage/frp/frpc.toml
)&

重启一下或者直接启动脚本,穿透成功!


参考文档

【joyo1】N1内置双系统最新 V3.9.9.6版发布

CoreELEC通过entware安装tr、qb和de小白教程

N1安装Jellyfin媒体服务器-斐讯无线路由器以及其它斐迅网络设备

树莓派折腾记录-3:完美解决Jellyfin中文显示问题

80后游戏,N1刷EmuELEC变身游戏盒子,内含救砖和缩容方法适合新手

如何设置xiaoya的docker

资源下载

USB Burning Tool 人间中月2020春节基础包 Xiaoya 安装脚本(下载后把后缀名换成 .sh)

最后编辑于: 2024 年 10 月 15 日
添加新评论

已有 4 条评论
  1. 虽然看不懂,但是这个貌似很牛逼@(小乖)

    1. @小刘同学其实只是把各路大佬写的东西做了一下整合,我只是一个吃水人而已。@(委屈)

  2. 这篇文章写得深入浅出,让我这个小白也看懂了!

  3. 这个多好 不用受外面这些盘的会员制影响