Bookmark folders full of random single-purpose websites are how most people manage the small daily annoyances of IT work: one tab for a JWT decoder, another for a Base64 converter, another for a cron expression explainer, and a fourth you can never quite remember the name of when you need a UUID. Every one of those sites is a stranger's server, and pasting an API token or a snippet of internal JSON into it is a habit worth breaking.

IT-Tools fixes that by putting all of those small utilities in one place, running on hardware you actually control. It's a single web page with dozens of focused tools — JSON formatters, hash generators, regex testers, network calculators, and more — built by developer Corentin Thomasset and released as open source. There's nothing to configure and no database to babysit, which makes it one of the easier self-hosted apps to get running your first week with Proxmox VE.

This guide walks through installing it in an LXC container on a current Proxmox VE 9.2 host, using Docker to run the app itself. You don't need any Docker experience going in — every command below gets explained as it comes up, not just pasted and left for you to figure out.

What You Will Learn

  • What IT-Tools actually is and which of its built-in tools you'll probably end up using the most
  • How to create an LXC container on Proxmox VE that's set up correctly to run Docker
  • How to install Docker inside that container and start IT-Tools with a single command
  • What each step and setting actually does, instead of just what to type
  • How to fix the handful of things that commonly go wrong the first time

What Is This Feature?

IT-Tools is an open-source web app that bundles together the small utilities sysadmins, developers, and homelab users reach for constantly. It's not one big application with a login and a dashboard — it's more like a toolbox with a search bar at the top. Type "jwt" and you get a JWT decoder. Type "cron" and you get a cron expression parser that explains, in plain English, when a schedule actually runs.

Under the hood it's a single container built from a Vue.js frontend, with everything running client-side in your browser once the page loads. There's no database, no user accounts by default, and no background service writing logs somewhere you'll forget about. That simplicity is exactly why it's a good second or third project after you've gotten comfortable creating LXC containers in Proxmox VE.

A few of the tools people reach for most:

  • JSON formatter and validator — paste ugly, minified JSON and get it readable, or catch a syntax error before it breaks a script
  • Base64, URL, and Base64 image encoders/decoders — handy for API debugging and reading config values that come out obfuscated
  • JWT parser — decode a token's header and payload without pasting it into some random website you don't control
  • Hash generator — MD5, SHA-1, SHA-256, and others, useful for verifying downloads or generating test data
  • UUID and ULID generator, cron expression parser, regex tester, and a subnet/CIDR calculator that's genuinely useful when you're planning VLANs

Why Would You Use It?

The honest answer is convenience plus a little bit of privacy hygiene. None of these tools are hard to find online individually — the difference is that IT-Tools puts them all behind one URL you can bookmark, and none of what you paste in ever leaves your network. If you work with anything sensitive, even something as mundane as a customer's API key while debugging an integration, that matters more than it sounds like it should.

It's also just fast. A homelab-hosted page on your own LAN loads instantly and doesn't care whether some ad-supported converter site is having a bad day. Once it's running, you'll probably notice yourself reaching for it a few times a week without really thinking about it — that's usually the sign a self-hosted tool earned its spot.

Where it doesn't help: if you need audit logs, team accounts, or the tool to remember anything between visits, this isn't that. It's a stateless utility belt, not a platform.

Prerequisites

Before starting, make sure you have:

  • A working Proxmox VE 9.2 host (8.x works fine too — nothing here is version-specific) with a bit of free storage and roughly 512 MB of RAM to spare
  • Access to the Proxmox VE web interface, or SSH access to the host if you'd rather work from a terminal
  • A Debian or Ubuntu LXC template already downloaded, or a few minutes to grab one from the built-in template list
  • Basic comfort typing commands into a Linux shell — you don't need to know Docker already, just be willing to copy and paste carefully

Step-by-Step Tutorial

Step 1: Download an LXC template

