From 2f7c84a2743d8f28a77f7cdd471292879ee8246f Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Tue, 21 Nov 2023 14:14:19 +0100 Subject: [PATCH] First build https://github.com/alexbelgium/hassio-addons/issues/1075 --- signalk/CHANGELOG.md | 1 + signalk/Dockerfile | 110 +++++++++++++++++++++++ signalk/README.md | 50 +++++++++++ signalk/apparmor.txt | 66 ++++++++++++++ signalk/build.json | 10 +++ signalk/config.json | 38 ++++++++ signalk/icon.png | Bin 0 -> 5332 bytes signalk/logo.png | Bin 0 -> 5332 bytes signalk/rootfs/etc/cont-init.d/99-run.sh | 10 +++ signalk/stats.png | Bin 0 -> 1949 bytes signalk/updater.json | 8 ++ 11 files changed, 293 insertions(+) create mode 100644 signalk/CHANGELOG.md create mode 100644 signalk/Dockerfile create mode 100644 signalk/README.md create mode 100644 signalk/apparmor.txt create mode 100644 signalk/build.json create mode 100644 signalk/config.json create mode 100644 signalk/icon.png create mode 100644 signalk/logo.png create mode 100644 signalk/rootfs/etc/cont-init.d/99-run.sh create mode 100644 signalk/stats.png create mode 100644 signalk/updater.json diff --git a/signalk/CHANGELOG.md b/signalk/CHANGELOG.md new file mode 100644 index 000000000..66f7e8b76 --- /dev/null +++ b/signalk/CHANGELOG.md @@ -0,0 +1 @@ +- Initial release diff --git a/signalk/Dockerfile b/signalk/Dockerfile new file mode 100644 index 000000000..629ffd8f2 --- /dev/null +++ b/signalk/Dockerfile @@ -0,0 +1,110 @@ +#============================# +# ALEXBELGIUM'S DOCKERFILE # +#============================# +# _.------. +# _.-` ('>.-`"""-. +# '.--'` _'` _ .--.) +# -' '-.-';` ` +# ' - _.' ``'--. +# '---` .-'""` +# /` +#=== Home Assistant Addon ===# + +################# +# 1 Build Image # +################# + +ARG BUILD_FROM +ARG BUILD_VERSION +ARG BUILD_FROM +FROM ${BUILD_FROM} + +################## +# 2 Modify Image # +################## + +# Set S6 wait time +ENV S6_CMD_WAIT_FOR_SERVICES=1 \ + S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0 \ + S6_SERVICES_GRACETIME=0 + +################## +# 3 Install apps # +################## + +# Copy local files +COPY rootfs/ / + +# Modules +ARG MODULES="00-banner.sh 01-custom_script.sh 00-global_var.sh 01-config_yaml.sh" + +# Automatic modules download +ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_automodules.sh" "/ha_automodules.sh" +RUN chmod 744 /ha_automodules.sh && /ha_automodules.sh "$MODULES" && rm /ha_automodules.sh + +# Manual apps +ENV PACKAGES="" + +# Automatic apps & bashio +ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_autoapps.sh" "/ha_autoapps.sh" +RUN chmod 744 /ha_autoapps.sh && /ha_autoapps.sh "$PACKAGES" && rm /ha_autoapps.sh + +################ +# 4 Entrypoint # +################ + +# Add entrypoint +ENV S6_STAGE2_HOOK=/ha_entrypoint.sh +ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_entrypoint.sh" "/ha_entrypoint.sh" + +# Entrypoint modifications +ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_entrypoint_modif.sh" "/ha_entrypoint_modif.sh" +RUN chmod 777 /ha_entrypoint.sh /ha_entrypoint_modif.sh && /ha_entrypoint_modif.sh && rm /ha_entrypoint_modif.sh + + +ENTRYPOINT [ "/usr/bin/env" ] +CMD [ "/ha_entrypoint.sh" ] +WORKDIR /config + +############ +# 5 Labels # +############ + +ARG BUILD_ARCH +ARG BUILD_DATE +ARG BUILD_DESCRIPTION +ARG BUILD_NAME +ARG BUILD_REF +ARG BUILD_REPOSITORY +ARG BUILD_VERSION +LABEL \ + io.hass.name="${BUILD_NAME}" \ + io.hass.description="${BUILD_DESCRIPTION}" \ + io.hass.arch="${BUILD_ARCH}" \ + io.hass.type="addon" \ + io.hass.version=${BUILD_VERSION} \ + maintainer="alexbelgium (https://github.com/alexbelgium)" \ + org.opencontainers.image.title="${BUILD_NAME}" \ + org.opencontainers.image.description="${BUILD_DESCRIPTION}" \ + org.opencontainers.image.vendor="Home Assistant Add-ons" \ + org.opencontainers.image.authors="alexbelgium (https://github.com/alexbelgium)" \ + org.opencontainers.image.licenses="MIT" \ + org.opencontainers.image.url="https://github.com/alexbelgium" \ + org.opencontainers.image.source="https://github.com/${BUILD_REPOSITORY}" \ + org.opencontainers.image.documentation="https://github.com/${BUILD_REPOSITORY}/blob/main/README.md" \ + org.opencontainers.image.created=${BUILD_DATE} \ + org.opencontainers.image.revision=${BUILD_REF} \ + org.opencontainers.image.version=${BUILD_VERSION} + +################# +# 6 Healthcheck # +################# + +ENV HEALTH_PORT="8080" \ + HEALTH_URL="/health" +HEALTHCHECK \ + --interval=5s \ + --retries=5 \ + --start-period=30s \ + --timeout=25s \ + CMD curl --fail "http://127.0.0.1:${HEALTH_PORT}${HEALTH_URL}" &>/dev/null || exit 1 diff --git a/signalk/README.md b/signalk/README.md new file mode 100644 index 000000000..6c39f945a --- /dev/null +++ b/signalk/README.md @@ -0,0 +1,50 @@ +# Home assistant add-on: signalk + +[![Donate][donation-badge]](https://www.buymeacoffee.com/alexbelgium) + +![Version](https://img.shields.io/badge/dynamic/json?label=Version&query=%24.version&url=https%3A%2F%2Fraw.githubusercontent.com%2Falexbelgium%2Fhassio-addons%2Fmaster%2Fsignalk%2Fconfig.json) +![Ingress](https://img.shields.io/badge/dynamic/json?label=Ingress&query=%24.ingress&url=https%3A%2F%2Fraw.githubusercontent.com%2Falexbelgium%2Fhassio-addons%2Fmaster%2Fsignalk%2Fconfig.json) +![Arch](https://img.shields.io/badge/dynamic/json?color=success&label=Arch&query=%24.arch&url=https%3A%2F%2Fraw.githubusercontent.com%2Falexbelgium%2Fhassio-addons%2Fmaster%2Fsignalk%2Fconfig.json) + +[![Codacy Badge](https://app.codacy.com/project/badge/Grade/9c6cf10bdbba45ecb202d7f579b5be0e)](https://www.codacy.com/gh/alexbelgium/hassio-addons/dashboard?utm_source=github.com&utm_medium=referral&utm_content=alexbelgium/hassio-addons&utm_campaign=Badge_Grade) +[![GitHub Super-Linter](https://img.shields.io/github/actions/workflow/status/alexbelgium/hassio-addons/weekly-supelinter.yaml?label=Lint%20code%20base)](https://github.com/alexbelgium/hassio-addons/actions/workflows/weekly-supelinter.yaml) +[![Builder](https://img.shields.io/github/actions/workflow/status/alexbelgium/hassio-addons/onpush_builder.yaml?label=Builder)](https://github.com/alexbelgium/hassio-addons/actions/workflows/onpush_builder.yaml) + +[donation-badge]: https://img.shields.io/badge/Buy%20me%20a%20coffee-%23d32f2f?logo=buy-me-a-coffee&style=flat&logoColor=white + +_Thanks to everyone having starred my repo! To star it click on the image below, then it will be on top right. Thanks!_ + +[![Stargazers repo roster for @alexbelgium/hassio-addons](https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.github/stars2.svg)](https://github.com/alexbelgium/hassio-addons/stargazers) + +![downloads evolution](https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/signalk/stats.png) + +## About + +[Signal K Server](https://github.com/SignalK/signalk-server) is a server application that runs on a central hub in a boat. If you use or develop marine electronics, Signal K Server has something to offer for you. + +## Configuration + +No optional variables + +## Installation + +The installation of this add-on is pretty straightforward and not different in comparison to installing any other add-on. + +1. Add my add-ons repository to your home assistant instance (in supervisor addons store at top right, or click button below if you have configured my HA) + [![Open your Home Assistant instance and show the add add-on repository dialog with a specific repository URL pre-filled.](https://my.home-assistant.io/badges/supervisor_add_addon_repository.svg)](https://my.home-assistant.io/redirect/supervisor_add_addon_repository/?repository_url=https%3A%2F%2Fgithub.com%2Falexbelgium%2Fhassio-addons) +1. Install this add-on. +1. Click the `Save` button to store your configuration. +1. Set the add-on options to your preferences +1. Start the add-on. +1. Check the logs of the add-on to see if everything went well. +1. Open the webUI and adapt the software options + +## Support + +Create an issue on github + +## Illustration + +![illustration](https://raw.githubusercontent.com/firefly-iii/firefly-iii/develop/.github/assets/img/imac-complete.png) + +[repository]: https://github.com/alexbelgium/hassio-addons diff --git a/signalk/apparmor.txt b/signalk/apparmor.txt new file mode 100644 index 000000000..4a5aca057 --- /dev/null +++ b/signalk/apparmor.txt @@ -0,0 +1,66 @@ +#include + +profile signalk_addon flags=(attach_disconnected,mediate_deleted) { + #include + + capability, + file, + signal, + mount, + umount, + remount, + network udp, + network tcp, + network dgram, + network stream, + network inet, + network inet6, + network netlink raw, + network unix dgram, + + capability setgid, + capability setuid, + capability sys_admin, + capability dac_read_search, + # capability dac_override, + # capability sys_rawio, + +# S6-Overlay + /init ix, + /run/{s6,s6-rc*,service}/** ix, + /package/** ix, + /command/** ix, + /run/{,**} rwk, + /dev/tty rw, + /bin/** ix, + /usr/bin/** ix, + /usr/lib/bashio/** ix, + /etc/s6/** rix, + /run/s6/** rix, + /etc/services.d/** rwix, + /etc/cont-init.d/** rwix, + /etc/cont-finish.d/** rwix, + /init rix, + /var/run/** mrwkl, + /var/run/ mrwkl, + /dev/i2c-1 mrwkl, + # Files required + /dev/fuse mrwkl, + /dev/sda1 mrwkl, + /dev/sdb1 mrwkl, + /dev/nvme0 mrwkl, + /dev/nvme1 mrwkl, + /dev/mmcblk0p1 mrwkl, + /dev/* mrwkl, + /tmp/** mrkwl, + + # Data access + /data/** rw, + + # suppress ptrace denials when using 'docker ps' or using 'ps' inside a container + ptrace (trace,read) peer=docker-default, + + # docker daemon confinement requires explict allow rule for signal + signal (receive) set=(kill,term) peer=/usr/bin/docker, + +} diff --git a/signalk/build.json b/signalk/build.json new file mode 100644 index 000000000..6e91c4ace --- /dev/null +++ b/signalk/build.json @@ -0,0 +1,10 @@ +{ + "build_from": { + "aarch64": "ghcr.io/signalk/signalk-server:latest", + "amd64": "ghcr.io/signalk/signalk-server:latest", + "armv7": "ghcr.io/signalk/signalk-server:latest" + }, + "codenotary": { + "signer": "alexandrep.github@gmail.com" + } + } diff --git a/signalk/config.json b/signalk/config.json new file mode 100644 index 000000000..b0b33d004 --- /dev/null +++ b/signalk/config.json @@ -0,0 +1,38 @@ +{ + "arch": [ + "aarch64", + "amd64", + "armv7" + ], + "codenotary": "alexandrep.github@gmail.com", + "description": "An implementation of a Signal K central server for boats", + "environment": { + "PORT": "3000", + "SSLPORT": "3443", + "NMEA0183PORT": "10110", + "TCPSTREAMPORT": "8375" + }, + "image": "ghcr.io/alexbelgium/signalk-{arch}", + "map": [ + "config:rw", + "share:rw", + "ssl" + ], + "name": "Signalk", + "ports": { + "3000/tcp": 3000, + "3443/tcp": 3443, + "10110/tcp": 10110, + "8375/tcp": 8375 + }, + "ports_description": { + "3000/tcp": "web interface", + "3443/tcp": "ssl web interface", + "10110/tcp": "NMEA0183 port", + "8375/tcp": "TCPSTREAM port" + }, + "slug": "signalk", + "url": "https://github.com/alexbelgium/hassio-addons", + "version": "1.0", + "webui": "http://[HOST]:[PORT:3000]" +} diff --git a/signalk/icon.png b/signalk/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1508e3f3b8661ef78019c4558cf42090088fcec6 GIT binary patch literal 5332 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 WCSYclqX20__UNI$W{LVs#Qy=laUaeA literal 0 HcmV?d00001 diff --git a/signalk/logo.png b/signalk/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..1508e3f3b8661ef78019c4558cf42090088fcec6 GIT binary patch literal 5332 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 WCSYclqX20__UNI$W{LVs#Qy=laUaeA literal 0 HcmV?d00001 diff --git a/signalk/rootfs/etc/cont-init.d/99-run.sh b/signalk/rootfs/etc/cont-init.d/99-run.sh new file mode 100644 index 000000000..05665fcb4 --- /dev/null +++ b/signalk/rootfs/etc/cont-init.d/99-run.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bashio +# shellcheck shell=bash +set -e +# hadolint ignore=SC2155 + +bashio::log.info "Setting folder" +cp -rnf /home/node/.signalk/* /config/ + +bashio::log.info "Starting application" +/./home/node/signalk/startup.sh \ No newline at end of file diff --git a/signalk/stats.png b/signalk/stats.png new file mode 100644 index 0000000000000000000000000000000000000000..2750e170adf3078f7eaa1e0a97ed55f706610f70 GIT binary patch literal 1949 zcmV;O2V(e%P)005Q<0{{R3A47^=0003aP)t-s|Ns90 z005w%p#J~>0KfnMfd9Y%{{Zgpz(4@V$N)iU;s3xO0DwTifd4RHfQtYCK!5=Mfd7C0 z)TJsa|Nj6$;Lrd702&$^Gcz+yO-*KIW`BQwnVFfhv$Md!z|73d<>lr7|NrnZGLY_& zt=Q)9Rq){d|L)y_|F*%e?(YBB009300Av6F|9>KjA})(p009300E-zJZ~y>+007O0 z&g%gG|Nj900M60>6qEmdQ1F0&|3v`$fO6@Udhq6qy|-()h70xe+@OFU|D^!#g6@<6 z)7_xmkWfHXYcGHl0Du$}fIt+0K!AW?z<^-?fPeu1fI$DCK>wg%|DbUHz`+0ifdBu% z&9|QL|L~x;&B6b{&A_mH|3IMsAilo70G@MhT!{Yw000SaNLh0L01m_e01m_fl`9S# z000IcNkl3zDQN5CG+JbN?f4?2I2i1yYDmYG%BcomRTQPC>-#dCLL-00000 z000000MH4y{|L7^Clraw!837!$iHm}el33;*zKkd-ERNy*ujbL2Atc5ZRdWy|NrOM zwj6z);r%`My?X1)`?l3T(qG2vdb_kc=e%vpItBzk;N>70000000000?@wY0)GpH}I zuThFmB;k#?eI**{pTYSL9g+SOj>LjMx`St-l^#5E_BPkN^?IQ`QToLhc<3GDbQz@? z>bo%{PZQ~;7?Y=obW@DU(?q%@+?YJg!u#rP%aGoS%XykVS&~{Z4M@h1Onpf2#h5(J zlJumjAB%C(eR^BnprluxW+_Z8eVaxi{o!bQIk(R%k^W?gJzcz}OVY9aBucu3T}4r(2muK&_!#2_lqmy0_((NKRKbgo?21dGFl+sa1_=?=f+nu?s(8a#i z66K@SOU0BV$2C&^oU^T}vg<7>FV4)9KI2~3#Hdm}x;{-SJWns}tqju2`H}TBGhcL! z*qVM#w0KRgKDO(hf-%`XKQaA6t9%W~hSeQi<7Z*7bB{zbksFZ>tM{N*_g&c=%88u2 zHyif$ev9z`=q7SoH@`=Emn(F3$A^dW7~M5}3D#nd?LDk_GLp=Ha2=!4wf^~$Tb5xF zGZ5XQReg{;P(Bppqg8c~Do{Qa3yG09AB^hJYDRfJ4DC};e%Ya~bd=9Q^<{_7DbP5dgnAjaTQ)31`z*?TlpxyaKT5wmkwf`B%F^#! zoWc1-ifiw;t;jL7Po=mbcb9aO&t=An9L^_GUVFczr!%xqM}41uF&h@;1}I#gY*@Ov4Rmv`YuT_UH-hHN4##u0re#>18zHYt_=CX9m26msb~}v9 zkwdv51})Cu+!8~iGql@cgmjb}V}Nv=TchDVT{nAYXt#$hT}q!LhjN4Hd%8+G&MlJn zCGF8l$GJ%gD{{iVob*f-oSUSuYA$@+L75GUbEBx9r>hDwZ8ytZ_vt7%OgTrcIS9%v zbIVgUy18xckdAWW=!bV99X2e7bL;3QazZ+65CrGuX^@_#!}>vRZl9)Gws=YI_?0Q# z6KERV6Y1;kD1QVke?uZohuxfaXb=owP+}xl;=Z+aFiUxH=6Vn?2tECS=)Se84*~{h z_mx|b1M`%J_u>`bdB4MxC=TyPe;D7^j8$MCli2;GuVn)0{aINQY-pbM|Dc z!wc#1|JZ{^QJ*dauL0?wIqZ^Qwd*{>fa~ zn(9C`an1`he}v};UwFqNyj+fqnQf2TvS_y5Ze7w5HpVZLLg{->3kXr7s(!tsajIGq z7fS1@IP|JU$1meXyQ9KIx8)?~&J$Eqv)!v}`Au*TmrEX`#KKS0E{$M)^Ct z!=P<(;zBitCB&(zY)L8$itO(z#gSdq7C8h9*YxOQh)<-Wg}L)7JOhJ5L7=sd_yy9S z6;%mCT2&k|Y_Y|1naV~-al=Ljl5=q)H-$K9n~QkeXnUQ^X4bRFkG(8HnWRt