本页内容

  • 先决条件
  • 步骤 1 - 配置防火墙
  • 步骤 2 - 配置主机名和时区
  • 步骤 3 - 安装 Docker
  • 步骤 4 - 配置 Docker Compose 文件
  • 步骤 5 - 运行 Nextcloud AIO
  • 步骤 6 - 访问 Nextcloud AIO
  • 步骤 7 - 备份与恢复 Nextcloud 恢复 Nextcloud 为远程上传准备备份
  • 步骤 8 - 更新 Nextcloud AIO / Nextcloud 更新 Nextcloud 容器 更新 Nextcloud AIO 主容器
  • 结语
  • 恢复 Nextcloud
  • 为远程上传准备备份
  • 更新 Nextcloud 容器
  • 更新 Nextcloud AIO 主容器

Nextcloud AIO 是 Nextcloud All in One(一体式)的缩写。它是一个基于 Docker 的安装程序,让部署 Nextcloud 变得轻而易举。它内置了以下功能和应用:

  • Nextcloud
  • Nextcloud Office - 基于 Collabora Online Development Edition (CODE),而 CODE 又基于 LibreOffice。你可以使用它进行多人的实时文档编辑,支持所有常见的办公文件格式。
  • Nextcloud Talk - 一款音视频及聊天通信服务。支持加密通话、群组通话、屏幕共享、WebRTC 跨平台支持,以及举办网络研讨会。
  • Imaginary - 用于高级图像处理与格式转换。
  • ClamAV - 用于防范病毒和恶意软件。
  • Borgbackup - 提供内置的备份与恢复功能。
  • ElasticSearch - 用于支持对文档和文件的全文搜索。

先决条件

  • 一台运行 Ubuntu 22.04 的服务器,至少 1GB 内存和 1 个 vCPU。如果要使用 ClamAV,需要额外 1GB 内存。ElasticSearch(全文搜索)、Nextcloud Talk 也各需要额外 1GB 内存。启用全部插件后,至少需要 4GB 内存和 2 个 vCPU。
  • 一个指向你服务器的完全限定域名(FQDN)。在本教程中,我们将使用 nextcloud.example.com 作为域名。
  • 一个具有 sudo 权限的非 root 用户。
  • 简易防火墙(UFW)已启用并正在运行。
  • 确保所有软件包都已更新。$ sudo apt update && sudo apt upgrade
  • 安装基础工具软件包。其中部分可能已安装。$ sudo apt install wget curl nano unzip -y

一台运行 Ubuntu 22.04 的服务器,至少 1GB 内存和 1 个 vCPU。如果要使用 ClamAV,需要额外 1GB 内存。ElasticSearch(全文搜索)、Nextcloud Talk 也各需要额外 1GB 内存。启用全部插件后,至少需要 4GB 内存和 2 个 vCPU。

一个指向你服务器的完全限定域名(FQDN)。在本教程中,我们将使用 nextcloud.example.com 作为域名。

一个具有 sudo 权限的非 root 用户。

简易防火墙(UFW)已启用并正在运行。

确保所有软件包都已更新。

$ sudo apt update && sudo apt upgrade

安装基础工具软件包。其中部分可能已安装。

$ sudo apt install wget curl nano unzip -y

步骤 1 - 配置防火墙

在安装任何软件包之前,第一步是配置防火墙以允许 HTTP 和 HTTPS 连接。

检查防火墙的状态。

$ sudo ufw status

你应该会看到类似下面的输出。

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

为实际的 Nextcloud 实例放行 HTTP 和 HTTPS 端口。

$ sudo ufw allow http
$ sudo ufw allow https

为 Nextcloud Talk 开放 3478 端口。如果你不打算使用它,可以跳过。

$ sudo ufw allow 3478

开放 8080 和 8443 端口,为 AIO 界面提供 HTTP 和 HTTPS 支持。

$ sudo ufw allow 8080/tcp
$ sudo ufw allow 8443/tcp

再次检查状态以确认。

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
8080/tcp                   ALLOW       Anywhere
8443/tcp                   ALLOW       Anywhere
3478                       ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)
8080/tcp (v6)              ALLOW       Anywhere (v6)
8443/tcp (v6)              ALLOW       Anywhere (v6)
3478 (v6)                  ALLOW       Anywhere (v6)

步骤 2 - 配置主机名和时区

在继续之前,我们需要为系统设置正确的主机名。

打开 hostname 文件进行编辑。

$ sudo nano /etc/hostname

将该值修改为你的完全限定域名。

nextcloud.example.com

按 Ctrl + X 保存文件,并在提示时输入 Y。

打开 hosts 文件进行编辑。

$ sudo nano /etc/hosts

在 127.0.0.1 localhost 这一行之后添加以下行。若已存在 127.0.1.1 ubuntu-master 这一行,请用下面的内容替换它。

<YourServerIP> nextcloud.example.com nextcloud	

按 Ctrl + X 保存文件,并在提示时输入 Y。

