如果你手里只有一两个域名,可能永远理解不了“域名管理焦虑”这件事。
但只要你开始折腾 NAS、自建服务、博客、反代、CDN,域名一多,问题就会接踵而来。

  • 这个域名到底在哪个注册商?

  • SSL 证书什么时候过期?

  • 这个子域名之前是不是指向过别的 IP?

  • DNS 是我改的,还是当时测试忘了还原?

最近在整理自己 NAS 上跑的基础服务时,发现了 Domain Locker 这个项目,说实话,它把上面这些问题一次性捋顺了。


Domain Locker 是干什么的?

一句话总结:
把你所有域名相关的信息,集中到一个可长期运行的控制台里。

你只需要把域名加进去,后面的事它会帮你自动完成:

  • 分析域名注册与到期信息

  • 拉取 DNS、子域名、证书、IP、服务商等数据

  • 持续监控状态变化,并在关键节点提醒你

它不是“查一眼就走”的工具,而是更偏向 域名资产管理系统,适合长期跑在 NAS 或服务器上。


这些功能,是真正戳中痛点的

到期与变更提醒,不再靠记忆力

域名到期、证书快失效、解析发生变化,这些都可以提前提醒你。
你可以按自己的习惯设置提前多久通知,避免“临近到期才发现”的被动局面。

对域名多、注册商分散的人来说,这一点非常关键。


子域名与 DNS 信息自动整理

Domain Locker 会自动扫描并整理你添加的域名下的子域名和 DNS 记录。
当你做安全审计、服务迁移或者排查访问异常时,不需要再手动翻配置。

所有信息都在一个页面里,清清楚楚。


历史记录,解决“我到底改没改过”的问题

这是我个人很喜欢的一点。

  • DNS 改过什么

  • 证书什么时候换的

  • 指向的 IP 是否发生过变化

这些都会留下记录。
当你哪天遇到问题,不再是靠猜,而是能直接回看历史。


分类、标签和关联资源

域名可以按用途打标签,比如:

  • 博客

  • 项目

  • 测试

  • 内网服务

同时还能关联:

  • SSL 证书

  • IP 地址

  • 主机和服务商

哪怕你有几十上百个域名,也能很快定位到目标。


对 NAS / 自托管玩家非常友好

如果你和我一样,优先考虑 能不能本地部署、数据在不在自己手里,那 Domain Locker 是加分的。

官方支持 Docker 部署

项目本身就是围绕容器设计的,官方直接提供 Docker 方案,适合部署在:

  • 群晖 NAS

  • 飞牛 NAS

  • 普通 Linux 服务器

数据库支持 PostgreSQL,这一点对 NAS 用户来说非常友好,基本是标配。

数据完全本地持久化,不依赖第三方服务。


隐私和可控性这块做得很克制

  • 不强制云依赖

  • 不默认埋追踪

  • 本地部署就是完整功能

你只是在管理自己的域名资产,而不是“顺便把数据交出去”。


细节设计,明显是给技术用户准备的

用了一段时间,能明显感觉到这是一个工程思维导向的项目:

  • 多主题界面,深色模式下长时间看不累

  • 内置 API,可和其他自建服务联动

  • 自带诊断页面,排错不靠猜

  • 项目文档清晰,社区活跃,更新节奏稳定

它不是那种“看起来花哨,用起来糟心”的项目。


哪些人特别适合用它?

如果你符合下面任意一条,都可以考虑试试:

  • 手里有 10 个以上域名

  • 域名分散在多个注册商

  • NAS 上已经跑了不少自建服务

  • 对数据隐私和可控性有要求

  • 想把域名管理这件事系统化、长期化

