Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
domain-locker — Централизованный менеджер портфеля доменов с автоматически получаемыми данными WHOIS, DNS, SSL, оповещениями об истечении срока, мониторингом доступности и визуальной аналитикой. Возможна самостоятельная установка с помощью Docker. | Kitploit
Инструменты/GitHubGitHub/lissy93/domain-locker
Веб-безопасность
GitHublissy93/domain-locker

domain-locker

Централизованный менеджер портфеля доменов с автоматически получаемыми данными WHOIS, DNS, SSL, оповещениями об истечении срока, мониторингом доступности и визуальной аналитикой. Возможна самостоятельная установка с помощью Docker.

РепозиторийСайт
1.5k1176 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Domain Locker

Центральный хаб для всех ваших доменных имён
🌐domain-locker.com

Содержание
  • О проекте
    • Скриншот
    • Возможности
    • Демо
  • Начало работы
    • Domain-Locker.com
    • Самостоятельное развёртывание
  • Разработка
    • Настройка проекта
    • Архитектура
  • Участие
  • Благодарности
  • Лицензия

О проекте

Цель Domain Locker — предоставить вам полный обзор вашего портфеля доменных имён в одном центральном месте.

Для каждого добавленного домена мы анализируем его и извлекаем все связанные данные. Затем мы непрерывно отслеживаем ваши домены и уведомляем вас (согласно вашим предпочтениям) о важных изменениях или скором истечении срока действия. Вы получите детальный анализ домена, информацию о безопасности, историю изменений, недавнюю производительность, данные оценки и многое другое.

С Domain Locker вы больше никогда не потеряете контроль над своими доменами, не пропустите дату продления и не забудете, какие регистратор и провайдеры используются для каждого домена.

Скриншот

Больше скриншотов...

(Извините за 5 кадров/с — хотелось уменьшить размер файла!)


Возможности

  • 👁️ Полный обзор всех ваших доменов и предстоящих дат продления
  • 📡 Автоматическое получение данных: SSL-сертификаты, хостинг, регистраторы, IP-адреса, поддомены, DNS и т.д.
  • 🔬 Просмотр детальных метрик и анализ каждого домена
  • 📊 Визуальная аналитика, разбивка и тренды по всему портфелю
  • 💬 Настраиваемые оповещения и уведомления через вебхуки
  • 🗃️ Простой импорт/экспорт, а также доступ к данным через API
  • 📜 Отслеживание изменений конфигурации доменов с течением времени
  • 📈 Мониторинг здоровья, безопасности и производительности сайта
  • 💹 Учёт закупочных цен и расходов на продление
  • 🔖 Добавление категорий и привязка связанных ресурсов к доменам
  • 🎨 Многоязычная поддержка, тёмные/светлые/пользовательские темы
Дополнительные возможности...```mermaid %%{init: {"theme": "default"}}%% kanban 🌐 Domain Data 🛰️ Auto-fetch assets: SSL, hosts, registrars, IPs, DNS, subdomains 🔎 Detailed domain data like SSL, hosts, registrars, IPs and more 🏷️ Enrich data with tags, notes, costs, and other metadata to track 🖇️ Connection with external tools for more data 📊 Metrics 🗂️ Breakdown of domain providers: registrars, SSL, hosts 🕒 Timeline of registrations and upcoming expirations 📶 Monitor domain uptime, performance and health 💹 Record valuation, purchase prices and renewal costs 🔔 Notifications ⏱️ Get notified before your domain is due to expire 📲 Configurable alerts for monitoring changes in domain config 📬 Multiple channels: webhook, email, SMS, Slack, Telegram, WhatsApp and more 🛤️ Track change history of each domain 🛡️ Data 💽 Own your data: Export, import, delte at any time ⌨️ Programatic access via a REST or GraphQL API, or with RSS, iCal, Prometheus integrations 📈 Keep detailed change logs of all domain updates 🔐 Transparent privacy policy 🛠️ Customization 👤 SSO and 2FA supported 🎨 Custom themes, fonts, light/dark mode 🌍 Multi-language support 💻 Open-source and self-hostable ✅ Accessible, responsive, and well-documented ```