检查服务器的当前时区。

$ timedatectl
Local time: Sun 2022-10-09 13:21:01 UTC
           Universal time: Sun 2022-10-09 13:21:01 UTC
                 RTC time: Sun 2022-10-09 13:21:01
                Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: no
              NTP service: n/a
          RTC in local TZ: no

你可以使用以下命令查看可用时区列表。

$ timedatectl list-timezones
...
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Asmera
Africa/Bamako
Africa/Bangui
...

如果与你的偏好不符,使用以下命令进行修改。

$ sudo timedatectl set-timezone America/Chicago

重启服务器。

$ sudo reboot

现在你可以按以下方式登录服务器。

$ ssh 
[email protected]

步骤 3 - 安装 Docker

添加 Docker 官方的 GPG 密钥。

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg

运行以下命令以添加 Docker 软件仓库。

$ echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

更新系统以包含 Docker 的软件仓库。

$ sudo apt update

安装 Docker 和 Docker compose 插件。

$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

本教程将使用 Docker Compose v2 插件,而非旧版的二进制文件。因此,运行命令已从 docker-compose 改为 docker compose,本文中也相应体现。

Docker 以高权限运行,因此你经常需要使用 sudo 来执行命令。更好的办法是将你的 Linux 用户账户加入 docker 用户组。

$ sudo usermod -aG docker ${USER}

${USER} 变量会获取当前登录的系统账户。如果你不是用想赋予权限的用户登录的,请将 ${USER} 替换为该用户名。

要应用新的用户组身份,请注销服务器后重新登录,或使用以下命令。系统会提示你输入用户的密码。

$ su - ${USER}

步骤 4 - 配置 Docker Compose 文件

为 Docker compose 文件创建一个目录。

$ mkdir ~/nextcloud-aio

切换到该目录。

$ cd ~/nextcloud-aio

创建并打开 docker compose 文件进行编辑。

$ nano docker-compose.yml

将以下代码粘贴进去。

version: "3.8"

volumes:
  nextcloud_aio_mastercontainer:
    name: nextcloud_aio_mastercontainer # This line is not allowed to be changed

services:
  nextcloud:
    image: nextcloud/all-in-one:latest # Must be changed to 'nextcloud/all-in-one:latest-arm64' when used with an arm64 CPU
    restart: always
    container_name: nextcloud-aio-mastercontainer
    volumes:
      - nextcloud_aio_mastercontainer:/mnt/docker-aio-config # This line is not allowed to be changed
      - /var/run/docker.sock:/var/run/docker.sock:ro
    ports:
      - 80:80
      - 8080:8080
      - 8443:8443

按 Ctrl + X 保存文件,并在提示时输入 Y。

步骤 5 - 运行 Nextcloud AIO

创建并启动 Docker 容器。

$ docker compose up -d

检查容器的状态。

$ docker compose ps

你将看到如下输出。

NAME                            COMMAND                  SERVICE             STATUS              PORTS
nextcloud-aio-mastercontainer   "start.sh /usr/bin/s…"   nextcloud           running (healthy)   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:8443->8443/tcp, :::8443->8443/tcp

你也可以使用 docker ps 命令获取更详细的状态。要查看容器日志,可使用 docker logs <容器名称> 命令。

步骤 6 - 访问 Nextcloud AIO

打开网址 https://nextcloud.example.com:8443,你会看到如下界面。

在 Ubuntu 22.04 上安装 Nextcloud AIO 一体式私有云

复制屏幕上显示的密码,并点击“打开 Nextcloud AIO 登录”按钮。

在 Ubuntu 22.04 上安装 Nextcloud AIO 一体式私有云

输入密码并点击“登录”按钮继续。

在 Ubuntu 22.04 上安装 Nextcloud AIO 一体式私有云

在“新建 AIO 实例”部分输入你的域名 nextcloud.example.com,然后点击“提交”按钮开始安装 Nextcloud。

在 Ubuntu 22.04 上安装 Nextcloud AIO 一体式私有云

它会带你进入如下页面。

在 Ubuntu 22.04 上安装 Nextcloud AIO 一体式私有云

在这里你可以更改服务器时区并启动一个新的 Nextcloud 实例。选择你想要安装的插件,然后点击“保存更改”按钮以保存选项。

在 Ubuntu 22.04 上安装 Nextcloud AIO 一体式私有云

点击“启动容器”以启动 Nextcloud 及其插件容器。该过程会使用 Let's Encrypt 为你所选的域名自动生成 SSL 证书,并运行 Apache 服务器容器,将 Nextcloud 实例暴露到公网。

根据所安装插件的数量,此过程可能需要几分钟。稍后,你可以在页面上看到容器进度。

在 Ubuntu 22.04 上安装 Nextcloud AIO 一体式私有云

容器前的黄色可能表示它们正在启动,或者可能处于不健康状态。点击“重新加载”按钮再次检查。当所有容器都成功启动后,系统会提供你 Nextcloud 实例的用户名和密码。

