From dd1bc1e8f853d0ae21e3dea7326636698f5434bf Mon Sep 17 00:00:00 2001 From: Vincent Vu <172068404+rubixvi@users.noreply.github.com> Date: Sun, 14 Sep 2025 14:13:38 +1000 Subject: [PATCH] feat(blueprints): replace unsend with usesend configuration (#350) * feat(blueprint): added docuseal * feat: add Docuseal document management system * feat: restructure docker-compose for Docuseal application setup * feat(docker-compose): remove unused port mapping and clean up redis service configuration * Update blueprints/docuseal/docker-compose.yml * Update blueprints/docuseal/docker-compose.yml * Update blueprints/docuseal/template.toml * This PR replaces and supersedes #39. Changes and improvements: - Fully resolved merge conflict in meta.json - Added missing JWT secret handling using `${password:32}` - Synced `template.toml` and `docker-compose.yml` with proper environment variable mapping - Ensured domain and service configuration matches Dokploy standards - Minor cleanup for clarity and deployment safety Original credit to @maelpr for the initial submission. This version ensures a clean, deployable, and secure Dokploy template for Kutt. * fix: add missing commas in environment variable definitions * Update blueprints/kutt/template.toml * feat(blueprints): replace unsend with usesend configuration * feat(meta): add Uptime Kuma monitoring tool to the blueprint * fix(docker-compose): update MinIO image to latest version --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> --- blueprints/unsend/unsend.png | Bin 13309 -> 0 bytes .../{unsend => usesend}/docker-compose.yml | 46 +++++++++--------- blueprints/{unsend => usesend}/template.toml | 9 ++-- blueprints/usesend/usesend.png | Bin 0 -> 4363 bytes meta.json | 35 ++++++------- 5 files changed, 45 insertions(+), 45 deletions(-) delete mode 100644 blueprints/unsend/unsend.png rename blueprints/{unsend => usesend}/docker-compose.yml (51%) rename blueprints/{unsend => usesend}/template.toml (70%) create mode 100644 blueprints/usesend/usesend.png diff --git a/blueprints/unsend/unsend.png b/blueprints/unsend/unsend.png deleted file mode 100644 index 0bbe5e0ff65859415fce866954cb0968dde2227f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13309 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 diff --git a/blueprints/unsend/docker-compose.yml b/blueprints/usesend/docker-compose.yml similarity index 51% rename from blueprints/unsend/docker-compose.yml rename to blueprints/usesend/docker-compose.yml index 93e80295..9a3266b3 100644 --- a/blueprints/unsend/docker-compose.yml +++ b/blueprints/usesend/docker-compose.yml @@ -1,14 +1,14 @@ -name: unsend-prod +name: usesend-prod services: - unsend-db-prod: + usesend-db-prod: image: postgres:16 restart: always environment: - - POSTGRES_USER=${POSTGRES_USER:?err} - - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:?err} - - POSTGRES_DB=${POSTGRES_DB:?err} + - POSTGRES_USER=${POSTGRES_USER} + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + - POSTGRES_DB=${POSTGRES_DB} healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"] interval: 10s @@ -19,7 +19,7 @@ services: volumes: - database:/var/lib/postgresql/data - unsend-redis-prod: + usesend-redis-prod: image: redis:7 restart: always @@ -29,8 +29,8 @@ services: - cache:/data command: ["redis-server", "--maxmemory-policy", "noeviction"] - unsend-storage-prod: - image: minio/minio:RELEASE.2024-11-07T00-52-20Z + usesend-storage-prod: + image: minio/minio:latest ports: - 9002 @@ -38,33 +38,33 @@ services: volumes: - storage:/data environment: - MINIO_ROOT_USER: unsend + MINIO_ROOT_USER: usesend MINIO_ROOT_PASSWORD: password entrypoint: sh - command: -c 'mkdir -p /data/unsend && minio server /data --console-address ":9001" --address ":9002"' + command: -c 'mkdir -p /data/usesend && minio server /data --console-address ":9001" --address ":9002"' - unsend: - image: unsend/unsend:v1.3.2 + usesend: + image: usesend/usesend:latest restart: always ports: - ${PORT:-3000} environment: - PORT=${PORT:-3000} - - DATABASE_URL=${DATABASE_URL:?err} - - NEXTAUTH_URL=${NEXTAUTH_URL:?err} - - NEXTAUTH_SECRET=${NEXTAUTH_SECRET:?err} - - AWS_ACCESS_KEY=${AWS_ACCESS_KEY:?err} - - AWS_SECRET_KEY=${AWS_SECRET_KEY:?err} - - AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION:?err} - - GITHUB_ID=${GITHUB_ID:?err} - - GITHUB_SECRET=${GITHUB_SECRET:?err} - - REDIS_URL=${REDIS_URL:?err} + - DATABASE_URL=${DATABASE_URL} + - NEXTAUTH_URL=${NEXTAUTH_URL} + - NEXTAUTH_SECRET=${NEXTAUTH_SECRET} + - AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION} + - AWS_SECRET_KEY=${AWS_SECRET_KEY} + - AWS_ACCESS_KEY=${AWS_ACCESS_KEY} + - GITHUB_ID=${GITHUB_ID} + - GITHUB_SECRET=${GITHUB_SECRET} + - REDIS_URL=${REDIS_URL} - NEXT_PUBLIC_IS_CLOUD=${NEXT_PUBLIC_IS_CLOUD:-false} - API_RATE_LIMIT=${API_RATE_LIMIT:-1} depends_on: - unsend-db-prod: + usesend-db-prod: condition: service_healthy - unsend-redis-prod: + usesend-redis-prod: condition: service_started volumes: diff --git a/blueprints/unsend/template.toml b/blueprints/usesend/template.toml similarity index 70% rename from blueprints/unsend/template.toml rename to blueprints/usesend/template.toml index 40d7cc4d..f7b4ea45 100644 --- a/blueprints/unsend/template.toml +++ b/blueprints/usesend/template.toml @@ -6,16 +6,16 @@ secret_base = "${base64:64}" mounts = [] [[config.domains]] -serviceName = "unsend" +serviceName = "usesend" port = 3_000 host = "${main_domain}" [config.env] -REDIS_URL = "redis://unsend-redis-prod:6379" +REDIS_URL = "redis://usesend-redis-prod:6379" POSTGRES_USER = "postgres" POSTGRES_PASSWORD = "postgres" -POSTGRES_DB = "unsend" -DATABASE_URL = "postgresql://postgres:postgres@unsend-db-prod:5432/unsend" +POSTGRES_DB = "usesend" +DATABASE_URL = "postgresql://postgres:postgres@usesend-db-prod:5432/usesend" NEXTAUTH_URL = "http://localhost:3000" NEXTAUTH_SECRET = "${secret_base}" GITHUB_ID = "'Fill'" @@ -25,4 +25,3 @@ AWS_SECRET_KEY = "'Fill'" AWS_ACCESS_KEY = "'Fill'" DOCKER_OUTPUT = "1" API_RATE_LIMIT = "1" -DISCORD_WEBHOOK_URL = "" diff --git a/blueprints/usesend/usesend.png b/blueprints/usesend/usesend.png new file mode 100644 index 0000000000000000000000000000000000000000..b2cd12475a7f86e773ed06e1ed232541fed49a09 GIT binary patch literal 4363 zcmdT|dpMN&9{;+JBui6-a5EBgvaDhjQ}=l5Fm|5* z=CbFVZB6rv?Cl=k>84+NKz(wyT4%zDg>6*70i^DTb)ZXc#}Lq`jzt3 zkQn(Z3nqnvZVA1B=@zf(6g$^u2v5D>QE4x0)06JUH-hcX7wxC@{mYouN zeft7vAm$ilv>IfFk$JM4b0N@G>wKIReq=~jQffI=(T=?d#<3fQxU!HNy6D_KMXK^> zwFEFK!pm^%oJcP*FwT}sZwe%gSBt^F5)Kz~0u2q>ug?H$Z=e5wHn*x-T8mm<0jx|L z+RL-@v6{fLNpn<7P;-fphD}9WpUXG);i4e;pEngIy zWhx0>-gieyuGRck$gU6H*MIAwF4PA!Sc z(m{H3IGgYmqNgtYa)Fxy(53X{EF8>%axc}2khTJeyPbG*ofg>`pv%Z!5=j2YJg`D~ z&dqA%%x8zU$l-vr^d^}}oj~J(!|_>GNc3)QAVJkp9CZJ|(FItMi356A-EOnm;CO(F zJ1#p3_tz)_Nq&Jk^(N}c(dTTymxYr>?LwL_fr@O|P|&*sC@b&?z3=Rb{w@Wis63u` zol44CIWgEYY+h@CB$Vbg_-LWDQ;*2(fU=Bxn4lwq~?v+8WsWs-j2`mKpiiNBkQhU?z(29#ldE^Kj;H1 z!Zoi?*F*x&VK;gJVSk7;G-@ui0E$i88i8US0;&yrg*UPm4cbUay{}pA_XcPoGlJmV zy#z>wA^DMx7)tea$4?@Z#+fB!yO4vH{YZ`JdQ8B|%$MWH`P(O~2>TO}d?QRghvxR? zpBRv?hxFy%1|qQOt%x_Sex{htueh(Z%xYT~1Ep^r7BL})0uBwVQKp6%OTfTtY}Qe4 z0;bMP5hw+S`iIm)S+pEF?{xNmn{0ZmNT$BYTi^cLs?)CCADe?iZ;H~G6r0){yj zRa2$+8zn38-0es<&jVpD8Y*dPuJ@cXPqZ=(ZOth>fD0C&*>dJee%JGDVGfb40N_TN zwJH^Jz-GpiZb#z$<`8}>x4`i0(g@?ytwiEu-_23btCtwWP$P%-jEEHuO|RYReBigp z$p>*?M=y=(l%Y#w88D!PfrDk82&K7=<6WN3C=f*$K-XmvR2S?d;ctJ{#xDltMZGzs z;{KN6El;~D_a#>}@cBE!S63*ImST{KLOyrn|NnZh(9z4v#u}oR1e8uabxMgA@{`MJ zq9<$Z-Fow zj}B`SO&yCmEb#95L9l&6B#t$O4Y#$wg>R*MuhTM<(F~OIhCZs~ zXV=DU0Q88TJ^hhwl&O;+O2Iqjog*(FJRE$nmbm40Gvrwk#AQbK(ZbNqYGyInX6tm@ z!|c-?8PhM^6DD3U^`AZ`Mh!V+;^aPidVX>o{>y3czsnJUXA&_Gn9E5K2)FbMPVjgo z8=gL|9P1Q)%<5F?{4<1K042C^c>brKo9_hPm2;xIpBCvSI^3DQ9LFwy$3U#weZ zK|QGOXuKZK{4-|b-0V~SEq!_~Mw6;bT@n%7Nr*?PK75)ZDtLALOXTl4zK!<`*@~nyXSpM?l_B)-H2AY%yP=r5YN?= z0m^&}wfz7Leg|D-yZu8mjImyrsUKK-QT2exW^--dMnqi+$UQj`8=s-Bh*TG4qAFp^ ztu+!;Kw~s(zmxJI#O58HQJp2?ZExg7Be^xbY5}U`qstK@%1$$b zc?+p|4wBHAW_>2>iHaC7$}uMV4zW0#1r1q!sn=&U9}DRU>zen7vHE)a5g##dN}77c z@mvhBfH~~<{d-l)#)2#CJ?~X9Ex+~!?OG%TUHtJx5pYKz9(j*oCMi-4830$S58h30 ztP%&)AJFDvt=nF!go=#8mMZar8z?_7h;Ase+V*66d#C{^J~24fZqk!{ma`faMv0GT zuU65V0W7hCJA;>! zz#whxdW@lBO(R4#7_UKHn-V;#y0OG?8p86B>=H=WpCk>JNEIXN&=ZGa2F!tx z7tVo%tzW8$Q8r&$Otf;f|NW)tC;!~j2N06EC$mOZ-b?`2avQQ7Ca+N>@0Jo(O>MaZ z?o_Xji27Cm)H4Jx3uM_%gBHMAyjjROZ|7>P{9Ig5yV}}U6CWP`#Lc(6 iPKMMv8D8DkER-14cc2j*Jviv^23T3xn&+93PW>CwG*2=B literal 0 HcmV?d00001 diff --git a/meta.json b/meta.json index 835b8546..47ccd5f2 100644 --- a/meta.json +++ b/meta.json @@ -4673,23 +4673,6 @@ "networking" ] }, - { - "id": "unsend", - "name": "Unsend", - "version": "v1.3.2", - "description": "Open source alternative to Resend,Sendgrid, Postmark etc. ", - "logo": "unsend.png", - "links": { - "github": "https://github.com/unsend-dev/unsend", - "website": "https://unsend.dev/", - "docs": "https://docs.unsend.dev/get-started/" - }, - "tags": [ - "e-mail", - "marketing", - "business" - ] - }, { "id": "uptime-kuma", "name": "Uptime Kuma", @@ -4705,6 +4688,24 @@ "monitoring" ] }, + { + "id": "usesend", + "name": "useSend", + "version": "latest", + "description": "Open source alternative to Resend, Sendgrid, Postmark etc.", + "logo": "usesend.png", + "links": { + "github": "https://github.com/usesend/usesend", + "website": "https://usesend.com/", + "docs": "https://docs.usesend.com/introduction" + }, + "tags": [ + "e-mail", + "marketing", + "business", + "self-hosted" + ] + }, { "id": "vaultwarden", "name": "Vaultwarden",