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

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

ubuntu服务器配置如下

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

Nextcloud 和 ZeroTier 部署方案

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

1. 安装 Docker 和 Docker Compose

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

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

    sudo apt update && sudo apt upgrade -y
    sudo apt install -y curl ufw vim
    
  2. 安装 Docker
    官方的一键安装脚本非常方便:

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

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

    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配置镜像源

     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. 验证安装
    docker --version
    docker-compose --version
    

2. 部署 Nextcloud (Docker Compose方式)

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

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

    mkdir ~/nextcloud && cd ~/nextcloud
    
  2. 创建 docker-compose.yml 文件
    使用 vim 或其他编辑器创建文件:

    sudo vim docker-compose.yml
    

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

    version: '3'services:nextcloud:image: nextcloud:latestcontainer_name: nextcloudrestart: unless-stoppedports:- "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/datadepends_on:- nextcloud-dbnextcloud-db:image: mariadb:10.6container_name: nextcloud-dbrestart: unless-stoppedenvironment:- 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/mysqlcommand: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb-read-only-compressed=OFFvolumes:nextcloud_data:db_data:
    

    重要提示

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

    docker-compose up -d
    

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

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

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

3. 安装和配置 ZeroTier

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

  1. 安装 ZeroTier

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

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

    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

    • 首次配置需要需改配置 修改方法如下
    cd ~/nextcloudsudo vim ./config/config.php

在打开的文件中,找到 'trusted_domains’这一行

    'trusted_domains' =>
array (0 => '192.168.1.5', // 你本地的IP1 => '172.25.181.170', // ZeroTier的虚拟IP
),
*  在你手机或电脑的浏览器中,直接输入服务器的 ZeroTier 虚拟IP地址,例如 `http://172.125.181.170`,就可以远程访问到你的 Nextcloud 了。

4. 可选优化与调整

  • 数据目录迁移:如果你希望 Nextcloud 的数据存储在机械硬盘上,可以在 docker-compose.ymlvolumes 部分,将 nextcloud_datadb_data 的映射路径修改到机械硬盘的挂载点,例如 /mnt/your_hdd/nextcloud_data:/var/www/html
  • 防火墙设置:如果开启了 UFW(防火墙),记得放行所需端口:
    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 实现了安全的点对点直连。

测试图如下


手机端测试运行nextcloud
如果部署过程中遇到任何问题,欢迎在评论区留言讨论~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/95359.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/95359.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

移动硬盘删除东西后,没有释放空间

请按照以下步骤&#xff0c;从最简单、最常见的原因开始排查和解决&#xff1a;主要原因和解决方案1. 检查操作系统回收站 (最常见原因&#xff01;)这是最容易被忽略的一点。当您直接在外接移动硬盘上删除文件时&#xff0c;文件并不会直接消失&#xff0c;而是被移到了该移动…

spring boot驴友结伴游网站的设计与实现(代码+数据库+LW)

摘要 本文介绍了基于Spring Boot框架开发的驴友结伴游网站的设计与实现。该网站旨在为旅行爱好者提供一个便捷的平台&#xff0c;使他们能够轻松地寻找伙伴、预定酒店、参与活动以及分享旅行经历。系统主要分为两大模块&#xff1a;用户模块和管理员模块。用户可以通过注册账号…

人机之间的强交互与弱交互

人机交互不是简单的人机&#xff0c;其本质是人机环境系统的交互。在这个系统中&#xff0c;人和机器不是孤立的存在&#xff0c;而是在特定环境下相互影响、相互作用的一部分。人机之间的强交互与弱交互可以从以下几个方面来理解&#xff1a;1、人机强交互通常是指人与机器之间…

OpenCV 基础知识总结

学习网站 https://zhuanlan.zhihu.com/p/483604320 命名空间 using namespace cv; Mat 作用 创建图像&#xff08;矩阵&#xff09; 格式 Mat image; //创建一个空图像image&#xff0c;大小为0 Mat image(100,100,CV_8U); //指定矩阵大小&#xff08;矩阵行数/列数&#xff09…

C#基础(⑦user32.dll)

我们来详细学习如何使用 user32.dll&#xff0c;它是 Windows 系统中负责用户界面交互的核心 DLL&#xff0c;包含窗口管理、消息处理、键盘鼠标输入等功能。下面从基础到进阶&#xff0c;一步一步教你调用其中的常用函数。在 C# 中调用 user32.dll 需要使用 DllImport 特性&am…

Markdown格式.md文件的编辑预览使用

推荐工具Visual Studio Code (VS Code) - 强烈推荐特点&#xff1a;微软出品&#xff0c;免费、开源、跨平台&#xff08;Windows, macOS, Linux&#xff09;。拥有海量插件市场。编辑体验&#xff1a;安装 Markdown All in One 等插件后&#xff0c;可以获得语法高亮、实时预览…

TypeScript:unknown 类型

作为前端开发工程师&#xff0c;在 TypeScript 中使用 unknown 类型是提升类型安全的关键实践。下面我会结合实际开发场景详细讲解其特性和价值。unknown 核心特性1.类型安全的顶级类型与 any 类似&#xff0c;可接受任何类型的赋值&#xff1a;let userInput: unknown; userIn…

2025 批量下载hasmart所有知乎回答,文章和想法,导出txt,html和pdf

