From e42441b49a2bb9640b4cf0797ff26a87065eef1d Mon Sep 17 00:00:00 2001 From: Jazys Date: Sun, 27 Aug 2023 22:16:55 +0200 Subject: [PATCH 01/28] test to add tooljet --- apps/tooljet/config.json | 27 +++++++ apps/tooljet/docker-compose.yml | 113 +++++++++++++++++++++++++++ apps/tooljet/metadata/description.md | 10 +++ apps/tooljet/metadata/logo.jpg | Bin 0 -> 29217 bytes 4 files changed, 150 insertions(+) create mode 100644 apps/tooljet/config.json create mode 100644 apps/tooljet/docker-compose.yml create mode 100644 apps/tooljet/metadata/description.md create mode 100644 apps/tooljet/metadata/logo.jpg diff --git a/apps/tooljet/config.json b/apps/tooljet/config.json new file mode 100644 index 00000000..8827871c --- /dev/null +++ b/apps/tooljet/config.json @@ -0,0 +1,27 @@ +{ + "$schema": "../schema.json", + "name": "tooljet", + "available": true, + "exposable": true, + "port": 9876, + "id": "tooljet", + "tipi_version": 23, + "version": "0.237.0", + "categories": [ + "automation" + ], + "description": "n8n is an extendable workflow automation tool. With a fair-code distribution model, n8n will always have visible source code, be available to self-host, and allow you to add your own custom functions, logic and apps. n8n's node-based approach makes it highly versatile, enabling you to connect anything to everything.", + "short_desc": "Workflow Automation Tool. Alternative to Zapier", + "author": "n8n.io", + "source": "https://github.com/n8n-io/n8n", + "website": "https://n8n.io/", + "form_fields": [ + { + "type": "random", + "label": "Database password", + "min": 30, + "max": 30, + "env_variable": "DB_PASSWORD" + } + ] +} diff --git a/apps/tooljet/docker-compose.yml b/apps/tooljet/docker-compose.yml new file mode 100644 index 00000000..538d446a --- /dev/null +++ b/apps/tooljet/docker-compose.yml @@ -0,0 +1,113 @@ +version: "3.7" + +services: + n8n: + container_name: n8n + image: n8nio/n8n:0.237.0 + restart: unless-stopped + ports: + - ${APP_PORT}:5678 + volumes: + - ${APP_DATA_DIR}/data/n8n:/home/node/.n8n + command: /bin/sh -c "sleep 5; n8n start" + environment: + - DB-TYPE=postgresdb + - DB_POSTGRESDB_DATABASE=n8n + - DB_POSTGRESDB_HOST=db-n8n + - DB_POSTGRESDB_PORT=5432 + - DB_POSTGRESDB_USER=tipi + - DB_POSTGRESDB_PASSWORD=tipi + - N8N_EDITOR_BASE_URL=${APP_DOMAIN} + depends_on: + - db-n8n + networks: + - tipi_main_network + labels: + # Main + traefik.enable: true + traefik.http.middlewares.n8n-web-redirect.redirectscheme.scheme: https + traefik.http.services.n8n.loadbalancer.server.port: 5678 + # Web + traefik.http.routers.n8n-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.n8n-insecure.entrypoints: web + traefik.http.routers.n8n-insecure.service: n8n + traefik.http.routers.n8n-insecure.middlewares: n8n-web-redirect + # Websecure + traefik.http.routers.n8n.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.n8n.entrypoints: websecure + traefik.http.routers.n8n.service: n8n + traefik.http.routers.n8n.tls.certresolver: myresolver + # Local domain + traefik.http.routers.n8n-local-insecure.rule: Host(`n8n.${LOCAL_DOMAIN}`) + traefik.http.routers.n8n-local-insecure.entrypoints: web + traefik.http.routers.n8n-local-insecure.service: n8n + traefik.http.routers.n8n-local-insecure.middlewares: n8n-web-redirect + # Local domain secure + traefik.http.routers.n8n-local.rule: Host(`n8n.${LOCAL_DOMAIN}`) + traefik.http.routers.n8n-local.entrypoints: websecure + traefik.http.routers.n8n-local.service: n8n + traefik.http.routers.n8n-local.tls: true + + client: + tty: true + stdin_open: true + image: tooljet/tooljet-client-ce:latest + restart: always + depends_on: + - server + networks: + - tipi_main_network + labels: + # Main + traefik.enable: true + traefik.http.middlewares.tooljet-web-redirect.redirectscheme.scheme: https + traefik.http.services.tooljet.loadbalancer.server.port: 80 + # Web + traefik.http.routers.tooljet-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.tooljet-insecure.entrypoints: web + traefik.http.routers.tooljet-insecure.service: tooljet + traefik.http.routers.tooljet-insecure.middlewares: tooljet-web-redirect + # Websecure + traefik.http.routers.tooljet.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.tooljet.entrypoints: websecure + traefik.http.routers.tooljet.service: tooljet + traefik.http.routers.tooljet.tls.certresolver: myresolver + # Local domain + traefik.http.routers.tooljet-local-insecure.rule: Host(`tooljet.${LOCAL_DOMAIN}`) + traefik.http.routers.tooljet-local-insecure.entrypoints: web + traefik.http.routers.tooljet-local-insecure.service: tooljet + traefik.http.routers.tooljet-local-insecure.middlewares: tooljet-web-redirect + # Local domain secure + traefik.http.routers.tooljet-local.rule: Host(`tooljet.${LOCAL_DOMAIN}`) + traefik.http.routers.tooljet-local.entrypoints: websecure + traefik.http.routers.tooljet-local.service: tooljet + traefik.http.routers.tooljet-local.tls: true + command: openresty -g "daemon off;" + + server: + image: tooljet/tooljet-server-ce:latest + tty: true + stdin_open: true + restart: always + networks: + - tipi_main_network + # env_file: .env + environment: + SERVE_CLIENT: "false" + command: npm run start:prod + + db-n8n: + container_name: postgres_tooljet + image: postgres:11 + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data + environment: + - POSTGRES_USER=tipi + - POSTGRES_PASSWORD=${PG_PASS} + - POSTGRES_DB=tooljet + # - POSTGRES_HOST=${PG_HOST} + - PGDATA=/data/postgres + networks: + - tipi_main_network + diff --git a/apps/tooljet/metadata/description.md b/apps/tooljet/metadata/description.md new file mode 100644 index 00000000..a3fccf73 --- /dev/null +++ b/apps/tooljet/metadata/description.md @@ -0,0 +1,10 @@ +## Installation Notes ## + +To enable OAUTH integrations you will need to enable the "expose app" option and configure a URL in Tipi. This setting can be changed at a later date if an integration is identified that needs it. + +## Easily automate tasks across different services. + +n8n is an extendable workflow automation tool. With a fair-code distribution model, n8n will always have visible source code, be available to self-host, and allow you to add your own custom functions, logic and apps. n8n's node-based approach makes it highly +versatile, enabling you to connect anything to everything. + +![Screenshot](https://raw.githubusercontent.com/n8n-io/n8n/master/assets/n8n-screenshot.png) diff --git a/apps/tooljet/metadata/logo.jpg b/apps/tooljet/metadata/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5e53b7837d2795a141461cb84fb5d80b2848c2e5 GIT binary patch literal 29217 zcmeFZcU)81)-W6!&Ws8of>Hzp1(9axp#-m@NLP^FgiyqggbtxPSEUM3de4Xy1p-3o zb(9hzgbYLo1PIcCv|#9+@1S$%&OGmZp7-A8-uI91_nS>P+54Qm%3gczw$?h?>)#s% zoxSPr>I?#DYhM9<2l{*3n*(ub`oQ35&;ih4;I zIvEET+=B(cVGu`Q4d{6_e-(d(JHpA^{=7fJ4e6!guP*!*xeAcqzbzwt{%aL)xVrFP z_NksX*S~ZA2Flavypl9n3U>AC)$>XaX$TAklXrB2$Vr};y(%j!b5%|TEH4F?SGlUB zA}f3T*CY%O^mKGqG19#CD>WY z^#J95URF+8?)+tadzdS7|Bm=q5Pf|WZKRjCJrd@mt*I^yAdz-;byT?_CnqN>C#R`- z69NW7| zuD(u=w>(jZ^Iu!7;`$GGxqbsIF9(JwYTi`3@sD}=2J86W^K#?A^K&~NF$(W6IC96xdP zPC;UlNmE`a}X*F)I; zg{%>m2+z?UUtTvp?I3sN-TQl`+})lxVDgs~I04v$0Q6ztdhpObRRH!d=aEwvz<2*5 ze41O9%U;BY=epdF-E4a_(D6e+bg%l<#5I1QZfM`_)ol&zDAlmX zv^xh>%mpvRHhKrdTzG-RPt%CF-@$wFp z=BI4e_PIHD@r*YKC%g&6QCHH+7Te0wUM4 z?+hSW$ki1Rri1P=SBlHF?$h(q9y7~I`*|PNe>NSJ8*U&A_{zL{r;(}g&{EDR>U~IT zZka7-(}i{y`ot_zW#(0T971}{$`(wGuvf@=^ecT1llndfSQncp#CwRt523$?w}<+~HAu=pe$KRh}-KZ`v*Yo+zEB65;I!*jh~lKjuMU>_TGDX2|Q&IMAk zI`#g=a=k4bOhgJ8#|>S-#DGYq&-X6UgBbVHdFylOD>RR&7vwtYXLtb2RDSL3q>TiV zd>k##z4iqbh8C4zx)b6a{{nPbX$~2a9}iYjvwiVk%%;g{O>BKNCJ#;JW(bQ7pbASn zJ*4F-XBkP07{_ofEr3BtWT2qZH%8n z#b76SP>M-iU5ac4yWy3}1GM5a;nYzJ^;p~Bfx4`YQ90P>ZAd=lF#KZ{QF6ype__7y zguln&TQl1X5&*|VfE{uP$~{CmNPHQyoTqAk7bB^l|q$sQ|n z+~c@t!Y?3G5sUBL{E_@#?MQeuw=>KxE#wIa5h~8O*N_i8`>IX7C;#Z+AXMV`O_4%r ztio<$1GqIf1Caa#)&gP0`7`KfM#^+td@QS1_g4I=mS%6L%m|!A06xmSC2|P zbgC4HU$lFN$c?9jU!cPclM^mNo<^tL`40#SO-$#xqQ7V3M4#w$lpnD2oCq_%Bc)I+S`)JbeMwm=!vWH>>XFj-isfpYW;7>?vGY6$1g zdIkvCCe}6Xd1!=SKWs-~aqVA1UXO+BXuR0q*075Iv~#y*XERh}@k&UQ z*t^YFkz32VS`+tnkcN*}w7Ax$w=o~yYz|?M&cuo>P&R~K7z1RuV?U3Hh7Ro$$^nXe z27yhA=@87%(@j5rBS4|9sW@v4{)*^n=)}VAQ1Cabf7S4+4{7bGi_xh|B8z9(`t231a`Bt3GA3lI&eXXpRUKDP%c@-sl!ldK5dCY7MxmU`U zdL%k}pv85A8j-HEc22mo`Nx6&j7o-8Sj&B&Lrzz~ACeG!eLZtD?HL4o~2Ua+1AI87eI%2;#acrIluTg?@sKvylDwKXVFxnVKL(&^siRJ{)(wc zZx3X>5@cZOe8DcBi6;t*wXYc%a!qXIi$$tKU%Wcra#V2$y?Lv6*i9T{H*$cC@EdJ8Eb=~_f><6ESrX!jCFL+&vAx3^!+%f2KT@(&Km3 z8=+jV4Cf)w&-KP%G(A;OfrtwhIO^_aFcr7q)06efYZ6}3*D~0~qs4P-Du3WiV!i2w zTY``NNLldB?3c3%KW;fiX&my1gSCm>#zw6fK?z5O26uXxMu}f*AEb{9IKGREpM2OE zdLiX{eb!|{yGv1k<-NdA65V@gH|dn{ClIf--gFaz6-d}l^9_BH2j%e@AP{!@?e6c& zWG!fI@sd7V`y=UpxddS{m>JdxsqoV+Oi^fF#(=}~%-noP(KDs3?ZM7IVwz7yzKOIO z1?|TdVA5<0ExPsO%YP*jkpH?R$8b=UupSt-IeV(%<1YKr8qAt*h0eW4`*k@W2yQ~4 zVS=g4#^DRLwyY3i5Aa&9R?YVCl>Qzl_fbR*h|Q3jZ-KRK%i5}N3;kX%=%Q=cuEy&7 zt)r}U&jshKqz*Z+GdRb z**LDD^{*}ac}hv>$2RABbmxO5^ccT8rDN#Av$b?&87eAN6y2j0=P+!A$kJpyIe7%i*d~{*z)6N;v&VU9R#|Zh|rcC-)S;%prChX&7JEb+p z?Xw!88b?1jqL}ULS3`C~IJ$#IhU357-`U<4%HC+I6Z`b;pFw*rk<_`9`jtd8N5cH> zjaUk67AnQN5+sta!%p48wNzBbT>3un)K8#8h@U+b2AI>XUsy}p)b`fI%%pldf!r>Q z(8qyQ#crm3V)I(%B@#&cpC@wq{F8Jk=KDRN+_lP-`)5Td3G1 z8|!IRK!MJfwoKzA$W=C;doX_l>12p1E>;)U8)Xjz#O|+)gyW~Wl=L-MLpKD-#%pOP%ldcI5 z3ITt4NHV-UDyOTlGLoQGLkO5^K=65YMG2I%vV^YnlBRAaCY3)2nc{Qsr&?d7cn`lE zs_~yEk2+-)o%xcIn3YG!KQ$Q`Qbp}}qk*V>SJTStPM5J@eOb29T%4S@!1(m-FYJ8m z<4i;&;Yg`{y_NbaLylV+H4bmn-{iYhj&d(3@hb60PqwSjdU8lf23p9!XsFY6-Gf z3=5=WGG zMz;prK7kIxEIYrA2G_>B$>Vz-TDnZ2=skKxxPzB&_zxe ze>WG`54OU!rWBPcimZUex!T|lX{`d=ZBc8tegYk=$P^n$$r41Er;J%KhnNU5e|1Df zUVnbqB_+0x)M2fLkF7fo7kqc7+8iThHk^aDO_f)LyWlWfqav9D+{P#_C)+*girIdD zxX0cTed5_Id{$b}{Yeb(ePmsJ9P5>Y@)(&1lzVFF zF9f3-Y?COnm-j%@v(UgnQL9cGWu~YdP?uL$M%Cjz>ZZ;<4|PGHGgtd4aiyHaWotT1 zYVuR<9WUwO@}M-K}k}4o*{F2xL`*X&&2s7@5=XdDB9@bNUMc)l98M^zjWTWd>aE#dm1mja3`h zWxCv&e0s4Vx;E2u5*zlq=|yN_(=00pjIgN6(%$Uf-3r3~7(F`m<<$bYFEqH(Vq3tD z!zZ0eyhvbaH12^U4eg?LCFd~;4Fj6Hf>s7ix*y#JXL^zN(}WzQA&t-lcgN`=GZvU! z8>0SUy!S7qJ$6_vd%{}inYs#B#cfq9y3w07$v5QOppf|qJxk%wI=VNT617l=`Z0p};xBVju*n+oY5pO&$$OT#mRw ztRa`p8t0~whkjvh#H=!X+LIjAD{gE@OE=j>&mNb!iJOXZSufpL-Efu%2dV9z4&K-# zFH{jV9!HNd8%!44!P|xlO+>Dj(WB{jhEkm_Tn`VPFVuK}N=}{i2)@ubUblvRd@)3f zY_Sxn-&(`T%o&RNeJ(iPbNaOm>FuPhp`|SoPo}%@ZW^bM2 zeXwEEUkB&`U3&F2e6XXm=vj+rSY5QwuAz7uMWsdWbM_#%hQ7i*ep=ynp*tvmz(*4q zP6pz#ISxA&$K3!SRD`TpeShcL!d4=B(8_=Pw1;HQC=dfdA#Wkh= zWXcIh>4w=8l2mGIoMg1pSy@>7Lt7Pu-HFo{9we9W(85w)_~fw@uGc^ZUaQ~4t>p<8 zqA|`zDR7j3V6j{87Q|U28Z}`z$rG?Gw+D(IV)}7SrHxo@oY{b_^oNdBxR!U}(aEVK z*Ud^}UGCtQQxM`Z-CV>-LQbYBjLRL3%XNa7u4nYbJ+mo&& z!4vhsOFa)D-f|xn!j3 zF9U4;(3*GXuL?8KH}gc*vStA$yOV7JCbgT_Le`v=rxnwU@Z&<)olm@pTrpZ$x%+VE z`E%uviGEL$h}`T{mrdtj)ADwnRZsNFe5`-cz`Vd$xgIEHo@@CuhPPB>$fK+9&X*Z? zy7chLP%Fctj%e5h^v6EJ*_ViO4xnTG62)$J*YYmZ9YL30KsmBnWmBuwGkxoQue7+r zO{Fy2&a9N2++bLda76X#*MI0V0igij-Z4t;Ak~r<LQ{=|QE!Tr`jr*BxDtcPA=A+6P*3KQ( za3Qsw8k?T_8&63|D5TTdfQP>U|JO`vL}Y5Fu$r@@fS8|OkX{$r2_1o{@?X*H?~l4Z zf}72ks=ZI_?3pP+EkGg%spK5QabX+2~jD|Bv_j|^=w(|%hvgsE(t~b*Y|(r=}(tFm0RB)=({O&EiwHfeJvf%%xh0WFy~ji-$V~!gF_30AY)&~ z{mR9Fg*}XQ!SX8tg>zKxDvl%(()h(qrCDnFh3cH~_BgTO8(C=lXFl$6ffM3CgUDm< zp)VSmW7Wofd4baik_c3uI-ZxoJ>4AJ*jp5QrzxE5GCX(x8$-Wd1wCPTIwTqM3YV^n zDb8Zy-_wID;uMAurL%@F?XYH8b8q!fl>C_FXxaTnNDnKgU_rZRvv$a$(4WDR#sBCV z7SoE44o+pG{xM{cy5cKF&b8|uw&z@{3iAERij`9^-X+cMbs?%K%f3>GH>+%f=W>zq zFs{%E??4Ot12exbu*)@UMfJmX1!eT?q-ux1Cx+TN`XwzXrl$6}v^nVp zlJZmi_|_$2>#q+s|F*rprl^LJsG%{%18f~6#8oyJWrcI{FsaZE%TF6Rp8QuPqBSQX zHeUM0?%pLn?Qh<p8oL3jXPzk{9nh0a7#FhCf{4udzj5;Q z`(Sb|$^w@y1+0DFC5sIWr$>9mdd1FPDV7wyxg z7k;Qut1K+)n+H!gSSFRwV#H{7t1Vk=(DwU7iaX-t8SyF-s#H6<7M30;@7!Ok%&-wU zLaQUKOhdpV@a&RhP`UYiN)|d9(lFFQIDNa`j-zbcXTW30pM+yZp(F1284e>$*dh}JdsU`@36Z@p+55t zYsi%cfzETB3lgz={L$12@Vk}H)LE-W-ztrDSyyap$Ymc6yS({Ec@3;$z`L2%#4~@F zHo74dtq{^H$~PbOOFYKwTtn^{{OZTVQ(u=rgGVF23#wQQ-Jxd>l1GV zH-jnf0G|?^c3}%bf1yf4`YL1WQK!c9lmox^Bj{`f_R?bvZ4hd)2b#p7(G}IPwyg1V z!;_JaE@ROxbo@m!QBFl%(Q`w$epW%`oUqGq!A&cm>FPJ7G@KRIJXF4<1D@|NOp6Jc& z;Dr5Niu{G&Kqzr&&d+?&p}qyq_ujb}UGybq-WzsFw40f{zQdGa^rcR#tZ4dZl^18D z-B*i%v+s?s$|EAZJ2~!Cw+9l8$9WjM$Yx_08l2(~RK)|16w~wkvA=9v zc`iroWE!uClMAz$ax4MS%ZpE2l-t*Sza{+IsW9X^DQSTKRW9FIFiSVRgcr2PSzLsagb^#18!A<(uZnwD z5@zn>?pahVIxZ*C5^^QDb8f-~@1FQ@<F3eSeCil){t zg+s*Y=E7<3b*#7-Po|UkjQwAL^RKYW2M3ohV$|rG>UISIBe33;_Bl1&5&B(axw=5HP^{l3qiDhrsD?jhc;ef#IC$BT@)y4GqMHu$-Uj~V-{&veWyi&C8vxeGy z6S<0r(FsS;i36!`$Jh8fUqtgjQn4HtGc1=}O_09#TDfLtUijM*20jg%`q@IH_&Nh6 zr{9=+Zqx-OA-=4Ra77b&-f#j|iQs4pUw;GH&`s`u(ZViMyzdlul6;1xnt^iCj2jK7 zCDXqpnGQGTlW*rNju=o74o<2aZXNSa@M#+NQrn(H*=P$~hxzcI&dS(&HbXysa*$yZz<>t%Lq2=4F5P|qxINC7J6G6ntE zh^Qd%cA*$BSmVYmx9;19-IR>|4MBQvnkQ2Rof(jCb1&6XKR?+gA9wam3z!xUIxzF1 z=rdTFxVjLNz95sv8a3qZN(`ZL)1CG}F5jPnT-z7qA5(6jRa;U-d7xp$)x|IMNQ=IH z2eHrSw3bS`{`)U~KJ^qCrc=mt{23x1)2IWzcd zLk5Mu<5H!V{L8Y(`goXx&I6DHr`!aWG^X6&aHrWPcNPbq65piJZHq(kbK^n^PtxCx z`=$#7pB3kXR#I9KmMnHvY3=$Y$^5*xAP`%8wJHknVYE`mRH8bfPgLEq%pv-^bMbJg zRmx4(`8=EAv2{;V2RO7quiv?hSzaZPRJz#uzz~QOICu2HB1ADGR(YnUGUbcGM`FvD zpXOJDT@`gbzz?Fe64u{OwgAT&5J(DeOR*iBte@tN#0vR}+7=3Q@G;gxCs9jwT?(0} z1I-v+TLsPBt*833ar-`ENB$7n7_Mo=>@?MKGk11&BjC-JU>jIV=-!()_c}pnQ~d4O zl}hZUwCn96<&2G~OEpP>gV#WyLndT*ep_S2Lz-|+`37ovN9Ih9MH73V5&DUK)3}oA zxh_3OA($eU^Tzk8zRR|1NL7ezk8o)G_uNPjNHNGvBp!}E-Q&ISQo`(FYxOxTGF7wCz3kd9mxIzEYjxe0l4%6B6_E@q8O{o^&q^q$7P^%jRSrEoyEJd z#u_o(!mS|ACAXXQu>8IescNjFMu z=L(EHkOxA3%%K~4H=Ad&x?mx<^-Oz9cEF%Hby$}y&5#)X{Q3h(&YzUIW>xEu6Z|G@ z`|LLEJ=-pM1vV-5MNLsq#`Wy1P%4U_ymO{J|C#&7ZV)AoB0JDf{s`dU5N4r~i(S7S z$)e~I2D{I=2ql^h+kPCcRjd!92zKadono@=I_m4|D?tYtl2k%mRnGLo4fUQ~Iif)j zIIdB4#D2lni$^(E)*x}wAZGfG-A_g2I_hj}=vEwgib&oGX%d@_4cv+g3Bs;yZexof z3ry{e#Zc<(Vo3E=Q;pbE`yR-yq)rO!W=Um+EP2p>mb2 zXIYLZMQAaz0Q!)4vTOP30n-qdS=iEK${uKGWdrWz zWu0Y_+8*a(ms_yqC7z-ZWn`WT?DlZ^7B|!NaBpHI=8pvc@(2C!a|^Lx&Q@>>H|Jat zDji>3Xrl+ssDVxerm~*A92Ml8{9NYwX}>xDVuEN41;wjbU$65Gq3U*LJn>Qfk$Q2eTp^V99_; zuGeKK5^6{mnD5G4F8jh;N3P8*qV2;}R60Q*GYj?;j>-zpKlR;s{4I-h|J3)FYoLSY z`I+Qq$i@{@n0ci6L)gk>*BZZoX0P-#=cwS_(PMtR=l2O7>T)w7M)l9HqWEri8h!^$ zr44disxHP#T6!BH&7xI{)5VfRD^7TWKoUhi7Hx&Il?jL!J=zbs;euWp0@lPmP&G;- z7G}PpO>I_8w6m|XHc6T4z2aeQIubLu%X4;V%cwrrKUP4{4Ik(wNzMCdpX$Gu1pJs{ zd!Vj@D!=vGSiq6xAV*j=xjH+yO#HxMviKs>Popwr3>CQ9Ryb_FWqk<GhFxbMGsW z!)>MDg-<6VRSV%Zm1`HZaCv~=w4Lt5*`^#01^kJ>rK1I#&vf&58hVD3($G5N22kpm zVY{99@AcKm-)s}FMUbll6!s~pY&C@3l^C)gtS7)M{A`K$qhE0xQnD|toKgVyguuHZ z`PS>Fp8DBWDZ6%FG8md4QZqg0qU%!bPcB;!R4(#h=W=l#Ky+5=NBsO72meB5yvYN$ z2cnu-)ot5oY3+eZdB?Y|r1-1`I87XZb=mr6T1&AhSD4q(9H`Gq#`MA@y_6D=kQoe6I{4JT5fu##qci{#%ELIX5GaCd# zeJ~4?m&s}GNZ%xKP;S9yM~=DJBi4q$nm>d!bLr8NpZsuM<@~QW4#bz!9S0|hbqq-s zef)1HzhvF1@(Hc1za-epv<^z5SCwN7iMZ#X6Wv!1zz{k zT^6HL9qa{xfPcluc<9sOz=7yI ze+Yee5b?o2(>t>KVP<}a*i#O#$7$&6u-xpA(OS>Z!y@c8;=-yM>!735oaj<)BR8niAJp^s_g=dUI||)Sed7y zUE|Sn&(bq-a*h!t)^NTe5p9xHeXIqRwH*9;a}@g?w)U2lyt?WfPXYH%j~^YCJ2waE z(kh1_a;FLfc7<}9ZI<&ch#d{IGUPfT>c-RRimMkriO_z^RO>Ad(4i0k)xjYsB3$h0 zWoW&@kn7@#J;_+^q&%d$0NLvmS?S4}BEx5B!?@lLkM^7MFQ&GM%8x^HWn<-VoHLx& z9T{uSOiD=rH@#C6uT& z(>!1cXex5YM?Jk|Ft8?fGsN1fi2M%l@6Iq(aUUYmE(!hhn-qXW*M}IjKF`-W<`5cj zou5%DS3#eOj1egS7G2|LPiC!Kx7*zlMtpN1kc&sq(^ZRcX-G;+rqNYKnoeDyjx2RM zhdIn_C=tI+Ku5VmtgKj%k$A#6t8(2;$E?0azobUQxV%??*R{ssi|{o^VUA>PlvB*L zNLdocq@?(r66_mC7{iQ8J$%W%H)WIQx|NjPXC~t_t@}P|2L-l~s`ae}zk4}m=FwVF zzIoCviAO!ExQnQhS4Ro!{%r(#C-aEe9{T5z%yB;f-$i$NJonl?1~qN7?u1}lO)#|R`xs8s4iHFIF+C$i z&g_z!s2~g21PZyF$rL?R@?c4E!dLE0CMx>&?y+s9#S)n;=BEt56jb`%e^HV4t8-wU zi)3wn(m3Y9pW(4MLU?CWhoL0v_PFf~={~D>Rk>mlqzgn5N^t$8C%dW^JMI!E>rmep z{IX8awSc`VMs|x(nBN~VhIDu3EnH7riL`JS#1y8{rc20!?AX`^TRA`Tbj@+BYtlkT z!QmAP7@c>ODJ@-EG@ROB*y&Sq>Gj0c8iv*fI}xxjUD!F_TdNXOHVKht4KEZvm`yVc zzQ83t^?t-S7qdM?*QHU@^=m8Et~D^|%*Sj$jK^LW9jym}tXs7!Eqm0QDX-`%Xu}iy zyx9q<2^9m|F6-8gdTq(= zCat(O7$flF6vhjd;Wv#{HtJMOvr3sn0MR7E-bZ%wW~B!uoq)mqYM@HcqNGf^EmwA{ zId^;y`EZjqKPrEH#B9-cRjbHi0WK?FGO*c2y}3;j z-bbD=DOsuE>oRQgAI=r^=<~E2G{bfjy7}*fXu8k}>J0xXzV{d=aBGw4qOv38Q zZ4d2QZ+KcF0`>EPdk17m4a3rnIItGCWhz`7u>Z1R2QsHvkR(zkKWPGYNP&RFw{ z57{=UH+FU`Sqa5hbGYDll6}6Kh1d$SJ}D06aio>5_hORh^A;W(*G-FC#>;iY7{113 zbgL5$Y6<32btCT=kv=0;>0902pY6!V z1c}SN?sx=PijCr3d)P$%eS+T%qLtF4fb)}t0O1}vj%s|g&l>C1@3nee9|zZIh4Yz~ z=3H+le%sa@>{@_F`~0=vv#p|PF-a5>fXl;o3LA`%m9e%u6B}IeEqX$p-lDUMrT7Nl z+5=?E@>6&^QMR;;4vvNdm zU~vR>~V$W?v1*T0+%BcB4q~+M=KuvF@WNp}~$lP~JdFJGVztjJ&a``5niD z2kPg)ulG!#5bw=fv91V?aDY4PmY;Sir~YPpK7jJ5Zmw!|t3gn7HcRE26^h9C=aWtD z?hdJh%ADD?Tp>}Cy-P`-V^epR%R;fCXsMN+X5k`&+}#cLUWwRBQ>QQa)wZvv%65`l z^L!EF6|-Q?Evc?q4MRig=@WA31lnj(;Pnxk6{-b#5+4zmH?E+DlWfgpc(gQ7{AzHu zg>eocQWfL}n(Z%R>0bui>M(IMJw500mVk#NHpJjNp5E0{1Kl1?)m6Ccx-`-(^i(?L zA+$ifIGd&6rV5ow8CW!L;yO|v42Qb<)EkyzrH>iYc}w)K0Uh#xNr$qSA=Kt}3d^HU zL>|2Z>~=P;Ba=GE>U9(*t2^rimSR~GuZXd5=`}Ow8i~);3c%j`E&b5yb2b&R&VI(H zomr@NFDn9@MvtV?C~}>zRiRztT$Wq8SxWZNu=2bSfnaO}bg>#ZPAOetP&&&}{lB3& zP&B2i-Xva?Mk`$}opi2GSbUOcy%al?&GdRgA~4cuP;(>aW`$(GS9R8jYby^q`_BJL z{9q~H6QV}c*qT}xqx!0m3!&|o)RGd#tdJ;MLRss2+%U zuoza9>d-iCxtZJ!ef|l8oEcf<%Aq@Cb<__U%eANsL$ebj(gVwZNps4||E1ny9Zpz1 zsXuTZ)6v(JS&z9+gr6fVD4vNPD{s-tz9qS25<<1pYiu$@4K^%cd;&fVuUiHQ&swW; zx?HHES_v$1exA#A=;n#++ka;(@!B_*{--O@^+;-KyBW*lRw}GZohCaPeLW;=zSL6v zZk0^yRKLr%T0#m2Z9Mr-!M8SjnK(@@v{UFlXaCjh1t31u>nf*m11wNa>*nmN8d5?a zH;(m5Xh-R-4|Z$VnY#2@uh|dYghg%T(1jufJ<=^dH47=N4AM<2iZmetsiJ@I># zv6MwxQe?>!LPCSlk_Cg$b2OS7>1XqDm^xET@k78TxuDUA;Nsv*A69M5o-En91X`K) zMw|Ko5lQ(q8?gtz3FcR1|M&|IX*}dYwEs*z2N9X03(DNCstXZVC8#w&nhX>{ znF_A@llpAvJ3yq+^GVyt^=Ff;MH<>~GoUo;#Yw_Ly{~-jUu*^$m69(4x{|^H%O$)$R!Ts( zevUcco-FCMCWmu*kB3Ibxb5DZ8LP8x^cYN8_0ul6`Wx_npTVB(34->2u<8?XoFn(DAcUq9NqTH_5kiNO$L7 zm$eQpG1rjY6WJmby9&79n z_6>%BADJuNj;E<*Wt~ngn6)SobG?nxHaqI~ZeB_J}u0i8N#^GrVuv8o=iC2>KCA&A<`rJZ4PYY4yZ#6P39AdUlB z`XaQmW4w#l_}iN?{Za5~hiH)2qP_#g?%5+|mu#Kx}s0b(LhaUN_WuY&cr7 z@6PH9>{75%{(+$_+gqhk2yPPR=yLIw$>Fh0M4~y>~5B>k0oLj`cON|rWfAgzS#T=;A$;;>`L(6T?@<^FPautcGu6fXlOcH zIL%}#OSiRF=A!DWOzJmHQ&tMiF5zi*VmY-%s))uPT0LOERwVnB|5Hc08PKdm8O*tH z-99Nn3a8l7gmP=bgE_x$xoACz7)_0@%sx6W500`sQ>MXC)qT#fPzshah?73nsQA!*}C}}C@J;6{$Fcx0- zadGRVq-JZjl%O%EhULHqJ@@0k3H9H~9LiWgN^H|rWGrWcytdQ4C>?KVd7DZu>PV7f zUD5ftpi4Ib{K*_I?-S3IBuJ?#0rqC5*z-!Fk9D_Pj;^mH<=#2ml}U_QXz9Xy=B7lJ zu(~MGS{01)yVTIzrD5(JXkdmJHj;X*j^LUui84#L5?U~FJcSq)RARAvl?*7aSwT|( zwA%60ObH!Rd?@_c)-!Vtt4s5o+%ZA@6H%Qn>3+{E7haGRGvU1|;(k)3OtOCXGwX`m z@V9_X8Y%L47*%GLjRzMPGzy8E_^LMb+G*mNJ;&xqU=asdqJ2rN@bY?aq?jg2~O$p0q@fQ5>4YpV8)2Bbp_P*)Zt450t9pI@Z`P=lTQI z+Ft-`ZBXx~(@Y}6{~;;}A$@5*F2iHXi?RG~oiltHC)cF##Hta;R)0#K_uV;%FUf&@^Lro!Qe>}BUlZ=K5%@Zh`YYQC%6AGGVzi%$B=_+j`+ zHH>X@En>^7xL~-$Yi4@WdONsSm15^(Tnw0Hn;x=V>I}j|A zSLkPLqS!w*lYb@if4TImiJ=@OR#($ZMLal1p@6Na_0^LG{Wq;hd+tRwgQsZ_IkazCUj7@}BCQBr9~!SH+7gzs;bT7COY*Z2Rp&a4)_UhQaq;Ze zY642P(sXNmN6hJPbZzVP{m@FpWg~ z4gcTh{BOTcxXAtNwxMRsE6$k?L?v$9%G@qjx=&J`?-c18pVz0qcj%v1%-MWjD4o+> z(#w>15Rt4N&#o8BG=*O_ws<-zd-GK{V)E^;SZ?XM{L${*SH27cj9(_oU-hCxN%C?rt5zj2TEPJqG>ke2N zQ+l<_;2|{9@S){6FAW$?TFJKNHOxf^#EdZ3|s7&fyvJCz7@} zCi=wVI2Yk9MLt^+eZfx6o;%p~Igx^dbPD~XRIYTi5ZXZ9Qg>b{am$>c@%U!N{P*j1 zd=|QhD()EP_!W7QGZ#DwzvBP7X&C!vD!kF&AbMwDGnW1S{*Bk47~G$$iuAO8{=^V; z0b=$Jgred;l49X1u3)KtMC(fqKcOVZllFJ0H+AEsmSR>$rBPO_A*yf_zTzF8lVHrm7*onpOS*-{%3n=a-DcHkUsuQbX@ zi(emo+I}bms&ZfIL&El_|(+kAp3%%IOYevmMe;`^Qe2Q~jo*-Ay$T`@Sixv8R$k7VwZ(t?5pwO3=!_nL8bq z*dS&}Q;2-}I0M)%f|0OAUO)h^L<$yi;k;Lp3$$c=({>e7b%qlOUF=XfntbK$FLw6{;~dz9xlpHJ z{s6$z|DR2_)W=)eh(7URhQv6Z$n}E#_0LSVhEwp=1Vi3b1$e9F44BcNCZVDZtmi~i z>%0Cb$taro$XW4S=|zfLC;Z@xr@-5P%O;0J>)L0m81pHb| zOL5sE=m*PQoO55MgrL`XMh$b3<~FOmy40I&Bl=+jzaI+r$}I_Fs2SL~xKVSQ64>=N zcmIvIaWm8E@vzc2z&z|$ZBvi*GilAk7hQtG7()eh>Jho3P-8*j@%uFUR?Zxw(qkW1 z-4(N((8MNplTJ8bVhzl*GM-!41%7+R@&$B0S*UAKRk!s`nnNQkcYLT^d{xEGFU!7CS_&CkWj(JoLW^$?+dTcc`KgH|o&GZ)sfMdjF6-t>~ z`&QRJpLuh2Zq=SSzYb4+QoVZe-6Q88`?&mP@LLgSp8jIbwU^pQd}sOW{FE{`-|GCD z1@~2M->q$r+wr&~sv@6(L2jk+Rh}b7AFEy5jo$5MZ{G5J+hO zH09+rrJCTbUKt<0$jM~2Q z_TxJVz!8SD3rCLYhwQml*%Eta?%wIiJNJA!b16OQ_QlYxYi&OBZC~}~QS!0Nub#d2 zT=Qe~Gg+PJ>C+^ku3=45t7%Hz_~^%(+k1~125mN*+2MJxDOYRX;kq5G?KOj&9uyQ- z)Yue9DX+VCdQHWnjYlkUd%IJ&8{OKbOno0Qa7(}K<9&DUMsax5`6<5+gB$aa&jhy@ zm9@RjoORRS$bJ4fKGoV~rF9!#S)IF8-#cgP%dA`3hD(mm+IDru_mUf*uKm08+2GSH zi1)r;wyT0{9^jqNdH9_r?@`UZ$xF`9>zrYlcKOxP`){*79&LU#rNZytt&dZ#ne5B_ zynXw@T;SRTTbZ(BXE&XvkuMn-mcI19mR)spwOyggVMAlNbNQ3s%#!WeHw#I9-9&qaON>LKDmw8ZmKVvxOU#6&AMTyqkf;ZXU{L% zxlGLvI8I!WyKL{Wz~VBC)pCGP(YD+pRB0Tpu44D_In_^?knJi{mGMmu_8C5xcHrq1xQHPqY8o-LCyU z|8U#+ySE>{o4d9x&Pbk%;(p??mgC{>|bA2E_)+dcU}CEt&46| zyqMS@r5L~Q=B;<#ay$~RMVBfm*|l`6(bk=G`D=Am1=Mk))MyBdhQMeDjE2By2#kin cXb6mkz-S1JhQMeDjE2By2n@y$kpF)Z00q134*&oF literal 0 HcmV?d00001 From 9a728d798b484f6acc40951104bdbe2b8d64f3c3 Mon Sep 17 00:00:00 2001 From: Jazys Date: Sun, 27 Aug 2023 22:23:26 +0200 Subject: [PATCH 02/28] add tooljet --- apps/tooljet/app.env | 42 +++++++++++++ apps/tooljet/config.json | 12 ++-- apps/tooljet/docker-compose.yml | 85 ++++++++++----------------- apps/tooljet/metadata/description.md | 26 ++++++-- apps/tooljet/metadata/logo.jpg | Bin 29217 -> 70148 bytes 5 files changed, 101 insertions(+), 64 deletions(-) create mode 100644 apps/tooljet/app.env diff --git a/apps/tooljet/app.env b/apps/tooljet/app.env new file mode 100644 index 00000000..3729d17c --- /dev/null +++ b/apps/tooljet/app.env @@ -0,0 +1,42 @@ +TOOLJET_HOST= + +LOCKBOX_MASTER_KEY=70726290922441785304399601987729268981756953900892 +SECRET_KEY_BASE=mqrBZqJvzUJ2GsHQaktZjKdb2cvdM8 + +# DATABASE CONFIG +ORM_LOGGING= +PG_DB=tooljet +PG_USER=tooljet +PG_HOST=postgres_tooljet +PG_PASS=tooljet + +# Checks every 24 hours to see if a new version of ToolJet is available +CHECK_FOR_UPDATES=check_if_updates_are_available + +GOOGLE_CLIENT_ID= +GOOGLE_CLIENT_SECRET= + +# EMAIL CONFIGURATION +DEFAULT_FROM_EMAIL=hello@tooljet.io +SMTP_USERNAME= +SMTP_PASSWORD= +SMTP_DOMAIN= +SMTP_PORT= + +# DISABLE USER SIGNUPS (true or false). Default: true +DISABLE_SIGNUPS= + +# OBSERVABILITY +APM_VENDOR= +SENTRY_DNS= +SENTRY_DEBUG= + +# FEATURE TOGGLE +COMMENT_FEATURE_ENABLE= + +#SSO +SSO_DISABLE_SIGNUP= +SSO_RESTRICTED_DOMAIN= +SSO_GOOGLE_OAUTH2_CLIENT_ID= +SSO_GIT_OAUTH2_CLIENT_ID= +SSO_GIT_OAUTH2_CLIENT_SECRET= \ No newline at end of file diff --git a/apps/tooljet/config.json b/apps/tooljet/config.json index 8827871c..da7e1763 100644 --- a/apps/tooljet/config.json +++ b/apps/tooljet/config.json @@ -6,15 +6,15 @@ "port": 9876, "id": "tooljet", "tipi_version": 23, - "version": "0.237.0", + "version": "2.14.0", "categories": [ "automation" ], - "description": "n8n is an extendable workflow automation tool. With a fair-code distribution model, n8n will always have visible source code, be available to self-host, and allow you to add your own custom functions, logic and apps. n8n's node-based approach makes it highly versatile, enabling you to connect anything to everything.", - "short_desc": "Workflow Automation Tool. Alternative to Zapier", - "author": "n8n.io", - "source": "https://github.com/n8n-io/n8n", - "website": "https://n8n.io/", + "description": "ToolJet is an open-source low-code framework to build and deploy internal tools quickly with minimal engineering effort. ToolJet's drag and drop frontend builder allows you to build complicated responsive frontends within minutes. You can also connect to your data sources, such as databases ( PostgreSQL, MongoDB, Elasticsearch & more), API endpoints (ToolJet supports importing OpenAPI spec & OAuth2 authorization), SaaS tools (Stripe, Slack, Google Sheets, Airtable, Notion & more) and object storage services ( S3, GCS, Minio, etc ) to fetch and write data.", + "short_desc": "Alternative to retool to construct CRM dashboard", + "author": "tooljet.com", + "source": "https://github.com/ToolJet/ToolJet", + "website": "https://www.tooljet.com", "form_fields": [ { "type": "random", diff --git a/apps/tooljet/docker-compose.yml b/apps/tooljet/docker-compose.yml index 538d446a..55799d61 100644 --- a/apps/tooljet/docker-compose.yml +++ b/apps/tooljet/docker-compose.yml @@ -1,58 +1,14 @@ version: "3.7" services: - n8n: - container_name: n8n - image: n8nio/n8n:0.237.0 - restart: unless-stopped - ports: - - ${APP_PORT}:5678 - volumes: - - ${APP_DATA_DIR}/data/n8n:/home/node/.n8n - command: /bin/sh -c "sleep 5; n8n start" - environment: - - DB-TYPE=postgresdb - - DB_POSTGRESDB_DATABASE=n8n - - DB_POSTGRESDB_HOST=db-n8n - - DB_POSTGRESDB_PORT=5432 - - DB_POSTGRESDB_USER=tipi - - DB_POSTGRESDB_PASSWORD=tipi - - N8N_EDITOR_BASE_URL=${APP_DOMAIN} - depends_on: - - db-n8n - networks: - - tipi_main_network - labels: - # Main - traefik.enable: true - traefik.http.middlewares.n8n-web-redirect.redirectscheme.scheme: https - traefik.http.services.n8n.loadbalancer.server.port: 5678 - # Web - traefik.http.routers.n8n-insecure.rule: Host(`${APP_DOMAIN}`) - traefik.http.routers.n8n-insecure.entrypoints: web - traefik.http.routers.n8n-insecure.service: n8n - traefik.http.routers.n8n-insecure.middlewares: n8n-web-redirect - # Websecure - traefik.http.routers.n8n.rule: Host(`${APP_DOMAIN}`) - traefik.http.routers.n8n.entrypoints: websecure - traefik.http.routers.n8n.service: n8n - traefik.http.routers.n8n.tls.certresolver: myresolver - # Local domain - traefik.http.routers.n8n-local-insecure.rule: Host(`n8n.${LOCAL_DOMAIN}`) - traefik.http.routers.n8n-local-insecure.entrypoints: web - traefik.http.routers.n8n-local-insecure.service: n8n - traefik.http.routers.n8n-local-insecure.middlewares: n8n-web-redirect - # Local domain secure - traefik.http.routers.n8n-local.rule: Host(`n8n.${LOCAL_DOMAIN}`) - traefik.http.routers.n8n-local.entrypoints: websecure - traefik.http.routers.n8n-local.service: n8n - traefik.http.routers.n8n-local.tls: true client: tty: true stdin_open: true - image: tooljet/tooljet-client-ce:latest + image: tooljet/tooljet-client-ce:v2.4.2 restart: always + ports: + - ${APP_PORT}:80 depends_on: - server networks: @@ -85,15 +41,39 @@ services: command: openresty -g "daemon off;" server: - image: tooljet/tooljet-server-ce:latest + image: tooljet/tooljet-server-ce:v2.14.0 tty: true stdin_open: true restart: always networks: - tipi_main_network - # env_file: .env environment: - SERVE_CLIENT: "false" + - SERVE_CLIENT=false + - TOOLJET_HOST=https://${APP_DOMAIN} + - LOCKBOX_MASTER_KEY=70726290922441785304399601987729268981756953900892 + - SECRET_KEY_BASE=mqrBZqJvzUJ2GsHQaktZjKdb2cvdM8 + - ORM_LOGGING + - PG_DB=tooljet + - PG_USER=tooljet + - PG_HOST=postgres_tooljet + - PG_PASS=${DB_PASSWORD} + - CHECK_FOR_UPDATES=check_if_updates_are_available + - GOOGLE_CLIENT_ID + - GOOGLE_CLIENT_SECRET + - DEFAULT_FROM_EMAIL=hello@tooljet.io + - SMTP_USERNAME + - SMTP_PASSWORD + - SMTP_DOMAIN + - SMTP_PORT + - DISABLE_SIGNUPS + - APM_VENDOR + - SENTRY_DNS + - SENTRY_DEBUG + - SSO_DISABLE_SIGNUP + - SSO_RESTRICTED_DOMAIN + - SSO_GOOGLE_OAUTH2_CLIENT_ID + - SSO_GIT_OAUTH2_CLIENT_ID + - SSO_GIT_OAUTH2_CLIENT_SECRET command: npm run start:prod db-n8n: @@ -103,10 +83,9 @@ services: volumes: - ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data environment: - - POSTGRES_USER=tipi - - POSTGRES_PASSWORD=${PG_PASS} + - POSTGRES_USER=tooljet + - POSTGRES_PASSWORD=${DB_PASSWORD} - POSTGRES_DB=tooljet - # - POSTGRES_HOST=${PG_HOST} - PGDATA=/data/postgres networks: - tipi_main_network diff --git a/apps/tooljet/metadata/description.md b/apps/tooljet/metadata/description.md index a3fccf73..3d7d773b 100644 --- a/apps/tooljet/metadata/description.md +++ b/apps/tooljet/metadata/description.md @@ -1,10 +1,26 @@ ## Installation Notes ## -To enable OAUTH integrations you will need to enable the "expose app" option and configure a URL in Tipi. This setting can be changed at a later date if an integration is identified that needs it. +You will need to enable the "expose app" option and configure a URL in Tipi to use Tooljet. This setting can be changed at a later date if an integration is identified that needs it. -## Easily automate tasks across different services. +## Easily build internal tools. -n8n is an extendable workflow automation tool. With a fair-code distribution model, n8n will always have visible source code, be available to self-host, and allow you to add your own custom functions, logic and apps. n8n's node-based approach makes it highly -versatile, enabling you to connect anything to everything. +Visual app builder: 40+ built-in responsive widgets such as Tables, Charts, Lists, Forms, Progressbars, and more. +ToolJet Database: In-built no-code database. +Multi-Page: Build an application with as many pages as you want. +Multiplayer editing: multiple users can use the app builder at the same time. +40+ data sources: connect to external databases, cloud storages and APIs. +Desktop & mobile: layout widths can be customised to support different screens. +Self-host: (supports Docker, Kubernetes, Heroku, AWS EC2, Google Cloud Run, and more). +Collaborate: add comments anywhere on the canvas and tag your team members. +Extend with plugins: use our commandline tool to easily bootstrap new connectors. +Version control: every application have different versions with proper release cycle. +Run JS & Python code: ability custom JavaScript & Python snippets +Granular access control on group-level and app-level. +Low-code: write JS code almost anywhere in the builder. For example, the color property of text can be set to status === 'success' ? 'green' : 'red' +No-code query editors: for all supported data sources. +Join and transform data: transform query results using just JavaScript/Python code. +Secure: All the credentials are securely encrypted using aes-256-gcm. +Doesn't store data: ToolJet acts only as a proxy and doesn't store any data. +SSO: Supports multiple SSO providers -![Screenshot](https://raw.githubusercontent.com/n8n-io/n8n/master/assets/n8n-screenshot.png) +![Screenshot](https://user-images.githubusercontent.com/7828962/211444352-4d6d2e4a-13c9-4980-9e16-4aed4af9811b.png) diff --git a/apps/tooljet/metadata/logo.jpg b/apps/tooljet/metadata/logo.jpg index 5e53b7837d2795a141461cb84fb5d80b2848c2e5..cdfd64ea504e4aa51a0bedcdd8f99346a1d4faa6 100644 GIT binary patch literal 70148 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 From 20eb8845543fd23627744f21df38f9a4094b0534 Mon Sep 17 00:00:00 2001 From: Jazys Date: Mon, 28 Aug 2023 22:23:56 +0200 Subject: [PATCH 03/28] update docker-compose to set container name --- apps/tooljet/docker-compose.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/apps/tooljet/docker-compose.yml b/apps/tooljet/docker-compose.yml index 55799d61..b497c239 100644 --- a/apps/tooljet/docker-compose.yml +++ b/apps/tooljet/docker-compose.yml @@ -2,15 +2,16 @@ version: "3.7" services: - client: + tooljet-client: tty: true stdin_open: true image: tooljet/tooljet-client-ce:v2.4.2 + container_name: tooljet-client restart: always ports: - ${APP_PORT}:80 depends_on: - - server + - tooljet-server networks: - tipi_main_network labels: @@ -40,8 +41,9 @@ services: traefik.http.routers.tooljet-local.tls: true command: openresty -g "daemon off;" - server: + tooljet-server: image: tooljet/tooljet-server-ce:v2.14.0 + container_name: tooljet-server tty: true stdin_open: true restart: always @@ -76,7 +78,7 @@ services: - SSO_GIT_OAUTH2_CLIENT_SECRET command: npm run start:prod - db-n8n: + db-tooljet: container_name: postgres_tooljet image: postgres:11 restart: on-failure From 262748206d754b781499d4ae8cc79d3a92ce724c Mon Sep 17 00:00:00 2001 From: Jazys Date: Mon, 28 Aug 2023 22:29:49 +0200 Subject: [PATCH 04/28] update docker-compose to set container name --- apps/tooljet/docker-compose.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/tooljet/docker-compose.yml b/apps/tooljet/docker-compose.yml index b497c239..0fcf2172 100644 --- a/apps/tooljet/docker-compose.yml +++ b/apps/tooljet/docker-compose.yml @@ -3,10 +3,10 @@ version: "3.7" services: tooljet-client: + container_name: tooljet-client tty: true stdin_open: true - image: tooljet/tooljet-client-ce:v2.4.2 - container_name: tooljet-client + image: tooljet/tooljet-client-ce:v2.4.2 restart: always ports: - ${APP_PORT}:80 @@ -42,8 +42,8 @@ services: command: openresty -g "daemon off;" tooljet-server: - image: tooljet/tooljet-server-ce:v2.14.0 container_name: tooljet-server + image: tooljet/tooljet-server-ce:v2.14.0 tty: true stdin_open: true restart: always From 842246a2fb0a52819d4fe75b14d768435905564c Mon Sep 17 00:00:00 2001 From: Jazys Date: Mon, 28 Aug 2023 22:41:08 +0200 Subject: [PATCH 05/28] revert service name --- apps/tooljet/docker-compose.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/tooljet/docker-compose.yml b/apps/tooljet/docker-compose.yml index 0fcf2172..4e90ac7b 100644 --- a/apps/tooljet/docker-compose.yml +++ b/apps/tooljet/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: - tooljet-client: + client: container_name: tooljet-client tty: true stdin_open: true @@ -11,7 +11,7 @@ services: ports: - ${APP_PORT}:80 depends_on: - - tooljet-server + - server networks: - tipi_main_network labels: @@ -41,7 +41,7 @@ services: traefik.http.routers.tooljet-local.tls: true command: openresty -g "daemon off;" - tooljet-server: + server: container_name: tooljet-server image: tooljet/tooljet-server-ce:v2.14.0 tty: true From cdd3bb15b30076f523f375b917457a1e7086edc0 Mon Sep 17 00:00:00 2001 From: Jazys Date: Tue, 29 Aug 2023 22:04:58 +0200 Subject: [PATCH 06/28] change name service and version --- apps/tooljet/config.json | 6 +++--- apps/tooljet/docker-compose.yml | 14 +++++++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/tooljet/config.json b/apps/tooljet/config.json index da7e1763..ce0d790f 100644 --- a/apps/tooljet/config.json +++ b/apps/tooljet/config.json @@ -1,12 +1,12 @@ { "$schema": "../schema.json", - "name": "tooljet", + "name": "Tooljet", "available": true, "exposable": true, "port": 9876, - "id": "tooljet", + "id": "client-tooljet", "tipi_version": 23, - "version": "2.14.0", + "version": "v2.14.0", "categories": [ "automation" ], diff --git a/apps/tooljet/docker-compose.yml b/apps/tooljet/docker-compose.yml index 4e90ac7b..99a255cd 100644 --- a/apps/tooljet/docker-compose.yml +++ b/apps/tooljet/docker-compose.yml @@ -2,8 +2,8 @@ version: "3.7" services: - client: - container_name: tooljet-client + client-tooljet: + container_name: client-tooljet tty: true stdin_open: true image: tooljet/tooljet-client-ce:v2.4.2 @@ -11,7 +11,7 @@ services: ports: - ${APP_PORT}:80 depends_on: - - server + - server-tooljet networks: - tipi_main_network labels: @@ -41,8 +41,8 @@ services: traefik.http.routers.tooljet-local.tls: true command: openresty -g "daemon off;" - server: - container_name: tooljet-server + server-tooljet: + container_name: server-tooljet image: tooljet/tooljet-server-ce:v2.14.0 tty: true stdin_open: true @@ -57,7 +57,7 @@ services: - ORM_LOGGING - PG_DB=tooljet - PG_USER=tooljet - - PG_HOST=postgres_tooljet + - PG_HOST=db-tooljet - PG_PASS=${DB_PASSWORD} - CHECK_FOR_UPDATES=check_if_updates_are_available - GOOGLE_CLIENT_ID @@ -79,7 +79,7 @@ services: command: npm run start:prod db-tooljet: - container_name: postgres_tooljet + container_name: db-tooljet image: postgres:11 restart: on-failure volumes: From 25bf8ff678c5f11f3fe1ffb56e4f785e5148190a Mon Sep 17 00:00:00 2001 From: Jazys Date: Tue, 29 Aug 2023 22:27:24 +0200 Subject: [PATCH 07/28] More tests --- apps/tooljet/config.json | 4 ++-- apps/tooljet/docker-compose.yml | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/apps/tooljet/config.json b/apps/tooljet/config.json index ce0d790f..3cae5898 100644 --- a/apps/tooljet/config.json +++ b/apps/tooljet/config.json @@ -4,9 +4,9 @@ "available": true, "exposable": true, "port": 9876, - "id": "client-tooljet", + "id": "tooljet", "tipi_version": 23, - "version": "v2.14.0", + "version": "2.14.0", "categories": [ "automation" ], diff --git a/apps/tooljet/docker-compose.yml b/apps/tooljet/docker-compose.yml index 99a255cd..2ae33a4b 100644 --- a/apps/tooljet/docker-compose.yml +++ b/apps/tooljet/docker-compose.yml @@ -2,8 +2,8 @@ version: "3.7" services: - client-tooljet: - container_name: client-tooljet + tooljet: + container_name: tooljet tty: true stdin_open: true image: tooljet/tooljet-client-ce:v2.4.2 @@ -11,7 +11,7 @@ services: ports: - ${APP_PORT}:80 depends_on: - - server-tooljet + - server networks: - tipi_main_network labels: @@ -41,8 +41,8 @@ services: traefik.http.routers.tooljet-local.tls: true command: openresty -g "daemon off;" - server-tooljet: - container_name: server-tooljet + server: + container_name: tooljet-server image: tooljet/tooljet-server-ce:v2.14.0 tty: true stdin_open: true @@ -57,7 +57,7 @@ services: - ORM_LOGGING - PG_DB=tooljet - PG_USER=tooljet - - PG_HOST=db-tooljet + - PG_HOST=postgres_tooljet - PG_PASS=${DB_PASSWORD} - CHECK_FOR_UPDATES=check_if_updates_are_available - GOOGLE_CLIENT_ID @@ -79,7 +79,7 @@ services: command: npm run start:prod db-tooljet: - container_name: db-tooljet + container_name: postgres_tooljet image: postgres:11 restart: on-failure volumes: From c8a6a53b2354772d23f1cd13afdc623cd805a31f Mon Sep 17 00:00:00 2001 From: Jazys Date: Tue, 29 Aug 2023 23:37:54 +0200 Subject: [PATCH 08/28] rename container db and db host --- apps/tooljet/docker-compose.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/tooljet/docker-compose.yml b/apps/tooljet/docker-compose.yml index 2ae33a4b..a212dbaf 100644 --- a/apps/tooljet/docker-compose.yml +++ b/apps/tooljet/docker-compose.yml @@ -57,7 +57,7 @@ services: - ORM_LOGGING - PG_DB=tooljet - PG_USER=tooljet - - PG_HOST=postgres_tooljet + - PG_HOST=db-tooljet - PG_PASS=${DB_PASSWORD} - CHECK_FOR_UPDATES=check_if_updates_are_available - GOOGLE_CLIENT_ID @@ -79,7 +79,7 @@ services: command: npm run start:prod db-tooljet: - container_name: postgres_tooljet + container_name: db-tooljet image: postgres:11 restart: on-failure volumes: From 3c6bfcaa9fae1a1b8a6ca4f5b5b0bb6176fcf7ed Mon Sep 17 00:00:00 2001 From: Jazys Date: Tue, 29 Aug 2023 23:41:09 +0200 Subject: [PATCH 09/28] change version in config.json --- apps/tooljet/config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/tooljet/config.json b/apps/tooljet/config.json index 3cae5898..d696bd84 100644 --- a/apps/tooljet/config.json +++ b/apps/tooljet/config.json @@ -6,7 +6,7 @@ "port": 9876, "id": "tooljet", "tipi_version": 23, - "version": "2.14.0", + "version": "v2.4.2", "categories": [ "automation" ], From b8623f9bdc5867b6c4cfe7c06cba676ee9888dac Mon Sep 17 00:00:00 2001 From: Jazys Date: Wed, 30 Aug 2023 23:00:01 +0200 Subject: [PATCH 10/28] change service name server and add var env to set host server --- apps/tooljet/docker-compose.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/tooljet/docker-compose.yml b/apps/tooljet/docker-compose.yml index a212dbaf..0235fc85 100644 --- a/apps/tooljet/docker-compose.yml +++ b/apps/tooljet/docker-compose.yml @@ -14,6 +14,8 @@ services: - server networks: - tipi_main_network + environment: + - SERVER_HOST=tooljet-server labels: # Main traefik.enable: true @@ -41,7 +43,7 @@ services: traefik.http.routers.tooljet-local.tls: true command: openresty -g "daemon off;" - server: + tooljet-server: container_name: tooljet-server image: tooljet/tooljet-server-ce:v2.14.0 tty: true @@ -51,6 +53,7 @@ services: - tipi_main_network environment: - SERVE_CLIENT=false + - SERVER_HOST=tooljet-server - TOOLJET_HOST=https://${APP_DOMAIN} - LOCKBOX_MASTER_KEY=70726290922441785304399601987729268981756953900892 - SECRET_KEY_BASE=mqrBZqJvzUJ2GsHQaktZjKdb2cvdM8 From db030bd6dfacce7ec2bcbc900773e0c722466f52 Mon Sep 17 00:00:00 2001 From: Jazys Date: Wed, 30 Aug 2023 23:02:27 +0200 Subject: [PATCH 11/28] change service name server and add var env to set host server --- apps/tooljet/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/tooljet/docker-compose.yml b/apps/tooljet/docker-compose.yml index 0235fc85..48175c39 100644 --- a/apps/tooljet/docker-compose.yml +++ b/apps/tooljet/docker-compose.yml @@ -11,7 +11,7 @@ services: ports: - ${APP_PORT}:80 depends_on: - - server + - tooljet-server networks: - tipi_main_network environment: From fc86d1178f96a93a042b92476554701bb045b2ae Mon Sep 17 00:00:00 2001 From: Jazys Date: Thu, 31 Aug 2023 22:01:47 +0200 Subject: [PATCH 12/28] generate random secret key --- apps/tooljet/config.json | 14 ++++++++++++++ apps/tooljet/docker-compose.yml | 4 ++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/apps/tooljet/config.json b/apps/tooljet/config.json index d696bd84..a6c5d046 100644 --- a/apps/tooljet/config.json +++ b/apps/tooljet/config.json @@ -22,6 +22,20 @@ "min": 30, "max": 30, "env_variable": "DB_PASSWORD" + }, + { + "type": "random", + "label": "Secret key base", + "min": 32, + "max": 32, + "env_variable": "SECRET_KEY_BASE" + }, + { + "type": "random", + "label": "Lock master key", + "min": 64, + "max": 64, + "env_variable": "LOCKBOX_MASTER_KEY" } ] } diff --git a/apps/tooljet/docker-compose.yml b/apps/tooljet/docker-compose.yml index 48175c39..bc330a7a 100644 --- a/apps/tooljet/docker-compose.yml +++ b/apps/tooljet/docker-compose.yml @@ -55,8 +55,8 @@ services: - SERVE_CLIENT=false - SERVER_HOST=tooljet-server - TOOLJET_HOST=https://${APP_DOMAIN} - - LOCKBOX_MASTER_KEY=70726290922441785304399601987729268981756953900892 - - SECRET_KEY_BASE=mqrBZqJvzUJ2GsHQaktZjKdb2cvdM8 + - LOCKBOX_MASTER_KEY=${LOCKBOX_MASTER_KEY} + - SECRET_KEY_BASE=${SECRET_KEY_BASE} - ORM_LOGGING - PG_DB=tooljet - PG_USER=tooljet From 57a6edcf238428ccd68bb541a6960ea7a5174c54 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 31 Aug 2023 21:11:04 +0000 Subject: [PATCH 13/28] chore(deps): update grafana/grafana-oss docker tag to v10.1.1 (#1119) --- apps/grafana/config.json | 4 ++-- apps/grafana/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/grafana/config.json b/apps/grafana/config.json index 92786fa8..28b29df0 100644 --- a/apps/grafana/config.json +++ b/apps/grafana/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "grafana", - "tipi_version": 13, - "version": "10.1.0", + "tipi_version": 14, + "version": "10.1.1", "categories": [ "data" ], diff --git a/apps/grafana/docker-compose.yml b/apps/grafana/docker-compose.yml index 608d3ed6..9ccb56ff 100644 --- a/apps/grafana/docker-compose.yml +++ b/apps/grafana/docker-compose.yml @@ -3,7 +3,7 @@ version: "3" services: grafana: container_name: grafana - image: grafana/grafana-oss:10.1.0 + image: grafana/grafana-oss:10.1.1 ports: - ${APP_PORT}:3000 volumes: From 1204040793e1e4f3277ba3b961c236d4380fd1bd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 1 Sep 2023 00:30:42 +0000 Subject: [PATCH 14/28] chore(deps): update vaultwarden/server docker tag to v1.29.2 (#1120) --- apps/vaultwarden/config.json | 4 ++-- apps/vaultwarden/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/vaultwarden/config.json b/apps/vaultwarden/config.json index dfbcbab1..316b8480 100644 --- a/apps/vaultwarden/config.json +++ b/apps/vaultwarden/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 8107, "id": "vaultwarden", - "tipi_version": 8, - "version": "1.29.1", + "tipi_version": 9, + "version": "1.29.2", "categories": [ "utilities" ], diff --git a/apps/vaultwarden/docker-compose.yml b/apps/vaultwarden/docker-compose.yml index 1590a731..d157ad5e 100644 --- a/apps/vaultwarden/docker-compose.yml +++ b/apps/vaultwarden/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.7' services: vaultwarden: - image: vaultwarden/server:1.29.1 + image: vaultwarden/server:1.29.2 container_name: vaultwarden restart: unless-stopped ports: From 79269ee207267cf8a41705f9526074af2a3de0f7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 1 Sep 2023 04:39:06 +0000 Subject: [PATCH 15/28] chore(deps): update halohub/halo docker tag to v2.9.0 (#1121) --- apps/halo/config.json | 4 ++-- apps/halo/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/halo/config.json b/apps/halo/config.json index 0fe4d5b8..001521ce 100644 --- a/apps/halo/config.json +++ b/apps/halo/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 8092, "id": "halo", - "tipi_version": 6, - "version": "2.8.0", + "tipi_version": 7, + "version": "2.9.0", "description": "Halo is a powerful and easy-to-use open source website building tool.", "short_desc": "Halo - Open source website building tool.", "categories": [ diff --git a/apps/halo/docker-compose.yml b/apps/halo/docker-compose.yml index a6206db5..441b0dd5 100644 --- a/apps/halo/docker-compose.yml +++ b/apps/halo/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: halo: - image: halohub/halo:2.8.0 + image: halohub/halo:2.9.0 container_name: halo restart: unless-stopped depends_on: From 801cd4e4cc35c20d00bf9331366d9c60cd9a8573 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 1 Sep 2023 13:06:42 +0000 Subject: [PATCH 16/28] chore(deps): update nocodb/nocodb docker tag to v0.111.1 (#1122) --- apps/nocodb/config.json | 4 ++-- apps/nocodb/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/nocodb/config.json b/apps/nocodb/config.json index 26b7d403..1b1f8b62 100644 --- a/apps/nocodb/config.json +++ b/apps/nocodb/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "nocodb", - "tipi_version": 19, - "version": "0.111.0", + "tipi_version": 20, + "version": "0.111.1", "categories": [ "utilities" ], diff --git a/apps/nocodb/docker-compose.yml b/apps/nocodb/docker-compose.yml index 8b0707c3..69192a99 100644 --- a/apps/nocodb/docker-compose.yml +++ b/apps/nocodb/docker-compose.yml @@ -11,7 +11,7 @@ services: - NC_PUBLIC_URL=${APP_PROTOCOL:-http}://${APP_DOMAIN} - NC_AUTH_JWT_SECRET=${NOCODB_JWT_SECRET} - NC_REDIS_URL=redis://default:${NOCODB_REDIS_PASSWORD}@nocodb-redis:6379 - image: "nocodb/nocodb:0.111.0" + image: "nocodb/nocodb:0.111.1" ports: - "${APP_PORT}:8080" restart: always From 78190c87919aa7fc1b927865604665902f5d1857 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 1 Sep 2023 22:12:06 +0000 Subject: [PATCH 17/28] chore(deps): update lscr.io/linuxserver/qbittorrent docker tag to v4.5.5 (#1123) --- apps/qbittorrent/config.json | 4 ++-- apps/qbittorrent/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/qbittorrent/config.json b/apps/qbittorrent/config.json index 8034c356..c24ab79c 100644 --- a/apps/qbittorrent/config.json +++ b/apps/qbittorrent/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 8133, "id": "qbittorrent", - "tipi_version": 7, - "version": "4.5.4", + "tipi_version": 8, + "version": "4.5.5", "categories": [ "utilities" ], diff --git a/apps/qbittorrent/docker-compose.yml b/apps/qbittorrent/docker-compose.yml index 901f13ee..6f67b001 100644 --- a/apps/qbittorrent/docker-compose.yml +++ b/apps/qbittorrent/docker-compose.yml @@ -1,7 +1,7 @@ version: "3.7" services: qbittorrent: - image: lscr.io/linuxserver/qbittorrent:4.5.4 + image: lscr.io/linuxserver/qbittorrent:4.5.5 container_name: qbittorrent dns: - ${DNS_IP} From ae95570f98f6bc2f21e57d4b1352fa6d63e4fd2b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 2 Sep 2023 10:53:23 +0000 Subject: [PATCH 18/28] chore(deps): update reallibrephotos/librephotos-frontend docker tag to v2023w35 (#1125) --- apps/librephotos/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/librephotos/docker-compose.yml b/apps/librephotos/docker-compose.yml index daba7f9d..0be2d096 100644 --- a/apps/librephotos/docker-compose.yml +++ b/apps/librephotos/docker-compose.yml @@ -61,7 +61,7 @@ services: - tipi_main_network librephotos-frontend: - image: reallibrephotos/librephotos-frontend:2023w31 + image: reallibrephotos/librephotos-frontend:2023w35 container_name: librephotos-frontend restart: unless-stopped depends_on: From feef286f4261308875aaf5867de4c09c2738e58b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 2 Sep 2023 10:53:26 +0000 Subject: [PATCH 19/28] chore(deps): update reallibrephotos/librephotos docker tag to v2023w35 (#1124) --- apps/librephotos/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/librephotos/docker-compose.yml b/apps/librephotos/docker-compose.yml index 0be2d096..99c7f08e 100644 --- a/apps/librephotos/docker-compose.yml +++ b/apps/librephotos/docker-compose.yml @@ -70,7 +70,7 @@ services: - tipi_main_network librephotos-backend: - image: reallibrephotos/librephotos:2023w31 + image: reallibrephotos/librephotos:2023w35 container_name: librephotos-backend restart: unless-stopped volumes: From 62fe0725202e39694d66e6d109ef5a3f2949c8e2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 2 Sep 2023 12:40:05 +0000 Subject: [PATCH 20/28] chore(deps): update reallibrephotos/librephotos-proxy docker tag to v2023w35 (#1126) --- apps/librephotos/config.json | 4 ++-- apps/librephotos/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/librephotos/config.json b/apps/librephotos/config.json index 34a7de9c..011a9924 100644 --- a/apps/librephotos/config.json +++ b/apps/librephotos/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "librephotos", - "tipi_version": 10, - "version": "2023w31", + "tipi_version": 11, + "version": "2023w35", "supported_architectures": [ "amd64", "arm64" diff --git a/apps/librephotos/docker-compose.yml b/apps/librephotos/docker-compose.yml index 99c7f08e..356fecc8 100644 --- a/apps/librephotos/docker-compose.yml +++ b/apps/librephotos/docker-compose.yml @@ -1,7 +1,7 @@ version: "3.7" services: librephotos: - image: reallibrephotos/librephotos-proxy:2023w31 + image: reallibrephotos/librephotos-proxy:2023w35 container_name: librephotos restart: unless-stopped volumes: From 36b40b85ce7312c52e63840362d31fc4bc9d703d Mon Sep 17 00:00:00 2001 From: DrMxrcy <58747968+DrMxrcy@users.noreply.github.com> Date: Sat, 2 Sep 2023 14:33:41 -0400 Subject: [PATCH 21/28] Update Lodestone to use new path. (#1127) --- apps/lodestone-core/config.json | 2 +- apps/lodestone-core/docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/lodestone-core/config.json b/apps/lodestone-core/config.json index 60385d9c..cc9509dc 100644 --- a/apps/lodestone-core/config.json +++ b/apps/lodestone-core/config.json @@ -6,7 +6,7 @@ "no_gui": true, "port": 16662, "id": "lodestone-core", - "tipi_version": 3, + "tipi_version": 4, "version": "0.4.4", "categories": ["gaming"], "description": "A free, open source server hosting tool for Minecraft and other multiplayers", diff --git a/apps/lodestone-core/docker-compose.yml b/apps/lodestone-core/docker-compose.yml index 92cc39f5..c3c7dada 100644 --- a/apps/lodestone-core/docker-compose.yml +++ b/apps/lodestone-core/docker-compose.yml @@ -9,7 +9,7 @@ services: - 25565-25575:25565-25575 restart: unless-stopped volumes: - - ${APP_DATA_DIR}/data/lodestone-data:/root/.lodestone + - ${APP_DATA_DIR}/data/lodestone-data:/home/user/.lodestone networks: - tipi_main_network labels: From 36227c35c05c1ece97484b61d2b5651648ae78ac Mon Sep 17 00:00:00 2001 From: DrMxrcy <58747968+DrMxrcy@users.noreply.github.com> Date: Sun, 3 Sep 2023 00:08:33 -0400 Subject: [PATCH 22/28] Update Lodestone to use new UID/GID Perms (#1128) --- apps/lodestone-core/config.json | 2 +- apps/lodestone-core/docker-compose.yml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/lodestone-core/config.json b/apps/lodestone-core/config.json index cc9509dc..34c12aaa 100644 --- a/apps/lodestone-core/config.json +++ b/apps/lodestone-core/config.json @@ -6,7 +6,7 @@ "no_gui": true, "port": 16662, "id": "lodestone-core", - "tipi_version": 4, + "tipi_version": 5, "version": "0.4.4", "categories": ["gaming"], "description": "A free, open source server hosting tool for Minecraft and other multiplayers", diff --git a/apps/lodestone-core/docker-compose.yml b/apps/lodestone-core/docker-compose.yml index c3c7dada..d09571a4 100644 --- a/apps/lodestone-core/docker-compose.yml +++ b/apps/lodestone-core/docker-compose.yml @@ -7,6 +7,9 @@ services: ports: - ${APP_PORT}:16662 - 25565-25575:25565-25575 + user: ${TIPI_UID}:${TIPI_GID} + group_add: + - ${TIPI_GID} restart: unless-stopped volumes: - ${APP_DATA_DIR}/data/lodestone-data:/home/user/.lodestone From 401386f0f79ead83c56f317761a884d634641dc3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 3 Sep 2023 11:36:58 +0000 Subject: [PATCH 23/28] chore(deps): update ghostfolio/ghostfolio docker tag to v1.305.0 (#1129) --- apps/ghostfolio/config.json | 4 ++-- apps/ghostfolio/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/ghostfolio/config.json b/apps/ghostfolio/config.json index 5f2364b2..e6e40c7c 100644 --- a/apps/ghostfolio/config.json +++ b/apps/ghostfolio/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "ghostfolio", - "tipi_version": 6, - "version": "1.304.0", + "tipi_version": 7, + "version": "1.305.0", "categories": [ "finance" ], diff --git a/apps/ghostfolio/docker-compose.yml b/apps/ghostfolio/docker-compose.yml index d361ed43..0f75e12a 100644 --- a/apps/ghostfolio/docker-compose.yml +++ b/apps/ghostfolio/docker-compose.yml @@ -3,7 +3,7 @@ version: "3.9" services: ghostfolio: container_name: ghostfolio - image: ghostfolio/ghostfolio:1.304.0 + image: ghostfolio/ghostfolio:1.305.0 restart: unless-stopped ports: - ${APP_PORT}:3333 From cc338c10f6a0d657e2e5f9e901d0e0a7145873c2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 4 Sep 2023 13:09:12 +0200 Subject: [PATCH 24/28] chore(deps): update haugene/transmission-openvpn docker tag to v5.1.1 (#1132) --- apps/transmission-vpn/config.json | 4 ++-- apps/transmission-vpn/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/transmission-vpn/config.json b/apps/transmission-vpn/config.json index 22efa3c0..8af5ffe5 100644 --- a/apps/transmission-vpn/config.json +++ b/apps/transmission-vpn/config.json @@ -10,8 +10,8 @@ ] }, "id": "transmission-vpn", - "tipi_version": 2, - "version": "5.1.0", + "tipi_version": 3, + "version": "5.1.1@sha256:c5a66e4c9df0b326310b81cfcd7fa1c0cd61ebeaf60b4651188c94b8afde3aca", "categories": [ "utilities", "security" diff --git a/apps/transmission-vpn/docker-compose.yml b/apps/transmission-vpn/docker-compose.yml index 03bfd6e8..e438f9b8 100644 --- a/apps/transmission-vpn/docker-compose.yml +++ b/apps/transmission-vpn/docker-compose.yml @@ -1,6 +1,6 @@ services: transmission-vpn: - image: haugene/transmission-openvpn:5.1.0 + image: haugene/transmission-openvpn:5.1.1@sha256:c5a66e4c9df0b326310b81cfcd7fa1c0cd61ebeaf60b4651188c94b8afde3aca container_name: transmission-vpn cap_add: - NET_ADMIN From 66338fa791799c72fc5e896a11daa2b1624ac38d Mon Sep 17 00:00:00 2001 From: Stavros Iliopoulos Date: Mon, 4 Sep 2023 20:51:50 +0300 Subject: [PATCH 25/28] Add unmanic and fix transmission-vpn. (#1133) --- apps/transmission-vpn/config.json | 2 +- apps/transmission-vpn/docker-compose.yml | 2 +- apps/unmanic/config.json | 21 +++++++++++ apps/unmanic/docker-compose.yml | 43 +++++++++++++++++++++++ apps/unmanic/metadata/description.md | 30 ++++++++++++++++ apps/unmanic/metadata/logo.jpg | Bin 0 -> 21984 bytes 6 files changed, 96 insertions(+), 2 deletions(-) create mode 100644 apps/unmanic/config.json create mode 100644 apps/unmanic/docker-compose.yml create mode 100644 apps/unmanic/metadata/description.md create mode 100644 apps/unmanic/metadata/logo.jpg diff --git a/apps/transmission-vpn/config.json b/apps/transmission-vpn/config.json index 8af5ffe5..a9532f72 100644 --- a/apps/transmission-vpn/config.json +++ b/apps/transmission-vpn/config.json @@ -11,7 +11,7 @@ }, "id": "transmission-vpn", "tipi_version": 3, - "version": "5.1.1@sha256:c5a66e4c9df0b326310b81cfcd7fa1c0cd61ebeaf60b4651188c94b8afde3aca", + "version": "5.1.1", "categories": [ "utilities", "security" diff --git a/apps/transmission-vpn/docker-compose.yml b/apps/transmission-vpn/docker-compose.yml index e438f9b8..b7c38ae4 100644 --- a/apps/transmission-vpn/docker-compose.yml +++ b/apps/transmission-vpn/docker-compose.yml @@ -1,6 +1,6 @@ services: transmission-vpn: - image: haugene/transmission-openvpn:5.1.1@sha256:c5a66e4c9df0b326310b81cfcd7fa1c0cd61ebeaf60b4651188c94b8afde3aca + image: haugene/transmission-openvpn:5.1.1 container_name: transmission-vpn cap_add: - NET_ADMIN diff --git a/apps/unmanic/config.json b/apps/unmanic/config.json new file mode 100644 index 00000000..c214d555 --- /dev/null +++ b/apps/unmanic/config.json @@ -0,0 +1,21 @@ +{ + "$schema": "../schema.json", + "name": "Unmanic", + "port": 8256, + "available": true, + "exposable": true, + "id": "unmanic", + "tipi_version": 1, + "version": "0.2.4", + "categories": [ + "utilities", + "data", + "media" + ], + "description": "Unmanic gives you the power to automate the management of any file library.", + "short_desc": "Unmanic - Library Optimiser.", + "author": "Unmanic", + "source": "https://github.com/Unmanic/unmanic", + "website": "https://docs.unmanic.app/", + "form_fields": [] +} diff --git a/apps/unmanic/docker-compose.yml b/apps/unmanic/docker-compose.yml new file mode 100644 index 00000000..a4abb4dc --- /dev/null +++ b/apps/unmanic/docker-compose.yml @@ -0,0 +1,43 @@ +version: "3.5" +services: + unmanic: + image: josh5/unmanic:0.2.4 + restart: unless-stopped + container_name: unmanic + privileged: true + ports: + - ${APP_PORT}:8888 + networks: + - tipi_main_network + environment: + - PUID=${TIPI_UID} + - PGID=${TIPI_GID} + volumes: + - ${APP_DATA_DIR}/data/config:/config + - ${ROOT_FOLDER_HOST}/data:/library + - ${APP_DATA_DIR}/data/temp:/tmp/unmanic + labels: + # Main + traefik.enable: true + traefik.http.middlewares.unmanic-web-redirect.redirectscheme.scheme: https + traefik.http.services.unmanic.loadbalancer.server.port: 8888 + # Web + traefik.http.routers.unmanic-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.unmanic-insecure.entrypoints: web + traefik.http.routers.unmanic-insecure.service: unmanic + traefik.http.routers.unmanic-insecure.middlewares: unmanic-web-redirect + # Websecure + traefik.http.routers.unmanic.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.unmanic.entrypoints: websecure + traefik.http.routers.unmanic.service: unmanic + traefik.http.routers.unmanic.tls.certresolver: myresolver + # Local domain + traefik.http.routers.unmanic-local-insecure.rule: Host(`unmanic.${LOCAL_DOMAIN}`) + traefik.http.routers.unmanic-local-insecure.entrypoints: web + traefik.http.routers.unmanic-local-insecure.service: unmanic + traefik.http.routers.unmanic-local-insecure.middlewares: unmanic-web-redirect + # Local domain secure + traefik.http.routers.unmanic-local.rule: Host(`unmanic.${LOCAL_DOMAIN}`) + traefik.http.routers.unmanic-local.entrypoints: websecure + traefik.http.routers.unmanic-local.service: unmanic + traefik.http.routers.unmanic-local.tls: true diff --git a/apps/unmanic/metadata/description.md b/apps/unmanic/metadata/description.md new file mode 100644 index 00000000..2127f155 --- /dev/null +++ b/apps/unmanic/metadata/description.md @@ -0,0 +1,30 @@ +Unmanic - Library Optimiser +=========================== + +![UNMANIC - Library Optimiser](https://github.com/unmanic/unmanic/raw/master/logo.png) + +--- + +Unmanic is a simple tool for optimising your file library. You can use it to convert your files into a single, uniform format, manage file movements based on timestamps, or execute custom commands against a file based on its file size. + +Simply configure Unmanic pointing it at your library and let it automatically manage that library for you. + +Unmanic provides you with the following main functions: + +- A scheduler built in to scan your whole library for files that do not conform to your configured file presets. Files found requiring processing are then queued. +- A file/directory monitor. When a file is modified, or a new file is added in your library, Unmanic is able to again test that against your configured file presets. Like the first function, if this file requires processing, it is added to a queue for processing. +- A handler to manage running multiple file manipulation tasks at a time. +- A Web UI to easily configure, manage and monitor the progress of your library optimisation. + +You choose how you want your library to be. + +Some examples of how you may use Unmanic: + +- Trans-code video or audio files into a uniform format using FFmpeg. +- Identify (and remove if desired) commercials in DVR recordings shortly after they have completed being recorded. +- Move files from one location to another after a configured period of time. +- Automatically execute FileBot rename files in your library as they are added. +- Compress files older than a specified age. +- Run any custom command against files matching a certain extension or above a configured file size. + +The Docker container is currently based `linuxserver.io` Ubuntu focal image. \ No newline at end of file diff --git a/apps/unmanic/metadata/logo.jpg b/apps/unmanic/metadata/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f6d3f4b6bf904f76e600bc277e527667005556b8 GIT binary patch literal 21984 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 literal 0 HcmV?d00001 From 50bde7526fa3f7cceb1664edf2540ea6d604a9a6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 4 Sep 2023 18:35:40 +0000 Subject: [PATCH 26/28] chore(deps): update dullage/flatnotes docker tag to v3.2.3 (#1134) --- apps/flatnotes/config.json | 4 ++-- apps/flatnotes/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/flatnotes/config.json b/apps/flatnotes/config.json index d3ca13a3..49002907 100644 --- a/apps/flatnotes/config.json +++ b/apps/flatnotes/config.json @@ -5,8 +5,8 @@ "exposable": true, "id": "flatnotes", "port": 8137, - "tipi_version": 11, - "version": "3.2.2", + "tipi_version": 12, + "version": "3.2.3", "categories": [ "utilities" ], diff --git a/apps/flatnotes/docker-compose.yml b/apps/flatnotes/docker-compose.yml index 5d2fcdc8..8609c981 100644 --- a/apps/flatnotes/docker-compose.yml +++ b/apps/flatnotes/docker-compose.yml @@ -3,7 +3,7 @@ version: "3" services: flatnotes: container_name: flatnotes - image: dullage/flatnotes:v3.2.2 + image: dullage/flatnotes:v3.2.3 environment: FLATNOTES_AUTH_TYPE: ${FLATNOTES_AUTH_TYPE} FLATNOTES_USERNAME: ${FLATNOTES_USERNAME} From 434af4d6d95748ff00136754e5b64869a55ed8f2 Mon Sep 17 00:00:00 2001 From: Stavros Iliopoulos Date: Mon, 4 Sep 2023 21:40:35 +0300 Subject: [PATCH 27/28] Fix small mistake with unmanic. (#1136) * Update README.md * Update docker-compose.yml * Update config.json --- README.md | 1 + apps/unmanic/config.json | 2 +- apps/unmanic/docker-compose.yml | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7ad20717..c1a6c305 100644 --- a/README.md +++ b/README.md @@ -132,6 +132,7 @@ This is the official repository for the Tipi App Store. It contains all the apps - [Transmission](https://github.com/transmission/transmission) - Fast, easy, and free BitTorrent client - [Tube Archivist](https://github.com/tubearchivist/tubearchivist) - Your self-hosted YouTube media server - [Umami](https://github.com/umami-software/umami) - Umami is a simple, fast, privacy-focused alternative to Google Analytics. +- [Unmanic](https://github.com/Unmanic/unmanic) - Unmanic gives you the power to automate the management of any file library. - [Uptime Kuma](https://github.com/louislam/uptime-kuma) - A fancy self-hosted monitoring tool - [Vaultwarden](https://github.com/dani-garcia/vaultwarden) - Unofficial Bitwarden compatible server - [Vikunja](https://kolaente.dev/vikunja/) - The open-source, self-hostable to-do app. Organize everything, on all platforms. diff --git a/apps/unmanic/config.json b/apps/unmanic/config.json index c214d555..c7716f0c 100644 --- a/apps/unmanic/config.json +++ b/apps/unmanic/config.json @@ -5,7 +5,7 @@ "available": true, "exposable": true, "id": "unmanic", - "tipi_version": 1, + "tipi_version": 2, "version": "0.2.4", "categories": [ "utilities", diff --git a/apps/unmanic/docker-compose.yml b/apps/unmanic/docker-compose.yml index a4abb4dc..8b41e36c 100644 --- a/apps/unmanic/docker-compose.yml +++ b/apps/unmanic/docker-compose.yml @@ -14,7 +14,7 @@ services: - PGID=${TIPI_GID} volumes: - ${APP_DATA_DIR}/data/config:/config - - ${ROOT_FOLDER_HOST}/data:/library + - ${ROOT_FOLDER_HOST}/media/data:/library - ${APP_DATA_DIR}/data/temp:/tmp/unmanic labels: # Main From ba62bec6bb7ef2e719edca9e1dfcd4db48c234a8 Mon Sep 17 00:00:00 2001 From: Nicolas Meienberger Date: Mon, 4 Sep 2023 20:58:27 +0200 Subject: [PATCH 28/28] chore(tooljet): update logo and remove unused envs --- apps/tooljet/app.env | 42 -------------------------------- apps/tooljet/docker-compose.yml | 24 +++--------------- apps/tooljet/metadata/logo.jpg | Bin 70148 -> 11559 bytes 3 files changed, 3 insertions(+), 63 deletions(-) delete mode 100644 apps/tooljet/app.env diff --git a/apps/tooljet/app.env b/apps/tooljet/app.env deleted file mode 100644 index 3729d17c..00000000 --- a/apps/tooljet/app.env +++ /dev/null @@ -1,42 +0,0 @@ -TOOLJET_HOST= - -LOCKBOX_MASTER_KEY=70726290922441785304399601987729268981756953900892 -SECRET_KEY_BASE=mqrBZqJvzUJ2GsHQaktZjKdb2cvdM8 - -# DATABASE CONFIG -ORM_LOGGING= -PG_DB=tooljet -PG_USER=tooljet -PG_HOST=postgres_tooljet -PG_PASS=tooljet - -# Checks every 24 hours to see if a new version of ToolJet is available -CHECK_FOR_UPDATES=check_if_updates_are_available - -GOOGLE_CLIENT_ID= -GOOGLE_CLIENT_SECRET= - -# EMAIL CONFIGURATION -DEFAULT_FROM_EMAIL=hello@tooljet.io -SMTP_USERNAME= -SMTP_PASSWORD= -SMTP_DOMAIN= -SMTP_PORT= - -# DISABLE USER SIGNUPS (true or false). Default: true -DISABLE_SIGNUPS= - -# OBSERVABILITY -APM_VENDOR= -SENTRY_DNS= -SENTRY_DEBUG= - -# FEATURE TOGGLE -COMMENT_FEATURE_ENABLE= - -#SSO -SSO_DISABLE_SIGNUP= -SSO_RESTRICTED_DOMAIN= -SSO_GOOGLE_OAUTH2_CLIENT_ID= -SSO_GIT_OAUTH2_CLIENT_ID= -SSO_GIT_OAUTH2_CLIENT_SECRET= \ No newline at end of file diff --git a/apps/tooljet/docker-compose.yml b/apps/tooljet/docker-compose.yml index bc330a7a..f92ac742 100644 --- a/apps/tooljet/docker-compose.yml +++ b/apps/tooljet/docker-compose.yml @@ -1,12 +1,11 @@ -version: "3.7" +version: '3.7' services: - tooljet: container_name: tooljet tty: true stdin_open: true - image: tooljet/tooljet-client-ce:v2.4.2 + image: tooljet/tooljet-client-ce:v2.4.2 restart: always ports: - ${APP_PORT}:80 @@ -45,7 +44,7 @@ services: tooljet-server: container_name: tooljet-server - image: tooljet/tooljet-server-ce:v2.14.0 + image: tooljet/tooljet-server-ce:v2.14.0 tty: true stdin_open: true restart: always @@ -57,28 +56,12 @@ services: - TOOLJET_HOST=https://${APP_DOMAIN} - LOCKBOX_MASTER_KEY=${LOCKBOX_MASTER_KEY} - SECRET_KEY_BASE=${SECRET_KEY_BASE} - - ORM_LOGGING - PG_DB=tooljet - PG_USER=tooljet - PG_HOST=db-tooljet - PG_PASS=${DB_PASSWORD} - CHECK_FOR_UPDATES=check_if_updates_are_available - - GOOGLE_CLIENT_ID - - GOOGLE_CLIENT_SECRET - DEFAULT_FROM_EMAIL=hello@tooljet.io - - SMTP_USERNAME - - SMTP_PASSWORD - - SMTP_DOMAIN - - SMTP_PORT - - DISABLE_SIGNUPS - - APM_VENDOR - - SENTRY_DNS - - SENTRY_DEBUG - - SSO_DISABLE_SIGNUP - - SSO_RESTRICTED_DOMAIN - - SSO_GOOGLE_OAUTH2_CLIENT_ID - - SSO_GIT_OAUTH2_CLIENT_ID - - SSO_GIT_OAUTH2_CLIENT_SECRET command: npm run start:prod db-tooljet: @@ -94,4 +77,3 @@ services: - PGDATA=/data/postgres networks: - tipi_main_network - diff --git a/apps/tooljet/metadata/logo.jpg b/apps/tooljet/metadata/logo.jpg index cdfd64ea504e4aa51a0bedcdd8f99346a1d4faa6..b2e9f2feec97f02a1d5209d62b43004933402941 100644 GIT binary patch literal 11559 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