在 Ubuntu 22.04 上安装 Nextcloud AIO 一体式私有云

点击“打开你的 Nextcloud”按钮以启动你的 Nextcloud 安装。你也可以直接通过网址 https://nextcloud.example.com 访问。你会被带到如下登录界面。

在 Ubuntu 22.04 上安装 Nextcloud AIO 一体式私有云

输入你从上一个页面获得的用户名 admin 和密码,然后按“登录”以启动 Nextcloud 仪表盘。

在 Ubuntu 22.04 上安装 Nextcloud AIO 一体式私有云

从此刻起,你就可以开始使用 Nextcloud 了。

步骤 7 - 备份与恢复 Nextcloud

在备份之前,你需要停止 Apache 容器,因为它会阻塞 Nextcloud AIO 实例。在对 AIO 界面执行任何操作时,都需要这样做。运行以下命令停止 apache 容器。

$ docker stop nextcloud-aio-apache

通过访问 https://nextcloud.example.com:8443 登录 AIO 界面。

在 Ubuntu 22.04 上安装 Nextcloud AIO 一体式私有云

输入备份所在目录,然后点击“提交”按钮以创建备份。你会看到如下界面。

在 Ubuntu 22.04 上安装 Nextcloud AIO 一体式私有云

Nextcloud AIO 会创建一个加密备份,并为你提供相应的密码。该密码将用于该文件夹中的所有备份。恢复实例时也需要此密码。点击“创建备份”开始创建备份。过程会要求确认,按“是”开始。这将停止所有正在运行的容器并启动备份容器。

在 Ubuntu 22.04 上安装 Nextcloud AIO 一体式私有云

点击“重新加载”按钮刷新页面。点击小箭头以展开所有备份和恢复选项。

在 Ubuntu 22.04 上安装 Nextcloud AIO 一体式私有云

在这里你可以恢复已有的备份、添加需要备份的额外目录,并为 cron 任务设置执行定时备份和更新的时间。

恢复 Nextcloud

对于全新安装,你可以使用已有的备份进行恢复。

如果备份存储在 /mnt/backup/borg 目录中,则将备份路径指定为 /mnt/backup。实际的备份应始终位于子目录中。输入你的备份路径和密码。

在 Ubuntu 22.04 上安装 Nextcloud AIO 一体式私有云

点击“提交”按钮以继续恢复。

在 Ubuntu 22.04 上安装 Nextcloud AIO 一体式私有云

点击“测试路径和密码”按钮,在开始恢复过程之前验证备份路径和密码。

在 Ubuntu 22.04 上安装 Nextcloud AIO 一体式私有云

在这里你可以检查备份文件的完整性。从下拉菜单中选择正确的备份,然后点击“恢复所选备份文件”以开始该过程。

在 Ubuntu 22.04 上安装 Nextcloud AIO 一体式私有云

你可以在下一个页面看到备份容器正在运行。等待一段时间后点击“重新加载”按钮,查看过程是否完成。你会看到如下界面,确认恢复成功。

在 Ubuntu 22.04 上安装 Nextcloud AIO 一体式私有云

为远程上传准备备份

如果你想将备份同步或上传到远程位置,就需要先准备备份归档。

安装 BorgBackup 工具。

$ sudo apt install borgbackup

将备份归档挂载到 /tmp/borg 文件夹。

$ sudo mkdir -p /tmp/borg && sudo borg mount "/mnt/backup/borg" /tmp/borg

系统会提示你输入备份密码。

Enter passphrase for key /mnt/backup/borg:

输入密码以挂载归档。检查文件夹中已挂载的归档。

$ sudo ls /tmp/borg -al
total 4
drwxr-xr-x  1 root root    0 Oct 10 19:13 .
drwxrwxrwt 13 root root 4096 Oct 10 19:13 ..
drwxr-xr-x  1 root root    0 Oct  9 23:15 20221010_041554-nextcloud-aio

现在你可以将文件 20221010_041554-nextcloud-aio 复制或同步到远程位置。

卸载归档。

$ sudo umount /tmp/borg

如果你想删除已有的备份归档,可以使用以下命令。

$ sudo borg delete --stats --progress "/mnt/backup/borg::20221010_041554-nextcloud-aio"

步骤 8 - 更新 Nextcloud AIO / Nextcloud

Nextcloud AIO 每天运行一个 cron 任务,检查 Nextcloud AIO 及所有其余容器的更新。

更新 Nextcloud 容器

Nextcloud AIO 界面会在页面上显示任何容器的可用更新。要更新任意容器,请点击“停止容器”按钮停止所有容器,然后再次启动它们以执行更新。

在启动容器之前,请务必先备份数据。

更新 Nextcloud AIO 主容器

如果 AIO 主容器有更新,界面上会出现一条关于更新的消息。点击“更新”按钮执行更新。

结语

至此,关于在 Ubuntu 22.04 服务器上安装 Nextcloud AIO 的教程就结束了。如果你有任何疑问,请在下方评论区留言。