Ubuntu + nextcloud配置家庭NAS服务器
Ubuntu + nextcloud配置家庭NAS服务器
家中折腾NAS服务器:
- 硬件:E5双路40核,内存64G DDR4, 存储128G固态硬盘装系统,阵列卡+6TB * 4企业级SAS硬盘组RAID10作为NAS数据存储
- 系统:Ubuntu 22.04 Server
- 软件:nextcloud(可道云客户端不支持多文件夹同步),使用docker配置,volume设置到RAID10阵列盘,即使所有的软件系统崩溃,依旧可以轻松恢复。
只做NAS不用这么高配置,我是打算同时用来做应用服务器
阵列卡设置
插了阵列卡后,开机会先进阵列卡的BIOS,按提示按CTRL+H
进入web配置界面,按提示配置好RAID10,插上系统安装U盘,重启电脑
系统安装配置
这一步简单,直接镜像写入U盘,从U盘启动,配置好系统盘,按提示一步步安装即可。
网络配置
需要固定IP地址:
修改/etc/netplan/***.yml
,假如你的内网是10.10.10.*
network:
ethernets:
enp5s0:
dhcp4: false
addresses: [10.10.10.10/24]
gateway4: 10.10.10.1
nameservers:
addresses: [10.10.10.1,114.114.114.114,8.8.8.8]
optional: true
version: 2
执行netplan apply
命令,会有一个gateway4
弃用警告,可以不管。
执行apt update && apt upgrade -y
更新系统
配置无显卡启动
直接拔了显卡,Ubuntu会启动失败,甚至可能出现重新插上同一张显卡后依旧无法正常启动的现象。
修改/etc/default/grub
来实现无显卡启动
GRUB_CMDLINE_LINUX_DEFAULT="nomodeset"
GRUB_CMDLINE_LINUX=""
接下来的操作可以从家中另外一台电脑通过SSH远程连接服务器配置,只需要允许root用户远程登录:
修改etc/ssh/sshd_config
PermitRootLogin yes
重启ssh服务:service sshd restart
当远程连接失败,需要显示的时候,重新插上显卡,启动系统
挂载RAID10盘
先建立分区,因为容量是惊人的10T,哈哈,所有不能用fdisk
,需要使用parted
创建GPT分区。
详见:Making GPT Partition Table and Creating Partitions Using parted in Linux
完成后格式化:`mkfs.ext4 /dev/disk_name
修改/etc/fstab
挂载RAID10盘到任意位置,我这里挂载到/docker
/dev/disk/by-uuid/disk_uuid /docker ext4 defaults,nofail 0 1
安装docker
- 安装docker:
apt install -y docker.io
- 安装docker-compose:
apt install -y docker compose
配置docker数据路径
默认是在/var/lib/docker
,里面包含docker的数据,最重要是volume是存在下面的,显然不满足作为NAS的需求,谁没事把大量数据往系统盘存:)
直接创建或修改/etc/docker/daemon.json
{
"data-root": "/path/to/raid10/mount/point"
}
重启docker:service docker restart
配置nextcloud
因为nextcloud是用MySQL来存元数据的,所有会依赖MySQL服务,这里用了mariadb
可以参考: nextcloud offical image
创建编辑docker-compose.yml
:
version: '2'
volumes:
app:
db:
services:
db:
image: mariadb:10.5
restart: always
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
volumes:
- db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=mysql_password
- MYSQL_PASSWORD=mysql_password
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
image: nextcloud
restart: always
ports:
- 8070:80
links:
- db
volumes:
- app:/var/www/html
environment:
- MYSQL_PASSWORD=mysql_password
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db
保存后,执行docker-compose up -d
配置host Nginx反向代理
为了使用域名而不是IP访问NAS,这里使用Nginx来做反向代理
server_name nas.your.base_domain;
location / {
proxy_pass http://10.10.10.10:8070/;
}
自定义路由器hosts
电脑可以通过修改hosts文件来映射域名和IP,但手机却不容易办到,开始是想着自己搭个DNS服务器,但发现小米路由器可以自定义hosts,这样连接这台路由器的设备就都能解析自定义的域名了。这么折腾主要是后续计划配置外网访问,域名已经在阿里云申请,搞个外网IPv6一解析,不在家也能访问自己的NAS,但回家后,就希望依旧用域名,但又不是走外网。
成果
这还要什么网盘,哈哈。
后续
这里使用了硬件RAID,阵列卡要是坏了,又买不到相同型号的,就有丢失数据的风险,所以后续打算更改为软件RAID,更灵活,出错了更容易恢复。
更多推荐
所有评论(0)