> 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/pt-br/welcome.md).

# Bem-vindo

Documentação para desenvolvedores do MyIP (IPCheck.ing) — implante sua própria instância, entenda a base de código e contribua para o projeto.

**MyIP** é uma caixa de ferramentas de IP de código aberto: consulta de IP de múltiplas fontes, testes de conectividade, detecção de vazamento de WebRTC e DNS, teste de velocidade, testes globais de latência e MTR, Whois, resolvedor DNS, verificações de censura, fingerprinting do navegador, uma calculadora de IP e muito mais — tudo em um único app auto-hospedável, distribuído como uma única imagem Docker.

<button type="button" class="button primary" data-action="ask" data-icon="gitbook-assistant">Faça uma pergunta…</button>

<button type="button" class="button secondary" data-action="ask" data-query="How do I deploy MyIP with Docker?" data-icon="docker">Faça deploy com 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">Configurar 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">Adicionar uma nova ferramenta</button><button type="button" class="button secondary" data-action="ask" data-query="How do I contribute to MyIP?" data-icon="code-pull-request">Contribuir</button>

{% hint style="success" icon="globe" %}
**Veja ao vivo** — a instância oficial roda em [ipcheck.ing](https://ipcheck.ing). Tudo o que você vê lá é o que você obtém ao auto-hospedar.
{% endhint %}

## Por onde começar

<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>Primeiros passos</strong></h4></td><td>Implante sua própria instância com Docker ou Node.js.</td><td><a href="/developer/pt-br/getting-started/quickstart.md">Início rápido</a></td></tr><tr><td><h3><i class="fa-sliders" style="color:$success;">:sliders:</i></h3></td><td><h4><strong>Configuração</strong></h4></td><td>Chaves de API, segurança, registro, monitoramento — tudo opcional.</td><td><a href="/developer/pt-br/configuration/optional-api-keys.md">Chaves de API opcionais</a></td></tr><tr><td><h3><i class="fa-sitemap" style="color:$warning;">:sitemap:</i></h3></td><td><h4><strong>Arquitetura</strong></h4></td><td>Como as camadas de frontend, backend e dados se encaixam.</td><td><a href="/developer/pt-br/architecture/project-structure.md">Estrutura do Projeto</a></td></tr><tr><td><h3><i class="fa-code" style="color:$info;">:code:</i></h3></td><td><h4><strong>Desenvolvimento</strong></h4></td><td>Convenções, i18n, testes e adição das suas próprias ferramentas.</td><td><a href="/developer/pt-br/development/dev-environment.md">Ambiente de desenvolvimento</a></td></tr><tr><td><h3><i class="fa-code-pull-request" style="color:$danger;">:code-pull-request:</i></h3></td><td><h4><strong>Contribuindo</strong></h4></td><td>Disciplina de branches, diretrizes de PR, estilo de commits e traduções.</td><td><a href="/developer/pt-br/contributing/how-to-contribute.md">Como Contribuir</a></td></tr><tr><td><h3><i class="fa-book-open" style="color:$primary;">:book-open:</i></h3></td><td><h4><strong>Referência</strong></h4></td><td>Todas as variáveis de ambiente, todos os endpoints da API e o FAQ.</td><td><a href="/developer/pt-br/reference/environment-variables.md">Variáveis de Ambiente</a></td></tr></tbody></table>

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

## Implante em minutos

O MyIP é distribuído como uma única imagem Docker contendo as duas metades do app: o **Vue 3** frontend de página única e o **Express 5** API de backend.

O único requisito obrigatório é um par de credenciais gratuitas do **MaxMind GeoLite2** — elas alimentam a geolocalização de IP e as consultas de ASN em todo o app.

{% hint style="warning" icon="triangle-exclamation" %}
**Não pule o MaxMind.** Um contêiner novo sem credenciais do MaxMind inicia normalmente, mas a geolocalização de IP e os selos de país continuam quebrados. É uma configuração de cinco minutos, sem custo — veja [Configuração do MaxMind](/developer/pt-br/getting-started/maxmind-setup.md).
{% endhint %}

{% hint style="info" icon="server" %}
**Prefere instalação direta?** Você pode executar o MyIP diretamente com Node.js e pnpm, com gerenciamento opcional de processos via pm2 — veja [Implantar com Node.js](/developer/pt-br/getting-started/deploy-with-nodejs.md).
{% endhint %}

<a href="/developer/pt-br/getting-started/quickstart.md" class="button primary" data-icon="rocket-launch">Início rápido</a> <a href="/developer/pt-br/reference/environment-variables.md" class="button secondary" data-icon="gear">Variáveis de ambiente</a>
{% endcolumn %}

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

#### Obtenha as credenciais do MaxMind

Crie uma conta gratuita [GeoLite2](https://www.maxmind.com/en/geolite2/signup) e gere uma chave de licença.
{% endstep %}

{% step %}

#### Execute o contêiner

{% 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 MAXMIND_AUTO_UPDATE="true" \
  --name myip --restart always \
  jason5ng32/myip:latest
```

{% endcode %}
{% endstep %}

{% step %}

#### Abra sua instância

Acesse `http://localhost:18966` — os bancos de dados GeoLite2 são baixados automaticamente em cerca de um minuto após a primeira inicialização.
{% endstep %}
{% endstepper %}
{% endcolumn %}
{% endcolumns %}

## Páginas populares

{% columns %}
{% column %}

### Para quem implanta

{% content-ref url="/pages/d396239bd15b4164dc454b0e1d98b6cf25c76f8a" %}
[Implantar com Docker](/developer/pt-br/getting-started/deploy-with-docker.md)
{% endcontent-ref %}

{% content-ref url="/pages/f4468bbf67b7ce078d65d16c1f7b6e37361ca741" %}
[Configuração do MaxMind (Obrigatório)](/developer/pt-br/getting-started/maxmind-setup.md)
{% endcontent-ref %}

{% content-ref url="/pages/d66e7c5c1a352a6fc113dd585e7b71b6ca523890" %}
[Proxy Reverso e Domínios](/developer/pt-br/getting-started/reverse-proxy-and-domains.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}

### Para desenvolvedores

{% content-ref url="/pages/8616807f3338291f940bd6b41202eb44e74b6312" %}
[Adicionando uma Nova Ferramenta](/developer/pt-br/development/adding-a-new-tool.md)
{% endcontent-ref %}

{% content-ref url="/pages/503e49830d5ec950418106c944e9a295acdafe60" %}
[Fontes de Dados de IP](/developer/pt-br/architecture/ip-data-sources.md)
{% endcontent-ref %}

{% content-ref url="/pages/7114e24eeb6822d4b26e35dcd5593d9951bca69d" %}
[Endpoints da API](/developer/pt-br/reference/api-endpoints.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}

### Quando estiver travado

{% content-ref url="/pages/e36ad4f35cf18fa75a400c2a43808fc4cd51c3da" %}
[Perguntas Frequentes](/developer/pt-br/reference/faq.md)
{% endcontent-ref %}

{% content-ref url="/pages/7ffe85fabfe048466c4a2cb5b1c923aa3768c9c5" %}
[Recursos vinculados ao IPCheck.ing](/developer/pt-br/configuration/features-tied-to-ipcheck-ing.md)
{% endcontent-ref %}

{% content-ref url="/pages/4fb009def9b8e80066a1fb433fa64ab451004bd1" %}
[Relato de Problemas](/developer/pt-br/contributing/reporting-issues.md)
{% endcontent-ref %}
{% endcolumn %}
{% endcolumns %}

<h2 align="center">Um projeto de código aberto, desenvolvido de forma aberta</h2>

<p align="center">O MyIP é licenciado sob MIT e está no GitHub. Dê uma estrela, faça um fork ou envie seu primeiro 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>Código-fonte, issues e pull requests. Contribuições de todos os tamanhos são bem-vindas.</td><td><a href="https://github.com/jason5ng32/MyIP" class="button secondary">Abrir o repositório</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>A imagem oficial, recompilada a cada versão. Um pull, as duas metades do app.</td><td><a href="https://hub.docker.com/r/jason5ng32/myip" class="button secondary">Baixe a imagem</a></td><td><a href="https://hub.docker.com/r/jason5ng32/myip">https://hub.docker.com/r/jason5ng32/myip</a></td></tr></tbody></table>

***

Procurando ajuda **usando** o app — o que cada ferramenta faz, como diagnosticar problemas de rede, conceitos de rede? Vá para a **Base de Conhecimento** em vez disso; estas páginas são para pessoas que fazem deploy, criam fork ou contribuem para o 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.ipcheck.ing/developer/pt-br/welcome.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
