个人项目中枢
返回工作台

进行中 · 高优先级

个人项目中枢网站

用于记录多个项目、想法、AI 分析和阶段成果的个人网站。

ai-workflowdjangopython

时间线

最近更新在前。

在接入 Nginx 公网反代前完成应用侧安全加固。

完成内容

  • 移除默认 Django admin 路由,避免公网暴露 /admin/。
  • 增加生产安全配置项,支持 HTTPS 反代、secure cookie 和 HSTS 开关。
  • 内容导入时校验 URL scheme,仅允许 http、https 和相对路径。
  • 移除页面中的第三方 CDN htmx 脚本。
  • Docker 容器改为非 root 用户运行。

关键决策

  • 第一版不需要网站后台,因此不暴露 Django admin。
  • HTTPS 安全开关先由环境变量控制,等 Nginx/Caddy 配好 TLS 后再启用。

问题

  • HSTS 需要确认域名全站 HTTPS 后再开启,避免误锁。
  • Debian keyring bootstrap 仍是构建阶段供应链权衡,后续应考虑固定可信基础镜像。

下一步

  • 重新部署到 VPS 并确认容器健康。
  • 配置 Nginx/Caddy 反代前启用对应 secure cookie 和 HTTPS redirect 环境变量。

参考资料

明确生产镜像在 VPS 构建,并调整 Docker 基础镜像以适配 VPS registry 和 x86_64 架构。

完成内容

  • 将 Dockerfile 基础镜像从 python:3.13-slim 调整为 debian:bookworm-slim。
  • 在镜像内通过 apt 安装 python3 和 python3-pip,避免 VPS 无法解析 python 官方镜像标签。
  • 配置阿里云 Debian 和 PyPI 镜像源,并先更新 debian-archive-keyring 以修复 apt 公钥问题。
  • 在项目约束中明确生产镜像必须在目标 VPS 架构上构建。

关键决策

  • 本机 Mac M4 继续用于开发和测试,VPS 负责生产镜像构建。
  • 暂时优先使用 VPS 可稳定拉取的 Debian 基础镜像和阿里云镜像源。

问题

  • VPS Docker 可以拉取 hello-world 和 debian,但无法解析多个 python 官方镜像标签。
  • Debian 官方默认源在 VPS 容器中下载慢,且基础镜像 keyring 过旧,需要 bootstrap。

下一步

  • 重新运行 VPS 部署脚本,在 VPS 上构建并启动容器。
  • 部署后通过 SSH 在 VPS 本机访问 healthz 验证服务。

参考资料

建立开发、测试、Docker 部署和项目约束的第一版工程闭环。

完成内容

  • 增加 Makefile,统一本地开发、测试、内容同步和 Docker 命令。
  • 增加 scripts/check.sh,作为部署前测试门禁。
  • 增加 docker-compose.dev.yml 和 docker-compose.prod.yml,区分开发挂载和生产约束。
  • 增加 healthz 健康检查接口和容器 healthcheck。
  • 增加 VPS 部署脚本 ops/deploy_vps.sh。
  • 增加项目约束文档和开发测试部署流程文档。

关键决策

  • 生产容器端口默认只绑定 127.0.0.1,由后续 Nginx 或 Caddy 对外提供 HTTPS。
  • 部署前必须运行 Django check、内容 dry-run、测试、collectstatic 和 Docker build。
  • YAML 继续作为 AI 工具和人工审阅的源内容,SQLite 只作为运行时数据库。

问题

  • 当前目录还不是 Git 仓库,后续应初始化 Git 并纳入提交流程。
  • VPS 反向代理和域名 HTTPS 尚未配置。

下一步

  • 初始化 Git 仓库并提交第一版基线。
  • 配置 VPS Nginx 或 Caddy,将 HTTPS 流量反向代理到 127.0.0.1:8000。
  • 将 update-project-log 和 capture-idea Skill 安装到个人 Codex 环境。

参考资料

完成第一版架构规划并落地 Django、内容同步和 Skill 目录。

完成内容

  • 建立 Django + HTMX + SQLite 的展示系统。
  • 定义项目、项目更新和想法的数据结构。
  • 创建用于 AI 工具更新内容的 Skill 雏形。

关键决策

  • 使用 YAML 作为 Git 中的源数据,SQLite 作为运行时查询库。
  • 第一版不做登录后台,优先保证 AI 工具写入流程顺畅。

问题

  • 后续需要根据真实使用调整想法分析字段。

下一步

  • 在真实项目中测试 update-project-log Skill。
  • 用 capture-idea 收集几个新想法,验证展示效果。