CentOS Docker环境部署NextCloud

CentOS Docker环境部署云盘NextCloud

开源云盘经测试NextCloud、ownCloud、Seafile、Cloudreve、dzzoffice、kiftd、Onionshare,NextCloud功能性、安全性、社区活跃度条件均具备优势。
服务端支持Linux,客户端支持Windows、MacOS、Linux、Android、IOS、browser;
用户体验友好,用户界面美观,文档支持包括管理手册、用户手册、开发者手册;
安全性维护CVE database、注重数据安全和隐私保护、支持数据存储完整性校验、数据传输保密性、数据存储保密性、用户标识和身份鉴别、双因素鉴别、单点认证、第三方认证、用户共享、群组共享、公开共享口令、访问控制、恢复已删除的文件、找回文件历史版本、安全策略配置、文件监控和日志、安全日志审计、病毒扫描等功能。

CentOS部署Docker环境

详见CentOS部署Docker环境

试用部署NextCloud

操作系统版本:CentOS Linux release 7.9.2009 (Core)
Docker版本:Docker version 20.10.12, build e91ed57
NextCloud版本:24.0.1
PHP版本:8.0.20
虚拟CPU:4 虚拟内存:5G 虚拟硬盘:50G

搜索nextcloud容器镜像

sudo docker search nextcloud

拉取nextcloud容器镜像至本地

sudo docker pull nextcloud

创建并启动nextcloud容器,使用–name参数命名为nextcloud,使用-p参数将nextcloud容器80端口映射至宿主机8088端口

sudo docker run -it -d -p8088:80 --name nextcloud nextcloud

默认使用HTTP的方式访问nextcloud,IP地址为宿主机IP地址,端口为宿主机8088端口

http://localhost:8088

正常访问nextcloud管理界面后,在该位置创建管理员账号,自定义用户名、口令点击安装并遵循安装指引完成安装即可
在这里插入图片描述

正式部署NextCloud

操作系统版本:CentOS Linux release 7.9.2009 (Core)
Docker版本:Docker version 20.10.12, build e91ed57
NextCloud版本:24.0.1
MySQL/MariaDB版本:10.8.3
PHP版本:8.0.20
虚拟CPU:4 虚拟内存:5G 虚拟硬盘:50G

安装MySQL/MariaDB

搜索mariadb数据库容器镜像

sudo docker search mariadb

拉取mariadb数据库容器镜像至本地

sudo docker pull mariadb

创建并启动mariadb数据库容器,正式环境需要注意自定义用户名不能够使用常见的默认用户名、口令8位以上数字、字母、特殊字符组合,使用–name参数命名为mariadb,使用–env配置数据库用户名MARIADB_USER、数据库口令MARIADB_PASSWORD、数据库root用户口令MARIADB_ROOT_PASSWORD、数据库MARIADB_DATABASE,使用–restart=always配置Docker启动服务时mariadb容器随之启动

sudo docker run -it -d --name mariadb --env MARIADB_USER=nextcloud --env MARIADB_PASSWORD=N2yg_A9SQ --env MARIADB_ROOT_PASSWORD=D57g_5QZd --env MARIADB_DATABASE=nextcloud --restart=always mariadb

安装onlyoffice

搜索onlyoffice容器镜像

sudo docker search onlyoffice

拉取onlyoffice容器镜像至本地

sudo docker pull onlyoffice/documentserver

创建并启动onlyoffice容器,使用-p参数将onlyoffice容器80端口映射至宿主机8089端口,使用-p参数将onlylffice容器443端口映射至宿主机8443端口,使用–restart=always配置Docker启动服务时onlyoffice容器随之启动

sudo docker run -it -d -p8443:443 -p8089:80 --name onlyoffice --restart=always onlyoffice/documentserver

安装NextCloud

搜索nextcloud容器镜像

sudo docker search nextcloud

拉取nextcloud容器镜像至本地

sudo docker pull nextcloud

创建并启动nextcloud容器,使用–name参数命名为nextcloud,使用-p参数将nextcloud容器80端口映射至宿主机80端口,使用-p参数将nextcloud容器443端口映射至宿主机443端口,使用–link参数使正在创建的nextcloud容器网络连接至mariadb数据库容器,onlyoffice因配置时不支持使用该方式直接访问,故仍然使用端口访问的方式配置,使用–restart=always配置Docker启动服务时nextcloud容器随之启动

sudo docker run -it -d -p443:443 -p8088:80 --name nextcloud --link mariadb --restart=always nextcloud

初始化NextCloud

默认使用HTTP的方式访问NextCloud,IP地址为宿主机IP地址,端口为宿主机8088端口

http://localhost:8088

