如何在VPS上安装Nextcloud

ApexVPS 团队撰写 • 最后更新:2026 年 7 月 • 9 分钟阅读

nextcloud vps 安装指南将引导您在完全可控的服务器上搭建自己的私有云——文件、日历、联系人和照片。在VPS上运行Nextcloud可获得专用资源、完整的root访问权限,且无按用户收费,数据始终掌握在您手中。下文涵盖前置要求、两种成熟的安装路径(Docker Compose或手动LAMP架构)、如何使用Let's Encrypt添加HTTPS,以及保持服务器快速安全的调优和备份步骤。每条命令均针对全新Ubuntu或Debian服务器。

为什么要在VPS上自行托管Nextcloud?

Nextcloud是一款开源平台,用您自行运行的软件取代Google Drive、Dropbox及大部分生产力套件。VPS是其天然归宿:不同于共享主机,您拥有root访问权限、固定月费以及可预测的性能。在真正的专用VPS上,没有吵闹的邻居争夺CPU,这在多人同时同步文件时尤为重要。如果您在权衡哪些服务值得自行运行,我们的选择VPS用于自托管概述比较了常见的负载类型及各自所需的余量。

开始前的前置要求

您需要三样东西:一台运行Ubuntu 22.04/24.04或Debian 12的VPS、一个可修改DNS的域名,以及通过SSH以sudo用户身份访问服务器。测试时域名并非严格必需,但没有它您无法签发受信任的TLS证书,因此实际使用中请将其视为必需。

选择合适的VPS规格

规格取决于使用人数以及是否存储媒体文件。对于单用户或家庭同步文档,2 vCPU和4 GB RAM已足够。一旦添加照片、回忆或媒体应用,或活跃账户超过几个,请升级到Business级或更高——额外的RAM、更快的NVMe和小时级快照可让缩略图生成和预览流畅得多。您可以在VPS定价页面比较各层级;后续升级很快,因此从小规模开始也无妨。

将域名指向服务器

创建一条A记录(若使用IPv6,再创建一条AAAA记录),将cloud.example.com等主机名指向服务器的公网IP。DNS可能需要一些时间才能生效。在请求证书前请确认其已解析:

dig +short cloud.example.com

路径1——使用Docker Compose安装Nextcloud

容器是获得干净、可重复安装的最快方式,并让Nextcloud、其数据库和缓存与系统其余部分隔离。如果您对容器还不熟悉,我们的VPS上Docker入门指南首先讲解了基础知识。使用官方便捷脚本安装Docker,然后将您的用户添加到docker组:

curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
# log out and back in so the group change takes effect

创建项目文件夹和一个compose.yaml,运行Nextcloud及MariaDB和Redis。应用绑定到127.0.0.1:8080,因此只能通过后续添加的反向代理访问,不能直接从互联网访问:

mkdir ~/nextcloud && cd ~/nextcloud
nano compose.yaml
services:
  db:
    image: mariadb:10.11
    restart: always
    command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
    volumes:
      - db:/var/lib/mysql
    environment:
      - MARIADB_ROOT_PASSWORD=change-this-root-password
      - MYSQL_PASSWORD=change-this-db-password
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud

  redis:
    image: redis:alpine
    restart: always

  app:
    image: nextcloud:apache
    restart: always
    ports:
      - "127.0.0.1:8080:80"
    depends_on:
      - db
      - redis
    volumes:
      - nextcloud:/var/www/html
    environment:
      - MYSQL_HOST=db
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=change-this-db-password
      - REDIS_HOST=redis

volumes:
  db:
  nextcloud:

启动堆栈,并检查三个容器是否都正常启动:

docker compose up -d
docker compose ps

Nextcloud现在正在localhost:8080上监听。跳到TLS部分,通过HTTPS安全地暴露它。

路径2——在LAMP架构上手动安装

如果您倾向于自己管理各组件,经典的Linux、Apache、MariaDB和PHP(LAMP)安装让您拥有完全控制权。更新系统并安装Web服务器、数据库以及Nextcloud所需的PHP扩展:

sudo apt update && sudo apt upgrade -y
sudo apt install -y apache2 mariadb-server libapache2-mod-php unzip \
  php php-gd php-mysql php-curl php-mbstring php-intl php-xml \
  php-zip php-bcmath php-gmp php-imagick

加固数据库,然后创建专用数据库和用户:

sudo mysql_secure_installation
sudo mysql -u root -p
CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'change-this-db-password';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
EXIT;

将最新版本下载到 Web 根目录并设置所有权,以便 Apache 可以写入:

cd /var/www
sudo wget https://download.nextcloud.com/server/releases/latest.zip
sudo unzip latest.zip
sudo chown -R www-data:www-data /var/www/nextcloud

为您的域名创建 Apache 虚拟主机,启用它以及 Nextcloud 所需的模块,然后重新加载:

sudo a2enmod rewrite headers env dir mime
sudo a2ensite nextcloud.conf
sudo systemctl reload apache2

