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:
+36
@@ -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"]
|
||||
Reference in New Issue
Block a user