> For the complete documentation index, see [llms.txt](https://docs.ipcheck.ing/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ipcheck.ing/developer/ru/welcome.md).

# Добро пожаловать

Документация для разработчиков MyIP (IPCheck.ing) — разверните собственный экземпляр, разберитесь в кодовой базе и участвуйте в проекте.

**MyIP** — это open-source IP-инструментарий: поиск IP по нескольким источникам, тесты соединения, обнаружение WebRTC и DNS-утечек, тест скорости, глобальные тесты задержки и MTR, Whois, профили ASN, DNS-резолвер, проверки цензуры, снятие отпечатка браузера, калькулятор IP, массовый поиск IP прямо из вставленных логов и многое другое — всё в одном приложении для самостоятельного хостинга, поставляемом как один Docker-образ.

<button type="button" class="button primary" data-action="ask" data-icon="gitbook-assistant">Задайте вопрос…</button>

<button type="button" class="button secondary" data-action="ask" data-query="How do I deploy MyIP with Docker?" data-icon="docker">Развёртывание с Docker</button><button type="button" class="button secondary" data-action="ask" data-query="How do I set up MaxMind GeoLite2 for MyIP?" data-icon="database">Настройка MaxMind</button><button type="button" class="button secondary" data-action="ask" data-query="How do I add a new tool to MyIP?" data-icon="wand-magic-sparkles">Добавить новый инструмент</button><button type="button" class="button secondary" data-action="ask" data-query="How do I contribute to MyIP?" data-icon="code-pull-request">Внести вклад</button>

{% hint style="success" icon="globe" %}
**Посмотреть вживую** — официальный экземпляр работает по адресу [ipcheck.ing](https://ipcheck.ing). Всё, что вы там видите, вы получите и при самостоятельном хостинге.
{% endhint %}

## С чего начать

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><h3><i class="fa-rocket-launch" style="color:$primary;">:rocket-launch:</i></h3></td><td><h4><strong>Начало работы</strong></h4></td><td>Разверните свой собственный экземпляр с помощью Docker или Node.js.</td><td><a href="/developer/ru/getting-started/quickstart.md">Быстрый старт</a></td></tr><tr><td><h3><i class="fa-sliders" style="color:$success;">:sliders:</i></h3></td><td><h4><strong>Конфигурация</strong></h4></td><td>API-ключи, безопасность, логирование, мониторинг — всё необязательно.</td><td><a href="/developer/ru/configuration/optional-api-keys.md">Необязательные API-ключи</a></td></tr><tr><td><h3><i class="fa-sitemap" style="color:$warning;">:sitemap:</i></h3></td><td><h4><strong>Архитектура</strong></h4></td><td>Как связаны фронтенд, бэкенд и слой данных.</td><td><a href="/developer/ru/architecture/project-structure.md">Структура проекта</a></td></tr><tr><td><h3><i class="fa-code" style="color:$info;">:code:</i></h3></td><td><h4><strong>Разработка</strong></h4></td><td>Соглашения, i18n, тесты и добавление собственных инструментов.</td><td><a href="/developer/ru/development/dev-environment.md">Среда разработки</a></td></tr><tr><td><h3><i class="fa-code-pull-request" style="color:$danger;">:code-pull-request:</i></h3></td><td><h4><strong>Участие в разработке</strong></h4></td><td>Дисциплина веток, правила PR, стиль коммитов и переводы.</td><td><a href="/developer/ru/contributing/how-to-contribute.md">Как внести вклад</a></td></tr><tr><td><h3><i class="fa-book-open" style="color:$primary;">:book-open:</i></h3></td><td><h4><strong>Справка</strong></h4></td><td>Каждая переменная окружения, каждый API-эндпоинт и FAQ.</td><td><a href="/developer/ru/reference/environment-variables.md">Переменные окружения</a></td></tr></tbody></table>

{% columns %}
{% column width="50%" %}

## Разверните за считанные минуты

MyIP поставляется в виде одного Docker-образа, содержащего обе части приложения: **Vue 3** одностраничный фронтенд и **Express 5** бэкенд API.

Единственное жёсткое требование — пара бесплатных **MaxMind GeoLite2** учётных данных — они обеспечивают геолокацию IP и поиск ASN по всему приложению.

{% hint style="warning" icon="triangle-exclamation" %}
**Не пропускайте MaxMind.** Новый контейнер без учётных данных MaxMind запускается нормально, но геолокация IP и значки стран остаются неработающими. Настройка занимает пять минут и ничего не стоит — см. [Настройка MaxMind](/developer/ru/getting-started/maxmind-setup.md).
{% endhint %}

{% hint style="info" icon="server" %}
**Предпочитаете bare metal?** Вы можете запускать MyIP напрямую с помощью Node.js и pnpm, с необязательным управлением процессами через pm2 — см. [Развертывание с Node.js](/developer/ru/getting-started/deploy-with-nodejs.md).
{% endhint %}

<a href="/developer/ru/getting-started/quickstart.md" class="button primary" data-icon="rocket-launch">Быстрый старт</a> <a href="/developer/ru/reference/environment-variables.md" class="button secondary" data-icon="gear">Переменные окружения</a>
{% endcolumn %}

{% column width="50%" %}
{% stepper %}
{% step %}

#### Получите учетные данные MaxMind

Создайте бесплатный [аккаунт GeoLite2](https://www.maxmind.com/en/geolite2/signup) и сгенерируйте лицензионный ключ.
{% endstep %}

{% step %}

#### Запустите контейнер

{% code overflow="wrap" %}

```bash
docker run -d -p 18966:18966 \\
  -e MAXMIND_ACCOUNT_ID="YOUR_ACCOUNT_ID" \\
  -e MAXMIND_LICENSE_KEY="YOUR_LICENSE_KEY" \\
  -e DATASET_AUTO_UPDATE="true" \
  --name myip --restart always \\
  jason5ng32/myip:latest
```

{% endcode %}
{% endstep %}

{% step %}

#### Откройте свой экземпляр

Перейдите на `http://localhost:18966` — базы данных GeoLite2 автоматически загружаются примерно через минуту после первого запуска.
{% endstep %}
{% endstepper %}
{% endcolumn %}
{% endcolumns %}

## Популярные страницы

{% columns %}
{% column %}

### Для тех, кто разворачивает

{% content-ref url="/pages/10ec84fb12af13c3310cffb7b83a95dd8c6042fb" %}
[Развёртывание с Docker](/developer/ru/getting-started/deploy-with-docker.md)
{% endcontent-ref %}

{% content-ref url="/pages/12b2905ed6935ee25b02faf2bb420bf8d71df819" %}
[Настройка MaxMind (обязательно)](/developer/ru/getting-started/maxmind-setup.md)
{% endcontent-ref %}

{% content-ref url="/pages/f87cfe8664bcf6eef8a0a418ca34c163c1316b7a" %}
[Обратный прокси и домены](/developer/ru/getting-started/reverse-proxy-and-domains.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}

### Для разработчиков

{% content-ref url="/pages/e42650217118157871b5ddaa747b1041fdff111c" %}
[Добавление нового инструмента](/developer/ru/development/adding-a-new-tool.md)
{% endcontent-ref %}

{% content-ref url="/pages/6e05a2e9a2341c63f8d556b80bdfc2b0ca4ba83b" %}
[Источники данных IP](/developer/ru/architecture/ip-data-sources.md)
{% endcontent-ref %}

{% content-ref url="/pages/80e49103060900b43518da3b91e50532050b223e" %}
[API-эндпоинты](/developer/ru/reference/api-endpoints.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}

### Если возникли сложности

{% content-ref url="/pages/0471bb4cbd8b013041cad9074a9aef0eac35c2a2" %}
[FAQ](/developer/ru/reference/faq.md)
{% endcontent-ref %}

{% content-ref url="/pages/578a41baf6e3f47352a74bf7fef4ac82e2ead22e" %}
[Функции, привязанные к IPCheck.ing](/developer/ru/configuration/features-tied-to-ipcheck-ing.md)
{% endcontent-ref %}

{% content-ref url="/pages/949f258c5d0c7d2bc9da9c28b3fb83e5502e3614" %}
[Сообщение о проблемах](/developer/ru/contributing/reporting-issues.md)
{% endcontent-ref %}
{% endcolumn %}
{% endcolumns %}

<h2 align="center">Проект с открытым исходным кодом, создаваемый открыто</h2>

<p align="center">MyIP распространяется под лицензией AGPL и живёт на GitHub. Поставьте звезду, форкните его или отправьте свой первый PR.</p>

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><h4><i class="fa-github">:github:</i></h4></td><td><strong>GitHub</strong></td><td>Исходный код, issues и pull requests. Вклады любого размера приветствуются.</td><td><a href="https://github.com/jason5ng32/MyIP" class="button secondary">Откройте репозиторий</a></td><td><a href="https://github.com/jason5ng32/MyIP">https://github.com/jason5ng32/MyIP</a></td></tr><tr><td><h4><i class="fa-docker">:docker:</i></h4></td><td><strong>Docker Hub</strong></td><td>Официальный образ, пересобираемый при каждом релизе. Один pull — обе части приложения.</td><td><a href="https://hub.docker.com/r/jason5ng32/myip" class="button secondary">Скачайте образ</a></td><td><a href="https://hub.docker.com/r/jason5ng32/myip">https://hub.docker.com/r/jason5ng32/myip</a></td></tr></tbody></table>

***

Ищете помощь **в использовании** приложения — что делает каждый инструмент, как диагностировать сетевые проблемы, сетевые концепции? Вместо этого перейдите в **Базу знаний** ; эти страницы предназначены для тех, кто разворачивает, форкает или вносит вклад в MyIP.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.ipcheck.ing/developer/ru/welcome.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
