Self-Hosting IT-Tools in Docker

Self-Hosting IT-Tools in Docker on OpenMediaVault (OMV): A Practical Setup Guide

If you’re a developer who lives in terminals, logs, and quick copy-paste utilities, Self-Hosting IT-Tools in Docker is the kind of “small thing” that ends up saving you time every single day. I’m a programmer, and I constantly need fast helpers like hash generators, JWT decoders, base64 tools, URL encoders/decoders, JSON formatters, regex helpers, and more—without installing yet another heavyweight app on every machine.

That’s exactly why self-hosting IT-Tools is such a strong move: you get a clean web UI of useful utilities that you can access from anywhere in your network (or securely via a reverse proxy), and it runs as a lightweight Docker container. 🚀

Below is the exact setup I used on an OpenMediaVault (OMV) server, plus the key gotcha that caused a “Connection reset by peer” error—so you can avoid it.


What is IT-Tools (and why devs love it) 🔧💻

IT-Tools is a collection of practical tools packaged into a single web interface—perfect for developers, sysadmins, homelabbers, and anyone working with APIs or infrastructure.

Why it’s great for programmers:

  • ✅ One URL for dozens of utilities
  • ✅ No local installations on your laptop/PC
  • ✅ Works great in a homelab (fast access from any device)
  • ✅ Easy to protect behind HTTPS and authentication (if you want)
  • ✅ Docker makes it portable and repeatable

For me, it’s the ultimate “developer toolbox” that’s always available. 🧠⚙️


The Goal 🎯

Run IT-Tools in Docker so it’s available at:

  • http://<your-server-ip>:8087

…with a clean, reproducible setup that survives reboots.


Prerequisites ✅

You’ll need:

  • A Linux server (OMV is perfect)
  • Docker installed and running
  • Docker Compose available as docker compose

Quick checks:

sudo docker --version
sudo docker compose version
sudo systemctl status docker --no-pager

Step 1: Create a project folder 📁

I keep all my stacks under /srv/docker/:

sudo mkdir -p /srv/docker/it-tools
cd /srv/docker/it-tools

Step 2: Create docker-compose.yml 🧩

Create the file:

sudo nano docker-compose.yml

Use this configuration:

services:
  it-tools:
    image: corentinth/it-tools:latest
    container_name: it-tools
    restart: unless-stopped
    ports:
      - "8087:80"

Why 8087:80 matters (critical!) ⚠️

  • IT-Tools runs behind Nginx inside the container on port 80.
  • The left side (8087) is the port on your host.
  • The right side (80) is the port inside the container.

So you want:

  • host 8087 ➜ container 80

If you accidentally map 8087:8087, you’ll hit a nasty error like:

  • curl: (56) Recv failure: Connection reset by peer

Because Docker forwards you to a container port where nothing is listening.


Step 3: Start the container ▶️🐳

sudo docker compose pull
sudo docker compose up -d

Step 4: Verify it’s running ✅

Check the container:

sudo docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}' | grep -i it-tools

You should see something like:

  • 0.0.0.0:8087->80/tcp

Now test the endpoint:

curl -I http://127.0.0.1:8087/

If everything is correct, you’ll get a normal HTTP response (200/304).

Open it in the browser:

  • 🌐 http://<your-server-ip>:8087

Troubleshooting: “Connection reset by peer” 🧯

If you see:

curl: (56) Recv failure: Connection reset by peer

Here’s the fastest way to diagnose it:

1) Confirm port mapping

sudo docker port it-tools

If you see 8087/tcp -> 0.0.0.0:8087, that’s wrong for this container.

2) Confirm the service works inside the container

sudo docker exec -it it-tools sh -lc 'apk add --no-cache curl >/dev/null 2>&1 || true; curl -I http://127.0.0.1:80/'

If you get HTTP/1.1 200 OK inside, the app is fine—your ports: mapping is the issue.

✅ Fix it by mapping:

  • "8087:80"

Optional Hardening Ideas 🔒✨

If you’ll expose IT-Tools beyond your LAN:

  • ✅ Put it behind a reverse proxy (Nginx Proxy Manager / Traefik)
  • ✅ Enable HTTPS (Let’s Encrypt)
  • ✅ Add authentication (Basic Auth / forward auth)
  • ✅ Restrict access by IP (firewall / proxy rules)

For many homelab setups, keeping it LAN-only is already a solid baseline.


Why I’m keeping this tool in my homelab 🧠🛠️

As a programmer, I’m constantly bouncing between:

  • APIs and payloads
  • hashes and tokens
  • encoding/decoding
  • formatting JSON
  • quick conversions
  • troubleshooting weird input/output issues

IT-Tools becomes that always-available utility belt. Instead of searching for random online converters (that may log your data), I host my own tools and keep things fast, private, and convenient. 🚀


Quick Copy-Paste: Final Compose File ✅

services:
  it-tools:
    image: corentinth/it-tools:latest
    container_name: it-tools
    restart: unless-stopped
    ports:
      - "8087:80"

Final Thoughts 🚀

That’s it—IT-Tools is now running in Docker on your OMV server, accessible on a single, predictable URL. For developers, having a self-hosted toolbox like this is one of those small upgrades that quickly becomes part of your daily workflow.

The key lesson from this setup is simple: map the host port to the container’s port 80 (8087:80). Once that’s correct, the rest is smooth sailing.

Happy self-hosting—and enjoy having your favorite dev utilities always one tab away. 🧰💻

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.