Ubuntu 服务器实战:Docker 部署 Nextcloud+ZeroTier,打造可远程访问的个人云

本次部署基于 Ubuntu 系统(桌面版 / Server 版通用,核心操作一致),硬件配置参考如下,低配置主机可顺畅运行:

ubuntu服务器配置如下

硬件类型 具体型号/参数
CPU Intel Core i3-6100T
内存条 8GB(DDR4 2400mhz)
硬盘 东芝(Toshiba)机械硬盘 500GB

Nextcloud 和 ZeroTier 部署方案

整套方案通过 Docker 实现 Nextcloud 容器化部署,搭配 ZeroTier 构建虚拟局域网,无需公网 IP 即可实现远程访问,步骤清晰且隔离性强。

1. 安装 Docker 和 Docker Compose

首先,我们需要在 Ubuntu 系统上安装 Docker 和 Docker Compose。

  1. 更新系统并安装必要工具

    bash 复制代码
    sudo apt update && sudo apt upgrade -y
    sudo apt install -y curl ufw vim
  2. 安装 Docker

    官方的一键安装脚本非常方便:

    bash 复制代码
    curl -fsSL https://get.docker.com | sh
  3. 将当前用户加入 docker 组 (避免每次用 sudo):

    bash 复制代码
    sudo usermod -aG docker $USER
    newgrp docker # 刷新用户组,或注销后重新登录生效
  4. 安装 Docker Compose

    bash 复制代码
    sudo curl -L "https://github.com/docker/compose/releases/download/v2.27.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
  5. Docke配置镜像源

bash 复制代码
     sudo  vim /etc/docker/daemon.json
     #daemon.json如下所示
{
"registry-mirrors": [
"https://proxy.1panel.live",
"https://docker.1panel.top",
"https://docker.m.daocloud.io",
"https://docker.1ms.run",
"https://docker.ketches.cn"
]
}
  1. 验证安装

    bash 复制代码
    docker --version
    docker-compose --version

2. 部署 Nextcloud (Docker Compose方式)

使用 Docker Compose 可以通过一个配置文件管理所有服务,非常清晰方便。

  1. 创建一个专用目录 (例如 nextcloud)并进入:

    bash 复制代码
    mkdir ~/nextcloud && cd ~/nextcloud
  2. 创建 docker-compose.yml 文件

    使用 vim 或其他编辑器创建文件:

    bash 复制代码
    sudo vim docker-compose.yml

    将以下内容粘贴到文件中,然后保存退出( 输入 :wq, 回车)。

    yaml 复制代码
    version: '3'
    
    services:
      nextcloud:
        image: nextcloud:latest
        container_name: nextcloud
        restart: unless-stopped
        ports:
          - "80:80"
          - "443:443"
        environment:
          - MYSQL_HOST=nextcloud-db
          - MYSQL_DATABASE=nextcloud
          - MYSQL_USER=nextcloud
          - MYSQL_PASSWORD=your_strong_db_password_here # 请修改为一个强密码!
        volumes:
          - nextcloud_data:/var/www/html
          - ./apps:/var/www/html/custom_apps
          - ./config:/var/www/html/config
          - ./data:/var/www/html/data
        depends_on:
          - nextcloud-db
    
      nextcloud-db:
        image: mariadb:10.6
        container_name: nextcloud-db
        restart: unless-stopped
        environment:
          - MYSQL_ROOT_PASSWORD=your_strong_root_db_password_here # 请修改为一个强密码!
          - MYSQL_DATABASE=nextcloud
          - MYSQL_USER=nextcloud
          - MYSQL_PASSWORD=your_strong_db_password_here # 此处的密码要与上面nextcloud服务中的MYSQL_PASSWORD一致!
        volumes:
          - db_data:/var/lib/mysql
        command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb-read-only-compressed=OFF
    
    volumes:
      nextcloud_data:
      db_data:

    重要提示

    • 务必修改 MYSQL_PASSWORDMYSQL_ROOT_PASSWORD 的值,并使用强密码。
    • 本例为了简单,直接将Nextcloud的80和443端口映射到了主机。如果你的主机有其他服务占用这些端口,需要修改前面的主机端口(例如 8080:80)。
  3. 启动 Nextcloud 服务

    docker-compose.yml 文件所在目录运行:

    bash 复制代码
    docker-compose up -d

    -d 表示在后台运行。Docker 会自动下载镜像并启动容器。

  4. 查看启动日志(可选):

    bash 复制代码
    docker-compose logs -f
  5. 初步访问

    启动完成后,在你同一局域网 下的浏览器中,访问 http://你的Ubuntu主机IP(例如 http://192.168.1.100)。你应该能看到 Nextcloud 的初始化页面,创建管理员账户并配置数据库时,数据库用户、密码、数据库名等就填写你在 docker-compose.yml 里设置的那些值。

