diff --git a/PORT_MAP.md b/PORT_MAP.md index 4339d3c..d950be5 100644 --- a/PORT_MAP.md +++ b/PORT_MAP.md @@ -44,6 +44,7 @@ Rule of thumb: keep ports below 10000 free for stuff that reserves ports. | 22060 | pretalx | gunicorn | | 22070 | paperless-ng | gunicorn | | 22080 | netbox | gunicorn | +| 22090 | openhab | http | | 22999 | nginx | stub_status | ## UDP diff --git a/bundles/openhab/files/openhab b/bundles/openhab/files/openhab new file mode 100644 index 0000000..9893987 --- /dev/null +++ b/bundles/openhab/files/openhab @@ -0,0 +1,62 @@ +# openHAB service options + +######################### +## PORTS +## The ports openHAB will bind its HTTP/HTTPS web server to. + +OPENHAB_HTTP_PORT=22090 +#OPENHAB_HTTPS_PORT=8443 + +######################### +## HTTP(S) LISTEN ADDRESS +## The listen address used by the HTTP(S) server. +## 0.0.0.0 (default) allows a connection from any location +## 127.0.0.1 only allows the local machine to connect + +OPENHAB_HTTP_ADDRESS=127.0.0.1 + +######################### +## BACKUP DIRECTORY +## Set the following variable to specify the backup location. +## runtime/bin/backup and runtime/bin/restore will use this path for the zip files. + +#OPENHAB_BACKUPS=/var/lib/openhab/backups + +######################### +## JAVA OPTIONS +## Additional options for the JAVA_OPTS environment variable. +## These will be appended to the execution of the openHAB Java runtime in front of all other options. +## +## A couple of independent examples: +## EXTRA_JAVA_OPTS="-Dgnu.io.rxtx.SerialPorts=/dev/ttyZWAVE:/dev/ttyUSB0:/dev/ttyS0:/dev/ttyS2:/dev/ttyACM0:/dev/ttyAMA0" +## EXTRA_JAVA_OPTS="-Djna.library.path=/lib/arm-linux-gnueabihf/ -Duser.timezone=Europe/Berlin -Dgnu.io.rxtx.SerialPorts=/dev/ttyZWave" + +EXTRA_JAVA_OPTS="${extra_java_opts}" + +######################### +## OPENHAB DEFAULTS PATHS +## The following settings override the default apt/rpm locations and should be used with caution. +## openHAB will fail to update itself if you're using different paths. +## Only set these if you are testing and are confident in debugging. + +#OPENHAB_HOME=/usr/share/openhab +#OPENHAB_CONF=/etc/openhab +#OPENHAB_RUNTIME=/usr/share/openhab/runtime +#OPENHAB_USERDATA=/var/lib/openhab +#OPENHAB_LOGDIR=/var/log/openhab + +######################### +## OPENHAB USER AND GROUP +## The user and group that takes ownership of openHAB. Only available for init.d systems. +## To edit user and group for systemd, see the service file at /usr/lib/systemd/system/openhab.service. + +#OPENHAB_USER=openhab +#OPENHAB_GROUP=openhab + +######################### +## SYSTEMD START MODE +## The Karaf startmode for the openHAB runtime. Only available for systemctl/systemd systems. +## Defaults to daemon when unset here. Multiple options can be used without quotes. +## debug increases log output. daemon launches the Karaf/openHAB processes. + +#OPENHAB_STARTMODE=debug diff --git a/bundles/openhab/items.py b/bundles/openhab/items.py new file mode 100644 index 0000000..af274c2 --- /dev/null +++ b/bundles/openhab/items.py @@ -0,0 +1,28 @@ +extra_java_opts = [] + +for opt, value in sorted(node.metadata.get('openhab/java_opts', {}).items()): + if value is None: + extra_java_opts.append(f'-D{opt}') + else: + extra_java_opts.append(f'-D{opt}={value}') + +files = { + '/etc/default/openhab': { + 'content_type': 'mako', + 'context': { + 'extra_java_opts': ' '.join(extra_java_opts), + }, + 'triggers': { + 'svc_systemd:openhab:restart', + }, + }, +} + +svc_systemd = { + 'openhab': { + 'needs': { + 'pkg_apt:openhab', + 'pkg_apt:openhab-addons', + }, + }, +} diff --git a/bundles/openhab/metadata.py b/bundles/openhab/metadata.py new file mode 100644 index 0000000..4f800ad --- /dev/null +++ b/bundles/openhab/metadata.py @@ -0,0 +1,54 @@ +defaults = { + 'apt': { + 'packages': { + 'openjdk-11-jre': {}, + 'openhab': { + 'needs': { + 'pkg_apt:openjdk-11-jre', + }, + }, + 'openhab-addons': { + 'needs': { + 'pkg_apt:openhab', + }, + }, + }, + 'repos': { + 'openhab': { + 'items': { + 'deb https://openhab.jfrog.io/artifactory/openhab-linuxpkg stable main', + }, + }, + }, + }, + 'backups': { + 'paths': { + '/var/lib/openhab', + }, + }, +} + + +@metadata_reactor.provides( + 'nginx/vhosts/openhab', +) +def nginx(metadata): + if not node.has_bundle('nginx'): + raise DoNotRunAgain + + return { + 'nginx': { + 'vhosts': { + 'openhab': { + 'domain': metadata.get('openhab/domain'), + 'locations': { + '/': { + 'target': 'http://localhost:22090/', + }, + }, + 'website_check_path': '/', + 'website_check_string': 'opnHAB', + }, + }, + }, + } diff --git a/data/apt/files/gpg-keys/openhab.asc b/data/apt/files/gpg-keys/openhab.asc new file mode 100644 index 0000000..196e60e --- /dev/null +++ b/data/apt/files/gpg-keys/openhab.asc @@ -0,0 +1,52 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQINBFWz+OYBEACXcmKiL6ix1e4gJIWVoGMF7Hv0VOVKJgIUF/zJYBqk3sXQp/pi +JbIoODhrrIbEK33mqgy1EfzEmDhEurule59hq9HAQpOEz9hVbghhnsB8eXEQ9yJO +Wf8D8UGi2MKmqkvf7//jvdywNaQG/xhLu2xld7MxjuhswfiUWqoRFRpQoKY2QCe9 +n92qS0MGGK0B6WgapZZPT6AGyqKYtkCA5qUn7bcoEM2236nXhOAYHJh0o4qJ+cBk +BbSx8KEdrZxKQH50gB//gk/K2s+6CbYYOcJX6z3SLa3fxzlbyH9xQhpumAv/++2v +IIJbJHJicsmCKe/SQ7x5xVh90j6xA3oiYZIG78xWL0xnGCPhFws861dR2iON6CSp ++UKDciEQJH+Ew40la+DcHH7tzHlpZpCC1Jv7VBDkhziPrsscgOtYEwfhsq0Pyfpo +0IsyVDBUyj3Nne1NcKShd6+SYFz+gtXkttELi+DZmyA6onatw7LPGFHs8gOVKYBM +PzmERQ1DjlFW+Dc8FEQquYiquzmkyhJUXHVD1G8Mkic8jhccWbv3S7ePanvpgyZ3 +/KBAWk48/sym+zJTLWuJsCCNLI3K6gngexz1MMaRaPkbVK+4aboNLm6YhVlF5RCK +rTzIUAeB4dmu1k8Quqy/nYhYMokB9w5hiPwmGutjbpOntnrfqxvYy1EL1wARAQAB +tDBvcGVuSEFCIEJpbnRyYXkgUmVwb3NpdG9yaWVzIDxvd25lckBvcGVuaGFiLm9y +Zz6JAlQEEwEKAD4CGwMFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AWIQTtt9AwTi/K +9infEWMHVyH2oiQGCgUCXTjCTAUJDwsFBgAKCRAHVyH2oiQGCmfMD/sGZickeBlA ++x8XxfzvwxTnW/8MCvFBa4l/GoK9bALylvekP4adk/aaySMk/zjk231mwmMuttnP +VDg6TwhxhthveAFdbJEkTNhWUqH0FzyN9QwEGfIodjkQSYWwosY+55V0uYp2zfo9 +iHOtxzXjuLnkpZZPyY33qqGruqhnbyo2J09oLNw4MIwOepNMihP5u0nudTXiDivg +eg8lx/4WIIfwDwCe1gSBnU/731B0TIruxz3cQabLgeTuKB13+ajtJGuH1qrHxMVx +CFhD8wCugNj0qcI6NS06SXwLSAFr+xIeFXWVum2okWt2nzPpn7ll/FUG+qRECipt +m1IaEbelUrcuk7dUY75Fz5Fx8S0HtYAcCYYBDnhcaSSq7sK0NklrVz+bQZsJx4hY +ebkiNI/xFM3slOYoRzGWawuVpG/y1/VM/QRPS4uUS5rnvbGLVpn3bR+03FQwZWeb +yfMNke74TlM9+aEJZb1uxYQGLDFNDVNyALtGhDDp0R/FuDR0my3va3GJnZrtUGVg +M5Xfs/ebsKZ+CuLKqlbdZ0zjLUCJoT+tGGT1VPpi83jc+4wZXynj9b9/CWHoDfaN +VKTj95R7c7IOMRH5srpHX3qSzIF2Yav395SxJNuTTxcPCZ+n2M8jhvVnn4x8sWn5 +Ms0cN2tKVmfIbLF/1JempVsifJmRkbqN+rkCDQRVs/jmARAAxrYK7y1WW/szELpQ +guGSJGIjLt3tNGHGLP3lX4G1DlbziysTx3fY+c+hzGAM8WInsABq5fOWqkiLfx3f +wlHdo7bxv3U+xWq+xV9OOx+tjJn2xI3EtZ632pOQtxj/+6Tdcf3tIwOSMKK5kpGw +DU1VoLkWMfJeq0md6TDRB49p82Q1UGTaVCCfHYpvwCyuv1FWhSQuPJJLdP0YRX2i +1L7zyJLUzjmlAmlNoSMSaoozNJoz/XKFOPoJ66Tu8j8j8W+yqcAKeRTPiZXCEjbh +3wgxrx3PWV77kOmtfb0sHyxRujdJvEUfixrSoi4qLrE8kCo2OR8d1C5DsMlbZzvF +kHWaNSkOtpWqEGD/+BLs6lejHvbBEvYSsQMF53yH8q1U+9+7CP9wwKKAtN7LQJcw +xUADv/UhSLA/ZZTisaeUVem9vZlnVfANSieYQvy6zWqvKF4FhBpQbVzSINWv/nzu +NR4gg3uJRMHUb4cyfy3mmJ7FwwF8oHQXU+mkILWmiwrMDbq0Mjc8FRL5Bg4iTwS5 +jDGLZ0g4xU0GYi22eAWPL0dpQpA8t5Ja7W+x+VASOtbpnMAJO94YZ4yXlDcDeNJD +uo2y0z+xjuloPrGK+AssCpOBxpBlcrAFRMx5+rpkHSlLtkQNPeBPwXlryafDZ2PA +QsLBxUmFphyBraakmdGP3mR9ThUAEQEAAYkCPAQYAQoAJgIbDBYhBO230DBOL8r2 +Kd8RYwdXIfaiJAYKBQJdOMOgBQkPDFfaAAoJEAdXIfaiJAYKDLgP/iuh/Kppaem/ +wsRs6ehuCyEVz7ZJsKeq9ZL3d0jQy0CaFQRSICucptBeb14rTvf/i5+eEQI7E/bJ +9dLm1mepVS8M3wyn9+pP+Loa7bajEAD5ap08F88q56s+U70HO30qRHxp2yD9ZU0A +joX8pAIS/YaMicm1EFYajpyls/Jcyp2JG2AavRsrQ3iHvGv5Fc2/09E76lwje/Yh +royPhCrVm0adk6sxLfmKNiXBpLb5gzHR81oo20zk0+qYg2pRcVvfd6PvOcsrO4tl +K8kUMyfYixVKJu59xtMdg5ff6qlBrmTXkxyGb0t7VlhnX4UKcVU//+6b0TnBmUaG +61CZ4CGD2VvUMXcM0ihYl85g7+O9u/P2u3mhLX3xEa+rM4XpzqajL+jpt3CGQLkp +TnKZ8g1k9l7UkrHvVs/tBTCPvOEstzMwq2tWNuCbJ7Y9oB6FDPZGM3oFe2ubu2OH +MFT3KmOhD2jhWCXyB1hK/LOmINGfdfulBsK2KLKtKoJMWu2QLyMLa91l3AhzbH+s +7gQY6iC9rTy9qfHGOLTPjrHfkmrBky+KiDx1KVOnQvPqloLbKhkq1KHv8TAonqGK +THbU4Eod0DmWw80Z2zX7jV3BJs9VmDhr5NzpaZCVlrKrL+vIXzFClCYWQQMwfHpO +Yyq3xLVDG/Zs7LmgSAiEITxRFTR4qg7k +=r37a +-----END PGP PUBLIC KEY BLOCK----- diff --git a/data/backup/keys/home.openhab.key.vault b/data/backup/keys/home.openhab.key.vault new file mode 100644 index 0000000..44f9b82 --- /dev/null +++ b/data/backup/keys/home.openhab.key.vault @@ -0,0 +1 @@ +encrypt$gAAAAABhflKcIRszHtJHuBcgaWh7divgjgw72cKDiP7PPk7CQ9xpdSDw3phE7tpVBnaYSjYFcn0lxH5IN7YfgsgQnRFrH4N25-awLwxp6kVsL00Si9F4o8GUBvzobQGJtzEh0nuQ3zmGGfQSLZGKiXkFHLPmnc67Mqtz7zK7Qc5Lp0qqhMJ-2PLEwl5F6WxQU8TcNTlHDgIb23yS2GWfT3DrUvZjgOKkDvS--Huphyklksn3SR3cxHy1wSmlzJxV31t4Rh7YQyj1DcuBy2TIzLAhebtPJbiUZTFsFXDJULiHl1zi5X2jVIc17rpKW_9JMTeBEDZbebyqpOp3bo9zNv4RcC_XEIW7i2hCXNT8RksW5x45-E01jKQpiKgIcJoImcDQAanNh6_xEWEPWiJFVDulkMiJob5EvZjl1j79jOciahq8ycuePWyFAAtDZgpLm9u0JlzOLFL4NbvL8-MypBLpysXTohqDa3SYKlc2-UvsUJD8bagEYsy0Ay_nGQo961AqlWF7vPk2SdYXUjN657PxSbnczOuKv63BmFWEF9Bu8OFOzxIRs1ds7jvK3KChikO91VJMQxsZrSynFBwDm5zpYRsk-k1D2blf2g1yaThd2fijYCe1Lico_nTlyf-dpSrN5szlKW5V \ No newline at end of file diff --git a/data/backup/keys/home.openhab.pub b/data/backup/keys/home.openhab.pub new file mode 100644 index 0000000..e23cf59 --- /dev/null +++ b/data/backup/keys/home.openhab.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKYyrgpO2tCRTP+eEFD127OlRIATw7BxaSgYMnyYAbMS kunsi@kunsi-t470.kunbox.net diff --git a/nodes/home/openhab.py b/nodes/home/openhab.py index f31a3ef..85550eb 100644 --- a/nodes/home/openhab.py +++ b/nodes/home/openhab.py @@ -1,6 +1,9 @@ nodes['home.openhab'] = { 'hostname': '172.19.138.21', - 'bundles': set(), + 'bundles': { + 'nginx', + 'openhab', + }, 'groups': { 'debian-bullseye', }, @@ -13,8 +16,16 @@ nodes['home.openhab'] = { 'gateway4': '172.19.138.1', }, }, - 'backups': { # TODO remove this when running openhab - 'exclude_from_backups': True, + 'nginx': { + 'vhosts': { + 'openhab': {'ssl': '_.home.kunbox.net'}, + }, + }, + 'openhab': { + 'domain': 'openhab.home.kunbox.net', + 'java_opts': { + 'user.timezone': 'Europe/Berlin', + }, }, 'vm': { 'cpu': 2,