Skip to content

omni-tools

omni-tools is a web app full of small tools: image, video and audio conversions, pdf tools, text and json formatting, number and date calculators. the processing runs in your browser, and the container only serves the page. it runs as one replica, anywhere on the swarm.

compose.yml, 16 lines, 1 note

each in the code opens a note on that line. download compose.yml

services:
  omni-tools:
    image: iib0011/omni-tools:latest@sha256:9a94e6ebc8dada2c7a5607b232214307e6f903a7747878602281ecdb79ced851
    environment:
      - TZ=America/Los_Angeles
    ports:
      - 8090:80
    deploy:
      labels:  # (1)!
        - homepage.group=Tools
        - homepage.name=omni-tools
        - homepage.icon=omni-tools.png
        - homepage.href=https://omni-tools.mydomain.com
        - homepage.description=File and text tools in the browser
      mode: replicated
      replicas: 1
  1. labels for the tile on the homepage dashboard. they go under deploy.labels because homepage reads the swarm's service specs, and container labels aren't in them.

state considerations

there is nothing to keep, so it has no volumes. it has no database, config file or upload directory, only the static page.

network considerations

the container listens on 80, and i publish it on 8090 through the ingress mesh. it joins no overlay network besides the stack's default.

reach it by name through traefik, at https://omni-tools.mydomain.com, or on port 8090 of any swarm node IP or the keepalived IP.

latest, pinned by digest

upstream stopped tagging releases (0.6.0 is from october 2025), but latest is rebuilt from main on every merge. i pin latest by digest, so i get current code and the compose still says which build is running. renovate opens a PR when the digest changes.

to get the current digest, run:

docker buildx imagetools inspect iib0011/omni-tools:latest

checking it

the page it serves should carry omni-tools' title:

curl -s http://192.168.1.45:8090/ | grep -o '<title>[^<]*</title>'
<title>OmniTools</title>