项目简介

源自很喜欢一个项目 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

claw run 部署:

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

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

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