我的第一台云服务器,最后跑了这些东西
从 SSH 密钥到 Docker、Nginx、Twikoo、图床和 HTTPS。这里记一下这台 2 核 2G 小服务器是怎么一步步用起来的。

这周买了一台腾讯云轻量服务器:2 核 2GB,Ubuntu 22.04。
买之前觉得“云服务器”这三个字挺正式,买完之后发现它其实就是一台放在远处的 Linux 机器。你连上去,里面空空的,什么都得自己配。
我先把博客跑起来,后来又陆续放了图床、评论、拼图游戏和诗云。这里记一下过程,主要是给以后自己查。
第一步:别再用密码登录了
服务器到手第一件事不是部署,是把登录方式换成 SSH 密钥。
控制台可以直接绑定密钥对。绑定以后,密码登录会被禁用。
这一步我觉得很有必要。公网服务器刚开出来,基本很快就会被各种扫描器碰到。密码登录能不用就不用。
本地配好 ~/.ssh/config 之后,连服务器就只需要一个别名:
# ~/.ssh/config
Host tencent
HostName 192.144.167.228
User ubuntu
IdentityFile ~/.ssh/tencent.pemssh tencent # 就这么简单然后做了几件初始化:
- 加 2GB swap:2GB 内存跑几个容器有点紧,swap 可以兜底
- Docker 配镜像加速:不然拉镜像会很慢
- 开启自动安全更新:系统补丁别全靠自己记
第二步:用 Docker 跑起三个服务
我没有直接在系统里装一堆服务,而是都放进 Docker。
主要原因很简单:弄坏了方便重来。容器删掉再起一个,比在系统里排依赖问题轻松很多。
最后跑起来的是这三个:
| 服务 | 镜像 | 用途 |
|---|---|---|
| 博客 | nginx:alpine | 托管这个网站的静态文件 |
| 图床 | EasyImage | 存博客配图,自己的图自己存 |
| 评论 | Twikoo | 自托管评论系统,数据在自己手里 |
评论和图片我都想放自己服务器上。不是说第三方一定不好,只是个人站点本来就是自己的小地方,能自己管就自己管。
第三步:一个 Nginx,分发所有流量
服务多了以后,不能让每个服务都暴露一个端口给外面访问。入口应该只有一个。
所以 Nginx 做两件事:托管博客静态文件,以及把特定路径转发给对应容器。
比如评论系统:
location /twikoo/ {
proxy_pass http://twikoo:8080/; # 直接用容器名
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}这样 Twikoo 不需要单独暴露端口。外面只知道 /twikoo/,真正的容器端口藏在内部网络里。
第四步:安全加固
服务能访问只是第一步。公网机器如果不收口,后面会很麻烦。
我先做了几件基础的。
收敛对外端口
用 ss -tlnp 看实际监听端口,只保留必须的入口。评论容器没有对外端口,只在 Docker 内部网络里。
给 Nginx 加安全响应头
安全头不复杂,但值得加:
server_tokens off; # 不暴露 nginx 版本号,少给攻击者情报
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always; # 防点击劫持
add_header Referrer-Policy "strict-origin-when-cross-origin" always;给评论接口限流
评论接口能写数据,所以加了限流:
# 每个 IP 每分钟最多 30 次,允许短时突发 10 次
limit_req_zone $binary_remote_addr zone=twikoo:10m rate=30r/m;
location /twikoo/ {
limit_req zone=twikoo burst=10 nodelay;
client_max_body_size 1m; # 限制请求体大小
# ...
}禁止访问隐藏文件
防止 .git、.env 这类文件被直接访问:
location ~ /\. {
deny all;
}一些感受
这几天折腾下来,我最大的感觉是:有一台自己的服务器之后,很多东西会变得具体。
以前说“部署”“反向代理”“容器网络”“HTTPS”,都像是一些名词。真正自己配的时候,你会知道每一步到底影响什么。比如一个文件权限不对,Nginx 就读不到静态资源;一个容器名解析缓存没刷新,代理就会打到旧 IP。
现在这台小机器上,博客、图床、评论、拼图游戏和诗云都稳稳地跑着。后来 fitpiece.top 备案通过,我也把全站切到了 HTTPS,并给几个项目拆出了独立子域名。
2 核 2G 不大,但对我现在这些项目来说已经够用了。先把东西跑起来,再慢慢补。
靖淯茗
计算机专业在读,在 AI / Web / 数据库之间折腾。Build · Learn · Share。