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
英文地址,請注明出處:http://en.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…