blog/nas/install/readme.md

502 lines
10 KiB
Markdown
Raw Normal View History

2024-10-24 15:10:29 +08:00
# 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才好安装
![](1.png)
#### 进入grub boot界面。选择第一项进入安装界面也可以第二项会检查安装媒体我这里就不检查了。
![](2.png)
注意如果不是虚拟机使用U盘启动物理机的话要按e'修改第一项。把“LABEL=ROCKY-9-4-x86_64-dvd 改掉。如下图。不同机器和不同U盘写入工具有所区别也有可能是/dev/sda4, 根据当前已经安装硬盘数,也可能是 /dev/sdi1或/dev/sdi4
![](3.png)
#### 进入安装语言选择
![](4.png)
不要问选English。纯Linux选个中文我看着就难受。Continue 进入安装配置
![](5.png)
#### 配置安装源,从网络安装 这里使用中国科技大学的源 https://mirrors.ustc.edu.cn/rocky/9/BaseOS/x86_64/os/ 配好点Done
![](6.png)
#### 选择安装内容物理机建议装个界面因为all in one,没事还能拿来写写代码当然安装界面会耗电多一些。如果不需要界面建议minimal 。选完点Done
![](7.png)
#### 配置磁盘这里我custom。物理机大磁盘强烈建议custom。点done进入自定义配置界面
![](8.png)
我先偷懒点个自动分区
![](9.png)
如果你不知道还有多少可用空间在分区大小哪里写个超大值点Update 就会用光所有剩余空间。改完点Done。如果没有swap或者点一次没效果可能要连点两次Done
![](10.png)
点Accept Changes
#### 关闭KDump
![](12.png)
#### 创建用户
![](13.png)
#### 配置机器名和网络
![](14.png)
#### 等待安装完成
一切配置完成就可以点Begin Installation了
![](11.png)
等待安装完成拔掉U盘(虚拟机弹出ISO按Reboot
## 系统配置
输入账号密码进入系统。打开terminal
使用 sudo visudo 命令修改sudo无需密码。:set nu可以显示行号:107可以直接定位到这一行。i进入编辑模式。注释107行取消注释110行。CTRL+C退出编辑模式。:wq 退出并保存。
![](15.png)
### 使用国内源(这里用中科大的)
```bash
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上操作。
### 更新系统
```bash
sudo dnf makecache && sudo dnf update
```
### 关闭防火墙。防火墙配置比较复杂,这里不做介绍
```bash
sudo systemctl disable --now firewalld
```
### 修改selinux
```bash
sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
sudo setenforce 0
```
### 查看ip方便后面ssh
```bash
ip addr
```
### 安装常用软件
```bash
sudo dnf install vim unzip tar ungzip bzip2
```
### 磁盘分区与格式化
分区使用命令行分区工具`parted`
**parted需要管理权限。**
```bash
sudo parted /dev/sda #选择第一个磁盘直接输入sudo parted 默认选择/dev/sda
```
parted命令说明
```bash
print all #显示当前系统所有磁盘
select /dev/sdb #选择磁盘/dev/sdb 之后的所有操作均是针对于/dev/sdb直至下一个select
mktable gpt # 创建gpt分区表。如果已经有分区的磁盘会提示输入yes即可覆盖
mkpart primary 0% 100% #创建一个主分区,并且使用全部容量 0%开始100%结束。如果要分多个区可以自行修改。
q #quit 退出
```
mkfs 分区格式化
**mkfs需要管理员权限**
```bash
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
```bash
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开机自启动
```bash
sudo systemctl enable --now docker
```
### lvm分区
进入root账号
```bash
sudo -i
```
创建pv,删除使用pvremove
```bash
pvcreate /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
查看创建的pv
```bash
pvs #pvdisplay
```
创建vg 删除使用vgremove
```bash
vgcreate vg_data /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
```
查看创建的vg
```bash
vgs #vgdisplay
```
创建 lv 删除使用 lvremove
```bash
lvcreate -l 100%FREE -n lv_data vg_data
```
创建RAID10 lv。这里是软RAID有条件可以硬raid。
```bash
lvcreate --type raid10 --raidintegrity y -L 7.2T -n lv_data vg_raid
```
查看创建的lv
```bash
lvs #lvdisplay
```
格式化lvm磁盘。raid10盘格式化时间比较长
```bash
mkfs.xfs /dev/mapper/vg_data-lv_data
mkfs.xfs /dev/mapper/vg_raid-lv_data
```
挂载lvm磁盘
```bash
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挂载进去可能没权限读写**
查看磁盘信息
```bash
df -lh
```
安装配置nfs
安装
```bash
sudo dnf install nfs-utils rpcbind
```
设置为开机自启动
```bash
sudo systemctl enable --now ntfs-server rpcbind
```
配置共享目录
```bash
vim /etc/exports #下面是内容这里视频使用ro权限
/data/video 10.0.0.0/24(ro,insecure,sync,no_root_squash,no_subtree_check)
```
应用
```bash
sudo exportfs -a
```
创建网桥
不需要虚拟机不需要此步骤
查看当前网络连接信息
```bash
nmcli con show
```
创建网桥
```bash
nmcli con add type bridge ifname br0
```
绑定网桥到网卡
```bash
nmcli con add type bridge-slave ifname eno1 master br0
```
启动网桥
```bash
nmcli con up br0
```
配置 ip地址
```bash
sudo nmcli c edit br0
```
以下命令在nmcli命令行下
```bash
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
```
重启网卡/重启电脑
```bash
sudo nmcli c reload
sudo nmcli c down br0 && sudo nmcli c up br0
```
安装虚拟机
使用难用的virt-manager界面操作。
查看一下库里有哪些软件组
```bash
sudo dnf grouplist
```
安装相关软件
```bash
sudo dnf groupinstall 'Virtualization Host'
sudo dnf install virt-manager
```
注意: 也可以只安装virt全命令行操作。
转换openwrt的img文件为qcow2格式
```bash
qemu-img convert -o qcow2 openwrt.img openwrt.qcow2
```
## docker部署filebrowser/qbittorrent/jellyfin
### jellyfin
```bash
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
```bash
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
```bash
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
```bash
sudo dnf install nginx
```
配置filebrowser能用就行不做优化。替换自己的域名
```bash
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能用就行不做优化。替换自己的域名
```bash
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能用就行不做优化。替换自己的域名
```bash
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岂不美哉