IKHSAN
ENID Baca dalam Bahasa Indonesia

homeio

Public

Forked from doctor-io/homeio

Branch
main
Latest commit
958d74616 October 2026

docker.md

Open raw
Docker Integration

Purpose

Docker integration parses Compose content, materializes stacks, runs Docker Compose commands, streams logs, gathers container stats, and performs maintenance tasks such as image/volume prune.

Locations

  • Server-side: lib/server/modules/docker/
  • Client-side: modules/apps/, modules/system/hooks/useDockerInfo.ts, modules/system/hooks/useDockerStats.ts, settings Docker section
  • Routes: app/api/v1/docker/, app operation routes under app/api/v1/store/

Key Files

FileRole
lib/server/modules/docker/compose-runner.tsCompose materialization, YAML text transforms, Docker CLI execution
lib/server/modules/docker/compose-parser.tsCompose parsing helpers
lib/server/modules/docker/logs.tsContainer log streaming
lib/server/modules/docker/stats.tsDocker stats collection
lib/server/modules/docker/maintenance-service.tsImage and volume prune
lib/server/modules/docker/app-data-ownership.tsApp data ownership helpers

Public API

  • Compose runner helpers used by lib/server/modules/apps/operations.ts
  • pruneDockerImages()
  • pruneDockerVolumes()
  • Docker info/stats helpers used by system hooks

Contracts

  • lib/shared/contracts/docker.ts

Database Tables

Docker itself is not persisted directly. Docker-backed app state is in:

  • app_stacks
  • app_operations

API Routes Owned

  • GET /api/v1/docker/info
  • GET /api/v1/docker/stats
  • GET /api/v1/docker/stats/stream
  • POST /api/v1/docker/prune/images
  • POST /api/v1/docker/prune/volumes

Known Issues

  • lib/server/modules/docker/compose-runner.ts is over 1,400 lines.
  • Compose YAML manipulation is text-based and fragile.
  • Docker access depends on the host Docker socket, which is a high-privilege boundary.
  • Docker read and mutation routes are protected by requireApiSession().

How To Extend

To add a Docker maintenance action:

  1. Add request/response types to lib/shared/contracts/docker.ts.
  2. Add the server function in lib/server/modules/docker/maintenance-service.ts or a narrow new file.
  3. Add a protected route under app/api/v1/docker/.
  4. Add query/mutation code in modules/settings/hooks/backend/api.ts or a module hook.
  5. Add UI in the relevant settings or apps component.
  6. Add tests under lib/server/modules/docker/__tests__/ and route tests.
bytes
2,390
lines
67
Type
md
Latest commit
16 October 2026