【惊喜福利】Docker容器化部署nextcloud网盘,享受高速稳定的文件共享体验!
Docker搭建nextcloud网盘
NextCloud是一款开源网络硬盘系统,它是一个私有、安全且功能完整的文件同步与共享解决方案,可以搭建一套属于自己或团队的云同步网盘。NextCloud的客户端覆盖了各种平台,包括Windows、Mac、Android、iOS、Linux等,也提供了网页端以及WebDAV接口,支持文件共享、权限控制、在线编辑、文件版本控制等功能,同时还有许多插件可以扩展其功能。
这次规划是全部组件使用docker容器进行部署: docker部署见之前的文章:Docker安装
相关组件:
-
nextcloud:v25.0.3(主程序容器) -
mysql:latest(数据库) -
redis:v6.2(缓存) -
onlyoffice:latest(在线office文档编辑和查看) -
clamav:(文件杀毒-在nextcloud容器内安装) -
cron同步任务(容器内部署)
最终实现效果:使用mysql作为数据存储,通过redis缓存数据提高访问速度,能够实现文档的在线查看与编辑,附带文件定时杀毒功能,进行安全防护,所有容器进行端口映射到宿主机。
mysql数据库容器部署
# 创建容器,挂载本地/keli/data/目录,设置root密码
docker run -d --name mysql -v /keli/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=12345678 mysql
# 进入容器创建数据库和用户并分配权限
docker exec -it mysql /bin/bash
# 登录数据库
mysql -uroot -p
# 创建数据库
create database nextcloud \
default character set utf8 \
collate utf8_general_ci;
# 创建用户、分配权限
CREATE USER nextcloud@'%' IDENTIFIED BY 'nextcloud';
GRANT ALL ON nextcloud.* TO nextcloud@'%';
flush privileges;
redis容器
1、拉取镜像
docker pull redis
2、下载配置文件,因为redis需要配置文件进行设置,从网上下载一份挂载到容器内目录。
wget https://raw.githubusercontent.com/redis/redis/6.2/redis.conf
# 修改配置文件
# bind 127.0.0.1注释掉外部机器才能连接
# protected-mode no 设置为no关闭保护模式
3、创建并运行redis容器
# requirepass redis 连接密码
# daemonize : 是否后台运行,将其设为no,表示前台运行。
# appendonly : 是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。
docker run -p 6379:6379 \
--name redis \
-v /keli/redis/redis.conf:/etc/redis/redis.conf \
-v /keli/redis/data:/data \
redis redis-server /etc/redis/redis.conf --appendonly yes \
--privileged=true
参考配置:https://blog.csdn.net/sh2018/article/details/128044669
onlyoffice容器部署
OnlyOffice是一个在线办公套件,旨在提供一个安全、高效的协作环境。它支持多种文档格式的编辑和协作处理,包括Word、Excel、PowerPoint等,可以在浏览器、电脑、手机或平板电脑上使用。OnlyOffice支持多种云服务集成,如Box、Moodle、Nextcloud、Odoo、Wordpress等,方便用户在不同平台和应用程序之间进行切换。
onlyoffice部署完成之后需要再nextcloud上使用插件连接。
23版本的nextcloud需要通过官网应用商店下载onlyoffice插件上传到/var/www/html/apps/下,一般将目录映射到宿主机,因此传输到宿主机目录即可。
官网链接:https://apps.nextcloud.com/apps/onlyoffice
docker run -i -t -d -p 8888:80 --restart=always --name onlyoffice \
-v /keli/onlyoffice/log:/var/log/onlyoffice \
-v /keli/onlyoffice/data:/var/www/onlyoffice/Data \
-v /keli/onlyoffice/lib:/var/lib/onlyoffice \
-v /keli/onlyoffice/db:/var/lib/postgresql onlyoffice/documentserver
如果无法连接出现token错误,需要到容器内找到对应秘钥 位置:/etc/onlyoffice/documentserver/local.json onlyoccice链接:https://blog.csdn.net/weixin_45261899/article/details/128118162
nextcloud容器
# 拉取镜像
docker pull nextcloud
# 创建运行容器
docker run -d --name nextcloud -h nextcloud --restart=always \
--link mysql:mysql \
--link redis:redis \
--link onlyoffice:onlyoffice \
-v /mnt/nextcloud/html/:/var/www/html/ \
-p 8520:80 nextcloud:25.0.3
# 使用link链接组件容器,映射nextcloud主目录到宿主机的/mnt/nextcloud/html,宿主机端口可以自行设置,容器内默认是80端口。
Clamav安全杀毒
ClamAV的核心是一个以共享库形式提供的反病毒引擎,它可检测数百万种病毒、蠕虫、特洛伊木马和其他恶意软件,包括宏病毒和移动恶意软件。如果是在docker部署,需要在容器内使用apt安装,记得先更新apt源。安装完成后也是使用nextcloud插件形式连接ClamAV。
# 先安装
apt-get install clamav clamav-daemon
# 手动更新病毒库
/usr/bin/freshclam
# 下载插件应用Antivirus for files
cron后台任务配置
nextcloud运行后需要执行一些后台cron任务,但是好像自带会有点问题,建议使用cron部署,在容器内部署。
#首先安装cron服务
apt-get update && apt-get install cron
# 安装完了立马把原来的cron任务停了, 因为貌似是不好用的。
crontab -u www-data -e
# 将里面的任务删除。
# 接下来,将任务运行在当前docker的root用户下面:
crontab -e
# 其中的任务表, 这里假设你把nextcloud安装到/var/www/html下边了:
*/5 * * * * sudo -u www-data php -f /var/www/html/cron.php
# 分配权限给www-data
chmod 755 cron.php
# 有可能需要将www-data的用户shell修改才能执行定时任务
usermod -s /bin/bash www-data
# 查看定时任务
crontab -l
标准示例总结
# mysql数据库
docker run -d --restart=always --name mysql -v /mnt/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=KELI81958899 -h mysql mysql
# 登录容器
docker exec -it mysql /bin/bash
# 登录数据库
mysql -uroot -p
# 创建数据库
create database nextcloud \
default character set utf8 \
collate utf8_general_ci;
# 创建用户、分配权限
CREATE USER nextcloud@'%' IDENTIFIED BY 'nextcloud';
GRANT ALL ON nextcloud.* TO nextcloud@'%';
flush privileges;
# redis容器
docker run -d -h redis --name redis --restart=always \
-v /mnt/redis/redis.conf:/etc/redis/redis.conf \
-v /mnt/redis/data:/data \
redis redis-server /etc/redis/redis.conf --appendonly yes
# onlyoffice,最好自定义好秘钥
docker run -d --restart=always --name onlyoffice -h onlyoffice \
--link redis:redis \
-v /mnt/onlyoffice/log:/var/log/onlyoffice \
-v /mnt/onlyoffice/data:/var/www/onlyoffice/Data \
-v /mnt/onlyoffice/lib:/var/lib/onlyoffice \
-v /mnt/onlyoffice/db:/var/lib/postgresql onlyoffice/documentserver
# nextcloud部署
docker run -d --name nextcloud -h nextcloud --restart=always \
--link mysql:mysql \
--link redis:redis \
--link onlyoffice:onlyoffice \
-v /mnt/nextcloud/html/:/var/www/html/ \
-p 8520:80 nextcloud:25.0.3
# 安全,安装apt更新,然后下载clamav杀毒,执行定时任务
apt update 更新apt
apt list --upgradable 更新下载软件列表
apt-get install clamav clamav-daemon 安装杀毒
/usr/bin/freshclam 手动更新病毒库
下载nextcloud插件,设置杀毒策略
nextcloud配置文件示例
<?php
$CONFIG = array (
'htaccess.RewriteBase' => '/',
'memcache.local' => '\OC\Memcache\APCu',
'memcache.locking' => '\OC\Memcache\Redis',
'memcache.distributed' => '\OC\Memcache\Redis',
'redis' => [
'host' => 'redis',
'port' => 6379,
],
'apps_paths' =>
array (
0 =>
array (
'path' => '/var/www/html/apps',
'url' => '/apps',
'writable' => false,
),
1 =>
array (
'path' => '/var/www/html/custom_apps',
'url' => '/custom_apps',
'writable' => true,
),
),
'instanceid' => 'ocejidmi08mu',
'passwordsalt' => 'EMyIvJh/XZMha6JXyt3CWwDPlQX+TJ',
'secret' => 'TO2HAPGS2Z1dwHnv/Hh3te2rnIQ9ishwIBjlSqVHkxngqDNj',
'trusted_domains' =>
array (
0 => '10.10.1.1',
),
'datadirectory' => '/var/www/html/data',
'dbtype' => 'mysql',
'version' => '25.0.3.2',
'overwrite.cli.url' => 'http:/10.10.1.1',
'dbname' => 'nextcloud',
'dbhost' => 'mysql:3306',
'dbport' => '',
'dbtableprefix' => 'oc_',
'mysql.utf8mb4' => true,
'dbuser' => 'nextcloud',
'dbpassword' => 'nextcloud',
'installed' => true,
'default_language' => 'zh_CN',
'default_locale' => 'zh',
'allow_local_remote_servers' => true,
'default_phone_region' => 'CN',
);
性能优化与故障处理
1、PHP OPcache 模块没有正确配置。更多信息请参见文档 ↗。 OPcache 内部字符串缓存几乎已满。为确保重复的字符串可以被有效地缓存,建议在您的 PHP 设置中 opcache.interned_strings_buffer 设置一个高于 16 的值。
解决方法:
# 进入容器
docker exec -it nextcloud bash
# 使用vim编辑文件,如果没有先安装vim
vim /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
# 添加下面配置
opcache.memory_consumption=128
opcache.interned_strings_buffer=32
opcache.max_accelerated_files=10000
opcache.revalidate_freq=1
opcache.fast_shutdown=1
opcache.enable_cli=1
opcache.save_comments=1
# 然后重启php
2、添加onlyoffice 将windows系统的字体复制到/usr/share/fonts/truetype/custom/fonts/下 在容器内执行/usr/bin/documentserver-generate-allfonts.sh脚本更新程序 重启容器,清除浏览器缓存
修改onlyoffice字号设置 将容器内文件/var/www/onlyoffice/documentserver/web-apps/apps/documenteditor/main/app.jsf复制到宿主机进行修改 在{value:8,displayValue:“8”}前面增加相应的显示。
{value:42,displayValue:"初号"},{value:36,displayValue:"小初"},{value:26,displayValue:"一号"},{value:24,displayValue:"小一"},{value:22,displayValue:"二号"},{value:18,displayValue:"小二"},{value:16,displayValue:"三号"},{value:15,displayValue:"小三"},{value:14,displayValue:"四号"},{value:12,displayValue:"小四"},{value:10.5,displayValue:"五号"},{value:9,displayValue:"小五"},{value:7.5,displayValue:"六号"},{value:6.5,displayValue:"小六"},{value:5.5,displayValue:"七号"},{value:5,displayValue:"八号"},
然后重启onlyoffice和nextcloud,刷新浏览器缓存。
docker restart onlyofficedocker restart nextcloud
Nextcloud可以实现多端同步,需配合客户端实现,以后再看下。
最终实现在线网盘,集成mysql、redis、在线文档编辑、杀毒功能,但是的确稍微复杂,过程中也出现很多问题,最新的其实已经可以使用docker-compose部署了,还没整理出来,以后再试下一键部署吧,大概思路如上。
本文由 mdnice 多平台发布
相关文章:
【惊喜福利】Docker容器化部署nextcloud网盘,享受高速稳定的文件共享体验!
Docker搭建nextcloud网盘 NextCloud是一款开源网络硬盘系统,它是一个私有、安全且功能完整的文件同步与共享解决方案,可以搭建一套属于自己或团队的云同步网盘。NextCloud的客户端覆盖了各种平台,包括Windows、Mac、Android、iOS、Linux等&am…...
WPF实战项目十九(客户端):修改RestSharp的引用
修改HttpRestClient,更新RestSharp到110.2.0,因为106版本和110版本的代码不一样,所以需要修改下代码 using Newtonsoft.Json; using RestSharp; using System; using System.Threading.Tasks; using WPFProjectShared;namespace WPFProject.S…...
kobs-ng 烧写nand中的uboot
如何获取kobs-ng 我是使用buildroot自动编译的imx-kobs,生成了kobs-ng可执行文件。 使用 kobs-ng 烧写 u-boot 1. flash_erase /dev/mtd0 0 0 //擦除uboot所在分区 2. 挂载 debugfs mount -t debugfs debugfs /sys/kernel/debug 如果不挂载为报以下错误&#x…...
【Java】扫描指定目录,并找到名称中包含指定字符的所有普通文件(不包含目录),并且后续询问该用户是否要删除该文件
题目如下 扫描指定目录,并找到名称中包含指定字符的所有普通文件(不包含目录),并且后续询问该用户是否要删除该文件 本题是关于文件I/O知识中对文件系统操作的应用,解答的完整代码如下(需要的uu自取)⬇️ 在完整…...
PyQt基础_008_ 按钮类控件QSpinbox
基本操作 import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import *class spindemo(QWidget):def __init__(self, parentNone):super(spindemo, self).__init__(parent)self.setWindowTitle("SpinBox 例子")self.resize(300,…...
3D点云目标检测:VoxelNex解读
VoxelNext 通用检测器 vs VoxelNext一、3D稀疏卷积模块1.1、额外的两次下采样消融实验结果代码 1.2、稀疏体素删减消融实验:代码 二、稀疏体素高度压缩代码 三、稀疏预测head 通用检测器 vs VoxelNext 一、3D稀疏卷积模块 1.1、额外的两次下采样 使用通用的3D spa…...
opencv-利用DeepLabV3+模型进行图像分割去除输入图像的背景
分离图像中的人物和背景通常需要一些先进的图像分割技术。GrabCut是一种常见的方法,但是对于更复杂的场景,可能需要使用深度学习模型。以下是使用深度学习模型(如人像分割模型)的示例代码: #导入相关的库 import cv2 …...
中国版的 GPTs:InsCode AI 生成应用
前言 在上一篇文章 《InsCode:这可能是下一代应用开发平台?》中,我们介绍了一个新的应用开发平台 InsCode,它是基于云原生开发环境 云 IDE AI 辅助编程的一站式在线开发平台。 最近,InsCode 又推出了另一种全新的开…...
MySQL 学习笔记(刷题篇)
SQL进阶挑战 聚合分组查询 SQL123 select tag, difficulty, round((sum(score) - max(score) - min(score) ) / (count(score) - 2) ,1) as clip_avg_score from examination_info as ei, exam_record as er where ei.exam_id er.exam_id and ei.tag SQL and ei.diffi…...
windows系统如何配置yarn环境变量
启动前端项目,突然遇到报错: 原因在于没有安装yarn,或没有配置环境变量。 全局安装 yarn 可在vsCode中输入,也可在命令行输入(winR,输入cmd) npm install -g yarn添加环境变量 找到yarn的安…...
视频中的文字水印怎么去除?这三招学会轻松去视频水印
短视频与我们生活,工作息息相关,日常在在刷短视频时,下载保存后发现带有文字logo水印,如果直接拿来进行二次创作,不仅影响观看效果,平台流量还会受限制。怎么去除视频中的文字水印就成为了当下热门话题之一…...
Java项目学生管理系统二查询所有
学生管理 近年来,Java作为一门广泛应用于后端开发的编程语言,具备了广泛的应用领域和丰富的开发资源。在前几天的博客中,我们探讨了如何搭建前后端环境,为接下来的开发工作打下了坚实的基础。今天,我们将进一步扩展我…...
27.Spring如何避免在并发下获取不完整的Bean?
Spring如何避免在并发下获取不完整的Bean? 1、为什么获取不到完整的Bean? 我们知道, 如果spring容器已经加载完了, 那么肯定所有bean都是完整的了, 但如果, spring没有加载完, 在加载的过程中, 构建bean就有可能出现不完整bean的情况 2、如何解决读取到不完整bean的问题. …...
浅析SD-WAN企业组网部署中简化网络运维的关键技术
网络已经成为现代企业不可或缺的基础设施,它为企业提供了连接全球的桥梁。随着全球化和数字化转型的加速推进,企业面临着越来越多的网络挑战和压力。传统的网络组网方式往往无法满足企业规模扩大、分支机构增多、上云服务等需求,导致网络性能…...
【Rust】快速教程——自定义类型、数字转枚举、Cargo运行
前言 超过一定的年龄之后,所谓人生,无非是一个不断丧失的过程而已。宝贵的东西,会像梳子豁了齿一样从手中滑落下去。你所爱的人会一个接着一个,从身旁悄然消逝。——《1Q84》 \;\\\;\\\; 目录 前言自定义类型数字转枚举Cargo.tom…...
python 实现 AIGC 大语言模型中的概率论:生日相同问题的代码场景模拟
对深度学习本质而言,它实际上就是应用复杂的数学模型对输入数据进行建模,最后使用训练好的模型来预测或生成新的数据,因此深度学习的技术本质其实就是数学。随着大语言模型的发展,人工智能的数学本质被进一步封装,从业…...
SD-WAN组网中的CPE及云服务CPE部署方法
什么是CPE? CPE全称为Customer Premises Equipment,即客户端设备,在SD-WAN中通常为路由器,部署在中心点和分支上,提供连接和路由、协议转换、流量监控等功能。一般可分为硬件CPE和虚拟化CPE(virtual CPE&a…...
理解BatchNormalization层的作用
深度学习 文章目录 深度学习前言一、“Internal Covariate Shift”问题二、BatchNorm的本质思想三、训练阶段如何做BatchNorm四、BatchNorm的推理(Inference)过程五、BatchNorm的好处六、机器学习中mini-batch和batch有什么区别 前言 Batch Normalization作为最近一年来DL的重…...
uniapp实现文件预览过程
H5实现预览 <template><iframe :src"_url" style"width:100vw; height: 100vh;" frameborder"0"></iframe> </template> <script lang"ts"> export default {data() {return {_url: ,}},onLoad(option…...
深度学习-学习笔记记录
1、点云语义分割方法分类 分为5类:点、二维投影、体素、融合、集成 2、融合与集成的区别 融合: 概念:主要是将不同来源、类型的模型,例如深度学习、传统机器学习等,的结果或特征进行结合,以得到一个更好的模…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