正常访问nextcloud管理界面后,在该位置创建管理员账号,自定义用户名、口令,选择存储与数据库使用MySQL/MariaDB后点击安装并遵循安装指引完成安装
在这里插入图片描述初始化时创建管理员用户,该位置用户名、口令为手动配置

http://localhost:8088
username:management
password:NAyQ_29Sg

配置NextCloud连接的数据库,配置数据库连接用户名、口令,该位置host因使用nextcloud容器已使用–link参数连接mariadb,可填写mariadb或填写IP地址

MySQL/MariaDB
username:nextcloud
password:N2yg_A9SQ
database:nextcloud
host:mariadb

在这里插入图片描述点击安装-安装推荐的应用,或者点击取消可以取消安装应用,安装完成后亦可以自定义增删应用
在这里插入图片描述安装完成后默认进入仪表盘,使用说明参见https://docs.nextcloud.com/server/latest/user_manual/
在这里插入图片描述

启用onlyoffice

登录管理员用户-用户(右上角头像)-应用-搜索-ONLYOFFICE-下载并启用
在这里插入图片描述将会curl https://github.com/ONLYOFFICE/onlyoffice-nextcloud/releases/download/v7.5.2/onlyoffice.tar.gz,github无法访问时下载将出错,需要手动下载onlyoffice插件且有坑,挑个好时机访问github下载

登录管理员用户-用户(右上角头像)-设置-管理-ONLYOFFICE

ONLYOFFICE Docs地址http://onlyoffice_ip_address:8089/

此处的onlyoffice_ip_address可以是onlyoffice的IP地址或域名

根据使用情况勾选默认关联的文件格式并保存
在这里插入图片描述
因同时存在多种文档预览编辑器时,onlyoffice需要右键手动选择打开,且Nextcloud Office默认开启存在问题,故禁用默认的Nextcloud Office以保持onlyoffice单击开启

登录管理员用户-用户(右上角头像)-应用-搜索-Nextcloud Office-禁用

安全性配置

启用安全策略

OnlyOffice安装时默认启用Password policy,可直接配置

登录管理员用户-用户(右上角头像)-设置-管理-安全-口令规则

配置内容
10最小口令长度
5用户口令记录
90用户口令过期前的天数
5用户账户被锁定前的登录尝试次数(0表示无限制)
开启禁止普通口令
开启强制要求大写和小写字符
开启强制要求数字字符
开启强制要求特殊字符
开启检查口令是否在haveibeenpwded.com的泄露口令列表中

在这里插入图片描述

启用服务器端加密

登录管理员用户-用户(右上角头像)-应用-搜索-Default encryption module-启用

在这里插入图片描述登录管理员用户-用户(右上角头像)-设置-管理-安全-服务器端加密

在这里插入图片描述创建文件测试存储加密效果,在NextCloud容器可以看到目录和文件名正常显示,文件内容密文存储,要注意的是密钥的存储情况以及随机数的生成情况仍有一定限制

root@0ef41a5f58e3:/var/www/html/data/management/files# ls
 Documents  'Nextcloud Manual.pdf'  'Nextcloud intro.mp4'   Nextcloud.png   Photos   Readme.md  'Reasons to use Nextcloud.pdf'   encryption_file_test.md  ''$'\346\250\241\346\235\277'
root@0ef41a5f58e3:/var/www/html/data/management/files# more encryption_file_test.md
HBEGIN:oc_encryption_module:OC_DEFAULT_MODULE:cipher:AES-256-CTR:signed:true:HEND--------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CzPZ7lwwcevMpkfEHSKTW9YuCluYEhX8/9rG7Es6FiRjOwnbhXjBUUt2CNcokEYzQ+8UJVxDwyz7QyV13QCmp7QYAWLYJ8aa8NTh1+/hsJjU4vHFwbIiLKess4b5W8nK9LudQRnxJ1qA1LZn24qDyecoCSoeYoUu7ndaCK7a
is8FgCelEW5L25vfC7D2PvMbtf+mjXRVxw7Cuw1QDABmNxTamR0AhGXDI3ua1lunLcfE5LdRZoY/YXehHT46npkazV205BWUFfXMyLTv2UQiElc/F/1kvMv6MpHbrDFancUGuB6Bc/l4JH+23j0nFt+oqDdCr71Ecka0oXTFL2D/z2Hk1rncWQTT8PZr/oQaMwhPzkTxTUKhLxUdc
qfo3nKHk2Up2K9JiV9ooMsOaGPMRNILz5divJtgX7VYeF8azZSeFLyLZNo=00iv00���    �?)��F>
                                                                               Fm00sig00708f604dbb2e5174345a0312db8923df94789feacb999258033a7f62504db975xxx

删除不必要的应用

