由于一直受网络延迟的困扰,最近花4元买了个内蒙古的VPS,RAM只有可怜的128MB,CPU也只有一核。但是带宽还可以,每个月流量也有100G。这个服务器刚好用来跑个OSS+FRP。 由于FRP安装实在是太简单,主要分享一下极简OSS的搭建。

由于极小的内存,尝试安装minio,但是直接崩了。查了一下minio的要求内存起码1G,果断放弃了。对比多个方案最后选择Caddy File Server来做代理服务器。Caddy的好处就不用多说了,自动https,极简配置对新手和渣机都非常友好。

运行 Caddy File Server

下载官方的二进制文件,chmod +x,然后修改/etc/caddy/Caddyfile,放开CORS配置。随后直接运行脚本,指定配置文件目录就完事了。现在就运行好一个非常简单的文件代理服务器了。访问公网ip:端口/文件名就可以访问了,由于位置在国内,所以延迟极小。itdog实测全国延迟<50ms。用来做一些脚本和字体hosting都非常合适。

现在离OSS还差一个便捷的上传功能(预览功能后来想了想其实不是那么必须)。对比了Python,WEBDAV和Go,还是选择了最不吃内存的Go,而且发现Go居然可以直接交叉编译成指定平台的可执行二进制格式。简单写了个前端+上传逻辑,加了个HTTP原生鉴权。一个简单的上传portal就做好了:

为了省事没写一点css,凑合用了。写完之后,只需要运行

GOOS=linux GOARCH=amd64 go build -o file file.go

或者在windows上:

$env:GOOS="linux"; $env:GOARCH="amd64"; go build -o file file.go

就可以编译了,我的编译出来就11MB,用nohup一跑,占用内存也就十几MB,榨干了最后一点内存。

在安装完go之后,第一次编译会非常慢,我在两个linux和windows上都是如此。因为第一次 go build 会把第三方模块拉到 模块缓存(GOMODCACHE),同时校验签名并写入 go.sum。网络慢或源站慢都会拖时间。之后只要 源码、依赖版本、编译标志 没变,Go 会直接复用 GOCACHE/GOMODCACHE 的产物,所以 1–2 秒就结束。但是如果换 Go 版本、改 -tags/-ldflags/CGO_ENABLED、切换 GOOS/GOARCH、或清了缓存(go clean -cache -modcache)都会导致重新预热,又会慢一次。

标签:无

你的评论