好的,这是一个从配置好 Ubuntu Server 开始,通过 OpenVPN 访问自建 Nextcloud 的全流程 Markdown 教程。
本教程采用目前社区推荐的最佳实践:
- 使用自动化脚本安装 OpenVPN:避免手动配置证书和网络规则的复杂性,一键完成部署。
- 使用 Docker 和 Docker Compose 部署 Nextcloud:隔离运行环境,简化安装、维护和升级过程。
教程:在 Ubuntu 上部署 Nextcloud 并通过 OpenVPN 安全访问#
本教程将引导您完成以下目标:
- 在您的 Ubuntu 服务器上安装并配置一个 OpenVPN 服务器。
- 使用 Docker 部署一个稳定运行的 Nextcloud 实例(包含数据库和缓存)。
- 配置客户端设备,通过 VPN 隧道安全地访问您的私有云盘。
前提条件#
- 一台已经安装好 Ubuntu Server 20.04/22.04 LTS 的服务器。
- 拥有服务器的
root
或sudo
权限。 - 服务器拥有一个**静态公网 IP 地址**(或使用 DDNS 将域名指向您的动态公网 IP)。
步骤一:系统更新与准备#
首先,登录到您的服务器,更新软件包列表和已安装的软件。
sudo apt update && sudo apt upgrade -y
安装一些必要的工具软件。
sudo apt install -y curl wget
步骤二:安装并配置 OpenVPN 服务器#
我们将使用一个广受好评的自动化脚本来安装 OpenVPN,它可以处理所有复杂的配置。
-
下载安装脚本
从 GitHub 下载openvpn-install
脚本。curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh
-
赋予脚本执行权限
chmod +x openvpn-install.sh
-
运行脚本并进行交互式配置
以 root 权限运行脚本,它会引导您完成一系列配置。sudo ./openvpn-install.sh
您将会看到一系列问题,请根据您的实际情况和以下建议进行选择:
- IP address: 脚本会自动检测您的公网 IP,直接按回车确认即可。
- Enable IPv6 support: 如果您的网络支持 IPv6,可以选择
y
,否则选n
。(选n
通常没问题)。 - Port: 使用默认的
1194
端口即可,按回车。 - Protocol: 使用默认的
UDP
协议,按回车。UDP 速度更快。 - DNS: 推荐选择
Cloudflare
或Google
的 DNS,输入对应的数字后按回车。 - Enable compression: 选择
n
。压缩已被证实存在安全隐患(VORACLE 攻击)。 - Customize encryption settings: 选择
n
。脚本默认的加密设置已经非常安全。
脚本会自动安装和配置 OpenVPN。完成后,它会提示您创建一个客户端配置文件。
-
创建第一个客户端配置文件
- Client name: 输入一个客户端名称,例如
my-laptop
或my-phone
,然后按回车。 - Password protect the client: 您可以选择是否为配置文件添加密码。为了方便,初次可以选
n
(不加密),直接导入使用。
脚本执行完毕后,会在当前目录下生成一个
.ovpn
文件,例如/root/my-laptop.ovpn
。这个文件就是客户端连接 VPN 所需的唯一凭证,请务必妥善保管。如果您想添加更多用户,只需再次运行
./openvpn-install.sh
脚本,它会提供添加用户、吊销用户等管理选项。 - Client name: 输入一个客户端名称,例如
步骤三:安装 Docker 和 Docker Compose#
Nextcloud 将运行在 Docker 容器中,这让我们无需在主机系统上安装 PHP、Web服务器和数据库。
-
安装 Docker
使用官方的便利脚本来安装 Docker。curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh
将当前用户添加到
docker
组,这样执行docker
命令时就不用加sudo
了。(执行后需要重新登录 shell 才能生效)sudo usermod -aG docker $USER newgrp docker # 立即生效
-
安装 Docker Compose
我们将从 GitHub Release 页面下载 Docker Compose 的二进制文件。# 定义版本和目标路径 COMPOSE_VERSION="v2.27.0" # 您可以去GitHub查看最新版本 DESTINATION="/usr/local/bin/docker-compose" # 下载 sudo curl -L "https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o $DESTINATION # 添加执行权限 sudo chmod +x $DESTINATION
验证安装是否成功:
docker --version docker-compose --version
如果都输出了版本号,说明安装成功。
步骤四:部署 Nextcloud (使用 Docker Compose)#
现在,我们将创建一个 docker-compose.yml
文件来定义 Nextcloud 服务。
-
创建 Nextcloud 工作目录
在这个目录中,我们将存放配置文件和数据。mkdir ~/nextcloud cd ~/nextcloud
-
创建
docker-compose.yml
文件
使用nano
或vim
创建并编辑这个文件。nano docker-compose.yml
将以下内容**完整地**粘贴到文件中。
version: '3.8' services: # Nextcloud 主服务 app: image: nextcloud:latest container_name: nextcloud_app restart: unless-stopped ports: - "8080:80" # 将服务器的8080端口映射到容器的80端口 volumes: - ./nextcloud:/var/www/html - ./apps:/var/www/html/apps - ./config:/var/www/html/config - ./data:/var/www/html/data environment: - MYSQL_PASSWORD=your_strong_db_password # <--- !! 修改这里 !! 数据库密码 - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud - MYSQL_HOST=db - REDIS_HOST=redis depends_on: - db - redis # MariaDB 数据库服务 db: image: mariadb:10.6 container_name: nextcloud_db restart: unless-stopped command: --transaction-isolation=READ-COMMITTED --log-bin=ROW volumes: - ./db:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=your_strong_root_password # <--- !! 修改这里 !! 数据库root密码 - MYSQL_PASSWORD=your_strong_db_password # <--- !! 修改这里 !! 与上面app服务中的密码保持一致 - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud # Redis 缓存服务 (提升性能) redis: image: redis:alpine container_name: nextcloud_redis restart: unless-stopped volumes: nextcloud: apps: config: data: db:
-
重要:修改密码
在保存文件之前,**务必**将文件中所有your_strong_..._password
的地方替换为您自己设置的强密码。MYSQL_PASSWORD
的值在app
和db
服务中必须完全相同。修改完成后,按
Ctrl + X
,然后按Y
,再按回车保存并退出nano
。 -
启动 Nextcloud 服务
在~/nextcloud
目录下,执行以下命令来启动所有服务。-d
参数表示在后台运行。docker-compose up -d
Docker 会开始拉取镜像并创建容器。这个过程需要几分钟。您可以使用
docker-compose ps
查看服务状态,确保所有服务的State
都是Up
。
步骤五:配置 OpenVPN 客户端#
现在服务器已经准备就绪,我们需要配置您的电脑或手机来连接它。
-
获取
.ovpn
配置文件
您需要将在步骤二中生成的.ovpn
文件(例如my-laptop.ovpn
)从服务器下载到您的本地设备上。您可以使用scp
、FileZilla
或任何其他 SFTP 工具。例如,在您的**本地电脑**上打开终端,使用
scp
命令:# 将 <server_ip> 和 <user> 替换为您的服务器信息 scp <user>@<server_ip>:/root/my-laptop.ovpn .
-
安装 OpenVPN 客户端软件
- Windows: OpenVPN Connect
- macOS: Tunnelblick
- Linux: 使用包管理器安装
openvpn
。 - Android/iOS: 在应用商店搜索 "OpenVPN Connect"。
-
导入配置并连接
打开您安装的客户端软件,选择 "Import Profile" (导入配置文件),然后选中您刚刚下载的.ovpn
文件。导入后,点击 "Connect" (连接) 按钮。如果一切顺利,您应该会看到连接成功的日志,您的设备现在已经加入了家庭服务器所在的虚拟局域网。
步骤六:访问并完成 Nextcloud 初始化#
连接 VPN 成功后,您的设备就可以通过服务器的**内网 IP**访问 Nextcloud 了。
-
获取服务器的 VPN IP 地址
在 OpenVPN 的配置中,服务器的 VPN IP 通常是10.8.0.1
。 -
访问 Nextcloud
打开您本地设备上的浏览器,在地址栏输入:
http://10.8.0.1:8080
您应该能看到 Nextcloud 的初始化页面。
-
创建管理员账户
- 设置您的**管理员用户名**和**密码**。
- 数据库部分**不要修改**,Docker Compose 已经帮我们自动配置好了。
- 点击 "安装完成" 按钮。
初始化过程可能需要一两分钟。完成后,您将被重定向到 Nextcloud 的主界面。
恭喜!您现在拥有一个完全私有、通过安全 VPN 隧道访问的云盘了!
后续步骤与建议#
- 数据安全: 定期备份
~/nextcloud
目录下的所有文件,特别是db
和nextcloud
卷,这是您的全部数据! - 客户端同步: 下载 Nextcloud 的桌面和移动客户端,输入服务器地址
http://10.8.0.1:8080
和您的账户密码,即可开始同步文件。 - 添加更多 VPN 用户: 再次运行服务器上的
./openvpn-install.sh
脚本来管理用户。
Created: 2025-09-19