OMV结合NextCloud实现私人网盘
OpenMediaVault (OMV) 是一款基于 Debian 的开源网络附加存储(NAS)解决方案,它通过易于使用的界面提供数据存储、备份和共享服务。结合 Nextcloud,用户可以在 OMV 平台上搭建一个功能强大的私人网盘,实现文件同步、分享和协作。这种组合不仅增强了数据的可访问性和安全性,也为个人和小型企业提供了一个成本效益高、隐私保护好的云存储解决方案。通过 Docker 容器或直接安装,OMV 与 Nextcloud 的整合可以轻松完成,满足现代数字生活的存储需求。
1.1 安装脚本
1 | sudo wget -O - https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install | sudo bash |
该脚本会安装 openmediavault、omv-extras、flashmemory,如果已经安装好了的,就自动跳过。
1.1.1 flashmemory
在 OMV 系统中,flashmemory
插件的主要作用是减少对系统运行的存储介质(尤其是基于闪存的存储介质,如 SSD 或 USB 闪存驱动器)的写入操作。这个插件非常重要,特别是当 OMV 安装在闪存媒介上时,比如 USB 棒或 SD 卡。
它的作用:
- 减少写入操作:通过减少对闪存的写入次数,可以显著延长闪存设备的使用寿命。闪存设备(如 SSD、USB 闪存盘和 SD 卡)有有限的写入次数,过多的写入操作会减少它们的寿命。
- 改善系统性能:通过减少不必要的写入操作,可以提高系统的响应速度和整体性能。
- 使用 tmpfs:插件工作原理是将一些经常被写入的目录挂载到内存中(使用 tmpfs),这样这些目录下的数据写入操作实际上是在内存中进行,而不是在实际的物理存储上。系统重启时,这些写入的数据会丢失,因为它们只是临时存储在内存中。
总结:
- 如果 OMV 安装在硬盘驱动器(HDD)上,并且不担心写入次数,不一定要安装
flashmemory
插件 - 对于安装在闪存媒介(如 SSD、USB 闪存盘和 SD 卡)的 OMV 系统,强烈建议安装
flashmemory
插件。这样可以保护存储介质,延长其使用寿命,并提高系统的整体稳定性和性能。
1.2 创建共享文件夹用于存放 NextCloud 的 Data
创建共享文件夹,记录绝对路径:/srv/dev-disk-by-uuid-3f0211f1-75af-4278-9d80-21f507bb8650/NextCloudData
重要!!!修改共享文件夹的 ACL 权限,将用户组修改为 www-data,否则初始化 NextCloud 时,会出现权限不足而失败。
1.3 借助 Compose 整体启用安装 MySQL 和 NextCloud
1 | # 该文件最初是为了给 OMV NAS 集成 NextCloud 而写 |
1.3.1 MySQL 与 NextCloud 配置参数说明
仅列举必要且常见的,更多配置说明见官方说明。
NextCloud:https://hub.docker.com/_/nextcloud
Nextcloud 安装以及数据库之外的所有数据(文件上载等)都存储在容器地址/var/www/html 中,要想持久化你的数据,不通过 nextCloud 也可以查看的话,应当映射到宿主机的某个位置上。
nextcloud 的一些卷地址:
- /var/www/html 更新所需的主文件夹
- /var/www/html/custom_apps 你自己手动安装的应用位置
- /var/www/html/config 本地配置文件位置
- /var/www/html/data 你的网盘数据存放的位置
- /var/www/html/themes/ 主题文件位置
MySQL:https://hub.docker.com/_/mysql
1.4 最后:启动 NextCloud
- 直接用 DockerCompose 启用容器服务
- 启动后,Web 访问 ip:8080,即可访问 NextCloud
- 创建管理用户
- 安装额外的应用
最后的效果:Amazing!!!!
1.5 安全配置
1.5.1 配置 SSL 证书
由于使用的是 nextcloud,而不是 fpm,因此 Web 代理采用了内置的 Apache2
安装 vim:
apt update && apt install vim
在 apache 安装目录下新建一个文件夹 cert:
/etc/apache2/certs
上传 Apache 类型的证书文件到 certs 目录下
启用 SSL 模块和默认的 SSL 站点配置
1
2a2enmod ssl
a2ensite default-ssl修改 default-ssl.conf 配置文件:
vim /etc/apache2/sites-available/default-ssl.conf
添加或修改如下语句(修改前记得备份)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15# 邮箱
ServerAdmin xxxxx@163.com
# 域名
ServerName cloud.nextcloud.com
# 头部安全配置
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
</IfModule>
# SSL 证书配置
SSLEngine on
SSLCertificateFile /etc/apache2/certs/public.crt
SSLCertificateKeyFile /etc/apache2/certs/web.key
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLProtocol all -SSLv2 -SSLv3
:指定 Apache 服务器支持的 SSL 和 TLS 协议版本。启用了所有可用的协议(all
),但禁用了旧版的SSLv2
和SSLv3
。这是因为SSLv2
和SSLv3
都存在严重的安全漏洞,如 POODLE 攻击,因此在现代 Web 服务器配置中应当被禁用以保证安全。
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
:定义 Apache 服务器在 SSL/TLS 握手过程中可以使用的加密套件(cipher suites)
HIGH
:启用被认为是高强度的加密套件。!RC4
:禁用 RC4 加密算法。RC4 已被发现存在多种安全问题。!MD5
:禁用 MD5 散列函数。MD5 因其安全性不足而不推荐使用。!aNULL
:禁用允许匿名身份验证的加密套件。!eNULL
:禁用不提供加密的套件(即明文通信)。!NULL
:确保所有加密套件都必须提供消息认证。!DH
、!EDH
:禁用不安全的 Diffie-Hellman 密钥交换方法。!EXP
:禁用出口级(被认为弱加密)的加密套件。+MEDIUM
:启用中等强度的加密套件。
有些还需要配置了:
SSLCertificateChainFile /etc/apache2/cert/chain.crt
指定包含证书链的文件的路径。证书链文件(有时称为 CA 证书束)包含了从服务器证书到根 CA 证书(包括中间 CA 证书)的完整路径。这是必要的,因为客户端(如 Web 浏览器)需要这个证书链来验证服务器证书的真实性。Apache 2.4.8 及更高版本中推荐使用SSLCertificateFile
指令来代替SSLCertificateChainFile
,因为SSLCertificateFile
现在可以同时处理服务器证书和链证书。
- 修改用
apache2ctl configtest
检查一下配置是否有异常。 - 重启 apache 服务:
/etc/init.d/apache2 restart
orservice apache2 restart
使用域名访问 nextcloud 即可。如果未正确识别,可清除浏览记录,关闭浏览器再重新打开。
1.5.2 将 HTTP 的访问也重定向到 HTTPS
Apache2 可以同时启用多个虚拟主机配置文件,可通过 apachectl -S
进行查看,一般为:
上面我们已经配置了监听 443 端口的虚拟主机,为了更加安全,我们需要进一步修改监听 80 端口的虚拟主机,使其访问重定向到 443 端口
1 | <VirtualHost *:80> |
最后重启 apache 服务:/etc/init.d/apache2 restart
or service apache2 restart