From a43627d8690b3131fe87a6c108cc9fd83abdcda5 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sun, 30 Jun 2024 23:49:29 -0600 Subject: [PATCH] feat: add glitchtip template --- public/templates/glitchtip.png | Bin 0 -> 16211 bytes templates/glitchtip/docker-compose.yml | 71 +++++++++++++++++++++++++ templates/glitchtip/index.ts | 23 ++++++++ templates/templates.ts | 14 +++++ 4 files changed, 108 insertions(+) create mode 100644 public/templates/glitchtip.png create mode 100644 templates/glitchtip/docker-compose.yml create mode 100644 templates/glitchtip/index.ts diff --git a/public/templates/glitchtip.png b/public/templates/glitchtip.png new file mode 100644 index 0000000000000000000000000000000000000000..8663175287508894c3d03c9391358aca7af8b0d8 GIT binary patch literal 16211 zcmdtJ1y@{66D~Tq!{F|a0KwfEoRDB4cyM=j8{C3xa0!8+!QI^s;=&;u6n9=gtDS61}X_E2n51-FDLa01cHfs{YORwTA&@gqactN$$KgB z&mN1%EAB2|<~>;-_c9NNKI4G85Zxl%BJiTT3d+m|L}ET{lL)mpy-)fRpSA1bnE5AV ztED|-dr{Gj?5$%wzHExE+K2o<84L*qZ2N6kW{6zQhwc8OAXsXn@h))Zw||dwn}HuY z0`&qrg=fKO~hWNd8HU>FH0DPlt?7+Xc=|Mg}^ zp%qZPDr^@hQa%dIj7FpU3BGa-Ep{F*_Vp7ZXC9++0Hbmq<9!-C9{!J#p3iD&C5Vz! z23CR}6~ZRD(@HR1`C~M>WAeI?gFzp^J|<9s(v1C-aB)7vSj1&Me*(Ws)01A4K+021 zV7T<1vWjlNzr%ksm8eOdlc+THz8YA9`{-fPf(+AodcZv#;f=6d>GyjZ{Gh6Fe*<44F{R5347qa0sOfI87McxB-a8~IsTr3t`~uw z*#tcUI-Z-y+ylzXR26K&bGF*cZFa*fu`X3^^wziUH#&mW-He*2N zA`9HN2@=2)cj4zf_HABfg_n;6GcczA>YqfHlEjumRP8`a=)#HmdOQIF6~l(7;~4#f z5EJ0!|LDa=7YK!s&>Ew>G#=~82mF9 z-ngWsW=S0gsV;F!QcKpqcxe7XJ44?haU-XX zm53V#qK6TZi@zuf+7CE`pph%u@T>S9ImaCQKJ0%gLi-I zc*{+4$^_jFBex(At~^yI@7-dsYcmM(Be8DtSG~m8(0E^Ta5`_)JZr!0X%pNMMI(Z= zr5g&Zyu@<)B(l1TFL<`n;-(tN>= z1n$S4k2*poauzeX`{r?ABB~^qhWTjS(^mW&|4Wz|=8E?^)-Kl&AzunF^Vn(IL2#;3H0PoB&0hN@DfPTo@)mQt`@c;czI{JqhYTiE4g#Zm#N7PJD%_Qy_ zTw)2X@UBqlPOJDgQ(zQTc27==c@c5Z&scMMeN3IUokll;P6i8$vYkAYd!Kh2V<~z( z&md!?(mLM4f346fTKd8GqZj{+-xiKGE4O6$B^#lkYPacZ2(=vyD>6E`x#E>mEZ;*z zz}|c>$F1U@;Twn8|MGLpTP8poa5%q3aQR}}PAYvsiALHLd;hBxElVUD{ZkjNYhJu z% zAzovBv^y6dxbL83wUiBG|2rby<*KP_b!&?NuWbcnY1d}kVW%I4n}#KBAPie0dAi{%{FJsPC}=Gq8_*L* zq~|@aw@-yHyEtH&)@{rm0t2H_GP{RWr3=L$$N9vX6CDxKAZ7_F&5 z_I}8xi?TML0UB<&kBHbZ9Tu(+yW6Y)On_GrWx}J#zx&O#p?o0qc}q!!qlm^gk1_6# zGtqDamtw<51e2>6p8EP&Z+e3$4cTOy#oMxNyo!MB_!UZT(CI@D79?T1!x}d-vUlXc zqmWr3-|dRV<4G^mV<)>^0FK}e|Ll>(;3vwcjE9BY1UxF(GA?eiV8oki1o*WxogjnWQl}7 zZJMU_a1<@Q>Hd3{+<2AM&`o-#HOG2I)HqbIbX&%qNJJ&TtVz&I*zp3dzEZtdt!{q+ z+1&936KEvijD7z-%(;AhvV_fmsX52$kfC`xOMU)vt*i?)q++VJbDQY@z-gtyR$Vq* z$xD5H2!ou6mXPEdDIe+Z;C(7p)wg2`Qab$FWTkpSv*s7%iR}X6w3U zG&wTCu2M6`x3{pOf4%m~&yWDEuF)MjV8)cn>;nx^^L*IdjPQTqls8Y-p0jc#y#0!_ zlL>JIwXAxQw)$0?+9r?mYO@i}W%YuFuxs|zHltqd;R8+kQtB2%O3|@~wWJHB|J?1D zpWOOVf?&J`WNP9A0Ck$FxZq(s=s4VB>ljHm86(}36~ zY>f~k0rw(~Swmebl+EwuL;alaWq-gdSpF5xsU)Tx)d1jjtXFH9F*b;aqUHp4N^5w>Z3CUd9NM!EfOcqk7ATp><_*%%(8T+00@pJmB&96 zXNmzu&%Zy)`3%Q5Nk#;fDKY$d>f=7#b(Dit^lDgn*TOef3prZ+La;)L3z&nz*dBIUv=&Wlc5b z-|T(n)XP`@pk6JT0;_U*ZM0pnLI#ZpBbr^P_gMCThG45d^qc2A>gvd9M>)U`i&MnN zg_Hw&^m*w|9x}+fO^|T52nCJ~t#!}8o$$jPOBE|Odar*QrNowMgH*=p0&Gt7NU<=^ zuNZSP1vJF)o>$KdiNbqQ-4;;)w2k6v7F<(=*oh#P8{0ZHoeiAg9k0P8V<>;Ii8`a` zg=@wU1!1Lxy_IvbX?_`}_o@x^Qth((F=}jpQN$6oY6Q$??u74=yUJ%P-+&kaya1=x z@dLMr>feXQ*2>yiW~FZA_FS2t(7|ECXMch;t4s@B^T5j2FAR21Xb|IHgp~hj7 zqJfE5rouxoIgZ z)h`K~S~_(Z@sw2M2AofWTyJn*wsK&~K{Q?kGS|se^e6KMapG8hVfB`vap=?*< z7~C0wpp%y-xh^;2rzas(3tN||Ja5ZeT*lscg{vE#6^{PB!=Q96Zpv70pJ$s9EjBJRTLl3SC9>lo!4Od%-~OI3AoaL>;55{Un(Vr_b*eHZe*C~74nJ4Y1Y~8?+z~B2gKZLVWhTb zaVL=n|9UJ*U+R(O;5Y|{jq$tFtZ$o(oaPrAnRYakBDWD?znN*Z>i+Usw&YwN#n`*Pi)`N;F=Org;3HS3B-Tv2#|<({N88in8G!bfT{eAG4iG? zITF@^O$Yv_y9r#ye;Q3()F>QYKT@9JYKJlz9QMWt(La0|f_trs|5t?-k_>D((u|2u6PQeP+yOAF)7Fac0db zaDvN|*pXaZXUfyA z;c~u(5`|Vbu*9^@EJ0vsvsdf+KSy+zYuXhpcNEob>9LTJbfGPC9w!B1l7XKhZyh)1 z?Q^Zf)fR=ib~dSm`B*}POVN#};PZ+V8%`U4FPK`0u9;}Y_CA_-grqRqb0J_2uc4NtjE@F8*W!S!MK+Y$E{Vj#>bVsmL)Uuq`~SaFA7 z-e%b?sl2nRcZ|@HFOPa_sI!4=g8J(4bFKaI9Jnj=vOo~M2cpr9Gd9fpqS^cRM{c?@ zS%)(D5Lt5E2-z+Evr)ga&;YfDGDV$tsRTVWMku3Qd4XR{>^l}?5-YQz6@_AuDKMnq zL?USXqN?m{;fc}Yrq~UntVDP%t)j8o8u($LyaO>EG+t_V=_o2#zW02mVbQW2s`RpQ z+NrUf(Kxvm^76ctM!ba!M_;k~o5$&5udIqn33c2h@q4urApYJ@52P(BiAL7BC zTC*X1cvv)Vf{d$grv(s%MX`XX;p(lT=f(pw{dryBko^5XA}n(QbyBJuDhx}`McUkW zeTg}bf+Q2#V)}FwKc&_;yr~xWSp*4Pc-=N-K)dXYekRAoqhl2*4Uf6Xf9YxveZu(S zIeq`2P{AO%p0|t{4*+IievaU`dZKoo4o0c0Tfa8NY27bY*bxWu8ZVyQ7fJv#ir{XL zpGV67I1+?>qjlOAn}(zKlj5W;herNm*USC#+SYHThZUx?2ATInF|N5uW~mB*EAW$uoI^P+Yi{CFuV znT9a3vt)nLrp5*0%3ZtAG5(vRK<~rH(PzQSx*M&z16cl_9{jdE3Nyix9WPn-hJ*bK z%GtUwFDornLkkbTCs&rE=l%bYu#yQN(T;JEhstGZJ7}KgCmxYa(|C7$aDs~M56mIi z0XMm>WiUJH-jl1OZrhHKBnS-4U*3$pmDF8}dWF8Zl=DQ8)OhuCq5{ErW2tK4AZ6_h zN#y1k8`j2clq`0Xraq0E)OoJByW?k}Xd)`U^*Q$y#Mt>&0=Z+WL_iX06+c*)=EL=7 zz92hl8_Lw`TlURAhX$Xq6Em~mK1je)A(tF>xN=5qV%Gu>ZHmfT4yAB);b6Wf;fBr6!4 z%QUFrNhWxK^Yyg&4^LMOMEIF7hF+LxlQe<2r_v=f#r8|eHUDu{ZE1+}+Q2to*GaXN zYDL0Mgygpe{2M>*pL^#nX-tTpz3oD_v+p{JR_F9upA+XDPS(HGt||QhrMnVh(hCpq z(UQ50G9b!@x`|eg=;c{jE7>n@GP`^y26!aF(Fg*a8Pr0JZg|6q9S%^(*1KCa}20cyl{vMuM2*XjFSt7&HFbG{HqNFT&;*;Ax}ZBpdJG9 z2%h)5L?xM+kqnQh%$tFCP;uP|-xLow|89!#%wl3NKr3WBi=q~^y1eVsGF{QphDEMX zjwJ`5u!rS%$mIR_@Nxs!Yx~jky&t8IQ2oaP{}!OjL$)8e`SrYbjmO1Q{s@24S#B2X zd>P;bf6q^#Sq2~-ojRGQHp1C2?$7(4I(}BO_&2)n$1t+&g{v{)OcLr(>ixq4=Vq*0cr{%4+>ML* zOiEMuT1|_3I)sCPJ5r~vom_{iiSxmGhKHOmCVL>eNKe{bRbz3{5SPEO(NX^DjCz_G zaQD9-V;%oed&^C3=KV~W=`pptPiqHDjviNbMVnCoW?T<*e=2$J{|sQAuf{R|c}5MH z>q&6HbS$JG66wh&oA&73-U8=QTugnr^|yLC0P`BAzuIZRLm}oODjDv5yOXI2qp`gV zhwY}GdMgo9^#wg;%D*I?t3~<)2lGne3eI06!H|sX<&>q87OLB^1R#t|{B>S27Dwm3 z_Qy;0nJrsi(9ZWGe_Sh7$;f(xcKt)8y_juN8V1M#xF72|Y~KU-euREUK+psQ#DwaJ z5gmZ00p?Ph1*Rt%9##Zu9^R z-HF;@V)0u#%?J(nFu-Osp`=$QEFo$K>l#V=Rt+n(X*?c?uzBBC|1Y#EZE#&E88KBi z$Bmwp{%7)e7-QmPZEso+K`6z0MPdH&wEms#tC8Cr&PX*R!Btv2gl$Y0G;2#eA`^)A z_vT%xb;XD6g8@#2w;z%m;4=v0yGn&oOa3YOZo@u9+6^erpOULGP1K=N$zpTxgI_&i zk)AiMJTr%38yF&c=otgxji*t0p`96WdmFy6kMVAI3P#Aj_Pdg7TU;IM%(eRW`gHE4& zGjnNNU}bEDzwHK(cg6Kd5|2l^@59SAjo$72o*^CH@-EUc?jz5@*tUyW><}N$T{w)9 zPsQKAh$5?F6_Ap$95y(gxIpR_*fqoe$T zf(1g4g$33F;Kn3Nbu#Y24mXT}P|zYYzT)765W^9c(Ds{QYQ(ky+wx|H3z^06)M{0f zH5(Tn{`tF(rssu1{o&W__Eu5fhL*wsH(Rly%5YRzIJ)Q%zS-`ho5d0y!Q+n3-TV_X z@1;b1-0(9?%`#vVct_8un1~)Nm5hg)3+t_;v;B&e zvUuZRyi;Xh*114Z2*EH3{Rvmsu)So+J6HFzjbb(}yu%=BCL;7W6b~PYQC-1#_3{NV zi&9pNg{*d1C^D83-G2|6wHolMZB9pwuXo&`=vPZbwgcN~_2DdG^%bH>C4o|73P=UgE24yw0B~&FgNkb9b4H z^8teFJ(PQfr67P8ru@vZXqj33me+s6YhhTdzS#_&)$2`uckTI38od`Vb^g zm$VCwd=Lz0zX`0AMf3ErqS&}RwhD<|5$WKY!kUr4gx1$NzsKnlDtbQiAWMgQP|36l z3$G>uCIR@V=7$7>Ua=M!wGg>ta0y~w33yniBew)B|L-QRcqq1C=ZHdD&3-NZ2Py;? zha1Q$=N3J?e;sJT#V11?Br2@=i-c@ug!&;3jDjy0jhtJkcZQEIq4Fsp?tZO+Iv1uy zkUk1W-cuk(FD3>tq)UK>hUAsk?=n<}bTU-U=W|hy`{7h~f%Y+;H*87UQ5`>vq4_Y) zHAl=p=A#&5E#Ky&0MeEtrTPISis||)Mcu7J6wSh3P{lDVVXuH~_$YhgNS`m<3nDJK z-ISKn^FlClA)+B8$3Wx4VF}+8?Kl35ts)3WcN=a1Tg-FrfVUb^LwL2KxfQvC?M83~ zQK4!uUG267u3WJp-kHBEi{?F!l<%WP^-+qO7(Fg2 zckRdpO)Crw=TqK#bow_#==Vm$m+Ll(E=oowJe)OFAXT40LyQil$saO+er3lf5~8Ac z&8px|2D86`JE4mFLSoCd`RFxlX)oc?38_?hh(I$obfXionNJS zFwmrw2E&>1!9hMY{7pY_s(h&qfnDn}<%EP=7y;)9eI@v_%ApIXmZTX}Id2_Z9jH;+ zBBG~PY>4AANz6bkhB#n|(4xmV;<3eY5mUeJXF8y4nTDwY2L#ojqaf;hZeT?4#~4#t zxsqLgU#`H3026>2MUBAIW?4Dx6ZwMf&OHd{t5IUXb8ikQqc(E%Sbij+&Oh2J?cvvG z?gogd5vV!qaAE6G0&@rFOO`OWH%FJLsH$%RGfu~HX%cT>$j|4EGliM6Zv))smHc@< zeT8rFdPa`a1y}lO7d~x>?=(3pHgIeO_ex&^iTn!M!>fYsgE!SuO|d~U=hxY`0CCHj z+d2ATmu3_s2W$~8AJ@hh(IEX4?83)S;3@dqe-7jhw4 zsOBA;tOs8o7&uHG5Lh5az-A3^>{x!=AQ^P6y^;=S(u1gE+4VU(X<*U8-(p5P1i2PxQ3-6TU8n{~iQQt)dvVy6TFb z@2HpEI30Rb6H(!Y!$+x{xZr9Tskw5%eOLat^D$;E)n|&0m>ByjN?`ojJ61)%%LghS zy+I1Tb+@?OMuo5Z>;@}90OALsG&y+h3oC&Nh37|1(k+-&=*!w3wH-7=R zn{k=60DsM*k&i}(^^=3~cOn_u3a}*Vv;cjFrRL!zx+`{fgJU@cx3)6BJx?}-P4zO? z+yS`BmxvZvfgOumZMvx1I*)xLi%j1a7YU0y$0V!N4WxaEkj3p!otm${^@L%{Iug#o zAEw`D*-=~HdOZO4$}D{IqNmM=V_QJYvIh<%1r+7rg%T_AuUwCA#*_nr8w#BZ+-_hK zU?<7Du}9f9q;;fRSPZ zq;ub|H+9ovUD6ZsawSCdc;SdZun+aPGF^9u;NLBz|<*z2r~7WFs17k4hCIc-!| zvw(<-AZan=bx=Ladb)D^J0{FO75G*G6t!B#U7qAVn7tBVeBtzpd>iad`RJeCgD-Zq z*Ag}p;f2AIA;Ity6T<=lo9~w)Kk+S~4)C0jFh(0LO3XKKCfhc797^D~vGK@y&f}B& zFB)XQ+gFflFGExguNY-V<^UeH%;0az8}abKaf=Z!8RyyEV=|HB&vUwGn}?U@hpl=J za)##&1SX6g$-0g96s5}JUqSs2wI3bI|4H}|F;2jQB7sUE{_laR=?lATOrmlUhwO)9 zcHE&@2^B-PYl!`)-`Q-nu0u8e@KE!&Zkc{P5gxD0-MWdclaVqn&!{iQm1u!{zg zV)!O$%95JneqzXgU9~8h#PxIpl(`cfl zL4$_({*6&!#*>q{mYP7M{4q;@1{{Kq^;=mgV9R+kORb?QEuePjM6+f>u5RO@%gD49 z;K1v^z=AGT-c(qi$9?%_aObmBw`%}{gbWP2O|+f9lLV3zO(kZM!xv##aD6bN+2*Ht z-FK|G6|imQLi5a;mM`Dl8dCv&d=dgcBx}`u*sa_<@5$Y%>A%TcSs4XT^ZshIc*P%U zs|?bD6%C_}pnqKMuT<-;cMy0K8-$K`Su&9H^|@z@BaTptV2}0VdOp8s3#L=l6Sw?KcOK9U=ts8PHUtKv_IzcF?tS+mxwY*qqKQF!MnRlS-D|RUHo^hkjPCIN9|4r;82K)sBXv-whq?jc9#0BX&|X59y6fwk3etx|ipX5C>L^tkte&%ZfzTmiMJ z(Aoj$(9Zq+)j+VB3=JU*G08&mdmz6?#h^XSajXteebv=Om&d+>dh3-BsK$7o^mGG& zq7PvDZQk`gBe}UWpjx1Q+1~zMzGWs(*uQ+z5!D)4M?(5Ik72HLC&1N$5fJWhl)9Hy z)s@e)z*x66M^DIcZFDIKqifZlb5g?@7pBXS1h&Ee|_&*AQ*N@nM+#JCb=}fO{qNqdy($z+#^_m2l z#~Ytha7C|EV*#-D0Vz+n#JzdtZ#VYfD`NMCD|$yO{-U8oNq#nvsjS1epnQ>}VW_-~ z>#uLDKd8o5w55QIAG3>a)Y|dYnkD4r0rgNm#|i)>Qdk!!9O8O4oIe}&%Vo<+r|#V{ z;;?D6a~3Ae$SNWD3}h^B%gVKnKf%=^in=Nua6s%jzrmS<4>1->SZXcHu=&=yecw++g{GI-<>8M+3k!wAV88pZ@?PE!O-ONJ9pbYt~B`oSRpO z_ncaOZN+CXlrlAxUCDQv<%}PnN*Xu^Dlm4aMgA;EYr1NASSje@V}>7TY${a-vA8=jBo# zgE$*w=yEO~tEC2fFLl;{?V;0$-)}bo1}>&_i?wW?SR3UC{_IX;ue;1)oFn+$2Kjp} z&-LjWF$Dg(s66+?5^4+=jfCMu(0hDFyGGSz^-y10`j%8#FZye2Zu-zq%OFEZl2MY5 zmL8wp<1wcLnyh1AUB=^mkNq(F4jrq7KZNIXG|Azi<6UrD&~B@>hTuxY7Vk zp1a1~NBAl`$xqvGr3<@if%M;>{n@HzTgYZ}cp*8~X>ZQs`Ui%F#ae?jNWt>yKuX_B3640@F4kjBMw0QW8bFh0i0R_RGI=#r-_v_55f+OeZI5bO4NVg zUM9dQPtRlDoajJ&h0bmF-u!18KjslW?+EC)I%zR}L2xi{)&(j=!pLL)R<|mB|4i`b zWSTukwoBi5kGAEEuj5|lwM288&`NM-s|eeBSDMK8`lOcnHOvi(5q2kf%6h7|^3|CW zSg}+8nW-P)?SG`lyw*x%oAm)!-4o;QnPoBaSzSEBJHpKfN+05!+YF^V6LrhQSM9EP z@q=Mv3u$%)?zWx(n{mydGeYHEsT-6PK38otkyO$PM zEOtFP0f}SW=^GI*Jp)6gWys;8)#F^MXyBUHW>1=_BSZewB8urLwgpfsV$q7?M6>bC z-kjcSGkcxJiXPQ{=l7xLm*Q;(Ojx!ER95t&xO`f%En{B7zTrkeM=nx6=rz^t!sE92 zx2r}Dec){wODaPBo$DnD=V9IBb5})0d4G%Oi=EAqFB+Y|Q;w?r0o3iD>}$Jt(bBls z|8543Y4-DxQ{kwA=R@3-I;UBi#=WtC)v05bC9R)kLtkc?zeNG~r3Jrkti#J>@M|Fs z@b|ykNGS@0A)s2tVejFzd+bK%3&@mcl2jYGQBezWx;SkAcc?KiU;cq9p8mGjL`w*h zYH&fAf$T2`O`RD6V42b8q(J#BrlH=8u0ixtFIj4YpQ=m|b;11Lm=G3R7s##cNPYP# zphd;lF*F%jHcz)K%&iVv0`TocUj8#toERT_dTU;8(M8W^m9*xXtx7g3eg>}29s%rE zwl>3Noc`gq7?819X~WQQ zw+|Xf-Tgxfz=zA2$5yys$0>@ISegGPti)GLJxuHgd6&7Qs_e>U1@xp*38cQq&k%ex z+dUCd?Db%PLfQG%u!?@g%ld0bguXXfm@F(ovjVeAhFlt?@<5`J+Hi6-8zUUJiMoK= zJEMy>9WXNDn=;&V%z{F4pjP3sUJ;Gq?!NDo-R%NSjSAzEqkaifJx_yKE0mVguX zy`MURgibQ3tQ498{r-lE(J^Vbu(7N;7j9DOpSL(66cI93a8>&g$REhKJ}7Se?c&mO zFTGM(T(x~osOOrvG0K~z!der;fq;Zvz~@}_YjhflXj%e_P+8cL71&viqrBc=6seG} zX>nk_0N?}nlMLFw8Y{CrCvkk>lE`!N`)3SP_AzVM+}hUBkOdGEhZ4s~NF`E^DHECT zZ(gQyS<6|${+0tXI1aK?A288L!X&}dv0yS{hb0jqZuUT!Q7!pl_pj?&z12@4r5jH7 zvEQ6ui%Z_>zi_nQqaA_bBVo^M_0V><1&VaW-|2PSq+<^wD@?_O_s0_{Qi+nu(){S0 z!5|8Sk>oQV+2x_cXh1u=1La_S>cqlBSjW6wXJeGe&4=&9H)TlIjoe(=VPM6e%V}c& zx-BbmH6aNn_xAuA{tg@gFD1cPCT&k$fdVr$Lq%%EiOjuI9v_GkloSqAWhht00FHuf zU1xg70r{cj?o6n6-#~Z<6h&*#dCgUZx;4cU-j9M}C*Wcy63NP!*%65TzJG2;?X`cz zHRJ1ne($GZL>bhEO~{kr{S48d{u!}7qfCPjf4=br z3*MwrruX{$2^$N|FvF`r==2c*@>>l;+#;GQ$vL}y4^8+&3B~z8Tih^1$i_*jU7UjknC>utqxn zjNF^w>43-XQ9HzNQU+i)CZS}WC+v3KH^+^ZOH3o$Yqm=U!WT5bf35 zg0bY!%*6Sfv@KCpA;BqApZG==UhexG(x!@Bj|x?M+q<{ldi9vCktQ*?T zh#9-Q+qxy0y2mB8*-tGf`YSn|%^~8CqW`!c9!sVGKEd_(&i@X-UaXd!Cu%y!9{zpc z%k?o(!1OzKPc$BZy295FqLGM|0323bVlJ9+@yLNsQN1cu1Tg4|lra_`Z(-;%?SiU- z8#(k_XvFEuUB~8!m-C{Ox=)^rt)z1h0k!psP-NOB78jFfsw?iQ@9%~XOw`(*Yn8vc zmwyc5TKQsAbOcl)0)_q*-q~Il?*3;KBic%bexPbr9g3e|tG*+PnGT291nbV8 z`#+yio@q?@%vP(T5_Gvg@Y3lCaTkinMQk+GN0X44&^9RxdzDEU{jI`@Hvvm|imFl{ zFlPtFUtyK%fSrlm4NXIVy2+SO%*QkPXE@5|=~(T#WhHl&Pf;WHh@7-JwC() z85yhX$@nnGH&5KdyE))bnr(rwdf<-;WcaE*ALPunya=H9wX@^-Kx`|+`hLC1rN25w zY?xcsE7b-h*q<4gF|p=D1~sAct}uOP(6d4G+-{C7HRe;KLrrpJ=Ciz!bN5J-F|ol9 zR10WrT1m3`sr&M+V=dplrEONxqtt76I2P1;X3L*80g7A)KX_NJ_a0NaHDl1Yl>dp8 zdt9`g{~}d%{#sbuqLd>&@kHs+jKSof)NpV2n5evJ3^f6=PVM(TSU5r_Zq4{i%ES4| z#nyfgy!MKQQyxH_F6J1(2ID&?nNj&W1A{k}uN9 zgQbC$zCHMPL@6gO9Cb@KUp6e5A|}>s3la7 z2CAe}c>X5|0keq+OyG^e2dconSJL^O$65R?0ybI$(k`!@1zopK#T4zHAQI8I1YI6B z-7dj#c=z2szR9|a$3~Qk@w)O5YR7HFFxw#mxFe$nJ+?Fvgs!9p`1r+-?Kx!10PMMK z4pTh~R#Pk*iQ32|&bMAGlC^i+wj>Dvli3C3w?Are@B4KCvekpDg*S#1cX?l5d@BMbU)gfq`GoZR zy#hVx^j6uA(nxBK4y8ly8PKRd>lnTy|ECiH1@cxzQM$wa^#C+-L9sy+)6;Lt?(yo?=HPo ze_Io*zqb_f6A9UXIb)Z8B?{wJPyzRHamh@ke?xUjIK(xDPkI*8ul?olmnVc~3c~=3 z$Iyd!yZQ{{!&r-QOnL%u;`eU5dBpm(pOTzSf}5l1?PvsNpGGw7Jf-?savO?I(W7W@ zYMEOz`7o4$rKcupHNc)CyeqRm+3r;oK&C7AuS32c@>}J|8~cT5@34vP+35|J4D18IrecrBP@7{q7Q<|M4f;&EZ`wN zyQG7A)X1-IXr>@aI11l6krmd=Z56ao_Juyz#3_-vHJ1k(j(&@s|1h`pb^r;6-#y4c zbO33hdl(%q*ai(N_&io=wo7BX$JgBl=jN_O*~bP8yvKz!-Ib{py)~P0&K4#KGBb!@ z4on)@lct~OHVXep02lm5A%fB4q_4&UvvZgSYeS^vQB&I=@6$AXk=44bjojVrvdwTLT~u~^=Fe3+X+M^D8%S@V)rz3R zH`wSR9BM=42-Y%$P9`ZEq58Eq5Q`xxtG2_Peo+nP`9~FaWeyF7Lu(hHsWzfjG+@mZ zAeSj)*>DlEbR;AI>{uS-JpQNiHc2KB3Vn@TkFT}-uT{$a@A~_xy`TU zFn)flq3y;@PNua}T;Df;H+yH=8EbR*whktDgxS#eTJ;PNw{ROKrp1Y&fwG?wR9XESmr%Itg^%VZR^tkx04*yb={&nZau&sgYu?32 z`tYRB`2)I<{f2C;S0(&wqM7q8$>IH*B*>=8C(nj1H(0TE=1^xy)+z|k-ZLw>1!+sPx7dp5Cv0EGCf5SeiQg|_-qKeM!)X-{%q(?YXX!GCOs|} zl{g)x_)Ts)&SzZ+2Q)7jB54nsm4!Mf@NXe`hK=U+oyJz|Ftli2CXxrUT^H?qiGi)< zh;Rnl*GwGX76ylhb9RHMY4X3a1F69O_nRNZ8op*jC1YPAfS2V#@1+%`DkKa7|3ATv BO(y^V literal 0 HcmV?d00001 diff --git a/templates/glitchtip/docker-compose.yml b/templates/glitchtip/docker-compose.yml new file mode 100644 index 00000000..a654a91b --- /dev/null +++ b/templates/glitchtip/docker-compose.yml @@ -0,0 +1,71 @@ +x-environment: + &default-environment + DATABASE_URL: postgres://postgres:postgres@postgres:5432/postgres + SECRET_KEY: ${SECRET_KEY} + PORT: ${GLITCHTIP_PORT} + EMAIL_URL: consolemail:// + GLITCHTIP_DOMAIN: http://${GLITCHTIP_HOST} + DEFAULT_FROM_EMAIL: email@glitchtip.com + CELERY_WORKER_AUTOSCALE: "1,3" + CELERY_WORKER_MAX_TASKS_PER_CHILD: "10000" + +x-depends_on: + &default-depends_on + - postgres + - redis + +services: + postgres: + image: postgres:16 + environment: + POSTGRES_HOST_AUTH_METHOD: "trust" + restart: unless-stopped + volumes: + - pg-data:/var/lib/postgresql/data + networks: + - dokploy-network + redis: + image: redis + restart: unless-stopped + networks: + - dokploy-network + web: + image: glitchtip/glitchtip:v4.0 + depends_on: *default-depends_on + ports: + - ${GLITCHTIP_PORT} + environment: *default-environment + restart: unless-stopped + volumes: + - uploads:/code/uploads + networks: + - dokploy-network + labels: + - traefik.enable=true + - traefik.http.routers.${HASH}.rule=Host(`${GLITCHTIP_HOST}`) + - traefik.http.services.${HASH}.loadbalancer.server.port=${GLITCHTIP_PORT} + worker: + image: glitchtip/glitchtip:v4.0 + command: ./bin/run-celery-with-beat.sh + depends_on: *default-depends_on + environment: *default-environment + restart: unless-stopped + volumes: + - uploads:/code/uploads + networks: + - dokploy-network + migrate: + image: glitchtip/glitchtip:v4.0 + depends_on: *default-depends_on + command: "./manage.py migrate" + environment: *default-environment + networks: + - dokploy-network + +volumes: + pg-data: + uploads: + +networks: + dokploy-network: + external: true \ No newline at end of file diff --git a/templates/glitchtip/index.ts b/templates/glitchtip/index.ts new file mode 100644 index 00000000..98695cf8 --- /dev/null +++ b/templates/glitchtip/index.ts @@ -0,0 +1,23 @@ +import { + generateHash, + generateRandomDomain, + type Template, + type Schema, + generateBase64, +} from "../utils"; + +export function generate(schema: Schema): Template { + const mainServiceHash = generateHash(schema.projectName); + const randomDomain = generateRandomDomain(schema); + const secretKey = generateBase64(32); + const envs = [ + `GLITCHTIP_HOST=${randomDomain}`, + "GLITCHTIP_PORT=8000", + `SECRET_KEY=${secretKey}`, + `HASH=${mainServiceHash}`, + ]; + + return { + envs, + }; +} diff --git a/templates/templates.ts b/templates/templates.ts index 85fb8a94..a4b1a995 100644 --- a/templates/templates.ts +++ b/templates/templates.ts @@ -304,4 +304,18 @@ export const templates: TemplateData[] = [ tags: ["database", "dashboard"], load: () => import("./metabase/index").then((m) => m.generate), }, + { + id: "glitchtip", + name: "Glitchtip", + version: "v4.0", + description: "Glitchtip is simple, open source error tracking", + logo: "glitchtip.png", + links: { + github: "https://github.com/glitchtip/glitchtip", + website: "https://glitchtip.com/", + docs: "https://glitchtip.com/documentation", + }, + tags: ["hosting"], + load: () => import("./glitchtip/index").then((m) => m.generate), + }, ];