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

# Welcome

**MyIP** is an open-source IP toolbox: IP lookup from multiple sources, connectivity tests, WebRTC & DNS-leak detection, speed test, global latency & MTR tests, Whois, DNS resolver, censorship checks, browser fingerprinting, and more — all in one self-hostable app, shipped as a single Docker image.

<button type="button" class="button primary" data-action="ask" data-icon="gitbook-assistant">Ask a question…</button>

<button type="button" class="button secondary" data-action="ask" data-query="How do I deploy MyIP with Docker?" data-icon="docker">Deploy with 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">Set up 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">Add a new tool</button><button type="button" class="button secondary" data-action="ask" data-query="How do I contribute to MyIP?" data-icon="code-pull-request">Contribute</button>

{% hint style="success" icon="globe" %}
**See it live** — the official instance runs at [ipcheck.ing](https://ipcheck.ing). Everything you see there is what you get when you self-host.
{% endhint %}

## Where to start

<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>Getting Started</strong></h4></td><td>Deploy your own instance with Docker or Node.js.</td><td><a href="/pages/416edc1381c20849bc41111b02e482a722a49b94">/pages/416edc1381c20849bc41111b02e482a722a49b94</a></td></tr><tr><td><h3><i class="fa-sliders" style="color:$success;">:sliders:</i></h3></td><td><h4><strong>Configuration</strong></h4></td><td>API keys, security, logging, monitoring — all optional.</td><td><a href="/pages/tqm7ZCLjgGXppKRxuceC">/pages/tqm7ZCLjgGXppKRxuceC</a></td></tr><tr><td><h3><i class="fa-sitemap" style="color:$warning;">:sitemap:</i></h3></td><td><h4><strong>Architecture</strong></h4></td><td>How the frontend, backend, and data layers fit together.</td><td><a href="/pages/6FG6qbIfWCJ9hgUJzUuS">/pages/6FG6qbIfWCJ9hgUJzUuS</a></td></tr><tr><td><h3><i class="fa-code" style="color:$info;">:code:</i></h3></td><td><h4><strong>Development</strong></h4></td><td>Conventions, i18n, tests, and adding your own tools.</td><td><a href="/pages/WrN9kAMeIZp7jGJeMTn7">/pages/WrN9kAMeIZp7jGJeMTn7</a></td></tr><tr><td><h3><i class="fa-code-pull-request" style="color:$danger;">:code-pull-request:</i></h3></td><td><h4><strong>Contributing</strong></h4></td><td>Branch discipline, PR guidelines, and commit style.</td><td><a href="/pages/Sm1jcfVwpuNVRfWZTnkp">/pages/Sm1jcfVwpuNVRfWZTnkp</a></td></tr><tr><td><h3><i class="fa-book-open" style="color:$primary;">:book-open:</i></h3></td><td><h4><strong>Reference</strong></h4></td><td>Every env variable, every API endpoint, and the FAQ.</td><td><a href="/pages/veoJfUnUIt8aeOHQG6ie">/pages/veoJfUnUIt8aeOHQG6ie</a></td></tr></tbody></table>

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

## Deploy in minutes

MyIP ships as one Docker image containing both halves of the app: the **Vue 3** single-page frontend and the **Express 5** backend API.

The only hard requirement is a pair of free **MaxMind GeoLite2** credentials — they power IP geolocation and ASN lookups across the whole app.

{% hint style="warning" icon="triangle-exclamation" %}
**Don't skip MaxMind.** A fresh container without MaxMind credentials starts fine, but IP geolocation and country badges stay broken. It's a five-minute, zero-cost setup — see [MaxMind Setup](/developer/getting-started/maxmind-setup.md).
{% endhint %}

{% hint style="info" icon="server" %}
**Prefer bare metal?** You can run MyIP directly with Node.js and pnpm, with optional pm2 process management — see [Deploy with Node.js](/developer/getting-started/deploy-with-nodejs.md).
{% endhint %}

<a href="/pages/416edc1381c20849bc41111b02e482a722a49b94" class="button primary" data-icon="rocket-launch">Quickstart</a> <a href="/pages/veoJfUnUIt8aeOHQG6ie" class="button secondary" data-icon="gear">Environment variables</a>
{% endcolumn %}

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

#### Get MaxMind credentials

Create a free [GeoLite2 account](https://www.maxmind.com/en/geolite2/signup) and generate a license key.
{% endstep %}

{% step %}

#### Run the container

{% 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 %}

#### Open your instance

Visit `http://localhost:18966` — the GeoLite2 databases download automatically within about a minute of first startup.
{% endstep %}
{% endstepper %}
{% endcolumn %}
{% endcolumns %}

## Popular pages

{% columns %}
{% column %}

### For deployers

{% content-ref url="/pages/fR7h29QvEfYQMMPZnVy7" %}
[Deploy with Docker](/developer/getting-started/deploy-with-docker.md)
{% endcontent-ref %}

{% content-ref url="/pages/R47geNrbxTey2aAXKdWC" %}
[MaxMind Setup (Required)](/developer/getting-started/maxmind-setup.md)
{% endcontent-ref %}

{% content-ref url="/pages/pgPs1cUEX5JvO99ITpdu" %}
[Reverse Proxy & Domains](/developer/getting-started/reverse-proxy-and-domains.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}

### For developers

{% content-ref url="/pages/2xQqgIOnkgIQzpTbatxB" %}
[Adding a New Tool](/developer/development/adding-a-new-tool.md)
{% endcontent-ref %}

{% content-ref url="/pages/CGyTLfQb7OCVBNVcJpbU" %}
[IP Data Sources](/developer/architecture/ip-data-sources.md)
{% endcontent-ref %}

{% content-ref url="/pages/8T9thzv4ZJTYgCuPIdTm" %}
[API Endpoints](/developer/reference/api-endpoints.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}

### When stuck

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

{% content-ref url="/pages/VaNjfHEvHeTj1n4HZRkd" %}
[Features Tied to IPCheck.ing](/developer/configuration/features-tied-to-ipcheck-ing.md)
{% endcontent-ref %}

{% content-ref url="/pages/O7dHBEXFBdmUkE8SMyqb" %}
[Reporting Issues](/developer/contributing/reporting-issues.md)
{% endcontent-ref %}
{% endcolumn %}
{% endcolumns %}

<h2 align="center">An open-source project, built in the open</h2>

<p align="center">MyIP is MIT-licensed and lives on GitHub. Star it, fork it, or ship your first 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>Source code, issues, and pull requests. Contributions of all sizes are welcome.</td><td><a href="https://github.com/jason5ng32/MyIP" class="button secondary">Open the repo</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>The official image, rebuilt on every release. One pull, both halves of the app.</td><td><a href="https://hub.docker.com/r/jason5ng32/myip" class="button secondary">Pull the image</a></td><td><a href="https://hub.docker.com/r/jason5ng32/myip">https://hub.docker.com/r/jason5ng32/myip</a></td></tr></tbody></table>

***

Looking for help **using** the app — what each tool does, how to diagnose network issues, networking concepts? Head to the **Knowledge Base** instead; these pages are for people who deploy, fork, or contribute to 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/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.
