mirror of
https://github.com/Dokploy/templates.git
synced 2026-11-10 01:33:12 -06:00
Compare commits
5
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fef2bfbfce | ||
|
|
0b731157ce | ||
|
|
0eae107272 | ||
|
|
de726de736 | ||
|
|
a73e4928f2 |
Binary file not shown.
|
After Width: | Height: | Size: 105 KiB |
@@ -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:
|
||||
@@ -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"
|
||||
]
|
||||
}
|
||||
@@ -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}"
|
||||
@@ -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,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,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,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": {
|
||||
|
||||
@@ -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,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": {
|
||||
|
||||
@@ -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]]
|
||||
|
||||
@@ -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:
|
||||
@@ -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/).
|
||||
@@ -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"
|
||||
]
|
||||
}
|
||||
@@ -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"
|
||||
"""
|
||||
@@ -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 |
Reference in New Issue
Block a user