Skip to content

Nextcloud

在这篇文章中

信息

Nextcloud 是一款开源服务器软件。它允许您创建自己的云服务,用于数据存储和协作。它基于 PHP 编程语言,并支持使用 MySQL、PostgreSQL 和 SQLite 等各种数据库。Nextcloud 支持客户端级别的数据加密,确保数据在互联网上传输时的安全性。借助 Nextcloud,您可以在不同设备之间同步数据,并支持在线和离线工作。Nextcloud 提供了一套丰富的协作工具,如文件交换、任务管理、日历和联系人管理。Nextcloud 还可以与 Google Drive、Dropbox 和 Microsoft OneDrive 等其他服务集成。

Nextcloud 关键功能

Nextcloud 拥有许多使其成为数据存储和处理有效工具的功能:

  • 文件存储。Nextcloud 允许您将文件存储在服务器上,并通过 Web 界面或桌面及移动设备应用程序访问它们。
  • 文件同步。在不同设备之间同步文件的能力使该服务成为在各种条件下工作的便捷工具。
  • 版本控制。Nextcloud 允许您保存同一文件的多个版本。如有需要,您还可以恢复以前的版本。
  • 通过 Web 界面访问文件。Nextcloud 具有 Web 界面,允许您通过浏览器访问文件,使其成为在任何设备上工作的便捷工具。
  • 日历和任务管理。Nextcloud 允许您创建和管理日历及任务,使其成为组织工作的有用工具。
  • 联系人管理。Nextcloud 允许您创建和管理联系人,使其成为管理通信的便捷工具。
  • 通过应用程序访问文件。Nextcloud 拥有适用于桌面计算机和移动设备的应用程序,允许您通过这些应用程序访问文件。
  • 可扩展性。Nextcloud 拥有许多附加应用程序,可以安装和使用以扩展功能。这些应用程序包括在线协作、文档编辑、项目管理等。

部署功能

ID 软件名称 兼容操作系统 虚拟机 物理机 vGPU GPU 最低CPU(核) 最低内存(GB) 最低硬盘(GB) 自定义域名 是否启用
16 Nextcloud Ubuntu 22.04 + + + + 2 4 40 订购

此软件在安装时可设置自定义域名。详见说明

对于此软件,您可以在安装期间设置自定义域名。请参阅 说明

  • Nextcloud 已包含在系统内核中,无需额外安装。我们提供一个 Web 界面,通过该界面可以安装和配置服务。
  • 配置文件位于:
    • /opt/nextcloud - Nextcloud 安装和配置;
    • /opt/nginx - Nginx 服务的安装和配置;
    • /opt/nextcloud/compose.yml - 运行 docker compose,启动一组 Nextcloud + Onlyoffice 容器。
  • SSL 证书生成基于 jonasal/nginx-certbot 组合。
  • 以下命令可能用于更新容器版本和编辑配置文件。

    • 要停止容器,请运行命令
    cd /opt/nextcloud/
    

    然后

    docker compose down
    
    • 要启动容器,请运行命令
    cd /opt/nextcloud/
    

    然后

    docker compose up -d
    
  • Docker compose up -d 运行 compose.yml 文件,该文件下载并启动以下容器:

    • db - 容器,下载 PostgreSQL,并进行以下设置:
      • 创建 Nextcloud 数据库(或基础库);
      • 生成 Nextcloud 用户;
      • SSH 密码(在软件部署后服务器准备就绪时,通过电子邮件发送到您的邮箱);
      • 标准端口为 5432。
    • redis - 容器,在内存中存储对 Nextcloud 的调用,仅在 PostgreSQL 数据库中记录之后。PostgreSQL
    • app - 容器,Nextcloud 服务具有以下参数:
      • 通过链接 https://nextcloud(server_id).hostkey.in(例如,https://nextcloud16094.hostkey.in)从 Web 浏览器或移动应用程序访问应用程序;
      • 登录名:admin
      • 密码:来自 ssh;
    • onlyoffice-document-server - 容器,OnlyOffice 服务在端口 80 上运行。

    注意

    此容器在 6 分钟内启动。在此期间,您可以进入 Nextcloud Web 界面,上传和下载文件,但编辑文档的功能仅在运行 docker compose up -d 后 6 分钟出现(启动某些组件需要一些时间)。

    • nginx - 容器,Nginx 服务在端口 80 和 443 上接受请求,并将请求重定向到 Nextcloud 容器。

备注

除非另有说明,默认情况下,我们从开发人员的网站或操作系统存储库安装软件的最新发布版本。

通过 Cloud-init 配置安装参数

在订购带有 Nextcloud 的服务器时,您可以在订购过程的 Automatization 阶段使用 cloud-init 配置预先配置主要安装参数。这允许您自动设置管理员凭据、电子邮件和数据存储路径:

