IT-Tools selbst hosten: Die Werkzeugkiste für Entwickler
UUID erzeugen, JWT dekodieren, Base64 umwandeln, QR-Codes erstellen, Hashes prüfen – für solche Alltagsaufgaben öffnet man sonst zehn Browser-Tabs voller Werbung und Tracking. IT-Tools bündelt über 80 dieser kleinen Helfer in einer einzigen, aufgeräumten Oberfläche – Open Source, ohne Anmeldung und ohne dass deine Daten einen Server berühren. Wir zeigen das Docker-Compose-Setup.
Warum IT-Tools?
- Über 80 Werkzeuge an einem Ort: Converter (Base64, JSON, YAML, Zahlen, Einheiten), Krypto (JWT, Hashs, Ciphers), Web (QR-Code, User-Agent, MIME-Typen), Netzwerk (IP-Rechner, WHOIS) sowie Text-, Daten- und Datums-Helfer – die Liste wächst ständig.
- Keine Konten, kein Tracking, kein Upload: Die Werkzeuge laufen als clientseitige Web-App – deine Eingaben (Tokens, Schlüssel, Texte) verlassen den Browser nicht und werden nirgendwo gespeichert.
- Schlank & schnell: Ein statischer Container, keine Datenbank, keine Abhängigkeiten – ideal für den eigenen Homelab-Stack oder als Team-Werkzeug im Intranet.
- Favoriten & Suchfunktion: Häufig genutzte Werkzeuge anpinnen, mit Cmd/Ctrl+K durchsuchen.
- Läuft als PWA: lässt sich im Browser „installieren“ und offline nutzen.
💡 Erst ausprobieren? Unsere Live-Instanz steht in der Dockerliste bereit: itt.huuu.biz. Alles, was du dort testest, läuft lokal in deinem Browser – ideal, um vor dem eigenen Setup einen Eindruck zu bekommen.
Welches Image? Original vs. sharevb-Fork
Es gibt zwei relevante Images, und die Entscheidung gehört ans Ende des Setups geklärt:
| Image | Quelle | Eigenschaft |
|---|---|---|
sharevb/it-tools:latest | sharevb/it-tools (Fork) | Sehr aktiv gepflegt, integriert PRs schneller als das Original. Basiert seit einem Breaking Change auf nginx-unprivileged und lauscht deshalb auf Port 8080 (nicht 80!). |
ghcr.io/it-tools/it-tools | CorentinTh/it-tools (Original) | Das „offizielle“ Projekt, etwas konservativer im Release-Rhythmus. |
Unsere Konfiguration unten nutzt den Fork – wichtig ist in beiden Fällen dasselbe:
der interne Port lautet 8080, das Host-Mapping also …:8080:8080.
docker-compose.yml – die Konfiguration
services:
it-tools:
container_name: itt
image: sharevb/it-tools:latest
pull_policy: always
deploy:
resources:
limits:
cpus: "2.0"
memory: 2G
environment:
- USER_UID=1000
- USER_GID=1000
restart: unless-stopped
ports:
- "127.0.0.1:50519:8080" # Web-UI nur lokal
Gegenüber der Vorlage bereinigt: der leere networks: {}-Block und das damit
überflüssige network_mode: bridge (Standard-Netz), außerdem die fehlenden
Anführungszeichen beim Port-Mapping. Erklärt werden die einzelnen Zeilen im nächsten Abschnitt.
Umgebungsvariablen & Besonderheiten
| Einstellung | Wert | Bedeutung |
|---|---|---|
pull_policy: always | – | Erzwingt bei jedem docker compose up (und damit jedem Neustart) einen Image-Pull – Updates kommen automatisch, aber der Container startet ohne Registry-Zugriff auch nicht mehr. Wer bewusst aktualisieren will, entfernt die Zeile oder pinnt ein konkretes Tag. |
USER_UID / USER_GID | 1000 | Im sharevb-Fork in der README nicht dokumentiert: Da das Image auf nginx-unprivileged basiert (Prozess läuft bereits mit fester, nicht-root UID), haben die Variablen in der Standard-Konfiguration keine Wirkung. Sie schaden nicht, lassen sich aber gefahrlos entfernen. |
ports | 127.0.0.1:50519:8080 | Web-UI (Container-Port 8080 – nicht 80!) nur auf dem Loopback. Externer Zugriff ausschließlich über den Reverse Proxy. |
deploy.resources.limits | 2 CPU / 2 GB | Für eine statische App eigentlich üppig – aber es schadet nicht, und die Limits verhindern, dass ein Proxy-Angriff (viele gleichzeitige Requests) den Host belastet. |
container_name: itt | – | Kurzname für Docker-Befehle: docker logs itt, docker restart itt. |
Zwei weitere, im Fork dokumentierte Optionen für später:
PORT– interner Listen-Port überschreiben (Standard 8080).BASE_URL– Auslieferung unter einem Unterpfad, z. B.BASE_URL=/it-tools/(praktisch, wenn du keine eigene Subdomain vergeben willst).
Erster Start & Nutzung im Alltag
mkdir -p ~/it-tools && cd ~/it-tools
# docker-compose.yml hier ablegen …
docker compose up -d
docker compose logs -f it-tools # „start worker processes" abwarten
Danach ist die Werkzeugkiste unter http://127.0.0.1:50519 erreichbar (per SSH-Tunnel:
ssh -L 50519:127.0.0.1:50519 dein-server). Kurz durchklicken:
- Favoriten: auf das Stern-Symbol eines Tools klicken – die Auswahl merkt sich der Browser (localStorage), nicht der Server.
- Schnellsuche:
Ctrl/⌘+Köffnet die Tool-Suche – schneller als jedes Bookmark. - Dark-/Light-Mode und Sprache lassen sich oben rechts umschalten (auch Deutsch verfügbar).
- Beliebte Tools: JWT Decoder, UUID Generator, Hash All, Regex Tester, QR-Code Generator, JSON ↔ YAML, Cron-Expression-Parser, IP-Rechner.
💡 Kein Daten-Volume nötig! IT-Tools speichert nichts Serverseitiges – es gibt keine Datenbank und keine eigenen Dateien. Der Container ist damit komplett austauschbar: löschen und neu starten genügt, verloren geht höchstens die Browser-Favoritenliste.
Reverse Proxy & HTTPS – wichtiger als gedacht
# Caddyfile
tools.meine.domain {
encode zstd gzip
reverse_proxy 127.0.0.1:50519
}
Für den Alltag reicht die Loopback-URL. Wer die Tools im Team oder von unterwegs nutzt, hängt einen Reverse Proxy davor – und sollte dabei HTTPS nicht weglassen, denn der Fork-README weist auf einen echten Grund hin:
⚠️ HTTPS ist empfohlen: Werkzeuge wie PGP-Verschlüsselung nutzen die WebCrypto-API des Browsers – die ist nur unter HTTPS/SSL verfügbar. Auch die PWA-Installation („App installieren“) verlangt eine sichere Verbindung. Selbst im Heimnetz lohnt sich daher ein Let’s-Encrypt-Zertifikat (Caddy macht das automatisch, siehe Beispiel oben).
Ohne eigene Domain? Dann Port-Weiterleitung + IP-Zertifikat vermeiden und lieber per VPN/SSH-Tunnel auf den Loopback-Port zugreifen.
Updates & „Backups“ (kurz)
cd ~/it-tools
docker compose up -d --pull always # bzw. docker compose pull && up -d
- Backup: es gibt nichts zu sichern – keine Datenbank, keine Konfigurationsdateien. Einzige „Daten“ sind die Favoriten im Browser (bei Bedarf Browser-Profil mitnehmen).
- Update-Verhalten: Mit
pull_policy: alwayswird bei jedem Neustart neu gepullt. Für Server, die auch offline starten können sollen (z. B. nach Wartungsarbeiten ohne Internet), besser auf ein gepinntes Tag oder das Entfernen der Policy setzen.
Fehlerbehebung: Die häufigsten Stolperfallen
| Problem | Lösung |
|---|---|
| Seite nicht erreichbar („Connection refused“) | Port-Mapping prüfen: Der Fork lauscht intern auf 8080 (50519:8080), nicht auf 80. docker compose ps zeigt, ob der Container läuft. |
| Container startet nicht ohne Internet | pull_policy: always versucht bei jedem Start einen Pull. Zeile entfernen oder konkretes Image-Tag pinnen. |
| PGP-/Krypto-Tools werfen Fehler | Die WebCrypto-API braucht HTTPS – Seite über https:// aufrufen (auch intern per Reverse Proxy). |
| Werkzeugliste ist leer / UI lädt nicht | Browser-Cache leeren oder Seite hart neu laden (Cache-Problem nach Updates). Zusätzlich docker logs itt auf Fehler prüfen. |
| Eigene Tools/Subdomain 404 | Bei Hosting unter einem Unterpfad BASE_URL=/pfad/ setzen – ohne Angabe erwartet die App den Wurzelpfad. |
| Port 50519 schon belegt | Anderen freien Loopback-Port wählen und das Mapping anpassen; danach docker compose up -d. |
Fazit
IT-Tools ist eines der unkompliziertesten Self-Hosting-Projekte überhaupt: ein Container, keine Daten, keine Konfiguration – und trotzdem ein Werkzeug, das man täglich benutzt. Genau diese Schlichtheit macht es zum perfekten Einstieg in die eigene Docker-Welt: Wer den Stack einmal verstanden hat, hat das Muster für alle anderen Tutorials hier im Blog gelernt. Und weil alle Eingaben im Browser bleiben, ist es auch datenschutztechnisch ein Volltreffer.
✅ Zum Mitnehmen: (1) Interner Port ist 8080 (Fork-Basis
nginx-unprivileged) – nicht 80. (2) Web-UI nur auf 127.0.0.1 + Reverse Proxy nach außen.
(3) HTTPS verwenden (WebCrypto für PGP, PWA-Installation). (4) pull_policy: always ist
Komfort, verhindert aber Offline-Starts – wer Stabilität will, pinnt. (5) Kein Volume, kein Backup,
kein Login nötig – die Werkzeuge laufen komplett im Browser.