diff --git a/README.md b/README.md index f942ea2..661a859 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,19 @@ # hyperion-docker -Repository based on https://github.com/psychowood/hyperion.ng-docker +This repository is based on the work of [psychowood](https://github.com/psychowood/hyperion.ng-docker) although it has suffered some modifications. ![Hyperion](https://github.com/hyperion-project/hyperion.ng/blob/master/doc/logo_dark.png?raw=true#gh-dark-mode-only) ![Hyperion](https://github.com/hyperion-project/hyperion.ng/blob/master/doc/logo_light.png?raw=true#gh-light-mode-only) -This is a simple repository containining some `docker-compose.yml` sample files useful for running [hyperiong.ng](https://github.com/hyperion-project/hyperion.ng/#readme) as a service inside a docker environment, without having to rely on one of the closed sources docker images running wild out there. -Just copy-paste and `docker-compose up -d` it. +This is a simple repository containining some the source files that enable you tu run [hyperiong.ng](https://github.com/hyperion-project/hyperion.ng/#readme) in a docker container. +You can choose between building the image yourself or using the image that's published in this repositoru. -The docker-compose file is quite simple: +The image is quite simple: -1. It's based on the [official Debian 11 (bullseye) docker image](https://hub.docker.com/_/debian) -2. It downloads the hyperion official package from the [official hyperion apt package repository](https://apt.hyperion-project.org/) +1. It's based on the [official Debian 12 (bookworm) docker image](https://hub.docker.com/_/debian) +2. It downloads the hyperion official package from the [official hyperion apt package repository](https://apt.releases.hyperion-project.org/) 3. Maps the `/config` dirctory as an external volume, to keep your settings -4. Runs hyperiond service as non-root user. Default UID:GID are 1000:1000 but they can be easily changed adding a `.env` file - -The setup is done on first run. +4. Runs hyperiond service as non-root user. Default UID:GID are 1000:1000 but they can be easily changed through environment variables Sadly, the resulting image is not exaclty slim at ~500MB, because hyperion has lots of dependencies. Since many of them are for the Desktop/Qt UI, it should be possible to slim the image up by cherry picking the ones not used but the cli service, but that's probably not really worth it. @@ -25,80 +23,30 @@ You have different options to run this image, after starting the container you c ### Standard configuration -Simply said: git clone the repo (or directly download the Dockerfile) -```sh -git clone https://github.com/psychowood/hyperion.ng-docker ``` -docker build the local image -```sh -docker build -t hyperionng --no-cache . -``` -if you want to run a nightly hyperionng build, run this additional build command to update the local image -```sh -docker build -t hyperionng -f Dockerfile.nightly . -``` -start the container with `docker compose up -d` with the following `docker-compose.yml` file (included in the repo): +start the container with `docker compose up -d` with the following `docker-compose.yml` : ```yaml version: '3.3' services: hyperionng: - image: hyperionng:latest - container_name: hyperionng + image: git.claeyscloud.com/david/hyperion-docker volumes: - - hyperionng-config:/config + - /docker/hyperion:/config ports: - "19400:19400" - "19444:19444" - "19445:19445" - "8090:8090" - "8092:8092" + Philips Hue in Entertainment mode + #- "2100:2100" restart: unless-stopped -volumes: - hyperionng-config: ``` -### Standalone configuration -This configuration (found in `docker-compose.standalone.yml`) is completely built when upping the container, it runs of debian:bullseye image and installs hyperion and dependencies at first boot. -All the main hyperion ports are mapped on your docker host. - -```yaml -version: '3.3' - -services: - hyperionng: - image: debian:bullseye - container_name: hyperionng - command: bash -c "groupadd -f hyperion || true && - adduser -q --uid ${UID:-1000} --gid ${GID:-1000} --disabled-password --no-create-home hyperion || true && - mkdir -p /config && - chown ${UID:-1000}:${GID:-1000} /config && - apt-get update && - apt-get install -y wget gpg sudo libpython3.9 && - wget -qO /tmp/hyperion.pub.key https://apt.hyperion-project.org/hyperion.pub.key && - gpg --dearmor -o - /tmp/hyperion.pub.key > /usr/share/keyrings/hyperion.pub.gpg && - echo \"deb [signed-by=/usr/share/keyrings/hyperion.pub.gpg] https://apt.hyperion-project.org/ bullseye main\" > /etc/apt/sources.list.d/hyperion.list && - apt-get update && - apt-get install -y hyperion && - apt-get clean && - sudo -u hyperion /usr/bin/hyperiond -v --service -u /config" - ports: - - "19400:19400" - - "19444:19444" - - "19445:19445" - - "8090:8090" - - "8092:8092" - volumes: - - hyperionng-config:/config - restart: unless-stopped -volumes: - hyperionng-config: - -``` - -In both cases, you may want to adapt the "ports" section adding other port mappings for specific cases (e.g. "2100:2100/udp" for Philips Hue in Entertainment mode). +You may want to adapt the "ports" section adding other port mappings for specific cases (e.g. "2100:2100/udp" for Philips Hue in Entertainment mode). An alternative, especially if you need advanced functions like mDNS and SSDP services, could be running the cointainer in a macvlan network bridged to your local one. The following is an example that exposes the hyperionng container with the 192.168.1.17 IP in a local network 192.168.1.0/24 with the gateway 192.168.1.1, please adapt the configuration to your specific case.