diff --git a/blueprints/tela/docker-compose.yml b/blueprints/tela/docker-compose.yml new file mode 100644 index 00000000..a5117484 --- /dev/null +++ b/blueprints/tela/docker-compose.yml @@ -0,0 +1,65 @@ +services: + proxy: + image: ghcr.io/zcag/tela-proxy:0.7.0 + restart: unless-stopped + environment: + - TELA_SITE_ADDRESS=:80 + - TELA_UPSTREAM_BACKEND=backend:8080 + - TELA_UPSTREAM_FRONTEND=frontend:80 + depends_on: + - backend + - frontend + volumes: + - caddy-data:/data + - caddy-config:/config + + backend: + image: ghcr.io/zcag/tela-backend:0.7.0 + restart: unless-stopped + environment: + - TELA_PUBLIC_BASE_URL=${TELA_PUBLIC_BASE_URL} + - TELA_DATABASE_URL=postgres://tela:${TELA_PG_PASSWORD}@postgres:5432/tela?sslmode=disable + - TELA_SHARE_SECRET=${TELA_SHARE_SECRET} + - TELA_API_KEY_SECRET=${TELA_API_KEY_SECRET} + - TELA_DECK_URL=http://deck:3344 + - TELA_GOTENBERG_URL=http://gotenberg:3000 + - TELA_PDF_RENDER_BASE_URL=http://proxy + depends_on: + postgres: + condition: service_healthy + + frontend: + image: ghcr.io/zcag/tela-frontend:0.7.0 + restart: unless-stopped + + postgres: + image: pgvector/pgvector:pg17 + restart: unless-stopped + environment: + - POSTGRES_USER=tela + - POSTGRES_PASSWORD=${TELA_PG_PASSWORD} + - POSTGRES_DB=tela + healthcheck: + test: ["CMD-SHELL", "pg_isready -U tela -d tela"] + interval: 5s + timeout: 5s + retries: 20 + start_period: 10s + volumes: + - pgdata:/var/lib/postgresql/data + + deck: + image: ghcr.io/zcag/tela-deck:0.7.0 + restart: unless-stopped + volumes: + - deckcache:/data + + gotenberg: + image: gotenberg/gotenberg:8 + restart: unless-stopped + +volumes: + pgdata: + deckcache: + caddy-data: + caddy-config: diff --git a/blueprints/tela/logo.png b/blueprints/tela/logo.png new file mode 100644 index 00000000..8c90d578 Binary files /dev/null and b/blueprints/tela/logo.png differ diff --git a/blueprints/tela/template.toml b/blueprints/tela/template.toml new file mode 100644 index 00000000..96976e26 --- /dev/null +++ b/blueprints/tela/template.toml @@ -0,0 +1,18 @@ +[variables] +main_domain = "${domain}" +pg_password = "${password:32}" +share_secret = "${password:64}" +api_key_secret = "${password:64}" + +[config] +env = [ + "TELA_PUBLIC_BASE_URL=https://${main_domain}", + "TELA_PG_PASSWORD=${pg_password}", + "TELA_SHARE_SECRET=${share_secret}", + "TELA_API_KEY_SECRET=${api_key_secret}", +] + +[[config.domains]] +serviceName = "proxy" +port = 80 +host = "${main_domain}" diff --git a/meta.json b/meta.json index 452ceff6..d0feeda5 100644 --- a/meta.json +++ b/meta.json @@ -6617,6 +6617,26 @@ "nocode" ] }, + { + "id": "tela", + "name": "tela", + "version": "0.7.0", + "description": "Self-hostable, markdown-native team wiki with live collaboration, full-text and semantic search, WebDAV sync, public spaces, Slidev decks, PDF export, and a built-in MCP server so AI agents are first-class editors.", + "logo": "logo.png", + "links": { + "github": "https://github.com/zcag/tela", + "website": "https://telawiki.com", + "docs": "https://telawiki.com/public/spaces/16" + }, + "tags": [ + "wiki", + "documentation", + "knowledge-base", + "markdown", + "collaboration", + "ai" + ] + }, { "id": "tianji", "name": "Tianji",