Teable

stack Database / Productivity

Spreadsheet-style database in the vein of Airtable, built on Postgres: grid, kanban, calendar, gallery and form views, file attachments, formulas, real-time collaboration and an API.

Install Teable

It isn't in the main Portainer Templates list yet, so use this one. Portainer takes one URL at a time, so it swaps out whatever list you had before.

In Portainer, head to Settings --> App Templates, paste this in as the URL and save.

https://raw.githubusercontent.com/NotAFlightRisk/portainer-templates-extras/main/templates.json
  1. Open App Templates and pick Teable.
  2. Fill in Secret key and Database password. Everything else can stay as it is.
  3. Hit Deploy the stack, then open http://<your-server>:3500 in a browser.

Before you start

Set the secret key and database password before you deploy, since the stack won't start without them. The first start sets up the database and takes a couple of minutes, then open http://<your-host>:3500 (or whichever port you picked). The first account you sign up becomes the admin. Anyone who can reach it can sign up after that, so once you're in, switch off Allow creating new accounts under System Admin --> Instance settings. Set the address field to wherever you'll open it, or invite links will point at localhost. Teable's image sends a small daily usage report to Teable (your instance ID, how many people are active, and a rough count of spaces and bases). To stop it, add TEABLE_TELEMETRY_OFF set to true to the stack's environment variables and redeploy. AI features and enterprise extras need a paid licence, everything else is free. Attachments live in the teable-data volume, logins in teable-cache, and your tables in postgres-data. Docs: help.teable.ai

Settings

What the Portainer form asks for. With compose they go in the .env file instead.

VariableWhat it's forDefault
TEABLE_SECRETSecret key (required) Signs logins and encrypts stored tokens. Generate one with: openssl rand -hex 32 Needs filling in
TEABLE_DB_PASSWORDDatabase password (required) Letters and numbers only, since it goes into a database URL. Generate one with: openssl rand -hex 32 Needs filling in
TEABLE_URLAddress you'll open it on Like http://192.168.1.10:3500. Invite links and profile pictures point here, so they break on any other address. http://localhost:3500
TEABLE_PORTHost port for the web UI 3500

Services

The containers this stack runs, with ports as they come out of the box.

ServiceImagePorts
teableghcr.io/teableio/teable:latest3500:3000
postgrespostgres:17-alpineInternal only

More apps