周末项目:搭建个人云
引言
大家好,之前答应要写的个人云搭建教程终于来了!其实这个想法在我脑子里转悠了好久,之前一直用各种网盘,但总感觉不自由——限速、隐私问题、文件被和谐啥的相信大家都懂。上个月终于下定决心,利用两个周末的时间,把自己的个人云服务给搭起来了。现在用了一段时间,感觉真香!今天就把整个过程分享给大家,希望能给有同样想法的朋友一点参考。
为什么选择自建个人云
在说具体搭建之前,我想先聊聊为什么要自己折腾这个。首先,最主要的原因肯定是隐私。你上传到各大网盘的照片、文档,其实服务器那边都能看到,虽然人家承诺不会滥用,但心里总归不太舒服。其次是速度问题,免费网盘那个下载速度,懂得都懂。还有一个很现实的考量——很多资料我不想存第三方平台,但又需要随时能访问。
当然市面上的私有云解决方案也有很多,比如群晖、威联通这些成品NAS,但说实话,对于我这种只是想存储和同步文件的人来说,性价比不太高。所以最终选择了用旧电脑 + 开源软件的方式来搭建,成本几乎为零,效果还挺不错的。
准备工作:硬件和系统
硬件选择
我用的是家里一台退役的台式机,配置大概是这样的:
- CPU: Intel i3-4170(服役多年的老将了)
- 内存: 8GB
- 硬盘: 1TB 机械硬盘 + 120GB SSD(装系统用)
- 网络: 千兆网卡
其实个人云对硬件要求真不高,只要能跑得动 Linux 就够了。如果你没有旧电脑,买个树莓派或者小型主机都行,比如 Intel NUC 之类的,功耗低且安静。
系统安装
我选择的是 Ubuntu Server 22.04 LTS,为啥选这个呢?主要是长期支持版本,稳!而且社区资源丰富,出了问题容易找到解决方案。
安装过程就不细说了,基本就是下载镜像、制作启动盘、按照提示一路下一步。需要注意的是分区的时候,建议把 SSD 用来装系统和 Docker,机械硬盘单独挂载用来存数据。
安装完成后,先更新一下系统:
sudo apt update && sudo apt upgrade -y
然后装上必要的工具:
sudo apt install curl wget git vim -y
核心服务:Nextcloud 部署
为什么选 Nextcloud
个人云的核心软件我用的是 Nextcloud,这玩意儿功能挺全的——文件同步、在线预览、协同办公、相册、联系人、日历啥的都有。界面也好看,跟 Google Drive、Dropbox 那种体验差不多。最重要的是开源免费,社区活跃,插件丰富。
Docker 安装
为了省去各种依赖麻烦,我选择用 Docker 来部署。首先安装 Docker:
# 安装必要依赖
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release
添加 Docker GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
添加 Docker 仓库
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
安装 Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
Nextcloud 部署
接下来用 Docker Compose 来部署 Nextcloud,这是最省心的方式。创建一个 docker-compose.yml 文件:
version: '3'
services:
nextcloud:
image: nextcloud:latest
container_name: nextcloud
ports:
- "8080:80"
volumes:
- nextcloud_data:/var/www/html
- /mnt/storage/nextcloud:/var/www/html/data
environment:
- MYSQL_HOST=db
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=your_strong_password
depends_on:
- db
restart: unless-stopped
db:
image: mariadb:latest
container_name: nextcloud_db
volumes:
- mysql_data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=root_strong_password
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=your_strong_password
restart: unless-stopped
volumes:
nextcloud_data:
mysql_data:
创建好文件后,启动服务:
docker-compose up -d
第一次启动会稍微慢一点,因为要初始化数据库。可以通过查看日志确认状态:
docker-compose logs -f
等看到类似 "Installation completed" 的日志后就可以访问了。打开浏览器,输入 http://你的服务器IP:8080,会看到 Nextcloud 的初始化界面,按照提示创建管理员账号就完成了。
外网访问:内网穿透
到这一步,局域网内已经能正常使用 Nextcloud 了。但如果你想在外面也能访问,那就需要解决外网访问的问题。
方案选择
常见的方案有几种:
1. 公网 IP + 端口映射:需要路由器支持,而且有安全风险
2. 内网穿透服务:比如 frp、ngrok、cpolar 等
3. VPN:最安全但配置稍复杂
我用的是第三种方案——WireGuard VPN。为啥选它呢?速度快、安全、稳定,而且手机和电脑都能用。
WireGuard 安装配置
服务端安装:
# 安装 WireGuard
sudo apt install wireguard -y
生成密钥对
wg genkey | tee privatekey | wg pubkey > publickey
配置服务端,创建 /etc/wireguard/wg0.conf:
[Interface]
PrivateKey = 你的PrivateKey
Address = 10.0.0.1/24
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 51820
[Peer]
PublicKey = 客户端的PublicKey
AllowedIPs = 10.0.0.2/32
启动服务:
sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0
客户端配置的话,手机可以下载 WireGuard APP,电脑也有客户端,把配置导进去就行。连接成功后,手机流量会通过 VPN 走一遍服务器,这样就能安全地访问家里的 Nextcloud 了。
数据备份:保障安全
自己搭建服务,最怕的就是硬盘挂掉导致数据丢失。所以备份策略一定要做好。我目前的方案是这样的:
本地备份
机械硬盘里重要文件夹用 rsync 定时同步:
# 每天凌晨 3 点执行备份
0 3 * * * rsync -avz --delete /mnt/storage/important /mnt/storage/backup/
异地备份
考虑到本地备份只能防止硬盘故障,如果是火灾、失窃啥的就没辙了。所以我还用 rclone 定期同步到阿里云盘(别问,问就是白嫖)。配置好 rclone 后,写个简单的脚本:
#!/bin/bash
rclone sync /mnt/storage/backup aliyun:backup -v
加入 crontab 每周执行一次。
进阶优化
用了这段时间,又陆陆续续加了一些优化:
1. SSL 证书
用 Let's Encrypt 的免费证书,配合 Nginx Proxy Manager 管理,方便又安全。
2. 离线下载
装了 Aria2 + AriaNG,可以远程下载 BT、磁力,下载完直接存到 Nextcloud 里。
3. 照片自动备份
Nextcloud 有手机客户端,打开自动备份功能后,手机拍照会自动同步到服务器,再也不怕手机存储满了。
4. 功耗优化
因为是 7×24 小时运行,功耗不得不考虑。后来把 BIOS 里的电源管理调了一下,待机功耗降到了 30W 左右,一个月电费不到 20 块,还能接受。
总结
总的来说,这次周末项目的体验超出预期。之前一直觉得自建云服务很复杂,真正动手才发现,比想象中简单太多了。Docker 大大降低了部署门槛,很多东西都是一行命令就搞定。
现在的使用体验:文件同步、相册备份、文档协作这些日常需求都能满足,外出时通过 VPN 访问也很流畅。最重要的是,数据掌握在自己手里的感觉,真的很踏实。
如果你也有搭建个人云的想法,我的建议是:不要犹豫,先找台旧电脑动起来。遇到问题就查文档、看教程,这个过程本身也是学习的过程。好了,今天的分享就到这里,有问题欢迎评论区交流!
周末项目 搭建个人云
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法