Files
hassio-addons/omni-tools
Alexandre 89654e4f13 fix(omni-tools): let the add-on stop by backgrounding nginx and running the entrypoint as PID 1 (#3050)
The add-on could not be stopped: Home Assistant showed an Error status
after a few seconds and the container kept running and still served the
web UI (#3049).

cont-init.d/99-run.sh started nginx in the foreground -- '&>' is a
redirect, not a background operator -- and ha_entrypoint.sh runs every
cont-init.d script sequentially in the foreground. That script therefore
never returned, so the entrypoint never reached the code that installs
the terminate() handler forwarding SIGTERM to the application. The
reporter's log shows both halves of this: it prints 'Starting custom
scripts' and never reaches 'Everything started!'.

The add-on also shipped no 'init:' key, so Supervisor's default of true
made Docker inject its own init as PID 1 and left ha_entrypoint.sh as
PID 2, where the 'if $PID1' block holding the trap is skipped outright.

Background the launch and set init: false. The script then returns, the
entrypoint installs its trap, and nginx -- orphaned by the exiting
script -- is reparented to the entrypoint as PID 1, where terminate()'s
'pgrep -P $$' finds it and signals it directly.

Backgrounding from cont-init.d is what 24 other add-ons here already do
(autobrr runs a bare 'nginx &'). Moving the launch to services.d was
considered and rejected: ha_entrypoint.sh runs each services.d/*/run
inside a restart subshell, so the application ends up a grandchild of
PID 1 while terminate() enumerates direct children only. Reproduced --
the app survives that path unsignalled -- and it is the larger change.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-07 10:25:33 +02:00
..
2025-07-30 10:13:38 +02:00
2025-07-30 10:13:38 +02:00
2026-09-06 23:12:31 +00:00

Home Assistant Add-on: Omni Tools

About

Omni Tools is a self-hosted web application offering a variety of online utilities for everyday tasks. All file processing is done entirely client-side, ensuring privacy and security.

Supports aarch64 Architecture Supports amd64 Architecture

Features

  • Image Tools: Image resizer, converter
  • Video Tools: Video trimmer
  • PDF Tools: PDF splitter, merger
  • Text/List Tools: Various text manipulation utilities
  • Date and Time Tools: Date/time calculators and converters
  • Math Tools: Mathematical calculators and converters
  • Data Tools: JSON, CSV, XML processors

Installation

  1. Add my add-ons repository to your home assistant instance (in supervisor addons store at top right, or click button below if you have configured my HA) Open your Home Assistant instance and show the add add-on repository dialog with a specific repository URL pre-filled.
  2. Install the "Omni Tools" add-on
  3. Start the add-on
  4. Open the web UI

Configuration

Option: PUID

User ID to run the application with. Default is 0.

Option: PGID

Group ID to run the application with. Default is 0.

Option: TZ

Timezone setting for the application.

Usage

  1. Access the web interface through the Home Assistant sidebar or by navigating to the add-on's web UI
  2. Choose from various tool categories:
    • Image/Video/Audio processing
    • PDF manipulation
    • Text and list processing
    • Date and time utilities
    • Mathematical tools
    • Data format conversions

All processing is done locally in your browser for maximum privacy and security.

Environment variables

Use the add-on env_vars option to pass extra environment variables (uppercase or lowercase names). See https://github.com/alexbelgium/hassio-addons/wiki/Add-Environment-variables-to-your-Addon-2 for details.

Support

Got questions?

You have several options to get them answered:

Authors & contributors

The original setup of this repository is by Alex Belgium.

License

MIT License

Copyright (c) 2017-2024 Alex Belgium

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.