From 62b516457c283b82d97e4066c9eacb555e983e5d Mon Sep 17 00:00:00 2001 From: ai-dev Date: Fri, 8 Nov 2024 05:05:13 +0100 Subject: [PATCH] add openproject addon --- openproject/CHANGELOG.md | 16 +++++ openproject/Dockerfile | 125 +++++++++++++++++++++++++++++++++++++++ openproject/README.md | 51 ++++++++++++++++ openproject/apparmor.txt | 66 +++++++++++++++++++++ openproject/build.json | 9 +++ openproject/config.json | 26 ++++++++ openproject/icon.png | Bin 0 -> 7124 bytes openproject/logo.png | Bin 0 -> 7124 bytes openproject/stats.png | Bin 0 -> 1750 bytes openproject/updater.json | 8 +++ 10 files changed, 301 insertions(+) create mode 100644 openproject/CHANGELOG.md create mode 100644 openproject/Dockerfile create mode 100644 openproject/README.md create mode 100644 openproject/apparmor.txt create mode 100644 openproject/build.json create mode 100644 openproject/config.json create mode 100644 openproject/icon.png create mode 100644 openproject/logo.png create mode 100644 openproject/stats.png create mode 100644 openproject/updater.json diff --git a/openproject/CHANGELOG.md b/openproject/CHANGELOG.md new file mode 100644 index 0000000..e7b8d82 --- /dev/null +++ b/openproject/CHANGELOG.md @@ -0,0 +1,16 @@ + +## (25-05-2024) +- Update to latest version from openproject/openproject (changelog : https://github.com/openproject/openproject/releases) +## 14.1.0-2 (22-05-2024) +- Minor bugs fixed +## 14.1.0 (22-05-2024) + +- Update openproject to 14.1.0 + +## 14.1 (20-05-2024) + +- Booting issues & Persistence + +## 14 (09-05-2024) + +- Initial release. Welcome openproject to home assistant! \ No newline at end of file diff --git a/openproject/Dockerfile b/openproject/Dockerfile new file mode 100644 index 0000000..1788bdb --- /dev/null +++ b/openproject/Dockerfile @@ -0,0 +1,125 @@ +#============================# +# ALEXBELGIUM'S DOCKERFILE # +#============================# +# _.------. +# _.-` ('>.-`"""-. +# '.--'` _'` _ .--.) +# -' '-.-';` ` +# ' - _.' ``'--. +# '---` .-'""` +# /` +#=== Home Assistant Addon ===# + +################# +# 1 Build Image # +################# + +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 + +ENV OPENPROJECT_SECRET_KEY_BASE=addon_secret \ + OPENPROJECT_HOST__NAME=mez-openproject.duckdns.org \ + OPENPROJECT_HTTPS=true \ + OPENPROJECT_DEFAULT__LANGUAGE=en \ + OPENPROJECT_EDITION=bim \ + PGDATA=/data/pg\ + APP_DATA_PATH=/data/assets + +USER root + +RUN sed -i "1a /./ha_entrypoint.sh" /app/docker/prod/entrypoint.sh + +################## +# 3 Install apps # +################## + +# Copy local files +# COPY rootfs/ / + +# Uses /bin for compatibility purposes +# hadolint ignore=DL4005 +RUN if [ ! -f /bin/sh ] && [ -f /usr/bin/sh ]; then ln -s /usr/bin/sh /bin/sh; fi && \ + if [ ! -f /bin/bash ] && [ -f /usr/bin/bash ]; then ln -s /usr/bin/bash /bin/bash; fi + +# Modules +ARG MODULES="00-banner.sh 00-global_var.sh 01-custom_script.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 + +EXPOSE 8080 + +################ +# 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 [ "/ha_entrypoint.sh" ] + +############ +# 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="" +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 \ No newline at end of file diff --git a/openproject/README.md b/openproject/README.md new file mode 100644 index 0000000..e8b15e4 --- /dev/null +++ b/openproject/README.md @@ -0,0 +1,51 @@ +# Home assistant add-on: Openproject + +[![Donate][paypal-badge]](https://www.paypal.com/donate/?hosted_button_id=DZFULJZTP3UQA) +[![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%openproject%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%openproject%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%openproject%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 +[paypal-badge]: https://img.shields.io/badge/Buy%20me%20a%20coffee%20Paypal-%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/openproject/stats.png) + +## About + +Various tweaks and configuration options addition. +This addon is based on the [docker image](https://hub.docker.com/r/openproject/openproject). + +## Configuration + +```yaml +TODO +``` + +Webui can be found at `:port`. + +## Installation + +The installation of this add-on is pretty straightforward and not different in +comparison to installing any other Hass.io add-on. + +1. [Add my Hass.io add-ons repository][repository] to your Hass.io instance. +1. Install this add-on. +1. Click the `Save` button to store your configuration. +1. Start the add-on. +1. Check the logs of the add-on to see if everything went well. +1. Go to the webui, where you will initialize the app +1. Restart the addon, to apply any option that should be applied + +Default administration password (login: admin, password: admin). + +[repository]: https://github.com/alexbelgium/hassio-addons \ No newline at end of file diff --git a/openproject/apparmor.txt b/openproject/apparmor.txt new file mode 100644 index 0000000..9bd84b5 --- /dev/null +++ b/openproject/apparmor.txt @@ -0,0 +1,66 @@ +#include + +profile openproject_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, + +} \ No newline at end of file diff --git a/openproject/build.json b/openproject/build.json new file mode 100644 index 0000000..722069c --- /dev/null +++ b/openproject/build.json @@ -0,0 +1,9 @@ +{ + "build_from": { + "aarch64": "openproject/openproject:14.1.0", + "amd64": "openproject/openproject:14.1.0" + }, + "codenotary": { + "signer": "alexandrep.github@gmail.com" + } + } \ No newline at end of file diff --git a/openproject/config.json b/openproject/config.json new file mode 100644 index 0000000..a36b9c4 --- /dev/null +++ b/openproject/config.json @@ -0,0 +1,26 @@ +{ + "arch": [ + "amd64", + "aarch64" + ], + "codenotary": "alexandrep.github@gmail.com", + "description": "Openproject for Home Assistant", + "image": "ghcr.io/alexbelgium/openproject-{arch}", + "init": false, + "map": [ + "addon_config:rw", + "share:rw" + ], + "name": "Openproject", + "ports": { + "8080/tcp": 8080 + }, + "ports_description": { + "8080/tcp": "Web interface" + }, + "slug": "openproject", + "udev": true, + "url": "https://github.com/alexbelgium/hassio-addons/tree/master/openproject", + "version": "14.1.0-2", + "webui": "[PROTO:ssl]://[HOST]:[PORT:8080]" +} \ No newline at end of file diff --git a/openproject/icon.png b/openproject/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..7f04c439b5bef40694ae25d96116fd1e18a9ce34 GIT binary patch literal 7124 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 literal 0 HcmV?d00001 diff --git a/openproject/logo.png b/openproject/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7f04c439b5bef40694ae25d96116fd1e18a9ce34 GIT binary patch literal 7124 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 literal 0 HcmV?d00001 diff --git a/openproject/stats.png b/openproject/stats.png new file mode 100644 index 0000000000000000000000000000000000000000..6c00b1d890aab69ffc6eee598c90a4116ad605d5 GIT binary patch literal 1750 zcmV;{1}XW8P)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# z000G9NklgRuk&i%J0i0000000000 z06c~EZonKMy?eAa|Mc=oEt}t0-}jXIy{UeCw8nbptfI}I-(S1AzEa!XB?P+03SNuy zwz=+A_8L&DbhLNQD)?7-uTJ&4cVFl4+(X~!;3k#<00000005vNY{wKmQxmcEQ_=@L z6MF4}M*1vlBg{yjg>?YZk*=XHQk?5`?78U7v7GQ1v(AjpttvC(i`3Fo^$$^~s3E;a zKA#WL2Oxfu=D%^BH%SxeZ4f(2(-_a5q#1~e|5=9gY%V8hetuj{()@TiX68SR*a`&c z`Gh8ET4%*3X@;an7j>kUL7b$yE2O2)b0{68zs|8*E(Hy_hN)s)U6ge0>2Fd?`9(vn zKq7FDI`z6Gd`~Zs2qg2VYFu5k-l^W7r?zkd4Y`J>Uc@cohMf3D@u5{PJS5x@Zpdlj zjeU2~bs`YMQ$^g8B3&W92G0sNBvtQfofC=lLOgF=CHk^=b778L(PNs0hb#4!3ti4V zeK)v6LoSn-gn#k+()>=Z##=>vA+aHsoCvtQEZjin%%e15Tp|5YnlP>|d@)C^B&{gt zp8gbV)aw?1>pfx36Vijc-B>@tB#O$kCfq%9W4 zR_YsRL#sCunT+Oz8)(Rtqx~XoNf}yIb^+aK@f^}SDdLuJ=Zw3eZd+N&%$XhC6md&n zJYCqkTP2J1g}#Iv(tIt&9O*0lDZe3IOVX#c-lOugIdZDfbL2Xuw>$YpQbR5|k#Xr( zxFM|}mzv0!^jpL&bj~EwyKn>26X?E(TNql6Wf0*8hE}5($hcx?HG)wp^$mtr!we_f zKts;Yctza8Vh0bS3O8_17Z|pPTUhMiGPrO9iyaP3U|iiAPak!ZZS+cgBdK#{n=~`r zB#LQ-8^Y3s=~4qqpQnghf_?AO9J$e?&nDau?2(I>-l_HJiujK-T|+%mY);`{!hP?< zcFs&}Tuu2qebP#ONBEvzAd$wHUbtbVnKKk|%QQo)2;WFswVL;_*Pw_W3Cw#RqBoK-tnPR&eGj=4*J+xds+o?9lmck1jApt<8 literal 0 HcmV?d00001 diff --git a/openproject/updater.json b/openproject/updater.json new file mode 100644 index 0000000..3bb16f0 --- /dev/null +++ b/openproject/updater.json @@ -0,0 +1,8 @@ +{ + "last_update": "25-05-2024", + "repository": "mezned/HAddons", + "slug": "openproject", + "source": "gitea", + "upstream_repo": "openproject/openproject", + "upstream_version": "" + } \ No newline at end of file