登录管理员用户-用户(右上角头像)-应用,根据需要启用和禁用的情况自定义选择,这里因只需要文件存储和共享的应用,故选择禁用Activity、Calendar、Contacts、Dashboard、Photos、Mail等
在这里插入图片描述

双因素鉴别

登录管理员用户-用户(右上角头像)-应用-搜索-TOTP-下载并启用
在这里插入图片描述
登录管理员用户-用户(右上角头像)-设置-管理-安全-两步验证

当用户通过口令鉴别后,将跳转至设置TOTP令牌鉴别

在这里插入图片描述
在这里插入图片描述
手机在应用商店内搜索OTP、TOTP等关键字,不限定App测试可用即可,根据界面提示输入动态令牌,一次绑定、二次登录

如android
在这里插入图片描述
IOS应可直接搜索TOTP下载

使用企业自建OTP,则搜索OTP,下载并启用OpenOTP Two Factor Authentication在这里插入图片描述登录管理员用户-用户(右上角头像)-设置-管理-OpenOTP身份验证,根据企业情况配置
在这里插入图片描述

病毒扫描

使用Antivirus for files进行病毒扫描,因为Antivirus for files需要依赖ClamAV,首先安装ClamAV

sudo docker exec -it nextcloud /bin/bash
apt-get update
apt-get -y install clamav clamav-daemon
/usr/bin/freshclam

登录管理员用户-用户(右上角头像)-应用-搜索-Antivirus for files-下载并启用

在这里插入图片描述登录管理员用户-用户(右上角头像)-设置-管理-安全-病毒克星

在这里插入图片描述
ClamAV以三种模式之一运行:

守护进程(套接字):ClamAV与Nextcloud在同一台服务器上运行。ClamAV守护进程,clamd,在后台运行。没有活动时clamd将最小的负载放在您的系统上。如果您的用户上传大量文件你会看到高CPU使用率。

守护进程:ClamAV在不同的服务器上运行。这是一个不错的选择适用于具有大量文件上传的Nextcloud服务器。

可执行文件:ClamAV与Nextcloud在同一台服务器上运行,并且clamscan命令在每次文件上传时启动然后停止。clamscan对于按需使用来说很慢并且并不总是可靠的;这是最好使用其中一种守护程序模式。

因为该位置ClamAV与Nextcloud在同一台服务器上运行,故这里采用ClamAV可执行模式

配置默认共享权限

登录管理员用户-用户(右上角头像)-设置-管理-共享-默认共享权限-取消勾选默认权限,这样对于文件的共享仅默认保留只读,更加妥当
在这里插入图片描述

安全审计策略

OnlyOffice安装时默认启用Log Reader,会将错误日志直接回显至OnlyOffice界面

MySQL/MariaDB安全加固

登录mariadb数据库容器中的mariadb数据库,数据库不采用远程登录且未配置映射至宿主机端口,采用本地登录,登录默认最高权限root用户,口令为创建mariadb容器时设置的root口令

sudo docker exec -it mariadb /bin/bash
mysql -uroot -p
D57g_5QZd

mariadb安装口令复杂度模块,安装时默认会配置口令复杂度

INSTALL SONAME 'simple_password_check';

mariadb设置登录失败处理次数为5次

set global max_password_errors=5;

mariadb查看口令复杂度策略和登录失败处理次数

show variables like '%password%';
MariaDB [(none)]> show variables like '%password%';
+-----------------------------------------+-------+
| Variable_name                           | Value |
+-----------------------------------------+-------+
| default_password_lifetime               | 0     |
| disconnect_on_expired_password          | OFF   |
| max_password_errors                     | 5     |
| old_passwords                           | OFF   |
| report_password                         |       |
| simple_password_check_digits            | 1     |
| simple_password_check_letters_same_case | 1     |
| simple_password_check_minimal_length    | 8     |
| simple_password_check_other_characters  | 1     |
| strict_password_validation              | ON    |
+-----------------------------------------+-------+
10 rows in set (0.001 sec)

mariadb安装audit模块

INSTALL PLUGIN server_audit SONAME 'server_audit.so';

mariadb开启审计策略

set global server_audit_logging=ON;

mariadb查看审计策略

show variables like '%audit%';
MariaDB [(none)]> show variables like '%audit%';
+-------------------------------+-----------------------+
| Variable_name                 | Value                 |
+-------------------------------+-----------------------+
| server_audit_events           |                       |
| server_audit_excl_users       |                       |
| server_audit_file_path        | server_audit.log      |
| server_audit_file_rotate_now  | OFF                   |
| server_audit_file_rotate_size | 1000000               |
| server_audit_file_rotations   | 9                     |
| server_audit_incl_users       |                       |
| server_audit_logging          | ON                    |
| server_audit_mode             | 0                     |
| server_audit_output_type      | file                  |
| server_audit_query_log_limit  | 1024                  |
| server_audit_syslog_facility  | LOG_USER              |
| server_audit_syslog_ident     | mysql-server_auditing |
| server_audit_syslog_info      |                       |
| server_audit_syslog_priority  | LOG_INFO              |
+-------------------------------+-----------------------+
15 rows in set (0.001 sec)

