Skip to main content
Glama
index.ts8.63 kB
import { Template } from '../types'; export const TEMPLATES: Record<string, Template> = { // Analytics plausible: { name: 'Plausible Analytics', description: 'Simple, open-source, privacy-friendly web analytics', source: { type: 'docker_image', image: 'plausible/analytics:latest', }, buildType: 'image', ports: [8000], requiredEnvVars: [ { key: 'BASE_URL', description: 'The base URL where Plausible will be accessible', required: true, }, { key: 'SECRET_KEY_BASE', description: 'Secret key for session signing (generate with openssl rand -base64 64)', required: true, }, { key: 'POSTGRES_URL', description: 'PostgreSQL connection URL', required: true, }, ], optionalServices: ['postgres'], iconUrl: 'https://plausible.io/assets/logo/plausible-logo.png', tags: ['analytics', 'monitoring'], }, // CMS strapi: { name: 'Strapi CMS', description: 'Open-source headless CMS', source: { type: 'git', repository: 'https://github.com/strapi/strapi-template-blog', branch: 'main', }, buildType: 'dockerfile', ports: [1337], requiredEnvVars: [ { key: 'NODE_ENV', description: 'Node environment', required: true, defaultValue: 'production', }, { key: 'DATABASE_CLIENT', description: 'Database client (postgres, mysql, sqlite)', required: true, defaultValue: 'postgres', }, { key: 'DATABASE_HOST', description: 'Database host', required: true, defaultValue: 'localhost', }, { key: 'DATABASE_PORT', description: 'Database port', required: true, defaultValue: '5432', }, { key: 'DATABASE_NAME', description: 'Database name', required: true, }, { key: 'DATABASE_USERNAME', description: 'Database username', required: true, }, { key: 'DATABASE_PASSWORD', description: 'Database password', required: true, }, ], optionalServices: ['postgres', 'mysql'], iconUrl: 'https://strapi.io/assets/images/logo-dark.svg', tags: ['cms', 'headless', 'content'], }, // E-commerce saleor: { name: 'Saleor E-commerce', description: 'Headless e-commerce platform with GraphQL API', source: { type: 'docker_image', image: 'saleor/saleor:latest', }, buildType: 'image', ports: [8000], requiredEnvVars: [ { key: 'SECRET_KEY', description: 'Secret key for Django (generate with openssl rand -base64 64)', required: true, }, { key: 'ALLOWED_HOSTS', description: 'Comma-separated list of allowed hostnames', required: true, defaultValue: 'localhost', }, { key: 'DATABASE_URL', description: 'PostgreSQL connection URL', required: true, }, { key: 'REDIS_URL', description: 'Redis connection URL for caching', required: false, }, ], optionalServices: ['postgres', 'redis'], iconUrl: 'https://saleor.io/images/logo.svg', tags: ['e-commerce', 'shop', 'graphql'], }, // Database Tools pgadmin: { name: 'pgAdmin', description: 'PostgreSQL administration tool', source: { type: 'docker_image', image: 'dpage/pgadmin4:latest', }, buildType: 'image', ports: [80], requiredEnvVars: [ { key: 'PGADMIN_DEFAULT_EMAIL', description: 'Default admin email', required: true, }, { key: 'PGADMIN_DEFAULT_PASSWORD', description: 'Default admin password', required: true, }, ], iconUrl: 'https://www.pgadmin.org/static/img/new-pgadmin-logo.png', tags: ['database', 'postgresql', 'admin'], }, // Collaboration Tools n8n: { name: 'n8n Workflow Automation', description: 'Open-source workflow automation tool', source: { type: 'docker_image', image: 'n8nio/n8n:latest', }, buildType: 'image', ports: [5678], requiredEnvVars: [ { key: 'N8N_BASIC_AUTH_ACTIVE', description: 'Enable basic authentication', required: true, defaultValue: 'true', }, { key: 'N8N_BASIC_AUTH_USER', description: 'Basic auth username', required: true, }, { key: 'N8N_BASIC_AUTH_PASSWORD', description: 'Basic auth password', required: true, }, ], optionalServices: ['postgres', 'redis'], iconUrl: 'https://n8n.io/favicon.ico', tags: ['automation', 'workflows', 'integration'], }, // Monitoring uptime-kuma: { name: 'Uptime Kuma', description: 'Self-hosted monitoring tool', source: { type: 'docker_image', image: 'louislam/uptime-kuma:1', }, buildType: 'image', ports: [3001], requiredEnvVars: [], iconUrl: 'https://uptime.kuma.pet/img/icon.svg', tags: ['monitoring', 'uptime'], }, // Documentation bookstack: { name: 'BookStack', description: 'Wiki and documentation platform', source: { type: 'docker_image', image: 'linuxserver/bookstack:latest', }, buildType: 'image', ports: [80], requiredEnvVars: [ { key: 'PUID', description: 'User ID for container permissions', required: true, defaultValue: '1000', }, { key: 'PGID', description: 'Group ID for container permissions', required: true, defaultValue: '1000', }, { key: 'DB_HOST', description: 'Database host', required: true, }, { key: 'DB_USER', description: 'Database username', required: true, }, { key: 'DB_PASSWORD', description: 'Database password', required: true, }, { key: 'DB_DATABASE', description: 'Database name', required: true, }, ], optionalServices: ['mysql', 'postgres'], iconUrl: 'https://www.bookstackapp.com/assets/img/bookstack-icon.svg', tags: ['documentation', 'wiki', 'knowledge-base'], }, // File Management filebrowser: { name: 'File Browser', description: 'Web-based file manager', source: { type: 'docker_image', image: 'filebrowser/filebrowser:latest', }, buildType: 'image', ports: [80], requiredEnvVars: [], iconUrl: 'https://raw.githubusercontent.com/filebrowser/logo/master/logo.png', tags: ['files', 'storage', 'manager'], }, // Developer Tools gitlab: { name: 'GitLab Community Edition', description: 'Self-hosted Git repository manager', source: { type: 'docker_image', image: 'gitlab/gitlab-ce:latest', }, buildType: 'image', ports: [80, 443, 22], requiredEnvVars: [ { key: 'GITLAB_OMNIBUS_CONFIG', description: 'GitLab configuration (omit for basic setup)', required: false, }, ], optionalServices: ['postgres', 'redis'], iconUrl: 'https://about.gitlab.com/images/press/logo/png/gitlab-icon-rgb.png', tags: ['git', 'repository', 'ci-cd'], }, // Communication rocketchat: { name: 'Rocket.Chat', description: 'Open-source communication platform', source: { type: 'docker_image', image: 'rocketchat/rocket.chat:latest', }, buildType: 'image', ports: [3000], requiredEnvVars: [ { key: 'ROOT_URL', description: 'The root URL for Rocket.Chat', required: true, }, { key: 'MONGO_URL', description: 'MongoDB connection URL', required: true, }, ], optionalServices: ['mongo'], iconUrl: 'https://cdn.rocket.chat/assets/img/logo.svg', tags: ['chat', 'communication', 'messaging'], }, }; export function getTemplate(name: string): Template | undefined { return TEMPLATES[name.toLowerCase()]; } export function listTemplates(): Template[] { return Object.values(TEMPLATES); } export function searchTemplates(query: string): Template[] { const lowercaseQuery = query.toLowerCase(); return Object.values(TEMPLATES).filter(template => template.name.toLowerCase().includes(lowercaseQuery) || template.description.toLowerCase().includes(lowercaseQuery) || template.tags?.some(tag => tag.toLowerCase().includes(lowercaseQuery)) ); }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Thedurancode/Coolify-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server