[!NOTE] 私人网盘已经成为很多数码玩家和效率狂人的标配。然而,传统的内网穿透或公网端口映射(暴露 80/443 或 8080 端口)相当于在公网上开了一扇窗,每天都会遭受成千上万次恶意扫描与爆破。今天第一篇,老周教大家用 Tailscale + Nextcloud 强强联手:不需要公网 IP,不暴露任何路由器端口,在纯内网环境下部署出属于你的安全私人远程云数据中心。
很多玩家为了在外网访问家里的群晖、UNAS 或自建的 Nextcloud,会在路由器上开启 DDNS,并把网页服务的端口(如 80、443、8080)直接映射到公网上。
然而,公网上充斥着无数的自动扫描脚本(蜘蛛和黑客肉鸡)。一旦你的端口暴露:
通过 Tailscale,我们可以在不暴露任何公网接口的情况下实现安全的远程连接:
[在外手机 / 笔记本 (运行 Tailscale)]│▼ (通过 WireGuard 加密隧道)[家庭路由器 (不开放任何端口!)]│▼ (安全直达)[本地服务器 (运行 Tailscale + Nextcloud 容器)]
为了让部署过程最简化且易于后期维护,我们推荐使用 Docker Compose。它能将 Web 容器、数据库以及缓存加速器(Redis)打包一键运行。
⚙️ 部署步骤:
1.在你的服务器(如 Linux 主机、NAS 或 Mac 终端)中,新建一个工作目录:
mkdir -p ~/nextcloud-server && cd ~/nextcloud-server2.新建一个配置文件 docker-compose.yml:
nano docker-compose.yml3.复制并粘贴以下经过性能优化的 Docker Compose 黄金代码:
version: '3.8'
services:
# 数据库服务:使用 MariaDB 保证数据稳定
nextcloud-db:
image: mariadb:10.6
container_name: nextcloud-db
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
restart: always
volumes:
- ./db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=your_root_password # 数据库 root 密码
- MYSQL_PASSWORD=your_db_password # nextcloud 数据库密码
- MYSQL_DATABASE=nextcloud # 数据库名称
- MYSQL_USER=nextcloud # 数据库用户名
# 缓存服务:使用 Redis 极大地加速 Nextcloud 的文件读取和锁性能
nextcloud-redis:
image: redis:alpine
container_name: nextcloud-redis
restart: always
# Nextcloud 主服务
nextcloud-app:
image: nextcloud:latest
container_name: nextcloud-app
restart: always
ports:
- "8080:80" # 映射本地的 8080 端口
volumes:
- ./html:/var/www/html # 网页主目录
- ./data:/var/www/html/data # 网盘数据存放目录
environment:
- MYSQL_HOST=nextcloud-db
- REDIS_HOST=nextcloud-redis
depends_on:
- nextcloud-db
- nextcloud-redis1.一键启动:
在终端运行以下命令,后台拉取镜像并启动:
docker compose up -d容器成功运行后,我们首先在局域网内进行第一次访问和初始化配置。
2.创建管理员账号:
在网页上方输入你想要设置的管理员用户名和密码。
3.数据库配置:
在下方配置中选择 MySQL/MariaDB,并填入我们在 docker-compose.yml 中设置的参数:
o数据库用户:nextcloud
o数据库密码:your_db_password
o数据库名:nextcloud
o数据库主机:nextcloud-db(这里直接填容器服务名即可)
4.点击 “安装”。稍等一两分钟,Nextcloud 会自动初始化数据库并进入网盘主界面。
此时,你的私人网盘已经在局域网内成功运行。但如果你在室外打开手机的 Tailscale 并输入主机的 Tailscale IP 进行访问时,Nextcloud 会弹出一个红色的报错页面:
“通过未信任域名访问 (Access through untrusted domain)”。
这是 Nextcloud 自带的安全防护机制。在下一期中,谷先生将带大家进入【实战配置与多端篇】:
点个关注,我们下一期详细操作实战见!