使用Docker搭建Nextcloud个人工作中心(同步盘+离线下载等功能)以及DNS服务器搭建

本文详细介绍了如何使用Docker和docker-compose搭建Nextcloud个人工作中心,包括本地和公网访问配置,以及DNS服务器的搭建过程。通过自定义Docker镜像集成aria2和cron,实现同步盘和离线下载功能。同时,文章还提供了性能优化、插件安装和问题记录的实用建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言

需求

选型

环境说明与准备工作

环境

软件准备

Nextcloud本地搭建(Nextcloud+Redis+Mysql)

Nextcloud公网访问(可选)

使用同一域名解析至公网或内网IP(可选)

DNS服务搭建

其他重要的补充工作

使用Demo

性能优化

插件安装

问题记录


前言

需求

首先要明确的是,到底有没有使用网盘的需求,如果你经常共享文件,或者需要备份自己的资料,或者你有多个终端,或者你需要移动办公。。。等等

如果你确实有这样的需求,或者你正在使用市面上的网盘,自己再喜欢动动手,或者需要保存一些小秘密,那么继续往下看。

选型

网盘又分为备份盘和同步盘。顾名思义,备份盘主要是用来存储文件,比如百度网盘(除工作空间功能)、阿里云盘、微云、天翼云盘、115网盘等等,都算是备份盘,或者大家主要使用的功能都是备份盘的功能。而同步盘则主要有坚果云、Onedrive等(国外的了解的不多),其中百度网盘、天翼云盘、微云,也都有同步盘的功能。

我之前一直用的是Onedrive,期间尝试过上述的各种盘,但是效果均不尽人意,算是各有各的缺点吧。我的场景主要是用来同步全盘的数据,这样做有个好处,就是如果我重做系统,或者换设备了,不用来回倒数据,而且同步盘一般也都支持文件版本的功能,写word文档或者画图的时候,如果忘记保存副本就是个很难办的事情,总不能所有的内容都用git管理,也不方便,这个时候同步盘的优势就出来了。这样的场景也导致了,我这里会有大量的小文件和部分大文件,小文件的数量可能有几十万(包含着一些开源项目的源码)。所以我这个场景对同步盘的选择就很苛刻。

下面列一下我用过这些盘之后的感受。

坚果云:同步功能很强大,速度也快,但是容量太小,花钱买也不多。

百度网盘、微云、天翼云盘,客户端的校验速度和稳定性均不如Onedrive,动不动就有冲突。

Onedrive本身功能没啥毛病,但是网络情况不稳定,就算这个不稳定我也忍了,但是教育版又经常和学校的管理有关,总是抽风,网页端都打不开,这已经第二次了,每次都要持续几天,这次失效截止目前也快一周了,还没有修复好,想着索性自己搭建一个服务。

个人云盘搭建也有多种选择Nextcloud、seafile等等,还有filerun、可道云等,在这里的选型主要选商业化不是特别严重的,也就是开源版本功能没被阉割太多的,而且性能还算过得去的。

实际大家过程中搭建了Nextcloud和seafile,最终是选择了Nextcloud,虽然nextcloud的性能有些问题,但是可以对性能优化一些,而Seafile的功能感觉被阉割不少,而且文件管理还得通过客户端,与文件管理器集成的不到位。后来发现Nextcloud的虚拟文件支持一用就崩溃,不过考虑Nextcloud的商店里插件很多,功能可扩展,就还是选这个了。

好了,废话说了一堆,下面开始说正式的搭建过程。

环境说明与准备工作

环境

本地一台台式机做Nextcloud服务端

公网服务器用来进行公网访问

路由器用来进行DNS劫持

软件准备

  • docker

  • docker-compose

安装Docker和Docker-compose的教程很多,比如Ubuntu Docker 安装 | 菜鸟教程。这里不展开说docker安装过程,之所以选择docker安装,是可以保证不在环境上出现过多的差异,而且后续如果要迁移数据也比较方便。

Nextcloud本地搭建(Nextcloud+Redis+Mysql)

Nextcloud的单独搭建其实很简单,直接docker run nextcloud就行了(夸张一下,实际还得设置数据路径和端口映射),但是并不推荐这么执行,实际运行的性能比较差,我们这里直接使用redis和mysql搭建。

不过得益于Docker-compose,可以直接使用我的这个docker-compose.yml,其中nextcloud使用了自定义的镜像,集成了离线下载的aria2和系统定时工具cron。

(在下面同样附上了Dockerfile文件,可以根据需求进行自定义,如果自己懒得build镜像,直接使用这个镜像即可。)

Dockerfile

FROM nextcloud:fpm

RUN apt update && apt install -y aria2 libmagickcore-6.q16-6-extra cron&& apt clean
RUN rm -rf /var/lib/apt/lists/*

RUN mkdir -p /var/www/aria2
WORKDIR /var/www/aria2
RUN touch aria2.session
RUN { \
echo 'dir=/Downloads'; \
echo 'enable-rpc=true'; \
echo 'rpc-allow-origin-all=true'; \
echo 'rpc-listen-all=true'; \
echo 'continue=true'; \
echo 'input-file=/var/www/aria2/aria2.session'; \
echo 'save-session=/var/www/aria2/aria2.session'; \
echo 'max-concurrent-downloads=20'; \
echo 'save-session-interval=120'; \
echo 'connect-timeout=120'; \
echo 'max-connection-per-server=10'; \
echo 'min-split-size=10M'; \
echo 'split=10'; \
echo 'check-certificate=false'; \
} > aria2.conf; \
chown -R www-data:root /var/www/aria2; \
chmod -R g=u /var/www/aria2
VOLUME ["/var/www/aria2"]
RUN sed =i '194 i service cron start' /entrypoint.sh
RUN sed -i '194 i su -s /bin/bash -c "aria2c --conf-path=/var/www/aria2/aria2.conf -D" www-data' /entrypoint.sh
WORKDIR /var/www/html
ENTRYPOINT ["/entrypoint.sh"]
CMD ["php-fpm"]

docker-compose.yml

version: '3.9'
services:
  db:
    image: mysql:8.0
    container_name: nextcloud-mysql
    command: --skip-log-bin --innodb_buffer_pool_size=2048M --innodb_flush_method=O_DIRECT --innodb_write_io_threads=16
    # 内存配置根据实际情况来
    environment:
      - MYSQL_DATABASE=nextcloud
      - MYSQL_ROOT_PASSWORD=db_dev  # 设置mysql的root用户的密码
      - MYSQL_LOG_CONSOLE=true
    volumes:
      - type: volume  # 必须。设置数据库数据路径的映射,数据持久化保存
        source: db-data
        target: /var/lib/mysql
    networks:
      - nextcloud-net

  memcached:
    image: redis:6-alpine
    container_name: nextcloud-memcached
    command: redis-server --requirepass cached_dev
    volumes: # 设置redis数据路径的映射,根据自己的配置看要不要映射出来吧,随意。
      - type: volume
        source: cache-data
        target: /data
    networks:
      - nextcloud-net

  nextcloud:
    image: registry.cn-beijing.aliyuncs.com/env_halfcoke/nextcloud
    container_name: nextcloud-fpm
    volumes:
      - type: volume
        source: nextcloud-data
        target: /var/www/html # nextcloud 数据目录,必须,数据持久化保存
      - type: volume
        source: nextcloud-aria2
        target: /var/www/aria2 # nextcloud 数据目录,建议
      - type: volume
   
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值