周末项目:搭建个人云

引言

大家好,之前答应要写的个人云搭建教程终于来了!其实这个想法在我脑子里转悠了好久,之前一直用各种网盘,但总感觉不自由——限速、隐私问题、文件被和谐啥的相信大家都懂。上个月终于下定决心,利用两个周末的时间,把自己的个人云服务给搭起来了。现在用了一段时间,感觉真香!今天就把整个过程分享给大家,希望能给有同样想法的朋友一点参考。

为什么选择自建个人云

在说具体搭建之前,我想先聊聊为什么要自己折腾这个。首先,最主要的原因肯定是隐私。你上传到各大网盘的照片、文档,其实服务器那边都能看到,虽然人家承诺不会滥用,但心里总归不太舒服。其次是速度问题,免费网盘那个下载速度,懂得都懂。还有一个很现实的考量——很多资料我不想存第三方平台,但又需要随时能访问。

当然市面上的私有云解决方案也有很多,比如群晖、威联通这些成品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 访问也很流畅。最重要的是,数据掌握在自己手里的感觉,真的很踏实。

如果你也有搭建个人云的想法,我的建议是:不要犹豫,先找台旧电脑动起来。遇到问题就查文档、看教程,这个过程本身也是学习的过程。好了,今天的分享就到这里,有问题欢迎评论区交流!