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➜ container80
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