Демо

Попробуйте живую демонстрацию на demo.domain-locker.com
(Имя пользователя: [email protected] Пароль: domainlocker)


Начало работы

Чтобы использовать Domain Locker, у вас есть два варианта:

  1. 💻 Управляемый экземпляр на domain-locker.com (бесплатно)
  2. 🏗️ Или самостоятельное развёртывание через Docker (тоже бесплатно, разумеется!)

Вариант 1: Domain-Locker.com

Перейдите на наш сайт и зарегистрируйтесь через Google, GitHub или по электронной почте.
Стартовый тариф бесплатный, настройка не требуется. Просто войдите, добавьте свои домены и начните отслеживать их.

Вариант 2: Самостоятельное развёртывание```bash

curl -fsSL https://install.domain-locker.com | bash

root@kitploit:~
Используйте однострочник выше или используйте [`docker-compose.yml`](https://github.com/Lissy93/domain-locker/blob/main/docker-compose.yml)

<details>
	<summary>Подробности</summary>

 
- **Предварительные требования**:
  - Domain Locker предназначен для запуска в контейнере, поэтому вам понадобится Docker, [установленный](https://docs.docker.com/engine/install/) на вашей хост-системе.
- **Контейнеры**:
  - У нас есть образ Docker, опубликованный в [`lissy93/domain-locker`](https://hub.docker.com/r/lissy93/domain-locker).
  - Также понадобится база данных Postgres, например контейнер [`postgres:15-alpine`](https://hub.docker.com/_/postgres?tab=tags&name=15-alpine).
- **Окружение**:
  - При запуске контейнера привяжите порт `3000` в контейнере к порту `PORT` хоста (по умолчанию `3000`).
  - Затем укажите переменные Postgres: `DL_PG_HOST`, `DL_PG_PORT`, `DL_PG_USER`, `DL_PG_PASSWORD` и `DL_PG_NAME`.
- **Тома**:
  - Подключите том к `/var/lib/postgresql/data` для сохранения данных Postgres.
- **Задачи cron**:
  - `/api/domain-updater` - Выполняйте ежедневно, чтобы обновлять данные доменов и запускать уведомления.
  - `/api/domain-monitor` - Выполняйте каждые 15 минут для мониторинга времени работы и производительности сайтов.
  - `/api/cleanup-monitor-data` - Выполняйте еженедельно для агрегации старых данных мониторинга.

- **Пример**:
  - Собирая всё вместе, вы можете использовать наш файл [`docker-compose.yml`](https://github.com/Lissy93/domain-locker/blob/main/docker-compose.yml).
  - Для получения дополнительной информации смотрите [документацию по самостоятельному хостингу](https://domain-locker.com/about/self-hosting)


<details>
<summary>Диаграмма Docker</summary>```mermaid
flowchart TB
  subgraph Volume Mounts
    direction TB
    Vpostgresdata([📦 postgres_data]) x-. /var/lib/postgresql/data .-x postgres[(🐘 PostgreSQL DB)]
    Vdbschemasql{{📄 ./db/schema.sql}} -. Mounted on Init .-> postgres
  end

  subgraph Network
    direction TB
    domainlockernetwork[/🌐 domain_locker_network/]
  end

  postgres -.- domainlockernetwork

  subgraph app[⚙️ App Container]
    SSR[HTTP Server]
    CLIENT[Client App]
    API[API Endpoints]
    SSR --> CLIENT
    SSR --> API
  end

  app -.- domainlockernetwork

Вариант 3: Неофициальные приложения

  • ArtifactHub
  • DockerHub
  • Umbrel
  • Supabase
  • Proxmox
  • TrueNAS
  • EasyPanel (Ожидается)
  • Unraid

Разработка