In the Proxmox VE web interface, click your node in the left-hand tree, then local (Storage), then CT Templates, then Templates. Search for debian-13 and download the standard template. Debian 12 or a recent Ubuntu template will work identically — IT-Tools doesn't care about the host distro since it runs inside a container anyway.

Step 2: Create the LXC container

Click Create CT in the top right corner. Give it a hostname like it-tools and set a root password. Pick the template you just downloaded on the Template tab. For Disks, 8 GB is more than enough — the app image itself is under 100 MB. For CPU, 1 core is genuinely fine; this isn't a demanding workload. For Memory, 512 MB with a bit of swap is plenty, though 1024 MB gives you comfortable headroom if you're new to sizing containers. On the Network tab, DHCP on your default bridge (usually vmbr0) is fine to start with.

Leave the container Unprivileged — it's the safer default, and it works fine with Docker once nesting is turned on in the next step.

Step 3: Enable nesting for Docker

Unprivileged LXC containers don't have Docker's required kernel features turned on by default. Before starting the container, open its Options tab, select Features, and check both nesting and keyctl. From the host shell, the equivalent command is:

pct set 112 -features nesting=1,keyctl=1

Swap 112 for whatever VMID Proxmox actually assigned your container — you'll see it in the left-hand tree.

Step 4: Start the container and log in

Start it from the web UI, or run pct start 112 from the host shell. Open the container's console (or SSH in if you've already got its IP) and log in as root.

Step 5: Install Docker

apt update && apt upgrade -y
apt install -y curl ca-certificates
curl -fsSL https://get.docker.com | sh

The first line refreshes package lists and applies any pending updates so you're not building on stale packages. The last command downloads Docker's official install script, which adds their repository and installs Docker Engine along with the Compose plugin in one pass. Confirm it worked:

docker --version
docker compose version

Both should print a version number. If either command comes back "not found," nesting almost certainly isn't enabled — double-check Step 3 before going further.

Step 6: Run IT-Tools

You've got two options here, and either is fine. The quick one, straight from a terminal:

docker run -d -p 8080:80 --name it-tools --restart unless-stopped corentinth/it-tools

That single line pulls the official corentinth/it-tools image, runs it in the background (-d), maps port 8080 on the container's network to the app's internal port 80 (-p 8080:80), names the running container so it's easy to reference later, and tells Docker to restart it automatically if it ever crashes or the LXC container reboots.

If you'd rather manage it with a compose file — worth doing if you expect to add more self-hosted apps to this same container later — create a folder and a docker-compose.yml instead:

mkdir -p /opt/it-tools
cd /opt/it-tools
services:
  it-tools:
    image: corentinth/it-tools:latest
    container_name: it-tools
    restart: unless-stopped
    ports:
      - "8080:80"

Then start it with:

docker compose up -d

Step 7: Open IT-Tools in your browser

From any device on the same network, go to http://your-container-ip:8080. You should land straight on the tool list with a search box at the top — no login screen, no setup wizard. Type part of a tool's name to filter the list, or scroll through the categories on the left.

Bookmark it now. That's genuinely the last step — there's no account to create and nothing to configure before it's usable.

Commands Explained

CommandWhat it does
pct set 112 -features nesting=1,keyctl=1Turns on the kernel features an unprivileged LXC container needs to run Docker safely
curl -fsSL https://get.docker.com | shDownloads and runs Docker's official install script, which sets up its repo and installs Docker Engine plus Compose
docker run -d -p 8080:80 ... corentinth/it-toolsPulls the IT-Tools image and runs it as a background container, mapping host port 8080 to the app's internal port 80
docker compose up -dReads a docker-compose.yml file in the current directory and starts everything it defines in the background
docker psLists running containers so you can confirm IT-Tools actually started and check its status
docker logs it-toolsShows the container's console output — the first place to look if the page won't load

Common Errors

"docker: command not found" right after installing. Nesting wasn't enabled before Docker's install script ran, or you skipped rebooting the container after enabling it. Recheck Step 3, then run the install script again.