3. 安装和配置 ZeroTier

Nextcloud 在本地局域网部署好后,我们用 ZeroTier 来实现远程访问。

  1. 安装 ZeroTier

    bash 复制代码
    curl -s https://install.zerotier.com | sudo bash
  2. 注册 ZeroTier 并创建网络

    • 访问 ZeroTier 官网 注册一个账号。
    • 登录后,在 "Networks" 页面,点击 "Create a Network",这会生成一个新的网络。记住生成的 Network ID(一串16位的字符)。
  3. 将你的小主机加入网络

    bash 复制代码
    sudo zerotier-cli join <你的Network ID>

    例如:sudo zerotier-cli join 1a2b3c4d5e6f7890

  4. 在官网授权设备

    • 回到 ZeroTier 官网的控制面板,找到你创建的网络。
    • 在 "Members" 选项卡下,你应该能看到你的小主机(通过Node ID识别),勾选前面那个 "Auth?" 复选框,授权它加入网络。稍等片刻,它会获得一个虚拟局域网IP(例如 192.168.192.100)。
  5. 在其他设备上安装并加入 ZeroTier

    • 在你需要访问 Nextcloud 的手机电脑上也安装 ZeroTier 客户端,并加入同一个 Network ID。
    • 同样地,回到官网控制面板,授权这些设备。
    • 现在,你的所有设备都在同一个虚拟局域网里了。
  6. 通过 ZeroTier 访问 Nextcloud

    • 在你手机或电脑的浏览器中,直接输入小主机的 ZeroTier 虚拟IP地址,例如 http://192.168.192.100,就可以远程访问到你的 Nextcloud 了。

4. 可选优化与调整

  • 数据目录迁移 :如果你希望 Nextcloud 的数据存储在机械硬盘上,可以在 docker-compose.ymlvolumes 部分,将 nextcloud_datadb_data 的映射路径修改到机械硬盘的挂载点,例如 /mnt/your_hdd/nextcloud_data:/var/www/html

  • 防火墙设置 :如果开启了 UFW(防火墙),记得放行所需端口:

    bash 复制代码
    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp
    sudo ufw allow 9993/udp # ZeroTier 的通信端口

常用管理和故障排除命令

  • 查看容器状态docker-compose ps
  • 停止服务docker-compose down (在当前目录下运行,会停止并删除容器,但保留数据卷)
  • 重启服务docker-compose restart
  • 查看日志docker-compose logs -f nextcloud (查看Nextcloud容器的日志)
  • 进入容器内部 (用于调试):docker exec -it nextcloud bash

这套组合方案(Docker + Nextcloud + ZeroTier)的优点是高度集成、隔离性好、管理方便,并且通过 ZeroTier 实现了安全的点对点直连。

测试图如下


如果部署过程中遇到任何问题,欢迎在评论区留言讨论~

相关推荐
Benszen5 小时前
Docker容器化技术实战指南
运维·docker·容器
Hommy885 小时前
【开源剪映小助手】Docker 部署
docker·容器·开源·github·aigc
一叶知秋yyds6 小时前
Ubuntu 虚拟机安装 OpenClaw 完整流程
linux·运维·ubuntu·openclaw
专吃海绵宝宝菠萝屋的派大星7 小时前
使用Dify对接自己开发的mcp
java·服务器·前端
斯普信云原生组7 小时前
Prometheus 环境监控虚机 Redis 方案(生产实操版)
运维·docker·容器
大数据新鸟7 小时前
操作系统之虚拟内存
java·服务器·网络
喵了几个咪7 小时前
如何在 Superset Docker 容器中安装 MySQL 驱动
mysql·docker·容器·superset
工具罗某人7 小时前
docker compose部署kafka集群搭建
docker·容器·kafka
楠奕8 小时前
CentOS7安装GoldenDB单机搭建及常见报错解决方案
linux·运维·服务器
GCTTTTTT9 小时前
远程服务器走本地代理
运维·服务器