本页内容
- 先决条件
- 步骤 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,你会看到如下界面。

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

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

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

它会带你进入如下页面。

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

点击“启动容器”以启动 Nextcloud 及其插件容器。该过程会使用 Let's Encrypt 为你所选的域名自动生成 SSL 证书,并运行 Apache 服务器容器,将 Nextcloud 实例暴露到公网。
根据所安装插件的数量,此过程可能需要几分钟。稍后,你可以在页面上看到容器进度。

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

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

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

从此刻起,你就可以开始使用 Nextcloud 了。
步骤 7 - 备份与恢复 Nextcloud
在备份之前,你需要停止 Apache 容器,因为它会阻塞 Nextcloud AIO 实例。在对 AIO 界面执行任何操作时,都需要这样做。运行以下命令停止 apache 容器。
$ docker stop nextcloud-aio-apache
通过访问 https://nextcloud.example.com:8443 登录 AIO 界面。

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

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

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

在这里你可以恢复已有的备份、添加需要备份的额外目录,并为 cron 任务设置执行定时备份和更新的时间。
恢复 Nextcloud
对于全新安装,你可以使用已有的备份进行恢复。
如果备份存储在 /mnt/backup/borg 目录中,则将备份路径指定为 /mnt/backup。实际的备份应始终位于子目录中。输入你的备份路径和密码。

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

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

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

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

为远程上传准备备份
如果你想将备份同步或上传到远程位置,就需要先准备备份归档。
安装 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 的教程就结束了。如果你有任何疑问,请在下方评论区留言。