在开始之前:
本来在折腾我的NAS项目,但观察到很多内网穿透的解决方案都需要用到DDNS服务,而目前市面上大的DDNS服务提供商似乎都需要付费。
因为对这个功能的原理有一定的了解,所以觉得自己写一个小脚本作为市面上现有服务的替代是有一定的可行性的。正好最近域名的ICP备案批复下来,因此有了把这个项目作为一个公开项目部署在境内的云服务器的想法。
后面会在这里持续更新项目的进展,目前的想法是在我的个人网站上创建一个项目 / 工具展示tab供大家使用,相应的代码也会开源在GitHub上。
Project Plan (Version 0)
1. 功能设计
- 本地IP检测: 本地程序定期检查公网IP地址(IPv4和IPv6)。
- 数据同步: 将检测到的IP地址发送到云服务器。
- 域名解析更新: 云服务器接收IP地址,并通过调用域名提供商(如阿里云)的API更新DNS记录。
- 通知推送: 当DNS记录更新时,通过电子邮件或短信通知用户。可以考虑使用免费的第三方服务如SendGrid(邮件)或Twilio(短信)。
- 用户界面: 提供一个Web界面供用户输入域名、API密钥、通知方式等信息。
- 数据存储: 使用MySQL数据库存储用户信息、域名记录等。
- 缓存处理: 使用Redis进行频繁查询的缓存处理,提高系统响应速度。
2. 技术栈
- 后端: Java + Spring Boot
- 数据库: MySQL
- 缓存: Redis
- 前端: 可以考虑使用React或Vue.js
- API通信: 使用RESTful API进行前后端的数据交互
- 安全性: 使用Spring Security或JWT进行身份验证和授权
- 通知服务: 集成第三方邮件和短信服务API
3. 系统架构
- 本地客户端: 可以是一个简单的Java应用程序,定时检查公网IP并发送到服务器。
- Web服务器: 托管用户界面和API,处理来自本地客户端的请求,调用域名提供商API更新DNS记录,以及发送通知。
- 数据库: 存储用户账户信息、域名、API密钥等。
- 缓存服务器: 缓存频繁查询的数据,如用户信息、DNS记录等。
4. 安全和隐私
- 数据加密: 确保敏感数据(如API密钥、用户凭据)加密存储。
- 安全通信: 使用HTTPS确保数据传输安全。
- 用户认证和授权: 为每个用户提供安全的登录机制,确保他们只能访问自己的数据。
5. 开发和部署
- 版本控制: 使用Git进行版本控制。
- 容器化: 可以考虑使用Docker容器化应用,便于部署。
- 文档: 提供详细的安装、配置和使用说明。
6. 项目展示
- 演示环境: 设置一个演示环境,让潜在的雇主或用户体验项目。
- 代码库: 在GitHub上维护一个清晰、有良好文档支持的代码库。
- 案例研究: 在简历上附上案例研究,描述项目的设计、挑战及您的贡献。
注意事项
- 合规性: 确保遵守所有相关的隐私和数据保护法律。
- 测试: 进行充分的测试,确保系统稳定性和安全性。
- 用户体验: 界面友好,操作简便,易于理解和使用。
发表回复