配置参数

要通过 cloud-init 配置 Nextcloud,请使用以下格式:

write_files:
  - path: "/opt/main.yml"
    permissions: "0644"
    content: |
      nextcloud_admin_name: "root"
      nextcloud_admin_pwd: "YOUR_PASSWORD"
      nextcloud_admin_email: "admin@localhost"
      nextcloud_data_path: "/opt/nextcloud-data"

参数描述

  • nextcloud_admin_name - 管理员账户名称(默认:admin);
  • nextcloud_admin_pwd - 管理员密码(指定您的强密码);
  • nextcloud_admin_email - 用于通知的管理员电子邮件;
  • nextcloud_data_path - 存储 Nextcloud 数据的路径(默认:/opt/nextcloud-data)。

建议

nextcloud_admin_pwd 使用强密码,并为 nextcloud_admin_email 使用真实电子邮件以接收重要的系统通知。

重要

应用 cloud-init 配置后,指定的参数将替代默认参数。请将此数据保存在安全的地方。

部署 Nextcloud 后的入门指南

支付订单后,将向注册时指定的电子邮件发送通知,告知服务器已准备好工作。它将包含 VPS 的 IP 地址以及连接的用户名和密码。我们公司的客户在服务器硬件和 API 控制面板 — Invapi 中管理硬件。

您可以在服务器控制面板的 Configuration >> Tags 选项卡或发送的电子邮件中找到授权数据。

  • 访问带有 Web 界面的 Nextcloud 仪表板的链接:在 webpanel 标签中;
  • 登录名admin
  • 密码:在软件部署后服务器准备就绪时发送到您的电子邮件地址。

进入 Nextcloud 控制面板后,您必须输入您的登录名和密码:

成功登录后,您可以开始使用该服务。

备注

有关 Nextcloud 基本设置的更多信息,请参阅 开发人员文档

注意

要订购 Nextcloud 服务器,您应根据 开发人员的建议 选择服务器。

更改域名

在开始更改域名之前,建议创建指令中指定的所有文件的备份。要创建主要文件的备份,请执行以下命令:

  1. 创建备份目录

    mkdir -p /root/nextcloud_backup
    
  2. 复制 Nginx 配置文件

    cp /opt/nginx/user_conf.d/nextcloud<server ID>.hostkey.in.conf /root/nextcloud_backup/
    
  3. 复制 Docker Compose 文件

    cp /opt/nextcloud/compose.yml /root/nextcloud_backup/
    
  4. 复制配置脚本

    cp /opt/nextcloud/set_configuration.sh /root/nextcloud_backup/
    
  5. 复制 Nextcloud 配置文件

    cp /var/lib/docker/volumes/app_data/_data/config/config.php /root/nextcloud_backup/
    

这些命令将创建所有关键文件的备份,这些文件将在域名更改过程中更改。如果出现问题,您可以从这些备份中恢复原始配置。

从备份恢复和成功迁移后删除

如果域名更改过程失败且您需要恢复原始配置,请执行以下命令:

  1. 恢复 Nginx 配置文件

    cp /root/nextcloud_backup/nextcloud<server ID>.hostkey.in.conf /opt/nginx/user_conf.d/
    
  2. 恢复 Docker Compose 文件

    cp /root/nextcloud_backup/compose.yml /opt/nextcloud/
    
  3. 恢复配置脚本

    cp /root/nextcloud_backup/set_configuration.sh /opt/nextcloud/
    
  4. 恢复 Nextcloud 配置文件

    cp /root/nextcloud_backup/config.php /var/lib/docker/volumes/app_data/_data/config/
    
  5. 重启容器

    cd /opt/nextcloud
    docker compose down
    docker compose up -d
    
  6. 重启 nginx

    docker restart nginx-certbot
    

这些命令将所有配置文件恢复到其原始状态并重启必要的服务。

一旦您确定域名更改成功且一切正常运行(建议等待至少 24-48 小时进行全面测试),您可以安全地删除备份:

  1. 检查备份目录的内容

    ls -la /root/nextcloud_backup/
    
  2. 删除整个备份目录

    rm -rf /root/nextcloud_backup/
    

在删除之前,建议检查目录内容以确保您仅删除必要的文件。

配置文件

  1. 通过 SSH 连接到服务器:

    ssh root@IP_ADDRESS
    
  2. 更改主机名(可选):

    hostnamectl set-hostname nextcloud_server
    
  3. 编辑 /etc/hosts

    nano /etc/hosts
    

    添加一行将新域名链接到服务器的 IP 地址:

    IP_ADDRESS YOUR_DOMAIN_NAME
    

    (用您的值替换 IP 地址和域名)

