From 693b2736d11fcd97ae7202c95198f5684178839e Mon Sep 17 00:00:00 2001 From: Alexandre Date: Sat, 28 Dec 2024 11:55:07 +0100 Subject: [PATCH] grampsweb --- grampsweb/CHANGELOG.md | 1 + grampsweb/Dockerfile | 123 +++++++++++++++++++++ grampsweb/README.md | 1 + grampsweb/apparmor.txt | 66 +++++++++++ grampsweb/build.yaml | 6 + grampsweb/config.yaml | 106 ++++++++++++++++++ grampsweb/icon.png | Bin 0 -> 6439 bytes grampsweb/logo.png | Bin 0 -> 6439 bytes grampsweb/rootfs/etc/cont-init.d/99-run.sh | 54 +++++++++ grampsweb/stats.png | Bin 0 -> 1918 bytes grampsweb/updater.json | 9 ++ 11 files changed, 366 insertions(+) create mode 100644 grampsweb/CHANGELOG.md create mode 100644 grampsweb/Dockerfile create mode 100644 grampsweb/README.md create mode 100644 grampsweb/apparmor.txt create mode 100644 grampsweb/build.yaml create mode 100644 grampsweb/config.yaml create mode 100644 grampsweb/icon.png create mode 100644 grampsweb/logo.png create mode 100644 grampsweb/rootfs/etc/cont-init.d/99-run.sh create mode 100644 grampsweb/stats.png create mode 100644 grampsweb/updater.json diff --git a/grampsweb/CHANGELOG.md b/grampsweb/CHANGELOG.md new file mode 100644 index 000000000..8d414fa40 --- /dev/null +++ b/grampsweb/CHANGELOG.md @@ -0,0 +1 @@ +- First version diff --git a/grampsweb/Dockerfile b/grampsweb/Dockerfile new file mode 100644 index 000000000..09d6495ec --- /dev/null +++ b/grampsweb/Dockerfile @@ -0,0 +1,123 @@ +#============================# +# ALEXBELGIUM'S DOCKERFILE # +#============================# +# _.------. +# _.-` ('>.-`"""-. +# '.--'` _'` _ .--.) +# -' '-.-';` ` +# ' - _.' ``'--. +# '---` .-'""` +# /` +#=== Home Assistant Addon ===# + +################# +# 1 Build Image # +################# + +ARG BUILD_VERSION +ARG BUILD_FROM +FROM ${BUILD_FROM} +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +################## +# 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 + + - gramps_users:/app/users # persist user database + - gramps_index:/app/indexdir # persist search index + - gramps_thumb_cache:/app/thumbnail_cache # persist thumbnails + - gramps_cache:/app/cache # persist export and report caches + - gramps_secret:/app/secret # persist flask secret + - gramps_db:/root/.gramps/grampsdb # persist Gramps database + - gramps_media:/app/media # persist media files + - gramps_tmp:/tmp + + +################## +# 3 Install apps # +################## + +# Add rootfs +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="" + +# 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="sudo redis nginx" + +# 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" ] + +############ +# 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 diff --git a/grampsweb/README.md b/grampsweb/README.md new file mode 100644 index 000000000..f3f7ecd07 --- /dev/null +++ b/grampsweb/README.md @@ -0,0 +1 @@ +# Home assistant add-on: grampsweb diff --git a/grampsweb/apparmor.txt b/grampsweb/apparmor.txt new file mode 100644 index 000000000..ddb432d34 --- /dev/null +++ b/grampsweb/apparmor.txt @@ -0,0 +1,66 @@ +#include + +profile grampsweb_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/grampsweb/build.yaml b/grampsweb/build.yaml new file mode 100644 index 000000000..66d0f6022 --- /dev/null +++ b/grampsweb/build.yaml @@ -0,0 +1,6 @@ +--- +build_from: + aarch64: ghcr.io/gramps-project/grampsweb:latest + amd64: ghcr.io/gramps-project/grampsweb:latest +codenotary: + signer: alexandrep.github@gmail.com diff --git a/grampsweb/config.yaml b/grampsweb/config.yaml new file mode 100644 index 000000000..8beb4e01c --- /dev/null +++ b/grampsweb/config.yaml @@ -0,0 +1,106 @@ +arch: +- aarch64 +- amd64 +codenotary: alexandrep.github@gmail.com +description: Open Source Online Genealogy System +devices: +- "/dev/dri" +- "/dev/dri/card0" +- "/dev/dri/card1" +- "/dev/dri/renderD128" +- "/dev/vchiq" +- "/dev/video10" +- "/dev/video11" +- "/dev/video12" +- "/dev/video13" +- "/dev/video14" +- "/dev/video15" +- "/dev/video16" +- "/dev/ttyUSB0" +- "/dev/sda" +- "/dev/sdb" +- "/dev/sdc" +- "/dev/sdd" +- "/dev/sde" +- "/dev/sdf" +- "/dev/sdg" +- "/dev/nvme" +- "/dev/nvme0n1p1" +- "/dev/nvme0n1p2" +- "/dev/nvme0n1p3" +- "/dev/nvme1n1p1" +- "/dev/nvme1n1p2" +- "/dev/nvme1n1p3" +- "/dev/nvme2n1p1" +- "/dev/nvme2n1p2" +- "/dev/nvme3n1p3" +- "/dev/mmcblk" +- "/dev/fuse" +- "/dev/sda1" +- "/dev/sdb1" +- "/dev/sdc1" +- "/dev/sdd1" +- "/dev/sde1" +- "/dev/sdf1" +- "/dev/sdg1" +- "/dev/sda2" +- "/dev/sdb2" +- "/dev/sdc2" +- "/dev/sdd2" +- "/dev/sde2" +- "/dev/sdf2" +- "/dev/sdg2" +- "/dev/sda3" +- "/dev/sdb3" +- "/dev/sda4" +- "/dev/sdb4" +- "/dev/sda5" +- "/dev/sda6" +- "/dev/sda7" +- "/dev/sda8" +- "/dev/nvme0" +- "/dev/nvme1" +- "/dev/nvme2" +environment: { + "GRAMPSWEB_TREE": "Gramps Web", + "GRAMPSWEB_CELERY_CONFIG__broker_url": "redis://localhost:6379/0", + "GRAMPSWEB_CELERY_CONFIG__result_backend": "redis://localhost:6379/0", + "GRAMPSWEB_RATELIMIT_STORAGE_URI": "redis://localhost:6379/1" +} +image: ghcr.io/alexbelgium/grampsweb-{arch} +init: false +options: { + "database": "sqlite" +} +map: + - type: addon_config + read_only: false +name: Monica +ports: + 80/tcp: 5000 +ports_description: + 80/tcp: webui +schema: { + "database": "list(sqlite|MariaDB_addon|Mysql_external)", + "APP_KEY": "str?", + "DB_DATABASE": "str?", + "DB_HOST": "str?", + "DB_PASSWORD": "str?", + "DB_PORT": "int?", + "DB_USERNAME": "str?", + "MAIL_MAILER": "str?", + "MAIL_HOST": "str?", + "MAIL_PORT": "str?", + "MAIL_USERNAME": "str?", + "MAIL_PASSWORD": "str?", + "MAIL_ENCRYPTION": "str?", + "MAIL_FROM_ADDRESS": "str?", + "MAIL_FROM_NAME": "str?" +} +services: +- mysql:want +slug: grampsweb +tmpfs: true +url: https://github.com/alexbelgium/hassio-addons/tree/master/grampsweb +version: 1.0 +webui: "[PROTO:ssl]://[HOST]:[PORT:80]" diff --git a/grampsweb/icon.png b/grampsweb/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..16bf9668a0e06d99892dd420aa309d10b8abfbea GIT binary patch literal 6439 zcmV+?8QA8DP)?YqPo4jm$yu2kLTv>+D3bLY%CbNU1X_`wf;@Pi-x;0HhW!4H1$0t5w`vIm)!Hwgbh_`ca}`XI<`%1`)z z^!_jO{!PNy=yi7gT$!?CF3e`-O>>~~7t0)(@>}LidEYXJrZ@0CuMU(3l#{R^4W<)e z1Ysl%?pL}dTk#@c0%0tDFPg5~>F-MjClYp{_Z7^6rhGwxO754Im}XOM!hCpE>oZRv zTtf4)-7+UitaXkq{yuMf4x_AdN^`5w94k39kFbGCE?Qk7^y5ER2lkAR8Nhq=kmqUe zYv|gCun;CB>l0PUP27oR=}ovMh(Dw0p20byxm9S670h)AF+?s;4<2H73Sp|j0XxI1 zgo_BP(C_4NZ4sKX(SpfE_&VM1&vd`PS+@%=3JDw3a{^!hkqoGJ?Gvt+YH93~OQ)Bm0!JYv~GOv?zrAqmxw2-c9W7=4#?2e85UxQlD^5ccs9*E&NYj8e&NEIF-;9C5j65IrdE>82Pf$2@TJ?>`~D zNxyNLa4q2|`rTUe*?U1YqLMzZM4unex#>POsXl`wReWVE>7*mIk|k~lt5V`8W|mlNrUb$gqN4dv z#JTJI6X$f>@WpX~W`7dl-fo1C{Y1=i2%2@%GuHE&Gso8Tqh~}lY~*~-Y~FrZ_Td5* zj)A6v%%ptCOa%)t#SZ!BR@C|%{#U&ZFpCnopQ9+pJM@J^S&g77u|S-nMGCWWWy`QS zwQI6Aty{9sdi7)@h7V)o$B$#*e)DfOZR+=I#`I}y+O(1#_hYw{7 z7R+aR_v~Tk&Yfi`DJks!{d?^3dTjt+02-tN{Cb+qSK&TGh&4 zAhI&R)=X+@%~0^%4+j2D+|s3j*^(uTeOg0yCmcF-h`UcSk;p_#rHL(pi)Kbrol4vl zE0)vhe!^ZQIC?aO+sv6nWTK@~)Rw@=3y#VRvAlTkB9FNieH{)TKAd4MdpL0bw0zS( z$9RkoF6Rk@Zm!?_RBFINh~m1sycExO4%VUR+8Ph z?^gJvJd2J#;-{(|T)%#eCndO7=>qMPU}qVX+31Ty-C;7R`|iAmxqfOo07S_UF>}*? z4AY2cr)1MBP=1SWl{-Xpx2|1yK;93I9UBRqcQq5~EJ9!q7p^!Y#`!@G?%cVo3!2_0*bb%c?a)j;MyO+#}11vW73`{q$bWcXE8nz}uF^!gp zZyVWra}h2V5zkOC_Uzd$H29l0Z?g7e4nWizoitlcMlsk%k_PUE^XGqMwQGgCvu6&hOw z%=Y{E8@7k!+P_)f2$p9&>CfC<9F8i$0# zf~crS&O!DB!|&kpu3bCxtzp)znY@r3)eZ`+CT`B0A2Lh|tqH)r`uFe4e);7WZgbizJTO&ybno`UJunfqYKHPc zFjoQQ*XM%=y|9IVa5Y1#vt2uPzF_*m33KVvCH6fnL}Uw;{2~e$Oe~2o;@+S@ z)9W(I745&uYEkD#Y;3HMGXvH5THLD=3{?(#T5(cR5*Nv~_ffUgl`B`cOyG0p&e48Z z?l~gi{=p@RvF+Qo>1y38mM`ay8b^y5m6Pz)>A|sMNBMUJ35>?7`DM5l?RU?J?7#5b zz&)o2dv@>UB1-GQL9B)i>JbNCHY^Fi9ew(I=CT6>X}wzahL=r*^RR!TE=g=lb>QT*(vMhtZF^q6`O@7HN%(!HygmE;Mm4qqH<1;pTSbX23VMk6K5XhJ6JTg3+T~`+ z;>G&$&h&KFtf{tm#^jYLQ<|MVeM-t_i~Z1EOhZEK-@nf=fp6Tn!Rpqj^}>B&$L`*> zOZYy}l-ssxMfcHO&?RYc9y@we_dZ{KIYvg&8Y@HKi6R8XUUTr^0o{R~Idhr^4YZUG zJOENw($mH3g74Bk-Mm?o7YKp-|M=rV!vw}6v*$cckl+&R#EBD9_Zm0$OQ#YGTY(-d zTrgjz&Ui7=ExQPDb6L+C&{eR|h~(nMB;A2-+_)j*f3!49^s|!LJFyqGZ}+0J1n(z| zA7_}rs5$_*+KYbVmz_NuCv~qyi+*%y8)KZ|q)_U5(zb2o;}InAF5==ph!FT~!lPme zRx=@AFfu$G*}iz#QKQ18CJ$yx#}4f^2|RE>f5Wv;D2lUJu+(NS(5_`*^QKMQ>~ln5 z6us+}&O(!x@MxVfo0WG(JXjynO1LZ<9@Lvm80}hirR~GQ87~8H$YXKYFB(Y@Zj z8>}KC1a7F;Qb~RAdGjKKG6tbUITO+F?#OT*8l9;9FYNDy>_npko;6dO!1!#!gz-}M z!rVC8gH^|gUhp9;?Ivqbzpkh)e3v-5tcVTVRYZfvb=7jJ z10rx05dseutveDCTd-M?zT(UYkL&DNGlfMTR=*?VWu$<1>InX`aigZTuPR>PVi8G$ ziVjC+p{;EVzqVecWz(jOMG5?fXcsEtru;%QMMrOd0F-7R(&8*=j=xo`P@Y9Q@zFwA zi`>8exsGyLqICA`S%wLGG$zL3;=yN#Jx9!)>vRjak&?nXc5Lr7j;!wMP{f=85)38E zS{~8%T2q9BCyEkS#JdBZYR%9Zx`A{2J*;5^79Aa(A!0#Pxa<-W6L_Cz1kE8XopFWU zr0FfjP||K4{RSo)-ZEr(!i0gxN)403nn=EMi47h+&|$>Peyn;)5;s#*d8}QKz&O*X zx=5nkS0V()0JrHxSJdD&Qb9#BBk&-IPW9-~joZd>+9URgIIwMJS7&><=sxKvRM@+B zFQ?fis-%F&t97fEYzPq>R=|J({rEnuM_lzD$b!-H0wVYVi6y8-eCE!SR^zVWu?&Gc(6kRFf0*>aCEICK@ipQMx!USwuwF zve;Dm!3Nl9w{Pp$3aRNQo**#SzQY>0wTln-@zJA3I?T#&bwOh8^b#BpF@sl5BH%9; zE+keLYVVJMmM<5=PdO2BSGH=|!Yw(*TA7L))_W!|I@B(yz+L+lo!=RY1_6nyL#n{L(dn)+>IM4EQz$$b7XQL zv*h&Y)4b*w9EzwEa-$rXR&cURnl#aE3zKs%?d_<0*2~UBC8LCRCJovYD3et=S+pjp zPMumjtR(`Gk^8wf%GH`Ab>EGPi`6vC4jnqkCQY2cI<#-c1067X5VVKlgjyqHXkdG( zTBR~;ME5~pVE+7hnobh93*otPRY}BLfg_Q~ucw$IHCV#I0o*O5VA=JLej@78f|FhZ zz*PtqpvYUaWK@f|$j8!3(t}nCUv#OG!J0L^TH3em5q1d89Y20d(;J8C4Rui)8FNt* z^{9dnX@HJ=EphXR@4w?@+ctcN3;|IwjhrgceGo)OMj>2~SR5iAAa#htG zD>^YK*Eo3app*iGP#8GBd-tvxHm6$9WqU%Xx@V)B;iqLwx$Dz$ic5k_ii_rA9rF2L zhdKo$L{wxX>(ZqY*WT^NYx@kviWcFO9I($XOXO<9B9QBur5p*;I*d}F5n6YdwuJ)+ z_7_^ATK3+llPCEe2uDBm%<{BPW3R4Vt0vzcmoNW`+qrtm9HKi&*^y9AH1fRl(^;{| z5Gnl!txITZhnv|Wf)_>|H34F_3b!5Zzd z^COv(l4DPy?X-l^_DMPD1~X;*LZ{xi!Mq7jh>((MlHg*Mdy$jnEkNW5i4ii}i`nA6 z%I!jrETsb7=$7at;W}l?cV0h}0hu2%ZF(Wn(RILEixXQ5^0_6C#JeLD;Md{eyk<); zCgDDn&@z$r=uN-^gXc{3Lg`5!(9j-GP5M(!8db~27)2YScmfb`K$?$qmszuEI*RlI+y!(~GvTkYC#@i%-I1?2 zGesaYT<8YqKLr;j#)Z?w(F4yAOYuq@@2yx>Gl>m1Gt(YDnabhhZdz+J0Lc>jn zGF2n?x;p_rbhuj$oHP8u94JxfEvaz5j-axUGn2qMadC0X50>PIM%ETd@*Uolh@e1$ z5>Xep7?p=dWr=L*rB$2f0l%up+Nmdz+7VFSdyMf2SHFnk`;eIo7< zn&aF7-U1RGxq~d6eB0>pcUawOCwG*>r0FDs`!ZpX$YALTAM6U(!q&YD<{``z;BBA* zAlJ(k!m6zph_F2&Ap?8`EQeYu zq3HDD>VcN(1ffz8c~IN8Z{wZheaXDS!o%q>*ke0&>cDG?)$|+}&wRW<*pvvIBfu8{ zE=>|I>qHXvL>weMS*=K6ZbPHeVAH1munQLwJ(dTp7rcN}S-)-_?;3|s_W9Z6Hkjl3kftR!@iAd5O~iyNNt0deeHl7jCAWEBXqWP?<;bYFA*EMhIrR`+ZajE6O>&wBOx zl=sj;+6xGO&_n!>*>djE1rMB6|6B=+ng^{qQ_x2hNN75SRtQ)K zNRmUVhUn0UjAUsHm zxDU?wrPr?xVI4S0-ld5MBV2$37hScZy(os0&6cEyhK5cfd+CX7R&o;NrwM996NSC{ ztd$#lRs{3fT(fB-jkhOlKPI!Q$GyHvBAkf*zchI@Y2wBZZm}L8<86W?;rt||4Pi&C z_b#uWVlF9W=4?dZ*TCJRsMMed9b}#0NUM!~$DIxp8Ga=D|wBY4q7p!j^RZa@PC5PM>G@&$0 literal 0 HcmV?d00001 diff --git a/grampsweb/logo.png b/grampsweb/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..16bf9668a0e06d99892dd420aa309d10b8abfbea GIT binary patch literal 6439 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 literal 0 HcmV?d00001 diff --git a/grampsweb/rootfs/etc/cont-init.d/99-run.sh b/grampsweb/rootfs/etc/cont-init.d/99-run.sh new file mode 100644 index 000000000..9d4a1f26a --- /dev/null +++ b/grampsweb/rootfs/etc/cont-init.d/99-run.sh @@ -0,0 +1,54 @@ +#!/usr/bin/with-contenv bashio +# shellcheck shell=bash +set -e + +################# +# Set structure # +################# + + +for folders in users indexdir database secret media cache thumbnail_cache grampsdb; do + mkdir -p /config/"$folders" + if [ -d /app/"$folders" ] && [ "$(ls -A /app/"$folders")" ]; then + cp -rf /app/"$folders"/* /config/"$folders" + fi + rm -rf /app/"$folders" + ln -sf /config/"$folders" /app/"$folders" +done + +if [ -d /root/.gramps/grampsdb ] && [ "$(ls -A /root/.gramps/grampsdb)" ]; then + cp -rf /root/.gramps/grampsdb/* /config/grampsdb + rm -rf /root/.gramps/grampsdb + ln -sf /config/grampsdb /root/.gramps/grampsdb +fi + +################## +# Starting Redis # +################## +echo "Starting Redis..." +redis-server & +REDIS_PID=$! + +################## +# Starting Celery # +################## +echo "Starting Celery..." +celery -A gramps_webapi.celery worker --loglevel=INFO --concurrency=2 & +CELERY_PID=$! + +################# +# Staring nginx # +################# +echo "Starting nginx..." +exec nginx & bashio::log.info "Starting nginx" +NGINX_PID=$! + +############### +# Starting App # +############### +echo "Starting Gramps Web App..." +/docker-entrypoint.sh gunicorn -w ${GUNICORN_NUM_WORKERS:-8} -b 0.0.0.0:5000 gramps_webapi.wsgi:app --timeout ${GUNICORN_TIMEOUT:-120} --limit-request-line 8190 & +APP_PID=$! + +# Wait for all background processes +wait $REDIS_PID $CELERY_PID $APP_PID $NGINX_PID diff --git a/grampsweb/stats.png b/grampsweb/stats.png new file mode 100644 index 0000000000000000000000000000000000000000..7ab8655bcf786fa5058860f2a15572a148e64c3f GIT binary patch literal 1918 zcmV-^2Z8vBP)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# z000I7Nkl39_Rg6ae9JbN?ev8KYmeCl6U;cTMF-1w>mA5i-UA0000000000 z007j%+Rx{)lnB%*Gtdc}T)15gtFj5*in}$RkNxlVY3=d-v-#Wv>vL4^yW_*{_pd#! zh5b9$e}q%Ixd^^0J{FEpusq+o+nQ?)f0p+>h`9y<0000000000=!kVc;01hppn2i+ zBF?vtNPiF3T8s48ktpdF)FX;kZH(5(+x&oAB?6|`I8CI_MVE1! zNS})?<1~>z7hT3_3eob@M0z!zj??^?#NSD3|G8~@q}RfB8K)^p4~qIXN7j#r^tF(D z`O+_q2d{Ice!id~>Zf}9_tvE_5g3hF(!+cDUpoWo>moMf!WHi0Y`ycy_M6Zn_d?``T!lnnKIDcR)%#C^^cO<){sY8bsz}g~TO7xArg+&` zF>+9asN)RpNnbX6PWN8(W+Vcw5Nq>0?Yf5C`K|@&Be^fkasZ_-O8R*6+G|oEjjwd| zj`d#TH__7pWnDq-PD5@e`NsF)sSR|_EQ8MYCq`m@y7jJ@^Mv&F=#`tKbbKcp7dF zvYfUPKiar?-DC%q%NBM1c;n_(lO4+SRT4kw0WIVulO3L)?}sT&BYfip-LUn}cVS9X z3E%kfaqsodxAG=Go$w7=`q~Y-cIP`!<&?rV#J=}fkK7`Y9onDp+eiI5g>Q&Ga?u$s zkxlibKk6y#d%}lx>XoDOwU>0$R=QMt$|8e{-1pvpvcrwDbZJ_qm`#B0Io+USu8TgV5=!I@tl| z!$|v5m@JWw^Kl40a``R`q~m-bLP>Af4a=k2P*m^J9|!z`^0AEQhQ;|{F-9r6>w`3w}b-u=$^+(dXhpM!#u z9+94x3d-l8U&VZ485i?S|4x4 z1HSn|nu~N;3)Ll(d%3`}tovWHKq;E(4)7x&{dGLNVG>g-2i$Qg>|$EL%(muW=0 zoFVtJy*uFVH!1yy^8J|Y@xy{=QMoP#iFgr$_Y57D7c&&ugODFD z_$fU*L#Ont1HKDwjxGKkufbxqS8xve2-1aFBYh!4EH~G!sS7_pL($_+hxdY?(z7$< zrhj+9!Pdw{6>z;?{u1#Q?M;Lrz7>P3(@#c-hc=1OB^gqN_k+h{OBvcrtlJh%AMmBj zC(>68qJSR)=Whh-Z-d$$;P;{L{gvSSeW3h(P`$s3|AIMyy9Z^)p8x;=07*qoM6N<$ Eg4SHtssI20 literal 0 HcmV?d00001 diff --git a/grampsweb/updater.json b/grampsweb/updater.json new file mode 100644 index 000000000..e6e8b760b --- /dev/null +++ b/grampsweb/updater.json @@ -0,0 +1,9 @@ +{ + "github_beta": true, + "github_tagfilter": "v5", + "last_update": "07-12-2024", + "repository": "alexbelgium/hassio-addons", + "slug": "grampsweb", + "upstream_repo": "grampswebhq/grampsweb", + "upstream_version": "" +}