树莓派搭配 Tailscale 搭建个人云网盘
树莓派搭配Tailscale 搭建个人云网盘
- 前言
- 硬件采购清单
- 整体服务架构
- 系统安装与配置
- [1] . 烧录镜像(树莓派 Pi 5)
- [2] . 系统安装(不详细介绍),更改源,设置允许远程登录
- 容器安装
- [1] . 安装 Docker
- [2] . 安装 Docker-Compose(除非你的网络可以访问外网,不然推荐使用方式二)
- 创建网络`Network`,设置网段
- 安装数据库 Mysql
- 1. 创建项目目录
- 2. 打开 `/software/mysql` ,创建 `docker-compose.yml`
- 3. 重要配置说明
- 4. 启动服务
- 5. 验证部署
- 6. 连接参数示例
- 高级配置建议
- 安装开源网盘 NextCloud (以下是社区版本)
- 1. 创建项目目录
- 2. 打开 `/software/nextcloud` ,创建 `docker-compose.yml`
- 3. 启动服务
- 4. 验证部署
- 5. 配置 Nextcloud (如果使用的是是非社区版image,则需要配置数据库信息)
- 安装 Tailscale
- 1. 先注册一个账户 [https://tailscale.com/download/linux](https://tailscale.com/download/linux)
- 2. 安装tailscale
- 3. 启动并登录tailscale
- 4. 访问生成的地址:[https://login.tailscale.com/a/161dxxxxxxxx](https://login.tailscale.com/a/161dxxxxxxxx)
- 5. 输入账号密码,登录成功后
- 6. 点击 `Connect`
- 7. 出现Success,则登录成功
- 8. 查看登录记录
- 远程访问 NextCloud
- 1. 根据ADDRESS的地址,直接远程访问NextCloud
- 2. 如果遇到白名单问题,则登录服务器,编辑 `/software/nextcloud/config/config.php`在 `trusted_domains` 新增tailscale的ip和端口就行
- 3. 重启NextCloud

前言
本文分享如何利用树莓派、Docker 容器化技术及 Tailscale 搭建私有云盘,适合想要低成本、自主可控存储解决方案的同学。
很早之前就想搭建一个自己的个人云网盘了,又或者说搭建一个NAS服务器,再进行硬件软件调研的时候,花的时间很久,我手上只有两个现成的东西,一个SD卡(64GB),一个移动硬盘(2TB)。在搭建这个服务的过程中也遇到很多的问题,索性比较好的是,最后的结果是好的,接下里与大家分享一下搭建流程
硬件采购清单
- 树莓派 Pi 5(Raspberry Pi 5)16GB内存(淘宝很多店家有卖,大家采购的时候,可以选择单主板+散热+电源)【¥900~1100】
- RPi Micro SD TF Card 64GB A2 Class(64GB树莓派官方出品) 或者 Micro SD TF Card 64GB A1(闪迪/金士顿/…均可)【¥55~70】
- 树莓派5 Pironman 5 NVMe M.2固态硬盘OC海景房机箱散热金属外壳(这个视自己需求选择性购买)【¥499】
整体服务架构
- 系统:Ubuntu 24.04 Desktop (arm64) (24.04 ~ Arm64)
- 云盘:Nextcloud Hub 10 (31.0.4) (31.0.4 ~ Arm64)
- 容器:Docker Engine 28.1.1 + Docker Compose 2.35.1 (28.1.1 ~ Arm64) (2.35.1 ~ Arm64)
- 数据库:MySQL 8.4.5 (8.4.5 ~ Arm64)
- 远程网络:Tailscale
系统安装与配置
在选择镜像的时候,纠结了很久,在 Raspberry Pi OS(64-bit)(底层是Debian )和Ubuntu Desktop 24.04(64-bit)中,我最终选择了Ubuntu Desktop 24.04(64-bit)。
[1] . 烧录镜像(树莓派 Pi 5)
所需组件
- 一台个人计算机
- 一张 Micro SD 卡及读卡器
- 下载并安装 Raspberry Pi Imager。
- 插入 SD 卡,选择设备型号为“Raspberry Pi 5”。
- 选择 Ubuntu Desktop 24.04 (64-bit) 镜像。
- 选择目标 SD 卡并写入,完成后显示 “Write Successful”。
提示:如有自定义需求,可在写入前通过“设置”面板预设用户名、密码、SSH、Wi-Fi 等。
- 使用读卡器将 SD 卡插入计算机或笔记本电脑。
- 在 Raspberry Pi Imager 中,点击 Raspberry Pi Device 并从下拉列表中选择 Raspberry Pi 5 型号。
- 选择 选择操作系统,并选择推荐的操作系统版本。
- 点击 选择SD卡,选择适合安装的存储设备。
- 点击 NEXT,然后点击 编辑设置 来定制你的操作系统设置。
- 如果 SD 卡中有现有数据,请确保备份以防丢失数据。如果不需要备份,点击 是 继续。
- 当你看到 “Write Successful” 弹窗时,表示映像已经成功写入并验证。你现在可以从 Micro SD 卡启动 Raspberry Pi 了!
[2] . 系统安装(不详细介绍),更改源,设置允许远程登录
- 将SD卡放置到树莓派SD卡专用槽,然后开机,按照正常安装ubuntu系统就行
- 把镜像源改为国内的源
- 备份源配置文件
sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak
- 编辑 /etc/apt/sources.list.d/ubuntu.sources,将原有数据可以全删,新增以下内容 【修改软件源为国内镜像(以阿里云为例)】
Types: deb
URIs: http://mirrors.aliyun.com/ubuntu-ports
Suites: noble noble-updates noble-security
Components: main universe restricted multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
- 更新源
sudo apt-get update
sudo apt-get upgrade
- 安装并启用 SSH 服务(树莓派阉割版系统未安装)
sudo apt update && sudo apt install -y openssh-server
sudo systemctl enable ssh
sudo systemctl start ssh
容器安装
[1] . 安装 Docker
- Ubuntu(使用 apt-get )安装 Docker
# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg# step 2: 信任 Docker 的 GPG 公钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg# Step 3: 写入软件源信息
echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \sudo tee /etc/apt/sources.list.d/docker.list > /dev/null# Step 4: 安装Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# apt-cache madison docker-ce
# docker-ce | 17.03.1~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# docker-ce | 17.03.0~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# Step 2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.1~ce-0~ubuntu-xenial)
# sudo apt-get -y install docker-ce=[VERSION]
- 安装校验
root@raspberry:~# docker version
Client: Docker Engine - CommunityVersion: 28.1.1API version: 1.49Go version: go1.23.8Git commit: 4eba377Built: Fri Apr 18 09:52:38 2025OS/Arch: linux/arm64Context: defaultServer: Docker Engine - CommunityEngine:Version: 28.1.1API version: 1.49 (minimum version 1.24)Go version: go1.23.8Git commit: 01f442bBuilt: Fri Apr 18 09:52:38 2025OS/Arch: linux/arm64Experimental: falsecontainerd:Version: 1.7.27GitCommit: 05044ec0a9a75232cad458027ca83437aae3f4darunc:Version: 1.2.5GitCommit: v1.2.5-0-g59923efdocker-init:Version: 0.19.0GitCommit: de40ad0
[2] . 安装 Docker-Compose(除非你的网络可以访问外网,不然推荐使用方式二)
方式一:服务器使用curl从GitHub下载对应版本,并安装
# 下载docker-compose
root@raspberry:~# sudo curl -L "https://github.com/docker/compose/releases/download/v2.34.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose # 赋予执行权限
root@raspberry:~# sudo chmod +x /usr/local/bin/docker-compose # 建立软链接
root@raspberry:~# sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose # 测试
root@raspberry:~# docker-compose --version
Docker Compose version v2.34.0
方式二:本地从GitHub下载对应版本:https://github.com/docker/compose/releases/tag/v2.34.0,并上传到服务器的目录(可以在root目录下,也可以在其他目录)
- 查看服务器对应的版本
root@raspberry:~# uname -s
Linuxroot@raspberry:~# uname -m
aarch64
- 下载成功后,上传到服务器的某个目录就行
# 移动到/usr/local/bin/
root@raspberry:~# mv docker-compose-linux-aarch64 /usr/local/bin/docker-compose# 赋予执行权限
root@raspberry:~# sudo chmod +x /usr/local/bin/docker-compose# 建立软链接
root@raspberry:~# sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose# 测试
root@raspberry:~# docker-compose --version
Docker Compose version v2.34.0
创建网络Network
,设置网段
root@raspberry:~# docker network create --driver=bridge --subnet=10.10.0.0/16 xc-network
安装数据库 Mysql
以下是使用Docker Compose部署MySQL数据库的详细步骤:
1. 创建项目目录
root@raspberry:~# mkdir /software
root@raspberry:~# mkdir /software/mysql
root@raspberry:~# mkdir /software/mysql/data
root@raspberry:~# mkdir /software/mysql/backup
root@raspberry:~# mkdir /software/mysql/conf
root@raspberry:~# mkdir /software/mysql/logs
2. 打开 /software/mysql
,创建 docker-compose.yml
root@raspberry:~# cd /software/mysql && vim docker-compose.yml
version: '3.8'
services:mysql:image: docker.io/mysql:8.4.5 container_name: mysqlrestart: alwayshostname: mysqlenvironment:MYSQL_ROOT_PASSWORD: 123456TZ: Asia/ShanghaiSET_CONTAINER_TIMEZONE: trueCONTAINER_TIMEZONE: Asia/Shanghaiports:- "3306:3306"volumes:- /software/mysql/data:/var/lib/mysql- /software/mysql/logs:/var/log/mysql- /etc/localtime:/etc/localtimehealthcheck:test: ["CMD", "mysql", "-uroot", "-p123456", "-e", "select 1", "mysql"]interval: 3sretries: 5start_period: 30snetworks:south-online:ipv4_address: 10.10.0.8networks:south-online:external: truename: xc-networkipam:config:- subnet: 10.10.0.0/16
3. 重要配置说明
- 持久化存储:使用命名卷
data
保存数据库文件 - 配置文件:本地
config
目录挂载到容器的MySQL配置目录 - 环境变量:
MYSQL_ROOT_PASSWORD
: root用户密码(必须设置)MYSQL_DATABASE
: 自动创建的数据库MYSQL_USER
: 自动创建的用户MYSQL_PASSWORD
: 自动创建用户的密码
4. 启动服务
docker-compose up -d
5. 验证部署
# 查看容器状态
docker-compose ps# 查看日志
docker-compose logs mysql# 进入容器执行命令
docker exec -it mysql mysql -u root -p
6. 连接参数示例
主机: 127.0.0.1
端口: 3306
root用户: root / your_root_password
应用用户: app_user / user_password
数据库: app_db
高级配置建议
- 安全加固:
environment:MYSQL_ROOT_HOST: '%' # 允许root远程访问(仅限测试环境)TZ: Asia/Shanghai # 设置时区
- 性能优化:
在conf
目录创建my.cnf:
[mysqld]
innodb_buffer_pool_size=1G
max_connections=200
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
- 备份策略:
# 定时备份命令示例
docker exec mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > backup.sql
安装开源网盘 NextCloud (以下是社区版本)
以下是使用Docker Compose部署 NextCloud
数据库的详细步骤:
root@raspberry:~# docker network create --driver=bridge --subnet=10.10.0.0/16 xc-network
1. 创建项目目录
root@raspberry:~# mkdir /software
root@raspberry:~# mkdir /software/nextcloud
root@raspberry:~# mkdir /software/nextcloud/data
root@raspberry:~# mkdir /software/nextcloud/config
2. 打开 /software/nextcloud
,创建 docker-compose.yml
root@raspberry:~# cd /software/nextcloud && vim docker-compose.yml
version: '3.8'
services:nextcloud:image: linuxserver/nextcloudcontainer_name: nextcloudrestart: unless-stoppedprivileged: trueports:- 8680:80volumes:- /software/nextcloud/data:/var/www/html/data- /software/nextcloud/config:/var/www/html/config- /data/cloud:/dataenvironment:- TZ=Asia/Shanghai- MYSQL_HOST=10.10.0.8- MYSQL_DATABASE=nextcloud- MYSQL_USER=root- MYSQL_PASSWORD=123456networks:south-online:ipv4_address: 10.10.0.18networks:south-online:external: truename: xc-networkipam:config:- subnet: 10.10.0.0/16
3. 启动服务
docker-compose up -d
4. 验证部署
# 查看容器状态
docker-compose ps# 查看日志
docker-compose logs nextcloud# 进入容器执行命令
docker exec -it nextcloud bash
5. 配置 Nextcloud (如果使用的是是非社区版image,则需要配置数据库信息)
打开浏览器并访问 http://localhost:8680。在首次运行时,你需要填写一些基本配置信息,如数据库设置(非社区版image)、管理员用户名和密码等。确保数据库主机设置为 nextcloud-mysql,用户名和密码与你在 docker-compose.yml 中设置的一致。
安装 Tailscale
1. 先注册一个账户 https://tailscale.com/download/linux
打开地址https://tailscale.com/download/linux,注册即可,for free
2. 安装tailscale
root@raspberry:~# curl -fsSL https://tailscale.com/install.sh | sh
3. 启动并登录tailscale
root@raspberry:~# tailscale up
4. 访问生成的地址:https://login.tailscale.com/a/161dxxxxxxxx
5. 输入账号密码,登录成功后
6. 点击 Connect
7. 出现Success,则登录成功
8. 查看登录记录
远程访问 NextCloud
1. 根据ADDRESS的地址,直接远程访问NextCloud
2. 如果遇到白名单问题,则登录服务器,编辑 /software/nextcloud/config/config.php
在 trusted_domains
新增tailscale的ip和端口就行
'trusted_domains' =>array (0 => '100.xxx.xxx.xxx:8680',),
3. 重启NextCloud
root@raspberry:/software/nextcloud# docker-compose down -vroot@raspberry:/software/nextcloud# docker-compose up -d
- 🎉 至此,您的私人云网盘已搭建完成,可随时通过 Tailscale 安全访问。