本文件为在这台服务器上工作的 Claude Code 提供上下文。这是一台生产服务器,改动需谨慎。
49.235.116.153--with-http_v2_module、--with-http_v3_module、--with-compat3223,禁用密码登录(见 sshd-config-2026-06-16.md)HTTP(S)_PROXY=http://127.0.0.1:8118。访问本机/内网用 curl --noproxy '*'/etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh(systemctl reload nginx)127.0.0.1:8000(gunicorn)/etc/nginx/conf.d/vi.starbugs.net.conf/var/www/vi.starbugs.net/staticfiles/(location /static/)nginx-vi.starbugs.net.md/opt/markdown-blog/app.py,Python stdlib HTTP server,监听 127.0.0.1:8010blog-md.service(DynamicUser、ProtectSystem=strict、开机自启)python3-markdown / python3-pygments / python3-pymdownx(不用 pip,内网镜像经代理不可达)GET / 目录索引;GET /d/<name>.md 渲染单篇;含路径穿越防护X-Forwarded-Prefix 头生成链接(挂子路径时由 nginx 下发)https://vi.starbugs.net/blog/(blog.starbugs.net 证书未就绪的临时方案)nginx-blog.starbugs.net.mdreuseport:每个 address:port 全机只能设一次,已被
vi.starbugs.net.conf 的 listen 443 quic reuseport 占用。新增 443 quic server 时
必须写 listen 443 quic;(不带 reuseport),否则 nginx -t 报 duplicate。nginx -t && systemctl reload nginx。/var/local/docs/*.md 放文件即生效,无需重启 blog-md。--resolve <域名>:443:127.0.0.1 + --noproxy '*'。# Markdown 服务
systemctl status blog-md --no-pager
journalctl -u blog-md -n 50 --no-pager
systemctl restart blog-md
curl -s --noproxy '*' http://127.0.0.1:8010/
# nginx
nginx -t && systemctl reload nginx
curl --noproxy '*' -I --http2 --resolve vi.starbugs.net:443:127.0.0.1 https://vi.starbugs.net/blog/
# 证书
certbot certificates
certbot renew --dry-run
nginx-vi.starbugs.net.md —— vi.starbugs.net(Django)HTTP/2+3 部署记录nginx-blog.starbugs.net.md —— Markdown 文档站部署记录 + blog 域名待办sshd-config-2026-06-16.md —— SSH 端口/密码登录加固记录dcf-valuation.md / discount-rate.md —— 投资笔记(含数学公式,用于验证渲染)