Cloud Run 教程:零成本搭建自己的 Web 笔记本与文本分享服务

项目简介

源自很喜欢一个项目 minimalist-web-notepad,平时用的也很多

以路径为笔记名称。比如 notebook.com/123 ,任何人访问 123 这个路径,都可以看到相同的内容

123 会以文件,保存在服务器上

输入一个新的路径,就是创建一个新的笔记


但是原项目使用 docker 部署的时候,由于自带一个完整的 php环境 ,500MB+ 的镜像大小

我用 go 重构了一遍,进行了一些优化:

  1. 系统资源优化:镜像体积 6.6 MB,待机内存 70 KB,峰值内存 < 1 MB(看文本大小)
  2. 网络带宽优化:自带gzip压缩。压缩后 css + js < 1KB
  3. 三层安全防御:
    ①内容大小限制: 拒绝超过100KB的笔记。
    ②速率限制: 限制单个IP的请求频率。
    ③存储熔断: 当 notes/ 文件夹总大小超过10MB时,自动锁定服务。
  4. 添加 api,可以通过 curl 进行增删改查

项目地址:https://github.com/zouzonghao/webnote
image

claw run 部署:

这个项目,天生适合部署在 claw run 上:cpu、内存需求低、网络流量消耗极小

  • Image:sanqi37/webnote:latest
  • 端口:8080
  • Local Storage —> Mount Path:/app/notes

image

image

docker compose 部署:

services:
  webnote:
    image: sanqi37/webnote:latest
    restart: unless-stopped
    container_name: webnote_app
    ports:
      - "8080:8080"
    volumes:
      - ./notes-data:/app/notes
    user: root
    environment:
      # 所有文件大小限值,默认10240000(10MB)
      - MAX_STORAGE_SIZE=10240000
      # 单个文件大小限值,默认102400(100KB)
      - MAX_CONTENT_SIZE=102400  
THE END