配置 Nginx

  1. 查找并编辑 Nginx 配置文件:

    nano /opt/nginx/user_conf.d/nextcloud<server ID>.hostkey.in.conf
    

    将所有旧域名实例(nextcloud<server ID>.hostkey.in)替换为新域名(YOUR_DOMAIN_NAME):

    • 第 4 行:server_name nextcloud<server ID>.hostkey.in; > server_name YOUR_DOMAIN_NAME;
    • 第 15 行:server_name nextcloud<server ID>.hostkey.in; > server_name YOUR_DOMAIN_NAME;
    • 第 17 行:ssl_certificate /etc/letsencrypt/live/nextcloud<server ID>.hostkey.in/fullchain.pem; > ssl_certificate /etc/letsencrypt/live/YOUR_DOMAIN_NAME/fullchain.pem;
    • 第 18 行:ssl_certificate_key /etc/letsencrypt/live/nextcloud<server ID>.hostkey.in/privkey.pem; > ssl_certificate_key /etc/letsencrypt/live/YOUR_DOMAIN_NAME/privkey.pem;
    • 第 19 行:ssl_trusted_certificate /etc/letsencrypt/live/nextcloud<server ID>.hostkey.in/chain.pem; > ssl_trusted_certificate /etc/letsencrypt/live/YOUR_DOMAIN_NAME/chain.pem;
  2. 重命名配置文件:

    mv /opt/nginx/user_conf.d/nextcloud<server ID>.hostkey.in.conf /opt/nginx/user_conf.d/YOUR_DOMAIN_NAME.conf
    
  3. 重启 Nginx 容器:

    docker restart nginx-certbot
    

配置 Nextcloud

  1. 编辑 Docker Compose 文件:

    nano /opt/nextcloud/compose.yml
    

    将所有旧域名实例替换为新域名(YOUR_DOMAIN_NAME)。注意包含以下内容的行:

    • 第 40 行:- OVERWRITECLIURL=https://nextcloud<server ID>.hostkey.in/
    • 第 41 行:- OVERWRITEHOST=nextcloud<server ID>.hostkey.in
  2. 编辑 Nextcloud 配置脚本:

    nano /opt/nextcloud/set_configuration.sh
    

    将所有旧域名实例替换为新域名。特别注意以下行:

    • 第 11 行:if ! grep -q "nextcloud<server ID>.hostkey.in" trusted_domain.tmp; then
    • 第 13 行:docker exec -u www-data app-server php occ --no-warnings config:system:set trusted_domains $TRUSTED_INDEX --value="nextcloud<server ID>.hostkey.in"
    • 第 23 行:docker exec -u www-data app-server php occ --no-warnings config:system:set onlyoffice StorageUrl --value="https://nextcloud<server ID>.hostkey.in/

应用更改

  1. 导航到 Nextcloud 目录:

    cd /opt/nextcloud
    
  2. 停止并移除现有容器:

    docker compose down
    

    此命令将停止并移除 compose.yml 文件中定义的所有容器,但保留卷中的所有数据。

  3. 启动 Nextcloud 容器:

    docker compose up -d
    
  4. 运行配置脚本:

    bash /opt/nextcloud/set_configuration.sh
    

    如果脚本报告错误,指出命令 "maintenance:install" 未定义,这是正常的——Nextcloud 已经安装。

检查和调试

  1. 验证 Nextcloud 是否可通过新域名访问:

    在浏览器中打开 https://YOUR_DOMAIN_NAME

  2. 如果出现问题,检查日志:

    docker logs nginx-certbot
    docker logs app-server
    
  3. 如有必要,手动配置 trusted_domains:

    docker exec -u www-data app-server php occ --no-warnings config:system:set trusted_domains 1 --value="YOUR_DOMAIN_NAME"
    docker exec -u www-data app-server php occ --no-warnings config:system:set overwrite.cli.url --value="https://YOUR_DOMAIN_NAME/"
    
  4. 如果使用 OnlyOffice,请验证其设置:

    docker exec -u www-data app-server php occ --no-warnings config:system:set onlyoffice StorageUrl --value="https://YOUR_DOMAIN_NAME/"
    

重要说明

  • 进行更改后,清除浏览器缓存至关重要;
  • 所有用户凭据与更改域名之前保持不变;
  • 如果您的 DNS 提供商需要时间更新记录,在新域名开始工作之前可能会出现一些延迟;
  • 确保 DNS 中的 A 记录指向您服务器的正确 IP 地址;
  • PTR 记录(反向 DNS)对于 Nextcloud 的运行并非关键,但可以通过 控制面板 进行更新以实现完全一致性。

使用 API 订购 Nextcloud

question_mark
Is there anything I can help you with?
question_mark
AI Assistant ×