blog/nas/install/readme.md

10 KiB
Raw Blame History

Linux系统部署nas服务

最近因为频繁停电用了半年的黑裙变成只读了但是扫描之后硬盘并没有问题。本人对群晖也不熟悉网上搜了一圈也没处理好一气之下备份好数据格式化之后装了个truenas。可是好景不长truenas又因为我配置太差开机10分钟就OOM了忍无可忍要自由还是原生Linux直接装了rockylinux9.4所有服务全部手动配置现在已经稳定工作3天。

配置:

CPU: AMD R5 5600G

主板华硕TUFB550 WIFI 2

内存光威16GB x2

硬盘西数紫盘6TBx4 + 西数紫盘4TBx4

目前已安装并运行的服务nfs filebrowserqBittorrentopenWRT(kvm)jellyfin

安装教程

安装Rockylinux9((虚拟机截图。原服务器配置过程未截图)

镜像下载地址:https://mirrors.ustc.edu.cn/rocky/9/isos/x86_64/Rocky-9-latest-x86_64-minimal.iso 也可以下载完整的dvd都一样如果是本地安装写入U盘后需要把iso也考进U盘不然用网络装。现在网络这么发达了我基本上都是用网络装。

先来一张hype-v虚拟机(第二代)截图为什么停在这个界面呢因为要展示一下需要关闭Security Boot才好安装

进入grub boot界面。选择第一项进入安装界面也可以第二项会检查安装媒体我这里就不检查了。

注意如果不是虚拟机使用U盘启动物理机的话要按e'修改第一项。把“LABEL=ROCKY-9-4-x86_64-dvd 改掉。如下图。不同机器和不同U盘写入工具有所区别也有可能是/dev/sda4, 根据当前已经安装硬盘数,也可能是 /dev/sdi1或/dev/sdi4

进入安装语言选择

不要问选English。纯Linux选个中文我看着就难受。Continue 进入安装配置

配置安装源,从网络安装 这里使用中国科技大学的源 https://mirrors.ustc.edu.cn/rocky/9/BaseOS/x86_64/os/ 配好点Done

选择安装内容物理机建议装个界面因为all in one,没事还能拿来写写代码当然安装界面会耗电多一些。如果不需要界面建议minimal 。选完点Done

配置磁盘这里我custom。物理机大磁盘强烈建议custom。点done进入自定义配置界面

我先偷懒点个自动分区 如果你不知道还有多少可用空间在分区大小哪里写个超大值点Update 就会用光所有剩余空间。改完点Done。如果没有swap或者点一次没效果可能要连点两次Done 点Accept Changes

关闭KDump

创建用户

配置机器名和网络

等待安装完成

一切配置完成就可以点Begin Installation了 等待安装完成拔掉U盘(虚拟机弹出ISO按Reboot

系统配置

输入账号密码进入系统。打开terminal

使用 sudo visudo 命令修改sudo无需密码。:set nu可以显示行号:107可以直接定位到这一行。i进入编辑模式。注释107行取消注释110行。CTRL+C退出编辑模式。:wq 退出并保存。

使用国内源(这里用中科大的)

sudo sed -e 's|^mirrorlist=|#mirrorlist=|g'  -e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.ustc.edu.cn/rocky|g'  -i.bak  /etc/yum.repos.d/rocky-extras.repo  /etc/yum.repos.d/rocky.repo

系统安装配置完成。接下来操作都是命令行操作不再附截图。可以使用Windows terminal远程操作也可以在本机的terminal上操作。

更新系统

sudo dnf makecache && sudo dnf update 

关闭防火墙。防火墙配置比较复杂,这里不做介绍

sudo systemctl disable --now firewalld

修改selinux

sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config

sudo setenforce 0

查看ip方便后面ssh

ip addr

安装常用软件

sudo dnf install vim unzip tar ungzip bzip2

磁盘分区与格式化

分区使用命令行分区工具parted

parted需要管理权限。

sudo parted /dev/sda #选择第一个磁盘直接输入sudo parted 默认选择/dev/sda

parted命令说明

print all #显示当前系统所有磁盘

select /dev/sdb #选择磁盘/dev/sdb 之后的所有操作均是针对于/dev/sdb直至下一个select

mktable gpt # 创建gpt分区表。如果已经有分区的磁盘会提示输入yes即可覆盖

mkpart primary 0% 100% #创建一个主分区,并且使用全部容量 0%开始100%结束。如果要分多个区可以自行修改。

q #quit 退出

mkfs 分区格式化

mkfs需要管理员权限

sudo mkfs.ext4 /dev/sda1 #将/dev/sda第一个分区格式化为ext4格式

sudo mkfs.ext4 -T /dev/sda1 #将/dev/sda第一个分区格式化为ext4格式,大硬盘用这个命令快

sudo mkfs.xfs /dev/sda1 #将/dev/sda第一个分区格式化为xfs格式。

sudo mkfs.ntfs /dev/sda1 #将/dev/sda第一个分区格式化为ntfs格式。此格式需要安装epel软件库和ntfsprogs, ntfs-3g软件包

我一般喜欢用xfs。

安装docker

sudo yum remove docker  docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine podman runc

sudo yum install -y yum-utils

sudo yum-config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo

sudo sed -i 's|download.docker.com|mirrors.ustc.edu.cn/docker-ce|g' /etc/yum.repo.d/docker-ce.repo

sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

启动docker并配置docker开机自启动

sudo systemctl enable --now docker

lvm分区

进入root账号

sudo -i

创建pv,删除使用pvremove

pvcreate /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1

查看创建的pv

```bash
pvs #pvdisplay

创建vg 删除使用vgremove

vgcreate vg_data /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1

查看创建的vg

vgs #vgdisplay

创建 lv 删除使用 lvremove

lvcreate -l 100%FREE -n lv_data vg_data

创建RAID10 lv。这里是软RAID有条件可以硬raid。

lvcreate --type raid10 --raidintegrity y -L 7.2T -n lv_data vg_raid

查看创建的lv

lvs #lvdisplay

格式化lvm磁盘。raid10盘格式化时间比较长

mkfs.xfs /dev/mapper/vg_data-lv_data

mkfs.xfs /dev/mapper/vg_raid-lv_data

挂载lvm磁盘

mkdir /data /private

echo '/dev/mapper/vg_data-lv_data /data xfs defaults 1 2' >> /etc/fstab

echo '/dev/mapper/vg_raid-lv_data /private xfs defaults 1 2' >> /etc/fstab

mount -a

exit

chown -R $(whoami) /data

chown -R $(whoami) /private

注意最后两行修改所有者不改的话docker挂载进去可能没权限读写

查看磁盘信息

df -lh

安装配置nfs

安装

sudo dnf install nfs-utils rpcbind

设置为开机自启动

sudo systemctl enable --now ntfs-server rpcbind

配置共享目录

vim /etc/exports #下面是内容这里视频使用ro权限

/data/video 10.0.0.0/24(ro,insecure,sync,no_root_squash,no_subtree_check)

应用

sudo exportfs -a

创建网桥

不需要虚拟机不需要此步骤

查看当前网络连接信息

nmcli con show

创建网桥

nmcli con add type bridge ifname br0

绑定网桥到网卡

nmcli con add type bridge-slave ifname eno1 master br0

启动网桥

nmcli con up br0

配置 ip地址

sudo nmcli c edit br0

以下命令在nmcli命令行下

print ipv4
set ipv4.addresses 10.0.0.128/24

set ipv4.gateway 10.0.0.254

set ipv4.dns 10.0.0.254 223.5.5.5

save

q

重启网卡/重启电脑

sudo nmcli c reload

sudo nmcli c down br0 && sudo nmcli c up br0

安装虚拟机

使用难用的virt-manager界面操作。

查看一下库里有哪些软件组

sudo dnf grouplist

安装相关软件

sudo dnf groupinstall 'Virtualization Host'

sudo dnf install virt-manager

注意: 也可以只安装virt全命令行操作。

转换openwrt的img文件为qcow2格式

qemu-img convert -o qcow2 openwrt.img openwrt.qcow2

docker部署filebrowser/qbittorrent/jellyfin

jellyfin

sudo docker run -d 

 -p 8096:8096 

 --name jellyfin 

 --user 1000:1000 

 --volume /opt/jellyfin/config:/config 

 --volume /opt/jellyfin/cache:/cache 

 --mount type=bind,source=/data/video,target=/media 

 --restart=unless-stopped 

 jellyfin/jellyfin

filebrowser

sudo docker run 

    --name filebrowser -m 4g --restart unless-stopped -d 

    -v /data:/srv/data 

    -v /private:/srv/private 

    -v /opt/filebrowser/filebrowser.db:/database/filebrowser.db 

    -v /opt/filebrowser/settings.json:/config/settings.json 

    -e PUID=$(id -u) 

    -e PGID=$(id -g) 

    -p 8080:80 

    filebrowser/filebrowser:s6

qbittorrent

sudo docker run -d 

  --name=qbittorrent 

  -e PUID=1000 

  -e PGID=1000 

  -e TZ=Asia/Shanghai 

  -e WEBUI_PORT=8081 

  -e TORRENTING_PORT=6881 

  -p 8081:8081 

  -p 6881:6881 

  -p 6881:6881/udp 

  -v /opt/qbittorrent/config:/config 

  -v /data/downloads:/downloads 

  --restart unless-stopped 

lscr.io/linuxserver/qbittorrent:latest

配置nginx

安装nginx

sudo dnf install nginx

配置filebrowser能用就行不做优化。替换自己的域名

cat EOF< |sudo tee -a /etc/nginx/conf.d/filebrowser.conf

server {

        server_name files.nas.com;

        location / {

                proxy_pass http://localhost:8080;

        }

        listen 80;

}

EOF

配置qbittorrent能用就行不做优化。替换自己的域名

cat EOF< |sudo tee -a /etc/nginx/conf.d/qbittorrent.conf

server {

        server_name bt.nas.com;

        location / {

                proxy_pass http://localhost:8081;

        }

        listen 80;

}

EOF

配置jellyfin能用就行不做优化。替换自己的域名

 cat EOF< |sudo tee -a /etc/nginx/conf.d/jellyfin.conf

server {

        server_name video.nas.com;

        location / {

                proxy_pass http://localhost:8096;

        }

        listen 80;

}

EOF

还有K8S已经装好了暂时就不写了。准备用coredns暂时也还没有配置。原生Linux服务全部自定义没有继承nas系统的各种限制就一个字没事还能拿来玩个steam岂不美哉