因数据库本地登录故不配置SSL

HTTPS

因正式环境采用HTTPS的方式访问,故创建nextcloud自签名证书

mkdir -p /app/apache2/certs
cd /app/apache2/certs
openssl genrsa -des3 -out server.key 2048
openssl rsa -in server.key -out server.key
openssl req -new -x509 -key server.key -out ca.crt -days 3650
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt
cat server.key server.crt > server.pem

将nextcloud证书从宿主机复制到nextcloud容器内

sudo docker exec -it nextcloud mkdir /etc/apache2/certs
sudo docker cp /app/apache2/certs nextcloud:/etc/apache2/

启用nextcloud ssl

sudo docker exec -it nextcloud /bin/bash
a2enmod ssl
a2ensite default-ssl

配置apache2 ssl

cat > /etc/apache2/sites-available/default-ssl.conf
<IfModule mod_ssl.c>
		<VirtualHost *:443>
		    DocumentRoot "/var/www/html" 
		    ServerName 172.17.0.4
		    SSLEngine on
		    SSLCertificateFile /etc/apache2/certs/server.crt
		    SSLCertificateKeyFile /etc/apache2/certs/server.key
		    SSLCACertificateFile /etc/apache2/certs/ca.crt
		</VirtualHost>
</IfModule>

重载apache2服务

apache2ctl configtest
service apache2 reload

在访问时会显示需要修改/var/www/html/config/config.php的访问配置

sudo docker exec -it nextcloud /bin/bash
sed -i 's/0 => 'localhost:8088',/0 => 'localhost:443',/g' /var/www/html/config/config.php
https://localhost

因正式环境采用HTTPS的方式访问,onlyoffice也须同步保持HTTPS连接以同步使用,故创建onlyoffice自签名证书,并在创建onlyoffice容器时明确证书路径以使其采用HTTPS

在宿主机创建onlyoffice自签名证书

mkdir -p /app/onlyoffice/DocumentServer/data/certs
cd /app/onlyoffice/DocumentServer/data/certs
openssl genrsa -out onlyoffice.key 2048
openssl req -new -key onlyoffice.key -out onlyoffice.csr
openssl x509 -req -days 3650 -in onlyoffice.csr -signkey onlyoffice.key -out onlyoffice.crt
openssl dhparam -out dhparam.pem 2048
chmod 400 /app/onlyoffice/DocumentServer/data/certs/onlyoffice.key

创建并启动onlyoffice容器,使用–name参数命名为onlyoffice,使用-v参数映射宿主机、onlyoffice容器路径,映射的路径中有我们创建的onlyoffice自签名证书,因onlyoffice内置不同的初始化方式,使用HTTP、HTTPS的初始化方式不同,HTTPS须在宿主机创建onlyoffice自签名证书后方可初始化,使用-p参数将onlyoffice容器80端口映射至宿主机8088端口,使用-p参数将mariadb容器443端口映射至宿主机8443端口,使用–restart=always配置Docker启动服务时onlyoffice容器随之启动

删除onlyoffice容器后重新创建

sudo docker run -it -d -p8443:443 -p8089:80 -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data --name onlyoffice --restart=always onlyoffice/documentserver

使用已申请的证书可直接替换证书文件并放置到相应的位置即可

皮肤

登录管理员用户-用户(右上角头像)-设置-管理-主题

内置网站链接直接跳转至NextCloud官网,将其重置为内置域名或IP使其不关联,同时修改皮肤颜色、登录LOGO均可,看起来就有企业范了
在这里插入图片描述

参考链接:
Docker仓库中查看NextCloud容器——https://hub.docker.com/_/nextcloud
Docker仓库中查看MariaDB容器——https://hub.docker.com/_/mariadb
Docker仓库中查看OnlyOffice容器——https://hub.docker.com/r/onlyoffice/documentserver
NextCloud服务器端加密——https://docs.nextcloud.com/server/16/admin_manual/configuration_files/encryption_configuration.html
NextCloud备份——https://docs.nextcloud.com/server/latest/admin_manual/maintenance/backup.html
数据库SSL配置——https://docs.nextcloud.com/server/latest/admin_manual/configuration_database/linux_database_configuration.html?highlight=ssl
NextCloud HTTPS——https://docs.nextcloud.com/server/latest/admin_manual/installation/harden_server.html?highlight=ssl#use-https

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值