使用 TLS(Let's Encrypt)保护

绝不要在纯 HTTP 上运行 Nextcloud——登录和文件将未加密传输。Let's Encrypt 项目的 Certbot 可颁发免费、受信任的证书并自动续期。对于手动 Apache 安装,请使用 Apache 插件:

sudo apt install -y certbot python3-certbot-apache
sudo certbot --apache -d cloud.example.com

对于 Docker 路径,将 Nginx 置于前端作为反向代理,转发至127.0.0.1:8080,然后让 Certbot 保护它:

sudo apt install -y nginx certbot python3-certbot-nginx
sudo certbot --nginx -d cloud.example.com

Certbot 会安装一个 systemd 定时器,在证书过期前自动续期。您可以通过试运行来确认续期是否正常:

sudo certbot renew --dry-run

首次设置

在浏览器中打开https://cloud.example.com。在设置界面上,创建您的管理员账户,对于手动安装,请输入您之前创建的数据库名称、用户和密码(Docker 镜像已连接到其数据库,因此会跳过此步骤)。完成向导后,Nextcloud 将进入文件视图。如果看到警告,请立即将您的域名添加到trusted_domains列表中——对于 Docker,这意味着编辑容器内的配置:

docker compose exec -u www-data app \
  php occ config:system:set trusted_domains 1 --value=cloud.example.com

在手动安装中,相同命令在安装目录中运行,使用sudo -u www-data php /var/www/nextcloud/occ ...occ命令行工具是您从此以后的主要管理入口。

调优与后台任务

默认安装可用,但一些更改会带来显著改善。将后台任务从 AJAX 切换为系统 cron,以便即使无人登录也能可靠运行任务。在手动安装中,为 Web 用户添加 cron 条目:

sudo crontab -u www-data -e
# add this line, then save:
*/5 * * * * php -f /var/www/nextcloud/cron.php

然后,在“管理” → “基本设置”下设置“Cron”选项。其他值得尝试的调整:将 PHP memory_limit 提高到至少 512M,启用 Redis 以进行文件锁定和缓存(上述 Compose 文件中已包含),并设置维护窗口,以便在夜间运行繁重任务。运行内置检查有助于发现遗漏:

sudo -u www-data php /var/www/nextcloud/occ status
sudo -u www-data php /var/www/nextcloud/occ setupchecks

可实际还原的备份

您的 VPS 快照是第一道防线——Starter Pro 每日备份,Business 和 Enterprise 每小时快照——但一个好习惯是进行单独的应用程序级备份,您可以逐个文件还原。将 Nextcloud 置于维护模式,导出数据库,归档数据目录,然后关闭维护模式:

sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on
mysqldump --single-transaction -u nextcloud -p nextcloud > nextcloud-db.sql
sudo tar -czf nextcloud-data.tar.gz /var/www/nextcloud/data
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off

对于 Docker 安装,通过docker compose exec -u www-data app php occ ...运行相同的occ调用,并备份命名卷。至少在服务器外存储一份副本,并偶尔测试还原——未测试的备份只是希望。

持续运行

每次发布后,通过内置更新器或 Web 界面更新 Nextcloud,使用sudo apt upgrade保持操作系统补丁更新,并检查管理区域的“安全与设置警告”面板。在基础设施方面,具备 DDoS 防护、私有网络和 24/7 监控,在应用方面,使用 Let's Encrypt 和定期更新,自托管 Nextcloud 是大型云套件的真正可靠替代方案。

常见问题

Nextcloud VPS 设置需要多少 RAM?

对于单用户或家庭同步文档,4 GB RAM 和 2 vCPU 足够。添加照片或视频库、预览生成或多个活跃用户,则 Business 级计划(8 GB RAM 和更快的 NVMe)更合适。Enterprise 为较大团队提供 16 GB 和 NVMe RAID。

我应该选择 Docker 还是手动 LAMP 安装?

如果您想要一个干净、可重复、易于迁移或重建的堆栈,请选择 Docker Compose;如果您更愿意直接管理 Apache、PHP 和 MariaDB,则选择手动 LAMP 路径。两者在具有 root 访问权限的 VPS 上都完全受支持;最终结果是相同的 Nextcloud。

自托管 Nextcloud 安全吗?

是的,只要配置得当:通过 Let's Encrypt 证书为所有内容提供 HTTPS 服务,保持操作系统和 Nextcloud 更新,使用强密码并启用双因素认证,并依赖 VPS 备份。因为您自己托管,没有第三方可以持续访问您的文件。

我需要域名吗?

实际上是的。您可以使用原始 IP 地址进行测试,但受信任的 TLS 证书需要域名,移动和桌面同步客户端也期望有正确的 HTTPS 主机名。只需一个低成本的域名,并将 A 记录指向您的服务器即可。

我可以在没有信用卡的情况下付款吗?

可以。ApexVPS 结账仅通过 OxaPay 支持加密货币,接受 Bitcoin、Ethereum、USDT 及 30+ 种代币 — 无需信用卡或银行账户。注册仅需提供电子邮件以接收访问详情,以及可选的备注,如 SSH 密钥或首选操作系统。无需姓名、地址或 KYC。

准备好托管您自己的云了吗? 查看为自托管设计的 VPS 方案 →