专注4K家庭影音, 服务千万家庭影音发烧友!
手机版
访问手机版

在线
客服

Hao4K影音在线客服服务时间: 9:00-24:00

选择下列客服马上在线沟通:

快速
发帖

关注
微信

关注微信二维码
顶部
开启左侧

[NAS组装] 群晖NAS使用方法心得分享之debian + nextcloud

[复制链接]
Kyriosli 发表于 2019-11-28 21:57:27 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
 
群晖NAS使用方法心得分享之debian + nextcloud4 M9 ]2 |( [4 W0 r: s$ W' W
1 ]7 l* ]2 K/ ~0 O: ]
前言& m6 b+ c9 l* `" w5 j# X
在我心目中一直有一个完美的 NAS,它与众不同最时尚(跳舞一定棒),既能满足我的折腾欲望,又可以丰富日常生活,传传照片听听音乐岂不美哉。然鹅从N年前买 Gen8 然后弃坑到今年重拾起来接盘蜗牛并折腾了好久黑裙,总感觉差点意思(在这里不得不吐槽 DS Photo 的渣体验,直接劝退),个中纠结踩坑不足为外人道也。
& ^) k% {$ `* M4 d$ `/ [直到前两天,决定转开源NAS,先是试了下水 freenas,准备装 nextcloud 试试,结果被插件安装不上劝退,然后重拾了我最爱的 debian。
+ j' G0 _5 @9 b啊~回到了熟悉的 debian 怀抱,一切都变得那么顺其自然,无论是磁盘挂载、远程登录、安装软件等(一开始我还哼哧哼哧装了 OMV,最后发现并不是我想要的,于是就纯命令行了)。
- Q, y$ N! e. m% I, N本文会记录为了达到最佳体验,折腾中的方方面面,值友们请自取所需,不必墨守成规一步步来。
) K0 k5 N" t# f* o一、公网 IP + 动态解析
  q# W: ]- H+ C" k- X) h要达到最佳体验,肯定还是公网 IP 最好。无论是转发式还是打洞式的内网穿透(包括白裙的quickconnect),体验都比不上有一个公网 IP。我因为用的联通光纤所以问题非常简单:打 10010 要求改成公网 IP,搞定。/ g$ Z" [6 H- [+ H/ ]/ w4 j$ K- m
至于动态解析我是采用的阿里云 DNS。道理很简单,就是通过调用 API 来更新解析记录。最早在折腾 Gen8 年代,我就写过一个脚本,后来还封成插件挂到了 KoolShare 上(没错第一版 aliddns 就是我写的)。不过因为 KoolShare 的插件运行机制有问题经常挂掉,所以后来就还是直接走脚本了。
  u! g* U! `7 X! w) T当然,阿里云 DNS 其实是动态解析里的 hard 模式,easy 模式还是很多的,很多路由器都自带这个功能,好不好用另说,肯定没这么折腾。这里简单做个对比:
) Q3 Q( d% S8 I3 X7 Z% W4 ?第三方 ddns1 V7 W* X7 T) b# h- I
优点:非常简单,基本不需要花钱
" |$ ]2 _% ?, S缺点:通常不支持 https,有时更新慢,不可靠
6 g! x4 I3 S  |& F! f- i" L阿里云 DNS
6 V! p/ G, K6 T- n- \5 f7 q优点:稳定,可靠,几年不用操心,支持 https& V6 v$ X# t$ I% `: {
缺点:流程复杂,需要专业知识较多
7 ^4 k3 o4 x! p; P- o1 O5 h2 A% `那么下面我们就简单概括下阿里云 DNS 做动态解析的过程和原理:
3 h3 m& T9 i" F4 y1 o, o7 Z第一步 拥有一个自己的域名
5 k4 r& @  c+ N% A# v3 ]是的!这是一切的前提。当然这不会花太多钱。只要不选主流的 .com/.net/.cn 域名,你只需要花一顿盒饭的钱,就能买下一个域名 1 年的使用权。具体报价可以参考这里。
' ?* ?" v) q: n: \: X建议一次性买断10年,.press 只要 ¥149,.site/.website/.space 也只要 ¥179。
8 |2 R. H( V, m1 K1 N5 c7 F* K0 i7 x, [
第二步 设置 DNS 解析
+ u' Y! S$ `5 R如果以前没有在阿里云买过域名,新注册的域名需要过实名认证才能开通解析。实名认证也很简单,支付宝扫一下就可以了。
$ m1 e# k9 C- e% c3 t+ t
5 c" i+ y8 ]! M* v* T& t3 w5 Q3 I) A必须实名认证才能解析
- h# g; y+ h$ j" l: j接下来打开云解析控制台,应该可以看到你的域名,已经可以解析了。$ p, ~% A* F1 H) }3 }5 _
自动更新 IP 就是通过调用云解析的 API 来设置域名的解析。API 认证通过 AccessKey 实现,我们可以打开阿里云的 AccessKey 界面,创建新的 AccessKey,记录下 key 和 secret,用在下一步的脚本里。
$ B, e6 K. {( o( C! [第三步 自动更新 IP
& c- \6 N5 t7 ^  G不愿意折腾脚本的同学可以看下自己的路由器应用市场有没有 aliddns。没有的话也没关系,可以自己在路由器上或者 nas 服务器上布置一个定时脚本。定时脚本的功能就是定时的取本机的公网 IP,跟 DNS 服务器设置的 IP 对比,如果不匹配,就更新一下。
( w$ s5 L9 |/ N$ H( J0 @$ r) `脚本的内容可以从这里得到,你需要手动修改一些配置并进行测试。具体的如何远程登录、编辑或上传文件到路由器或服务器等在这里不再赘述。
: b; S' J# h, t( C/ Y- W需要注意两点:
7 K1 i* M2 D3 t# n: W这个脚本是在路由器的 shell 环境里测试通过的,在别的平台上没有详细测试过,或许会有兼容性问题。如果你想移植到别的平台,或者用其它语言改写,可以联系我
  @: [, B- ~/ |" t路由器的文件系统一般是只读的 squashfs,也就是说直接将文件上传到普通目录是不允许的,或者断电会丢失。这时候需要配合 jffs 分区或者外部存储(如 u 盘、SD 卡等)来进行持久化存储。
  z8 G) l  ~" _+ m2 i0 ^测试成功后,需要设置定时触发脚本。一般有 crontab 等方法。需要注意的是,一般路由器的 crontab 也是断电不可保存的,所以需要使用系统的定时脚本等功能。
, Z5 p& ~" J" y5 l二、安装 debian
7 n6 K7 H( ^  {debian 的安装教程很多,在这也不再赘述。我推荐的方案是网络安装,只装系统基础组件和 ssh server。作为一个装 debian 老手,在这里只告诉你们一点人生的经验:
# p2 O% z5 ?1 g% h( M! I选择镜像+ O& a* `2 f3 M, F& d* k
安装的时候一定要选好镜像,可以预先测一下速度,看国内的哪个镜像最快。可选的镜像有:
* l" G- A# @. ~  W1 n$ L* \网易
7 H1 l! C# J8 ], U: U/ x: ^阿里云5 s. M1 o7 c+ P9 d4 B! l# M7 F
搜狐
) }/ T4 V; G( p中科大:教育网首选5 I  J+ E( r* ~- G- e0 i
更多的镜像可以看这里
3 c, l! U+ w6 i) U8 h) l分区的时候建议把 /boot、/home、/var 都分割出去,方便系统重装。以一个 128G 的启动盘为例,可以大致这样去分割:) b7 K6 l3 j$ E; j  |# W
EFI:100M! T, Y8 e2 r3 U/ R
boot:1G+ [( F& V3 v3 I6 M# F# N* d
根目录:20G
4 B$ V4 m( E! c' ?  z7 @swap: 8G
' G5 y7 t$ _9 }+ c- a+ r+ Nhome: 60G/ M$ G( C9 ^! O
var: 20G, p+ F5 L' q* F3 y5 \; A2 o
安装必须软件
: Y2 l+ e0 c% I' ?1 ~+ F安装完成后,一些趁手的工具是必要的,下面是一些系统默认不会装的软件,且都不大,可以自行无脑安装:" j$ C& p5 {0 [4 ^* N0 P; ~
系统管理、脚本:0 r1 c3 M/ }: q& t
sudo、screen、curl
% C) ~( k; ?7 Y& F8 a' N5 K3 O文件系统支持:& [1 W/ l' t+ s: T* X0 C; f
exfat-fuse、$ [. N. N6 M, f2 |9 [
exfat-utils、ntfs-3g
- z* _9 l+ {. L& o, ~+ ?编辑器:
) d9 e/ Z( F1 ?5 e. |vim$ N0 f) l, C/ `: g9 F: h
多媒体处理:2 M6 L; a. ~4 I4 a7 }/ a# m/ T  D2 y
imagemagick、ufraw-batch、ffmpeg、exiftool
% T- n) M* T' L. @" N+ DNAT 穿透
, C7 e/ x( {+ ~$ u很多时候服务器放在路由器的后面,为了让服务在外网可以访问,需要做 NAT 穿透配置。在这里我只想说:DMZ 大法好!只需要在路由器里设置一下服务器的内网 IP,就可以一键转发所有服务了
- H9 s, w5 F4 j. I+ q% s# F7 W0 [5 b0 C5 p/ i
在联通光猫上设置 DMZ 的地方
+ }- B" j5 i6 D+ m3 M2 t三、安装 nextcloud
2 \2 n  D& H5 z0 W5 D# O$ q3 [$ {致到此还没被劝退的值友一句话:恭喜你终于坚持到了这一步,下面的步骤可能更麻烦!nextcloud 虽然架构简单,但是要玩转还是需要一些功夫,我们一步步来看一下:* W  i& {: c: l8 _. k- @
安装 nginx( @: @0 i7 W; ~
虽然网上的教程倾向于使用 Apache,但是我建议使用 nginx,毕竟效率更高,配置逻辑更简单,而且对 HTTP/2 支持更好:
4 P6 |7 }+ X. G. S3 B3 w# F安装完成后,可以试试访问下服务器的 80 端口是否启动成功。nginx 要想达到最佳效果,需要设置 worker thread 等,但默认设置已经很好用了,所以在这里就不再赘述。
) Q& k; w: C9 D' n# ~申请 HTTPS 证书" n# F1 |; N. ?9 ^0 x
很久很久以前,这是一个可以当恐怖故事讲的事情,但是现在不用了,我们有 letsencrypt ! letsencrypt 是一个免费证书提供网站,网上有很多教程。通过上一步安装的 nginx 可以完成你的域名的所有权认证,从而发给你证书,不过这个对我不适用,因为联通不允许 80 端口提供服务。所以我使用了 DNS 认证方法。& N7 W5 l% D1 M9 c( E
讲真,证书的申请是一件非常麻烦的事情,需要生成私钥、创建证书签发请求、签名等步骤,非常适合劝退初学者。不过现在好了,letsencrypt 提供一个命令行工具 certbot 来完成所有工作:0 q* D/ k1 i, @; z
上面的命令会本地生成私钥和签发所需的文件,并向服务器请求签发。服务器会随机生成一段文本,并让你设置到你的 DNS 服务器上. m. N& o% s1 M! ^
- J; P6 y" A: \& u3 X& b
certbot 请求证书8 V- h: N- E8 }2 i
下面,打开阿里云的云解析控制台,在域名里添加一条 TXT 记录,子域名为 _acme-challenge,值为上面的验证文本:5 W0 ~& h6 l5 w6 T

9 _/ y3 @& u, m0 `$ h使用其它 DNS 提供商的同学可以用相应的方法进行设置。. x' T3 J2 a  w" f' X3 a! @3 p
设置成功后,可以在另一个终端通过命令行验证一下:
, B9 Q0 n- e7 ^2 f, C0 p验证通过后,按回车继续证书生成过程。生成好的证书会放在/etc/letsencrypt/ 下面。建议将证书拷贝到其它目录以供使用和备份:7 b6 k0 \& E8 s
我们在 nginx 默认服务器里改一下配置,试试能不能通过浏览器验证:
: @. q* a4 N- p" y! J% f; W7 i/ i1 n9 n' l+ L% L' D
nginx 配置证书
0 C) m' D, U  r' h配置成功后,运行 systemctl reload nginx.service,如果启动成功,可以访问下 https://你的域名:8443试下是否配置成功了,证书是否有效:- H% n6 Q, {# B& W) P* V

# o( `* N! k$ y7 \1 ^证书有效期只有3个月,到期需要重新更新证书; c0 g% u( G4 T+ z: A
安装数据库+ C( v; Z. v" ~+ H9 ~* c2 I$ n5 z
nextcloud 使用 mysql 存储文件索引等信息,当然在 debian 里面我们需要安装mariadb。运行以下命令安装 mariadb:& e* Q; {6 H5 j/ K( U; m
安装数据库服务+ Q3 K9 c, r3 J9 W2 O+ e% O. a
apt-get install -y mariadb-server
, O5 N& ~+ ]& S; \# R# `. z优化数据库安全性
$ i! [# e  ]" s: z& C4 d6 Mmysql_secure_installation
; ~! ~" K. r- n; b, \3 m: h8 |创建数据库! F6 u+ N& f: {2 R
CREATE DATABASE nextcloud;
( u( s: t; t1 E1 h% v添加数据库用户
7 S' b; j# T2 C" t( ICREATE USER nextcloud@localhost identified by &39;;
: k+ ^3 a( C4 V% s. Z设置数据库用户权限
1 b4 c  B5 Z1 }, W9 ^9 Z! [GRANT ALL PRIVILEGES on nextcloud.* to nextcloud@localhost;( R, y1 S0 b/ t4 y0 w2 l. F5 ?
FLUSH privileges;
2 B1 z; F) ]% W6 {" ]& d7 M2 o安装 php
4 m- T6 w0 h5 O6 S. L! l废话不多说:8 E. M$ P5 ^- C# @! S' T
当前的 php 版本是 7.3,所以生成的配置文件在 /etc/php/7.3/ 下面。我们需要修改以下配置:
) f0 ?: C: @. D/ @# y6 m+ _/etc/php/7.3/fpm/pool.d/nextcloud.conf:% v/ b- P# ~6 _% \9 S# a
然后,修改 nginx 配置文件,让你的域名指向 php:0 [" Y( n7 q4 F! o/ m1 `
/etc/nginx/sites-available/nextcloud:
9 Y: j# J# b% B! H8 F  d然后,分别重启 php-fpm 和 nginx:4 g  T5 Q) u) a. Y. y
安装 nextcloud. C+ M& n- ^* S4 L; l0 L
终于到了这一步!由于 nextcloud 网上安装教程非常多,我们这里就不浪费大家流量贴一堆图片了,简述下安装过程。由于软件版本随时可能升级,请大家自行下载最新版
2 F: a( Y/ [+ y. V( z) m下载安装脚本
+ H1 Y, @+ @6 |- K# m! fcd /var/www/# K# N/ H- N' G# X! E
wgethttps://download.nextcloud.com/server/releases/nextcloud-17.0.1.zip8 H  \& B# i" x) a6 s
unzip nextcloud-17.0.1.zip
4 m3 b; O4 B" B; Z; fchown -Rwww-data:www-data nextcloud
' i% p9 p2 C7 {6 ?/ N& @3 r& b6 |访问你的域名完成安装
5 X8 I) X7 u+ |! D: {' E. V修改 /var/www/nextcloud/config/config.php 完成优化) @  |: f& k* f, V( I  r5 o
修改dbhost 为&39; 通过本地 socket 连接数据库) A' k) v" Z+ u( s% i* O* V
修改 loglevel 为 4 减少日志内容5 p- ?6 r( X3 k1 J; E/ S3 b7 l+ H
添加字段 &39; => &39;
7 r  H! v7 C  y添加字段 &39; => array(&39;,&39;,&39;,&39;,&39;,&39;,&39;,&39;,&39;,),7 e& Q* ?- z2 N7 `; {
检查安装- y" j- v6 @& S; S: i( L* K
完成配置后,可以打开 nextcloud 的设置->概览页面,看看有没有一些没配好的或可以优化的选项。具体的优化选项可以根据自己的需求进行配置4 y  q- I  ~! l& D& z
四、安装插件
8 H9 y4 \7 W9 D& gnextcloud 配置好后,一些好用的插件就可以安排上了。这里分享一个插件安装的技巧:如果在设置界面安装超时,可以手动下载后,解压到 nextcloud 的目录中。以 music 为例:; q2 i9 ?8 |& S; ]! [
Music" _6 H* g" A% \" j, }% w* E4 K; i
在线听音乐必备,可以对音乐文件进行索引
# n5 x( ^. D# x5 _' @4 v" t- p" D1 ?! O. B/ w
Camera RAW Previews
2 D( ?8 M8 ~; B1 f3 b单反/微单用户必备,可以在线浏览 ARW、RAF 等文件格式。注意服务器必须安装 ufraw-batch 软件包才能正常工作。
" O4 ~* Y; ~, B, b, g% BPreview Generator
! B% s: h- {, n8 u离线生成预览工具,导入一大票文件后,通过这个插件可以主动生成缩略图,提升访问体验。具体使用方式是:4 W& S* k: }9 h0 B+ E' E7 W
可以手动指定要更新的路径以加快扫描,如 --path kyrios/files/Photos$ k  H! s) F; O0 I( D' ~$ e
OwnBackup* }) g- ]/ a6 F% M  V+ R+ l% y; Q+ i# Z
将 nextcloud 的数据库表备份到文件1 T% D. u* m. j; b; X6 b8 `
五、最后...再来一点人生经验6 U$ p0 B' \# X9 e0 h
写到这里,基本上就可以用了,下面再分享一些最佳实践:
  ~0 J$ d2 Q" \& c2 a批量导入文件+ V$ s% n! h: _3 r( G+ X! B
如果图片或其它文件太多,一张张上传效率太低,我们可以通过文件操作批量导入进去:" |1 J3 M" p# K- D1 L5 J& Q0 c
将文件拷贝到 nextcloud 的 files 中,如:
; K" L8 h4 w$ Q+ pcp -R /media/usb/xxxx /media/storage/nextcloud/data/kyrios/files/Photos/
* K9 T" m! k! E5 d修改权限,将刚拷入的文件所有权改为www-data:) ^' A: V. y. Q$ U: H
chown -Rwww-data:www-data/media/storage/nextcloud/data/kyrios/files/Photos/6 U3 y7 k5 ^. G$ t+ D
修改文件修改时间
$ K" j9 ~6 K9 {5 inextcloud 通过文件的修改时间来对文件进行索引,不会读取图片、视频的 EXIF 信息,我们可以用 exiftool 来将文件的修改时间改为 EXIF 中的创建时间:
8 }2 T! d6 r* v* vexiftool "-FileModifyDate
% B2 d4 s6 C9 O5 ~更新 nextcloud 索引" Q& f; c  `: p! }7 b
cd /var/www/nextcloud/; sudo -uwww-data ./occ files:scan kyrios
" L# e9 F" ~' V这里 files:scan 命令可以指定用户或者路径,如 kyrios/files/Photos.
  o% q! Q0 Q% X3 w) i重新生成缩略图9 b; w) b- H" @/ _/ N# b& _( m5 l
如上,不再赘述
回复

使用道具 举报

 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


0关注

0粉丝

1帖子

排行榜
作者专栏

关注微信公众号第一时间推送精彩

官方微信

手机访问

Hao4K影音

专注4k家庭影音,提供家庭影音社区,家庭影音器材库,影音问答平台,影音商城,服务千万家庭影音用户。

本站内容部分由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理!

举报反馈邮箱:admin@hao4k.cn

Copyright   ©2016-2019  Hao4K影音Powered by©Hao4K 粤公网安备 44030302001429号   粤ICP备18155646号-1 |网站地图