物理机安装Ubuntu
//安装Ubuntu
//Ubuntu设置静态IP
raid5配置
参考链接:
//搭建raid5阵列
//搭建raid5阵列
//增加raid5阵列大小
//增加raid5阵列大小
//扩展raid5阵列
raid5阵列至少需要三个物理磁盘(可以使用虚拟机,先新曾三个SATA硬盘练手)
使用 fdisk -l | grep sd 查看挂载的硬盘设备名
fdisk /dev/sda 可以用来为添加的虚拟硬盘sda创建分区,其他分区同理
fdisk只能针对2T以下容量的硬盘进行分区,大于2T容量的sd设备需要使用gdisk,两个工具命令大同小异
1
2
3
4
5
6
7
8
9
10
|
按 n 创建新的分区。
然后按 P 选择主分区。选择主分区是因为还没有定义过分区。
接下来选择分区号为
1
。默认就是
1
。
这里是选择柱面大小,我们没必要选择指定的大小,因为我们需要为 RAID 使用整个分区,所以只需按两次 Enter 键默认将整个容量分配给它。
然后,按 P 来打印创建好的分区。
改变分区类型,按 L可以列出所有可用的类型。
按 t 修改分区类型。
这里使用fd设置为 RAID 的类型。
然后再次使用p查看我们所做的更改。
使用w保存更改。
|
将创建好分区的硬盘用mdadm工具合并为一个块设备,并设置为raid5阵列
1
|
mdadm --create --auto=
yes
/dev/md0
--level=5 --raid-devices=4 --spare-devices=1
/dev/sdb1
/dev/sdc1
/dev/sdd1
/dev/sde1
|
--level=5:创建raid5
--raid-devices=4:四块盘,3+1
--spare-device=1:备用盘1个
需要注意的是raid5阵列会使用三分之一的容量作为硬盘校验,所以做好的raid5阵列天生就少了三分之一的容量的心理准备
给raid5指定为ext4文件系统
1
|
mdadm --detail --scan --verbose >>
/etc/mdadm
.conf
|
保存raid5配置,如果没有mdadm.conf,则手动创建
执行到此时需要重启系统,因为创建的md0设备在重启后设备编号会自动修改(原因未知),如果现在直接mount挂载,那么在重启以后系统会找不到设备
1
2
|
mkdir
/mnt/raid5
mount
/dev/md0
/mnt/raid5/
|
raid5这个目录可以改为你自定义的目录,md0这个设备需要改成重启后显示的md设备,我的自动修改为了 /dev/md127 ,mount后访问raid5目录,会发现多出来了一个lost+found文件夹
1
2
3
|
nano
/etc/fstab
/dev/md0
/mnt/raid5
ext4 defaults 0 0
|
文件里的md0和raid5改为你自己的md设备和目录
检查fstab条目是否有错
至此,之后无论重启多少遍,目录都会自动挂载
1
|
mdadm --manage
/dev/md0
--add
/dev/sdd1
|
1
|
mdadm --grow --raid-devices=3
/dev/md0
|
以上命令请自行修改md和sd设备号
Docker+Docker-compose安装
参考链接:
这部分其实没啥好说的,照做就好,只是需要记住因为国内访问Docker官方镜像很慢,所以需要使用国内的镜像,ustc(中科大)源就挺好
Docker-compose
命令从docker-compose改为docker compose,中间少了个“-”
Docker代理设置
参考连接:
nas应用搭建
在搭建之前需要注意国内源很多镜像都不是最新版本,所以在pull镜像的时候最好指定版本,不要用latest!!!
在Docker中localhost指向的是容器本身的地址,例如下面的nextcloud+PostgreSQL,nextcloud配置时如果用localhost:5432,则指向的是nextcloud自身,正确的配置是将localhost改为PostgreSQL的容器IP!!!
ddns-go
我用的是阿里云的域名,需要注意的是,阿里云的VPS在测试的时候,如果用ddns做解析,会查备案(这不代表买的域名用不了,测试的时候用国外厂商的VPS就好了)
1
|
docker run
-
d
-
-
name ddns
-
go
-
-
restart
=
always
-
v
/
home
/
ddns
-
go
/
:
/
root
-
p
9876
:
9876
jeessy
/
ddns
-
go
|
nextcloud+PostgreSQL
参考连接:
//修改最大连接池数
1
|
docker run --restart=always --name postgresql -
v
/etc/localtime
:
/etc/localtime
-
v
/data/postgresql
:
/var/lib/postgresql/data
-c max_connections=8192 -e POSTGRES_PASSWORD=123456 -d -p 35432:5432 postgres:14.7
|
-v的目录改为你自己的目录
-p的端口改为你自己的端口
此处需要注意一定要改最大连接池,否则使用是会出现连接到postgres的应用打不开的情况
1
|
docker
exec
-it postgresql
/bin/bash
|
切换到postgres用户后输入如下命令
进入数据库,创建新的数据库并修改权限,如果新建的用户名有特殊字符,则需要加双引号
1
2
3
|
psql
CREATE DATABASE your_dbname;
GRANT ALL PRIVILEGES ON DATABASE dbname TO username;
|
之后用psql验证是否能登录成功
1
|
psql -Uncadmin -dnextcloud -h localhost -p 5432
|
以上所有的命令,记得修改数据库名称和用户名称
修改postgresql.conf文件,将max_connections从默认100修改为更大的数,具体数需要根据你搭建了多少服务来改
1
|
docker run --restart=always --name nextcloud -e UPLOAD_MAX_SIZE=50G -p 8080:80 -
v
/nextcloud
:
/var/www/html
--link postgresql:postgresql -d nextcloud:25.0.3
|
-v改为自己的目录
-p改为自己的端口
--link 一定要加,并且名称不能出错,在使用之前需要保证PostgreSQL已经存在
因为在docker命令行中已经添加了--link参数,所以在nextcloud初始化的时候可以在数据库一栏直接填写postgresql
nextcloud插件安装
nextcloud插件官网:
插件下载时需要注意对应的nextcloud版本
onlyoffice
此插件需要注意,最好能有一个ddns好的域名,否则后台设置server的时候会显示找不到服务器
1
|
docker run --restart=always --name onlyoffice -i -t -d -p 9000:80 -
v
/home/ubuntu/onlyoffice/data/
:
/var/www/onlyoffice/Data
-
v
/home/ubuntu/onlyoffice/log/
:
/var/log/onlyoffice
onlyoffice
/documentserver
|
因为墙的原因,插件需要从官网下载,然后放到nextcloud目录下的apps文件夹中,并且设置为www-data:root用户组
1
|
chown
-R www-data:root .
/onlyoffice
|
在nextcloud的设置中修改onlyoffice server
adminer
参考连接:
此容器可直接访问和修改数据库内容,所以不建议安装
1
|
docker run --restart=always -d --name adminer -
v
/path/to/adminer
.css:
/var/www/html/adminer
.css -e ADMINER_DESIGN=
'hydra'
--link postgresql:postgresql -p 30003:8080 adminer
|
Rustdesk
1
2
3
|
docker run --name hbbs -p 21115:21115 -p 21116:21116 -p 21116:21116
/udp
-p 21118:21118 -
v
/path/to/rustdesk/
:
/root
-it -d --restart=always rustdesk
/rustdesk-server
hbbs -r
docker run --name hbbr -p 21117:21117 -p 21119:21119 -
v
/path/to/rustdesk/
:
/root
-it -d --restart=always rustdesk
/rustdesk-server
hbbr
|
客户端安装完成后记得使用管理员权限运行,否则某些系统配置页面可能会产生鼠标键盘无响应的假死状态
portainer
国内用户需要指定版本号,否则自动下载的可能是老版本
1
|
docker run -d -p 9000:9000 -p 9443:9443 --name=portainer --restart=always -
v
/var/run/docker
.sock:
/var/run/docker
.sock -
v
/path/to/portainer/
:
/data
portainer
/portainer-ce
:2.16.2-alpine
|
jellyfin
主要是需要注意HEVC格式的编码,不是所有的硬件都能解出来的
Intel CPU支持
Nvidia GPU支持
1
2
3
4
|
docker run -d --name jellyfin --restart=always --device
/dev/dri
:
/dev/dri
-p 30400:8096 -
v
/mnt/raid5/lost
+found
/jellyfin/config/
:
/config
-
v
/mnt/raid5/lost
+found
/jellyfin/tvshow/
:
/data/tvshows
-
v
/mnt/raid5/lost
+found
/jellyfin/movie/
:
/data/movies
jellyfin
/jellyfin
:10.8.9
docker run -d --name jellyfin --restart=always --device
/dev/dri
:
/dev/dri
-p 30400:8096 -
v
/mnt/raid5/lost
+found
/jellyfin/config/
:
/config
-
v
/mnt/raid5/lost
+found
/jellyfin/tvshow/
:
/data/tvshows
-
v
/mnt/raid5/lost
+found
/jellyfin/movie/
:
/data/movies
nyanmisaka
/jellyfin
:230129-amd64
|
建议使用nyanmisaka/jellyfin这个jellyfin,驱动全都是装好的
wiki.js
这个docker版本更新特别细,需要指定版本
docker-compose.yml内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
version:
"3"
services:
wiki:
image: requarks
/wiki
:2.5.297
environment:
DB_TYPE: postgres
DB_HOST:
DB_PORT:
DB_USER: wikijs
DB_PASS: wikijs
DB_NAME: wiki
restart: always
ports:
-
"3000:3000"
|
1
|
docker run -d -p 8080:3000 --name wiki --restart unless-stopped -e
"DB_TYPE=postgres"
-e
"DB_HOST=#此处为本机IP或域名#"
-e
"DB_PORT=#此处应为数据库端口#"
-e
"DB_USER=wikijs"
-e
"DB_PASS=wikijsrocks"
-e
"DB_NAME=wiki"
requarks
/wiki
:2.5.297
|
gogs
1
|
docker run -d --name gogs -p 30010:22 -p 30011:3000 -
v
/home/ubuntu/gogs/
:
/data
--link postgresql:postgresql gogs
/gogs
:0.13
|
照做就好,如果用的数据库不是PostgreSQL,则在link选项里改为自己的数据库的名称
第一次设置gogs时,在数据库主机中填入link参数(以上面为例则是:postgresql)
gitea
1
|
docker run -d --name gitea --restart always -p 30010:22 -p 30011:3000 -
v
/path/to/gitea
:
/data
-
v
/etc/timezone
:
/etc/timezone
:ro -
v
/etc/localtime
:
/etc/localtime
:ro --link postgresql:postgresql gitea
/gitea
:1.18.5
|
和gogs的注意事项一样
第一次填写,请注意ROOT_URL部分,这将影响后续的网站默认下载地址
transmission
1
|
docker run -d --name=transmission -e USER=
test
-e PASS=
test
-e TRANSMISSION_WEB_HOME=
/config/web
-m 500M -p 9091:9091 -p 51413:51413 -p 51413:51413
/udp
-
v
/home/ubuntu/transmission/config
:
/config
-
v
/home/ubuntu/transmission/download
:
/downloads
-
v
/home/ubuntu/transmission/watch
:
/watch
--restart unless-stopped linuxserver
/transmission
:4.0.3
|