generated from bing/readnotes
502 lines
10 KiB
Markdown
502 lines
10 KiB
Markdown
# Linux系统部署nas服务
|
||
|
||
最近因为频繁停电,用了半年的黑裙变成只读了,但是扫描之后,硬盘并没有问题。本人对群晖也不熟悉,网上搜了一圈也没处理好,一气之下备份好数据,格式化之后装了个truenas。可是好景不长,truenas又因为我配置太差,开机10分钟就OOM了,忍无可忍,要自由还是原生Linux,直接装了rockylinux9.4,所有服务全部手动配置,现在已经稳定工作3天。
|
||
|
||
## 配置:
|
||
CPU: AMD R5 5600G
|
||
|
||
主板:华硕TUFB550 WIFI 2
|
||
|
||
内存:光威16GB x2
|
||
|
||
硬盘:西数紫盘6TBx4 + 西数紫盘4TBx4
|
||
|
||
目前已安装并运行的服务:nfs, filebrowser,qBittorrent,openWRT(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,岂不美哉! |