Настройка проекта```bash

git clone [email protected]:Lissy93/domain-locker.git # Get the code cd domain-locker # Navigate into directory npm install --legacy-peer-deps # Install dependencies cp .env.example .env # Set environmental variables npm run dev # Start the dev server

root@kitploit:~
- **Предварительные требования**
  - Вам понадобятся Git и Node, установленные в вашей системе.
- **Настройка**
  - Файл `.env.sample` содержит публичные учетные данные для нашего dev-экземпляра Supabase.
  - Чтобы использовать другую базу данных, смотрите раздел [Database](#database) ниже для настройки с Postgres.
- **Развертывание**
  - Вы можете собрать код с помощью `npm run build`, а затем запустить с помощью `npm start`
  - Или с помощью Docker, собрав контейнер командой `docker build -t domain-locker .`
  - Не используйте dev-экземпляр Supabase в продакшене, так как он часто очищается.

---

## Архитектура приложения

#### Технологический стек

Domain Locker состоит из приложения, базы данных и нескольких конечных точек API.
- **Приложение** построено на Angular с использованием Analog+Nitro, компонентов PrimeNg и Tailwind для стилизации.
- **Сервер** — набор конечных точек Deno с функциями на Typescript.
- **База данных** может быть Postgres или Supabase.

Хотя самостоятельная версия предназначена для развертывания в изолированном виде, управляемая версия зависит от нескольких дополнительных сторонних сервисов, которые вы можете увидеть ниже, [документация по ним находится здесь](https://domain-locker.com/about/developing/third-party-docs).

<details>
<summary>Почему</summary>
Почему Angular? Как своего рода больная шутка над будущим мной, которому затем придется это поддерживать.
</details>


<p align="center">
<img width="800" src="https://assets.kitploit.com/production/public/readmes/264/1449d16cb6a07bd766d3b86a8de608aaa4075270a0a634cd6f6af1f1a1d70c49.png" />
<br>
<span>Вы можете просмотреть документацию по используемым технологиям и сервисам <a href="https://domain-locker.com/about/developing/third-party-docs">здесь</a></span>
</p>


#### Архитектура

Архитектура довольно проста.
У нас есть приложение (состоящее из фронтенда и конечных точек API), где пользователь может читать и записывать данные в базу данных (через адаптеры). Затем служба cron будет периодически вызывать конечные точки API, чтобы поддерживать данные о доменах в актуальном состоянии, отслеживать изменения, контролировать работоспособность и запускать уведомления при определенных изменениях (в соответствии с предпочтениями пользователя) или перед предстоящим истечением срока действия.```mermaid
graph TD;
    subgraph User Interactions
        User[👤 User] -->|Enter domain| WebApp[🌐 Frontend];
        WebApp -->|Send API request| API[⚙️ Nitro API];
        API -->|Auth Check| Auth[🔐 Auth Service];
        API -->|Store domain info| Database[🗄️ PostgreSQL / Supabase];
    end

    subgraph Automated Cron Jobs
        CronService[⏳ Cron Service] -->|Trigger Updates| EdgeFunctions[⚡ Edge Functions];
        EdgeFunctions -->|Fetch WHOIS, DNS, SSL| ExternalAPIs[🌎 Analysis Services];
        EdgeFunctions -->|Store Data| Database;
        
        CronService -->|Monitor Uptime| WebsiteMonitor[📡 Uptime Monitor];
        WebsiteMonitor -->|Store Metrics| Database;

        CronService -->|Check Expirations| ExpiryChecker[📆 Expiration Check];
        ExpiryChecker -->|Update Status| Database;
        
        CronService -->|Send Notifications| NotificationService[🔔 Notification System];
        NotificationService -->|Email| Resend[📧 Resend];
        NotificationService -->|SMS| Twilio[📱 Twilio];
    end

    Database -->|Serve Data| WebApp;

База данных

