From bb817b5000ac9219ab3f33060a9e97db18922d56 Mon Sep 17 00:00:00 2001 From: Luca Dametto Date: Sun, 27 Oct 2024 11:19:09 +0100 Subject: [PATCH 1/8] Fixed FromAsCasing: https://docs.docker.com/reference/build-checks/from-as-casing/ --- Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 55442c4..988b987 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.12.3-alpine as base +FROM python:3.12.3-alpine AS base WORKDIR /opt/hyperglass ENV HYPERGLASS_APP_PATH=/etc/hyperglass ENV HYPERGLASS_HOST=0.0.0.0 @@ -10,13 +10,13 @@ ENV HYPEGLASS_DISABLE_UI=true ENV HYPERGLASS_CONTAINER=true COPY . . -FROM base as ui +FROM base AS ui WORKDIR /opt/hyperglass/hyperglass/ui RUN apk add build-base pkgconfig cairo-dev nodejs npm RUN npm install -g pnpm RUN pnpm install -P -FROM ui as hyperglass +FROM ui AS hyperglass WORKDIR /opt/hyperglass RUN pip3 install -e . From 711f6aaf42da2fe7d51b964f39f654f69907123c Mon Sep 17 00:00:00 2001 From: Luca Dametto Date: Sun, 27 Oct 2024 11:21:07 +0100 Subject: [PATCH 2/8] Migrate to valkey.io, replacing redis after licensing changes. Being a drop-in replacement, this should not require any additional rework. --- compose.yaml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/compose.yaml b/compose.yaml index 74a6ff6..af4472c 100644 --- a/compose.yaml +++ b/compose.yaml @@ -1,9 +1,10 @@ services: - redis: - image: "redis:alpine" + kv-storage: + image: "valkey/valkey:8-alpine" + hyperglass: depends_on: - - redis + - kv-storage environment: - HYPERGLASS_APP_PATH=/etc/hyperglass - HYPERGLASS_HOST=${HYPERGLASS_HOST-0.0.0.0} From a523c34d150e77afc9c3b5cfb69cc2c093561596 Mon Sep 17 00:00:00 2001 From: Luca Dametto Date: Sun, 27 Oct 2024 11:36:40 +0100 Subject: [PATCH 3/8] Fixed bad default host for kv-storage --- compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compose.yaml b/compose.yaml index af4472c..5770d7c 100644 --- a/compose.yaml +++ b/compose.yaml @@ -7,11 +7,11 @@ services: - kv-storage environment: - HYPERGLASS_APP_PATH=/etc/hyperglass + - HYPERGLASS_REDIS_HOST=${HYPERGLASS_REDIS_HOST-kv-storage} - HYPERGLASS_HOST=${HYPERGLASS_HOST-0.0.0.0} - HYPERGLASS_PORT=${HYPERGLASS_PORT-8001} - HYPERGLASS_DEBUG=${HYPERGLASS_DEBUG-false} - HYPERGLASS_DEV_MODE=${HYPERGLASS_DEV_MODE-false} - - HYPERGLASS_REDIS_HOST=${HYPERGLASS_REDIS_HOST-redis} - HYPEGLASS_DISABLE_UI=${HYPEGLASS_DISABLE_UI-false} - HYPERGLASS_CONTAINER=${HYPERGLASS_CONTAINER-true} - HYPERGLASS_ORIGINAL_APP_PATH=${HYPERGLASS_APP_PATH} From b519d12e2cfc6bf96fbe977dc8723e65b87ce684 Mon Sep 17 00:00:00 2001 From: Luca Dametto Date: Sun, 27 Oct 2024 12:22:42 +0100 Subject: [PATCH 4/8] Build now caches dependencies, so that they are not fetched every time --- Dockerfile | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/Dockerfile b/Dockerfile index 988b987..efd319b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,24 +1,31 @@ -FROM python:3.12.3-alpine AS base -WORKDIR /opt/hyperglass -ENV HYPERGLASS_APP_PATH=/etc/hyperglass -ENV HYPERGLASS_HOST=0.0.0.0 -ENV HYPERGLASS_PORT=8001 -ENV HYPERGLASS_DEBUG=false -ENV HYPERGLASS_DEV_MODE=false -ENV HYPERGLASS_REDIS_HOST=redis -ENV HYPEGLASS_DISABLE_UI=true -ENV HYPERGLASS_CONTAINER=true -COPY . . - -FROM base AS ui -WORKDIR /opt/hyperglass/hyperglass/ui +FROM python:3.12.3-alpine AS tools RUN apk add build-base pkgconfig cairo-dev nodejs npm RUN npm install -g pnpm + +FROM tools AS base +ENV HYPERGLASS_APP_PATH=/etc/hyperglass \ + HYPERGLASS_HOST=0.0.0.0 \ + HYPERGLASS_PORT=8001 \ + HYPERGLASS_DEBUG=false \ + HYPERGLASS_DEV_MODE=false \ + HYPERGLASS_REDIS_HOST=redis \ + HYPEGLASS_DISABLE_UI=true \ + HYPERGLASS_CONTAINER=true + +FROM base AS deps +# JS Dependencies for UI +WORKDIR /opt/hyperglass/hyperglass/ui +COPY hyperglass/ui/package.json . +COPY hyperglass/ui/pnpm-lock.yaml . RUN pnpm install -P -FROM ui AS hyperglass +# Python Dependencies for Backend WORKDIR /opt/hyperglass -RUN pip3 install -e . +COPY README.md . +COPY pyproject.toml . +RUN pip install -e . +FROM deps AS hyperglass +COPY . . EXPOSE ${HYPERGLASS_PORT} CMD ["python3", "-m", "hyperglass.console", "start"] From 5b9e3c0d098ef599e2304c016535fd462a27571f Mon Sep 17 00:00:00 2001 From: Luca Dametto Date: Sun, 27 Oct 2024 12:35:19 +0100 Subject: [PATCH 5/8] Moved compose.yaml to compose-self.yaml, allowing self-build but preparing for more adequate container-registry based pull. --- compose.yaml => compose-self.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename compose.yaml => compose-self.yaml (100%) diff --git a/compose.yaml b/compose-self.yaml similarity index 100% rename from compose.yaml rename to compose-self.yaml index 5770d7c..86c526f 100644 --- a/compose.yaml +++ b/compose-self.yaml @@ -3,6 +3,7 @@ services: image: "valkey/valkey:8-alpine" hyperglass: + build: . depends_on: - kv-storage environment: @@ -15,7 +16,6 @@ services: - HYPEGLASS_DISABLE_UI=${HYPEGLASS_DISABLE_UI-false} - HYPERGLASS_CONTAINER=${HYPERGLASS_CONTAINER-true} - HYPERGLASS_ORIGINAL_APP_PATH=${HYPERGLASS_APP_PATH} - build: . ports: - "${HYPERGLASS_PORT-8001}:${HYPERGLASS_PORT-8001}" volumes: From c60a8a1009cb96b3f546142f58f3e3a784cede80 Mon Sep 17 00:00:00 2001 From: Luca Dametto Date: Sun, 27 Oct 2024 13:05:53 +0100 Subject: [PATCH 6/8] Added compose with fetch from Container Registry --- compose.yaml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 compose.yaml diff --git a/compose.yaml b/compose.yaml new file mode 100644 index 0000000..2d35179 --- /dev/null +++ b/compose.yaml @@ -0,0 +1,22 @@ +services: + kv-storage: + image: "valkey/valkey:8-alpine" + + hyperglass: + image: ghcr.io/thatmattlove/hyperglass:main + depends_on: + - kv-storage + environment: + - HYPERGLASS_APP_PATH=/etc/hyperglass + - HYPERGLASS_REDIS_HOST=${HYPERGLASS_REDIS_HOST-kv-storage} + - HYPERGLASS_HOST=${HYPERGLASS_HOST-0.0.0.0} + - HYPERGLASS_PORT=${HYPERGLASS_PORT-8001} + - HYPERGLASS_DEBUG=${HYPERGLASS_DEBUG-false} + - HYPERGLASS_DEV_MODE=${HYPERGLASS_DEV_MODE-false} + - HYPEGLASS_DISABLE_UI=${HYPEGLASS_DISABLE_UI-false} + - HYPERGLASS_CONTAINER=${HYPERGLASS_CONTAINER-true} + - HYPERGLASS_ORIGINAL_APP_PATH=${HYPERGLASS_APP_PATH} + ports: + - "${HYPERGLASS_PORT-8001}:${HYPERGLASS_PORT-8001}" + volumes: + - ./data:/etc/hyperglass From ec669b7466de7a422e5cdc94f11d9105c4cf5b34 Mon Sep 17 00:00:00 2001 From: Luca Dametto Date: Sun, 27 Oct 2024 13:11:26 +0100 Subject: [PATCH 7/8] Added restart parameter --- compose.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/compose.yaml b/compose.yaml index 2d35179..93395c8 100644 --- a/compose.yaml +++ b/compose.yaml @@ -4,6 +4,7 @@ services: hyperglass: image: ghcr.io/thatmattlove/hyperglass:main + restart: unless-stopped depends_on: - kv-storage environment: From fa754c8f060e64a9eb52a757f0a66d24aec7c319 Mon Sep 17 00:00:00 2001 From: Luca Dametto Date: Sun, 27 Oct 2024 13:11:31 +0100 Subject: [PATCH 8/8] Updated documentation --- docs/pages/installation.mdx | 1 + docs/pages/installation/docker-ghcr.mdx | 49 +++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 docs/pages/installation/docker-ghcr.mdx diff --git a/docs/pages/installation.mdx b/docs/pages/installation.mdx index 0eb736a..8843b70 100644 --- a/docs/pages/installation.mdx +++ b/docs/pages/installation.mdx @@ -2,6 +2,7 @@ import { Cards } from "nextra/components"; + diff --git a/docs/pages/installation/docker-ghcr.mdx b/docs/pages/installation/docker-ghcr.mdx new file mode 100644 index 0000000..22e65aa --- /dev/null +++ b/docs/pages/installation/docker-ghcr.mdx @@ -0,0 +1,49 @@ +--- +title: Using Docker +description: Installing hyperglass with Docker +--- + +import { Cards, Steps, Callout } from "nextra/components"; +// import { Callout } from "nextra-theme-docs"; + +**Docker is the recommended method for running hyperglass.** + + + +### Install Docker + + + + + +### Download hyperglass + +```shell copy +mkdir /home/hyperglass +cd /home/hyperglass +wget "https://github.com/thatmattlove/hyperglass/blob/main/compose.yaml" +``` + +### Optional: Quickstart + +Do this if you just want to see the hyperglass page working with a fake device. + +```shell copy +mkdir data +wget -O ./data/devices.yaml "https://raw.githubusercontent.com/thatmattlove/hyperglass/refs/heads/main/.samples/sample_devices.yaml" +docker compose up +``` + +Navigate to http://IPADDRESS:8001 + +### Enable auto-restart + +You may want to ensure that Hyperglass stays running even after a reboot. +To do this, you can easily change the "restart" parameter in `compose.yaml` to `always`. + +