N

N1盒子+移动硬盘部署armbian私人服务器

HB 网络 2023-01-09

一、开篇
斐讯N1盒子作为一款矿渣玩法众多,比较常见的玩法:给它刷入OpenWrt系统做旁路由,提供特殊服务;刷入电视盒子系统,搭配一个遥控器做电视盒子;刷入游戏系统,当作一台游戏机;跑PCDN等等。
今天的教程是准备把Armbian系统刷入N1盒子,让它来扮演一个家庭服务器的角色。服务器需要一个运行稳定的系统,而armbian系统可以看做是运行在Arm架构机器上的Debian系统,最大的特点是其作为底层系统运行起来还是比较稳定的。
在armbian系统上,可以根据自己的需求部署相应的服务——简单举例——我们可以部署:私人笔记服务、轻NAS服务、相册服务、去广告服务、旁路由(特殊服务)、挂载各大网盘、家庭智能控制服务……
将N1盒子刷成电视盒子系统并开启优先从USB启动的步骤在这里就省略了,网上的教程比较多,这里直接进入刷写armbian系统的步骤。
二、准备工具
8G空间以上的U盘,用来写入并启动armbian系统
软件:Rufus或者BalenaEtcher
固件:armbian固件(以bullseye版本为例)
三、写入U盘,从U盘启动armbian系统
用写盘软件把armbian固件写入U盘(提前备份U盘资料)
写盘完成后,将U盘插入N1盒子USB口。
提醒一下,罗嗦几句:
比较常见的情况是,在我们给N1盒子激活从U盘启动时,此时N1盒子是电视盒子系统——AndroidTV系统,如果在电视盒子系统开机状态下已经把写完armbian系统U盘插入N1盒子,AndroidTV系统会对U盘目录、文件予以读取甚至权限更改。简单说,会影响armbian系统设置。
如果第一次激活N1盒子从U盘启动,为了避免以上情况。
我能想到的是三种途径:
(1)如果在插着U盘的情况下激活从U盘启动,等着从U盘成功启动armbian系统后,为了万无一失,再断电重刷一遍U盘,重新写入一遍armbian系统。
(2) 如果在插着U盘的情况下激活从U盘启动,准备两个刷好armbian系统的U盘,第一个启动成功后,断电换第二个U盘重启。
(3) 在激活N1盒子U盘启动时,不要插入U盘,等激活N1盒子命令行界面提示激活成功后,等1-2秒,马上插入刷好系统的U盘。
四、将系统写入EMMC&前期设置
N1盒子连接网线,开机。使用MobaXterm 连接登录armbian系统

  1. 设置root密码、普通用户密码、语言时区设置等等
  2. 写入EMMC
    (1)输入命令进入写盘程序:armbian-software
    (2)型号选择 N1
    (3)等待刷写完成,输入poweroff关机
    (4)拔掉U盘,插入移动硬盘,重新插电重启N1,用MobaXterm重新连接登录armbian

3 更换软件源
(1)输入 nano /etc/apt/sources.list 编辑,用#将旧源注释掉或者干脆用新源覆盖掉(以清华大学源为例)

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security/ bullseye-security main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security/ bullseye-security main contrib non-free

按Ctrl+X保存退出
(2)新源测试,退出后可用apt update测试是否可以更新成功,如成功后可再执行apt upgrade -y升级

4 挂载移动硬盘
(1)格式化移动硬盘
注:armbian系统可直接挂载ntfs格式的硬盘,想挂载现有的移动硬盘可以不执行以下格式化的步骤

输入lsblk查看硬盘设备,比如设备识别为dev/sda

#格式化移动硬盘
mkfs.ext4 /dev/sda
#创建挂载点 /mnt/usb1
mkdir /mnt/usb1
#把移动硬盘挂载至挂载点/mnt/usb1
mount /dev/sda /mnt/usb1

完成后可输入lsblk检验一下
(2)设置开机启动自动挂载移动硬盘

sed -i '/exit 0/i\mount -v /dev/sda /mnt/usb1' /etc/rc.local

5 安装、设置samba(为了方便在PC管理移动硬盘内容)

#安装samba
apt install samba
#编辑samba配置文件
nano /etc/samba/smb.conf
#一拉到底,在最底部添加以下内容
[usb1] #在共享中显示的名称
comment = myshare
path = /mnt/usb1 #填入共享的路径
writable = yes    
create mask= 0755
directory mask=0755

设置完,Ctrl+X退出确认
创建samba的用户和密码:

touch /etc/samba/smbpasswd
smbpasswd -a root

重启服务

service smbd restart
五、安装docker、迁移docker根目录至外挂d额硬盘
N1盒子自身带的 8G ROM太小了,可能部署几个docker后就空间告紧了,所以把docker根目录迁移到外挂的硬盘。
1 安装docker
通过输入armbian-software命令安装docker,然后输入101,自动化安装。选择镜像源时,可先选择默认的官方源地址,无关紧要,因为后面也有改为国内源的步骤

2 迁移docker至外挂的硬盘
(1)停止docker

service docker stop

(2)迁移docker数据
在外挂硬盘创建目录

mkdir /mnt/usb1/docker -p

(3)拷贝相关数据

