From e7af96ec364101764bdab71175a1745efacdbff0 Mon Sep 17 00:00:00 2001 From: Jacob Kiers Date: Wed, 6 Dec 2023 21:32:48 +0100 Subject: [PATCH] Add initial PowerDNS code Signed-off-by: Jacob Kiers --- cloudron-powerdns/.dockerignore | 7 +++ cloudron-powerdns/.gitignore | 5 ++ cloudron-powerdns/CloudronManifest.json | 36 ++++++++++++++ cloudron-powerdns/Dockerfile | 18 +++++++ cloudron-powerdns/Makefile | 45 ++++++++++++++++++ cloudron-powerdns/README.md | 5 ++ cloudron-powerdns/logo.png | Bin 0 -> 14786 bytes .../nginx/sites-available/powerdns.conf | 19 ++++++++ .../setup/config/supervisor/conf.d/nginx.conf | 10 ++++ .../supervisor/conf.d/powerdns-server.conf | 10 ++++ cloudron-powerdns/setup/data/README.md | 17 +++++++ cloudron-powerdns/setup/data/config/pdns.conf | 11 +++++ .../setup/data/config/pdns.d/00-pdns.conf | 16 +++++++ .../setup/data/config/pdns.d/01-api.conf | 27 +++++++++++ .../setup/data/config/pdns.d/02-logging.conf | 5 ++ cloudron-powerdns/start.sh | 12 +++++ 16 files changed, 243 insertions(+) create mode 100644 cloudron-powerdns/.dockerignore create mode 100644 cloudron-powerdns/.gitignore create mode 100644 cloudron-powerdns/CloudronManifest.json create mode 100644 cloudron-powerdns/Dockerfile create mode 100644 cloudron-powerdns/Makefile create mode 100644 cloudron-powerdns/README.md create mode 100644 cloudron-powerdns/logo.png create mode 100644 cloudron-powerdns/setup/config/nginx/sites-available/powerdns.conf create mode 100644 cloudron-powerdns/setup/config/supervisor/conf.d/nginx.conf create mode 100644 cloudron-powerdns/setup/config/supervisor/conf.d/powerdns-server.conf create mode 100644 cloudron-powerdns/setup/data/README.md create mode 100644 cloudron-powerdns/setup/data/config/pdns.conf create mode 100644 cloudron-powerdns/setup/data/config/pdns.d/00-pdns.conf create mode 100644 cloudron-powerdns/setup/data/config/pdns.d/01-api.conf create mode 100644 cloudron-powerdns/setup/data/config/pdns.d/02-logging.conf create mode 100644 cloudron-powerdns/start.sh diff --git a/cloudron-powerdns/.dockerignore b/cloudron-powerdns/.dockerignore new file mode 100644 index 0000000..bb31638 --- /dev/null +++ b/cloudron-powerdns/.dockerignore @@ -0,0 +1,7 @@ +.dockerignore +.git +.gitignore +docker-compose.yml +node_modules +helpers/* +runner/* diff --git a/cloudron-powerdns/.gitignore b/cloudron-powerdns/.gitignore new file mode 100644 index 0000000..c576c17 --- /dev/null +++ b/cloudron-powerdns/.gitignore @@ -0,0 +1,5 @@ +.env +runner/.env +secrets.txt +.tags +.vscode/* diff --git a/cloudron-powerdns/CloudronManifest.json b/cloudron-powerdns/CloudronManifest.json new file mode 100644 index 0000000..d547dc4 --- /dev/null +++ b/cloudron-powerdns/CloudronManifest.json @@ -0,0 +1,36 @@ +{ + "version": "0.0.1", + "id": "com.powerdns.authoritative.cloudronapp", + "icon": "file://logo.png", + "healthCheckPath": "/", + "httpPort": 3000, + "tcpPorts": { + "DNS_TCP_PORT": { + "title": "TCP DNS Port", + "description": "TCP Port over which DNS requests are made", + "containerPort": 53, + "defaultValue": 53 + } + }, + "udpPorts": { + "DNS_UDP_PORT": { + "title": "UDP DNS Port", + "description": "UDP Port over which DNS requests are made", + "containerPort": 53, + "defaultValue": 53 + } + }, + "addons": { + "localstorage": {} + }, + "minBoxVersion": "7.1.2", + "manifestVersion": 2, + "website": "https://doc.powerdns.com/authoritative/", + "title": "PowerDNS Authoritative DNS", + "author": "PowerDNS developers", + "tagline": "Independent hosting of DNS domains", + "tags": [ + "dns" + ], + "documentationUrl": "https://doc.powerdns.com/authoritative/" +} \ No newline at end of file diff --git a/cloudron-powerdns/Dockerfile b/cloudron-powerdns/Dockerfile new file mode 100644 index 0000000..f811fa7 --- /dev/null +++ b/cloudron-powerdns/Dockerfile @@ -0,0 +1,18 @@ +FROM cloudron/base:4.2.0@sha256:46da2fffb36353ef714f97ae8e962bd2c212ca091108d768ba473078319a47f4 + +EXPOSE 8080 53 + +RUN apt-get install pdns-server pdns-backend-sqlite3 && \ + mkdir -p /app/pkg/dist && \ + curl --proto '=https' --tlsv1.2 -sSfL \https://github.com/james-stevens/powerdns-webui/raw/2d1a8c5a305f0534d49bf2c8be9a329458ae2fd6/htdocs/index.html \ + -o /app/pkg/static/index.html + +RUN sed -e 's,^logfile=.*$,logfile=/run/supervisord.log,' -i /etc/supervisor/supervisord.conf +ADD setup/config/ /etc + +COPY start.sh /app/pkg/ +COPY setup/data /app/pkg/data + +WORKDIR /app/data + +CMD [ "/app/pkg/start.sh" ] diff --git a/cloudron-powerdns/Makefile b/cloudron-powerdns/Makefile new file mode 100644 index 0000000..4424bc0 --- /dev/null +++ b/cloudron-powerdns/Makefile @@ -0,0 +1,45 @@ +CLOUDRON_APP ?= powerdns +CLOUDRON_ID := $(shell jq -r .id CloudronManifest.json) +CLOUDRON_SERVER ?= my.kiers.eu +#CLOUDRON_TOKEN ?=123 +DOCKER_REPO ?= jacobkiers +CLOUDRON ?= cloudron + +.PHONY: default +default: build update + +.PHONY: init +init: + ${CLOUDRON} init + +.PHONY: build +build: + ${CLOUDRON} build --set-repository $(DOCKER_REPO)/$(CLOUDRON_ID) + +.PHONY: update +update: build + ${CLOUDRON} update --server ${CLOUDRON_SERVER} --app ${CLOUDRON_APP} + +.PHONY: update-ci +update-ci: + ${CLOUDRON} update --server ${CLOUDRON_SERVER} --app ${CLOUDRON_APP} + +.PHONY: install +install: build + ${CLOUDRON} install --location ${CLOUDRON_APP} + +.PHONY: uninstall +uninstall: + ${CLOUDRON} uninstall --app ${CLOUDRON_APP} + +.PHONY: install-debug +install-debug: + ${CLOUDRON} install --location ${CLOUDRON_APP} --debug + +.PHONY: exec +exec: + ${CLOUDRON} exec --app ${CLOUDRON_APP} + +.PHONY: logs +logs: + ${CLOUDRON} logs -f --app ${CLOUDRON_APP} diff --git a/cloudron-powerdns/README.md b/cloudron-powerdns/README.md new file mode 100644 index 0000000..a0b2f10 --- /dev/null +++ b/cloudron-powerdns/README.md @@ -0,0 +1,5 @@ +# Cloudron Headscale + +This is the repository to create a headscale server for cloudron. + + diff --git a/cloudron-powerdns/logo.png b/cloudron-powerdns/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d49bdf0c538cf8eba915c3a75d0edde33f627d9f GIT binary patch literal 14786 zcmW+-1yq~O5{2OI?!k*oacc=q@!$>xS{#a7a4i%mQmi-)5Zo;|#VaXL+=~bI_T_(@ z6FJ{W&Q5k`W@qlbU!tCl8WBD{J{lStk%l_R01XX;74_K_7aR4OhO=vqdc(HYQUjs= z`|t6&w<;5L1-aL6x0mfK9s$4+?e=xgbG_^ef zi&70l?~QqPd9z&K|Fc=Wq_Cy3P1rx>u$2%-tEQZ2oheUqt;nsP%zkbwf8mRUY`T;F ztOt8_^xmY7b+0XB!NcniEd+28i2?bxtBcVs-}QOpf)B0&4G!|mFOUBJP+oGr+*e&! zKoksNgapn~XL*H_qIKL~~)DsXv>tMc3-8W>qi<@orD7FEF|J2|7!odst zXdf=_CDRbUZv%_(^Y`Bx3WKM|`WzpBj`7tBvsy}d)3{U|%rK7yuYuPS?EJ1fZY!op zXA-y$Xn?LFW=m(jyfvZrGyrYq!`a|7a0BrFJFsmOE1laV`(@^*d zh636Nb{wFeJRJ*82!0aYk5^ahp#|`B14A(OupjR~LfEGiLECQYjO$@qJw1qw^)sG^ zSEPrcAo_XTlEEa1&+7)=S@O*?PfW_ zb;aM7(B}bK*vnHc7pGM~QH&1K4iJbdx2?>4jL%r>k>WO3>C|H2ajD0Alhjto)?WM9 z0{%z)zoP6ZIIVlfm`6suyR&1yuY)`FU@A^jU)n8rcjwXn0^G>wYSaL0fIcwqt}YHS zphz&w^&;QSn6W|Jiw9|CTW}|-4_c*4mj!Ke6B$R9^D$i&C+As2p0V+;$Zvp#euVJ5 zzuhyl-~WY2d+i4Zp6$#2^Q5dODQ7nHnEUNQS+0F*K2mbJD_jl4l{}6o@|&+4B2CuX z+b(UGI(T6hPLRt1`~ljIf8q%=%MV!7A?@|WU2IzY9Qw$zdi*4hnq@@n>Gh!X zSWOYdXU}r@%R-k4dPqN?pM7*f*0OCq8wpi-gRdSyh)FFf$rOSXL7FZ|Mu)>F1We9< z5A+t{cQWKfKcySt^K85;fzQO{a3_y{CSB^{#~*=>oWjUNgBZA6l4j7IHa}1jV#i@j zZgut-IQ+V4g)0D?^Z=Od47Bz$S?O?RGn7?AeN*$vB~ z%%_8I3lf&`++M%2W`^u7^%L1(TE!=hXorj;s8|V-)Sk9>Kic=j?WyLp3l|-tZ}E*h z;;sC_?X5?Jd8VewTCDR&Jd4%Yjm{LoYRZfF`~5>m%rQ|7Mg(SM(s(rdrG|{HiX)h8 ze~{poj$A~#AB&4YOPltw#(ev*#NFJF+I#F|FE@3sZS#Xy33&%yt{^Z6oj^7_G+g~x zBeoYc(vvI*47wJ^x1y#>k8YCVrI({H7IVG~7h!b`Sl1`xjo)cS<)Y8#_MYoqxLE>_ z3n(Xt8)x|d(Hq6}vjoRA-)AF_Hf}BM_rbKtcOc&zl-++DyAV~9DvnA~Hz~*O8^kq0 zsjY8dZaxl^dBu_&ofac_lYrBt@f+oJ8}88bBq7HskBf(Vvs|1tw~L1mv(24&I6rq) zrRKT<mu1jj$nSt9xPp5M*#cg+&6nxZrLKYS zwF(a%0e|vzUC=h^Sdw)kzxCX`qwNLZRY(@p-w6TM1rZNl;Ezv@fLe!D0?{|T;r9q~ zipbCpn(EQ#-Z(`J28<07*550Xb_TFxciZ9VBKwChxbn&$t&aeMG1Wl2BI5U2ZV4Lc z(#)pf=#NV}pi$^s6G;4Aguu7eZ=R_wKN9D&1B!Sw3XtO%VaIEx%!`)E-F@Z@ zn4f8)SSC+Q%#^Z286@FV`-g%LaFaOxg4g6FHF^50CgIP(s04mMD5hg6vQeW|7W39> zO5-W0l~TQAEOww~ka_QmDerE8i{ZCYgQ>K^8aYLt(Xc12irlpl{S8guxkYu`o@tD- z5-&Z2Wmxb~Ht;(_=i^SC1!9T+{S{oIPw^+<{jo7gyGSv!SCbRhnGM5Jw~ zxjBx_gt95qZ`^s)>1bi zKm{<;*s2i~*Vw~CMOBiu%F3J3{N*basvtq)hhGz>1RlD{=XPG76COQldc@)v1hQSM zpd+Vs&S!H=U)~3~3>BUdaoadiTfw7&n+LI%X;uu&Mn8VFe*-qzeX5fKijqo6Xida7 zhI6<#70qXe+ra$LO)>}%)tGirnY=-TZ(N>Z@;!2wpO+O)Epfci4!a`X-e#%%LqG&Y zI+giGq4e-GrD;H69kw2`b9&BUt8je-524(t!qHN% zh^jFi>(2KPz$TDheC*fqMvk-DmN`LV?1{QieXui{ufW{x3iYTbkM(1MK#O_3V;j+? z(G>-^p$wX{EcNXuYEgYB_}TcrcWJp=eoX7izch2?_|ud6Ht}_&J|1U;hHZ86W(?7Z zmMoWFE$T>Y9?{MGJ>LqM`fqVD{Y-Oj9tGJ$W$XIV+aUxFzpFMDo{x}_ryKJ>S2O#3 ztgDm#PS{i%ROID`e4h_0C(QwLpl{&3p=Wi_SY@pL`zkw&1j4Bfn_RSA$5kA`d-XmM zkr0tx-`DV>BKM{>%_!-vE<;Wdm2$DnjFdD--+q$-Ir_1Ro!|p~0+J_|u(JOwwS287 z6k#Y3*haq17Ej*cpWDUMiC1;w0Va3;?CBE*bfmpQWb#zJfu#5ZqSJl3(~l=xzTsRn zF3$WE*j9jKll_JH?O|X8uXy&sSs$Gau)MbG6qm4l)@1z}ue&9q%^2)HLOtc_M0n<* z>9$HpG<;F-;RIXkn(oBHi5EJ}bnbk%-`9x!;h9t7_%5%3Qal>N2a%haES}6sBdsSI z0vP4R5JaA0b-pz}(EllBc5kGq8iH0U1XQ+oo|mtDhnB)(5%*!JqoCDGxYs_i&o7^G zC=9s1@$418pTzgmzT`p>I`P-R4WQ^m++ z;WNM{Q-XXt;CWq2adW?0wllnp`j2_D#)!)g+`xG^)rN1>F2P!0S1GAbDhnye+R8aL zAWk{x4Z|~_TBYq{z!Wl6TWjtqTcLq`Sf7O|#PbFF1SGOf6W{LQT%DD(7qX`jQsp`CZ5ipZO zBrNv(u;b90JHPlJ)qmkzjI4>1ivL`HF<*GRg38w?QiKV*dTC#g4shlgh3S|itRR2<{0 zX}N)G9-C(ff!aygm3OH`*8_ZyolT1@CT#cg0%{$0Z|KMJUsh?1d6nsLN;fDxquZkB zS-<%P7eXG`P5WpKm5^*hd_(0VIfx3GXu(6HpM)Zj;*+#!l)Mv!E5f6K~u91uL$>z;j=5EXGDrQI~TwOh9UT6-(OT}L?x^K zFO(O~j&^#=;FpAzUk*m$7-S#L%D9TGuuPu;=oJkR1<;~Wr~}byB^pW1!8iCXP^Ky( zAW3J7$I#x{O09Z`wS zvfc@M#m*dA5KslWwRi=RA=iBH&t3}oHZFR4-FUNH0_EPSFpZFL4F2x(2HBP7ysD)i z5kiAIvHz8ZBAN9PTg8!E?w@nMR9~XAP;!Dw_w|S*IE+w=3(yt5yiFUCl7?0zA@YM; zKub+(N9}6wyR8W1>Qri&naK4?Os-unpN2T7r?k*}l+jiiY-IqZ8S}N1CC{bg)CZm` z^5#XUaf?^~#i3pb27~84)s27b{e?jdQ)KVc1KV#R%gTnMdGjKuSZ24?)k?nBH2J_r zo)Khser!3`X@T#(Xd-P0!gRZXLI1YbPp`Q-<)Gb|SGt4A-c;(Xx_zoPUIlbP#KIK1 z{bLNns?%B_389LPGF=c}ogUo+QBh{837_UkUf=5f9+~x;STb%Wv_UDZaVRasCxIa12fVPV3aLihX0@S6!FFStV5GtsT?6qC%<(_4*L0OE=g4)G^Ol z7RkU9``}FjF2l4Xu5lrN{Bb~rK*$1AODyuK-j*rhGZZTJ^xZ`Q&L{BWR*US76LV}B zLuYjY|It?G6|iWpP$4EGdeB(Os5MI2;7m8!ol|t=wX%FFP?!xso~^A#??5IkWp_zD zWIg5N+t^cS~#-p2l$%$+K>RUG0!t@$RC-bOUWp6J6N`lQ%&r(sFJl zhK03Igp-RnPM!O|0Wxvt-SBTw2J)Yaqj}GJu7T$fsJR=SPPnD%6uxzgoXhBPqm$dtPXTV+>40Tej9>G0%RYmn7~iy{2D<}&zeK@?ykq(bWN1+?@DQ@ICb}lO7a6$*7U+Ey{LRL{ipju zHj&(evWE?D5%TGz-d{A-rv&P0?&eX?aWQcuUytFeHus1P6qUjbd=PpZZ=<3*He5y03|CPYRv>$cRiQc0{7G^d zf$>wBfbShJa36Uu(^Jah_|7=_@qsYcC1gchy3J1Llewa#ek`r_RoTPcgAz-UQFjL} zPP`kBs~_jK(NVX(fD`6KxdU2*^Po#x9@U$AG>5QNoN%gg;-Wd}8^%|ro++;1*T{d* z8}t9J;%upx{3)3w<>}uxS3Cj_UJL<;jkKMA$NqFh6fWl&eEnyS>!5*l>a?QF8UreW zNUTg8>rBOZ#mgq$vsovRuA2w|crkKtRfiK>Klia%z%)cbjDO#KIWU8}9`{w7N2QX} zWKMnFiGDIwJP>OVhODok7$AxK*{oj3#6d zh45UkS~k*Wtfjc`Sus`2Di&onbovLWCGsK+d~Kd(x&BDxa(yG)QK1Jzd=d~f<(YT- z(4$rDibCiDt01>y>XXNXt2QNFeG-Bg`TJl=&x}6VmzB<$3Ne2_rg*X7@Gr+_P`AyV z@OhY30l1~8#e3Dl@#P#k7t0KW2T!>Ye(~V{NKD{ofy=3YxvLLyA^bXf6tB2CjJe}%%8VcJoFZF<|wa^K&?lipO!9vvn^dM z6GaBKtt8H0{wQ8mM_Cn%W`&$g8OFsV@3faSMLmCP#Xg&GG*-6p+k6+?%6)o1QHlo=kFY zIxg|8_Uj$-`U2_xB4%K9{90Pdw|9!FV9%2s&wms?OB(8H?db`a`zIn49b#yQ_KaC1 zxQefQ*$qB6z>%jON253HE0aZ8paLE7ksu3wrN6Xx56;Qszv13MQNFho(;ec+mIB^t z+GF(qH?T?WZ?XxZzqm&@q4IG_zm{Ts+>KCR7u7^-+e~>EpE0WQ%nLN{tla9%3;R;+ z?Kf~A`+78VZfs3fgA3NOT;$o#?R)!=%P}~Zp}l_9MDCBUX{u1p_uFU6%| zisq)=fCt>&8maE1Z|>VYNP5{lp=PxqsyS{9UlK7=phj0XW_D!Z!vcYPcH3-CE&mLJ zw`KXfBq`VFXQ+{WbjA>SS?+vl9j?f&D!0^{6GYRNyx=ayVID}GUeUln7#e_YCXEU~ zi>j0e3l0uq4r1e~5tVX+1QqPYRPrAX&O|kSTPw7+(lSsh)1;biR8Wa!&4yWsjKk0Q zZ?Qggzf%vvLYnHt3;e2@9fTfE1)>5!x3-+*MX7#^N64P;?3o#?VV3vsXFo(Y&rPD^H zm_E16_z1m$>t4I&qFqy^Tve}q!kgob06QA}E;csF9Af#Sk6iiRxv29CwM3J1?;@v_ zF3l$b1GI5NT<0{MXpr_(<1&^Y532MH{qvdO=+I?-d&yF*Eg2ls=CWai7v>7V<(au;I4f`s@6QSWF6`b#*MrW^N%9j$=!Xx462vQ6Bw`-AcG8*o(7t?wHU+!J zy7~$)ozXs?5~u=>9KBf6HQ+Bp1)(v`?R#Joops%(MQRPHnzG@BRD){R!bG;d%-zc=T)xTO&F7S_=Vf&A&2{fxW*(Q!F*uaM&G{0_h=+LyttU9%eJu;g0@Y*OKDt=pW@@&IRT6?5-~ zv(BI6P~wdWh$a642(l{hUOWu)!nZ`q-Uxi=0@gqehO4R4Q^|7xImTL+n4v=DzAl2u z9{oU|a*1U(V@Hp{)EXf4$9S3DdNCXw6|69Q+%Ep>#=mE!FFXD9D{@&d+|;DZtoAU3 zP%co}^xh27r{dU?pbgh*mB16i^{Pscj3l_fdw6kDa27kmwFiLS>oN>lU|bXZX`RI| z!Mub~fgIH(cf_U$O)reD93-tWF&uiACXezNY!x%-D|mNYY5WaqtB9m+ImyhVPVnWB z9M>xuPe_vWS7eLjX`l4ks4~jV06#rRZV~ku44}HupLUc{y=Mo%F$+IlNXyZb|L2^Y zE0lnx3FF@SZU7$|4c78-7@TMQaJnmdu?>=vw1_RNK=d5lKB_YGJ43CU(A+dW>H0u( zF?4kSS@W4usEX8*HJ}eC(kC!s>(WFL?C}1%O1VcD3|)4!qVmxgblFo5y;yF*d=ERVK5r< z?)Kvx5!Y(?o|I6W+1q-e!345g1-L2b)!V!^CWxbXz8%a`t$~uu?jBdCGEH`L>o!66@^7BaP7LPU;nSR^6;UoW&Wd{Kfu5VM6E{uBG>| z*eDa9&x_u&?TTbnam(vfa~Hs<)Oy*ewF~H(_!W(`SDP7|^pIw`HGE>?8s%vFaLN|K_{CsP@_SXJ*j{5cJl%w{GV^2pvbYU`VhL= zzZGh`GfS|LKcFI7S6d(9%E$m1d8E94V?}1BFoP*^6tFg=b;Y8_pS+jaD%!xB8q%WA zHREv$?g#H~)rMY{rJ&Brzu%E-z9IKIq)~xCt4$0%ZxL8eSI-j^NLagbtDqz!DV3e* z{ikPAB#=d07QDv9f5+GVo&y4%9qv~?i`p?6)n_n>a{0@qFfo2IQ+zYb_&tZYo$ei( zc3gpb155tTiM$JzbrKOS@1S*kt-TjN)H6iMK7P;GRlr=C=jUUkdHp#plU&ImcVB*} z!`-dc%EwCS)Up>wn=qcvcD|*|$oOd2169a~3=dcBz|!AJ)segTC>F~S+6NLjK7w!RS+)5MIYiFnM& z-YR{xt&JuAsze&OxCCI*_*1)x(f(dKFM=|?Vk?7ga$ta$bzs8|T$mZj5VwI>a&h@# zHQzONiyb3)FM>YiHXb9`+2ProXZ-ly{)zGQ08Zbb=?C5(oSvV%ve+B1HIn3wsK8I8 z3(t4UQ+>^3m=mV3DGZPj&|;EElsXyUo1!*Jp-d;(bZYfz`=$ITUBcQ(%YSLo zp1L+OKlE>SkL9C8gSP7YnOl$TxbW2U1$|aJE7CL?_+S8uSFRFikI#-W0kez^lmrx1 zL+4-fYyD=8sv+6N$#fWxX0#s6z%on6J9x1Qy>Cch)cS{&ST;yZ)S?QsoySN+;d{T~ z%y3Z@t)kI$dDqIkdxO~w6GS<*Q2y!eW^Q(yg^glWqrp@?HlxFK2Ak^fm?s(N zhN2SKbH+AlcckGD6bg+(!}`dY$N*GzeOJm*`;kI}a18?TQ(Ve!+k*6I2`AcD|)yF9S)we&lNr^Vx$k@O9ksvpzT zvDRoeL(CXS#7?)M5Hw3yLsm&ewXG5C-j$g1Zwacd19tEScsYtcQ6l`9<{l|Y_&)y5 zNFjKr9+~vihiZZ&>{eO0ceZ4mEV(gW7f+~pN-g(PnG1NA2K5^%1rP8-Kkd9rw%baS z=>PXp{oOGE<;$Z0y`&$1;V<1iaKi?uvV8xfuAwnN54uHYQkaf#H*PWqvWAHSbsVOG z$Rtxp(}@OCu-=enwAWK!+yLsyd!C1zt#@gP{8L5Mvi&F;zm#-_;rDW@!IUE2BZKMl zbth_^a8&yKhjBz#v1!*}*E(DWe-+pE0{!Od20>nLKS%}Tj5xV8(^sKJ>5b5PR*d6vjTfhEExlLpU*TkYbSh#pgJ=uNwy%_sc!L3C$ zcXT=hGnVm?Z}NMBYrL(BQT)aReQb%Q<*F+P3Cb+n$>YA%y>Lg0p~xJR>4Flq3aV$c z)&e3}56?Y~VcECk=Jv6F?O%R}LFCGyt{7HzxK~cfeUqZo4_KE)75qQsIUxZlM2T%E zHeXk_ujF}D&F^Zg8=y41W)`vuduiw_!H7@=#YUc1kJR zq1~{l5WgAKY1G@og!@)Z;dXEaBfgks5KI2*(Q@pkIr_K-Pz9!s0(&yyV$ zTR|06kia;wa*x$pcl?xPt8yS`7BAU-q|XK7{k2=>FmsS+|Mbhjui;^VS0Di2B?_Sw z5qv?lnND;ygK~OJTJ!@h(oo8xkKDw!x+t}XNJ^jaf6@YhBCQ7>vZA0X|N5G2sX9q5 zb@Ly{qH<^sW)@;c`Dj<|p9HcBZPh^*$-72e|Nh(u&*qkQl*~$=(Wnr3u0J(Dw1{Ul zrdEBhLzfv=gzb-K_CcCVYRT+H?bcQYh0FDZs28cALgh@FCtwXnkh3Qk9NvK8<%>3< zMm&p;v|PUILxljUBPN(SEH7yr>qr=bRrU3uAb}Ht+urE2sDrJTA2pn?1D>#}C~0?w zDaX&s;8|kfif#Trb2o17TBfapR-d6c8&<@sbYm3im0au})>PHMn*APr zj`Hwy2#U{%L)=b&HqpP@#s}P8*D0DZDi_7+kb8 zjcr*ZTbu7>8|+i6e&L`@Jbqa{I?{nA>-vBE!&1ArLtO6)h3wp2>+8G+E zmwy(L?J1AFg@tS(SYp^YL}v>1zREl~#NOGbtxv}xhkbA+8iEv?x$H?)Wtr0qT5FSf z>iBD&X*nA{?SX7x_n5v~lANBzWNkjisipGu7eZhDu9Fgz_#h<{r4{ESQh+Av1J+`U z-YcbXPJw3Mnv^kq6vuMpvi47Mg>V}AL7+v8VVSt-624JFn6-0IuQ_Dzj)3Rfi#y4& ztMw2yu=C~jn|6mDr=l@7jX#6F5p*m*vRK*@*|jBhX_nJIKO8a#*}-8<_4YpWqtY&` zMk(YO$+n&@G#VPskH?xK{dRoDqz>|Q_yy@7`ifjOeSQykQhcAUbKz+#pv2l%SVwFA zW1@$M#-I#*S_e!%$+r|vSpj`gUI*8cAgzSP-VtA$xQM_62`H9d1vGtzKJSSkw6jO^ zvQxcFPGC%UO^^W9(W0$^=?+LK@&MVRmNDMT{_2J|YHY-Qx$)KBWO7`~I+eF_+mW!ol*jsd@Xb)x$GtV(EV@b{o5{QfuAt9!>`ohQ0*7=i@3IFRY?jL*Za>2P5{!!f$^HE`2qE8T*3_akc+pa%0YR=*KphkkB z`07?l2wkoQ>Wa;&DBiP0zV32_n4?uaG|nMY`c546gi45~1Uu%2i(T5m8}@_uT?!5O z){M0_BN#n0s%l)dD1m{N8@AkQFuFdX7^?-@sC|Qz9lN>mn{<=r&EA8+W)rK#P26ce zc1r4EX;8P&2%Z$n0()Gt{F`Ki0jjpjl6Tf-kSiQ1uI@&Z|Ei?@@&IbQg{L zhq*qOD?XP*bQp?)o*tm0e~aDbK+*RtMbFd2zpKIXpcr49GVH~(8Ca<|8>Z#ABRq?S`3@(jeKw+M12`tUaN25gU55Eaj z9A6)G3r-s%K9f|-Zc35dld+x;3;ny!_qgJs;aW;1nlF@BalC3d-EewRO&4%#gU)EL zKVsyf+tk?>*e-JcWihJ>cN07hP#U>w=F4Ib=Zwp4_P>Rg+1aos%+>tcG#1XDdJ`$E z;eV=+r?|w^G*50GM4A(RWDR@cq_^^1PKN7rEaJMraOw{>9fYQd@pTw}-7U|Uv9*%N ztH{#5y`pCO?%;}s5(0lYfmQGFS&pabD)_(2myC$*LSoY9byFDfSPF`eeawIM*bD=` zGGlK1IRF1A$L!i!*#ZaLEpFQN=?};B;nZZvoo^pvmhVL9|I(o=I%5tzHK{M(Yvj>BH34|2sB5*6R3}35+ka8+(=)nVgi`UY+ zJ8_(!jP93|XXrU6iV9^7`r@9Mgr!iVp;BvrI$eJ{KV|A`oYojBeUkm@fwODo(M3?7 zyWF-yVj8`2cHXKcl5JP{<}oBC?w?ulQvoUar#0~t3XRcP(s^IO7oi=~2C`}i;~!#X zKGHYjCAa||twGG<7tT2e`(1orf2CoM>=$J*A1gO+D@CUL+fs7cpkrZ(9@dGL*xboMx)5*0;rDURcjYA33CmzmJz*9 zvJF{y$4kepc#=7pab){2yYv1pb9J`CH(h7+H|N4;5R($A2@6O!vMIxorSaU`Z#>V+ ziLChZNu$E9>eJRy?%a{6ZN>KH(7L78tJDBX62h@c7v?@J$CApqBzU(HRxYMCd3p}R z-+#pkStLeRg6-wMDV8as*hA%fqYRar5-*qt&~B~9^N$~f_pU4H*1ji-kkP{Y=o-GG zi>1z6$k@gwjh}d&w7lPk+Zc|H8H!27X`v-!{KMdXtDyE;I_#Igmnrz{h^rtGlOMkN zMbrv69E;9*$n?INuxJp&(|}@jw1fwNDQ2<~^=hmLWA(UMAbI_Z*_TviptT8Nk=G*H zA;F}wpZ~>j@Kl^0@#Dyt*o_PpM}9Zjf^U2RpCC!et*tIC4Fx)~nQM2nTZHwFsNKM@ zDrRcXy0Ca!#SyOx-WFSDxKMQmukmoHE29Xk8oA2V#UptfmeXcq5)lfU*g=rL%L<&~ zWnHAi)I;DoH93=^FtgGIPX}$JJ7deErkF1~7ydX4MfT3u0TwrG^tJVc6;VMGMCY4B zlw=RRy=$X2)so?SG@5r~;8>w3Pg%y`?Aq++D;I>T{yjm1Y6EMtkhXfp z*xh=tyN}We8o@SJ^sB$lc#Cw8U~~r;pd*^AV7djKK?M@e^E+;K<}$${vG{j*;a6!l zwtMFexJWgyJlwmV_sD4z^G6DI3V*Uazh1;+2YqGDiF^CibGb$nJ zm-ZX{taSvKh42@2a+dBi_O&3nnK4P<{C!Dl4o9qQ_x6{D$*uxzt^EnL+omTB4jLL> zE}p`$LhkO8wzzy0B%OcSA+;eFIG)B?r3afHtNE7Um~vJTl!X@I@y2_U0HvG=V^;+$ zVy8~2=M)c336ISuYf70k)Y06sLT=A(PxL zaVUlMA!hO{c;?~V4eDw(?jXW2UFc-SH3JrQcq zgLwU6RCA(6cKxvB^bwC8QozhMebcp*8~jKRvd@LePbW|CVrcVt{z2Y2lZit=QOk{kn>+GOMA8 z3DHCHWE;&)=K~b#L9wm!AAN^m`BB(f4uyN1cz%CMLV>Pa{+WK5ks5(!s`)R~61@ZS z$TDNvAvOQe`f;J;NHfi@j~K={3MpSVQvi1ofizgFzBM9G!Zgfnty2U{d;KxI@cGCY zLcYg{cRyIOd;=ywYzjnV3tLn2jmU+s)E@}rPtK|vFHe3&kv#j8I)+s8Z`jamhD_ZH z0OYkmQ3g|NA!ok~0k(_Ck6=G@ZQ^;|#L7Q2g#t6tB$12RZ;k;9{wF4R3(f~D?)QH6 z{6L(pI~5wFjjal}u=urW8Fcm3*x_?Ey6l$&Zo8?Pmz@$+JX|p}6!<&8`}4sH+W$%O zSV#*G{hMzsP=J4lnHEXtmuL4ZdA}IFzWDY}V5b0WWmT@e3bIps0`dU_%lw$@;$u;8FRfhH-?$ylDCyQB zsR0dIcl#2G^6-}vX5V#CVB%@F-`|hROo(sSw8oYPV!K87?(O} zhbj1mpgA?Ak#Gv-ntY?VB+|BZsJ#s4qmCTyqpzjE@Lp@zgS~e(y!%`RA~KB*>@Gb1 zt#4n+Tl$Cc!w0MwX(b%5@Tl=s3$W)~Qm@SzXCUoRL`z9RFBN((xcywTbu5%L(mwnJ zwwXNEf*QF0)N-z`6jK*ogIJ%F5i~-S3Cz|V+fO8CqL$eL-4yd6X*_;dGIEp+75shv zlyx4O<5lork>kTeCQfGYcQRPR-?8Pjz!BQ-%nBYiDb}UHz0XsJ^B_G0?DRv%`@Jio zUraivax}68+S`i~YBR}R^iTxqfOEhI3-c8cgYZ!SG!Op*7dk}~go8WH9SV{p!5AA& zp)o-*AI(HzFRriNtgDF}9%7*8Kln^pht288==E;uKKPYdqA$Gwiw=4tpBxLOo3fl$ zQxQhC5khecT%MxuN{7}fAy(SEYix0SO}&nHG|I38F%)G@P$a0ub~|!1?|)cf zOC=DnlLSA7Q6|-qg$iLxq~Qro!1dX#uK>2ExtCY9D3Z%zZUQH?i0aUOy&I(h_mtJN zE-WXmf`HiN7&y1}!B&9V);q(WbOb00HpDIAY~vL~?+iB57DdaFFG5Emee>bySO6-+ zB*d5bijfD%SDsZDfU#74Fbb6s(Jp?>va{FTr+@j_gwcz6R1bA11)}a%LSS7~L6{P_ zAe{<=V<;BTfbWgV(>3C;2f<@m43gpwM?wEO#L9Qo1b3=U@J&r_=MpSv`hGQKIP-bOAAlV)a2V{7RqV2WzgP5zl<~X!z>~ z#)h{gmJiJ%3W``MgW+d$X^|?ZgOuuh4+#cQc3e(Mt@MbG&E6)JOK$~(ybgNekW(G> z2V^5KuZg*N;js`t1MT{xFGp@zGmJYwYwmWwoFLP{<9V2 zsPwYVqZ#?^ES$pB3Y=qrDE|4dNqLujy~}OiCE=luNQXaz_rbTw(tVk%k8>&9#zJl* z@nV>Xj@-U{&4i4gJbCzYRKwGCGm6`B+pbq`%p5q@vo%5)|8qCjKkJWZ5%+Tj1IgGLvXRC)WhoY zr^fW?2vynm81G&NoF2{F-Bn#9gfZ3SKJ`sXgK*Q=y|uQVdjsNT@Fu%dYuwODAPEk7 z$i2Fyh#+7`3MXZUfX|mX5I3;CeltkKNUn0-On-h9S}h6=8V#sqSitLGU3ZnE7U!(@7d`N1kgW z3+gB|c8|*J#P#4Pp#F|y1KMT?957uIiE{1xsjq6KtbJu(tAulCMk)jhT$G zjLpCM!3X>ozeoOjzM$Q&(?uy$)L=UFAICbQ@7LTvSNbUBHfDI-Ufa*4FQqe?EI(J$ z?3d@CkZ<`AUDMG{_xEH-=k-}slxH^B%bWj7&?+8Fe8j#j=@h127_6bDmA*(yH8?bD z_mLX*r=Usyc!s~feReMEIh^Ae;R6qplZ43?P0qTlvx5saFfnodKh~U23<6K2tpfde zRB1=HY5VBgrHML*c%ETEOu(%f)T`q7v#9TxnH5Bho6w&4I%!@{tu!EM?hG(9O zyS9EZzmLfo^Y|F@lEfw-V;Pe3XI%)s{j!t#!5;3%IUH)uxInouIrZQdS$~CWZBHqX ohELt8$!J=;X>2`w8u^EjOr*Jiu;%td-EE1cp`rtVy|j(`A8^V# Ensure permissions" +chown -R cloudron:cloudron /run /app/data + +exec /usr/bin/supervisord --configuration /etc/supervisor/supervisord.conf --nodaemon