Compare commits

...
Author SHA1 Message Date
Mauricio SiuandClaude Fable 5 fef2bfbfce feat: add Whatomate template
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-03 04:59:22 -06:00
Marios AntonoudiouandGitHub 0b731157ce Chatto latest (#1060)
* Switch to latest channel for chatto

* Update meta.json too

* Switch to 0.4 series
2026-08-03 04:46:41 -06:00
Juan VargasandGitHub 0eae107272 Update SendDock template: track latest image, drop deprecated env vars (#1057)
- Point the image at ghcr.io/arkhe-systems/senddock:latest so fresh
  deploys always get the current release without a per-release PR.
- Remove DEPLOYMENT_MODE (self-host is the default now; the cloud flag
  became the boolean CLOUD).
- Remove SENDDOCK_LICENSE_KEY (Pro license is activated from the
  dashboard in 0.8; the env var is removed in 0.9).
2026-08-03 04:46:16 -06:00
Jiho LeeandGitHub de726de736 feat: add 9Router template (#1046)
* feat: add 9Router template (#1040)

* fix: pin the headroom sidecar instead of :latest

* fix: use http for BASE_URL per the repo URL convention

* fix: set NEXT_PUBLIC_BASE_URL so the browser hits the deployed domain
2026-08-03 04:39:57 -06:00
a73e4928f2 feat: bump fmd-server to 0.16.0 for compatibility with Open Street Map (#1052)
* feat(fmd-server): bump to version 0.16.0

* fix: use expose instead of ports

* fix: fmd-server image tag is 0.16.0 (upstream dropped the v prefix)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-03 04:39:40 -06:00
16 changed files with 226 additions and 10 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

+32
View File
@@ -0,0 +1,32 @@
version: "3.8"
services:
9router:
image: decolua/9router:0.5.40
restart: unless-stopped
environment:
DATA_DIR: /app/data
PORT: "20128"
HOSTNAME: "0.0.0.0"
NODE_ENV: production
JWT_SECRET: ${JWT_SECRET}
INITIAL_PASSWORD: ${INITIAL_PASSWORD}
API_KEY_SECRET: ${API_KEY_SECRET}
MACHINE_ID_SALT: ${MACHINE_ID_SALT}
BASE_URL: http://${ROUTER_HOST}
NEXT_PUBLIC_BASE_URL: http://${ROUTER_HOST}
HEADROOM_URL: http://headroom:8787
AUTH_COOKIE_SECURE: "false"
volumes:
- 9router-data:/app/data
depends_on:
- headroom
# Optional token-reduction proxy that 9Router calls through HEADROOM_URL.
# Shipped as a sidecar because the 9Router image does not bundle it.
headroom:
image: ghcr.io/chopratejas/headroom:0.6.7
restart: unless-stopped
volumes:
9router-data:
+17
View File
@@ -0,0 +1,17 @@
{
"id": "9router",
"name": "9Router",
"version": "0.5.40",
"description": "Self-hosted AI model router that rotates requests across 40+ providers with automatic fallback, exposing an OpenAI-compatible endpoint for coding agents.",
"logo": "9router.png",
"links": {
"github": "https://github.com/decolua/9router",
"website": "https://9router.com",
"docs": "https://github.com/decolua/9router/blob/master/DOCKER.md"
},
"tags": [
"ai",
"proxy",
"developer-tools"
]
}
+21
View File
@@ -0,0 +1,21 @@
[variables]
main_domain = "${domain}"
jwt_secret = "${password:64}"
initial_password = "${password:32}"
api_key_secret = "${password:64}"
machine_id_salt = "${password:32}"
[config]
env = [
"ROUTER_HOST=${main_domain}",
"JWT_SECRET=${jwt_secret}",
"INITIAL_PASSWORD=${initial_password}",
"API_KEY_SECRET=${api_key_secret}",
"MACHINE_ID_SALT=${machine_id_salt}",
]
mounts = []
[[config.domains]]
serviceName = "9router"
port = 20128
host = "${main_domain}"
+1 -1
View File
@@ -2,7 +2,7 @@ version: "3.8"
services:
chatto:
image: ghcr.io/chattocorp/chatto:0.3.8
image: ghcr.io/chattocorp/chatto:0.4
restart: unless-stopped
expose:
- "4000"
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "chatto",
"name": "Chatto (single binary)",
"version": "0.3.8",
"version": "0.4.x",
"description": "A fully-featured real-time chat application for teams and communities. This template deploys the single Chatto binary with embedded NATS. Note: email/password registration requires SMTP to be configured after deployment; voice/video calls are not included in the single-binary setup.",
"logo": "logo.png",
"links": {
+1 -1
View File
@@ -1,6 +1,6 @@
services:
fmd-server:
image: registry.gitlab.com/fmd-foss/fmd-server:v0.11.0
image: registry.gitlab.com/fmd-foss/fmd-server:0.16.0
expose:
- 8080
environment:
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "fmd-server",
"name": "FMD Server",
"version": "0.11.0",
"version": "0.16.0",
"description": "A server to communicate with the FMD Android app, to locate and control your devices.",
"logo": "fmd-server.svg",
"links": {
+1 -3
View File
@@ -27,7 +27,7 @@ services:
retries: 5
senddock:
image: ghcr.io/arkhe-systems/senddock:0.6.5.1
image: ghcr.io/arkhe-systems/senddock:latest
restart: unless-stopped
depends_on:
postgres:
@@ -40,8 +40,6 @@ services:
- JWT_SECRET=${JWT_SECRET}
- PUBLIC_URL=${PUBLIC_URL}
- FRONTEND_URL=${PUBLIC_URL}
- DEPLOYMENT_MODE=self-hosted
- SENDDOCK_LICENSE_KEY=${SENDDOCK_LICENSE_KEY}
- PORT=8080
expose:
- 8080
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "senddock",
"name": "SendDock",
"version": "0.6.5.1",
"version": "0.8.0",
"description": "Open-source, self-hosted email marketing platform with BYO SMTP. Manage subscribers, templates, broadcasts, and scheduled campaigns from one place.",
"logo": "senddock.svg",
"links": {
+1 -2
View File
@@ -7,8 +7,7 @@ jwt_secret = "${password:64}"
env = [
"POSTGRES_PASSWORD=${postgres_password}",
"JWT_SECRET=${jwt_secret}",
"PUBLIC_URL=https://${main_domain}",
"SENDDOCK_LICENSE_KEY="
"PUBLIC_URL=https://${main_domain}"
]
[[config.domains]]
+46
View File
@@ -0,0 +1,46 @@
services:
whatomate:
image: shridh0r/whatomate:0.1.1-beta-0.16.1
restart: unless-stopped
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
environment:
- TZ=Etc/UTC
volumes:
- ../files/config.toml:/app/config.toml:ro
- whatomate-uploads:/app/uploads
command: ["server", "-migrate", "-config", "/app/config.toml"]
db:
image: postgres:17-alpine
restart: unless-stopped
environment:
- POSTGRES_USER=whatomate
- POSTGRES_PASSWORD=whatomate
- POSTGRES_DB=whatomate
healthcheck:
test: ["CMD-SHELL", "pg_isready -U whatomate -d whatomate"]
interval: 10s
timeout: 5s
retries: 6
volumes:
- whatomate-postgres-data:/var/lib/postgresql/data
redis:
image: redis:7-alpine
restart: unless-stopped
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
volumes:
- whatomate-redis-data:/data
volumes:
whatomate-uploads:
whatomate-postgres-data:
whatomate-redis-data:
+14
View File
@@ -0,0 +1,14 @@
# Whatomate
## Getting started
1. Deploy the template and open the app domain.
2. Log in with the default admin credentials: **admin@admin.com** / **admin**. Change the password right after the first login.
3. Connect your WhatsApp Business account: go to **Settings → WhatsApp Accounts** and add your Meta Cloud API credentials (phone number ID, access token). See the [configuration docs](https://shridarpatil.github.io/whatomate/getting-started/configuration/).
4. Point your Meta webhook to `https://<your-domain>/webhook` and use the `webhook_verify_token` from the generated `config.toml` mount (Dokploy → your service → Advanced → Mounts).
## Notes
- The full application configuration lives in the `config.toml` file mount (JWT secret, encryption key and webhook verify token are auto-generated per deployment). Edit it and redeploy to change settings.
- Uploads are persisted in the `whatomate-uploads` volume; PostgreSQL and Redis data in `whatomate-postgres-data` and `whatomate-redis-data`.
- Voice calling / IVR requires extra WebRTC configuration (UDP ports, public IP or TURN server). See the [calling docs](https://shridarpatil.github.io/whatomate/features/calling/).
+17
View File
@@ -0,0 +1,17 @@
{
"id": "whatomate",
"name": "Whatomate",
"version": "0.1.1-beta-0.16.1",
"description": "Modern, open-source WhatsApp Business Platform with real-time chat, chatbot automation, bulk campaigns, template management, and voice calling via Meta's Cloud API.",
"logo": "whatomate.svg",
"links": {
"github": "https://github.com/shridarpatil/whatomate",
"website": "https://whatomate.io/",
"docs": "https://shridarpatil.github.io/whatomate/"
},
"tags": [
"communication",
"automation",
"crm"
]
}
+67
View File
@@ -0,0 +1,67 @@
[variables]
main_domain = "${domain}"
jwt_secret = "${password:64}"
encryption_key = "${password:32}"
webhook_verify_token = "${password:32}"
[config]
[[config.domains]]
serviceName = "whatomate"
port = 8_080
host = "${main_domain}"
[[config.mounts]]
filePath = "config.toml"
content = """
[app]
name = "Whatomate"
environment = "staging"
debug = false
encryption_key = "${encryption_key}"
[server]
host = "0.0.0.0"
port = 8080
read_timeout = 30
write_timeout = 30
base_path = ""
allowed_origins = ""
[database]
host = "db"
port = 5432
user = "whatomate"
password = "whatomate"
name = "whatomate"
ssl_mode = "disable"
max_open_conns = 25
max_idle_conns = 5
conn_max_lifetime = 300
[redis]
host = "redis"
port = 6379
username = ""
password = ""
db = 0
tls = false
[jwt]
secret = "${jwt_secret}"
access_expiry_mins = 15
refresh_expiry_days = 1
[storage]
type = "local"
local_path = "./uploads"
[whatsapp]
webhook_verify_token = "${webhook_verify_token}"
api_version = "v24.0"
base_url = "https://graph.facebook.com"
[default_admin]
email = "admin@admin.com"
password = "admin"
full_name = "Admin"
"""
+5
View File
@@ -0,0 +1,5 @@
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="20" cy="20" r="18" fill="#25D366"/>
<path d="M20 8C13.373 8 8 13.373 8 20C8 22.385 8.632 24.615 9.745 26.545L8 32L13.655 30.295C15.515 31.295 17.685 31.87 20 31.87C26.627 31.87 32 26.497 32 19.87C32 13.373 26.627 8 20 8Z" fill="white"/>
<path d="M26.5 23.5C26.2 24.5 24.8 25.3 23.7 25.5C22.9 25.6 21.9 25.7 18.5 24.3C14.3 22.5 11.6 18.2 11.4 17.9C11.2 17.6 9.5 15.4 9.5 13.1C9.5 10.8 10.7 9.7 11.2 9.2C11.6 8.8 12.2 8.6 12.7 8.6C12.9 8.6 13.1 8.6 13.2 8.6C13.7 8.6 14 8.7 14.3 9.4C14.7 10.3 15.5 12.6 15.6 12.8C15.7 13 15.8 13.3 15.6 13.6C15.5 13.9 15.4 14.1 15.2 14.3C15 14.5 14.8 14.8 14.6 15C14.4 15.2 14.2 15.4 14.4 15.8C14.6 16.2 15.4 17.5 16.6 18.6C18.1 19.9 19.4 20.4 19.9 20.6C20.4 20.8 20.7 20.8 21 20.5C21.3 20.2 22 19.4 22.3 19C22.6 18.6 23 18.5 23.4 18.7C23.8 18.8 26.1 19.9 26.5 20.1C26.9 20.3 27.2 20.4 27.3 20.6C27.4 20.9 27.4 21.8 26.5 23.5Z" fill="#25D366"/>
</svg>

After

Width:  |  Height:  |  Size: 997 B