Для хранения всех ваших доменов и связанной информации требуется база данных. Domain Locker поддерживает как Supabase, так и стандартный Postgres для хранения данных. Используемая база данных зависит от того, какие переменные окружения установлены.

  • Supabase: Следуйте документации Supabase по самостоятельному развертыванию, затем используйте dl-sb-iac для импорта схемы и настройки аутентификации, edge-функций, электронных писем и т.д.

    • Затем установите переменные окружения: SUPABASE_URL и SUPABASE_ANON_KEY
  • Postgres: Разверните экземпляр Postgres, затем примените schema.sql

    • Если БД уже существует: psql -h $DL_PG_HOST -U $DL_PG_USER -d $DL_PG_NAME -f ./db/schema.sql
    • Если создаете с нуля: Используйте setup-postgres.sh (требуются права суперпользователя)
    • Затем установите переменные окружения: DL_PG_HOST, DL_PG_PORT, DL_PG_USER, DL_PG_PASSWORD, `DL_PG_NAME````mermaid classDiagram class users { uuid id text email timestamp created_at timestamp updated_at }
root@kitploit:~
<p align="center"><sub>Вы можете скачать схему из <a href="https://github.com/Lissy93/domain-locker/blob/main/db/schema.sql"<code>db/schema.sql</code></a></sub></p>

---

### Вклад

Вклад любого рода всегда приветствуется и очень ценится! 💗

Если вы новичок в Git, общий порядок действий для внесения вклада следующий:
- Сделайте форк репозитория, [нажав сюда](https://github.com/lissy93/domain-locker/fork)
- Клонируйте свой форк (с помощью `git clone [email protected]:[ваше_имя_пользователя]/domain-locker.git`)
- Следуйте [Настройке проекта](#project-setup) выше, чтобы запустить проект в режиме разработки
- Реализуйте свою потрясающую новую функцию или исправление ошибки...
- Создайте ветку с помощью `git checkout -b feature-branch`, затем `git add` ваши изменения и `git commit` с использованием conventional commits, после чего `git push` в вашу ветку
- Вернитесь на GitHub, где вы можете открыть Pull Request в нашу ветку `main`. Не забудьте указать, что вы изменили, почему и ссылки на связанные задачи.
- Затем мы рассмотрим, дадим обратную связь и выполним слияние, и после релиза ваши изменения будут запущены в продакшн, а также станут доступны в последнем Docker-образе.

<details>
	<summary>Пример ветки Git</summary>```mermaid
%%{init: {"theme": "default"}}%%
gitGraph
    commit id: "Initial commit"
    branch trunk
    commit id: "Feature A"
    commit id: "Feature B"
    commit id: "v1.0.0 (Tag)"
    branch demo
    checkout main
    commit id: "Feature C"
    commit id: "v1.1.0 (Tag)"
    checkout demo
    merge main id: "Merge main into demo"
    checkout main
    commit id: "Feature D"
    commit id: "v1.2.0 (Tag)"
    checkout demo
    merge main id: "Merge main into demo (v1.2.0)"
    checkout main
    branch feature-branch-1
    commit id: "Contributor Feature 1"
    checkout main
    merge feature-branch-1 id: "Merge contributor feature 1"
    commit id: "v1.3.0 (Tag)"
    checkout demo
    merge main id: "Merge main into demo (v1.3.0)"
    checkout main
    branch feature-branch-2
    commit id: "Contributor Feature 2"
    checkout main
    merge feature-branch-2 id: "Merge contributor feature 2"
    commit id: "v1.4.0 (Tag)"
    checkout demo
    merge main id: "Merge main into demo (v1.4.0)"

Атрибуции

Участники

contributors

Спонсоры

sponsors


Лицензия

Lissy93/Domain-Locker лицензировано под MIT © Alicia Sykes 2025.
Для информации, смотрите TLDR Legal > MIT