The page never loads, browser just times out. Usually a firewall or a typo in the port mapping. Confirm the container is actually running with docker ps — you should see 0.0.0.0:8080->80/tcp in the ports column. If that looks right, check that the Proxmox VE firewall (if you've enabled it on this container) allows inbound traffic on 8080.

"Bind for 0.0.0.0:8080 failed: port is already allocated." Something else in the container is already using port 8080. Either stop it or pick a different host port, like -p 8081:80.

Container starts, then immediately exits. Run docker logs it-tools and read the last few lines. This is rare with IT-Tools since it has no external dependencies, but a corrupted image pull can cause it — try docker pull corentinth/it-tools again.

Troubleshooting

If you're not sure whether the problem is Docker, the network, or the app itself, work through it in that order — it saves a lot of guessing.

First, confirm Docker itself is healthy: docker ps -a shows every container, running or not, along with its status. A status of "Restarting" means something inside the container is crashing on startup; "Exited" with a code means it ran and then stopped, and docker logs it-tools will usually tell you why.

Second, confirm the network path. From the Proxmox VE host (not your laptop), try curl http://container-ip:8080. If that works but your laptop can't reach it, the problem is between the container and your workstation — check VLANs, firewall rules, or whether you're accidentally on a guest Wi-Fi network that isolates clients from each other.

Third, if the container is unprivileged and Docker refuses to start at all with permission errors in the logs, go back and verify nesting and keyctl are actually enabled — it's easy to toggle one and forget the other.

One thing that trips people up more than it should: forgetting the container needs internet access the first time to pull the image. If you're on an isolated VLAN with no route out, the docker run or docker compose up command will just hang or time out on the pull.

Best Practices

Give the container a static IP once you're happy with it. DHCP is fine for testing, but a tool you'll bookmark and use daily shouldn't have its address wander after a router reboot.

Put it behind a reverse proxy if you're already running one — Nginx Proxy Manager or Caddy both work well — so you can reach it at a name like tools.home.lan instead of an IP and a port number. It's a small quality-of-life change that adds up.

Take a Proxmox VE backup of the container after you've got it running the way you want. There's no data to lose in the traditional sense, but restoring a working container is faster than rebuilding one from scratch if the host ever needs to be reinstalled.

Resist the urge to expose it directly to the internet. There's no authentication built in by default, and while none of the tools are dangerous on their own, you probably don't want random traffic hitting a box that decodes JWTs. Keep it on your LAN, or put it behind a VPN like Tailscale if you want access while you're out.

Frequently Asked Questions

Do I need a whole LXC container just for this? Not strictly — you could run it in an existing Docker host if you already have one. But a dedicated lightweight container keeps it isolated and easy to back up or delete on its own.

Is my data actually private? Yes, as long as you're running it on your own network. IT-Tools does its work in your browser using JavaScript; nothing you type gets sent to a remote server, whether you're using the hosted version or your own.

Can I add authentication? Not built in, but you can put it behind a reverse proxy that adds basic auth, or behind Authentik or another self-hosted SSO tool if you're already running one.

Will this work on a Raspberry Pi or low-power mini PC running Proxmox VE? Easily. IT-Tools is one of the lightest self-hosted apps you can run — the container barely registers on CPU or memory graphs.

How do I update it later? docker pull corentinth/it-tools to fetch the newest image, then docker compose up -d (or re-run the docker run command) to recreate the container on the new version. Your settings, such as they are, live entirely in your browser's local storage, not in the container.

Conclusion

IT-Tools is about as low-stakes as self-hosting gets — one container, no database, nothing that can really go wrong once it's up. That makes it a good project if you're still building confidence with LXC containers and Docker on Proxmox VE, and a genuinely useful one even after the novelty wears off. Once it's sitting on your LAN with a bookmark pointed at it, you'll likely find yourself reaching for it instead of Googling "json formatter online" out of habit within the first week.