之前分享过文章2025 一键批量下载备份知乎回答/文章/想法/专栏/视频/收藏夹&#xff0c;导出txt&#xff0c;html和 pdf &#xff0c;今天继续下载hasmart这个号的所有知乎回答 下载的知乎回答目录&#xff0c;包含发布时间和标题&#xff0c;点击可跳转对应回答。 2019年发布…

mapbox高阶,结合threejs(threebox)添加管道,实现管道流动效果

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言 1.1 ☘️mapboxgl.Map 地图对象 1.2 ☘️mapboxgl.Map style属性 1.3 ☘️threebox add加载网格对象 二、🍀…

语音识别后处理——如何语音断句加上标点、顺滑、ITN等

基本流程 基于cpu的计算&#xff1a; 前往intel官网下载libmkl相关的库&#xff1a;libmkl_core.a、libmkl_gf_lp64.a、libmkl_sequential.a # 静默安装 ./intel-onemkl-2025.2.0.629_offline.sh -a -s --eula accept默认安装目录&#xff1a;/opt/intel/oneapi libmkl相关的…

[吾爱出品] 图片转换王 v1.01 - 多格式支持 / 支持pds、Ai格式

[吾爱出品] 图片转换王 多格式支持 链接&#xff1a;https://pan.xunlei.com/s/VOZ81aeES9JDqlcvXPKYlxwqA1?pwdni9b# 图片转换王」是一款专为设计师、自媒体从业者及普通用户打造的专业图片格式转换工具&#xff0c;秉持绿色便携理念&#xff0c;无需繁琐安装步骤&#xf…

GitLab 18.3 正式发布,更新多项 DevOps、CI/CD 功能【一】

沿袭我们的月度发布传统&#xff0c;极狐GitLab 发布了 18.3 版本&#xff0c;该版本带来了通过直接转移进行迁移、CI/CD 作业令牌的细粒度权限控制、自定义管理员角色、Kubernetes 1.33 支持、通过 API 让流水线执行策略访问 CI/CD 配置等几十个重点功能的改进。下面是对部分重…

【macOS】垃圾箱中文件无法清理的--特殊方法

【macOS】垃圾箱中文件无法清理的特殊方法直接拖拽到 Beyond Compare App中&#xff0c;删除时&#xff0c;选择以下选项即可彻底删除。1.在macOS桌面&#xff0c;将垃圾箱打开2.将垃圾文件和文件夹&#xff0c;拖拽到Beyond Compare界面3.选中待删除的文件和文件夹如上图。4.鼠…

Python UV 管理如何使用镜像源安装 Python

uv python install [版本号] --mirrorhttps://github.com/astral-sh/python-build-standalone/releases/download/这是默认情况下 uv python 安装命令&#xff0c;命令会找到 astral 公司在 Github 上的存储库&#xff0c;然后进行下载。我们只需要为 mirror 增加任意 Github 镜…

SPI片选踩坑实录(硬件片选和软件片选)

SPI&#xff08;Serial Peripheral Interface&#xff0c;串行外设接口&#xff09;的片选信号&#xff08;Chip Select&#xff0c;简称 CS 或 SS&#xff0c;即 Slave Select&#xff09;是 SPI 通信中用于选择从设备的关键控制信号&#xff0c;其作用是在多从设备的 SPI 总线…

从理论到RTL,实战实现高可靠ECC校验(附完整开源代码/脚本)(3) RTL实现实战

第二部分&#xff1a;ECC &#xff08;30&#xff0c; 24&#xff09;RTL实现实战 - 精雕细琢的硬件卫士 理论是基石&#xff0c;实现是关键。本部分将 手把手构建参数化、可综合、高可靠的ECC编解码器 。本部分将以MIPI 协议中Packet Header 用到的ECC(30&#xff0c;24) 为例…

揭密设计模式:像搭乐高一样构建功能的装饰器模式

揭密设计模式&#xff1a;像搭乐高一样构建功能的装饰器模式 在软件开发中&#xff0c;我们常常会遇到一个问题&#xff1a;如何给一个对象动态地添加新功能&#xff0c;同时又不想修改它的代码&#xff1f;如果直接在原有类上修修补补&#xff0c;代码会变得臃肿复杂&#xff…

【Vue】前端 vue2项目搭建入门级(二)

本文不同于【Vue】前端 vue2项目搭建入门级&#xff08;一&#xff09;&#xff0c;本文创建vue2项目方式是一键创建vue2 项目&#xff0c;不需要自己配置。1.cmd进入根目录&#xff0c;输入vue create project&#xff08;vue create 项目名&#xff09;创建一个project的项目…

基于SQLite索引的智能图片压缩存储系统设计与实现

摘要 本文介绍一种基于SQLite索引的智能图片压缩存储系统&#xff0c;通过融合图像质量压缩与数据压缩技术&#xff0c;实现60-80%的压缩率&#xff0c;较传统方法压缩效率提升4-5倍。系统采用“大文件存储索引数据库”架构&#xff0c;针对性解决海量图片数据迁移与存储中的核…

【一张图看懂Kafka消息队列架构】

一张图看懂Kafka消息队列架构Kafka架构全景图ApacheKafka作为当今最流行的分布式消息队列系统&#xff0c;其架构设计精巧而高效。通过一张典型的Kafka架构图&#xff0c;我们可以清晰地看到几个核心组件&#xff1a;生产者(Producer)、消费者(Consumer)、主题(Topic)、分区(Pa…