
Address自托管安全部署完整指南HTTPS反向代理、密钥加密与访问控制三步走【免费下载链接】addressA self-hosted address and synthetic test-profile generator for 27 countries and regions, built from real open-data streets, administrative areas, coordinates, and postcodes. Supports multilingual output, IP-nearby generation, map previews, and API access. 基于真实开放数据的自托管地址与合成测试资料生成器覆盖 27 个国家和地区支持多语言地址、IP 附近生成、地图预览与 API 调用项目地址: https://gitcode.com/gh_mirrors/address4/addressAddress 是一款基于真实开放数据的自托管地址与合成测试资料生成器覆盖 27 个国家和地区。本文带你三步完成安全部署配置HTTPS 反向代理、理解密钥加密机制、设置访问控制让地址生成服务放心对外提供。 前置先完成基础部署安全部署建立在正常运行的实例之上。Address 只维护一种生产部署方式——Docker Compose全部由根目录的 docker-compose.yml 管理git clone https://gitcode.com/gh_mirrors/address4/address cd address docker compose up -d启动后会自动生成数据库密码、配置加密密钥和服务间令牌存放在data/secrets/并完成数据库迁移。确认服务就绪docker compose ps # 所有服务应为 running / healthy curl -fsS http://127.0.0.1:8787/api/v1/ready # 返回 {status:ready} 即可环境要求LinuxAMD64/ARM64、Docker Engine 24、至少 4 GB 内存首次导入美国、法国等大型国家建议 8 GB 以上。第一步配置 HTTPS 反向代理Address 的 API 默认只监听127.0.0.1:8787这是刻意设计应用不直接暴露公网而是由反向代理统一承接 80/443 端口。这样只需对外开放 80/443PostgreSQL 与同步服务永远藏在内部网络internal: true之后。Caddy两行配置搞定自动证书address.example.com { reverse_proxy 127.0.0.1:8787 }Caddy 会自动申请和续期证书仓库的 ops/caddy/Caddyfile.template 也预留了反向代理模板。Nginx手动证书配置server { listen 443 ssl http2; server_name address.example.com; ssl_certificate /etc/ssl/address.example.com/fullchain.pem; ssl_certificate_key /etc/ssl/address.example.com/privkey.pem; location / { proxy_pass http://127.0.0.1:8787; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }别忘了 .env 三个关键开关代理就位后在 Compose 目录的.env中设置ALLOWED_ORIGINShttps://address.example.com TRUST_PROXYtrue COOKIE_SECUREtrue变量作用ALLOWED_ORIGINS只允许你的正式域名跨域调用 APITRUST_PROXY信任代理头让 IP 邻近生成等功能拿到真实客户端 IPCOOKIE_SECURE会话 Cookie 只经 HTTPS 传输执行docker compose up -d生效。完整 Nginx/Caddy 说明与日常运维命令见 docs/DEPLOYMENT.zh-CN.md。⚠️切记不要对外暴露 PostgreSQL 或同步服务端口。第二步密钥加密——内部密钥自动生成平台密钥落库即加密Address 的密钥体系分两层理解它就理解了加密在部署中意味着什么。内部密钥bootstrap 服务自动生成首次启动时bootstrap服务会创建以下内部密钥实现见 ops/bootstrap-compose.mjs写入data/secrets/权限收紧为0o600postgres_password数据库密码仅内部网络可见config_master_key32 字节配置主密钥用于加密后台保存的第三方平台密钥credential_broker_*_token应用与 credential-broker 服务间通信用。平台密钥AES-256-GCM 加密存储你在管理后台集成页面填入的高德、Google Geocoding、DeepL 等密钥全部以AES-256-GCM加密后存入数据库加解密实现见 server/control/security.ts列表里只显示掩码。第三方密钥均为可选不配置时只使用无需授权的官方登记与开放地图数据源详见 docs/API_KEYS.zh-CN.md。 黄金法则备份时带上 config_master_key主密钥丢了数据库里的平台密钥就再也解不开只能重新录入。所以官方备份流程里有一条硬要求# 备份数据库 docker compose exec -T postgres sh -c pg_dump -U $POSTGRES_USER -d $POSTGRES_DB --formatcustom \ backups/address-$(date -u %Y%m%dT%H%M%SZ).dump # 一并备份内部密钥 cp -r data/secrets backups/secrets-$(date -u %Y%m%d)第三步访问控制——密码、前端门禁与 API 令牌打开https://你的域名/admin/安全相关的设置集中在访问与安全页面实现见 src/components/admin/security.tsx共三道闸门1️⃣ 管理员密码首登立即修改首次启动的管理员密码默认为admin仅首次生效。登录后系统会强制提示修改新密码要求至少 10 位并以 scrypt 加盐哈希存储。忘记密码可按 docs/DEPLOYMENT.zh-CN.md 中的 FAQ 重置。2️⃣ 前端访问密码给生成页加上门禁访问与安全中可开启前端访问密码开启后陌生人访问生成页需要先输入密码。适合把实例当团队内部测试工具使用的场景若面向公网开放则保持关闭。3️⃣ API 令牌最小权限 限速 有效期外部程序调用 API 一律使用 Bearer 令牌在后台接口令牌中创建支持精细控制权限范围Scopes按需勾选read查询与generate生成不必每个令牌都全开限速每个令牌单独设置每分钟请求上限有效期可为令牌设置过期时间到期自动失效随时可吊销掩码展示令牌默认以掩码呈现可随时隐藏明文。curl -fsS https://address.example.com/api/v1/generate?countryUScitySeattle \ -H Authorization: Bearer YOUR_API_TOKEN 安全部署检查清单部署完成后对照这份清单逐项确认✅ 检查项说明只对外开放 80/443浏览器地址栏显示 HTTPS 锁标.env三个开关已配置ALLOWED_ORIGINS/TRUST_PROXY/COOKIE_SECURE管理员密码已修改不再是初始的admin前端访问密码已决策内部使用建议开启API 令牌按需授权最小 Scopes、合理限速、设置有效期平台密钥仅限流服务端 Key 限制服务器 IP网页 Key 限制域名备份含 data/secrets尤其是config_master_key按以上三步配置你的 Address 实例就具备了一套完整的纵深防御边界上有 HTTPS 反向代理存储层有 AES-256-GCM 加密入口有密码与令牌双闸门。更多部署细节可参阅 docs/DEPLOYMENT.zh-CN.md 与 docs/API_KEYS.zh-CN.md。【免费下载链接】addressA self-hosted address and synthetic test-profile generator for 27 countries and regions, built from real open-data streets, administrative areas, coordinates, and postcodes. Supports multilingual output, IP-nearby generation, map previews, and API access. 基于真实开放数据的自托管地址与合成测试资料生成器覆盖 27 个国家和地区支持多语言地址、IP 附近生成、地图预览与 API 调用项目地址: https://gitcode.com/gh_mirrors/address4/address创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考