这是一个很根本的问题,为什么我们需要家庭服务器?
以上由 GPT-4 Turbo 回答
服务器,首当其冲就要稳,所以我用了 Ubuntu 作为服务器系统,安装过程不在概述,推荐使用 Ventoy 安装,这样不需要额外的操作
如果你是笔记本(GNOME 桌面),如下:
sudo apt install gnome-tweaks
安装完成后打开优化工具,选择 General(通用) -> Suspend when laptop lid is closed(笔记本电脑盖合上时挂起) 右侧按钮设置为关闭
sudo apt update
sudo apt install openssh-server
设置开机自启动
sudo systemctl enable ssh
使用 Docker 容器可以帮助我们更方便的搭建项目
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
如果以上安装后无法使用 Docker Compose
,你可以手动安装
sudo apt-get install docker-compose
这个过程应该一些文章没有,可以让你执行 Docker 系列命令时无需 root 权限
sudo usermod -aG docker ${USER}
sudo systemctl restart docker
sudo newgrp docker
sudo chmod o+rw /var/run/docker.sock
重开终端后即可
安装 Nginx Proxy Manager 后可以帮我们更好的配置项目反向代理
新建一个文件夹,进入后创建 docker-compose.yml
使用如下 docker-compose.yml
version: '3'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
network_mode: "host"
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
启动服务
docker-compose up -d
对于使用 Cloudflare 的人,你可能遇到 400 错误,你可以参考如下配置
进入你的 Proxy Hosts 配置界面,选择 Advanced,添加如下内容
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
保存即可
此处有两种方案
本文演示第二种方案
docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root jeessy/ddns-go
如上,然后进入 IP:9876
此处可以取消 IPv4 设置,然后我们配置 DNS 服务商
此处以 Cloudflare 举例,点击 DDNS-GO 提供的 地址
创建令牌 -> 编辑区域 DNS(使用模板)
更改区域资源为 | 包括 | 账户的所有区域 | 你的区域 |
点击 “继续以显示摘要”,复制,粘贴到 DDNS-GO 的 Token 框,选择保存就好
翻到 IPv6 配置,选择通过网卡获取,在 Domains 填入一个子域名(根域名可以注册或者白嫖,此处不详细展开)
这里我们用 egcn.xxx.xx 举例子,填入进去后保存,转到 DNS 解析
假如我已经配置了一个项目,在 Nginx Proxy Manager 后台指定的域名为 lp.xx.xx
我们新建一个 CNAME 解析,像这样
lp.xx.xx 是 egcn.xxx.xx 的别名并通过 Cloudflare 代理其流量
保存即可
这样,一个家庭服务器就搭建且暴露在了公共互联网上