Развернуть лицензию``` The MIT License (MIT) Copyright (c) Alicia Sykes

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sub-license, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included install copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANT ABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

root@kitploit:~
</details>

<!-- License + Copyright -->
<p  align="center">
  <i>© <a href="https://aliciasykes.com">Alicia Sykes</a> 2025</i><br>
  <i>Лицензировано по <a href="https://gist.github.com/Lissy93/143d2ee01ccc5c052a17">MIT</a></i><br>
  <a href="https://github.com/lissy93"><img src="https://assets.kitploit.com/production/public/readmes/264/2dd6b50bb46f34f56ce0166642faf6ef16cd4102cd8a3805f1be707c9f7c0a3d.png" /></a><br>
  <sup>Спасибо за визит :)</sup>
</p>

<!-- Dinosaurs are Awesome -->
<!-- 
                        . - ~ ~ ~ ~ - .
      ..     _      .-~                 ~-.
     //|     \ `..~                        `.
    || |      }  }                /       \  \
(\   \\ \~^..'                   |         }  \
 \`.-~  o      /       }         |        /    \
 (__          |       /          |       /      `.
  `- - ~ ~ -._|      /_ - ~ ~ ~ ^|      /- _      `.
              |     /            |     /     ~-.     ~- _
              |_____|            |_____|         ~ - . _ _~_-_
-->
Скачать инструмент
(Запланировано)

class domains { uuid id uuid user_id text domain_name date expiry_date text notes timestamp created_at timestamp updated_at uuid registrar_id timestamp registration_date timestamp updated_date }

class registrars { uuid id text name text url uuid user_id }

class tags { uuid id text name text color text description text icon uuid user_id }

class domain_tags { uuid domain_id uuid tag_id }

class notifications { uuid id uuid user_id uuid domain_id text change_type text message boolean sent boolean read timestamp created_at }

class billing { uuid id uuid user_id text current_plan timestamp next_payment_due text billing_method timestamp created_at timestamp updated_at jsonb meta }

class dns_records { uuid id uuid domain_id text record_type text record_value timestamp created_at timestamp updated_at }

class domain_costings { uuid id uuid domain_id numeric purchase_price numeric current_value numeric renewal_cost boolean auto_renew timestamp created_at timestamp updated_at }

class domain_hosts { uuid domain_id uuid host_id }

class domain_links { uuid id uuid domain_id text link_name text link_url timestamp created_at timestamp updated_at text link_description }

class domain_statuses { uuid id uuid domain_id text status_code timestamp created_at }

class domain_updates { uuid id uuid domain_id uuid user_id text change text change_type text old_value text new_value timestamp date }

class uptime { uuid id uuid domain_id timestamp checked_at boolean is_up integer response_code numeric response_time_ms numeric dns_lookup_time_ms numeric ssl_handshake_time_ms timestamp created_at }

class ssl_certificates { uuid id uuid domain_id text issuer text issuer_country text subject date valid_from date valid_to text fingerprint integer key_size text signature_algorithm timestamp created_at timestamp updated_at }

class whois_info { uuid id uuid domain_id text country text state text name text organization text street text city text postal_code }

class user_info { uuid id uuid user_id jsonb notification_channels timestamp created_at timestamp updated_at text current_plan }

class hosts { uuid id inet ip numeric lat numeric lon text isp text org text as_number text city text region text country uuid user_id }

class ip_addresses { uuid id uuid domain_id inet ip_address boolean is_ipv6 timestamp created_at timestamp updated_at }

class notification_preferences { uuid id uuid domain_id text notification_type boolean is_enabled timestamp created_at timestamp updated_at }

class sub_domains { uuid id uuid domain_id text name timestamp created_at timestamp updated_at jsonb sd_info }

users --> domains : user_id registrars --> domains : registrar_id users --> registrars : user_id users --> tags : user_id domains --> domain_tags : domain_id tags --> domain_tags : tag_id users --> notifications : user_id domains --> notifications : domain_id users --> billing : user_id domains --> dns_records : domain_id domains --> domain_costings : domain_id domains --> domain_hosts : domain_id hosts --> domain_hosts : host_id domains --> domain_links : domain_id domains --> domain_statuses : domain_id domains --> domain_updates : domain_id users --> domain_updates : user_id domains --> uptime : domain_id domains --> ssl_certificates : domain_id domains --> whois_info : domain_id users --> user_info : user_id users --> hosts : user_id domains --> ip_addresses : domain_id domains --> notification_preferences : domain_id domains --> sub_domains : domain_id