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 实现了安全的点对点直连。

测试图如下


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

相关推荐
曾小蛙20 小时前
【TWIST2】 PICO重映射G1在ubuntu 22.04下环境配置
ubuntu·g1·twist2·gmr2·pico4u·xrobotoolkit
mN9B2uk1720 小时前
大数据量高并发的数据库优化
服务器·数据库·oracle
我是谁??20 小时前
ubuntu22.04 通过docker部署vLLM(Qwen3-0.6B)大模型+New API+OpenWebUI
docker·容器·vllm
starvapour20 小时前
Ubuntu部署gitlab频繁出现502的问题
linux·ubuntu·gitlab
土星云SaturnCloud20 小时前
边缘计算赋能智慧工地:从“看得见“到“管得住“的智能化升级
服务器·人工智能·ai·边缘计算
运维瓦工20 小时前
DevOps 生态介绍(十):Docker Compose 核心 YAML 配置详解与常用命令大全
spring cloud·docker·容器
云烟成雨TD21 小时前
Spring AI 1.x 系列【59】容器化开发支持:Docker Compose 与 Testcontainers
人工智能·spring·docker
Plastic garden21 小时前
K8s(10)NFS 的动态 PV 创建数据库给k8s的mysql和redis
docker·容器·kubernetes
卡梅德生物科技小能手21 小时前
卡梅德生物科普MCAM(黑色素瘤细胞黏附分子)
人工智能·经验分享·深度学习
zhangfeng113321 小时前
ps aux讲解,结合国家超算中心 hpc apptainer
linux·服务器·网络