evilstudio/homelab-assistant-tool

CLI Tool which can help with manage your homelab devices.

Maintainers

Package info

github.com/evilprophet/homelab-assistant-tool

Type:project

pkg:composer/evilstudio/homelab-assistant-tool

Statistics

Installs: 2

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v2.4.3 2026-04-19 21:37 UTC

README

Introduction

Homelab Assistant Tool is an application for homelab operations and automation. It combines a CLI interface with a Web UI for managing devices, UPS units, schedules, and operational logs.

For technical details, see Tech Stack.

โœจ Key Features

  • ๐Ÿ”Œ Device operations

    • Start, stop, check status, and SSH operations for managed devices (via CLI)
  • ๐Ÿ”‹ UPS-aware behavior

    • UPS monitoring support and battery-aware automation logic
  • โฐ Scheduling

    • Cron-based automation with schedule-to-device assignment
  • ๐Ÿงพ Action logs

    • Unified action history for CLI, CRON, and WEB operations
    • Log filtering and cleanup tools
  • ๐ŸŒ Web UI

    • Management views for devices, UPS, schedules, and logs
    • Manual operational actions from the browser
  • ๐Ÿ” Authentication

    • simple mode (local username/password)
    • oidc mode (OIDC provider login)

๐Ÿ“ Project Structure

.
โ”œโ”€โ”€ bin/             # CLI entrypoints and helper scripts
โ”œโ”€โ”€ config/          # Symfony and app configuration
โ”œโ”€โ”€ docs/            # Main technical documentation
โ”œโ”€โ”€ migrations/      # Doctrine migrations
โ”œโ”€โ”€ public/          # Web entrypoint and built assets
โ”œโ”€โ”€ src/             # Application source code
โ”‚   โ”œโ”€โ”€ Command/         # CLI commands (setup, CRUD, runtime, users)
โ”‚   โ”œโ”€โ”€ Contract/        # Runtime contracts and enums
โ”‚   โ”œโ”€โ”€ Controller/      # Web controllers
โ”‚   โ”œโ”€โ”€ Entity/          # Doctrine entities
โ”‚   โ”œโ”€โ”€ EventSubscriber/ # Request/auth/log subscribers
โ”‚   โ”œโ”€โ”€ Factory/         # Runtime factories/adapters
โ”‚   โ”œโ”€โ”€ Helper/          # Configuration and helpers
โ”‚   โ”œโ”€โ”€ Repository/      # Doctrine repositories
โ”‚   โ”œโ”€โ”€ Runtime/         # Runtime models
โ”‚   โ””โ”€โ”€ Service/         # Application, runtime, auth, infrastructure services
โ”œโ”€โ”€ templates/       # Twig templates (dashboard, devices, ups, schedules, logs, auth)
โ”œโ”€โ”€ tests/           # Unit, integration, and functional test suites
โ””โ”€โ”€ var/             # Runtime data, cache, logs, SQLite files

๐Ÿš€ Quick Start

You can run HAT in two ways.

Option 1: Docker only (without cloning the full repository)

1. Download docker-compose.yml, .env.example, and config/parameters.yaml

mkdir -p config var/data
curl -L -o docker-compose.yml https://raw.githubusercontent.com/evilstudio/homelab-assistant-tool/main/docker-compose.yml
curl -L -o .env https://raw.githubusercontent.com/evilstudio/homelab-assistant-tool/main/.env.example
curl -L -o config/parameters.yaml https://raw.githubusercontent.com/evilstudio/homelab-assistant-tool/main/config/parameters.yaml

2. Update .env and config/parameters.yaml

Set values for your environment (.env for app/auth settings and OIDC values when using HAT_AUTH_MODE=oidc, config/parameters.yaml for runtime settings).

3. Pull GHCR image

docker compose pull

4. Run initial setup commands

docker compose run --rm hat-app php bin/console hat:setup:configure
docker compose run --rm hat-app php bin/console hat:setup:db --init
docker compose run --rm hat-app php bin/console hat:user:create

hat:user:create is required only for simple auth mode.

5. Start container

docker compose up -d

6. Open application

Open: http://localhost:8080

Option 2: Clone full project (development/local workflow)

1. Clone repository

git clone https://github.com/evilstudio/homelab-assistant-tool.git
cd homelab-assistant-tool
composer install
cp .env.example .env

2. Update .env

Set values for your environment (application/auth settings, and OIDC values when using HAT_AUTH_MODE=oidc).

3. Run setup commands locally

php bin/console hat:setup:configure
php bin/console hat:setup:db --init
php bin/console hat:user:create # Required only for `simple` auth mode

4. Start an application with an GHCR image

docker compose pull
docker compose up -d

5. Or run development compose with local build and Xdebug

docker compose -f docker-compose.dev.yml up -d --build

For local non-docker CLI workflow (optional):

php bin/console list

๐Ÿ’ป Commands Overview

Here is a list of commands available in HAT.

Command Description
hat:setup:configure Configure app technical settings.
hat:setup:db Initialize/migrate SQLite database.
hat:setup:init Run full setup flow.
hat:device:create/update/remove/list Manage devices.
hat:ups:create/update/remove/list Manage UPS entries.
hat:schedule:create/update/remove/list Manage schedules.
hat:device:check-status Check runtime status for a device.
hat:device:ssh Open SSH session to a device.
hat:device:start Start a device.
hat:device:stop Stop a device.
hat:cron:execute Execute scheduled tasks and maintenance.
hat:logs:list List action logs stored in DB.
hat:logs:cleanup Remove old/all action logs from DB.
hat:user:create Create local user for simple auth mode.
hat:user:remove Remove local user in simple auth mode.
hat:user:reset-password Reset local user password (simple mode).

๐Ÿงญ Notes

  • Business data is stored in SQLite.
  • Integration/functional tests use separate SQLite DB (var/data/hat_test.sqlite).
  • Runtime settings are configured in config/parameters.yaml.
  • Web logs are written to var/log/web.log.

๐Ÿงช Testing & Quality

Quick Start:

# Run all tests (Xdebug off)
bin/phpunit

# Run with coverage report
bin/phpunit-coverage

๐Ÿ“š Documentation: