# jacobalberty/unifi-docker architecture

> Architecture diagram of the GitHub repository jacobalberty/unifi-docker, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/jacobalberty/unifi-docker
- Repository: https://github.com/jacobalberty/unifi-docker

## Overview

This repository packages Ubiquiti’s UniFi Network Controller as a Docker container; it does not implement the controller’s application logic. The main workflow is an operator starting the container with configuration and persistent storage, then reaching the controller through its web interface and allowing UniFi devices to contact it using the Docker host’s address. The README documents those relationships, including ports, volumes, and SYSTEM_IP. Source excerpts were unavailable, so internal startup and health-check behavior is not inferred.

Main entry points: [`Dockerfile`](https://github.com/jacobalberty/unifi-docker/blob/main/Dockerfile) (UniFi image)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_container["Container runtime"]
  node_image["UniFi image"]
  node_entrypoint["Container entrypoint"]
  node_healthcheck["Health check"]
end

subgraph group_access["Controller access"]
  node_controller["UniFi Controller"]
  node_ports["Published ports"]
end

subgraph group_state["Configuration and state"]
  node_hostdata[("Host data directory")]
  node_containerdata[("Container data mount")]
  node_hostaddress["Docker host address"]
end

node_operator(("Docker operator"))
node_browser(("Administrator browser"))
node_devices(("UniFi devices"))

node_operator -->|"starts container"| node_image
node_image -->|"runs bundled"| node_controller
node_hostdata -->|"persists files"| node_containerdata
node_browser -->|"connects through"| node_ports
node_ports -->|"exposes interface"| node_controller
node_devices -->|"reach controller at"| node_hostaddress
node_hostaddress -->|"configured as SYSTEM_IP"| node_controller

click node_image "https://github.com/jacobalberty/unifi-docker/blob/main/Dockerfile"
click node_entrypoint "https://github.com/jacobalberty/unifi-docker/blob/main/docker-entrypoint.sh"
click node_healthcheck "https://github.com/jacobalberty/unifi-docker/blob/main/docker-healthcheck.sh"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_image,node_entrypoint,node_healthcheck,node_browser toneBlue
class node_controller,node_ports toneAmber
class node_hostdata,node_containerdata,node_hostaddress toneMint
class node_operator,node_devices toneIndigo
```

## Components

### Container runtime

- [UniFi image](https://github.com/jacobalberty/unifi-docker/blob/main/Dockerfile): `Dockerfile`
- [Container entrypoint](https://github.com/jacobalberty/unifi-docker/blob/main/docker-entrypoint.sh): `docker-entrypoint.sh`
- [Health check](https://github.com/jacobalberty/unifi-docker/blob/main/docker-healthcheck.sh): `docker-healthcheck.sh`

### Controller access

- **UniFi Controller**
- **Published ports**

### Configuration and state

- **Host data directory**
- **Container data mount**
- **Docker host address**

### Other components

- **Docker operator**
- **Administrator browser**
- **UniFi devices**

## Connections

- Docker operator → UniFi image: starts container (evidence: `README.md`)
- UniFi image → UniFi Controller: runs bundled (evidence: `README.md`)
- Host data directory → Container data mount: persists files (evidence: `README.md`)
- Administrator browser → Published ports: connects through (evidence: `README.md`)
- Published ports → UniFi Controller: exposes interface (evidence: `README.md`)
- UniFi devices → Docker host address: reach controller at (evidence: `README.md`)
- Docker host address → UniFi Controller: configured as SYSTEM_IP (evidence: `README.md`)