cp /var/lib/docker/* /mnt/usb1/docker -rpvb
mv /var/lib/docker/ /var/lib/docker.bak

(4)创建软链接

ln -s /mnt/usb1/docker /var/lib

(5)启动

systemctl daemon-reload
service docker restart

(6)验证

docker info

在列出的信息界面中的后面看到以下有以下信息,即迁移成功

Docker Root Dir: /mnt/usb1/docker

3 更换docker源
创建或修改nano /etc/docker/daemon.json文件

nano /etc/docker/daemon.json

替换为以下内容

{

    "registry-mirrors" : [

    "https://registry.docker-cn.com",

    "http://hub-mirror.c.163.com",

    "https://docker.mirrors.ustc.edu.cn",

    "https://cr.console.aliyun.com",

    "https://mirror.ccs.tencentyun.com"

  ]

}

重启docker服务使配置生效:

systemctl daemon-reload
systemctl restart docker.service
4. 安装汉化版Portainer,方便管理docker项目
docker run -d \
--name=portainer-zh \
-p 9000:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
--restart=always \
6053537/portainer-ce

六、举例:部署部分docker服务
alist--网盘神器(用armbian-software选择对应编号自动化安装)
kodbox--可道云(用armbian-software选择对应编号自动化安
qinglong--青龙面板(用armbian-software选择对应编号自动化安
wiznote--为知笔记(私人笔记服务器,需手动添加容器,但占用RAM比较大,不太推荐在N1盒子部署)
七、特殊服务&LXC OpenWrt
1 ShellCr**h(此处省略)

export url='https://fastly.jsdelivr.net/gh/juewuy/ShellCrash@master' && wget -q --no-check-certificate -O /tmp/install.sh $url/install.sh  && bash /tmp/install.sh && source /etc/profile &> /dev/null

2 lxc openwrt
修改宿主机armbian系统网络配置

nano /etc/network/interfaces

替换为以下内容

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
        dns-nameservers 223.5.5.5
auto vmbr0
iface vmbr0 inet static
        address 10.10.10.66/24  #根据自己的网络设定自行修改
        gateway 10.10.10.1      #根据自己的网络设定自行修改
        bridge-ports eth0
        bridge-stp off
        bridge-fd 0

停用NetworkManager

systemctl stop NetworkManager
systemctl disable NetworkManager

安装lxc

apt install lxc

3 上传LXC openwrt模板,修改LXC openwrt环境配置文件
在 /var/lib/lxc 路径下创建名为“openwrt”的目录(openwrt该名字可以自定义,后期将是lxc 容器的名字)

mkdir /var/lib/lxc/openwrt

接着在openwrt目录下创建名为rootfs的目录

mkdir /var/lib/lxc/openwrt/rootfs

4 通过MobaXterm将下载好的lxc openwrt模板上传到 rootfs 目录下
解压模板

cd /var/lib/lxc/openwrt/rootfs
tar -zxvf rootfs.tar.gz

在openwrt目录下创建并修改config文件

nano /var/lib/lxc/openwrt/config

添加以下内容

# Distribution configuration
lxc.include = /usr/share/lxc/config/common.conf
lxc.arch = aarch64
# Container specific configuration
lxc.apparmor.profile = generated
lxc.apparmor.allow_nesting = 1
lxc.rootfs.path = dir:/var/lib/lxc/openwrt/rootfs
lxc.uts.name = openwrt
# Network configuration eth0
lxc.net.0.type = veth
lxc.net.0.link = vmbr0
lxc.net.0.flags = up
# PPPoe 根据自身需求决定是否添加该项
lxc.cgroup2.devices.allow = c 108:0 rwm
lxc.mount.entry = /dev/ppp dev/ppp none bind,create=file
# TUN 根据自身需求决定是否添加该项
lxc.cgroup2.devices.allow = c 10:200 rwm
lxc.mount.entry = /dev/net/tun dev/net/tun none bind,create=file

Ctrl+X保存退出

5 启动并完善LXC容器中的openwrt设置
启动lxc-openwrt:lxc-start openwrt
进入openwrt命令界面:lxc-attach openwrt
修改openwrt lan口ip:nano /etc/config/network
重启openwrt网络服务:/etc/init.d/network restart
修改好ip后,即可登录OpenWrt后台
6 修改umount配置,防止关闭lxc openwrt后再次手动启动时报错

nano /etc/rc.d/K90umount #该命令在LXC OpenWrt容器的命令行输入,非宿主机命令行

在编辑界面中去掉里面的 -r,保存退出

退出LXC openwrt容器的命令行界面:exit
7 为lxc openwrt配置自动启动
编辑配置文件:nano /var/lib/lxc/openwrt/config
在配置文件中添加:lxc.start.auto = 1,保存退出
八、安装PVE
说在前面

安装PVE的优缺点:最大的的优点是有一个交互界面,方便创建、管理LXC项目;缺点是PVE自身占用的RAM空间有600MB-700MB,N1盒子安装完armbian系统后可用RAM为1.76G,如果再运行几个docker、LXC容器,RAM空间会吃紧。
个人观点:总体上不太建议在N1盒子上安装PVE。
当然也可根据自己实际情况进行斟酌
安装方法比较简单,通过系统内置的armbian-soft命令安装,选择 308
安装过程中一般有两项需要确认:1.主机名称(保持默认即可);2.弹出一个窗口后,选第一个。

然后是比较漫长的安装过程。
默认登陆账户和密码即armbian系统的root账户及密码。

本文相关资源下载:
https://www.123pan.com/s/isFajv-AOaK.html 提取码:tbdr

在此感谢大佬们的各类教程分享:
1.https://molezz.net/n1-debian-ubuntu-lxc-openwrt
2.https://github.com/cooip-jm/About-openwrt/wiki
3.https://www.right.com.cn/forum/thread-8253409-1-1.html
4.https://blog.8086k.cn/archives/88/

PREV
RAX3000M如何从外观上辨别算力版和普通版?
NEXT
Docker部署安装FileBrowser网页文件管理器