从入门到入坟搭建FreeNAS服务器并配置NextCloud
创作立场声明:本文所有商品皆自费购入,第一次发表文章,若有不当之处愿意接受大家的批评指点。NextCloud搭建部分主要转载Reven_L大佬的教程,在此感谢这位大佬的分享。
追加修改(2021-01-21 21:55:31):
4.2映射目录里面JMyDisk多了一个J
5.8将redis应用到NextCloud上面的后两条代码应为:
su -m www -c 'php /usr/local/www/nextcloud/occ config:system:set memcache.local --value="OCMemcacheAPCu"'
su -m www -c 'php /usr/local/www/nextcloud/occ config:system:set memcache.locking --value="OCMemcacheRedis"'
如果漏了''路径标识,就会出现页面无法打开问题。如果已经出现问题,可以在/usr/local/www/nextcloud/config/config.php文件里面修改
心路历程
从大学的时候就有过打算建自己的一套NAS系统,苦于没有公网ip,高昂的DDNS内网穿透价格以及狭窄的宿舍没地方放置NAS只得作罢毕业之后,家里由长城宽带更换为电信宽带 (你知道我这些年是怎么过的吗 ),拨打10000号也顺利地拿到了公网ip,之前更换的华硕RT-AC66U B1路由器刷了梅林之后插件支持阿里ddns(自带的DDNS如果不考虑设置SSL证书的话也是可以的,ddnspod插件似乎有问题并不能使用 ),一切的必要前提都准备好之后,下一步就是开始动手搭建NAS服务器了(入坟的开始 )。
软硬件配置
为了方便起见,先把要用到的软硬件以及网站列出来
公网ip
系统安装工具:Rufus
系统:TrueNAS12.0.U1(FreeNAS从12.0开始跟TrueNAS合并)
系统盘:闪迪CZ73 32GB
集成主板:华擎J3455-ITX
内存:英睿达ddr3l 1600 8G
数据盘:希捷酷鱼1T
机箱:invasion银飞雄 X-1
电源:海盗船SF600
路由器:华硕RT-AC66U B1 梅林固件版本384.13_1
路由器插件:阿里DDNS
域名:阿里云
SSL证书:Let's Encrypt
SSH工具:Bitvise SSH Client
NextCloud-3.1.1(选择后缀为.tar.bz2的安装包和.tar.bz2.sha512的校验文件下载)
入坟目录
硬件组装
购买域名
申请SSL证书
设置DDNS
安装系统
配置FreeNAS
配置NextCloud
硬件组装
上面的硬件一大堆,其实就主板跟机箱是新买的,其余的要不是旧笔记本里面拆的,要不就是旧的itx主机退烧后一直闲置没用的 所以才有了SF600来当电源 为了利用好闲置的配置,机箱在淘宝上逛了一圈,找到了invasion银飞雄 X-1这一款。我看重的是它支持较多硬盘,而且支持atx电源,至于侧透什么的就无所谓了。
因为是同城发货,第一天下午下单,第二天早上就到货了。外包装就一简单的牛皮纸盒子,开箱之后万万没想到硬盘架这么脆弱还没有缓冲保护措施,在快递路上就被撞歪了
这个机箱并没有配备sfx转atx电源架,幸好闲置的机箱有进行配备,就顺手拿来装上了。这个机箱如果极限一点,在底部风扇位置加装硬盘架,装十块3.5机械盘应该没问题 不过J3455自带4个sata接口,要加更多硬盘需要pcie转sata的转接卡。目前只是用来尝试搭建FreeNAS,以后再加装硬盘,所以硬盘位看着挺孤零零的
系统搭建
废话不多说直接开搞
一、购买域名
在万网上面购买域名用来访问家庭里面的网络设备,通过固定的域名解决公网ip不固定的问题。价格从几块钱起步,个人自用目前推荐选择top域名,首年9块,续费26块。
二、申请SSL证书
由于国内80端口在家庭宽带是不能使用的,因此华硕路由器自带的ddns下面的证书签发不能完成认证,还得要自己去申请SSL证书。我申请的是Let's Encrypt证书,刚开始的时候不会操作,磕磕碰碰之后回过头看其实还挺简单的。按照下图进行输入:
点击【申请证书】之后选择DNS验证,打开万网域名控制台【域名列表】-【解析】进入解析设置,添加解析记录,A记录是域名跳转ip,记录值填写当前获取到的公网ip,TXT记录是用于SSL证书签发时的域名验证,由于勾选泛域名和根域,要添加两条TXT记录。
设置好之后回到Let's Encrypt进行验证,一般来说验证几分钟就能搞定。
三、设置DDNS
证书申请成功后,回到万网域名控制台,鼠标移动到右上角头像,点击【AccessKey管理】-【创建AccessKey】。
把获取的AccessKey ID和Secret填写到插件上面,域名处填写所注册的域名,填写完毕后点击【提交】。这些步骤都完成以后,就能够在外面访问家庭网络了,接下来就是部署FreeNAS和安装NextCloud。
四、安装系统
直接在Windows电脑上面插入引导盘,在引导类型选择里面选择FreeNAS.iso文件,然后点击开始。
系统引导完成后,把两个u盘都接入硬件,在BIOS设置好u盘加载顺序之后进入到系统安装界面:
回车进入第一项。
回车进入第一项。
选择安装系统的硬盘,按空格来选中硬盘。(因为是虚拟机进行的安装,所以只显示了一个硬盘,实际安装的时候要注意有没有正确选择硬盘)
提示安装会抹除硬盘数据。
设置root用户密码。
引导模式我选择的UEFI。
成功安装提示。
选择第四项关闭系统,拔掉引导u盘后重新开机。
五、配置FreeNAS
重启后等待配置完成进入到如下界面,输入ip地址进入管理界面,现在就可以开始进行配置FreeNAS并安装NextCloud了。
刚打开管理界面的时候默认为英文,需要点击左侧菜单栏【System】-【General】-【Localization】-【Simplified Chinese】来进行管理界面语言修改。语言修改完毕后,其他按照下图进行设置,时区设置为东八区即可:
注:如果不需要外网通过https访问FreeNAS管理界面,以下步骤可跳过:
端口记得在路由器里面设置端口转发,本地ip填写FreeNAS的本地ip地址,外部端口填写非80、443端口即可,如果端口发生冲突则进行修改。
1. 设置FreeNAS二级域名
主要用于在外网访问FreeNAS管理界面,在左侧菜单栏点击【网络】-【全局配置】,按下图进行配置,完成后通过外网访问FreeNAS管理界面的格式为"主机名.域名:端口":
2. 添加证书,实现https访问
在设置完毕FreeNAS二级域名之后,就能够通过外网访问FreeNAS了,不过使用的链接协议是不安全的http,考虑到安全性,我们接下来要进行SSL证书设置。在左侧菜单栏点击【系统】-【证书】,点击右上角【添加】。
名称自定义,证书栏填写Let's Encyrpt下发的fullchain.crt文本内容,私钥填写private.pem文本内容,两者都可以通过记事本打开,完成后点击【提交】。
回到【系统】-【常规】,在GUI SSL证书中选择刚刚添加的证书,完成后就能够在外网通过https协议访问FreeNAS了。
至此,通过外网https访问FreeNAS管理界面的设置就完成了。
六、配置NextCloud
这部分基本是对照从零开始在FreeNAS的Jail上安装NextCloud这篇博客进行的,当时快放弃的时候刚好搜到这篇文章,抱着试试看的心态对着操作,最终成功安装好了NextCloud,在此对这位大佬表示感谢
NextCloud在插件里面是可以直接安装然后进行配置的,但是不知道为什么一直安装不上,只能手动安装,可以说搞定一个坑又遇到另一个坑
1. 添加数据池
添加池用于数据存储,在左侧菜单栏点击【存储】-【池】,再点击右上角【添加】。
如果设置缓存盘,则点击【添加VDEV】,在左边的硬盘序列中勾选硬盘到右边相应位置,设置完成后点击【创建】。
2. 创建数据集
在新建的存储池里面,我们需要新建数个数据集:NextCloudDataBase,nextcloud。再到nextcloud数据集里面新建三个数据集config、themes和db。首先在左侧菜单栏点击【存储】-【池】,点击池右侧三个点的标准添加新数据集NextCloudDataBase,atime值设置为off。
和新建数据集NextCloudDataBase过程相同,新建nextcloud数据集和它的子集,区别在于atime值设置为on。新建完成后,池目录如下图所示:
3. 创建用户并设置权限
在左侧菜单栏点击【账户】-【用户】,再点击右上角【添加】,按下图进行配置来创建mysql用户:
回到池目录进行权限设置,将db数据集所有者的用户和群组都设置为mysql,并且记得勾选Apply User和Apply Group,然后点击【保存】。用相同步骤,将数据集NextCloudDataBase、config和themes的权限所有者用户和群组都设置为www。
4. 创建Jail并进行配置
4.1 添加监狱
点击左侧菜单栏【监狱】-右上角【添加】-【高级监狱创建】,【基本属性】如下图进行配置,【网络属性】resolver修改为none:
4.2 映射目录
点击左侧菜单栏【命令行】输入以下命令,在Jail中创建目录(命令行使用shift+insert来实现粘贴):
iocage exec NextCloud mkdir -p /mnt/data
iocage exec NextCloud mkdir -p /var/db/mysql
iocage exec NextCloud mkdir -p /usr/local/www/nextcloud/config
iocage exec NextCloud mkdir -p /usr/local/www/nextcloud/themes
先在【监狱】中停止NextCloud监狱,再使用下面命令将Jail的目录映射映射到数据集里面(注意路径名称,前面路径为FreeNAS主机路径,后面路径为Jail目录路径):
iocage fstab -a NextCloud /mnt/MyDisk/NextCloudDataBase /mnt/data nullfs rw 0 0
iocage fstab -a NextCloud /mnt/JMyDisk/nextcloud/db /var/db/mysql nullfs rw 0 0
iocage fstab -a NextCloud /mnt/JMyDisk/nextcloud/config /usr/local/www/nextcloud/config nullfs rw 0 0
iocage fstab -a NextCloud /mnt/MyDisk/nextcloud/themes /usr/local/www/nextcloud/themes nullfs rw 0 0
成功执行会提示"Successfully added mount to NextCloud's fstab"。
4.3 设置FreeNAS缓存
命令行输入:
zfs set primarycache=metadata MyDisk/nextcloud/db
5. 安装NextCloud
5.1设置中科大软件源
默认软件下载速度很慢,需要我们更换下载源。
5.1.1 命令行设置中科大软件源
在NextCloud监狱(注:【监狱】-【>】-【命令行】)打开命令行并输入:
nano /etc/pkg/FreeBSD.conf
nano编辑器需要使用命令"pkg install nano"进行下载,下载过程若有提示,输入y即可。
文本按照以下内容进行修改:
FreeBSD: {
url: "pkg+http://mirrors.ustc.edu.cn/freebsd-pkg/${ABI}/quarterly",
mirror_type: "srv",
signature_type: "fingerprints",
fingerprints: "/usr/share/keys/pkg",
enabled: yes
}
修改完成后,按下CTRL+O并按回车键确认进行保存,CTRL+X退出文件编辑。
输入pkg update进行更新,有提示就输入y。
如果提示以下错误,需要关闭本地源并开启网络源:
pkg: file:///usr/ports/packages/meta.txz: No such file or directory
repository local has no meta file, using default settings
pkg: file:///usr/ports/packages/packagesite.txz: No such file or directory
Unable to update repository local
Error updating repositories!
nano /usr/local/etc/pkg/repos/local.conf
enable: no #关闭本地源
如果提示错误:No repositories are enabled. 需要开启网络镜像源。
nano /usr/local/etc/pkg/repos/FreeBSD.conf
enabled: yes #开启网络镜像源
更新pkg。
pkg update -f #更新
5.1.2 使用SSH工具设置中科大软件源
除了使用命令行打开FreeBSD.conf文件,我们还可以通过WINSCP、BitviseSSH等工具进行修改。点击【服务】,打开SSH并勾选自动启动,点击右边的编辑按钮,选中【使用密码以root身份登录】。
用记事本打开/mnt/MyDisk/iocage/jails/NextCloud/root/etc/pkg路径下FreeBSD.conf文件,修改为以下内容:
FreeBSD: {
url: "pkg+http://mirrors.ustc.edu.cn/freebsd-pkg/${ABI}/quarterly",
mirror_type: "srv",
signature_type: "fingerprints",
fingerprints: "/usr/share/keys/pkg",
enabled: yes
}
保存文件并输入pkg update进行更新,有提示就输入y。
怕因为路径太长导致出错,可以在Jail里面开启SSH服务。
命令行如下:
nano /etc/ssh/sshd_config
去掉以下文本开头的#号:
port 22
PermitRootLogin no #将no改为yes
UseDNS yes
可选:Subsystem sftp internal-sftp #限定非root用户只能使用stfp连接
CTRL+O保存,CTRL+X退出。
开启ssh服务:
service sshd start
设置ssh自启动:
sysrc sshd_enable=yes
设置root用户密码:
passwd root
5.2 安装所需软件
pkg install nano #若已下载则不需要重新下载
pkg install wget ca_root_nss
pkg install nginx
pkg install mariadb104-server
pkg install redis
设置开机启动
sysrc nginx_enable=yes
sysrc mysql_enable=yes
sysrc redis_enable=yes
5.3 安装NextCloud文件
用SSH工具将前面下载好的NextCloud安装包上传到/mnt/MyDisk/iocage/jails/NextCloud/root/tmp,并用命令检验文件完整性。
使用监狱命令行,输入
cd /tmp
shasum -a 512 -c nextcloud-20.0.4.tar.bz2.sha512 #注意文件名
返回ok后将文件解压到NextCloud监狱目录下/usr/local/www/nextcloud,然后给www添加权限。
tar -xf nextcloud-20.0.4.tar.bz2 -C /usr/local/www
chown -R www:www /usr/local/www/nextcloud
5.4 设置MYSQL数据库
5.4.1 修改配置
打开/usr/local/etc/mysql/my.cnf:
nano /usr/local/etc/mysql/my.cnf
找到"socket = /var/run/mysql/mysql.sock"并修改为"socket = /tmp/mysql.sock",完成后保存并退出。
5.4.2 配置MySQL
启动MySQL并完成设置:
service mysql-server start
mysql_secure_installation --socket=/tmp/mysql.sock
遇到提示选择y,直到设置输入数据库密码,输入新密码无反馈,设置完成后继续选y。
完成后登录MySQL:
mysql -u root -p 新密码
然后逐行输入以下密码进行MySQl配置:
CREATE DATABASE nextcloud;
CREATE USER 'nextcloud_admin'@'localhost' IDENTIFIED BY '改成刚刚设置的密码';
GRANT ALL ON nextcloud.* TO 'nextcloud_admin'@'localhost';
FLUSH PRIVILEGES;
exit
5.5 安装并配置PHP
5.5.1 安装PHP
用以下命令将安装PHP 7.4和Nextcloud运行所需的软件包:
pkg install php74 php74-bz2 php74-ctype php74-curl php74-dom php74-exif php74-fileinfo php74-filter php74-gd php74-iconv php74-intl php74-json php74-ldap php74-mbstring php74-opcache php74-openssl php74-pdo php74-pdo_mysql php74-pecl-APCu php74-pecl-imagick php74-pecl-redis php74-posix php74-session php74-simplexml php74-xml php74-xmlreader php74-xmlwriter php74-xsl php74-zip php74-zlib php74-bcmath php74-gmp php74-pecl-smbclient php74-ftp
设置php-fpm自启动并启动php-fpm服务:
sysrc php_fpm_enable=yes
service php-fpm start
5.5.2 配置php.ini
用命令复制一份php配置并编辑:
cd /usr/local/etc
cp php.ini-production php.ini
用SSH工具打开 /usr/local/etc路径下的php.ini文件并编辑:
取消行开头的“;”注释并设定以下参数值:
cgi.fix_pathinfo=1
date.timezone ="Asia/Shanghai"
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=1
opcache.save_comments=1
按自己需要设定上传文件限制:
memory_limit = 1024M
post_max_size = 10240M
upload_max_filesize = 10240M
取消配置文件/usr/local/etc/php-fpm.d/www.conf下面的注释:
clear_env = no
重启php-fpm:
service php-fpm restart
5.6 设置Nginx和SSL证书
使用SSH工具在NextCloud监狱目录/usr/local/etc/nginx中新建nextcloud.conf配置文件,并输入以下设置(注意要在路由器中转发内部的443端口):
upstream php-handler {
server 127.0.0.1:9000;
#server unix:/var/run/php/php7.4-fpm.sock;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name 换成你证书对应的域名;
# Use Mozilla's guidelines for SSL/TLS settings
# https://mozilla.github.io/server-side-tls/ssl-config-generator/
ssl_certificate 换成你证书对应的pem文件路径;
ssl_certificate_key 换成你证书对应的key文件路径;
# HSTS settings
# WARNING: Only add the preload option once you read about
# the consequences in https://hstspreload.org/. This option
# will add the domain to a hardcoded list that is shipped
# in all major browsers and getting removed from this list
# could take several months.
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;
location = /.well-known/carddav {
return 301 $scheme://$server_name:$server_port/remote.php/dav;
}
location = /.well-known/caldav {
return 301 $scheme://$server_name:$server_port/remote.php/dav;
}
# set max upload size
client_max_body_size 10240M;# 可以改成你所需的值
fastcgi_buffers 64 4K;
# Enable gzip but do not remove ETag headers
gzip on;
gzip_vary on;
gzip_comp_level 4;
gzip_min_length 256;
gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
# Pagespeed is not supported by Nextcloud, so if your server is built
# with the `ngx_pagespeed` module, uncomment this line to disable it.
#pagespeed off;
# HTTP response headers borrowed from Nextcloud `.htaccess`
add_header Referrer-Policy "no-referrer" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Download-Options "noopen" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Permitted-Cross-Domain-Policies "none" always;
add_header X-Robots-Tag "none" always;
add_header X-XSS-Protection "1; mode=block" always;
# Remove X-Powered-By, which is an information leak
fastcgi_hide_header X-Powered-By;
# Path to the root of your installation
root /usr/local/www/nextcloud;
# Specify how to handle directories -- specifying `/index.php$request_uri`
# here as the fallback means that Nginx always exhibits the desired behaviour
# when a client requests a path that corresponds to a directory that exists
# on the server. In particular, if that directory contains an index.php file,
# that file is correctly served; if it doesn't, then the request is passed to
# the front-end controller. This consistent behaviour means that we don't need
# to specify custom rules for certain paths (e.g. images and other assets,
# `/updater`, `/ocm-provider`, `/ocs-provider`), and thus
# `try_files $uri $uri/ /index.php$request_uri`
# always provides the desired behaviour.
index index.php index.html /index.php$request_uri;
# Default Cache-Control policy
expires 1m;
# Rule borrowed from `.htaccess` to handle Microsoft DAV clients
location = / {
if ( $http_user_agent ~ ^DavClnt ) {
return 302 /remote.php/webdav/$is_args$args;
}
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# Make a regex exception for `/.well-known` so that clients can still
# access it despite the existence of the regex rule
# `location ~ /(.|autotest|...)` which would otherwise handle requests
# for `/.well-known`.
location ^~ /.well-known {
# The following 6 rules are borrowed from `.htaccess`
rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
rewrite ^/.well-known/webfinger /public.php?service=webfinger last;
rewrite ^/.well-known/nodeinfo /public.php?service=nodeinfo last;
location = /.well-known/carddav { return 301 /remote.php/dav/; }
location = /.well-known/caldav { return 301 /remote.php/dav/; }
try_files $uri $uri/ =404;
}
# Rules borrowed from `.htaccess` to hide certain paths from clients
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/) { return 404; }
location ~ ^/(?:.|autotest|occ|issue|indie|db_|console) { return 404; }
# Ensure this block, which passes PHP files to the PHP process, is above the blocks
# which handle static assets (as seen below). If this block is not declared first,
# then Nginx will encounter an infinite rewriting loop when it prepends `/index.php`
# to the URI, resulting in a HTTP 500 error response.
location ~ .php(?:$|/) {
fastcgi_split_path_info ^(.+?.php)(/.*)$;
set $path_info $fastcgi_path_info;
try_files $fastcgi_script_name =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $path_info;
fastcgi_param HTTPS on;
fastcgi_param modHeadersAvailable true; # Avoid sending the security headers twice
fastcgi_param front_controller_active true; # Enable pretty urls
fastcgi_pass php-handler;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
}
location ~ .(?:css|js|svg|gif)$ {
try_files $uri /index.php$request_uri;
expires 6M; # Cache-Control policy borrowed from `.htaccess`
access_log off; # Optional: Don't log access to assets
}
location ~ .woff2?$ {
try_files $uri /index.php$request_uri;
expires 7d; # Cache-Control policy borrowed from `.htaccess`
access_log off; # Optional: Don't log access to assets
}
location / {
try_files $uri $uri/ /index.php$request_uri;
}
}
再打开相同目录下的nginx.conf文件,如下图进行编辑:
保存并重启Nginx:
service nginx restart
如果输入地址后,网络界面如图所示:
打开/usr/local/www/nextcloud/config路径下的config.php文件,对trusted_domains进行如下设置:
成功安装后,输入地址之后网页会显示类似界面:
初始化设置主要是创建管理员账号,设置数据目录等:
数据目录:
/mnt/data
配备数据库:
nextcloud_admin
之前数据库设置的密码
nextcloud
localhost:/tmp/mysql.sock
5.7 配置缓存REDIS
将REDIS设置为本地监听:
nano /usr/local/etc/redis.conf
将port改为0
取消“#”注释并修改对应值:
unixsocket /var/run/redis/redis.sock
unixsocketperm 770
重启redis:
service redis restart
5.8 确认Redis配置正确
运行命令:
ls -al /var/run/redis
若出现如下提示则配置正确,否则需要重新确认上面的配置:
srwxrwx--- 1 redis redis 0 MMM D HH:MM redis.sock
接着将redis应用到NextCloud上面:
su -m www -c 'php /usr/local/www/nextcloud/occ config:system:set redis host --value="/var/run/redis/redis.sock"'
su -m www -c 'php /usr/local/www/nextcloud/occ config:system:set redis port --value=0 --type=integer'
su -m www -c 'php /usr/local/www/nextcloud/occ config:system:set memcache.local --value="OCMemcacheAPCu"'
su -m www -c 'php /usr/local/www/nextcloud/occ config:system:set memcache.locking --value="OCMemcacheRedis"'
将www用户添加到redis组以允许其访问redis:
pw usermod www -G redis
重启Nginx:
service nginx restart
5.8 优化NextCloud
5.8.1 配置Cron文件
先将环境编辑器更改为nano,然后配置“ www”用户的crontab:
setenv EDITOR nano
crontab -u www -e
写入以下内容来运行nextcloud cron脚本:
# minute (0-59),
# | hour (0-23),
# | | day of the month (1-31),
# | | | month of the year (1-12),
# | | | | day of the week (0-6 with 0=Sunday).
# | | | | | commands
*/15 * * * * /usr/local/bin/php -f /usr/local/www/nextcloud/cron.php
在NextCloud中点击头像【设置】-【基本设置】-【后台任务】选择Cron作为后台任务:
5.8.2 启用FreeBSD的系统安全模块
FreeBSD自带有以下的安全选项控制:
1.隐藏以其他用户身份运行的进程
2.隐藏以其他组身份运行的进程
3.禁止为非特权用户读取内核消息缓冲区
4.为非特权用户禁用过程调试功能
5.随机化新创建进程的PID
6.在可扩展段之前插入堆栈保护页面
7.启动时清理/ tmp文件系统
8.禁用打开syslogd网络套接字(禁用远程日志记录)
9.禁用SendMail服务
打开内核参数配置文件:nano /etc/sysctl.conf,输入以下命令,这些命令将启用选项1-6:
security.bsd.see_other_uids=0
security.bsd.see_other_gids=0
security.bsd.unprivileged_read_msgbuf=0
security.bsd.unprivileged_proc_debug=0
kern.randompid=$(jot -r 1 9999)
security.bsd.stack_guard_page=1
要启用选项7-9,请运行以下命令:
sysrc clear_tmp_enable=YES
sysrc sendmail_enable="NONE"
sysrc sendmail_submit_enable="NO"
sysrc sendmail_outbound_enable="NO"
sysrc sendmail_msp_queue_enable="NO"
sysrc syslogd_flags="-c -ss"
5.9 设置NextCloud默认语言和地区为简体中文
输入以下命令:
su -m www -c 'php /usr/local/www/nextcloud/occ config:system:set default_language --value="zh_CN"'
5.10 设置服务器邮箱
主要用来在管理员不方便的情况下,让子用户自己重置密码等。这里我选择的是谷歌的服务器,服务器地址和端口如下图填写:
来自地址和证书填写自己的邮箱地址,密码填写邮箱登录密码或者应用专用密码(【账号】-【安全性】-【登录谷歌】-【应用专用密码】)。除了谷歌邮箱以外,qq邮箱、微软邮箱也支持SMTP功能,具体可以查看各邮箱的SMTP功能说明。
总结
至此,装载有NextCloud的FreeNAS服务器就搭建完毕了,手动安装比较繁琐,但是插件安装失败我也没得选 起初并没有搭建NextCloud的想法,只是想做一个简单的家庭云盘,但是在使用WebDAV和sftp的时候,觉得需要进行文件分享的操作,就尝试着自己搭建NextCloud云盘,没想到又是一个坑 但好歹是目前能填的最后一个坑了,前面从购买域名开始,走一步踩一个坑,元旦这几天都是在踩坑填坑中度过。至于为什么选择要踩那么多坑的FreeNAS而不是其他系统(对我这个小白来说,反正选啥都那么多坑,估计哪个都差不多 ),FreeNAS吸引我入坑的最大原因就是它作为一款开源软件(说白了系统不要钱 ),并不需要在系统上支出额外的开销。虽然一步步搭建起来有点繁琐,但是从开始走下来其实也蛮有成就感的,无论是购买域名、设置DDNS还是搭建NextCloud等,都是从零开始学起 当然短短几天并不能够说掌握了这一套流程所需要的知识,只能说知道要这么做,至于为什么要这么做,那又需要进一步去学习了解了。这篇文章之所以会发布,一方面是用来做搭建NAS记录,防止以后忘记了操作不知道从哪里着手;另一方面是分享搭建NAS的思路以及大佬们的搭建方案,在小白力所能及的情况下帮助其他小白。在这里再次感谢分享搭建教程的大佬们,也感谢各位读者能抽空观看这篇文章。
参考资料
FreeNas 11.3 安装及常用系统设置 | NASGEEK
zurica
校验提示文案
admims
校验提示文案
调侃丶花落去
校验提示文案
鲤伴先生
校验提示文案
hong83
校验提示文案
K侃哥
校验提示文案
KennethCheng
unraid加pve加freenas路过
校验提示文案
勇敢的树先生
校验提示文案
Jack1001
校验提示文案
Bixby
校验提示文案
上古长白山
校验提示文案
紫色的眼瞳
校验提示文案
值友5409651462
校验提示文案
snail散步
校验提示文案
值友9399662944
校验提示文案
老馬
校验提示文案
名钰
校验提示文案
皆可妄
校验提示文案
灵KOYB
校验提示文案
abclzq
校验提示文案
东皓雪
校验提示文案
疯狂的蜂鸟
校验提示文案
老馬
校验提示文案
名钰
校验提示文案
尼亚酱
您的网页服务器未正确设置以解析“/.well-known/webfinger”。
您的网页服务器未正确设置以解析“/.well-known/nodeinfo”。
您的网页服务器未正确设置以解析“/.well-known/caldav”。
您的网页服务器未正确设置以解析“/.well-known/carddav”。
校验提示文案
值友9399662944
校验提示文案
snail散步
校验提示文案
zurica
校验提示文案
值友5409651462
校验提示文案
紫色的眼瞳
校验提示文案
上古长白山
校验提示文案
五杨
校验提示文案
不中奖誓不改名
校验提示文案
技术宅是我梦想
校验提示文案
技术宅是我梦想
校验提示文案
24k纯洁
校验提示文案
firstrose
校验提示文案
Bixby
校验提示文案
sh00w
校验提示文案
皆可妄
校验提示文案