部署教程

  1. 演示在飞牛NAS上部署,其他系统请安装好Docker和docker compose

  2. 打开飞牛NAS的系统设置--SSH--SSH功能--启用fnOS open SSH.png

  3. 使用终端软件通过SSH连接到NAS,并切换到root状态下。

  4. 演示在飞牛NAS上创建一个docker文件夹,作为部署所有项目的总文件夹(其他NAS系统可自行创建一个docker文件夹)

    打开飞牛的文件管理,点击docker文件夹--右键详细信息--常规--位置,复制该文件夹原始路径。fnOS-docker.png

  5. 在终端软件内进入该文件夹位置

    # 将 /vol1/1000/docker 换成你实际的文件夹路径
    
    cd /vol1/1000/docker
  6. 创建并进入项目文件夹

    mkdir domain-locker && cd domain-locker
  7. 创建项目子文件夹

    mkdir db
    
    mkdir postgres/data
  8. 在线拉取所需的数据库结构文件(你也可以手动下载了放入到db文件夹内,点此处高速网盘下载。)

    wget https://raw.githubusercontent.com/Lissy93/domain-locker/main/db/schema.sql -O db/schema.sql
  9. 编辑 docker-compose.yml 文件

    vi docker-compose.yml
  10. 按字母i键进入编辑模式,复制并粘贴下面的模板代码,按Esc键退出编辑模式,输入:wq保存并退出。

    services:
      domain-locker:
        image: lissy93/domain-locker:latest
        container_name: domain-locker
        restart: unless-stopped
    
        # 加载 .env 环境变量
        env_file:
          - .env
    
        # 官方默认 Web 端口是 3000
        # NAS 上避免端口冲突就通过 3010 访问
        ports:
          - "3010:3000"
    
        # 确保数据库先启动
        depends_on:
          - postgres
    
        networks:
          - domainlocker-net
    
      postgres:
        image: postgres:15
        container_name: domain-locker-postgres
        restart: unless-stopped
    
        # 初始化数据库账号和库
        environment:
          POSTGRES_USER: domainlocker
          POSTGRES_PASSWORD: domainlocker_pass
          POSTGRES_DB: domainlocker
          TZ: Asia/Shanghai
    
        # 数据持久化
        volumes:
          - ./postgres/data:/var/lib/postgresql/data    # 可将 ./postgres/data 换成完整的文件夹路径
    
        # 映射端口仅用于调试
        # 避开 NAS 本地 5432 端口冲突
        ports:
          - "55432:5432"
    
        networks:
          - domainlocker-net
    
    networks:
      domainlocker-net:
        driver: bridge
  11. 编辑.env文件

    vi .env
  12. 按字母i键进入编辑模式,复制并粘贴下面的模板代码,按Esc键退出编辑模式,输入:wq保存并退出。

    ########################################
    # Domain Locker 运行环境
    ########################################
    
    # 环境类型
    # 官方支持:selfHosted / dev / demo
    DL_ENV_TYPE=selfHosted
    
    ########################################
    # 访问地址(用于前端 / API / 回调)
    ########################################
    
    # 对外访问地址
    BASE_URL=http://192.168.2.200:3010    # 将IP地址换成你的NAS地址
    DL_BASE_URL=http://192.168.2.200:3010    # 将IP地址换成你的NAS地址
    
    ########################################
    # PostgreSQL 数据库配置
    # 只要存在这些变量,Domain Locker 就会自动启用 Postgres
    ########################################
    
    # 数据库主机名(Docker 内部使用服务名)
    DL_PG_HOST=postgres
    
    # 数据库端口(容器内部固定 5432)
    DL_PG_PORT=5432
    
    # 数据库用户名
    DL_PG_USER=domainlocker
    
    # 数据库密码
    DL_PG_PASSWORD=domainlocker_pass
    
    # 数据库名称
    DL_PG_NAME=domainlocker
    
    ########################################
    # 其他基础配置
    ########################################
    
    # 时区(日志 / 定时任务)
    TZ=Asia/Shanghai
  13. 执行命令拉取docker镜像

    docker compose pull
  14. 执行命令启动数据库容器

    docker compose up -d postgres
  15. 初始化数据库结构

    docker exec -i domain-locker-postgres \
      psql -U domainlocker -d domainlocker < db/schema.sql
  16. 执行之后出现“role "postgres" does not exist”,属于官方 schema 的已知问题,可忽略。

  17. 启动项目容器

    docker compose up -d
  18. 查看项目容器的实时日志,按Ctrl+C中断查看。

    docker compose logs -f

访问Domain Locker

  1. 打开浏览器,以你NAS的IP地址+设置的端口进行访问
    以本机为例:http://192.168.2.200:3010

  2. 点击开始(默认英文,无中文,需要自行打开浏览器翻译)

  3. 输入你想监控的域名之后点击下一步(这里注意只点一下即可,后台需要时间检索信息)

  4. 系统会在后台查询WHOIS信息,如果失败了则多次尝试/换个好的网络/手动填写,然后点击下一步。

  5. 这里根据你的需求进行启用,然后下拉到底部,点击下一步。

  6. 然后点击保存

  7. 现在就添加完成了

  8. 点击回到首页之后就可以看到你的域名列表,你也可以继续按照相同的步骤添加你的更多域名。

写在最后

域名是很多服务的“地基”,但管理却常常被忽视。
Domain Locker 做的事情并不花哨,但足够踏实。

如果你已经在 NAS 上部署了一堆服务,不妨也给域名管理留一个位置。
把这些核心资产握在自己手里,心里会踏实很多。

项目地址:https://github.com/Lissy93/domain-locker

(顺手给个 Star 支持下开源作者!)

所需文件(高速网盘下载):https://pan.quark.cn/s/521511641e91?pwd=Fe8R