Skip to content

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

Open
zcag wants to merge 3 commits into
IceWhaleTech:mainfrom
zcag:add-tela-app
Open

Add tela (markdown-native team wiki) one-click app#963
zcag wants to merge 3 commits 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.
Comment thread Apps/tela/docker-compose.yml Fixed
Comment thread Apps/tela/docker-compose.yml Fixed
Comment thread Apps/tela/docker-compose.yml Fixed
Comment thread Apps/tela/docker-compose.yml Fixed
Comment thread Apps/tela/docker-compose.yml Fixed
@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.

Clear the SonarCloud security gate: drop the pre-generated high-entropy
credentials that Sonar flags as leaked secrets. The internal Postgres has
no published port, so it uses POSTGRES_HOST_AUTH_METHOD=trust (no password
in the DSN), and TELA_SHARE_SECRET/TELA_API_KEY_SECRET default to obvious
placeholders with a before_install tip to rotate them.
The validator now rejects the legacy x-casaos.app_id and requires
x-casaos.id (reverse-DNS), matching every current app.
@sonarqubecloud

sonarqubecloud Bot commented Jul 5, 2026

Copy link
Copy Markdown

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