feat: add macOS build, Docker image, and CI workflows

macOS (.dmg):
- Add mac build config to apps/desktop/package.json (x64 + arm64 DMGs)
- .github/workflows/build-mac.yml — builds on macos-latest, uploads to release

Docker (headless scheduler + web remote):
- docker/server.js — Node.js entry point using homebridge-plugin lib;
  REST API + WebSocket, serves mobile web UI on PORT (default 3456)
- docker/package.json — production deps (adm-zip, axios, sql.js, ws, xml2js, xmlbuilder2)
- Dockerfile — node:20-alpine image; VOLUME /data for persistent config
- .github/workflows/build-docker.yml — builds linux/amd64+arm64,
  pushes to ghcr.io/k0rb3nd4ll4s/dibby-wemo-manager

Usage:
  docker run -d --network host -v /opt/wemo:/data \
    ghcr.io/k0rb3nd4ll4s/dibby-wemo-manager:latest

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
SRS IT
2026-03-29 16:27:03 -04:00
parent 58f2724d17
commit 3480c75f4c
6 changed files with 373 additions and 0 deletions
+36
View File
@@ -0,0 +1,36 @@
FROM node:20-alpine
LABEL maintainer="SRS IT" \
org.opencontainers.image.title="Dibby Wemo Manager" \
org.opencontainers.image.description="Headless Belkin Wemo scheduler + web remote — no cloud required" \
org.opencontainers.image.source="https://github.com/K0rb3nD4ll4S/dibby-wemo-manager"
WORKDIR /app
# Copy package manifest first for layer caching
COPY docker/package.json ./package.json
# Install production dependencies
RUN npm install --production
# Copy application code
COPY packages/homebridge-plugin/lib ./lib
COPY docker/server.js ./server.js
# Copy mobile web UI and icon
COPY apps/desktop/resources/web ./web
COPY apps/desktop/resources/icon.png ./icon.png
# Persistent data volume (stores dibby-wemo.json config + rules)
VOLUME /data
ENV DATA_DIR=/data \
PORT=3456
EXPOSE 3456
# NOTE: Wemo SSDP discovery requires --network host on Linux Docker hosts.
# On macOS Docker Desktop, host networking is not supported — add devices
# manually via the web UI or the REST API instead.
CMD ["node", "server.js"]