The Small Tools Worth Self-Hosting (IT-Tools, Excalidraw, CyberChef and Draw.io in One Afternoon)

"Free online JSON formatter", "base64 decode online", "QR code generator", "quick diagram" — each one a stranger's website that you paste a config file, a token or a customer's details into. These four run as static containers on the server, open instantly from Homepage (94), and keep what you paste on your own machine. Together they use less memory than one browser tab.
Quick reference
| Tool | Does | Port |
|---|---|---|
| IT-Tools | 80+ utilities: hashes, UUIDs, tokens, JWT decode, JSON/YAML, cron parser, QR codes, subnet calculator, Docker run → compose | 8091 |
| Excalidraw | hand-drawn-style whiteboard sketches, export PNG/SVG | 8092 |
| CyberChef | "the cyber Swiss army knife": decode, decrypt, transform anything in a chain | 8093 |
| Draw.io (diagrams.net) | proper diagrams: network maps, flowcharts, rack layouts | 8094 |
1. One compose file for all four
mkdir -p ~/docker/tools && cd ~/docker/tools
nano compose.yaml
services:
it-tools:
image: corentinth/it-tools:latest
container_name: it-tools
ports: ["127.0.0.1:8091:80"]
restart: unless-stopped
excalidraw:
image: excalidraw/excalidraw:latest
container_name: excalidraw
ports: ["127.0.0.1:8092:80"]
restart: unless-stopped
cyberchef:
image: mpepping/cyberchef:latest
container_name: cyberchef
ports: ["127.0.0.1:8093:8000"]
restart: unless-stopped
drawio:
image: jgraph/drawio:latest
container_name: drawio
ports: ["127.0.0.1:8094:8080"]
restart: unless-stopped
docker compose up -d
Four proxy entries (28) or one with paths — tools.example.com, draw.example.com, chef.example.com, diagrams.example.com — on the internal wildcard certificate (147), VPN/LAN only. Or just the LAN ports without a proxy; they're all plain static sites.
2. IT-Tools
The one you'll open daily. Docker run to Docker compose converts a docker run … line from a project's README into a compose block (24→25 in one paste). Crontab generator and Crontab parser (20). JWT parser, Token generator, Hash text, Bcrypt (for Caddy basicauth, Node-RED's adminAuth, 124), UUID, ULID. IPv4 subnet calculator (143), IPv6 address converter (145), MAC address lookup. JSON prettify/minify, YAML ↔ JSON, Base64, URL encode, QR code (the Wi-Fi QR for guests), Chmod calculator (11), Date-time converter, Text diff. Searchable; favourites pin to the top.
3. Excalidraw
A whiteboard that looks hand-drawn. Sketch the network before buying the switch, the rack layout, a flow for n8n (77), the garden plan. Shapes, arrows that stick, text, a library of icons. Export PNG or SVG, or save the .excalidraw file into Nextcloud. Real-time collaboration needs the separate room server; solo use doesn't.
4. CyberChef
Paste something you don't understand — a base64 blob, a hex dump, a JWT, a URL-encoded mess, a gzip'd log — and chain operations from the left: From Base64 → Gunzip → JSON Beautify. Decode a Cowrie honeypot's downloaded script (174) safely, inspect an email header, convert timestamps, decrypt an AES blob with a known key, compute a file hash, extract IPs from a log. The "recipe" can be saved and shared as a URL.
5. Draw.io
For the diagram you'd put in BookStack (88): the network map with VLANs (143), the storage layout (97–99), a backup flow (23/54/55/116), an incident timeline (172). Templates for networks and racks, Cisco/AWS/Azure icon libraries, export to PNG/SVG/PDF, and the .drawio file saved to Nextcloud or Gitea. The embed in HedgeDoc (184) works too.
6. Homepage tiles
- Tools:
- IT-Tools: { icon: it-tools.png, href: https://tools.example.com }
- Excalidraw: { icon: excalidraw.png, href: https://draw.example.com }
- CyberChef: { icon: cyberchef.png, href: https://chef.example.com }
- Draw.io: { icon: drawio.png, href: https://diagrams.example.com }
One row on the start page (94); muscle memory replaces the search for "free online…".
Others worth a tile
Stirling PDF (112), LibreSpeed (127), Linkding (113), a Wi-Fi QR page, omni-tools, Reactive Resume (a CV builder), Vert.sh (file conversion in the browser), Pairdrop (AirDrop between any devices on the LAN — a lovely one). All single static containers; add them to the same compose file.
Troubleshooting
CyberChef page blank. Some images serve on a different internal port; docker compose logs cyberchef and adjust the mapping.
Draw.io asks to save to a cloud. Choose Device or Browser; it's a static app and defaults to its own storage prompts.
Excalidraw's collaboration button fails. Expected without the room server; local use is unaffected.
Wrapping up
One compose file, four tiny containers, four tiles on the start page. The hash, the QR code, the sketch, the decode and the diagram happen on your server — and the habit of pasting things into strangers' websites quietly ends.
