Skip to content

Add tela (markdown-native team wiki) one-click app#963

Open
zcag wants to merge 1 commit into
IceWhaleTech:mainfrom
zcag:add-tela-app
Open

Add tela (markdown-native team wiki) one-click app#963
zcag wants to merge 1 commit into
IceWhaleTech:mainfrom
zcag:add-tela-app

Conversation

@zcag

@zcag zcag commented Jun 30, 2026

Copy link
Copy Markdown

New app: tela

Adds tela as a one-click app under Apps/tela/.

tela is a self-hostable, markdown-native team wiki. Page bodies stay canonical Markdown (no proprietary block store). It has a Go + PostgreSQL backend, a React editor with live Yjs collaboration, full-text + optional semantic search, WebDAV folder sync, public/blog spaces, Slidev decks, PDF export, and a built-in MCP server so AI agents can read/write pages.

What changed

  • Apps/tela/docker-compose.yml with a top-level x-casaos block + per-service blocks
  • Apps/tela/icon.png (512x512) and two screenshots

Architecture / images

Pinned to v0.7.0. All images are multi-arch (amd64 + arm64):

  • ghcr.io/zcag/tela-proxy:0.7.0 — Caddy, the only web-exposed service (main), 8780:80
  • ghcr.io/zcag/tela-backend:0.7.0 — Go API (internal :8080)
  • ghcr.io/zcag/tela-frontend:0.7.0 — nginx SPA (internal :80)
  • pgvector/pgvector:pg17 — PostgreSQL (pgvector required for semantic search)
  • ghcr.io/zcag/tela-deck:0.7.0 — Slidev deck renderer
  • gotenberg/gotenberg:8 — PDF rendering

Secrets are pre-generated inline (per repo convention) so it installs out of the box. Data persists under /DATA/AppData/$AppID/. After install, open the WebUI and complete the first-boot /setup wizard to create the admin account.

Test evidence

  • name field matches ^[a-z0-9_-]+$
  • docker compose -f Apps/tela/docker-compose.yml config -q passes
  • python3 scripts/build_appstore.py builds successfully (1 app; dist/apps/tela/{docker-compose.yml,meta.json} + webp assets generated)
  • Stack verified working via docker compose: proxy serves the SPA and routes /api to the backend; backend migrates and boots against the pgvector Postgres

tela is a self-hostable, markdown-native team wiki (Go + PostgreSQL backend,
React editor with live Yjs collaboration, full-text + optional semantic search,
WebDAV sync, public spaces, Slidev decks, PDF export, and a built-in MCP server
for AI agents). Multi-arch (amd64/arm64) GHCR images, pinned to v0.7.0.
@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
E Security Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

restart: unless-stopped
environment:
TELA_PUBLIC_BASE_URL: http://localhost:8780
TELA_DATABASE_URL: postgres://tela:00fdf37689f30d97907e5ccb00845efc@tela-postgres:5432/tela?sslmode=disable
environment:
TELA_PUBLIC_BASE_URL: http://localhost:8780
TELA_DATABASE_URL: postgres://tela:00fdf37689f30d97907e5ccb00845efc@tela-postgres:5432/tela?sslmode=disable
TELA_SHARE_SECRET: 682f2b1679cf9094ce5d02b66c6973526acc185b332c13b3b0780a5de45410f6
TELA_PUBLIC_BASE_URL: http://localhost:8780
TELA_DATABASE_URL: postgres://tela:00fdf37689f30d97907e5ccb00845efc@tela-postgres:5432/tela?sslmode=disable
TELA_SHARE_SECRET: 682f2b1679cf9094ce5d02b66c6973526acc185b332c13b3b0780a5de45410f6
TELA_API_KEY_SECRET: 9795ceb7f57207162a6effdc2f5d795145ed16a8ee4b8a85dca20f58e036af9a
restart: unless-stopped
environment:
TELA_PUBLIC_BASE_URL: http://localhost:8780
TELA_DATABASE_URL: postgres://tela:00fdf37689f30d97907e5ccb00845efc@tela-postgres:5432/tela?sslmode=disable
restart: unless-stopped
environment:
POSTGRES_USER: tela
POSTGRES_PASSWORD: 00fdf37689f30d97907e5ccb00845efc
@zcag

zcag commented Jun 30, 2026

Copy link
Copy Markdown
Author

Note on the failing validate check: it is not caused by this PR.

The "Validate all docker-compose files" step lints every app under Apps/, and it fails on a pre-existing file on main:

Apps/Etherpad/docker-compose.yml
line 99: mapping key "ports" already defined at line 38

Apps/Etherpad/docker-compose.yml has a duplicate ports: key inside its x-casaos block, which current docker compose config -q rejects. This reproduces on upstream/main with no changes from this PR, so the same check fails on any PR opened right now.

tela's own file validates cleanly:

  • name: matches ^[a-z0-9_-]+$
  • docker compose -f Apps/tela/docker-compose.yml config -q passes
  • python3 scripts/build_appstore.py builds the app successfully (meta.json + webp assets generated)

Happy to rebase once Etherpad is fixed on main. I kept this PR scoped to tela only; let me know if you'd prefer I include the one-line Etherpad fix here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants