From 9d17e6bf8a2fafb26fb692740352d6ed7386d68a Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Thu, 29 Jan 2026 20:14:06 -0600 Subject: [PATCH 1/3] New Templates (#690) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(librechat): add LibreChat blueprint with compose, toml, metadata, links and tags * fix: rename templates to template.toml * fix(librechat): rename api service to librechat in docker-compose.yml * Update blueprints/librechat/template.toml * Update blueprints/librechat/template.toml * fix(librechat): add version under [config] and remove stray [config.mounts] header * fix(librechat): remove predefined persistent volume mounts from template.toml * docs(librechat): add authentication reference link to docker-compose.yml * feat: add Rote template - Add Rote deployment template with frontend, backend, and PostgreSQL services - Configure domain routing for frontend (port 80) and backend (port 3000) - Set up automatic password generation and environment variables - Use latest image tag by default - Add logo and metadata to meta.json * fix: process meta.json to fix formatting and sorting * Update GitHub workflows to target 'canary' branch for meta validation * Update pnpm-lock.yaml to upgrade various dependencies, including '@codemirror/autocomplete', '@radix-ui/react-dialog', and React packages to their latest versions. This includes updates to '@types/react' and '@types/react-dom' for improved compatibility and performance. * Enhance GitHub workflows: add production deployment configuration and target 'canary' branch for pull requests. * Refactor GitHub workflow: comment out build preview steps for clarity and future modifications. * Remove unnecessary blank line in deploy-preview.yml for improved readability. * Refactor GitHub workflow: uncomment build preview steps for improved deployment process and clarity. * Update template.toml (#555) * Update template.toml * Update template.toml * Update template.toml * fix: change VITE_API_BASE to http:// for traefik.me compatibility * changed image from sknnr/enshrouded-dedicated-server to mornedhels/enshrouded-server for autoupdate and easier config * Add Openinary Template (#567) * feat: add Openinary template * feat: update Openinary configuration to support ALLOWED_ORIGIN and refactor domain variable * fix: correct DEFAULT_DOMAIN environment variable reference in docker-compose.yml (#562) * add rustfs template (#568) * feat: add pull request template for improved contribution guidelines * fix: update pull request template to clarify issue closing keywords * feat: add validation scripts and configuration for Docker Compose and template files - Introduced a GitHub Actions workflow to validate Docker Compose files and template.toml on pull requests. - Added helper functions for generating random values and processing variables in templates. - Implemented validation scripts for checking the structure, syntax, and best practices of Docker Compose and template files. - Created necessary TypeScript types and configuration files for the build scripts. * Add Passbolt template blueprint to Dokploy templates (#376) * feat(templates): add Passbolt blueprint for Dokploy - Add docker-compose.yml defining services for Passbolt and MariaDB - Create template.toml with configurable domain, email, and database credentials - Add meta.json with metadata, tags, and link to logo * fix(meta): sort meta.json entries * fix: passbolt template had several issues that broke deployment - env variables were using old array format, changed to new table format - mariadb healthcheck was broken (wrong command for mariadb 11) - missing volume mounts for gpg keys, jwt tokens, and database - setup instructions weren't visible to users, moved to docker-compose - email config had circular references causing warnings - tested admin user creation and confirmed working everything works now, fully tested * Update blueprints/passbolt/template.toml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat: Add Kokoro TTS FastAPI template (#353) (#403) * feat: Add Kokoro TTS FastAPI template (#353) - Add CPU-optimized docker-compose.yml with source build - Add GPU-optimized docker-compose-gpu.yml for NVIDIA support - Add comprehensive template.toml with OpenAI-compatible API docs - Add kokoro-tts.svg logo and meta.json entry - Support streaming audio, timestamps, and multi-language TTS - Resolves #353 * updated the meta.json for the build errors * removed the docker-compose-gpu.yml file * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * chore: remove package-lock.json file from the app directory * chore: update Tolgee to latest version and fix SMTP config typo (#432) * chore: update Tolgee to latest version and fix SMTP config typo * Update docker-compose.yml * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * fix: improve Docker Compose validation workflow to handle subshell issues - Converted the handling of COMPOSE_FILES from a pipe to an array to ensure error propagation in the parent shell. - Updated the loop to iterate over the array for better reliability in the validation process. * refactor: enhance Docker Compose validation workflow to improve error handling - Replaced the pipe with an array to handle directory names, ensuring that errors within the loop propagate correctly to the parent shell. - Updated the loop structure for better reliability in processing the directories. * Feat: Add parseable (#460) * Add parseable * Update docker-compose.yml * Update docker-compose.yml * Update blueprints/parseable/template.toml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Mauricio Siu * feat: add ChirpStack LoRaWAN Network Server template (#486) * feat: add ChirpStack LoRaWAN Network Server template Add complete ChirpStack v4 template with: - Main ChirpStack server with web UI - UDP and Basics Station gateway bridges - REST API interface - PostgreSQL database with PostGIS extensions - Redis cache - Mosquitto MQTT broker Default configuration for EU868 region with secure random credentials. Supports all LoRaWAN frequency bands globally. * fix(chirpstack): use original configurations from chirpstack-docker repo Update template.toml to use exact configuration files from the chirpstack-docker repository instead of simplified versions: - Use original chirpstack.toml with all 15 enabled regions - Use original gateway bridge configuration with documentation links - Use complete Basics Station EU868 config with frequency plans - Keep original Mosquitto and PostgreSQL initialization scripts Template size increased from 131 to 219 lines (4.7KB) to include comprehensive default configurations that match the official setup. * feat: add all 38 region configuration files * fix(chirpstack): add volume mounts to expose config files to containers * fix(chirpstack): remove read-only flag * fix(chirpstack): correct file paths for configuration mounts in docker-compose and template files * fix: update volume paths to be on correct directory level * fix: configure template for dokploy-network with proper DNS resolution - Add dokploy-network configuration to docker-compose.yml - Replace environment variable placeholders with actual service hostnames - Change PostgreSQL DSN from $POSTGRESQL_HOST to postgres - Change Redis server from $REDIS_HOST to redis - Replace $MQTT_BROKER_HOST with mosquitto in all 39 region configurations These changes ensure Docker DNS resolution works correctly by: - Using dokploy-network (overlay) instead of bridge network - Using service names directly in TOML config files (TOML doesn't expand env vars) - Enabling proper service discovery between containers This resolves DNS resolution failures that caused ChirpStack to fail connecting to PostgreSQL and MQTT services during deployment. * fix: add missing network configurations for all services in docker-compose * feat: add internal services to config.domains for proper network configuration * Update docker-compose.yml * fix: enhance domain validation in template validator - Updated the TemplateValidator to ensure that if the 'host' field is provided, it must be a valid string. - Added comments to clarify that 'host' is optional for internal services. * refactor: remove redundant host validation in template validator - Removed the validation for the 'host' field in the TemplateValidator, as it is optional for internal services and does not require a type check if not provided. * refactor: remove internal service domain configurations from template - Eliminated the domain configurations for internal services (Postgres, Redis, Mosquitto) from the template.toml file, streamlining the configuration for better clarity and maintainability. --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Mauricio Siu * Update section title from 'Suggestions' to 'Requirements' * Feat : Add MCSManager template support (#521) (#522) * feat: Add MCSManager template support (#521) * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat: Add MediaCMS template (#524) * Feat : Add Quant-Ux template -#173 (#525) * Feat : Add Quant-Ux template -#173 * Remove extra newline in docker-compose.yml * Update blueprints/quant-ux/docker-compose.yml * Update blueprints/quant-ux/docker-compose.yml * Update blueprints/quant-ux/docker-compose.yml * Update blueprints/quant-ux/docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * fix(rustdesk): use explicit ports, use port 21118 on hbbs instead of hbbr (#526) * fix: use explicit ports, use port 21118 on hbbs instead of hbbr * fix: whitespace character in rustdesk * feat: Add anytype template (#527) * add anytype template * sort * Update name field for Anytype in meta.json * Update meta.json * Update docker-compose.yml * Update blueprints/anytype/docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * refactor: remove dokploy-network configurations from multiple docker-compose files - Removed the external dokploy-network configuration from various services' docker-compose.yml files to streamline network management. - This change simplifies the setup and ensures consistency across blueprints. * chore: upgrade Infisical from v0.90.1 to v0.135.0 (#529) * chore: upgrade Infisical from v0.90.1 to v0.135.0 * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * fix: update pull request template link for clarity - Changed the link in the pull request template from 'general suggestions' to 'general requirements' to better reflect the content and ensure users follow the correct guidelines when creating templates. * chore: add section for screenshots or videos in pull request template - Introduced a new section in the pull request template to encourage contributors to include screenshots or videos, enhancing the clarity and context of their submissions. * Feat : Add MuleSoft ESB Runtime Template (#498) * added the mulesoft esb template * updated the compose and the meta.json * feat(mulesoft-esb): update image and add dynamic env configuration - Updated image to hari1367709/mule-esb:latest - Added dynamic HTTP_PORT for runtime port configuration - Added MULE_VERSION environment variable for Mule ESB version selection * updated the meta.json to use the version as latest * added a comment line to the template file * updated the mule runtime image * fix(mulesoft-esb): update ports configuration to follow guidelines * updated the port to use the env(HTTP_PORT) * Update docker-compose.yml * Update docker-compose.yml * Update blueprints/mulesoft-esb/docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat(blueprint): update trmnl-byos-laravel template (#533) * feat(blueprint): update trmnl-byos-laravel template * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat(blueprint): peerdb template (#579) * feat(blueprint): initial attempt at peerdb template * fix: entrypoint and healthcheck * fix: entrypoint * fix: temporarily remove network * fix: temporal port * chore: remove 36987 for minio * fix: remove peerdb 9900 port exposure * fix: port for console * fix: minio env fix * fix: expose peerdb and minio to dokploy network * fix(peerdb): add defaults * fix: remove extra hosts * fix: remove network entries * fix: use consistent environment variables * feat: add Bluesky PDS template (#542) * feat: Bluesky PDS template * chore: add bluesky pds svg * chore: metadata for bluesky pds * yaml > yml * pnpm lock * fix: correct rotation key config * fix volumes * fix: volumes in the pds compose * define volumes in compose * fix: 32 bit rotation key * create pds.env correctly * some extra fixes * more extra fixes * a blank line * update pnpm lock * Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation (#548) * Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation * Fix METRICS_CONFIG environment variable: use single-line JSON format * Fix template.toml: use correct [config.env] syntax for environment variables * Fix docker-compose.yml: add env_file reference to load environment variables * Delete blueprints/dokploy-prom-monitoring-extension/README.md * Delete test-dokploy-prom-monitoring-extension.sh --------- Co-authored-by: Sanjeevi Subramani Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat: improve RustDesk template configuration (#571) * feat: improve RustDesk template configuration - Add comprehensive environment variables for RustDesk server - Add RELAY_HOST, API_SERVER, ID_SERVER, and ENCRYPTION_KEY variables - Follow Dokploy best practices (no container_name, proper port format) - Use restart: unless-stopped policy - Add encryption key generation with password helper * fix: use explicit port mapping for RustDesk services RustDesk requires explicit port bindings (host:container format) to function properly. The service uses specific ports for: - 21115-21116 (TCP/UDP): hbbs service for ID and NAT traversal - 21117-21119 (TCP): hbbr relay service Without explicit port mapping, RustDesk clients cannot establish connections to the server. This is an exception to Dokploy's general port guidelines due to RustDesk's specific networking requirements. --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat: add Mumble voice chat server template (#572) * feat: add Mumble voice chat server template - Add Mumble VoIP server blueprint with docker-compose.yml - Configure environment variables for superuser password, welcome text, and max users - Add template.toml with auto-generated secure password - Follow Dokploy best practices (no container_name, proper port format) - Add Mumble metadata to meta.json with proper tags - Support for TCP and UDP on port 64738 * Update template.toml * fix: correct JSON formatting in meta.json for Mumble template entry --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Mauricio Siu * fix: update WireGuard Easy template for proper functionality (#573) * fix: update WireGuard Easy template for proper functionality - Changed to named volume (etc_wireguard) instead of host path mount - Added explicit port mappings (51820:51820/udp, 51821:51821/tcp) required for WireGuard - Updated environment variables to use correct WG_HOST and PASSWORD format - Added all required WireGuard environment variables: - WG_PORT, PORT, WG_MTU, WG_DEFAULT_DNS, WG_ALLOWED_IPS - WG_POST_UP/WG_POST_DOWN for iptables rules - Added NET_RAW capability for proper network operations - Simplified template.toml to use WIREGUARD_HOST and WIREGUARD_PASSWORD - Removed explicit networks config to enable Dokploy's isolated deployment - Template now works with Dokploy's automatic network isolation This configuration has been tested and confirmed working with isolated deployment enabled. * Update template.toml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * add: restart policy to MinIO service (#576) restart: unless-stopped is a Docker restart policy that automatically restarts a container if it stops due to an error or Docker daemon restart * Updating copilot instructions.md and AGENTS.md (#452) * docs: add copilot instructions for project development Added comprehensive documentation file (.github/copilot-instructions.md) that provides detailed guidance on the Dokploy Open Source Templates project structure, development workflow, and conventions. The document covers the project overview, key files and directories, development workflow for adding/updating templates, local development setup, CI/CD processes, and established conventions and patterns. This documentation will help onboard new contributors and ensure consistent development practices across the project. * docs(copilot-instructions): enhance project overview and development guide Updated copilot instructions to reflect expanded app capabilities (200+ apps, TypeScript integration, Fuse.js search) and detailed processes for templates, local dev, and CI/CD for improved clarity and accuracy. * refactor: remove frontend development instructions from AGENTS.md and update contributing guidelines - Removed frontend development commands from AGENTS.md to streamline the document. - Updated CONTRIBUTING.md by removing the recommendation to set `restart: unless-stopped` for services. --------- Co-authored-by: Mauricio Siu * Add trailbase template (#590) * Add trailbase * Add comment on mounting local directory * Update meta.json Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix: openpanel and migrate to v2 (#594) * refactor: update docker-compose.yml to include version and restart policy (#599) * feat(blueprint): mage ai template (#601) * feat(blueprint): template for mage-ai * fix: add healthcheck for mage-ai * docs: update copilot instructions to emphasize version pinning in docker-compose.yml Clarified the importance of pinning image versions in docker-compose.yml and explicitly stated to avoid using the `latest` tag to prevent potential issues with template functionality when upstream images change. * refactor: enhance Docker Compose validation workflow Updated the GitHub Actions workflow for validating Docker Compose files by streamlining the detection of changed blueprints and improving the validation process. Removed redundant steps and consolidated the validation of docker-compose.yml and template.toml files into a more efficient structure. Added clearer output messages for validation results and ensured that best practices are checked for each blueprint. This refactor aims to improve maintainability and clarity in the CI/CD process. * fix: update zitadel default instance features (#544) * Add Reactive Resume template (#603) * Initial plan * Add Reactive Resume template with docker-compose, template.toml, and meta.json entry Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> * Fix MinIO storage path alignment between template.toml and docker-compose.yml Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> * Update docker-compose.yml --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> * [WIP] Fix mounted prometheus.yml file not working (#605) * Initial plan * Fix Prometheus mounted prometheus.yml file by adding volume mount Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> * Update blueprints/prometheus/template.toml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * docs: update copilot instructions to enforce open source requirement Added a clear requirement stating that all services must be open source and only applications with open-source licenses (e.g., MIT, Apache, GPL, AGPL) are allowed. This update aims to ensure compliance and maintain the integrity of the project. * Fix Cap.so template MinIO deployment failure (#604) * Initial plan * Fix Cap.so MinIO image to use official quay.io image Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> * Fix MinIO healthcheck to use curl instead of mc Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> * Update .gitignore --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> * Fix Discourse template manifest error - update to bitnamilegacy/discourse:3.5.0 (#606) * Initial plan * Fix Discourse template by updating to bitnamilegacy/discourse:3.5.0 Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> * Remove pull request trigger from deploy-preview workflow * Enhance copilot instructions by adding verification steps for Docker images and clarifying URL variable usage. Emphasize the importance of verifying image existence before committing to prevent deployment failures. * Add Easy!Appointments template (#608) * Initial plan * Add Easyappointments template with docker-compose, template.toml, and meta.json entry Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> * Update blueprints/easyappointments/template.toml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update template.toml --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Add Dolibarr ERP & CRM template (#610) * Initial plan * Add Dolibarr ERP & CRM template Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> * Update template.toml * Update blueprints/dolibarr/docker-compose.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * feat: add Syncthing Template (#636) * Adiciona template do Syncthing com arquivos de configuração e ícone * Remove versão do Docker Compose do template do Syncthing * Update Umami to version v2.20.2 (#641) * Feat : Add InstantDB template (#224) (#530) * feat: add InstantDB template * added the server service also * removed the external network * Update docker-compose.yml * Update blueprints/instantdb/docker-compose.yml * Update blueprints/instantdb/docker-compose.yml * Update docker-compose.yml * Update blueprints/instantdb/template.toml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * [New Template] Added Lavalink template for dokploy (#535) * Add initial Lavalink configuration template * Added lavalink.svg logo * Create docker-compose.yml for Lavalink setup Add Docker Compose configuration for Lavalink service. * Modify healthcheck interval in docker-compose.yml Increased healthcheck interval from 10s to 100s. * Add Lavalink metadata to meta.json Added metadata for Lavalink audio sending node. * Update server_port variable to use ${port} * Change server port variable to randomPort * Change port variable to randomPort in template.toml * Change port variable in template.toml * Update server port in template.toml * Fix formatting in template.toml for server config * style: Reformat lavalink entry in meta.json. * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * chore(blueprint): update Appwrite services to v1.8 (#383) * Update Appwrite version docker images and environment variables * Add separate domains for functions and sites, update environment variables, replace insecure default passwords * Update Appwrite version from 1.6.1 to 1.7.4 in `meta.json` * Fix envs and update domains * Add missing volume mounts for sites * Fix config file syntax * Update runtimes network configuration in template.toml * Update Appwrite to 1.8 * Update appwrite image version to 1.8.0 * Add logging configuration to docker-compose * New Templates (#586) * feat(librechat): add LibreChat blueprint with compose, toml, metadata, links and tags * fix: rename templates to template.toml * fix(librechat): rename api service to librechat in docker-compose.yml * Update blueprints/librechat/template.toml * Update blueprints/librechat/template.toml * fix(librechat): add version under [config] and remove stray [config.mounts] header * fix(librechat): remove predefined persistent volume mounts from template.toml * docs(librechat): add authentication reference link to docker-compose.yml * feat: add Rote template - Add Rote deployment template with frontend, backend, and PostgreSQL services - Configure domain routing for frontend (port 80) and backend (port 3000) - Set up automatic password generation and environment variables - Use latest image tag by default - Add logo and metadata to meta.json * fix: process meta.json to fix formatting and sorting * Update GitHub workflows to target 'canary' branch for meta validation * Update pnpm-lock.yaml to upgrade various dependencies, including '@codemirror/autocomplete', '@radix-ui/react-dialog', and React packages to their latest versions. This includes updates to '@types/react' and '@types/react-dom' for improved compatibility and performance. * Enhance GitHub workflows: add production deployment configuration and target 'canary' branch for pull requests. * Refactor GitHub workflow: comment out build preview steps for clarity and future modifications. * Remove unnecessary blank line in deploy-preview.yml for improved readability. * Refactor GitHub workflow: uncomment build preview steps for improved deployment process and clarity. * Update template.toml (#555) * Update template.toml * Update template.toml * Update template.toml * fix: change VITE_API_BASE to http:// for traefik.me compatibility * changed image from sknnr/enshrouded-dedicated-server to mornedhels/enshrouded-server for autoupdate and easier config * Add Openinary Template (#567) * feat: add Openinary template * feat: update Openinary configuration to support ALLOWED_ORIGIN and refactor domain variable * fix: correct DEFAULT_DOMAIN environment variable reference in docker-compose.yml (#562) * add rustfs template (#568) * feat: add pull request template for improved contribution guidelines * fix: update pull request template to clarify issue closing keywords * feat: add validation scripts and configuration for Docker Compose and template files - Introduced a GitHub Actions workflow to validate Docker Compose files and template.toml on pull requests. - Added helper functions for generating random values and processing variables in templates. - Implemented validation scripts for checking the structure, syntax, and best practices of Docker Compose and template files. - Created necessary TypeScript types and configuration files for the build scripts. * Add Passbolt template blueprint to Dokploy templates (#376) * feat(templates): add Passbolt blueprint for Dokploy - Add docker-compose.yml defining services for Passbolt and MariaDB - Create template.toml with configurable domain, email, and database credentials - Add meta.json with metadata, tags, and link to logo * fix(meta): sort meta.json entries * fix: passbolt template had several issues that broke deployment - env variables were using old array format, changed to new table format - mariadb healthcheck was broken (wrong command for mariadb 11) - missing volume mounts for gpg keys, jwt tokens, and database - setup instructions weren't visible to users, moved to docker-compose - email config had circular references causing warnings - tested admin user creation and confirmed working everything works now, fully tested * Update blueprints/passbolt/template.toml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat: Add Kokoro TTS FastAPI template (#353) (#403) * feat: Add Kokoro TTS FastAPI template (#353) - Add CPU-optimized docker-compose.yml with source build - Add GPU-optimized docker-compose-gpu.yml for NVIDIA support - Add comprehensive template.toml with OpenAI-compatible API docs - Add kokoro-tts.svg logo and meta.json entry - Support streaming audio, timestamps, and multi-language TTS - Resolves #353 * updated the meta.json for the build errors * removed the docker-compose-gpu.yml file * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * chore: remove package-lock.json file from the app directory * chore: update Tolgee to latest version and fix SMTP config typo (#432) * chore: update Tolgee to latest version and fix SMTP config typo * Update docker-compose.yml * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * fix: improve Docker Compose validation workflow to handle subshell issues - Converted the handling of COMPOSE_FILES from a pipe to an array to ensure error propagation in the parent shell. - Updated the loop to iterate over the array for better reliability in the validation process. * refactor: enhance Docker Compose validation workflow to improve error handling - Replaced the pipe with an array to handle directory names, ensuring that errors within the loop propagate correctly to the parent shell. - Updated the loop structure for better reliability in processing the directories. * Feat: Add parseable (#460) * Add parseable * Update docker-compose.yml * Update docker-compose.yml * Update blueprints/parseable/template.toml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Mauricio Siu * feat: add ChirpStack LoRaWAN Network Server template (#486) * feat: add ChirpStack LoRaWAN Network Server template Add complete ChirpStack v4 template with: - Main ChirpStack server with web UI - UDP and Basics Station gateway bridges - REST API interface - PostgreSQL database with PostGIS extensions - Redis cache - Mosquitto MQTT broker Default configuration for EU868 region with secure random credentials. Supports all LoRaWAN frequency bands globally. * fix(chirpstack): use original configurations from chirpstack-docker repo Update template.toml to use exact configuration files from the chirpstack-docker repository instead of simplified versions: - Use original chirpstack.toml with all 15 enabled regions - Use original gateway bridge configuration with documentation links - Use complete Basics Station EU868 config with frequency plans - Keep original Mosquitto and PostgreSQL initialization scripts Template size increased from 131 to 219 lines (4.7KB) to include comprehensive default configurations that match the official setup. * feat: add all 38 region configuration files * fix(chirpstack): add volume mounts to expose config files to containers * fix(chirpstack): remove read-only flag * fix(chirpstack): correct file paths for configuration mounts in docker-compose and template files * fix: update volume paths to be on correct directory level * fix: configure template for dokploy-network with proper DNS resolution - Add dokploy-network configuration to docker-compose.yml - Replace environment variable placeholders with actual service hostnames - Change PostgreSQL DSN from $POSTGRESQL_HOST to postgres - Change Redis server from $REDIS_HOST to redis - Replace $MQTT_BROKER_HOST with mosquitto in all 39 region configurations These changes ensure Docker DNS resolution works correctly by: - Using dokploy-network (overlay) instead of bridge network - Using service names directly in TOML config files (TOML doesn't expand env vars) - Enabling proper service discovery between containers This resolves DNS resolution failures that caused ChirpStack to fail connecting to PostgreSQL and MQTT services during deployment. * fix: add missing network configurations for all services in docker-compose * feat: add internal services to config.domains for proper network configuration * Update docker-compose.yml * fix: enhance domain validation in template validator - Updated the TemplateValidator to ensure that if the 'host' field is provided, it must be a valid string. - Added comments to clarify that 'host' is optional for internal services. * refactor: remove redundant host validation in template validator - Removed the validation for the 'host' field in the TemplateValidator, as it is optional for internal services and does not require a type check if not provided. * refactor: remove internal service domain configurations from template - Eliminated the domain configurations for internal services (Postgres, Redis, Mosquitto) from the template.toml file, streamlining the configuration for better clarity and maintainability. --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Mauricio Siu * Update section title from 'Suggestions' to 'Requirements' * Feat : Add MCSManager template support (#521) (#522) * feat: Add MCSManager template support (#521) * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat: Add MediaCMS template (#524) * Feat : Add Quant-Ux template -#173 (#525) * Feat : Add Quant-Ux template -#173 * Remove extra newline in docker-compose.yml * Update blueprints/quant-ux/docker-compose.yml * Update blueprints/quant-ux/docker-compose.yml * Update blueprints/quant-ux/docker-compose.yml * Update blueprints/quant-ux/docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * fix(rustdesk): use explicit ports, use port 21118 on hbbs instead of hbbr (#526) * fix: use explicit ports, use port 21118 on hbbs instead of hbbr * fix: whitespace character in rustdesk * feat: Add anytype template (#527) * add anytype template * sort * Update name field for Anytype in meta.json * Update meta.json * Update docker-compose.yml * Update blueprints/anytype/docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * refactor: remove dokploy-network configurations from multiple docker-compose files - Removed the external dokploy-network configuration from various services' docker-compose.yml files to streamline network management. - This change simplifies the setup and ensures consistency across blueprints. * chore: upgrade Infisical from v0.90.1 to v0.135.0 (#529) * chore: upgrade Infisical from v0.90.1 to v0.135.0 * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * fix: update pull request template link for clarity - Changed the link in the pull request template from 'general suggestions' to 'general requirements' to better reflect the content and ensure users follow the correct guidelines when creating templates. * chore: add section for screenshots or videos in pull request template - Introduced a new section in the pull request template to encourage contributors to include screenshots or videos, enhancing the clarity and context of their submissions. * Feat : Add MuleSoft ESB Runtime Template (#498) * added the mulesoft esb template * updated the compose and the meta.json * feat(mulesoft-esb): update image and add dynamic env configuration - Updated image to hari1367709/mule-esb:latest - Added dynamic HTTP_PORT for runtime port configuration - Added MULE_VERSION environment variable for Mule ESB version selection * updated the meta.json to use the version as latest * added a comment line to the template file * updated the mule runtime image * fix(mulesoft-esb): update ports configuration to follow guidelines * updated the port to use the env(HTTP_PORT) * Update docker-compose.yml * Update docker-compose.yml * Update blueprints/mulesoft-esb/docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat(blueprint): update trmnl-byos-laravel template (#533) * feat(blueprint): update trmnl-byos-laravel template * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat(blueprint): peerdb template (#579) * feat(blueprint): initial attempt at peerdb template * fix: entrypoint and healthcheck * fix: entrypoint * fix: temporarily remove network * fix: temporal port * chore: remove 36987 for minio * fix: remove peerdb 9900 port exposure * fix: port for console * fix: minio env fix * fix: expose peerdb and minio to dokploy network * fix(peerdb): add defaults * fix: remove extra hosts * fix: remove network entries * fix: use consistent environment variables * feat: add Bluesky PDS template (#542) * feat: Bluesky PDS template * chore: add bluesky pds svg * chore: metadata for bluesky pds * yaml > yml * pnpm lock * fix: correct rotation key config * fix volumes * fix: volumes in the pds compose * define volumes in compose * fix: 32 bit rotation key * create pds.env correctly * some extra fixes * more extra fixes * a blank line * update pnpm lock * Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation (#548) * Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation * Fix METRICS_CONFIG environment variable: use single-line JSON format * Fix template.toml: use correct [config.env] syntax for environment variables * Fix docker-compose.yml: add env_file reference to load environment variables * Delete blueprints/dokploy-prom-monitoring-extension/README.md * Delete test-dokploy-prom-monitoring-extension.sh --------- Co-authored-by: Sanjeevi Subramani Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat: improve RustDesk template configuration (#571) * feat: improve RustDesk template configuration - Add comprehensive environment variables for RustDesk server - Add RELAY_HOST, API_SERVER, ID_SERVER, and ENCRYPTION_KEY variables - Follow Dokploy best practices (no container_name, proper port format) - Use restart: unless-stopped policy - Add encryption key generation with password helper * fix: use explicit port mapping for RustDesk services RustDesk requires explicit port bindings (host:container format) to function properly. The service uses specific ports for: - 21115-21116 (TCP/UDP): hbbs service for ID and NAT traversal - 21117-21119 (TCP): hbbr relay service Without explicit port mapping, RustDesk clients cannot establish connections to the server. This is an exception to Dokploy's general port guidelines due to RustDesk's specific networking requirements. --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat: add Mumble voice chat server template (#572) * feat: add Mumble voice chat server template - Add Mumble VoIP server blueprint with docker-compose.yml - Configure environment variables for superuser password, welcome text, and max users - Add template.toml with auto-generated secure password - Follow Dokploy best practices (no container_name, proper port format) - Add Mumble metadata to meta.json with proper tags - Support for TCP and UDP on port 64738 * Update template.toml * fix: correct JSON formatting in meta.json for Mumble template entry --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Mauricio Siu * fix: update WireGuard Easy template for proper functionality (#573) * fix: update WireGuard Easy template for proper functionality - Changed to named volume (etc_wireguard) instead of host path mount - Added explicit port mappings (51820:51820/udp, 51821:51821/tcp) required for WireGuard - Updated environment variables to use correct WG_HOST and PASSWORD format - Added all required WireGuard environment variables: - WG_PORT, PORT, WG_MTU, WG_DEFAULT_DNS, WG_ALLOWED_IPS - WG_POST_UP/WG_POST_DOWN for iptables rules - Added NET_RAW capability for proper network operations - Simplified template.toml to use WIREGUARD_HOST and WIREGUARD_PASSWORD - Removed explicit networks config to enable Dokploy's isolated deployment - Template now works with Dokploy's automatic network isolation This configuration has been tested and confirmed working with isolated deployment enabled. * Update template.toml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * add: restart policy to MinIO service (#576) restart: unless-stopped is a Docker restart policy that automatically restarts a container if it stops due to an error or Docker daemon restart --------- Co-authored-by: Sunil Shrestha Co-authored-by: Rabithua Co-authored-by: Mauricio Siu Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com> Co-authored-by: Crackvignoule Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com> Co-authored-by: Thiago MadPin Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com> Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com> Co-authored-by: Harikrishnan Dhanasekaran Co-authored-by: Kamil Dzieniszewski Co-authored-by: Nick Anderson Co-authored-by: lefolalan Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com> Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com> Co-authored-by: Benjamin Nussbaum Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com> Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com> Co-authored-by: Sanjeevi Subramani Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com> Co-authored-by: Jemg * Remove `container_name` from all containers * Remove expliced networks * Update blueprints/appwrite/docker-compose.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update password variables to use 32-character length * Update Appwrite description and tags in meta.json * Fix JSON formatting in meta.json by adding missing closing bracket * Fix formatting in meta.json by removing trailing spaces in tags array * Add missing SMS and Backblaze storage configuration options in template.toml * Update docker-compose.yml --------- Co-authored-by: Pascal Oberbeck Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Sunil Shrestha Co-authored-by: Rabithua Co-authored-by: Mauricio Siu Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com> Co-authored-by: Crackvignoule Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com> Co-authored-by: Thiago MadPin Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com> Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com> Co-authored-by: Harikrishnan Dhanasekaran Co-authored-by: Kamil Dzieniszewski Co-authored-by: Nick Anderson Co-authored-by: lefolalan Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com> Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com> Co-authored-by: Benjamin Nussbaum Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com> Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com> Co-authored-by: Sanjeevi Subramani Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com> Co-authored-by: Jemg Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Mauricio Siu * feat: emqx template (MQTT Broker) (#556) * feat: template for emqx * chore: process meta * fix: use websocket on port 443 instead of 8084 * docs: improve comments for emqx template * fix: use emqx service name * fix: use dummy domain instead of traefik * fix: explicitly list dokplok-network * fix(emqx): restart unless stopped * fix(emqx): add healthcheck * Dokploy Deployment for Mautic 5 (#564) * first draft * second * try 3 * 4 * Update docker-compose.yml * Update template.toml * Enhance healthchecks and service dependencies in Docker Compose Updated healthcheck configurations for Mautic and MySQL services to improve service reliability. Added conditions to ensure services wait for dependencies to be healthy before starting. * Update Mautic docker-compose with health checks and roles * fix: searxng template (#651) * fix: use major version for openpanel (#680) * Feat/minepanel template (#657) * feat: add Minepanel template * fix: pin images to v1.7.1 and use http for URLs * fix: remove explicit ports, Dokploy handles proxying * chore: process and sort meta.json * fix: consolidate domain variables to main_domain * fix: add version field to docker-compose.yml * Add Komari Monitor template with Docker Compose, icon, and metadata (#XXX) (#623) * Introduce Komari Monitor, a self-hosted server monitoring tool, with its corresponding Docker Compose configuration, icon, and metadata entry. * Add template.toml for configuration and environment variables. * Include necessary links for GitHub and documentation. * Add Misaka Danmu Server template with Docker Compose, icon, and metadata (#624) * Introduce Misaka Danmu Server, a self-hosted danmaku server for live streaming, with its corresponding Docker Compose configuration, icon, and metadata entry. * Add template.toml for configuration and environment variables. * Include necessary links for GitHub and documentation. * fix: pyrodactyl no longer uses main tag for it's latest release (#626) * fix: pyrodactyl no longer uses main tag for it's latest release * Remove custom network settings from docker-compose Removed custom network configuration from docker-compose. * Update MariaDB and Pyrodactyl images in Docker Compose * Add Jenkins blueprint template configuration (#634) - Created a new TOML configuration file for Jenkins blueprint. - Defined main domain variable and service configuration for Jenkins. - Set serviceName to "jenkins" with port 8080 and host as the main domain. * Update Autobase to version 2.5 (#647) * Update Autobase to version 2.5 Bump the autobase-console Docker image from version 2.2.0 to 2.5.2 in docker-compose.yml to use the latest features and fixes. * Update docker-compose.yml * Update docker-compose.yml * Update meta.json * Update Autobase description in meta.json Revised the Autobase package description to clarify it as a self-hosted DBaaS alternative to cloud-managed databases. * Add Cloudreve template (#649) Self-hosted file management and sharing system with multi-cloud storage support. Includes PostgreSQL and Redis for database and caching. * Update to Umami 3.0.3 (#668) * Update Umami version from v2.20.2 to v3.0.3 * Update Umami Docker image to version 3.0.3 * fix: tailscale exitnode authkey env (#669) * Add qbitwebui (#675) * Add qBittorrent Web UI template * Fix healthcheck bug * Create INSTRUCTIONS.md * Rename INSTRUCTIONS.md to instructions.md * feat: add Moltbot template (#683) * feat: add Moltbot template Add template for Moltbot - a WhatsApp gateway CLI with Pi RPC agent. - Uses official ghcr.io/moltbot/moltbot:latest image - Exposes ports 18789 (gateway) and 18790 (bridge) - Includes persistent volumes for config and workspace - Auto-generates gateway token - Optional Claude AI integration support Co-Authored-By: Claude * Update docker-compose.yml * Enhance Moltbot configuration in docker-compose and template files - Added CLAWDBOT_GATEWAY_URL and OPENROUTER_API_KEY to docker-compose.yml - Updated service binding to 'auto' and added init: true for improved service management - Defined CLAWDBOT_GATEWAY_PORT and CLAWDBOT_BRIDGE_PORT in template.toml - Included CLAWDBOT_PLUGINS for plugin configuration in template.toml * Add Moltbot entry to meta.json - Introduced a new entry for Moltbot, a WhatsApp gateway CLI with Pi RPC agent. - Included details such as version, description, logo, links, and relevant tags for better discoverability and integration. --------- Co-authored-by: Claude Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Mauricio Siu --------- Co-authored-by: Sunil Shrestha Co-authored-by: Rabithua Co-authored-by: Mauricio Siu Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com> Co-authored-by: Crackvignoule Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com> Co-authored-by: Thiago MadPin Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com> Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com> Co-authored-by: Harikrishnan Dhanasekaran Co-authored-by: Kamil Dzieniszewski Co-authored-by: Nick Anderson Co-authored-by: lefolalan Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com> Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com> Co-authored-by: Benjamin Nussbaum Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com> Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com> Co-authored-by: Sanjeevi Subramani Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com> Co-authored-by: Jemg Co-authored-by: Jainil Prajapati <86187588+jaainil@users.noreply.github.com> Co-authored-by: Ye Liu Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Carl-Gerhard Lindesvärd <1987198+lindesvard@users.noreply.github.com> Co-authored-by: Huy Pham Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: Louan Fontenele Co-authored-by: Alexey Fedorov Co-authored-by: 0zul <26915998+0zul@users.noreply.github.com> Co-authored-by: Pascal Oberbeck <35005267+poberbeck@users.noreply.github.com> Co-authored-by: Pascal Oberbeck Co-authored-by: Christus Vincent Co-authored-by: Huba Tuba <57007485+floxay@users.noreply.github.com> Co-authored-by: Pablo Moraga Sandoval <72164630+Ketbome@users.noreply.github.com> Co-authored-by: Firefly <77047823+Yuri-NagaSaki@users.noreply.github.com> Co-authored-by: Naterfute <106989409+naterfute@users.noreply.github.com> Co-authored-by: Vitaliy Kukharik <37010174+vitabaks@users.noreply.github.com> Co-authored-by: aurorarissime Co-authored-by: фырат ёздэн <31664778+fir4tozden@users.noreply.github.com> Co-authored-by: JoshuaRileyDev <59296334+JoshuaRileyDev@users.noreply.github.com> Co-authored-by: Claude --- blueprints/ackee/instructions.md | 2 +- blueprints/moltbot/docker-compose.yml | 35 ++++++++++++++++ blueprints/moltbot/moltbot.svg | 60 +++++++++++++++++++++++++++ blueprints/moltbot/template.toml | 18 ++++++++ meta.json | 21 ++++++++++ 5 files changed, 135 insertions(+), 1 deletion(-) create mode 100644 blueprints/moltbot/docker-compose.yml create mode 100644 blueprints/moltbot/moltbot.svg create mode 100644 blueprints/moltbot/template.toml diff --git a/blueprints/ackee/instructions.md b/blueprints/ackee/instructions.md index 31869178..b107d360 100644 --- a/blueprints/ackee/instructions.md +++ b/blueprints/ackee/instructions.md @@ -1,4 +1,4 @@ -## TODO +## Instructions We don't have nothing to show here.... diff --git a/blueprints/moltbot/docker-compose.yml b/blueprints/moltbot/docker-compose.yml new file mode 100644 index 00000000..e0014a7a --- /dev/null +++ b/blueprints/moltbot/docker-compose.yml @@ -0,0 +1,35 @@ +services: + moltbot-gateway: + image: ghcr.io/moltbot/clawdbot:2026.1.24-1 + environment: + HOME: /home/node + TERM: xterm-256color + CLAWDBOT_GATEWAY_TOKEN: ${CLAWDBOT_GATEWAY_TOKEN} + CLAUDE_AI_SESSION_KEY: ${CLAUDE_AI_SESSION_KEY} + CLAUDE_WEB_SESSION_KEY: ${CLAUDE_WEB_SESSION_KEY} + CLAUDE_WEB_COOKIE: ${CLAUDE_WEB_COOKIE} + CLAWDBOT_GATEWAY_URL: ws://0.0.0.0:18789 + OPENROUTER_API_KEY: ${OPENROUTER_API_KEY} + volumes: + - moltbot-config:/home/node/.clawdbot + - moltbot-workspace:/home/node/clawd + ports: + - "18789" + - "18790" + init: true + restart: unless-stopped + command: + [ + "node", + "dist/index.js", + "gateway", + "--bind", + "auto", + "--port", + "18789", + "--allow-unconfigured" + ] + +volumes: + moltbot-config: + moltbot-workspace: \ No newline at end of file diff --git a/blueprints/moltbot/moltbot.svg b/blueprints/moltbot/moltbot.svg new file mode 100644 index 00000000..7bfb7fc4 --- /dev/null +++ b/blueprints/moltbot/moltbot.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/blueprints/moltbot/template.toml b/blueprints/moltbot/template.toml new file mode 100644 index 00000000..06072a68 --- /dev/null +++ b/blueprints/moltbot/template.toml @@ -0,0 +1,18 @@ +[variables] +gateway_token = "${password:32}" + + +[config] +[[config.domains]] +serviceName = "moltbot-gateway" +port = 18789 +host = "${domain}" + +[config.env] +CLAWDBOT_GATEWAY_TOKEN = "${gateway_token}" +CLAWDBOT_GATEWAY_PORT = 18789 +CLAWDBOT_BRIDGE_PORT = 18790 +CLAWDBOT_GATEWAY_BIND="lan" +CLAWDBOT_PLUGINS="discord,memory-core" +# Get here https://openrouter.ai/ +OPENROUTER_API_KEY="YOUR-API-KEY" diff --git a/meta.json b/meta.json index 7e59e5a0..12173567 100644 --- a/meta.json +++ b/meta.json @@ -4026,6 +4026,27 @@ "scheduling" ] }, + { + "id": "moltbot", + "name": "Moltbot", + "version": "2026.1.25", + "description": "WhatsApp gateway CLI with Pi RPC agent - self-hosted AI-powered messaging platform", + "logo": "moltbot.svg", + "links": { + "github": "https://github.com/moltbot/moltbot", + "website": "https://molt.bot", + "docs": "https://docs.molt.bot" + }, + "tags": [ + "whatsapp", + "ai", + "messaging", + "chatbot", + "gateway", + "self-hosted", + "automation" + ] + }, { "id": "morphos", "name": "Morphos", From c8183527214a7ee21d784950a466bb26364e0fc3 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Thu, 12 Feb 2026 10:13:54 -0600 Subject: [PATCH 2/3] New version (#708) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(librechat): add LibreChat blueprint with compose, toml, metadata, links and tags * fix: rename templates to template.toml * fix(librechat): rename api service to librechat in docker-compose.yml * Update blueprints/librechat/template.toml * Update blueprints/librechat/template.toml * fix(librechat): add version under [config] and remove stray [config.mounts] header * fix(librechat): remove predefined persistent volume mounts from template.toml * docs(librechat): add authentication reference link to docker-compose.yml * feat: add Rote template - Add Rote deployment template with frontend, backend, and PostgreSQL services - Configure domain routing for frontend (port 80) and backend (port 3000) - Set up automatic password generation and environment variables - Use latest image tag by default - Add logo and metadata to meta.json * fix: process meta.json to fix formatting and sorting * Update GitHub workflows to target 'canary' branch for meta validation * Update pnpm-lock.yaml to upgrade various dependencies, including '@codemirror/autocomplete', '@radix-ui/react-dialog', and React packages to their latest versions. This includes updates to '@types/react' and '@types/react-dom' for improved compatibility and performance. * Enhance GitHub workflows: add production deployment configuration and target 'canary' branch for pull requests. * Refactor GitHub workflow: comment out build preview steps for clarity and future modifications. * Remove unnecessary blank line in deploy-preview.yml for improved readability. * Refactor GitHub workflow: uncomment build preview steps for improved deployment process and clarity. * Update template.toml (#555) * Update template.toml * Update template.toml * Update template.toml * fix: change VITE_API_BASE to http:// for traefik.me compatibility * changed image from sknnr/enshrouded-dedicated-server to mornedhels/enshrouded-server for autoupdate and easier config * Add Openinary Template (#567) * feat: add Openinary template * feat: update Openinary configuration to support ALLOWED_ORIGIN and refactor domain variable * fix: correct DEFAULT_DOMAIN environment variable reference in docker-compose.yml (#562) * add rustfs template (#568) * feat: add pull request template for improved contribution guidelines * fix: update pull request template to clarify issue closing keywords * feat: add validation scripts and configuration for Docker Compose and template files - Introduced a GitHub Actions workflow to validate Docker Compose files and template.toml on pull requests. - Added helper functions for generating random values and processing variables in templates. - Implemented validation scripts for checking the structure, syntax, and best practices of Docker Compose and template files. - Created necessary TypeScript types and configuration files for the build scripts. * Add Passbolt template blueprint to Dokploy templates (#376) * feat(templates): add Passbolt blueprint for Dokploy - Add docker-compose.yml defining services for Passbolt and MariaDB - Create template.toml with configurable domain, email, and database credentials - Add meta.json with metadata, tags, and link to logo * fix(meta): sort meta.json entries * fix: passbolt template had several issues that broke deployment - env variables were using old array format, changed to new table format - mariadb healthcheck was broken (wrong command for mariadb 11) - missing volume mounts for gpg keys, jwt tokens, and database - setup instructions weren't visible to users, moved to docker-compose - email config had circular references causing warnings - tested admin user creation and confirmed working everything works now, fully tested * Update blueprints/passbolt/template.toml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat: Add Kokoro TTS FastAPI template (#353) (#403) * feat: Add Kokoro TTS FastAPI template (#353) - Add CPU-optimized docker-compose.yml with source build - Add GPU-optimized docker-compose-gpu.yml for NVIDIA support - Add comprehensive template.toml with OpenAI-compatible API docs - Add kokoro-tts.svg logo and meta.json entry - Support streaming audio, timestamps, and multi-language TTS - Resolves #353 * updated the meta.json for the build errors * removed the docker-compose-gpu.yml file * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * chore: remove package-lock.json file from the app directory * chore: update Tolgee to latest version and fix SMTP config typo (#432) * chore: update Tolgee to latest version and fix SMTP config typo * Update docker-compose.yml * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * fix: improve Docker Compose validation workflow to handle subshell issues - Converted the handling of COMPOSE_FILES from a pipe to an array to ensure error propagation in the parent shell. - Updated the loop to iterate over the array for better reliability in the validation process. * refactor: enhance Docker Compose validation workflow to improve error handling - Replaced the pipe with an array to handle directory names, ensuring that errors within the loop propagate correctly to the parent shell. - Updated the loop structure for better reliability in processing the directories. * Feat: Add parseable (#460) * Add parseable * Update docker-compose.yml * Update docker-compose.yml * Update blueprints/parseable/template.toml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Mauricio Siu * feat: add ChirpStack LoRaWAN Network Server template (#486) * feat: add ChirpStack LoRaWAN Network Server template Add complete ChirpStack v4 template with: - Main ChirpStack server with web UI - UDP and Basics Station gateway bridges - REST API interface - PostgreSQL database with PostGIS extensions - Redis cache - Mosquitto MQTT broker Default configuration for EU868 region with secure random credentials. Supports all LoRaWAN frequency bands globally. * fix(chirpstack): use original configurations from chirpstack-docker repo Update template.toml to use exact configuration files from the chirpstack-docker repository instead of simplified versions: - Use original chirpstack.toml with all 15 enabled regions - Use original gateway bridge configuration with documentation links - Use complete Basics Station EU868 config with frequency plans - Keep original Mosquitto and PostgreSQL initialization scripts Template size increased from 131 to 219 lines (4.7KB) to include comprehensive default configurations that match the official setup. * feat: add all 38 region configuration files * fix(chirpstack): add volume mounts to expose config files to containers * fix(chirpstack): remove read-only flag * fix(chirpstack): correct file paths for configuration mounts in docker-compose and template files * fix: update volume paths to be on correct directory level * fix: configure template for dokploy-network with proper DNS resolution - Add dokploy-network configuration to docker-compose.yml - Replace environment variable placeholders with actual service hostnames - Change PostgreSQL DSN from $POSTGRESQL_HOST to postgres - Change Redis server from $REDIS_HOST to redis - Replace $MQTT_BROKER_HOST with mosquitto in all 39 region configurations These changes ensure Docker DNS resolution works correctly by: - Using dokploy-network (overlay) instead of bridge network - Using service names directly in TOML config files (TOML doesn't expand env vars) - Enabling proper service discovery between containers This resolves DNS resolution failures that caused ChirpStack to fail connecting to PostgreSQL and MQTT services during deployment. * fix: add missing network configurations for all services in docker-compose * feat: add internal services to config.domains for proper network configuration * Update docker-compose.yml * fix: enhance domain validation in template validator - Updated the TemplateValidator to ensure that if the 'host' field is provided, it must be a valid string. - Added comments to clarify that 'host' is optional for internal services. * refactor: remove redundant host validation in template validator - Removed the validation for the 'host' field in the TemplateValidator, as it is optional for internal services and does not require a type check if not provided. * refactor: remove internal service domain configurations from template - Eliminated the domain configurations for internal services (Postgres, Redis, Mosquitto) from the template.toml file, streamlining the configuration for better clarity and maintainability. --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Mauricio Siu * Update section title from 'Suggestions' to 'Requirements' * Feat : Add MCSManager template support (#521) (#522) * feat: Add MCSManager template support (#521) * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat: Add MediaCMS template (#524) * Feat : Add Quant-Ux template -#173 (#525) * Feat : Add Quant-Ux template -#173 * Remove extra newline in docker-compose.yml * Update blueprints/quant-ux/docker-compose.yml * Update blueprints/quant-ux/docker-compose.yml * Update blueprints/quant-ux/docker-compose.yml * Update blueprints/quant-ux/docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * fix(rustdesk): use explicit ports, use port 21118 on hbbs instead of hbbr (#526) * fix: use explicit ports, use port 21118 on hbbs instead of hbbr * fix: whitespace character in rustdesk * feat: Add anytype template (#527) * add anytype template * sort * Update name field for Anytype in meta.json * Update meta.json * Update docker-compose.yml * Update blueprints/anytype/docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * refactor: remove dokploy-network configurations from multiple docker-compose files - Removed the external dokploy-network configuration from various services' docker-compose.yml files to streamline network management. - This change simplifies the setup and ensures consistency across blueprints. * chore: upgrade Infisical from v0.90.1 to v0.135.0 (#529) * chore: upgrade Infisical from v0.90.1 to v0.135.0 * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * fix: update pull request template link for clarity - Changed the link in the pull request template from 'general suggestions' to 'general requirements' to better reflect the content and ensure users follow the correct guidelines when creating templates. * chore: add section for screenshots or videos in pull request template - Introduced a new section in the pull request template to encourage contributors to include screenshots or videos, enhancing the clarity and context of their submissions. * Feat : Add MuleSoft ESB Runtime Template (#498) * added the mulesoft esb template * updated the compose and the meta.json * feat(mulesoft-esb): update image and add dynamic env configuration - Updated image to hari1367709/mule-esb:latest - Added dynamic HTTP_PORT for runtime port configuration - Added MULE_VERSION environment variable for Mule ESB version selection * updated the meta.json to use the version as latest * added a comment line to the template file * updated the mule runtime image * fix(mulesoft-esb): update ports configuration to follow guidelines * updated the port to use the env(HTTP_PORT) * Update docker-compose.yml * Update docker-compose.yml * Update blueprints/mulesoft-esb/docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat(blueprint): update trmnl-byos-laravel template (#533) * feat(blueprint): update trmnl-byos-laravel template * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat(blueprint): peerdb template (#579) * feat(blueprint): initial attempt at peerdb template * fix: entrypoint and healthcheck * fix: entrypoint * fix: temporarily remove network * fix: temporal port * chore: remove 36987 for minio * fix: remove peerdb 9900 port exposure * fix: port for console * fix: minio env fix * fix: expose peerdb and minio to dokploy network * fix(peerdb): add defaults * fix: remove extra hosts * fix: remove network entries * fix: use consistent environment variables * feat: add Bluesky PDS template (#542) * feat: Bluesky PDS template * chore: add bluesky pds svg * chore: metadata for bluesky pds * yaml > yml * pnpm lock * fix: correct rotation key config * fix volumes * fix: volumes in the pds compose * define volumes in compose * fix: 32 bit rotation key * create pds.env correctly * some extra fixes * more extra fixes * a blank line * update pnpm lock * Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation (#548) * Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation * Fix METRICS_CONFIG environment variable: use single-line JSON format * Fix template.toml: use correct [config.env] syntax for environment variables * Fix docker-compose.yml: add env_file reference to load environment variables * Delete blueprints/dokploy-prom-monitoring-extension/README.md * Delete test-dokploy-prom-monitoring-extension.sh --------- Co-authored-by: Sanjeevi Subramani Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat: improve RustDesk template configuration (#571) * feat: improve RustDesk template configuration - Add comprehensive environment variables for RustDesk server - Add RELAY_HOST, API_SERVER, ID_SERVER, and ENCRYPTION_KEY variables - Follow Dokploy best practices (no container_name, proper port format) - Use restart: unless-stopped policy - Add encryption key generation with password helper * fix: use explicit port mapping for RustDesk services RustDesk requires explicit port bindings (host:container format) to function properly. The service uses specific ports for: - 21115-21116 (TCP/UDP): hbbs service for ID and NAT traversal - 21117-21119 (TCP): hbbr relay service Without explicit port mapping, RustDesk clients cannot establish connections to the server. This is an exception to Dokploy's general port guidelines due to RustDesk's specific networking requirements. --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat: add Mumble voice chat server template (#572) * feat: add Mumble voice chat server template - Add Mumble VoIP server blueprint with docker-compose.yml - Configure environment variables for superuser password, welcome text, and max users - Add template.toml with auto-generated secure password - Follow Dokploy best practices (no container_name, proper port format) - Add Mumble metadata to meta.json with proper tags - Support for TCP and UDP on port 64738 * Update template.toml * fix: correct JSON formatting in meta.json for Mumble template entry --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Mauricio Siu * fix: update WireGuard Easy template for proper functionality (#573) * fix: update WireGuard Easy template for proper functionality - Changed to named volume (etc_wireguard) instead of host path mount - Added explicit port mappings (51820:51820/udp, 51821:51821/tcp) required for WireGuard - Updated environment variables to use correct WG_HOST and PASSWORD format - Added all required WireGuard environment variables: - WG_PORT, PORT, WG_MTU, WG_DEFAULT_DNS, WG_ALLOWED_IPS - WG_POST_UP/WG_POST_DOWN for iptables rules - Added NET_RAW capability for proper network operations - Simplified template.toml to use WIREGUARD_HOST and WIREGUARD_PASSWORD - Removed explicit networks config to enable Dokploy's isolated deployment - Template now works with Dokploy's automatic network isolation This configuration has been tested and confirmed working with isolated deployment enabled. * Update template.toml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * add: restart policy to MinIO service (#576) restart: unless-stopped is a Docker restart policy that automatically restarts a container if it stops due to an error or Docker daemon restart * Updating copilot instructions.md and AGENTS.md (#452) * docs: add copilot instructions for project development Added comprehensive documentation file (.github/copilot-instructions.md) that provides detailed guidance on the Dokploy Open Source Templates project structure, development workflow, and conventions. The document covers the project overview, key files and directories, development workflow for adding/updating templates, local development setup, CI/CD processes, and established conventions and patterns. This documentation will help onboard new contributors and ensure consistent development practices across the project. * docs(copilot-instructions): enhance project overview and development guide Updated copilot instructions to reflect expanded app capabilities (200+ apps, TypeScript integration, Fuse.js search) and detailed processes for templates, local dev, and CI/CD for improved clarity and accuracy. * refactor: remove frontend development instructions from AGENTS.md and update contributing guidelines - Removed frontend development commands from AGENTS.md to streamline the document. - Updated CONTRIBUTING.md by removing the recommendation to set `restart: unless-stopped` for services. --------- Co-authored-by: Mauricio Siu * Add trailbase template (#590) * Add trailbase * Add comment on mounting local directory * Update meta.json Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix: openpanel and migrate to v2 (#594) * refactor: update docker-compose.yml to include version and restart policy (#599) * feat(blueprint): mage ai template (#601) * feat(blueprint): template for mage-ai * fix: add healthcheck for mage-ai * docs: update copilot instructions to emphasize version pinning in docker-compose.yml Clarified the importance of pinning image versions in docker-compose.yml and explicitly stated to avoid using the `latest` tag to prevent potential issues with template functionality when upstream images change. * refactor: enhance Docker Compose validation workflow Updated the GitHub Actions workflow for validating Docker Compose files by streamlining the detection of changed blueprints and improving the validation process. Removed redundant steps and consolidated the validation of docker-compose.yml and template.toml files into a more efficient structure. Added clearer output messages for validation results and ensured that best practices are checked for each blueprint. This refactor aims to improve maintainability and clarity in the CI/CD process. * fix: update zitadel default instance features (#544) * Add Reactive Resume template (#603) * Initial plan * Add Reactive Resume template with docker-compose, template.toml, and meta.json entry Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> * Fix MinIO storage path alignment between template.toml and docker-compose.yml Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> * Update docker-compose.yml --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> * [WIP] Fix mounted prometheus.yml file not working (#605) * Initial plan * Fix Prometheus mounted prometheus.yml file by adding volume mount Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> * Update blueprints/prometheus/template.toml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * docs: update copilot instructions to enforce open source requirement Added a clear requirement stating that all services must be open source and only applications with open-source licenses (e.g., MIT, Apache, GPL, AGPL) are allowed. This update aims to ensure compliance and maintain the integrity of the project. * Fix Cap.so template MinIO deployment failure (#604) * Initial plan * Fix Cap.so MinIO image to use official quay.io image Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> * Fix MinIO healthcheck to use curl instead of mc Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> * Update .gitignore --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> * Fix Discourse template manifest error - update to bitnamilegacy/discourse:3.5.0 (#606) * Initial plan * Fix Discourse template by updating to bitnamilegacy/discourse:3.5.0 Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> * Remove pull request trigger from deploy-preview workflow * Enhance copilot instructions by adding verification steps for Docker images and clarifying URL variable usage. Emphasize the importance of verifying image existence before committing to prevent deployment failures. * Add Easy!Appointments template (#608) * Initial plan * Add Easyappointments template with docker-compose, template.toml, and meta.json entry Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> * Update blueprints/easyappointments/template.toml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update template.toml --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Add Dolibarr ERP & CRM template (#610) * Initial plan * Add Dolibarr ERP & CRM template Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> * Update template.toml * Update blueprints/dolibarr/docker-compose.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * feat: add Syncthing Template (#636) * Adiciona template do Syncthing com arquivos de configuração e ícone * Remove versão do Docker Compose do template do Syncthing * Update Umami to version v2.20.2 (#641) * Feat : Add InstantDB template (#224) (#530) * feat: add InstantDB template * added the server service also * removed the external network * Update docker-compose.yml * Update blueprints/instantdb/docker-compose.yml * Update blueprints/instantdb/docker-compose.yml * Update docker-compose.yml * Update blueprints/instantdb/template.toml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * [New Template] Added Lavalink template for dokploy (#535) * Add initial Lavalink configuration template * Added lavalink.svg logo * Create docker-compose.yml for Lavalink setup Add Docker Compose configuration for Lavalink service. * Modify healthcheck interval in docker-compose.yml Increased healthcheck interval from 10s to 100s. * Add Lavalink metadata to meta.json Added metadata for Lavalink audio sending node. * Update server_port variable to use ${port} * Change server port variable to randomPort * Change port variable to randomPort in template.toml * Change port variable in template.toml * Update server port in template.toml * Fix formatting in template.toml for server config * style: Reformat lavalink entry in meta.json. * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * chore(blueprint): update Appwrite services to v1.8 (#383) * Update Appwrite version docker images and environment variables * Add separate domains for functions and sites, update environment variables, replace insecure default passwords * Update Appwrite version from 1.6.1 to 1.7.4 in `meta.json` * Fix envs and update domains * Add missing volume mounts for sites * Fix config file syntax * Update runtimes network configuration in template.toml * Update Appwrite to 1.8 * Update appwrite image version to 1.8.0 * Add logging configuration to docker-compose * New Templates (#586) * feat(librechat): add LibreChat blueprint with compose, toml, metadata, links and tags * fix: rename templates to template.toml * fix(librechat): rename api service to librechat in docker-compose.yml * Update blueprints/librechat/template.toml * Update blueprints/librechat/template.toml * fix(librechat): add version under [config] and remove stray [config.mounts] header * fix(librechat): remove predefined persistent volume mounts from template.toml * docs(librechat): add authentication reference link to docker-compose.yml * feat: add Rote template - Add Rote deployment template with frontend, backend, and PostgreSQL services - Configure domain routing for frontend (port 80) and backend (port 3000) - Set up automatic password generation and environment variables - Use latest image tag by default - Add logo and metadata to meta.json * fix: process meta.json to fix formatting and sorting * Update GitHub workflows to target 'canary' branch for meta validation * Update pnpm-lock.yaml to upgrade various dependencies, including '@codemirror/autocomplete', '@radix-ui/react-dialog', and React packages to their latest versions. This includes updates to '@types/react' and '@types/react-dom' for improved compatibility and performance. * Enhance GitHub workflows: add production deployment configuration and target 'canary' branch for pull requests. * Refactor GitHub workflow: comment out build preview steps for clarity and future modifications. * Remove unnecessary blank line in deploy-preview.yml for improved readability. * Refactor GitHub workflow: uncomment build preview steps for improved deployment process and clarity. * Update template.toml (#555) * Update template.toml * Update template.toml * Update template.toml * fix: change VITE_API_BASE to http:// for traefik.me compatibility * changed image from sknnr/enshrouded-dedicated-server to mornedhels/enshrouded-server for autoupdate and easier config * Add Openinary Template (#567) * feat: add Openinary template * feat: update Openinary configuration to support ALLOWED_ORIGIN and refactor domain variable * fix: correct DEFAULT_DOMAIN environment variable reference in docker-compose.yml (#562) * add rustfs template (#568) * feat: add pull request template for improved contribution guidelines * fix: update pull request template to clarify issue closing keywords * feat: add validation scripts and configuration for Docker Compose and template files - Introduced a GitHub Actions workflow to validate Docker Compose files and template.toml on pull requests. - Added helper functions for generating random values and processing variables in templates. - Implemented validation scripts for checking the structure, syntax, and best practices of Docker Compose and template files. - Created necessary TypeScript types and configuration files for the build scripts. * Add Passbolt template blueprint to Dokploy templates (#376) * feat(templates): add Passbolt blueprint for Dokploy - Add docker-compose.yml defining services for Passbolt and MariaDB - Create template.toml with configurable domain, email, and database credentials - Add meta.json with metadata, tags, and link to logo * fix(meta): sort meta.json entries * fix: passbolt template had several issues that broke deployment - env variables were using old array format, changed to new table format - mariadb healthcheck was broken (wrong command for mariadb 11) - missing volume mounts for gpg keys, jwt tokens, and database - setup instructions weren't visible to users, moved to docker-compose - email config had circular references causing warnings - tested admin user creation and confirmed working everything works now, fully tested * Update blueprints/passbolt/template.toml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat: Add Kokoro TTS FastAPI template (#353) (#403) * feat: Add Kokoro TTS FastAPI template (#353) - Add CPU-optimized docker-compose.yml with source build - Add GPU-optimized docker-compose-gpu.yml for NVIDIA support - Add comprehensive template.toml with OpenAI-compatible API docs - Add kokoro-tts.svg logo and meta.json entry - Support streaming audio, timestamps, and multi-language TTS - Resolves #353 * updated the meta.json for the build errors * removed the docker-compose-gpu.yml file * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * chore: remove package-lock.json file from the app directory * chore: update Tolgee to latest version and fix SMTP config typo (#432) * chore: update Tolgee to latest version and fix SMTP config typo * Update docker-compose.yml * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * fix: improve Docker Compose validation workflow to handle subshell issues - Converted the handling of COMPOSE_FILES from a pipe to an array to ensure error propagation in the parent shell. - Updated the loop to iterate over the array for better reliability in the validation process. * refactor: enhance Docker Compose validation workflow to improve error handling - Replaced the pipe with an array to handle directory names, ensuring that errors within the loop propagate correctly to the parent shell. - Updated the loop structure for better reliability in processing the directories. * Feat: Add parseable (#460) * Add parseable * Update docker-compose.yml * Update docker-compose.yml * Update blueprints/parseable/template.toml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Mauricio Siu * feat: add ChirpStack LoRaWAN Network Server template (#486) * feat: add ChirpStack LoRaWAN Network Server template Add complete ChirpStack v4 template with: - Main ChirpStack server with web UI - UDP and Basics Station gateway bridges - REST API interface - PostgreSQL database with PostGIS extensions - Redis cache - Mosquitto MQTT broker Default configuration for EU868 region with secure random credentials. Supports all LoRaWAN frequency bands globally. * fix(chirpstack): use original configurations from chirpstack-docker repo Update template.toml to use exact configuration files from the chirpstack-docker repository instead of simplified versions: - Use original chirpstack.toml with all 15 enabled regions - Use original gateway bridge configuration with documentation links - Use complete Basics Station EU868 config with frequency plans - Keep original Mosquitto and PostgreSQL initialization scripts Template size increased from 131 to 219 lines (4.7KB) to include comprehensive default configurations that match the official setup. * feat: add all 38 region configuration files * fix(chirpstack): add volume mounts to expose config files to containers * fix(chirpstack): remove read-only flag * fix(chirpstack): correct file paths for configuration mounts in docker-compose and template files * fix: update volume paths to be on correct directory level * fix: configure template for dokploy-network with proper DNS resolution - Add dokploy-network configuration to docker-compose.yml - Replace environment variable placeholders with actual service hostnames - Change PostgreSQL DSN from $POSTGRESQL_HOST to postgres - Change Redis server from $REDIS_HOST to redis - Replace $MQTT_BROKER_HOST with mosquitto in all 39 region configurations These changes ensure Docker DNS resolution works correctly by: - Using dokploy-network (overlay) instead of bridge network - Using service names directly in TOML config files (TOML doesn't expand env vars) - Enabling proper service discovery between containers This resolves DNS resolution failures that caused ChirpStack to fail connecting to PostgreSQL and MQTT services during deployment. * fix: add missing network configurations for all services in docker-compose * feat: add internal services to config.domains for proper network configuration * Update docker-compose.yml * fix: enhance domain validation in template validator - Updated the TemplateValidator to ensure that if the 'host' field is provided, it must be a valid string. - Added comments to clarify that 'host' is optional for internal services. * refactor: remove redundant host validation in template validator - Removed the validation for the 'host' field in the TemplateValidator, as it is optional for internal services and does not require a type check if not provided. * refactor: remove internal service domain configurations from template - Eliminated the domain configurations for internal services (Postgres, Redis, Mosquitto) from the template.toml file, streamlining the configuration for better clarity and maintainability. --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Mauricio Siu * Update section title from 'Suggestions' to 'Requirements' * Feat : Add MCSManager template support (#521) (#522) * feat: Add MCSManager template support (#521) * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat: Add MediaCMS template (#524) * Feat : Add Quant-Ux template -#173 (#525) * Feat : Add Quant-Ux template -#173 * Remove extra newline in docker-compose.yml * Update blueprints/quant-ux/docker-compose.yml * Update blueprints/quant-ux/docker-compose.yml * Update blueprints/quant-ux/docker-compose.yml * Update blueprints/quant-ux/docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * fix(rustdesk): use explicit ports, use port 21118 on hbbs instead of hbbr (#526) * fix: use explicit ports, use port 21118 on hbbs instead of hbbr * fix: whitespace character in rustdesk * feat: Add anytype template (#527) * add anytype template * sort * Update name field for Anytype in meta.json * Update meta.json * Update docker-compose.yml * Update blueprints/anytype/docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * refactor: remove dokploy-network configurations from multiple docker-compose files - Removed the external dokploy-network configuration from various services' docker-compose.yml files to streamline network management. - This change simplifies the setup and ensures consistency across blueprints. * chore: upgrade Infisical from v0.90.1 to v0.135.0 (#529) * chore: upgrade Infisical from v0.90.1 to v0.135.0 * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * fix: update pull request template link for clarity - Changed the link in the pull request template from 'general suggestions' to 'general requirements' to better reflect the content and ensure users follow the correct guidelines when creating templates. * chore: add section for screenshots or videos in pull request template - Introduced a new section in the pull request template to encourage contributors to include screenshots or videos, enhancing the clarity and context of their submissions. * Feat : Add MuleSoft ESB Runtime Template (#498) * added the mulesoft esb template * updated the compose and the meta.json * feat(mulesoft-esb): update image and add dynamic env configuration - Updated image to hari1367709/mule-esb:latest - Added dynamic HTTP_PORT for runtime port configuration - Added MULE_VERSION environment variable for Mule ESB version selection * updated the meta.json to use the version as latest * added a comment line to the template file * updated the mule runtime image * fix(mulesoft-esb): update ports configuration to follow guidelines * updated the port to use the env(HTTP_PORT) * Update docker-compose.yml * Update docker-compose.yml * Update blueprints/mulesoft-esb/docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat(blueprint): update trmnl-byos-laravel template (#533) * feat(blueprint): update trmnl-byos-laravel template * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat(blueprint): peerdb template (#579) * feat(blueprint): initial attempt at peerdb template * fix: entrypoint and healthcheck * fix: entrypoint * fix: temporarily remove network * fix: temporal port * chore: remove 36987 for minio * fix: remove peerdb 9900 port exposure * fix: port for console * fix: minio env fix * fix: expose peerdb and minio to dokploy network * fix(peerdb): add defaults * fix: remove extra hosts * fix: remove network entries * fix: use consistent environment variables * feat: add Bluesky PDS template (#542) * feat: Bluesky PDS template * chore: add bluesky pds svg * chore: metadata for bluesky pds * yaml > yml * pnpm lock * fix: correct rotation key config * fix volumes * fix: volumes in the pds compose * define volumes in compose * fix: 32 bit rotation key * create pds.env correctly * some extra fixes * more extra fixes * a blank line * update pnpm lock * Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation (#548) * Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation * Fix METRICS_CONFIG environment variable: use single-line JSON format * Fix template.toml: use correct [config.env] syntax for environment variables * Fix docker-compose.yml: add env_file reference to load environment variables * Delete blueprints/dokploy-prom-monitoring-extension/README.md * Delete test-dokploy-prom-monitoring-extension.sh --------- Co-authored-by: Sanjeevi Subramani Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat: improve RustDesk template configuration (#571) * feat: improve RustDesk template configuration - Add comprehensive environment variables for RustDesk server - Add RELAY_HOST, API_SERVER, ID_SERVER, and ENCRYPTION_KEY variables - Follow Dokploy best practices (no container_name, proper port format) - Use restart: unless-stopped policy - Add encryption key generation with password helper * fix: use explicit port mapping for RustDesk services RustDesk requires explicit port bindings (host:container format) to function properly. The service uses specific ports for: - 21115-21116 (TCP/UDP): hbbs service for ID and NAT traversal - 21117-21119 (TCP): hbbr relay service Without explicit port mapping, RustDesk clients cannot establish connections to the server. This is an exception to Dokploy's general port guidelines due to RustDesk's specific networking requirements. --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat: add Mumble voice chat server template (#572) * feat: add Mumble voice chat server template - Add Mumble VoIP server blueprint with docker-compose.yml - Configure environment variables for superuser password, welcome text, and max users - Add template.toml with auto-generated secure password - Follow Dokploy best practices (no container_name, proper port format) - Add Mumble metadata to meta.json with proper tags - Support for TCP and UDP on port 64738 * Update template.toml * fix: correct JSON formatting in meta.json for Mumble template entry --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Mauricio Siu * fix: update WireGuard Easy template for proper functionality (#573) * fix: update WireGuard Easy template for proper functionality - Changed to named volume (etc_wireguard) instead of host path mount - Added explicit port mappings (51820:51820/udp, 51821:51821/tcp) required for WireGuard - Updated environment variables to use correct WG_HOST and PASSWORD format - Added all required WireGuard environment variables: - WG_PORT, PORT, WG_MTU, WG_DEFAULT_DNS, WG_ALLOWED_IPS - WG_POST_UP/WG_POST_DOWN for iptables rules - Added NET_RAW capability for proper network operations - Simplified template.toml to use WIREGUARD_HOST and WIREGUARD_PASSWORD - Removed explicit networks config to enable Dokploy's isolated deployment - Template now works with Dokploy's automatic network isolation This configuration has been tested and confirmed working with isolated deployment enabled. * Update template.toml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * add: restart policy to MinIO service (#576) restart: unless-stopped is a Docker restart policy that automatically restarts a container if it stops due to an error or Docker daemon restart --------- Co-authored-by: Sunil Shrestha Co-authored-by: Rabithua Co-authored-by: Mauricio Siu Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com> Co-authored-by: Crackvignoule Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com> Co-authored-by: Thiago MadPin Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com> Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com> Co-authored-by: Harikrishnan Dhanasekaran Co-authored-by: Kamil Dzieniszewski Co-authored-by: Nick Anderson Co-authored-by: lefolalan Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com> Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com> Co-authored-by: Benjamin Nussbaum Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com> Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com> Co-authored-by: Sanjeevi Subramani Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com> Co-authored-by: Jemg * Remove `container_name` from all containers * Remove expliced networks * Update blueprints/appwrite/docker-compose.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update password variables to use 32-character length * Update Appwrite description and tags in meta.json * Fix JSON formatting in meta.json by adding missing closing bracket * Fix formatting in meta.json by removing trailing spaces in tags array * Add missing SMS and Backblaze storage configuration options in template.toml * Update docker-compose.yml --------- Co-authored-by: Pascal Oberbeck Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Sunil Shrestha Co-authored-by: Rabithua Co-authored-by: Mauricio Siu Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com> Co-authored-by: Crackvignoule Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com> Co-authored-by: Thiago MadPin Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com> Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com> Co-authored-by: Harikrishnan Dhanasekaran Co-authored-by: Kamil Dzieniszewski Co-authored-by: Nick Anderson Co-authored-by: lefolalan Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com> Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com> Co-authored-by: Benjamin Nussbaum Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com> Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com> Co-authored-by: Sanjeevi Subramani Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com> Co-authored-by: Jemg Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Mauricio Siu * feat: emqx template (MQTT Broker) (#556) * feat: template for emqx * chore: process meta * fix: use websocket on port 443 instead of 8084 * docs: improve comments for emqx template * fix: use emqx service name * fix: use dummy domain instead of traefik * fix: explicitly list dokplok-network * fix(emqx): restart unless stopped * fix(emqx): add healthcheck * Dokploy Deployment for Mautic 5 (#564) * first draft * second * try 3 * 4 * Update docker-compose.yml * Update template.toml * Enhance healthchecks and service dependencies in Docker Compose Updated healthcheck configurations for Mautic and MySQL services to improve service reliability. Added conditions to ensure services wait for dependencies to be healthy before starting. * Update Mautic docker-compose with health checks and roles * fix: searxng template (#651) * fix: use major version for openpanel (#680) * Feat/minepanel template (#657) * feat: add Minepanel template * fix: pin images to v1.7.1 and use http for URLs * fix: remove explicit ports, Dokploy handles proxying * chore: process and sort meta.json * fix: consolidate domain variables to main_domain * fix: add version field to docker-compose.yml * Add Komari Monitor template with Docker Compose, icon, and metadata (#XXX) (#623) * Introduce Komari Monitor, a self-hosted server monitoring tool, with its corresponding Docker Compose configuration, icon, and metadata entry. * Add template.toml for configuration and environment variables. * Include necessary links for GitHub and documentation. * Add Misaka Danmu Server template with Docker Compose, icon, and metadata (#624) * Introduce Misaka Danmu Server, a self-hosted danmaku server for live streaming, with its corresponding Docker Compose configuration, icon, and metadata entry. * Add template.toml for configuration and environment variables. * Include necessary links for GitHub and documentation. * fix: pyrodactyl no longer uses main tag for it's latest release (#626) * fix: pyrodactyl no longer uses main tag for it's latest release * Remove custom network settings from docker-compose Removed custom network configuration from docker-compose. * Update MariaDB and Pyrodactyl images in Docker Compose * Add Jenkins blueprint template configuration (#634) - Created a new TOML configuration file for Jenkins blueprint. - Defined main domain variable and service configuration for Jenkins. - Set serviceName to "jenkins" with port 8080 and host as the main domain. * Update Autobase to version 2.5 (#647) * Update Autobase to version 2.5 Bump the autobase-console Docker image from version 2.2.0 to 2.5.2 in docker-compose.yml to use the latest features and fixes. * Update docker-compose.yml * Update docker-compose.yml * Update meta.json * Update Autobase description in meta.json Revised the Autobase package description to clarify it as a self-hosted DBaaS alternative to cloud-managed databases. * Add Cloudreve template (#649) Self-hosted file management and sharing system with multi-cloud storage support. Includes PostgreSQL and Redis for database and caching. * Update to Umami 3.0.3 (#668) * Update Umami version from v2.20.2 to v3.0.3 * Update Umami Docker image to version 3.0.3 * fix: tailscale exitnode authkey env (#669) * Add qbitwebui (#675) * Add qBittorrent Web UI template * Fix healthcheck bug * Create INSTRUCTIONS.md * Rename INSTRUCTIONS.md to instructions.md * feat: add Moltbot template (#683) * feat: add Moltbot template Add template for Moltbot - a WhatsApp gateway CLI with Pi RPC agent. - Uses official ghcr.io/moltbot/moltbot:latest image - Exposes ports 18789 (gateway) and 18790 (bridge) - Includes persistent volumes for config and workspace - Auto-generates gateway token - Optional Claude AI integration support Co-Authored-By: Claude * Update docker-compose.yml * Enhance Moltbot configuration in docker-compose and template files - Added CLAWDBOT_GATEWAY_URL and OPENROUTER_API_KEY to docker-compose.yml - Updated service binding to 'auto' and added init: true for improved service management - Defined CLAWDBOT_GATEWAY_PORT and CLAWDBOT_BRIDGE_PORT in template.toml - Included CLAWDBOT_PLUGINS for plugin configuration in template.toml * Add Moltbot entry to meta.json - Introduced a new entry for Moltbot, a WhatsApp gateway CLI with Pi RPC agent. - Included details such as version, description, logo, links, and relevant tags for better discoverability and integration. --------- Co-authored-by: Claude Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Mauricio Siu * feat: add Openclaw template (#694) * feat: rename Moltbot to Openclaw and update related configurations * fix: update Openclaw image version to 2026.1.29 in docker-compose.yml * fix: correct environment variable name for Openclaw gateway * fix: correct volume path for Openclaw workspace in docker-compose.yml * feat: rename Moltbot to Openclaw and update metadata * fix: moving 'openclaw' entry below so the file looks sorted * fix: add missing newline at end of meta.json * fix: update docker-compose.yml to use 'expose' instead of 'ports' and change bind option to 'lan' * feat: update Openclaw service configuration in docker-compose.yml and template.toml - Changed service name from 'openclaw-gateway' to 'openclaw' and updated image version. - Enhanced environment variables for better configuration management. - Added a new 'browser' service with health checks and updated volume paths. * refactor: update environment variable configuration in docker-compose.yml for Openclaw service --------- Co-authored-by: Mauricio Siu * fix: cloudflared documentation links & env variables (#699) * feat(blueprint): Cloudflare DDNS (#689) * feat: added Cloudflare DDNS template * fix: make CLOUDFLARE_API_TOKEN and DOMAINS mandatory env --------- Co-authored-by: Sunil Shrestha Co-authored-by: Rabithua Co-authored-by: Mauricio Siu Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com> Co-authored-by: Crackvignoule Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com> Co-authored-by: Thiago MadPin Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com> Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com> Co-authored-by: Harikrishnan Dhanasekaran Co-authored-by: Kamil Dzieniszewski Co-authored-by: Nick Anderson Co-authored-by: lefolalan Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com> Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com> Co-authored-by: Benjamin Nussbaum Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com> Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com> Co-authored-by: Sanjeevi Subramani Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com> Co-authored-by: Jemg Co-authored-by: Jainil Prajapati <86187588+jaainil@users.noreply.github.com> Co-authored-by: Ye Liu Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Carl-Gerhard Lindesvärd <1987198+lindesvard@users.noreply.github.com> Co-authored-by: Huy Pham Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: Louan Fontenele Co-authored-by: Alexey Fedorov Co-authored-by: 0zul <26915998+0zul@users.noreply.github.com> Co-authored-by: Pascal Oberbeck <35005267+poberbeck@users.noreply.github.com> Co-authored-by: Pascal Oberbeck Co-authored-by: Christus Vincent Co-authored-by: Huba Tuba <57007485+floxay@users.noreply.github.com> Co-authored-by: Pablo Moraga Sandoval <72164630+Ketbome@users.noreply.github.com> Co-authored-by: Firefly <77047823+Yuri-NagaSaki@users.noreply.github.com> Co-authored-by: Naterfute <106989409+naterfute@users.noreply.github.com> Co-authored-by: Vitaliy Kukharik <37010174+vitabaks@users.noreply.github.com> Co-authored-by: aurorarissime Co-authored-by: фырат ёздэн <31664778+fir4tozden@users.noreply.github.com> Co-authored-by: JoshuaRileyDev <59296334+JoshuaRileyDev@users.noreply.github.com> Co-authored-by: Claude Co-authored-by: vabs --- .../cloudflare-ddns/cloudflare-ddns.svg | 8 ++ blueprints/cloudflare-ddns/docker-compose.yml | 16 ++++ blueprints/cloudflare-ddns/template.toml | 9 ++ blueprints/cloudflared/docker-compose.yml | 4 +- blueprints/cloudflared/template.toml | 4 +- blueprints/openclaw/docker-compose.yml | 86 +++++++++++++++++++ blueprints/openclaw/openclaw.svg | 60 +++++++++++++ blueprints/openclaw/template.toml | 21 +++++ meta.json | 42 ++++++++- 9 files changed, 245 insertions(+), 5 deletions(-) create mode 100644 blueprints/cloudflare-ddns/cloudflare-ddns.svg create mode 100644 blueprints/cloudflare-ddns/docker-compose.yml create mode 100644 blueprints/cloudflare-ddns/template.toml create mode 100644 blueprints/openclaw/docker-compose.yml create mode 100644 blueprints/openclaw/openclaw.svg create mode 100644 blueprints/openclaw/template.toml diff --git a/blueprints/cloudflare-ddns/cloudflare-ddns.svg b/blueprints/cloudflare-ddns/cloudflare-ddns.svg new file mode 100644 index 00000000..efe800bc --- /dev/null +++ b/blueprints/cloudflare-ddns/cloudflare-ddns.svg @@ -0,0 +1,8 @@ + + + + + + DDNS + + diff --git a/blueprints/cloudflare-ddns/docker-compose.yml b/blueprints/cloudflare-ddns/docker-compose.yml new file mode 100644 index 00000000..179139d8 --- /dev/null +++ b/blueprints/cloudflare-ddns/docker-compose.yml @@ -0,0 +1,16 @@ +# For more details, see: +# - https://github.com/favonia/cloudflare-ddns +services: + cloudflare-ddns: + image: favonia/cloudflare-ddns:1 + network_mode: host + restart: unless-stopped + user: "1000:1000" + read_only: true + cap_drop: [all] + security_opt: [no-new-privileges:true] + environment: + - CLOUDFLARE_API_TOKEN=${CLOUDFLARE_API_TOKEN:?} + - DOMAINS=${DOMAINS:?} + - PROXIED=false + - IP6_PROVIDER=none diff --git a/blueprints/cloudflare-ddns/template.toml b/blueprints/cloudflare-ddns/template.toml new file mode 100644 index 00000000..f40da5ad --- /dev/null +++ b/blueprints/cloudflare-ddns/template.toml @@ -0,0 +1,9 @@ +variables = {} + +[config] +domains = [] +mounts = [] + +[config.env] +CLOUDFLARE_API_TOKEN = "" +DOMAINS = "example.org,www.example.org,example.io" diff --git a/blueprints/cloudflared/docker-compose.yml b/blueprints/cloudflared/docker-compose.yml index d9fc2741..b6bf5458 100644 --- a/blueprints/cloudflared/docker-compose.yml +++ b/blueprints/cloudflared/docker-compose.yml @@ -3,14 +3,14 @@ services: image: 'cloudflare/cloudflared:latest' environment: # Don't forget to set this in your Dokploy Environment - - 'TUNNEL_TOKEN=${CLOUDFLARE_TUNNEL_TOKEN}' + - 'TUNNEL_TOKEN=${CLOUDFLARE_TUNNEL_TOKEN:?}' network_mode: host restart: unless-stopped command: [ "tunnel", # More tunnel run parameters here: - # https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/configure-tunnels/tunnel-run-parameters/ + # https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/configure-tunnels/cloudflared-parameters/run-parameters/ "--no-autoupdate", #"--protocol", "http2", diff --git a/blueprints/cloudflared/template.toml b/blueprints/cloudflared/template.toml index 242197bd..7d2557cc 100644 --- a/blueprints/cloudflared/template.toml +++ b/blueprints/cloudflared/template.toml @@ -2,5 +2,7 @@ variables = {} [config] domains = [] -env = ["CLOUDFLARE_TUNNEL_TOKEN=\"\""] mounts = [] + +[config.env] +CLOUDFLARE_TUNNEL_TOKEN = "" diff --git a/blueprints/openclaw/docker-compose.yml b/blueprints/openclaw/docker-compose.yml new file mode 100644 index 00000000..e6aba49b --- /dev/null +++ b/blueprints/openclaw/docker-compose.yml @@ -0,0 +1,86 @@ +services: + openclaw: + image: "coollabsio/openclaw:2026.2.6" + environment: + - AUTH_USERNAME=${AUTH_USERNAME} + - AUTH_PASSWORD=${AUTH_PASSWORD} + - OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN} + - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} + - OPENAI_API_KEY=${OPENAI_API_KEY} + - OPENROUTER_API_KEY=${OPENROUTER_API_KEY} + - GEMINI_API_KEY=${GEMINI_API_KEY} + - XAI_API_KEY=${XAI_API_KEY} + - GROQ_API_KEY=${GROQ_API_KEY} + - MISTRAL_API_KEY=${MISTRAL_API_KEY} + - CEREBRAS_API_KEY=${CEREBRAS_API_KEY} + - VENICE_API_KEY=${VENICE_API_KEY} + - MOONSHOT_API_KEY=${MOONSHOT_API_KEY} + - KIMI_API_KEY=${KIMI_API_KEY} + - MINIMAX_API_KEY=${MINIMAX_API_KEY} + - ZAI_API_KEY=${ZAI_API_KEY} + - AI_GATEWAY_API_KEY=${AI_GATEWAY_API_KEY} + - OPENCODE_API_KEY=${OPENCODE_API_KEY} + - SYNTHETIC_API_KEY=${SYNTHETIC_API_KEY} + - COPILOT_GITHUB_TOKEN=${COPILOT_GITHUB_TOKEN} + - XIAOMI_API_KEY=${XIAOMI_API_KEY} + - OPENCLAW_PRIMARY_MODEL=${OPENCLAW_PRIMARY_MODEL} + - DEEPGRAM_API_KEY=${DEEPGRAM_API_KEY} + - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} + - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} + - AWS_REGION=${AWS_REGION:-us-east-1} + - AWS_SESSION_TOKEN=${AWS_SESSION_TOKEN} + - BEDROCK_PROVIDER_FILTER=${BEDROCK_PROVIDER_FILTER:-anthropic} + - OLLAMA_BASE_URL=${OLLAMA_BASE_URL} + - PORT=8080 + - OPENCLAW_GATEWAY_PORT=18789 + - OPENCLAW_GATEWAY_BIND=${OPENCLAW_GATEWAY_BIND:-loopback} + - OPENCLAW_STATE_DIR=/data/.openclaw + - OPENCLAW_WORKSPACE_DIR=/data/workspace + - BROWSER_CDP_URL=http://browser:9223 + - BROWSER_DEFAULT_PROFILE=${BROWSER_DEFAULT_PROFILE:-openclaw} + - BROWSER_EVALUATE_ENABLED=${BROWSER_EVALUATE_ENABLED:-true} + - BROWSER_SNAPSHOT_MODE=${BROWSER_SNAPSHOT_MODE:-efficient} + - BROWSER_REMOTE_TIMEOUT_MS=${BROWSER_REMOTE_TIMEOUT_MS:-1500} + - BROWSER_REMOTE_HANDSHAKE_TIMEOUT_MS=${BROWSER_REMOTE_HANDSHAKE_TIMEOUT_MS:-3000} + - HOOKS_ENABLED=${HOOKS_ENABLED:-false} + - HOOKS_PATH=${HOOKS_PATH:-/hooks} + - MOONSHOT_BASE_URL=${MOONSHOT_BASE_URL:-https://api.moonshot.ai/v1} + - KIMI_BASE_URL=${KIMI_BASE_URL:-https://api.moonshot.ai/anthropic} + - TELEGRAM_BOT_TOKEN=$TELEGRAM_BOT_TOKEN + - DISCORD_BOT_TOKEN=$DISCORD_BOT_TOKEN + - SLACK_BOT_TOKEN=$SLACK_BOT_TOKEN + - SLACK_APP_TOKEN=$SLACK_APP_TOKEN + - WHATSAPP_ENABLED=$WHATSAPP_ENABLED + - OPENCLAW_DOCKER_APT_PACKAGES=$OPENCLAW_DOCKER_APT_PACKAGES + volumes: + - "openclaw-data:/data" + depends_on: + browser: + condition: service_healthy + healthcheck: + test: ["CMD", "curl", "-sf", "http://127.0.0.1:8080/healthz"] + interval: 10s + timeout: 10s + retries: 5 + + + browser: + image: "coollabsio/openclaw-browser:latest" + environment: + - PUID=1000 + - PGID=1000 + - TZ=Etc/UTC + - CHROME_CLI=--remote-debugging-port=9222 + volumes: + - "browser-data:/config" + shm_size: 2g + healthcheck: + test: ["CMD-SHELL", "bash -c ':> /dev/tcp/127.0.0.1/9222' || exit 1"] + interval: 5s + timeout: 5s + retries: 10 + + +volumes: + openclaw-data: + browser-data: diff --git a/blueprints/openclaw/openclaw.svg b/blueprints/openclaw/openclaw.svg new file mode 100644 index 00000000..6d89f848 --- /dev/null +++ b/blueprints/openclaw/openclaw.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blueprints/openclaw/template.toml b/blueprints/openclaw/template.toml new file mode 100644 index 00000000..188d1e83 --- /dev/null +++ b/blueprints/openclaw/template.toml @@ -0,0 +1,21 @@ +[variables] +gateway_token = "${password:32}" +auth_username = "dokploy" +auth_password = "${password:32}" + +[config] +[[config.domains]] +serviceName = "openclaw" +port = 8080 +host = "${domain}" + +[config.env] +OPENCLAW_GATEWAY_TOKEN = "${gateway_token}" +OPENCLAW_GATEWAY_PORT = 18789 +AUTH_USERNAME="${auth_username}" +AUTH_PASSWORD="${auth_password}" +OPENCLAW_BRIDGE_PORT = 18790 +OPENCLAW_GATEWAY_BIND="lan" +OPENCLAW_PLUGINS="discord,memory-core" +# Get here https://openrouter.ai/ +OPENROUTER_API_KEY="YOUR-API-KEY" diff --git a/meta.json b/meta.json index 12173567..f7dca105 100644 --- a/meta.json +++ b/meta.json @@ -1299,6 +1299,23 @@ "console" ] }, + { + "id": "cloudflare-ddns", + "name": "Cloudflare DDNS", + "version": "1.15.1", + "description": "A small, feature-rich, and robust Cloudflare DDNS updater.", + "logo": "cloudflare-ddns.svg", + "links": { + "github": "https://github.com/favonia/cloudflare-ddns", + "website": "https://github.com/favonia/cloudflare-ddns", + "docs": "https://github.com/favonia/cloudflare-ddns" + }, + "tags": [ + "cloud", + "networking", + "ddns" + ] + }, { "id": "cloudflared", "name": "Cloudflared", @@ -1307,8 +1324,8 @@ "logo": "cloudflared.svg", "links": { "github": "https://github.com/cloudflare/cloudflared", - "website": "https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/", - "docs": "https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/" + "website": "https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/", + "docs": "https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/get-started/" }, "tags": [ "cloud", @@ -4541,6 +4558,27 @@ "surrealdb" ] }, + { + "id": "openclaw", + "name": "Openclaw", + "version": "2026.1.29", + "description": "WhatsApp gateway CLI with Pi RPC agent - self-hosted AI-powered messaging platform", + "logo": "openclaw.svg", + "links": { + "github": "https://github.com/openclaw/openclaw", + "website": "https://openclaw.ai/", + "docs": "https://docs.openclaw.ai/" + }, + "tags": [ + "whatsapp", + "ai", + "messaging", + "chatbot", + "gateway", + "self-hosted", + "automation" + ] + }, { "id": "opengist", "name": "OpenGist", From 39fb9dd134b0085e044abe13bfbe015b57096ef5 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sun, 15 Feb 2026 21:24:19 -0600 Subject: [PATCH 3/3] New templates (#711) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(librechat): add LibreChat blueprint with compose, toml, metadata, links and tags * fix: rename templates to template.toml * fix(librechat): rename api service to librechat in docker-compose.yml * Update blueprints/librechat/template.toml * Update blueprints/librechat/template.toml * fix(librechat): add version under [config] and remove stray [config.mounts] header * fix(librechat): remove predefined persistent volume mounts from template.toml * docs(librechat): add authentication reference link to docker-compose.yml * feat: add Rote template - Add Rote deployment template with frontend, backend, and PostgreSQL services - Configure domain routing for frontend (port 80) and backend (port 3000) - Set up automatic password generation and environment variables - Use latest image tag by default - Add logo and metadata to meta.json * fix: process meta.json to fix formatting and sorting * Update GitHub workflows to target 'canary' branch for meta validation * Update pnpm-lock.yaml to upgrade various dependencies, including '@codemirror/autocomplete', '@radix-ui/react-dialog', and React packages to their latest versions. This includes updates to '@types/react' and '@types/react-dom' for improved compatibility and performance. * Enhance GitHub workflows: add production deployment configuration and target 'canary' branch for pull requests. * Refactor GitHub workflow: comment out build preview steps for clarity and future modifications. * Remove unnecessary blank line in deploy-preview.yml for improved readability. * Refactor GitHub workflow: uncomment build preview steps for improved deployment process and clarity. * Update template.toml (#555) * Update template.toml * Update template.toml * Update template.toml * fix: change VITE_API_BASE to http:// for traefik.me compatibility * changed image from sknnr/enshrouded-dedicated-server to mornedhels/enshrouded-server for autoupdate and easier config * Add Openinary Template (#567) * feat: add Openinary template * feat: update Openinary configuration to support ALLOWED_ORIGIN and refactor domain variable * fix: correct DEFAULT_DOMAIN environment variable reference in docker-compose.yml (#562) * add rustfs template (#568) * feat: add pull request template for improved contribution guidelines * fix: update pull request template to clarify issue closing keywords * feat: add validation scripts and configuration for Docker Compose and template files - Introduced a GitHub Actions workflow to validate Docker Compose files and template.toml on pull requests. - Added helper functions for generating random values and processing variables in templates. - Implemented validation scripts for checking the structure, syntax, and best practices of Docker Compose and template files. - Created necessary TypeScript types and configuration files for the build scripts. * Add Passbolt template blueprint to Dokploy templates (#376) * feat(templates): add Passbolt blueprint for Dokploy - Add docker-compose.yml defining services for Passbolt and MariaDB - Create template.toml with configurable domain, email, and database credentials - Add meta.json with metadata, tags, and link to logo * fix(meta): sort meta.json entries * fix: passbolt template had several issues that broke deployment - env variables were using old array format, changed to new table format - mariadb healthcheck was broken (wrong command for mariadb 11) - missing volume mounts for gpg keys, jwt tokens, and database - setup instructions weren't visible to users, moved to docker-compose - email config had circular references causing warnings - tested admin user creation and confirmed working everything works now, fully tested * Update blueprints/passbolt/template.toml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat: Add Kokoro TTS FastAPI template (#353) (#403) * feat: Add Kokoro TTS FastAPI template (#353) - Add CPU-optimized docker-compose.yml with source build - Add GPU-optimized docker-compose-gpu.yml for NVIDIA support - Add comprehensive template.toml with OpenAI-compatible API docs - Add kokoro-tts.svg logo and meta.json entry - Support streaming audio, timestamps, and multi-language TTS - Resolves #353 * updated the meta.json for the build errors * removed the docker-compose-gpu.yml file * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * chore: remove package-lock.json file from the app directory * chore: update Tolgee to latest version and fix SMTP config typo (#432) * chore: update Tolgee to latest version and fix SMTP config typo * Update docker-compose.yml * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * fix: improve Docker Compose validation workflow to handle subshell issues - Converted the handling of COMPOSE_FILES from a pipe to an array to ensure error propagation in the parent shell. - Updated the loop to iterate over the array for better reliability in the validation process. * refactor: enhance Docker Compose validation workflow to improve error handling - Replaced the pipe with an array to handle directory names, ensuring that errors within the loop propagate correctly to the parent shell. - Updated the loop structure for better reliability in processing the directories. * Feat: Add parseable (#460) * Add parseable * Update docker-compose.yml * Update docker-compose.yml * Update blueprints/parseable/template.toml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Mauricio Siu * feat: add ChirpStack LoRaWAN Network Server template (#486) * feat: add ChirpStack LoRaWAN Network Server template Add complete ChirpStack v4 template with: - Main ChirpStack server with web UI - UDP and Basics Station gateway bridges - REST API interface - PostgreSQL database with PostGIS extensions - Redis cache - Mosquitto MQTT broker Default configuration for EU868 region with secure random credentials. Supports all LoRaWAN frequency bands globally. * fix(chirpstack): use original configurations from chirpstack-docker repo Update template.toml to use exact configuration files from the chirpstack-docker repository instead of simplified versions: - Use original chirpstack.toml with all 15 enabled regions - Use original gateway bridge configuration with documentation links - Use complete Basics Station EU868 config with frequency plans - Keep original Mosquitto and PostgreSQL initialization scripts Template size increased from 131 to 219 lines (4.7KB) to include comprehensive default configurations that match the official setup. * feat: add all 38 region configuration files * fix(chirpstack): add volume mounts to expose config files to containers * fix(chirpstack): remove read-only flag * fix(chirpstack): correct file paths for configuration mounts in docker-compose and template files * fix: update volume paths to be on correct directory level * fix: configure template for dokploy-network with proper DNS resolution - Add dokploy-network configuration to docker-compose.yml - Replace environment variable placeholders with actual service hostnames - Change PostgreSQL DSN from $POSTGRESQL_HOST to postgres - Change Redis server from $REDIS_HOST to redis - Replace $MQTT_BROKER_HOST with mosquitto in all 39 region configurations These changes ensure Docker DNS resolution works correctly by: - Using dokploy-network (overlay) instead of bridge network - Using service names directly in TOML config files (TOML doesn't expand env vars) - Enabling proper service discovery between containers This resolves DNS resolution failures that caused ChirpStack to fail connecting to PostgreSQL and MQTT services during deployment. * fix: add missing network configurations for all services in docker-compose * feat: add internal services to config.domains for proper network configuration * Update docker-compose.yml * fix: enhance domain validation in template validator - Updated the TemplateValidator to ensure that if the 'host' field is provided, it must be a valid string. - Added comments to clarify that 'host' is optional for internal services. * refactor: remove redundant host validation in template validator - Removed the validation for the 'host' field in the TemplateValidator, as it is optional for internal services and does not require a type check if not provided. * refactor: remove internal service domain configurations from template - Eliminated the domain configurations for internal services (Postgres, Redis, Mosquitto) from the template.toml file, streamlining the configuration for better clarity and maintainability. --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Mauricio Siu * Update section title from 'Suggestions' to 'Requirements' * Feat : Add MCSManager template support (#521) (#522) * feat: Add MCSManager template support (#521) * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat: Add MediaCMS template (#524) * Feat : Add Quant-Ux template -#173 (#525) * Feat : Add Quant-Ux template -#173 * Remove extra newline in docker-compose.yml * Update blueprints/quant-ux/docker-compose.yml * Update blueprints/quant-ux/docker-compose.yml * Update blueprints/quant-ux/docker-compose.yml * Update blueprints/quant-ux/docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * fix(rustdesk): use explicit ports, use port 21118 on hbbs instead of hbbr (#526) * fix: use explicit ports, use port 21118 on hbbs instead of hbbr * fix: whitespace character in rustdesk * feat: Add anytype template (#527) * add anytype template * sort * Update name field for Anytype in meta.json * Update meta.json * Update docker-compose.yml * Update blueprints/anytype/docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * refactor: remove dokploy-network configurations from multiple docker-compose files - Removed the external dokploy-network configuration from various services' docker-compose.yml files to streamline network management. - This change simplifies the setup and ensures consistency across blueprints. * chore: upgrade Infisical from v0.90.1 to v0.135.0 (#529) * chore: upgrade Infisical from v0.90.1 to v0.135.0 * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * fix: update pull request template link for clarity - Changed the link in the pull request template from 'general suggestions' to 'general requirements' to better reflect the content and ensure users follow the correct guidelines when creating templates. * chore: add section for screenshots or videos in pull request template - Introduced a new section in the pull request template to encourage contributors to include screenshots or videos, enhancing the clarity and context of their submissions. * Feat : Add MuleSoft ESB Runtime Template (#498) * added the mulesoft esb template * updated the compose and the meta.json * feat(mulesoft-esb): update image and add dynamic env configuration - Updated image to hari1367709/mule-esb:latest - Added dynamic HTTP_PORT for runtime port configuration - Added MULE_VERSION environment variable for Mule ESB version selection * updated the meta.json to use the version as latest * added a comment line to the template file * updated the mule runtime image * fix(mulesoft-esb): update ports configuration to follow guidelines * updated the port to use the env(HTTP_PORT) * Update docker-compose.yml * Update docker-compose.yml * Update blueprints/mulesoft-esb/docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat(blueprint): update trmnl-byos-laravel template (#533) * feat(blueprint): update trmnl-byos-laravel template * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat(blueprint): peerdb template (#579) * feat(blueprint): initial attempt at peerdb template * fix: entrypoint and healthcheck * fix: entrypoint * fix: temporarily remove network * fix: temporal port * chore: remove 36987 for minio * fix: remove peerdb 9900 port exposure * fix: port for console * fix: minio env fix * fix: expose peerdb and minio to dokploy network * fix(peerdb): add defaults * fix: remove extra hosts * fix: remove network entries * fix: use consistent environment variables * feat: add Bluesky PDS template (#542) * feat: Bluesky PDS template * chore: add bluesky pds svg * chore: metadata for bluesky pds * yaml > yml * pnpm lock * fix: correct rotation key config * fix volumes * fix: volumes in the pds compose * define volumes in compose * fix: 32 bit rotation key * create pds.env correctly * some extra fixes * more extra fixes * a blank line * update pnpm lock * Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation (#548) * Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation * Fix METRICS_CONFIG environment variable: use single-line JSON format * Fix template.toml: use correct [config.env] syntax for environment variables * Fix docker-compose.yml: add env_file reference to load environment variables * Delete blueprints/dokploy-prom-monitoring-extension/README.md * Delete test-dokploy-prom-monitoring-extension.sh --------- Co-authored-by: Sanjeevi Subramani Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat: improve RustDesk template configuration (#571) * feat: improve RustDesk template configuration - Add comprehensive environment variables for RustDesk server - Add RELAY_HOST, API_SERVER, ID_SERVER, and ENCRYPTION_KEY variables - Follow Dokploy best practices (no container_name, proper port format) - Use restart: unless-stopped policy - Add encryption key generation with password helper * fix: use explicit port mapping for RustDesk services RustDesk requires explicit port bindings (host:container format) to function properly. The service uses specific ports for: - 21115-21116 (TCP/UDP): hbbs service for ID and NAT traversal - 21117-21119 (TCP): hbbr relay service Without explicit port mapping, RustDesk clients cannot establish connections to the server. This is an exception to Dokploy's general port guidelines due to RustDesk's specific networking requirements. --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat: add Mumble voice chat server template (#572) * feat: add Mumble voice chat server template - Add Mumble VoIP server blueprint with docker-compose.yml - Configure environment variables for superuser password, welcome text, and max users - Add template.toml with auto-generated secure password - Follow Dokploy best practices (no container_name, proper port format) - Add Mumble metadata to meta.json with proper tags - Support for TCP and UDP on port 64738 * Update template.toml * fix: correct JSON formatting in meta.json for Mumble template entry --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Mauricio Siu * fix: update WireGuard Easy template for proper functionality (#573) * fix: update WireGuard Easy template for proper functionality - Changed to named volume (etc_wireguard) instead of host path mount - Added explicit port mappings (51820:51820/udp, 51821:51821/tcp) required for WireGuard - Updated environment variables to use correct WG_HOST and PASSWORD format - Added all required WireGuard environment variables: - WG_PORT, PORT, WG_MTU, WG_DEFAULT_DNS, WG_ALLOWED_IPS - WG_POST_UP/WG_POST_DOWN for iptables rules - Added NET_RAW capability for proper network operations - Simplified template.toml to use WIREGUARD_HOST and WIREGUARD_PASSWORD - Removed explicit networks config to enable Dokploy's isolated deployment - Template now works with Dokploy's automatic network isolation This configuration has been tested and confirmed working with isolated deployment enabled. * Update template.toml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * add: restart policy to MinIO service (#576) restart: unless-stopped is a Docker restart policy that automatically restarts a container if it stops due to an error or Docker daemon restart * Updating copilot instructions.md and AGENTS.md (#452) * docs: add copilot instructions for project development Added comprehensive documentation file (.github/copilot-instructions.md) that provides detailed guidance on the Dokploy Open Source Templates project structure, development workflow, and conventions. The document covers the project overview, key files and directories, development workflow for adding/updating templates, local development setup, CI/CD processes, and established conventions and patterns. This documentation will help onboard new contributors and ensure consistent development practices across the project. * docs(copilot-instructions): enhance project overview and development guide Updated copilot instructions to reflect expanded app capabilities (200+ apps, TypeScript integration, Fuse.js search) and detailed processes for templates, local dev, and CI/CD for improved clarity and accuracy. * refactor: remove frontend development instructions from AGENTS.md and update contributing guidelines - Removed frontend development commands from AGENTS.md to streamline the document. - Updated CONTRIBUTING.md by removing the recommendation to set `restart: unless-stopped` for services. --------- Co-authored-by: Mauricio Siu * Add trailbase template (#590) * Add trailbase * Add comment on mounting local directory * Update meta.json Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix: openpanel and migrate to v2 (#594) * refactor: update docker-compose.yml to include version and restart policy (#599) * feat(blueprint): mage ai template (#601) * feat(blueprint): template for mage-ai * fix: add healthcheck for mage-ai * docs: update copilot instructions to emphasize version pinning in docker-compose.yml Clarified the importance of pinning image versions in docker-compose.yml and explicitly stated to avoid using the `latest` tag to prevent potential issues with template functionality when upstream images change. * refactor: enhance Docker Compose validation workflow Updated the GitHub Actions workflow for validating Docker Compose files by streamlining the detection of changed blueprints and improving the validation process. Removed redundant steps and consolidated the validation of docker-compose.yml and template.toml files into a more efficient structure. Added clearer output messages for validation results and ensured that best practices are checked for each blueprint. This refactor aims to improve maintainability and clarity in the CI/CD process. * fix: update zitadel default instance features (#544) * Add Reactive Resume template (#603) * Initial plan * Add Reactive Resume template with docker-compose, template.toml, and meta.json entry Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> * Fix MinIO storage path alignment between template.toml and docker-compose.yml Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> * Update docker-compose.yml --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> * [WIP] Fix mounted prometheus.yml file not working (#605) * Initial plan * Fix Prometheus mounted prometheus.yml file by adding volume mount Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> * Update blueprints/prometheus/template.toml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * docs: update copilot instructions to enforce open source requirement Added a clear requirement stating that all services must be open source and only applications with open-source licenses (e.g., MIT, Apache, GPL, AGPL) are allowed. This update aims to ensure compliance and maintain the integrity of the project. * Fix Cap.so template MinIO deployment failure (#604) * Initial plan * Fix Cap.so MinIO image to use official quay.io image Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> * Fix MinIO healthcheck to use curl instead of mc Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> * Update .gitignore --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> * Fix Discourse template manifest error - update to bitnamilegacy/discourse:3.5.0 (#606) * Initial plan * Fix Discourse template by updating to bitnamilegacy/discourse:3.5.0 Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> * Remove pull request trigger from deploy-preview workflow * Enhance copilot instructions by adding verification steps for Docker images and clarifying URL variable usage. Emphasize the importance of verifying image existence before committing to prevent deployment failures. * Add Easy!Appointments template (#608) * Initial plan * Add Easyappointments template with docker-compose, template.toml, and meta.json entry Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> * Update blueprints/easyappointments/template.toml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update template.toml --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Add Dolibarr ERP & CRM template (#610) * Initial plan * Add Dolibarr ERP & CRM template Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> * Update template.toml * Update blueprints/dolibarr/docker-compose.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * feat: add Syncthing Template (#636) * Adiciona template do Syncthing com arquivos de configuração e ícone * Remove versão do Docker Compose do template do Syncthing * Update Umami to version v2.20.2 (#641) * Feat : Add InstantDB template (#224) (#530) * feat: add InstantDB template * added the server service also * removed the external network * Update docker-compose.yml * Update blueprints/instantdb/docker-compose.yml * Update blueprints/instantdb/docker-compose.yml * Update docker-compose.yml * Update blueprints/instantdb/template.toml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * [New Template] Added Lavalink template for dokploy (#535) * Add initial Lavalink configuration template * Added lavalink.svg logo * Create docker-compose.yml for Lavalink setup Add Docker Compose configuration for Lavalink service. * Modify healthcheck interval in docker-compose.yml Increased healthcheck interval from 10s to 100s. * Add Lavalink metadata to meta.json Added metadata for Lavalink audio sending node. * Update server_port variable to use ${port} * Change server port variable to randomPort * Change port variable to randomPort in template.toml * Change port variable in template.toml * Update server port in template.toml * Fix formatting in template.toml for server config * style: Reformat lavalink entry in meta.json. * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * chore(blueprint): update Appwrite services to v1.8 (#383) * Update Appwrite version docker images and environment variables * Add separate domains for functions and sites, update environment variables, replace insecure default passwords * Update Appwrite version from 1.6.1 to 1.7.4 in `meta.json` * Fix envs and update domains * Add missing volume mounts for sites * Fix config file syntax * Update runtimes network configuration in template.toml * Update Appwrite to 1.8 * Update appwrite image version to 1.8.0 * Add logging configuration to docker-compose * New Templates (#586) * feat(librechat): add LibreChat blueprint with compose, toml, metadata, links and tags * fix: rename templates to template.toml * fix(librechat): rename api service to librechat in docker-compose.yml * Update blueprints/librechat/template.toml * Update blueprints/librechat/template.toml * fix(librechat): add version under [config] and remove stray [config.mounts] header * fix(librechat): remove predefined persistent volume mounts from template.toml * docs(librechat): add authentication reference link to docker-compose.yml * feat: add Rote template - Add Rote deployment template with frontend, backend, and PostgreSQL services - Configure domain routing for frontend (port 80) and backend (port 3000) - Set up automatic password generation and environment variables - Use latest image tag by default - Add logo and metadata to meta.json * fix: process meta.json to fix formatting and sorting * Update GitHub workflows to target 'canary' branch for meta validation * Update pnpm-lock.yaml to upgrade various dependencies, including '@codemirror/autocomplete', '@radix-ui/react-dialog', and React packages to their latest versions. This includes updates to '@types/react' and '@types/react-dom' for improved compatibility and performance. * Enhance GitHub workflows: add production deployment configuration and target 'canary' branch for pull requests. * Refactor GitHub workflow: comment out build preview steps for clarity and future modifications. * Remove unnecessary blank line in deploy-preview.yml for improved readability. * Refactor GitHub workflow: uncomment build preview steps for improved deployment process and clarity. * Update template.toml (#555) * Update template.toml * Update template.toml * Update template.toml * fix: change VITE_API_BASE to http:// for traefik.me compatibility * changed image from sknnr/enshrouded-dedicated-server to mornedhels/enshrouded-server for autoupdate and easier config * Add Openinary Template (#567) * feat: add Openinary template * feat: update Openinary configuration to support ALLOWED_ORIGIN and refactor domain variable * fix: correct DEFAULT_DOMAIN environment variable reference in docker-compose.yml (#562) * add rustfs template (#568) * feat: add pull request template for improved contribution guidelines * fix: update pull request template to clarify issue closing keywords * feat: add validation scripts and configuration for Docker Compose and template files - Introduced a GitHub Actions workflow to validate Docker Compose files and template.toml on pull requests. - Added helper functions for generating random values and processing variables in templates. - Implemented validation scripts for checking the structure, syntax, and best practices of Docker Compose and template files. - Created necessary TypeScript types and configuration files for the build scripts. * Add Passbolt template blueprint to Dokploy templates (#376) * feat(templates): add Passbolt blueprint for Dokploy - Add docker-compose.yml defining services for Passbolt and MariaDB - Create template.toml with configurable domain, email, and database credentials - Add meta.json with metadata, tags, and link to logo * fix(meta): sort meta.json entries * fix: passbolt template had several issues that broke deployment - env variables were using old array format, changed to new table format - mariadb healthcheck was broken (wrong command for mariadb 11) - missing volume mounts for gpg keys, jwt tokens, and database - setup instructions weren't visible to users, moved to docker-compose - email config had circular references causing warnings - tested admin user creation and confirmed working everything works now, fully tested * Update blueprints/passbolt/template.toml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat: Add Kokoro TTS FastAPI template (#353) (#403) * feat: Add Kokoro TTS FastAPI template (#353) - Add CPU-optimized docker-compose.yml with source build - Add GPU-optimized docker-compose-gpu.yml for NVIDIA support - Add comprehensive template.toml with OpenAI-compatible API docs - Add kokoro-tts.svg logo and meta.json entry - Support streaming audio, timestamps, and multi-language TTS - Resolves #353 * updated the meta.json for the build errors * removed the docker-compose-gpu.yml file * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * chore: remove package-lock.json file from the app directory * chore: update Tolgee to latest version and fix SMTP config typo (#432) * chore: update Tolgee to latest version and fix SMTP config typo * Update docker-compose.yml * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * fix: improve Docker Compose validation workflow to handle subshell issues - Converted the handling of COMPOSE_FILES from a pipe to an array to ensure error propagation in the parent shell. - Updated the loop to iterate over the array for better reliability in the validation process. * refactor: enhance Docker Compose validation workflow to improve error handling - Replaced the pipe with an array to handle directory names, ensuring that errors within the loop propagate correctly to the parent shell. - Updated the loop structure for better reliability in processing the directories. * Feat: Add parseable (#460) * Add parseable * Update docker-compose.yml * Update docker-compose.yml * Update blueprints/parseable/template.toml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Mauricio Siu * feat: add ChirpStack LoRaWAN Network Server template (#486) * feat: add ChirpStack LoRaWAN Network Server template Add complete ChirpStack v4 template with: - Main ChirpStack server with web UI - UDP and Basics Station gateway bridges - REST API interface - PostgreSQL database with PostGIS extensions - Redis cache - Mosquitto MQTT broker Default configuration for EU868 region with secure random credentials. Supports all LoRaWAN frequency bands globally. * fix(chirpstack): use original configurations from chirpstack-docker repo Update template.toml to use exact configuration files from the chirpstack-docker repository instead of simplified versions: - Use original chirpstack.toml with all 15 enabled regions - Use original gateway bridge configuration with documentation links - Use complete Basics Station EU868 config with frequency plans - Keep original Mosquitto and PostgreSQL initialization scripts Template size increased from 131 to 219 lines (4.7KB) to include comprehensive default configurations that match the official setup. * feat: add all 38 region configuration files * fix(chirpstack): add volume mounts to expose config files to containers * fix(chirpstack): remove read-only flag * fix(chirpstack): correct file paths for configuration mounts in docker-compose and template files * fix: update volume paths to be on correct directory level * fix: configure template for dokploy-network with proper DNS resolution - Add dokploy-network configuration to docker-compose.yml - Replace environment variable placeholders with actual service hostnames - Change PostgreSQL DSN from $POSTGRESQL_HOST to postgres - Change Redis server from $REDIS_HOST to redis - Replace $MQTT_BROKER_HOST with mosquitto in all 39 region configurations These changes ensure Docker DNS resolution works correctly by: - Using dokploy-network (overlay) instead of bridge network - Using service names directly in TOML config files (TOML doesn't expand env vars) - Enabling proper service discovery between containers This resolves DNS resolution failures that caused ChirpStack to fail connecting to PostgreSQL and MQTT services during deployment. * fix: add missing network configurations for all services in docker-compose * feat: add internal services to config.domains for proper network configuration * Update docker-compose.yml * fix: enhance domain validation in template validator - Updated the TemplateValidator to ensure that if the 'host' field is provided, it must be a valid string. - Added comments to clarify that 'host' is optional for internal services. * refactor: remove redundant host validation in template validator - Removed the validation for the 'host' field in the TemplateValidator, as it is optional for internal services and does not require a type check if not provided. * refactor: remove internal service domain configurations from template - Eliminated the domain configurations for internal services (Postgres, Redis, Mosquitto) from the template.toml file, streamlining the configuration for better clarity and maintainability. --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Mauricio Siu * Update section title from 'Suggestions' to 'Requirements' * Feat : Add MCSManager template support (#521) (#522) * feat: Add MCSManager template support (#521) * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat: Add MediaCMS template (#524) * Feat : Add Quant-Ux template -#173 (#525) * Feat : Add Quant-Ux template -#173 * Remove extra newline in docker-compose.yml * Update blueprints/quant-ux/docker-compose.yml * Update blueprints/quant-ux/docker-compose.yml * Update blueprints/quant-ux/docker-compose.yml * Update blueprints/quant-ux/docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * fix(rustdesk): use explicit ports, use port 21118 on hbbs instead of hbbr (#526) * fix: use explicit ports, use port 21118 on hbbs instead of hbbr * fix: whitespace character in rustdesk * feat: Add anytype template (#527) * add anytype template * sort * Update name field for Anytype in meta.json * Update meta.json * Update docker-compose.yml * Update blueprints/anytype/docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * refactor: remove dokploy-network configurations from multiple docker-compose files - Removed the external dokploy-network configuration from various services' docker-compose.yml files to streamline network management. - This change simplifies the setup and ensures consistency across blueprints. * chore: upgrade Infisical from v0.90.1 to v0.135.0 (#529) * chore: upgrade Infisical from v0.90.1 to v0.135.0 * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * fix: update pull request template link for clarity - Changed the link in the pull request template from 'general suggestions' to 'general requirements' to better reflect the content and ensure users follow the correct guidelines when creating templates. * chore: add section for screenshots or videos in pull request template - Introduced a new section in the pull request template to encourage contributors to include screenshots or videos, enhancing the clarity and context of their submissions. * Feat : Add MuleSoft ESB Runtime Template (#498) * added the mulesoft esb template * updated the compose and the meta.json * feat(mulesoft-esb): update image and add dynamic env configuration - Updated image to hari1367709/mule-esb:latest - Added dynamic HTTP_PORT for runtime port configuration - Added MULE_VERSION environment variable for Mule ESB version selection * updated the meta.json to use the version as latest * added a comment line to the template file * updated the mule runtime image * fix(mulesoft-esb): update ports configuration to follow guidelines * updated the port to use the env(HTTP_PORT) * Update docker-compose.yml * Update docker-compose.yml * Update blueprints/mulesoft-esb/docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat(blueprint): update trmnl-byos-laravel template (#533) * feat(blueprint): update trmnl-byos-laravel template * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat(blueprint): peerdb template (#579) * feat(blueprint): initial attempt at peerdb template * fix: entrypoint and healthcheck * fix: entrypoint * fix: temporarily remove network * fix: temporal port * chore: remove 36987 for minio * fix: remove peerdb 9900 port exposure * fix: port for console * fix: minio env fix * fix: expose peerdb and minio to dokploy network * fix(peerdb): add defaults * fix: remove extra hosts * fix: remove network entries * fix: use consistent environment variables * feat: add Bluesky PDS template (#542) * feat: Bluesky PDS template * chore: add bluesky pds svg * chore: metadata for bluesky pds * yaml > yml * pnpm lock * fix: correct rotation key config * fix volumes * fix: volumes in the pds compose * define volumes in compose * fix: 32 bit rotation key * create pds.env correctly * some extra fixes * more extra fixes * a blank line * update pnpm lock * Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation (#548) * Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation * Fix METRICS_CONFIG environment variable: use single-line JSON format * Fix template.toml: use correct [config.env] syntax for environment variables * Fix docker-compose.yml: add env_file reference to load environment variables * Delete blueprints/dokploy-prom-monitoring-extension/README.md * Delete test-dokploy-prom-monitoring-extension.sh --------- Co-authored-by: Sanjeevi Subramani Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat: improve RustDesk template configuration (#571) * feat: improve RustDesk template configuration - Add comprehensive environment variables for RustDesk server - Add RELAY_HOST, API_SERVER, ID_SERVER, and ENCRYPTION_KEY variables - Follow Dokploy best practices (no container_name, proper port format) - Use restart: unless-stopped policy - Add encryption key generation with password helper * fix: use explicit port mapping for RustDesk services RustDesk requires explicit port bindings (host:container format) to function properly. The service uses specific ports for: - 21115-21116 (TCP/UDP): hbbs service for ID and NAT traversal - 21117-21119 (TCP): hbbr relay service Without explicit port mapping, RustDesk clients cannot establish connections to the server. This is an exception to Dokploy's general port guidelines due to RustDesk's specific networking requirements. --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat: add Mumble voice chat server template (#572) * feat: add Mumble voice chat server template - Add Mumble VoIP server blueprint with docker-compose.yml - Configure environment variables for superuser password, welcome text, and max users - Add template.toml with auto-generated secure password - Follow Dokploy best practices (no container_name, proper port format) - Add Mumble metadata to meta.json with proper tags - Support for TCP and UDP on port 64738 * Update template.toml * fix: correct JSON formatting in meta.json for Mumble template entry --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Mauricio Siu * fix: update WireGuard Easy template for proper functionality (#573) * fix: update WireGuard Easy template for proper functionality - Changed to named volume (etc_wireguard) instead of host path mount - Added explicit port mappings (51820:51820/udp, 51821:51821/tcp) required for WireGuard - Updated environment variables to use correct WG_HOST and PASSWORD format - Added all required WireGuard environment variables: - WG_PORT, PORT, WG_MTU, WG_DEFAULT_DNS, WG_ALLOWED_IPS - WG_POST_UP/WG_POST_DOWN for iptables rules - Added NET_RAW capability for proper network operations - Simplified template.toml to use WIREGUARD_HOST and WIREGUARD_PASSWORD - Removed explicit networks config to enable Dokploy's isolated deployment - Template now works with Dokploy's automatic network isolation This configuration has been tested and confirmed working with isolated deployment enabled. * Update template.toml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * add: restart policy to MinIO service (#576) restart: unless-stopped is a Docker restart policy that automatically restarts a container if it stops due to an error or Docker daemon restart --------- Co-authored-by: Sunil Shrestha Co-authored-by: Rabithua Co-authored-by: Mauricio Siu Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com> Co-authored-by: Crackvignoule Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com> Co-authored-by: Thiago MadPin Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com> Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com> Co-authored-by: Harikrishnan Dhanasekaran Co-authored-by: Kamil Dzieniszewski Co-authored-by: Nick Anderson Co-authored-by: lefolalan Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com> Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com> Co-authored-by: Benjamin Nussbaum Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com> Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com> Co-authored-by: Sanjeevi Subramani Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com> Co-authored-by: Jemg * Remove `container_name` from all containers * Remove expliced networks * Update blueprints/appwrite/docker-compose.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update password variables to use 32-character length * Update Appwrite description and tags in meta.json * Fix JSON formatting in meta.json by adding missing closing bracket * Fix formatting in meta.json by removing trailing spaces in tags array * Add missing SMS and Backblaze storage configuration options in template.toml * Update docker-compose.yml --------- Co-authored-by: Pascal Oberbeck Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Sunil Shrestha Co-authored-by: Rabithua Co-authored-by: Mauricio Siu Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com> Co-authored-by: Crackvignoule Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com> Co-authored-by: Thiago MadPin Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com> Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com> Co-authored-by: Harikrishnan Dhanasekaran Co-authored-by: Kamil Dzieniszewski Co-authored-by: Nick Anderson Co-authored-by: lefolalan Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com> Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com> Co-authored-by: Benjamin Nussbaum Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com> Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com> Co-authored-by: Sanjeevi Subramani Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com> Co-authored-by: Jemg Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Mauricio Siu * feat: emqx template (MQTT Broker) (#556) * feat: template for emqx * chore: process meta * fix: use websocket on port 443 instead of 8084 * docs: improve comments for emqx template * fix: use emqx service name * fix: use dummy domain instead of traefik * fix: explicitly list dokplok-network * fix(emqx): restart unless stopped * fix(emqx): add healthcheck * Dokploy Deployment for Mautic 5 (#564) * first draft * second * try 3 * 4 * Update docker-compose.yml * Update template.toml * Enhance healthchecks and service dependencies in Docker Compose Updated healthcheck configurations for Mautic and MySQL services to improve service reliability. Added conditions to ensure services wait for dependencies to be healthy before starting. * Update Mautic docker-compose with health checks and roles * fix: searxng template (#651) * fix: use major version for openpanel (#680) * Feat/minepanel template (#657) * feat: add Minepanel template * fix: pin images to v1.7.1 and use http for URLs * fix: remove explicit ports, Dokploy handles proxying * chore: process and sort meta.json * fix: consolidate domain variables to main_domain * fix: add version field to docker-compose.yml * Add Komari Monitor template with Docker Compose, icon, and metadata (#XXX) (#623) * Introduce Komari Monitor, a self-hosted server monitoring tool, with its corresponding Docker Compose configuration, icon, and metadata entry. * Add template.toml for configuration and environment variables. * Include necessary links for GitHub and documentation. * Add Misaka Danmu Server template with Docker Compose, icon, and metadata (#624) * Introduce Misaka Danmu Server, a self-hosted danmaku server for live streaming, with its corresponding Docker Compose configuration, icon, and metadata entry. * Add template.toml for configuration and environment variables. * Include necessary links for GitHub and documentation. * fix: pyrodactyl no longer uses main tag for it's latest release (#626) * fix: pyrodactyl no longer uses main tag for it's latest release * Remove custom network settings from docker-compose Removed custom network configuration from docker-compose. * Update MariaDB and Pyrodactyl images in Docker Compose * Add Jenkins blueprint template configuration (#634) - Created a new TOML configuration file for Jenkins blueprint. - Defined main domain variable and service configuration for Jenkins. - Set serviceName to "jenkins" with port 8080 and host as the main domain. * Update Autobase to version 2.5 (#647) * Update Autobase to version 2.5 Bump the autobase-console Docker image from version 2.2.0 to 2.5.2 in docker-compose.yml to use the latest features and fixes. * Update docker-compose.yml * Update docker-compose.yml * Update meta.json * Update Autobase description in meta.json Revised the Autobase package description to clarify it as a self-hosted DBaaS alternative to cloud-managed databases. * Add Cloudreve template (#649) Self-hosted file management and sharing system with multi-cloud storage support. Includes PostgreSQL and Redis for database and caching. * Update to Umami 3.0.3 (#668) * Update Umami version from v2.20.2 to v3.0.3 * Update Umami Docker image to version 3.0.3 * fix: tailscale exitnode authkey env (#669) * Add qbitwebui (#675) * Add qBittorrent Web UI template * Fix healthcheck bug * Create INSTRUCTIONS.md * Rename INSTRUCTIONS.md to instructions.md * feat: add Moltbot template (#683) * feat: add Moltbot template Add template for Moltbot - a WhatsApp gateway CLI with Pi RPC agent. - Uses official ghcr.io/moltbot/moltbot:latest image - Exposes ports 18789 (gateway) and 18790 (bridge) - Includes persistent volumes for config and workspace - Auto-generates gateway token - Optional Claude AI integration support Co-Authored-By: Claude * Update docker-compose.yml * Enhance Moltbot configuration in docker-compose and template files - Added CLAWDBOT_GATEWAY_URL and OPENROUTER_API_KEY to docker-compose.yml - Updated service binding to 'auto' and added init: true for improved service management - Defined CLAWDBOT_GATEWAY_PORT and CLAWDBOT_BRIDGE_PORT in template.toml - Included CLAWDBOT_PLUGINS for plugin configuration in template.toml * Add Moltbot entry to meta.json - Introduced a new entry for Moltbot, a WhatsApp gateway CLI with Pi RPC agent. - Included details such as version, description, logo, links, and relevant tags for better discoverability and integration. --------- Co-authored-by: Claude Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Mauricio Siu * feat: add Openclaw template (#694) * feat: rename Moltbot to Openclaw and update related configurations * fix: update Openclaw image version to 2026.1.29 in docker-compose.yml * fix: correct environment variable name for Openclaw gateway * fix: correct volume path for Openclaw workspace in docker-compose.yml * feat: rename Moltbot to Openclaw and update metadata * fix: moving 'openclaw' entry below so the file looks sorted * fix: add missing newline at end of meta.json * fix: update docker-compose.yml to use 'expose' instead of 'ports' and change bind option to 'lan' * feat: update Openclaw service configuration in docker-compose.yml and template.toml - Changed service name from 'openclaw-gateway' to 'openclaw' and updated image version. - Enhanced environment variables for better configuration management. - Added a new 'browser' service with health checks and updated volume paths. * refactor: update environment variable configuration in docker-compose.yml for Openclaw service --------- Co-authored-by: Mauricio Siu * fix: cloudflared documentation links & env variables (#699) * feat(blueprint): Cloudflare DDNS (#689) * feat: added Cloudflare DDNS template * fix: make CLOUDFLARE_API_TOKEN and DOMAINS mandatory env * Fix realtime service name resolution (#563) Expose the CONTAINER_PREFIX environment variable to kong service, then utilize it to format the URL of realtime service. * fix(habitica): add user to mongodb replicaset to enable Dokploy DB backups (#574) * fix: use environment variables from configuration in habitica-server * feat: add users to mongodb replicaSet This commit adds admin and habitica users + enables replicaSet auth by introducing a keyfile. Dokploy DB backups require specifying an user and password, so this enables that feature for Habitica app. * chore: less retries * chore: do not start server until mongo is healthy * fix: ensure habitica user exists for habitica db * fix: remove BASE_URL to prevent infinite redirects * fix: add missing ADMIN_EMAIL --------- Co-authored-by: Jorge Gómez Zarzosa * Refactor wg-easy service configuration to work with latest wg-easy v15 (#598) * New Templates (#586) * feat(librechat): add LibreChat blueprint with compose, toml, metadata, links and tags * fix: rename templates to template.toml * fix(librechat): rename api service to librechat in docker-compose.yml * Update blueprints/librechat/template.toml * Update blueprints/librechat/template.toml * fix(librechat): add version under [config] and remove stray [config.mounts] header * fix(librechat): remove predefined persistent volume mounts from template.toml * docs(librechat): add authentication reference link to docker-compose.yml * feat: add Rote template - Add Rote deployment template with frontend, backend, and PostgreSQL services - Configure domain routing for frontend (port 80) and backend (port 3000) - Set up automatic password generation and environment variables - Use latest image tag by default - Add logo and metadata to meta.json * fix: process meta.json to fix formatting and sorting * Update GitHub workflows to target 'canary' branch for meta validation * Update pnpm-lock.yaml to upgrade various dependencies, including '@codemirror/autocomplete', '@radix-ui/react-dialog', and React packages to their latest versions. This includes updates to '@types/react' and '@types/react-dom' for improved compatibility and performance. * Enhance GitHub workflows: add production deployment configuration and target 'canary' branch for pull requests. * Refactor GitHub workflow: comment out build preview steps for clarity and future modifications. * Remove unnecessary blank line in deploy-preview.yml for improved readability. * Refactor GitHub workflow: uncomment build preview steps for improved deployment process and clarity. * Update template.toml (#555) * Update template.toml * Update template.toml * Update template.toml * fix: change VITE_API_BASE to http:// for traefik.me compatibility * changed image from sknnr/enshrouded-dedicated-server to mornedhels/enshrouded-server for autoupdate and easier config * Add Openinary Template (#567) * feat: add Openinary template * feat: update Openinary configuration to support ALLOWED_ORIGIN and refactor domain variable * fix: correct DEFAULT_DOMAIN environment variable reference in docker-compose.yml (#562) * add rustfs template (#568) * feat: add pull request template for improved contribution guidelines * fix: update pull request template to clarify issue closing keywords * feat: add validation scripts and configuration for Docker Compose and template files - Introduced a GitHub Actions workflow to validate Docker Compose files and template.toml on pull requests. - Added helper functions for generating random values and processing variables in templates. - Implemented validation scripts for checking the structure, syntax, and best practices of Docker Compose and template files. - Created necessary TypeScript types and configuration files for the build scripts. * Add Passbolt template blueprint to Dokploy templates (#376) * feat(templates): add Passbolt blueprint for Dokploy - Add docker-compose.yml defining services for Passbolt and MariaDB - Create template.toml with configurable domain, email, and database credentials - Add meta.json with metadata, tags, and link to logo * fix(meta): sort meta.json entries * fix: passbolt template had several issues that broke deployment - env variables were using old array format, changed to new table format - mariadb healthcheck was broken (wrong command for mariadb 11) - missing volume mounts for gpg keys, jwt tokens, and database - setup instructions weren't visible to users, moved to docker-compose - email config had circular references causing warnings - tested admin user creation and confirmed working everything works now, fully tested * Update blueprints/passbolt/template.toml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat: Add Kokoro TTS FastAPI template (#353) (#403) * feat: Add Kokoro TTS FastAPI template (#353) - Add CPU-optimized docker-compose.yml with source build - Add GPU-optimized docker-compose-gpu.yml for NVIDIA support - Add comprehensive template.toml with OpenAI-compatible API docs - Add kokoro-tts.svg logo and meta.json entry - Support streaming audio, timestamps, and multi-language TTS - Resolves #353 * updated the meta.json for the build errors * removed the docker-compose-gpu.yml file * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * chore: remove package-lock.json file from the app directory * chore: update Tolgee to latest version and fix SMTP config typo (#432) * chore: update Tolgee to latest version and fix SMTP config typo * Update docker-compose.yml * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * fix: improve Docker Compose validation workflow to handle subshell issues - Converted the handling of COMPOSE_FILES from a pipe to an array to ensure error propagation in the parent shell. - Updated the loop to iterate over the array for better reliability in the validation process. * refactor: enhance Docker Compose validation workflow to improve error handling - Replaced the pipe with an array to handle directory names, ensuring that errors within the loop propagate correctly to the parent shell. - Updated the loop structure for better reliability in processing the directories. * Feat: Add parseable (#460) * Add parseable * Update docker-compose.yml * Update docker-compose.yml * Update blueprints/parseable/template.toml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Mauricio Siu * feat: add ChirpStack LoRaWAN Network Server template (#486) * feat: add ChirpStack LoRaWAN Network Server template Add complete ChirpStack v4 template with: - Main ChirpStack server with web UI - UDP and Basics Station gateway bridges - REST API interface - PostgreSQL database with PostGIS extensions - Redis cache - Mosquitto MQTT broker Default configuration for EU868 region with secure random credentials. Supports all LoRaWAN frequency bands globally. * fix(chirpstack): use original configurations from chirpstack-docker repo Update template.toml to use exact configuration files from the chirpstack-docker repository instead of simplified versions: - Use original chirpstack.toml with all 15 enabled regions - Use original gateway bridge configuration with documentation links - Use complete Basics Station EU868 config with frequency plans - Keep original Mosquitto and PostgreSQL initialization scripts Template size increased from 131 to 219 lines (4.7KB) to include comprehensive default configurations that match the official setup. * feat: add all 38 region configuration files * fix(chirpstack): add volume mounts to expose config files to containers * fix(chirpstack): remove read-only flag * fix(chirpstack): correct file paths for configuration mounts in docker-compose and template files * fix: update volume paths to be on correct directory level * fix: configure template for dokploy-network with proper DNS resolution - Add dokploy-network configuration to docker-compose.yml - Replace environment variable placeholders with actual service hostnames - Change PostgreSQL DSN from $POSTGRESQL_HOST to postgres - Change Redis server from $REDIS_HOST to redis - Replace $MQTT_BROKER_HOST with mosquitto in all 39 region configurations These changes ensure Docker DNS resolution works correctly by: - Using dokploy-network (overlay) instead of bridge network - Using service names directly in TOML config files (TOML doesn't expand env vars) - Enabling proper service discovery between containers This resolves DNS resolution failures that caused ChirpStack to fail connecting to PostgreSQL and MQTT services during deployment. * fix: add missing network configurations for all services in docker-compose * feat: add internal services to config.domains for proper network configuration * Update docker-compose.yml * fix: enhance domain validation in template validator - Updated the TemplateValidator to ensure that if the 'host' field is provided, it must be a valid string. - Added comments to clarify that 'host' is optional for internal services. * refactor: remove redundant host validation in template validator - Removed the validation for the 'host' field in the TemplateValidator, as it is optional for internal services and does not require a type check if not provided. * refactor: remove internal service domain configurations from template - Eliminated the domain configurations for internal services (Postgres, Redis, Mosquitto) from the template.toml file, streamlining the configuration for better clarity and maintainability. --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Mauricio Siu * Update section title from 'Suggestions' to 'Requirements' * Feat : Add MCSManager template support (#521) (#522) * feat: Add MCSManager template support (#521) * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat: Add MediaCMS template (#524) * Feat : Add Quant-Ux template -#173 (#525) * Feat : Add Quant-Ux template -#173 * Remove extra newline in docker-compose.yml * Update blueprints/quant-ux/docker-compose.yml * Update blueprints/quant-ux/docker-compose.yml * Update blueprints/quant-ux/docker-compose.yml * Update blueprints/quant-ux/docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * fix(rustdesk): use explicit ports, use port 21118 on hbbs instead of hbbr (#526) * fix: use explicit ports, use port 21118 on hbbs instead of hbbr * fix: whitespace character in rustdesk * feat: Add anytype template (#527) * add anytype template * sort * Update name field for Anytype in meta.json * Update meta.json * Update docker-compose.yml * Update blueprints/anytype/docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * refactor: remove dokploy-network configurations from multiple docker-compose files - Removed the external dokploy-network configuration from various services' docker-compose.yml files to streamline network management. - This change simplifies the setup and ensures consistency across blueprints. * chore: upgrade Infisical from v0.90.1 to v0.135.0 (#529) * chore: upgrade Infisical from v0.90.1 to v0.135.0 * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * fix: update pull request template link for clarity - Changed the link in the pull request template from 'general suggestions' to 'general requirements' to better reflect the content and ensure users follow the correct guidelines when creating templates. * chore: add section for screenshots or videos in pull request template - Introduced a new section in the pull request template to encourage contributors to include screenshots or videos, enhancing the clarity and context of their submissions. * Feat : Add MuleSoft ESB Runtime Template (#498) * added the mulesoft esb template * updated the compose and the meta.json * feat(mulesoft-esb): update image and add dynamic env configuration - Updated image to hari1367709/mule-esb:latest - Added dynamic HTTP_PORT for runtime port configuration - Added MULE_VERSION environment variable for Mule ESB version selection * updated the meta.json to use the version as latest * added a comment line to the template file * updated the mule runtime image * fix(mulesoft-esb): update ports configuration to follow guidelines * updated the port to use the env(HTTP_PORT) * Update docker-compose.yml * Update docker-compose.yml * Update blueprints/mulesoft-esb/docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat(blueprint): update trmnl-byos-laravel template (#533) * feat(blueprint): update trmnl-byos-laravel template * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat(blueprint): peerdb template (#579) * feat(blueprint): initial attempt at peerdb template * fix: entrypoint and healthcheck * fix: entrypoint * fix: temporarily remove network * fix: temporal port * chore: remove 36987 for minio * fix: remove peerdb 9900 port exposure * fix: port for console * fix: minio env fix * fix: expose peerdb and minio to dokploy network * fix(peerdb): add defaults * fix: remove extra hosts * fix: remove network entries * fix: use consistent environment variables * feat: add Bluesky PDS template (#542) * feat: Bluesky PDS template * chore: add bluesky pds svg * chore: metadata for bluesky pds * yaml > yml * pnpm lock * fix: correct rotation key config * fix volumes * fix: volumes in the pds compose * define volumes in compose * fix: 32 bit rotation key * create pds.env correctly * some extra fixes * more extra fixes * a blank line * update pnpm lock * Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation (#548) * Add dokploy-prom-monitoring-extension template with comprehensive tests and documentation * Fix METRICS_CONFIG environment variable: use single-line JSON format * Fix template.toml: use correct [config.env] syntax for environment variables * Fix docker-compose.yml: add env_file reference to load environment variables * Delete blueprints/dokploy-prom-monitoring-extension/README.md * Delete test-dokploy-prom-monitoring-extension.sh --------- Co-authored-by: Sanjeevi Subramani Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat: improve RustDesk template configuration (#571) * feat: improve RustDesk template configuration - Add comprehensive environment variables for RustDesk server - Add RELAY_HOST, API_SERVER, ID_SERVER, and ENCRYPTION_KEY variables - Follow Dokploy best practices (no container_name, proper port format) - Use restart: unless-stopped policy - Add encryption key generation with password helper * fix: use explicit port mapping for RustDesk services RustDesk requires explicit port bindings (host:container format) to function properly. The service uses specific ports for: - 21115-21116 (TCP/UDP): hbbs service for ID and NAT traversal - 21117-21119 (TCP): hbbr relay service Without explicit port mapping, RustDesk clients cannot establish connections to the server. This is an exception to Dokploy's general port guidelines due to RustDesk's specific networking requirements. --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * feat: add Mumble voice chat server template (#572) * feat: add Mumble voice chat server template - Add Mumble VoIP server blueprint with docker-compose.yml - Configure environment variables for superuser password, welcome text, and max users - Add template.toml with auto-generated secure password - Follow Dokploy best practices (no container_name, proper port format) - Add Mumble metadata to meta.json with proper tags - Support for TCP and UDP on port 64738 * Update template.toml * fix: correct JSON formatting in meta.json for Mumble template entry --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Mauricio Siu * fix: update WireGuard Easy template for proper functionality (#573) * fix: update WireGuard Easy template for proper functionality - Changed to named volume (etc_wireguard) instead of host path mount - Added explicit port mappings (51820:51820/udp, 51821:51821/tcp) required for WireGuard - Updated environment variables to use correct WG_HOST and PASSWORD format - Added all required WireGuard environment variables: - WG_PORT, PORT, WG_MTU, WG_DEFAULT_DNS, WG_ALLOWED_IPS - WG_POST_UP/WG_POST_DOWN for iptables rules - Added NET_RAW capability for proper network operations - Simplified template.toml to use WIREGUARD_HOST and WIREGUARD_PASSWORD - Removed explicit networks config to enable Dokploy's isolated deployment - Template now works with Dokploy's automatic network isolation This configuration has been tested and confirmed working with isolated deployment enabled. * Update template.toml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * add: restart policy to MinIO service (#576) restart: unless-stopped is a Docker restart policy that automatically restarts a container if it stops due to an error or Docker daemon restart --------- Co-authored-by: Sunil Shrestha Co-authored-by: Rabithua Co-authored-by: Mauricio Siu Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com> Co-authored-by: Crackvignoule Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com> Co-authored-by: Thiago MadPin Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com> Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com> Co-authored-by: Harikrishnan Dhanasekaran Co-authored-by: Kamil Dzieniszewski Co-authored-by: Nick Anderson Co-authored-by: lefolalan Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com> Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com> Co-authored-by: Benjamin Nussbaum Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com> Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com> Co-authored-by: Sanjeevi Subramani Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com> Co-authored-by: Jemg * Refactor wg-easy service configuration in docker-compose Updated environment variables for wg-easy v15 * Refactor wg-easy service configuration in docker-compose Updated environment variables for wg-easy v15 --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Sunil Shrestha Co-authored-by: Rabithua Co-authored-by: Mauricio Siu Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com> Co-authored-by: Crackvignoule Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com> Co-authored-by: Thiago MadPin Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com> Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com> Co-authored-by: Harikrishnan Dhanasekaran Co-authored-by: Kamil Dzieniszewski Co-authored-by: Nick Anderson Co-authored-by: lefolalan Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com> Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com> Co-authored-by: Benjamin Nussbaum Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com> Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com> Co-authored-by: Sanjeevi Subramani Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com> Co-authored-by: Jemg * feat(blueprint): strapi template (#616) * feat(blueprint): strapi template * feat: strapi meta.json * fix: strapi extra colon * fix: docker syntax for expose and depends_on * fix: change image base * fix: strapi healthcheck * fix: add jwt secret and admin jwt secret to strapi * fix: strapi healthcheck start interval * fix(template): strapi v5.33.0 * Update docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Co-authored-by: Mauricio Siu * feat: Add Pulse monitoring template (#617) * feat: Add Pulse monitoring template - Add docker-compose.yml with healthcheck and Docker socket access - Add template.toml with domain and authentication variables - Add pulse.svg logo - Add meta.json entry with monitoring, proxmox, docker tags - Supports Proxmox VE, PBS, and Docker monitoring with real-time metrics * fix: Update Pulse docs link to GitHub repository - Replace non-existent docs.pulse.rcourtman.com with GitHub docs path - Use canonical documentation location in Pulse repository * update pulse links * Update blueprints/pulse/docker-compose.yml --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> * Fix Obsidian LiveSync template links pointing to CouchDB instead of plugin (#621) * Initial plan * Fix Obsidian LiveSync template links to point to correct project Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Siumauricio <47042324+Siumauricio@users.noreply.github.com> * feat: add SeaweedFS template (#630) * feat: add SeaweedFS template * chore: add specific seaweedfs version * Update image versions in docker-compose for AList, Appsmith, and Budibase (#639) * Update image versions in the docker-compose and meta.json files for AList, Appsmith, and Budibase. * Update MinIO image version in docker-compose Pins a specific MinIO image version RELEASE.2025-09-07T16-13-09Z * refactor: add * docs: update CONTRIBUTING.md with pull request guidelines - Added guidelines for keeping pull requests small and focused. - Emphasized the importance of testing contributions before submission to maintain a tidy PR queue. * Add/trilium next (#671) * feat/add trilium next template * fix: test verify to pr * fix: fix validation error in docker-compose * fix: static version to trilium image --------- Co-authored-by: jbello * feat: add wuzapi template (#679) * feat: add wuzapi template * chore: remove temporary meta_entry.json * fix(wuzapi): remove explicit networks and simplify depends_on for Dokploy compatibility * fix(wuzapi): remove invalid config.mounts from template.toml * Update Docker images for wuzapi and PostgreSQL fixed the version of the wuzapi docker image. * feat: add PostgreSQL with PgDog template (#681) * feat: add PostgreSQL with PgDog template Add postgres-pgdog template providing PostgreSQL database with PgDog connection pooler, load balancer, and horizontal scaling proxy. Modern alternative to PgBouncer with multi-threading support. - Configurable PostgreSQL (default: 18-alpine) and PgDog (default: v0.1.26) images - Optional admin interface on port 6433 - Includes healthcheck and dependency management * 🐛 fix(postgres-pgdog): add config mounts and fix postgres volume path - Add [[config.mounts]] for pgdog.toml and users.toml - Mount config files from ../files/ in docker-compose - Change postgres volume to /var/lib/postgresql (postgres 18+ standard) - Add explicit command with config paths to prevent warnings * 🐛 fix(postgres-pgdog): correct binary path and use default config locations - Mount configs to /pgdog/ (default WorkingDir) instead of /etc/pgdog/ - Remove explicit command (binary is /usr/local/bin/pgdog, not /pgdog/pgdog) - Use image's default CMD with default config paths * 🐛 fix(postgres-pgdog): remove invalid admin_port config field - Remove admin_port from [general] section (not a valid field) - Admin DB uses same port 6432 with special database name - Remove commented admin domain config * 🐛 fix(postgres-pgdog): enable external access via fixed port mapping - Add fixed port 6432:6432 to postgres-pgdog service - Remove HTTP domain config (incompatible with TCP protocol) - Add comment for internal-only option Fixes UnsupportedStartup errors when using domain config for PostgreSQL protocol access. * 🐛 fix(postgres-pgdog): use standard port format per convention - Change port mapping from '6432:6432' to '6432' format - Follows Dokploy template convention for port declarations - External access requires checking Dokploy UI for assigned host port * 📝 docs(postgres-pgdog): clarify port settings comment * 🐛 fix(postgres-pgdog): default to internal access with opt-in external port - Remove obsolete version field - Port mapping commented by default for security - Users uncomment to enable external access on port 6432 * Add IPFS Kubo template (#703) * Add IPFS Kubo template * Update init cmds * Remove port forwarding * uptime-kuma: Bump version to 2.1.0 (#706) * Bump version to 2.1.0 * Update meta.json with new version number * feat(blueprint): update trmnl-byos-laravel template (#704) * upgrade nextcloud img version (#705) * fix docker-compose variables and update github link (#701) Co-authored-by: Aaron McGuire * Update InvoiceShelf compose to suit new changes (#693) https://github.com/InvoiceShelf/docker/blob/89bf78cec6fae54db76f84e0a4dc6255a8da710e/upgrade-guide.md * fix: superset template fixed versions, postgres volume mount and network instructions (#595) * fix: superset version fixed, tweak network instructions * chore: simplify mapbox key * fix: volume mount * deps: bump superset to 6.0.0 --------- Co-authored-by: Sunil Shrestha Co-authored-by: Rabithua Co-authored-by: Mauricio Siu Co-authored-by: Scan <103391616+scanash00@users.noreply.github.com> Co-authored-by: Crackvignoule Co-authored-by: florianheysen <39408021+florianheysen@users.noreply.github.com> Co-authored-by: Thiago MadPin Co-authored-by: BlinkStrike <18644035+BlinkStrike@users.noreply.github.com> Co-authored-by: M Jupri Amin <127651222+Juupeee@users.noreply.github.com> Co-authored-by: Harikrishnan Dhanasekaran Co-authored-by: Kamil Dzieniszewski Co-authored-by: Nick Anderson Co-authored-by: lefolalan Co-authored-by: Chris <31969757+ChrisvanChip@users.noreply.github.com> Co-authored-by: kipavy <88386090+kipavy@users.noreply.github.com> Co-authored-by: Benjamin Nussbaum Co-authored-by: Khiet Tam Nguyen <86177399+nktnet1@users.noreply.github.com> Co-authored-by: Vidhya LKG for IT <24915474+VidhyaSanjeevi@users.noreply.github.com> Co-authored-by: Sanjeevi Subramani Co-authored-by: Muzaffer Kadir YILMAZ <34358176+muzafferkadir@users.noreply.github.com> Co-authored-by: Jemg Co-authored-by: Jainil Prajapati <86187588+jaainil@users.noreply.github.com> Co-authored-by: Ye Liu Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Carl-Gerhard Lindesvärd <1987198+lindesvard@users.noreply.github.com> Co-authored-by: Huy Pham Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: Louan Fontenele Co-authored-by: Alexey Fedorov Co-authored-by: 0zul <26915998+0zul@users.noreply.github.com> Co-authored-by: Pascal Oberbeck <35005267+poberbeck@users.noreply.github.com> Co-authored-by: Pascal Oberbeck Co-authored-by: Christus Vincent Co-authored-by: Huba Tuba <57007485+floxay@users.noreply.github.com> Co-authored-by: Pablo Moraga Sandoval <72164630+Ketbome@users.noreply.github.com> Co-authored-by: Firefly <77047823+Yuri-NagaSaki@users.noreply.github.com> Co-authored-by: Naterfute <106989409+naterfute@users.noreply.github.com> Co-authored-by: Vitaliy Kukharik <37010174+vitabaks@users.noreply.github.com> Co-authored-by: aurorarissime Co-authored-by: фырат ёздэн <31664778+fir4tozden@users.noreply.github.com> Co-authored-by: JoshuaRileyDev <59296334+JoshuaRileyDev@users.noreply.github.com> Co-authored-by: Claude Co-authored-by: vabs Co-authored-by: Jorge Gómez Zarzosa <34076979+jorgegomzar@users.noreply.github.com> Co-authored-by: Jorge Gómez Zarzosa Co-authored-by: Benjamin Robinet Co-authored-by: Naim Hasim Co-authored-by: kadma Co-authored-by: José F. Bello <45277800+bellolongart@users.noreply.github.com> Co-authored-by: jbello Co-authored-by: Harshal Rathore <76205196+HarshalRathore@users.noreply.github.com> Co-authored-by: Vinicios Lugli Co-authored-by: Kien Ngo Co-authored-by: Simon <97951171+SimonSchroffner@users.noreply.github.com> Co-authored-by: Aaron McGuire <89317236+Aaron-McGuire@users.noreply.github.com> Co-authored-by: Aaron McGuire Co-authored-by: Andrew Wong --- AGENTS.md | 10 + CONTRIBUTING.md | 5 + blueprints/alist/docker-compose.yml | 2 +- blueprints/appsmith/docker-compose.yml | 8 +- blueprints/budibase/docker-compose.yml | 45 +-- blueprints/habitica/docker-compose.yml | 75 ++++- blueprints/habitica/template.toml | 24 +- blueprints/invoiceshelf/docker-compose.yml | 6 +- blueprints/ipfs/docker-compose.yml | 17 + blueprints/ipfs/ipfs.svg | 1 + blueprints/ipfs/template.toml | 25 ++ blueprints/nextcloud-aio/docker-compose.yml | 2 +- blueprints/postgres-pgdog/docker-compose.yml | 33 ++ blueprints/postgres-pgdog/postgres-pgdog.png | Bin 0 -> 23718 bytes blueprints/postgres-pgdog/template.toml | 36 ++ blueprints/pulse/docker-compose.yml | 22 ++ blueprints/pulse/pulse.svg | 4 + blueprints/pulse/template.toml | 13 + blueprints/seaweedfs/docker-compose.yml | 114 +++++++ blueprints/seaweedfs/seaweedfs.svg | 317 ++++++++++++++++++ blueprints/seaweedfs/template.toml | 27 ++ blueprints/strapi/docker-compose.yml | 58 ++++ blueprints/strapi/strapi.svg | 23 ++ blueprints/strapi/template.toml | 15 + blueprints/supabase/docker-compose.yml | 1 + blueprints/supabase/template.toml | 6 +- blueprints/superset/docker-compose.yml | 31 +- blueprints/superset/template.toml | 3 +- blueprints/trilium-next/docker-compose.yml | 23 ++ blueprints/trilium-next/template.toml | 13 + blueprints/trilium-next/trilium-next-logo.svg | 2 + .../trmnl-byos-laravel/docker-compose.yml | 2 +- blueprints/uptime-kuma/docker-compose.yml | 2 +- blueprints/vikunja/docker-compose.yml | 27 +- blueprints/vikunja/template.toml | 4 - blueprints/wg-easy/docker-compose.yml | 19 +- blueprints/wuzapi/docker-compose.yml | 36 ++ blueprints/wuzapi/template.toml | 20 ++ blueprints/wuzapi/wuzapi.png | Bin 0 -> 17289 bytes meta.json | 149 +++++++- 40 files changed, 1099 insertions(+), 121 deletions(-) create mode 100644 blueprints/ipfs/docker-compose.yml create mode 100644 blueprints/ipfs/ipfs.svg create mode 100644 blueprints/ipfs/template.toml create mode 100644 blueprints/postgres-pgdog/docker-compose.yml create mode 100644 blueprints/postgres-pgdog/postgres-pgdog.png create mode 100644 blueprints/postgres-pgdog/template.toml create mode 100644 blueprints/pulse/docker-compose.yml create mode 100644 blueprints/pulse/pulse.svg create mode 100644 blueprints/pulse/template.toml create mode 100644 blueprints/seaweedfs/docker-compose.yml create mode 100644 blueprints/seaweedfs/seaweedfs.svg create mode 100644 blueprints/seaweedfs/template.toml create mode 100644 blueprints/strapi/docker-compose.yml create mode 100644 blueprints/strapi/strapi.svg create mode 100644 blueprints/strapi/template.toml create mode 100755 blueprints/trilium-next/docker-compose.yml create mode 100755 blueprints/trilium-next/template.toml create mode 100644 blueprints/trilium-next/trilium-next-logo.svg create mode 100644 blueprints/wuzapi/docker-compose.yml create mode 100644 blueprints/wuzapi/template.toml create mode 100644 blueprints/wuzapi/wuzapi.png diff --git a/AGENTS.md b/AGENTS.md index c34d6beb..753da746 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -170,6 +170,16 @@ This document provides essential context for AI models interacting with this pro - **Env:** Array of strings: `env = ["KEY=VALUE", "DB_PASSWORD=${db_pass}"]` - **Available helpers:** `${domain}`, `${password:length}`, `${base64:length}`, `${hash:length}`, `${uuid}`, `${randomPort}`, `${email}`, `${username}`, `${timestamp}`, `${timestamps:datetime}`, `${timestampms:datetime}`, `${jwt:secret_var:payload_var}` - **JWT helper example:** `${jwt:mysecret:mypayload}` with payload containing `exp: ${timestamps:2030-01-01T00:00:00Z}` + - **Volume bind mounts (in docker-compose.yml):** When mounting host paths, do NOT use absolute paths like `"/folder:/path/in/container"`. Use relative paths instead: + ```yaml + # Invalid + volumes: + - "/folder:/path/in/container" ❌ + # Valid + volumes: + - "../files/my-database:/var/lib/mysql" ✅ + - "../files/my-configs:/etc/my-app/config" ✅ + ``` - **meta.json Requirements:** diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2671d5af..967ef6f2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -20,6 +20,11 @@ This project adheres to the [Contributor Covenant Code of Conduct](https://www.c For larger changes or questions, open an issue first to discuss your ideas. +### Pull Request Guidelines + +- **Keep PRs small and focused.** Avoid very large PRs; prefer several smaller PRs (e.g., one template or one logical change per PR). This speeds up review and keeps the history clear. +- **Test before submitting.** Any PR that has not been tested by the contributor will be closed. This keeps the PR queue tidy and ensures that only contributions that have been verified by their authors are considered. + ## Adding a New Template To add a new template, follow these steps: diff --git a/blueprints/alist/docker-compose.yml b/blueprints/alist/docker-compose.yml index 9ff67c94..1577387f 100644 --- a/blueprints/alist/docker-compose.yml +++ b/blueprints/alist/docker-compose.yml @@ -1,7 +1,7 @@ version: '3.3' services: alist: - image: xhofe/alist:v3.41.0 + image: xhofe/alist:v3.55.0 volumes: - alist-data:/opt/alist/data environment: diff --git a/blueprints/appsmith/docker-compose.yml b/blueprints/appsmith/docker-compose.yml index f520ee36..e22be557 100644 --- a/blueprints/appsmith/docker-compose.yml +++ b/blueprints/appsmith/docker-compose.yml @@ -1,6 +1,10 @@ version: "3.8" services: appsmith: - image: index.docker.io/appsmith/appsmith-ee:v1.29 + image: appsmith/appsmith-ee:v1.94 volumes: - - ../files/stacks:/appsmith-stacks + - appsmith-data:/appsmith-stacks + restart: unless-stopped + +volumes: + appsmith-data: \ No newline at end of file diff --git a/blueprints/budibase/docker-compose.yml b/blueprints/budibase/docker-compose.yml index 92ad3288..17d08eef 100644 --- a/blueprints/budibase/docker-compose.yml +++ b/blueprints/budibase/docker-compose.yml @@ -1,8 +1,8 @@ services: - apps: - image: budibase.docker.scarf.sh/budibase/apps:3.5.3 - restart: unless-stopped + apps: + image: budibase/apps:3.23.47 + restart: unless-stopped environment: SELF_HOSTED: 1 LOG_LEVEL: info @@ -39,10 +39,10 @@ services: timeout: 15s retries: 5 start_period: 10s - worker: - image: budibase.docker.scarf.sh/budibase/worker:3.2.25 - restart: unless-stopped + worker: + image: budibase/worker:3.23.47 + restart: unless-stopped environment: SELF_HOSTED: 1 LOG_LEVEL: info @@ -78,10 +78,10 @@ services: timeout: 15s retries: 5 start_period: 10s - minio: - image: minio/minio:RELEASE.2024-11-07T00-52-20Z - restart: unless-stopped + minio: + image: minio/minio:RELEASE.2025-09-07T16-13-09Z + restart: unless-stopped volumes: - 'minio_data:/data' environment: @@ -98,10 +98,10 @@ services: interval: 30s timeout: 20s retries: 3 - proxy: - image: budibase/proxy:3.2.25 - restart: unless-stopped + proxy: + image: budibase/proxy:3.23.47 + restart: unless-stopped environment: PROXY_RATE_LIMIT_WEBHOOKS_PER_SECOND: 10 PROXY_RATE_LIMIT_API_PER_SECOND: 20 @@ -130,10 +130,10 @@ services: timeout: 15s retries: 5 start_period: 10s + couchdb: image: budibase/couchdb:v3.3.3 restart: unless-stopped - environment: COUCHDB_USER: budibase COUCHDB_PASSWORD: ${BB_COUCHDB_PASSWORD} @@ -150,9 +150,9 @@ services: start_period: 10s volumes: - 'couchdb3_data:/opt/couchdb/data' - redis: - image: redis:7.2-alpine + redis: + image: redis:8.4-alpine restart: unless-stopped command: 'redis-server --requirepass "${BB_REDIS_PASSWORD}"' volumes: @@ -168,22 +168,9 @@ services: timeout: 15s retries: 5 start_period: 10s - watchtower: - restart: unless-stopped - - image: containrrr/watchtower:1.7.1 - volumes: - - '/var/run/docker.sock:/var/run/docker.sock' - command: '--debug --http-api-update bbapps bbworker bbproxy' - environment: - WATCHTOWER_HTTP_API: true - WATCHTOWER_HTTP_API_TOKEN: ${BB_WATCHTOWER_PASSWORD} - WATCHTOWER_CLEANUP: true - labels: - - com.centurylinklabs.watchtower.enable=false volumes: minio_data: couchdb3_data: - redis_data: \ No newline at end of file + redis_data: diff --git a/blueprints/habitica/docker-compose.yml b/blueprints/habitica/docker-compose.yml index af226516..3990e571 100644 --- a/blueprints/habitica/docker-compose.yml +++ b/blueprints/habitica/docker-compose.yml @@ -1,13 +1,18 @@ -version: "3.8" - services: server: image: docker.io/awinterstein/habitica-server:latest restart: unless-stopped depends_on: - - mongo + mongo: + condition: service_healthy environment: - - NODE_DB_URI=mongodb://mongo/habitica + NODE_DB_URI: "mongodb://${MONGO_HABITICA_USER}:${MONGO_HABITICA_PASSWORD}@mongo/habitica?authSource=habitica" + INVITE_ONLY: "${INVITE_ONLY}" + EMAIL_SERVER_URL: "${EMAIL_SERVER_URL}" + EMAIL_SERVER_PORT: "${EMAIL_SERVER_PORT}" + EMAIL_SERVER_AUTH_USER: "${EMAIL_SERVER_AUTH_USER}" + EMAIL_SERVER_AUTH_PASSWORD: "${EMAIL_SERVER_AUTH_PASSWORD}" + ADMIN_EMAIL: "${ADMIN_EMAIL}" client: image: docker.io/awinterstein/habitica-client:latest @@ -20,12 +25,64 @@ services: mongo: image: docker.io/mongo:latest restart: unless-stopped - command: ["--replSet", "rs", "--bind_ip_all", "--port", "27017"] + command: > + bash -c " + echo \"${MONGO_KEYFILE_CONTENT}\" > /etc/mongo-keyfile && + chown 999:999 /etc/mongo-keyfile && + chmod 400 /etc/mongo-keyfile && + exec docker-entrypoint.sh mongod --replSet rs --bind_ip_all --port 27017 --keyFile /etc/mongo-keyfile + " + environment: + MONGO_INITDB_ROOT_USERNAME: ${MONGO_ADMIN_USER} + MONGO_INITDB_ROOT_PASSWORD: ${MONGO_ADMIN_PASSWORD} + MONGO_KEYFILE_CONTENT: ${MONGO_KEYFILE_CONTENT} + MONGO_HABITICA_USER: ${MONGO_HABITICA_USER} + MONGO_HABITICA_PASSWORD: ${MONGO_HABITICA_PASSWORD} + # --------------------------------------------------------- + # SMART HEALTHCHECK: Auto-fixes Hostname Mismatches for replicaSet + # --------------------------------------------------------- healthcheck: - test: echo "try { rs.status() } catch (err) { rs.initiate() }" | mongosh --port 27017 --quiet - interval: 10s - timeout: 30s - retries: 30 + test: | + mongosh --port 27017 --quiet -u "${MONGO_ADMIN_USER}" -p "${MONGO_ADMIN_PASSWORD}" --authenticationDatabase admin --eval " + try { + // 1. Hostname Fix + const config = rs.conf(); + const currentHost = require('os').hostname() + ':27017'; + if (config.members[0].host !== currentHost) { + config.members[0].host = currentHost; + rs.reconfig(config, { force: true }); + } + + // 2. User Creation Logic + const targetDb = db.getSiblingDB('habitica'); + const hUser = process.env.MONGO_HABITICA_USER; + const hPass = process.env.MONGO_HABITICA_PASSWORD; + + // We can only check/create users if we are Primary + if (rs.isMaster().ismaster) { + if (!targetDb.getUser(hUser)) { + print('Creating missing user ' + hUser + '...'); + targetDb.createUser({ user: hUser, pwd: hPass, roles: ['readWrite'] }); + } + // SUCCESS: User exists and we are Primary + quit(0); + } else { + // We are not Primary yet (still electing), so we cannot confirm user exists. + // Fail the check so the dependent app waits. + print('Waiting for Primary state...'); + quit(1); + } + } catch (err) { + // If not initialized, initiate and FAIL this check so we wait for the next cycle + try { + rs.initiate({ _id: 'rs', members: [{ _id: 0, host: require('os').hostname() + ':27017' }] }); + } catch (e) {} + quit(1); + } + " + interval: 5s + timeout: 10s + retries: 20 volumes: - habitica-mongo-data:/data/db diff --git a/blueprints/habitica/template.toml b/blueprints/habitica/template.toml index 3888ae24..a8cb5fc6 100644 --- a/blueprints/habitica/template.toml +++ b/blueprints/habitica/template.toml @@ -1,6 +1,9 @@ [variables] main_domain = "${domain}" mail_password = "${password:32}" +mongo_key = "${base64:756}" +mongo_admin_password = "${password}" +mongo_habitica_password = "${password}" [config] [[config.domains]] @@ -9,16 +12,21 @@ port = 80 host = "habitica.${main_domain}" [config.env] - -BASE_URL="https://habitica.${main_domain}" -INVITE_ONLY="false" -EMAIL_SERVER_URL="mail.example.com" -EMAIL_SERVER_PORT="587" -EMAIL_SERVER_AUTH_USER="mail_user" -EMAIL_SERVER_AUTH_PASSWORD="${mail_password}" +BASE_URL = "https://habitica.${main_domain}" +INVITE_ONLY = "false" +EMAIL_SERVER_URL = "mail.example.com" +EMAIL_SERVER_PORT = "587" +EMAIL_SERVER_AUTH_USER = "mail_user" +EMAIL_SERVER_AUTH_PASSWORD = "${mail_password}" +MONGO_KEYFILE_CONTENT = "${mongo_key}" +MONGO_ADMIN_USER = "admin" +MONGO_ADMIN_PASSWORD = "${mongo_admin_password}" +MONGO_HABITICA_USER = "habitica" +MONGO_HABITICA_PASSWORD = "${mongo_habitica_password}" +ADMIN_EMAIL = "no-reply@${main_domain}" [[config.mounts]] serviceName = "mongo" type = "volume" source = "habitica-mongo-data" -target = "/data/db" \ No newline at end of file +target = "/data/db" diff --git a/blueprints/invoiceshelf/docker-compose.yml b/blueprints/invoiceshelf/docker-compose.yml index 8d2c8265..bc4e8ff0 100644 --- a/blueprints/invoiceshelf/docker-compose.yml +++ b/blueprints/invoiceshelf/docker-compose.yml @@ -20,8 +20,7 @@ services: image: invoiceshelf/invoiceshelf:nightly volumes: - - invoiceshelf-app-data:/data - - invoiceshelf-app-conf:/conf + - invoiceshelf-storage:/var/www/html/storage environment: - PHP_TZ=UTC - TIMEZONE=UTC @@ -49,5 +48,4 @@ services: volumes: invoiceshelf-postgres-data: - invoiceshelf-app-data: - invoiceshelf-app-conf: \ No newline at end of file + invoiceshelf-storage: diff --git a/blueprints/ipfs/docker-compose.yml b/blueprints/ipfs/docker-compose.yml new file mode 100644 index 00000000..4275f553 --- /dev/null +++ b/blueprints/ipfs/docker-compose.yml @@ -0,0 +1,17 @@ +version: "3.8" +services: + ipfs: + image: ipfs/kubo:latest + restart: unless-stopped + environment: + - IPFS_PROFILE=server + volumes: + - ipfs_data:/data/ipfs + - ipfs_staging:/export + ports: + - 4001 + - 8080 + - 5001 +volumes: + ipfs_data: {} + ipfs_staging: {} diff --git a/blueprints/ipfs/ipfs.svg b/blueprints/ipfs/ipfs.svg new file mode 100644 index 00000000..1b90c313 --- /dev/null +++ b/blueprints/ipfs/ipfs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/blueprints/ipfs/template.toml b/blueprints/ipfs/template.toml new file mode 100644 index 00000000..89d4677e --- /dev/null +++ b/blueprints/ipfs/template.toml @@ -0,0 +1,25 @@ +[variables] +gateway_domain = "${domain}" +api_domain = "${domain}" + +[config] +env = [] + +[[config.domains]] +serviceName = "ipfs" +port = 8080 +host = "${gateway_domain}" + +[[config.domains]] +serviceName = "ipfs" +port = 5001 +host = "${api_domain}" + +[[config.mounts]] +filePath = "/container-init.d/001-configure-api.sh" +content = """ +#!/bin/sh +ipfs config Addresses.API /ip4/0.0.0.0/tcp/5001 +ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]' +ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "POST", "GET"]' +""" diff --git a/blueprints/nextcloud-aio/docker-compose.yml b/blueprints/nextcloud-aio/docker-compose.yml index 1f4e43e6..f262b157 100644 --- a/blueprints/nextcloud-aio/docker-compose.yml +++ b/blueprints/nextcloud-aio/docker-compose.yml @@ -1,6 +1,6 @@ services: nextcloud: - image: nextcloud:30.0.2 + image: nextcloud:32.0.5 restart: always ports: diff --git a/blueprints/postgres-pgdog/docker-compose.yml b/blueprints/postgres-pgdog/docker-compose.yml new file mode 100644 index 00000000..f5164d9c --- /dev/null +++ b/blueprints/postgres-pgdog/docker-compose.yml @@ -0,0 +1,33 @@ +services: + postgres-pgdog: + image: ${PGDOG_IMAGE} + restart: unless-stopped + # Uncomment 'ports' settings below to enable external access + # ports: + # - "6432:6432" + volumes: + - ../files/pgdog.toml:/pgdog/pgdog.toml + - ../files/users.toml:/pgdog/users.toml + environment: + - RUST_LOG=${RUST_LOG} + depends_on: + postgres: + condition: service_healthy + + postgres: + image: ${POSTGRES_IMAGE} + restart: unless-stopped + environment: + - POSTGRES_USER=${POSTGRES_USER} + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + - POSTGRES_DB=${POSTGRES_DB} + volumes: + - postgres-data:/var/lib/postgresql + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"] + interval: 10s + timeout: 5s + retries: 5 + +volumes: + postgres-data: diff --git a/blueprints/postgres-pgdog/postgres-pgdog.png b/blueprints/postgres-pgdog/postgres-pgdog.png new file mode 100644 index 0000000000000000000000000000000000000000..bbc4aae7a9bbff146110a5d5389de5a114360d7c GIT binary patch literal 23718 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 K2ER&Qk?c?Dqu37s literal 0 HcmV?d00001 diff --git a/blueprints/postgres-pgdog/template.toml b/blueprints/postgres-pgdog/template.toml new file mode 100644 index 00000000..2ffc4ec0 --- /dev/null +++ b/blueprints/postgres-pgdog/template.toml @@ -0,0 +1,36 @@ +[variables] +postgres_user = "${username}" +postgres_password = "${password:32}" +postgres_db = "postgres" +pgdog_image = "ghcr.io/pgdogdev/pgdog:v0.1.26" +postgres_image = "postgres:18-alpine" + +[[config.mounts]] +filePath = "pgdog.toml" +content = """ +[general] +host = "0.0.0.0" +port = 6432 + +[[databases]] +name = "${postgres_db}" +host = "postgres" +port = 5432 +""" + +[[config.mounts]] +filePath = "users.toml" +content = """ +[[users]] +name = "${postgres_user}" +database = "${postgres_db}" +password = "${postgres_password}" +""" + +[config.env] +POSTGRES_USER = "${postgres_user}" +POSTGRES_PASSWORD = "${postgres_password}" +POSTGRES_DB = "${postgres_db}" +PGDOG_IMAGE = "${pgdog_image}" +POSTGRES_IMAGE = "${postgres_image}" +RUST_LOG = "info" diff --git a/blueprints/pulse/docker-compose.yml b/blueprints/pulse/docker-compose.yml new file mode 100644 index 00000000..074aec07 --- /dev/null +++ b/blueprints/pulse/docker-compose.yml @@ -0,0 +1,22 @@ +version: "3.8" +services: + pulse: + image: rcourtman/pulse:5.1 + restart: always + expose: + - 7655 + volumes: + - pulse_data:/data + - /var/run/docker.sock:/var/run/docker.sock + environment: + - PULSE_AUTH_USER=${PULSE_AUTH_USER} + - PULSE_AUTH_PASS=${PULSE_AUTH_PASS} + healthcheck: + test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:7655/api/health"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 40s + +volumes: + pulse_data: \ No newline at end of file diff --git a/blueprints/pulse/pulse.svg b/blueprints/pulse/pulse.svg new file mode 100644 index 00000000..428a6e54 --- /dev/null +++ b/blueprints/pulse/pulse.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/blueprints/pulse/template.toml b/blueprints/pulse/template.toml new file mode 100644 index 00000000..865990c4 --- /dev/null +++ b/blueprints/pulse/template.toml @@ -0,0 +1,13 @@ +[variables] +main_domain = "${domain}" +pulse_auth_user = "${username}" +pulse_auth_pass = "${password:32}" + +[config] +env = ["PULSE_AUTH_USER=${pulse_auth_user}", "PULSE_AUTH_PASS=${pulse_auth_pass}"] +mounts = [] + +[[config.domains]] +serviceName = "pulse" +port = 7_655 +host = "${main_domain}" \ No newline at end of file diff --git a/blueprints/seaweedfs/docker-compose.yml b/blueprints/seaweedfs/docker-compose.yml new file mode 100644 index 00000000..ca4a0968 --- /dev/null +++ b/blueprints/seaweedfs/docker-compose.yml @@ -0,0 +1,114 @@ +services: + master: + image: chrislusf/seaweedfs:4.02 + command: > + -v=0 + master + -volumeSizeLimitMB=10240 + -ip=master + -ip.bind=0.0.0.0 + -port=9333 + -mdir=/data/master + volumes: + - seaweedfs-master:/data/master + restart: unless-stopped + healthcheck: + test: ["CMD", "wget", "-q", "--spider", "http://localhost:9333"] + interval: 30s + timeout: 10s + retries: 3 + expose: + - 9333 + deploy: + resources: + limits: + memory: 512M + reservations: + memory: 256M + + volume: + image: chrislusf/seaweedfs:4.02 + command: > + -v=0 + volume + -mserver="master:9333" + -port=8080 + -dir=/data/volume + -max=100 + volumes: + - seaweedfs-volume:/data/volume + depends_on: + master: + condition: service_healthy + restart: unless-stopped + expose: + - 8080 + deploy: + resources: + limits: + memory: 1G + reservations: + memory: 512M + + filer: + image: chrislusf/seaweedfs:4.02 + command: > + -v=0 + filer + -defaultReplicaPlacement=000 + -master="master:9333" + -ip=filer + -ip.bind=0.0.0.0 + -port=8888 + environment: + - WEED_MASTER=master:9333 + volumes: + - seaweedfs-filer:/data + depends_on: + - master + - volume + restart: unless-stopped + # # Secure the GUI with username/password + # labels: + # # htpasswd -nb admin admin + # - "traefik.http.middlewares.basic-auth.basicauth.users=admin:$$apr1$$aLLYxhdC$$ZAW26eJfBRC8qWjCkcZns." + # - "traefik.http.routers.service-name.middlewares=basic-auth" + healthcheck: + test: ["CMD", "wget", "-q", "--spider", "http://localhost:8888"] + interval: 30s + timeout: 10s + retries: 3 + deploy: + resources: + limits: + memory: 1G + reservations: + memory: 512M + expose: + - 8888 + + s3: + image: chrislusf/seaweedfs:4.02 + command: > + -v=0 + s3 + -filer="filer:8888" + -ip.bind=0.0.0.0 + -port=8333 + environment: + - AWS_ACCESS_KEY_ID=${S3_ACCESS_KEY} + - AWS_SECRET_ACCESS_KEY=${S3_SECRET_KEY} + restart: unless-stopped + deploy: + resources: + limits: + memory: 512M + reservations: + memory: 256M + expose: + - 8333 + +volumes: + seaweedfs-master: + seaweedfs-volume: + seaweedfs-filer: diff --git a/blueprints/seaweedfs/seaweedfs.svg b/blueprints/seaweedfs/seaweedfs.svg new file mode 100644 index 00000000..61fce568 --- /dev/null +++ b/blueprints/seaweedfs/seaweedfs.svg @@ -0,0 +1,317 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/blueprints/seaweedfs/template.toml b/blueprints/seaweedfs/template.toml new file mode 100644 index 00000000..a72ae280 --- /dev/null +++ b/blueprints/seaweedfs/template.toml @@ -0,0 +1,27 @@ +[variables] +main_domain = "${domain}" +filer_domain = "filer.${domain}" +master_domain = "master.${domain}" +s3_domain = "s3.${domain}" + +[config] +mounts = [] + +[[config.domains]] +serviceName = "filer" +port = 8888 +host = "${filer_domain}" + +[[config.domains]] +serviceName = "master" +port = 9333 +host = "${master_domain}" + +[[config.domains]] +serviceName = "s3" +port = 8333 +host = "${s3_domain}" + +[config.env] +S3_ACCESS_KEY = "admin" +S3_SECRET_KEY = "${password:16}" diff --git a/blueprints/strapi/docker-compose.yml b/blueprints/strapi/docker-compose.yml new file mode 100644 index 00000000..6ac724fc --- /dev/null +++ b/blueprints/strapi/docker-compose.yml @@ -0,0 +1,58 @@ +# Self-host guide: +# - https://strapi.io/blog/how-to-self-host-your-headless-cms-using-docker-compose + +services: + strapi: + image: elestio/strapi-production:v5.33.0 + environment: + # https://docs.strapi.io/cms/configurations/environment + NODE_ENV: production + STRAPI_TELEMETRY_DISABLED: true + STRAPI_PLUGIN_I18N_INIT_LOCALE_CODE: en + FAST_REFRESH: true + JWT_SECRET: ${JWT_SECRET} + ADMIN_JWT_SECRET: ${ADMIN_JWT_SECRET} + DATABASE_CLIENT: postgres + DATABASE_HOST: strapi_postgres + DATABASE_PORT: 5432 + DATABASE_NAME: strapi + DATABASE_USERNAME: strapi + DATABASE_PASSWORD: ${POSTGRES_PASSWORD} + volumes: + - strapi_data:/srv/app + expose: + - 1337 + depends_on: + - strapi_postgres + healthcheck: + test: + - CMD + - wget + - "-q" + - "--spider" + - "http://127.0.0.1:1337" + start_period: 3s + interval: 30s + timeout: 10s + retries: 5 + + strapi_postgres: + image: postgres:18 + environment: + POSTGRES_DB: strapi + POSTGRES_USER: strapi + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + volumes: + - strapi_postgres_data:/var/lib/postgresql + healthcheck: + test: + - CMD-SHELL + - "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}" + start_period: 3s + interval: 30s + timeout: 10s + retries: 5 + +volumes: + strapi_data: + strapi_postgres_data: diff --git a/blueprints/strapi/strapi.svg b/blueprints/strapi/strapi.svg new file mode 100644 index 00000000..1e4ed993 --- /dev/null +++ b/blueprints/strapi/strapi.svg @@ -0,0 +1,23 @@ + + + + + + + + diff --git a/blueprints/strapi/template.toml b/blueprints/strapi/template.toml new file mode 100644 index 00000000..0acddaf5 --- /dev/null +++ b/blueprints/strapi/template.toml @@ -0,0 +1,15 @@ +[variables] +main_domain = "${domain}" +postgres_password = "${password:32}" +jwt_secret = "${password:32}" +admin_jwt_secret = "${password:32}" + +[[config.domains]] +serviceName = "strapi" +port = 1337 +host = "${main_domain}" + +[config.env] +POSTGRES_PASSWORD = "${postgres_password}" +JWT_SECRET = "${jwt_secret}" +ADMIN_JWT_SECRET = "${admin_jwt_secret}" diff --git a/blueprints/supabase/docker-compose.yml b/blueprints/supabase/docker-compose.yml index 7d4dae81..506ddc90 100644 --- a/blueprints/supabase/docker-compose.yml +++ b/blueprints/supabase/docker-compose.yml @@ -77,6 +77,7 @@ services: SUPABASE_SERVICE_KEY: ${SERVICE_ROLE_KEY} DASHBOARD_USERNAME: ${DASHBOARD_USERNAME} DASHBOARD_PASSWORD: ${DASHBOARD_PASSWORD} + CONTAINER_PREFIX: ${CONTAINER_PREFIX} # https://unix.stackexchange.com/a/294837 entrypoint: bash -c 'eval "echo \"$$(cat ~/temp.yml)\"" > ~/kong.yml && /docker-entrypoint.sh kong docker-start' diff --git a/blueprints/supabase/template.toml b/blueprints/supabase/template.toml index 9f35f79c..f70c93cc 100644 --- a/blueprints/supabase/template.toml +++ b/blueprints/supabase/template.toml @@ -309,7 +309,7 @@ services: ## Secure Realtime routes - name: realtime-v1-ws _comment: 'Realtime: /realtime/v1/* -> ws://realtime:4000/socket/*' - url: http://realtime-dev.supabase-realtime:4000/socket + url: http://realtime-dev.${CONTAINER_PREFIX}-realtime:4000/socket protocol: ws routes: - name: realtime-v1-ws @@ -329,7 +329,7 @@ services: - anon - name: realtime-v1-rest _comment: 'Realtime: /realtime/v1/* -> ws://realtime:4000/socket/*' - url: http://realtime-dev.supabase-realtime:4000/api + url: http://realtime-dev.${CONTAINER_PREFIX}-realtime:4000/api protocol: http routes: - name: realtime-v1-rest @@ -850,7 +850,7 @@ transforms: kong: '.appname == "supabase-kong"' auth: '.appname == "supabase-auth"' rest: '.appname == "supabase-rest"' - realtime: '.appname == "realtime-dev.supabase-realtime"' + realtime: '.appname == "realtime-dev.${CONTAINER_PREFIX}-realtime"' storage: '.appname == "supabase-storage"' functions: '.appname == "supabase-edge-functions"' db: '.appname == "supabase-db"' diff --git a/blueprints/superset/docker-compose.yml b/blueprints/superset/docker-compose.yml index 076fe0a8..3a20fd04 100644 --- a/blueprints/superset/docker-compose.yml +++ b/blueprints/superset/docker-compose.yml @@ -15,23 +15,14 @@ # ## NETWORK INSTRUCTIONS # # If you want to connect superset with other internal databases managed by -# Dokploy (on dokploy-network) using internal hostnames, you will need to -# uncomment the `networks` section, both for the superset container and -# at the very bottom of this docker-compose template. +# Dokploy using internal hostnames, you will need to connect the `superset` +# container to those networks. # -# Note that the `superset` service name/hostname will not be unique on the -# global `dokploy-network`. If you plan to: -# -# 1. deploy a second instance of superset on dokploy-network, and -# 2. have other containers on dokploy-network utilise the second instance's -# Superset API (https://superset.apache.org/docs/api) -# -# Please change the service name of the second instance. services: superset: - image: amancevice/superset - restart: always + image: amancevice/superset:6.0.0 + restart: unless-stopped #networks: # - dokploy-network depends_on: @@ -52,14 +43,14 @@ services: REDIS_HOST: superset_redis superset_postgres: - image: postgres - restart: always + image: postgres:18 + restart: unless-stopped environment: POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB} volumes: - - superset_postgres_data:/var/lib/postgresql/data + - superset_postgres_data:/var/lib/postgresql healthcheck: test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] interval: 30s @@ -67,8 +58,8 @@ services: retries: 3 superset_redis: - image: redis - restart: always + image: redis:8 + restart: unless-stopped volumes: - superset_redis_data:/data command: redis-server --requirepass ${REDIS_PASSWORD} @@ -78,10 +69,6 @@ services: timeout: 10s retries: 3 -#networks: -# dokploy-network: -# external: true - volumes: superset_postgres_data: superset_redis_data: diff --git a/blueprints/superset/template.toml b/blueprints/superset/template.toml index ec4535fd..7cee12fc 100644 --- a/blueprints/superset/template.toml +++ b/blueprints/superset/template.toml @@ -3,7 +3,6 @@ main_domain = "${domain}" secret_key = "${password:30}" postgres_password = "${password:30}" redis_password = "${password:30}" -mapbox_api_key = "" [[config.domains]] serviceName = "superset" @@ -12,7 +11,7 @@ host = "${main_domain}" [config.env] SECRET_KEY = "${secret_key}" -MAPBOX_API_KEY = "${mapbox_api_key}" +MAPBOX_API_KEY = "" POSTGRES_DB = "superset" POSTGRES_USER = "superset" POSTGRES_PASSWORD = "${postgres_password}" diff --git a/blueprints/trilium-next/docker-compose.yml b/blueprints/trilium-next/docker-compose.yml new file mode 100755 index 00000000..6ffc82a5 --- /dev/null +++ b/blueprints/trilium-next/docker-compose.yml @@ -0,0 +1,23 @@ +# Running `docker-compose up` will create/use the "trilium-data" directory in the user home +services: + trilium_next: + # Optionally, replace `latest` with a version tag like `v0.110.3` + # Using `latest` may cause unintended updates to the container + image: triliumnext/trilium:v0.101.3 + # Restart the container unless it was stopped by the user + restart: unless-stopped + environment: + - TRILIUM_DATA_DIR=/home/node/trilium-data + ports: + # By default, Trilium will be available at http://localhost:8080 + # It will also be accessible at http://:8080 + # You might want to limit this with something like Docker Networks, reverse proxies, or firewall rules, + # however be aware that using UFW is known to not work with default Docker installations, see: + # https://docs.docker.com/engine/network/packet-filtering-firewalls/#docker-and-ufw + - "8080" + volumes: + # Unless TRILIUM_DATA_DIR is set, the data will be stored in the "trilium-data" directory in the home directory. + # This can also be changed with by replacing the line below with `- /path/of/your/choice:/home/node/trilium-data + - ${TRILIUM_DATA_DIR:-~/trilium-data}:/home/node/trilium-data + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro diff --git a/blueprints/trilium-next/template.toml b/blueprints/trilium-next/template.toml new file mode 100755 index 00000000..0292bb68 --- /dev/null +++ b/blueprints/trilium-next/template.toml @@ -0,0 +1,13 @@ +[variables] +main_domain = "${domain}" + +[config] +env = [ +"TRILIUM_DATA_DIR=/root" +] +mount = [] + +[[config.domains]] +serviceName = "trilium_next" +port = 8080 +host = "${main_domain}" diff --git a/blueprints/trilium-next/trilium-next-logo.svg b/blueprints/trilium-next/trilium-next-logo.svg new file mode 100644 index 00000000..79f47a82 --- /dev/null +++ b/blueprints/trilium-next/trilium-next-logo.svg @@ -0,0 +1,2 @@ + +Trilium Notes \ No newline at end of file diff --git a/blueprints/trmnl-byos-laravel/docker-compose.yml b/blueprints/trmnl-byos-laravel/docker-compose.yml index f571719d..61674d23 100644 --- a/blueprints/trmnl-byos-laravel/docker-compose.yml +++ b/blueprints/trmnl-byos-laravel/docker-compose.yml @@ -1,6 +1,6 @@ services: trmnl-byos-laravel: - image: ghcr.io/usetrmnl/byos_laravel:0.21.0 + image: ghcr.io/usetrmnl/byos_laravel:0.27.0 environment: - APP_URL=${APP_URL} - PHP_OPCACHE_ENABLE=${PHP_OPCACHE_ENABLE} diff --git a/blueprints/uptime-kuma/docker-compose.yml b/blueprints/uptime-kuma/docker-compose.yml index ca80a8a3..f50c2013 100644 --- a/blueprints/uptime-kuma/docker-compose.yml +++ b/blueprints/uptime-kuma/docker-compose.yml @@ -1,7 +1,7 @@ version: "3.8" services: uptime-kuma: - image: louislam/uptime-kuma:1.23.15 + image: louislam/uptime-kuma:2.1.0 restart: always volumes: - uptime-kuma-data:/app/data diff --git a/blueprints/vikunja/docker-compose.yml b/blueprints/vikunja/docker-compose.yml index 11b744b0..0d1c7fbe 100644 --- a/blueprints/vikunja/docker-compose.yml +++ b/blueprints/vikunja/docker-compose.yml @@ -1,17 +1,17 @@ -version: "3.8" - services: vikunja: image: vikunja/vikunja + user: "0:0" environment: - VIKUNJA_SERVICE_PUBLICURL: http://vikunja.local - VIKUNJA_DATABASE_HOST: db + VIKUNJA_SERVICE_PUBLICURL: ${VIKUNJA_SERVICE_PUBLICURL} + VIKUNJA_PUBLIC_PORT: ${VIKUNJA_PUBLIC_PORT} + VIKUNJA_DATABASE_HOST: ${VIKUNJA_DATABASE_HOST} VIKUNJA_DATABASE_PASSWORD: ${VIKUNJA_DATABASE_PASSWORD} - VIKUNJA_DATABASE_TYPE: postgres - VIKUNJA_DATABASE_USER: vikunja - VIKUNJA_DATABASE_DATABASE: vikunja + VIKUNJA_DATABASE_TYPE: ${VIKUNJA_DATABASE_TYPE} + VIKUNJA_DATABASE_USER: ${VIKUNJA_DATABASE_USER} + VIKUNJA_DATABASE_DATABASE: ${VIKUNJA_DATABASE_DATABASE} VIKUNJA_SERVICE_JWTSECRET: ${VIKUNJA_SERVICE_JWTSECRET} - expose: + ports: - 3456 volumes: - vikunja-files:/app/vikunja/files @@ -24,15 +24,16 @@ services: image: postgres:17 environment: POSTGRES_PASSWORD: ${VIKUNJA_DATABASE_PASSWORD} - POSTGRES_USER: vikunja - POSTGRES_DB: vikunja + POSTGRES_USER: ${VIKUNJA_DATABASE_USER} + POSTGRES_DB: ${VIKUNJA_DATABASE_DATABASE} volumes: - vikunja-db:/var/lib/postgresql/data restart: unless-stopped healthcheck: - test: ["CMD-SHELL", "pg_isready -h localhost -U $$POSTGRES_USER"] - interval: 2s - start_period: 30s + test: ["CMD-SHELL", "pg_isready", "-U", "${VIKUNJA_DATABASE_USER}", "-d", "${VIKUNJA_DATABASE_DATABASE}"] + interval: 10s + timeout: 5s + retries: 3 volumes: vikunja-files: {} diff --git a/blueprints/vikunja/template.toml b/blueprints/vikunja/template.toml index 0a4e88f9..1740d3e6 100644 --- a/blueprints/vikunja/template.toml +++ b/blueprints/vikunja/template.toml @@ -18,10 +18,6 @@ VIKUNJA_DATABASE_USER = "vikunja" VIKUNJA_DATABASE_DATABASE = "vikunja" VIKUNJA_SERVICE_JWTSECRET = "${jwt_secret}" -POSTGRES_PASSWORD = "${db_password}" -POSTGRES_USER = "vikunja" -POSTGRES_DB = "vikunja" - [[config.mounts]] serviceName = "vikunja" volumeName = "vikunja-files" diff --git a/blueprints/wg-easy/docker-compose.yml b/blueprints/wg-easy/docker-compose.yml index 1161bb12..0a98f6d9 100644 --- a/blueprints/wg-easy/docker-compose.yml +++ b/blueprints/wg-easy/docker-compose.yml @@ -3,24 +3,23 @@ volumes: services: wg-easy: - image: ghcr.io/wg-easy/wg-easy:15 - restart: unless-stopped environment: - - WG_HOST=${WIREGUARD_HOST} - - PASSWORD=${WIREGUARD_PASSWORD} - - WG_PORT=51820 + - INIT_ENABLED=1 + - INIT_HOST=${WIREGUARD_HOST} + - INIT_PORT=51820 + - INIT_USERNAME=admin + - INIT_PASSWORD=${WIREGUARD_PASSWORD} + - INIT_DNS=1.1.1.1,8.8.8.8 - PORT=51821 - - WG_MTU=1280 - - WG_DEFAULT_DNS=1.1.1.1,8.8.8.8 - - WG_ALLOWED_IPS=0.0.0.0/0 - - WG_POST_UP=iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; - - WG_POST_DOWN=iptables -t nat -D POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE; iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; + image: ghcr.io/wg-easy/wg-easy:15 + container_name: wg-easy volumes: - etc_wireguard:/etc/wireguard - /lib/modules:/lib/modules:ro ports: - "51820:51820/udp" - "51821:51821/tcp" + restart: unless-stopped cap_add: - NET_ADMIN - SYS_MODULE diff --git a/blueprints/wuzapi/docker-compose.yml b/blueprints/wuzapi/docker-compose.yml new file mode 100644 index 00000000..87b5b8b8 --- /dev/null +++ b/blueprints/wuzapi/docker-compose.yml @@ -0,0 +1,36 @@ +version: "3.8" +services: + wuzapi-server: + image: asternic/wuzapi:sha-30c1805 + restart: unless-stopped + expose: + - 8080 + environment: + - WUZAPI_ADMIN_TOKEN=${WUZAPI_ADMIN_TOKEN} + - WUZAPI_GLOBAL_ENCRYPTION_KEY=${WUZAPI_GLOBAL_ENCRYPTION_KEY} + - DB_USER=${DB_USER:-wuzapi} + - DB_PASSWORD=${DB_PASSWORD:-wuzapi} + - DB_NAME=${DB_NAME:-wuzapi} + - DB_HOST=db + - DB_PORT=5432 + - TZ=${TZ:-UTC} + depends_on: + - db + + db: + image: postgres:16-alpine + restart: always + environment: + POSTGRES_USER: ${DB_USER:-wuzapi} + POSTGRES_PASSWORD: ${DB_PASSWORD:-wuzapi} + POSTGRES_DB: ${DB_NAME:-wuzapi} + volumes: + - db_data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U $${DB_USER:-wuzapi}"] + interval: 5s + timeout: 5s + retries: 5 + +volumes: + db_data: diff --git a/blueprints/wuzapi/template.toml b/blueprints/wuzapi/template.toml new file mode 100644 index 00000000..71d95c49 --- /dev/null +++ b/blueprints/wuzapi/template.toml @@ -0,0 +1,20 @@ +[variables] +main_domain = "${domain}" +admin_token = "${password:32}" +encryption_key = "${password:32}" +db_user = "wuzapi" +db_password = "${password:32}" +db_name = "wuzapi" + +[config] +[[config.domains]] +serviceName = "wuzapi-server" +port = 8080 +host = "${main_domain}" + +[config.env] +WUZAPI_ADMIN_TOKEN = "${admin_token}" +WUZAPI_GLOBAL_ENCRYPTION_KEY = "${encryption_key}" +DB_USER = "${db_user}" +DB_PASSWORD = "${db_password}" +DB_NAME = "${db_name}" diff --git a/blueprints/wuzapi/wuzapi.png b/blueprints/wuzapi/wuzapi.png new file mode 100644 index 0000000000000000000000000000000000000000..f48f5d33a3debe97ece8fadc19fa1bfb84b0e402 GIT binary patch literal 17289 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 F{{SA)AAkS= literal 0 HcmV?d00001 diff --git a/meta.json b/meta.json index f7dca105..42cdf342 100644 --- a/meta.json +++ b/meta.json @@ -164,13 +164,13 @@ { "id": "alist", "name": "AList", - "version": "v3.41.0", + "version": "v3.55.0", "description": "🗂️A file list/WebDAV program that supports multiple storages, powered by Gin and Solidjs.", "logo": "alist.svg", "links": { "github": "https://github.com/AlistGo/alist", - "website": "https://alist.nn.ci", - "docs": "https://alist.nn.ci/guide/install/docker.html" + "website": "https://alistgo.com/", + "docs": "https://alistgo.com/guide/install/docker.html" }, "tags": [ "file", @@ -350,7 +350,7 @@ { "id": "appsmith", "name": "Appsmith", - "version": "v1.29", + "version": "v1.94", "description": "Appsmith is a free and open source platform for building internal tools and applications.", "logo": "appsmith.png", "links": { @@ -896,7 +896,7 @@ { "id": "budibase", "name": "Budibase", - "version": "3.5.3", + "version": "3.23.47", "description": "Budibase is an open-source low-code platform that saves engineers 100s of hours building forms, portals, and approval apps, securely.", "logo": "budibase.svg", "links": { @@ -3204,6 +3204,24 @@ "finance" ] }, + { + "id": "ipfs", + "name": "IPFS (Kubo)", + "version": "latest", + "description": "IPFS (Kubo) is a decentralized peer-to-peer file sharing and storage network node. Host your own IPFS gateway and API.", + "logo": "ipfs.svg", + "links": { + "github": "https://github.com/ipfs/kubo", + "website": "https://ipfs.tech/", + "docs": "https://docs.ipfs.tech/" + }, + "tags": [ + "storage", + "decentralized", + "p2p", + "self-hosted" + ] + }, { "id": "it-tools", "name": "IT Tools", @@ -4367,8 +4385,8 @@ "description": "Obsidian LiveSync with CouchDB for real-time note synchronization.", "logo": "obsidian.png", "links": { - "github": "https://github.com/apache/couchdb", - "website": "https://couchdb.apache.org/", + "github": "https://github.com/vrtmrz/obsidian-livesync", + "website": "https://obsidian.md/sync", "docs": "https://docs.couchdb.apache.org/" }, "tags": [ @@ -5127,6 +5145,25 @@ "webmail" ] }, + { + "id": "postgres-pgdog", + "name": "PostgreSQL with PgDog", + "version": "0.1.26", + "description": "PostgreSQL database with PgDog connection pooler, load balancer, and horizontal scaling proxy. A modern alternative to PgBouncer with multi-threading support.", + "logo": "postgres-pgdog.png", + "links": { + "github": "https://github.com/pgdogdev/pgdog", + "website": "https://pgdog.dev", + "docs": "https://docs.pgdog.dev" + }, + "tags": [ + "database", + "postgresql", + "pooler", + "proxy", + "load-balancer" + ] + }, { "id": "postgresus", "name": "Postgresus", @@ -5213,6 +5250,24 @@ "management" ] }, + { + "id": "pulse", + "name": "Pulse", + "version": "latest", + "description": "A responsive monitoring platform for Proxmox VE, PBS, and Docker with real-time metrics across nodes and containers.", + "logo": "pulse.svg", + "links": { + "github": "https://github.com/rcourtman/Pulse", + "website": "https://pulserelay.pro/", + "docs": "https://github.com/rcourtman/Pulse/blob/main/docs/README.md" + }, + "tags": [ + "monitoring", + "proxmox", + "docker", + "metrics" + ] + }, { "id": "pyrodactyl", "name": "Pyrodactyl", @@ -5593,6 +5648,25 @@ "aggregator" ] }, + { + "id": "seaweedfs", + "name": "SeaweedFS", + "version": "latest", + "description": "SeaweedFS is a fast distributed storage system for blobs, objects, and files. Features S3-compatible API, POSIX FUSE mount, and WebDAV support.", + "logo": "seaweedfs.svg", + "links": { + "github": "https://github.com/seaweedfs/seaweedfs", + "website": "https://seaweedfs.com/", + "docs": "https://github.com/seaweedfs/seaweedfs/wiki" + }, + "tags": [ + "storage", + "s3", + "distributed", + "object-storage", + "file-system" + ] + }, { "id": "shlink", "name": "Shlink", @@ -5824,6 +5898,24 @@ "media" ] }, + { + "id": "strapi", + "name": "Strapi", + "version": "v5.33.0", + "description": "Open-source headless CMS to build powerful APIs with built-in content management.", + "logo": "strapi.svg", + "links": { + "github": "https://github.com/strapi/strapi", + "discord": "https://discord.com/invite/strapi", + "docs": "https://docs.strapi.io", + "website": "https://strapi.io" + }, + "tags": [ + "headless", + "cms", + "content-management" + ] + }, { "id": "supabase", "name": "SupaBase", @@ -5845,7 +5937,7 @@ { "id": "superset", "name": "Superset (Unofficial)", - "version": "latest", + "version": "6.0.0", "description": "Data visualization and data exploration platform.", "logo": "superset.svg", "links": { @@ -6049,10 +6141,27 @@ "personal-use" ] }, + { + "id": "trilium-next", + "name": "TriliumNext", + "version": "latest", + "description": "Is a free and open-source, cross-platform hierarchical note taking application with focus on building large personal knowledge bases.", + "logo": "trilium-next-logo.svg", + "links": { + "github": "https://github.com/TriliumNext/Trilium", + "website": "https://triliumnotes.org/", + "docs": "https://docs.triliumnotes.org/" + }, + "tags": [ + "self-hosted", + "productivity", + "personal-use" + ] + }, { "id": "trmnl-byos-laravel", "name": "TRMNL BYOS Laravel", - "version": "0.21.0", + "version": "0.27.0", "description": "TRMNL BYOS Laravel is a self-hosted application to manage TRMNL e-ink devices.", "logo": "byos-laravel.svg", "links": { @@ -6182,7 +6291,7 @@ { "id": "uptime-kuma", "name": "Uptime Kuma", - "version": "1.23.15", + "version": "2.1.0", "description": "Uptime Kuma is a free and open source monitoring tool that allows you to monitor your websites and applications.", "logo": "uptime-kuma.png", "links": { @@ -6270,7 +6379,7 @@ "description": "Vikunja is a self-hosted, open-source to-do list application to organize tasks, projects, and notes.", "logo": "image.png", "links": { - "github": "https://kolaente.dev/vikunja/", + "github": "https://github.com/go-vikunja/vikunja", "website": "https://vikunja.io/", "docs": "https://vikunja.io/docs/" }, @@ -6419,6 +6528,24 @@ "cms" ] }, + { + "id": "wuzapi", + "name": "WuzAPI", + "version": "v1.0.0", + "description": "A RESTful API service for WhatsApp with multiple device support and concurrent sessions.", + "logo": "wuzapi.png", + "links": { + "github": "https://github.com/asternic/wuzapi", + "website": "https://www.wuzapi.app/", + "docs": "https://github.com/asternic/wuzapi/blob/main/README.md" + }, + "tags": [ + "api", + "whatsapp", + "messaging", + "automation" + ] + }, { "id": "xsshunter", "name": "XSSHunter",