app/teable
Deploy Teable open-source Airtable alternative using Pigsty-managed PostgreSQL
The app/teable configuration template provides a reference configuration for deploying Teable open-source no-code database, using Pigsty-managed PostgreSQL as the database.
Overview
- Config Name:
app/teable - Node Count: Single node
- Description: Deploy Teable using Pigsty-managed PostgreSQL
- OS Distro:
el8,el9,el10,d12,d13,u22,u24 - OS Arch:
x86_64,aarch64 - Related:
meta
Usage:
./configure -c app/teable [-i <primary_ip>]
Content
Source: pigsty/conf/app/teable.yml
---
#==============================================================#
# File : teable.yml
# Desc : pigsty config for running 1-node teable app
# Ctime : 2025-02-24
# Mtime : 2025-12-12
# Docs : https://doc.pgsty.com/app/odoo
# License : Apache-2.0 @ https://pigsty.io/docs/about/license/
# Copyright : 2018-2026 Ruohang Feng / Vonng ([email protected])
#==============================================================#
# tutorial: https://doc.pgsty.com/app/teable
# how to use this template:
#
# curl -fsSL https://repo.pigsty.io/get | bash; cd ~/pigsty
# ./bootstrap # prepare local repo & ansible
# ./configure -c app/teable # use this teable config template
# vi pigsty.yml # IMPORTANT: CHANGE CREDENTIALS!!
# ./deploy.yml # install pigsty & pgsql & minio
# ./docker.yml # install docker & docker-compose
# ./app.yml # install teable with docker-compose
#
# To replace domain name:
# sed -ie 's/teable.pigsty/teable.pigsty.cc/g' pigsty.yml
all:
children:
# the teable application
teable:
hosts: { 10.10.10.10: {} }
vars:
app: teable # specify app name to be installed (in the apps)
apps: # define all applications
teable: # app name, ~/pigsty/app/teable folder
conf: # override /opt/teable/.env config file
# https://github.com/teableio/teable/blob/develop/dockers/examples/standalone/.env
# https://help.teable.io/en/deploy/env
POSTGRES_HOST: "10.10.10.10"
POSTGRES_PORT: "5432"
POSTGRES_DB: "teable"
POSTGRES_USER: "dbuser_teable"
POSTGRES_PASSWORD: "DBUser.Teable"
PRISMA_DATABASE_URL: "postgresql://dbuser_teable:[email protected]:5432/teable"
PUBLIC_ORIGIN: "http://tea.pigsty"
PUBLIC_DATABASE_PROXY: "10.10.10.10:5432"
TIMEZONE: "UTC"
# Need to support sending emails to enable the following configurations
#BACKEND_MAIL_HOST: smtp.teable.io
#BACKEND_MAIL_PORT: 465
#BACKEND_MAIL_SECURE: true
#BACKEND_MAIL_SENDER: noreply.teable.io
#BACKEND_MAIL_SENDER_NAME: Teable
#BACKEND_MAIL_AUTH_USER: username
#BACKEND_MAIL_AUTH_PASS: password
pg-meta:
hosts: { 10.10.10.10: { pg_seq: 1, pg_role: primary } }
vars:
pg_cluster: pg-meta
pg_users:
- { name: dbuser_teable ,password: DBUser.Teable ,pgbouncer: true ,roles: [ dbrole_admin ] ,superuser: true ,comment: teable superuser }
pg_databases:
- { name: teable ,owner: dbuser_teable ,comment: teable database }
pg_hba_rules:
- { user: teable ,db: all ,addr: 172.17.0.0/16 ,auth: pwd ,title: 'allow teable access from local docker network' }
node_crontab: [ '00 01 * * * postgres /pg/bin/pg-backup full' ] # make a full backup every 1am
infra: { hosts: { 10.10.10.10: { infra_seq: 1 } } }
etcd: { hosts: { 10.10.10.10: { etcd_seq: 1 } }, vars: { etcd_cluster: etcd } }
minio: { hosts: { 10.10.10.10: { minio_seq: 1 } }, vars: { minio_cluster: minio } }
vars: # global variables
version: v4.0.0 # pigsty version string
admin_ip: 10.10.10.10 # admin node ip address
region: default # upstream mirror region: default|china|europe
node_tune: oltp # node tuning specs: oltp,olap,tiny,crit
pg_conf: oltp.yml # pgsql tuning specs: {oltp,olap,tiny,crit}.yml
docker_enabled: true # enable docker on app group
#docker_registry_mirrors: ["https://docker.1panel.live","https://docker.1ms.run","https://docker.xuanyuan.me","https://registry-1.docker.io"]
proxy_env: # global proxy env when downloading packages & pull docker images
no_proxy: "localhost,127.0.0.1,10.0.0.0/8,192.168.0.0/16,*.pigsty,*.aliyun.com,mirrors.*,*.tsinghua.edu.cn"
#http_proxy: 127.0.0.1:12345 # add your proxy env here for downloading packages or pull images
#https_proxy: 127.0.0.1:12345 # usually the proxy is format as http://user:[email protected]
#all_proxy: 127.0.0.1:12345
infra_portal: # domain names and upstream servers
home : { domain: i.pigsty }
#minio : { domain: m.pigsty ,endpoint: "${admin_ip}:9001" ,scheme: https ,websocket: true }
teable: # nginx server config for teable
domain: tea.pigsty # REPLACE IT WITH YOUR OWN DOMAIN!
endpoint: "10.10.10.10:8890" # teable service endpoint: IP:PORT
websocket: true # add websocket support
certbot: tea.pigsty # certbot cert name, apply with `make cert`
repo_enabled: false
node_repo_modules: node,infra,pgsql
pg_version: 18
#----------------------------------------------#
# PASSWORD : https://doc.pgsty.com/config/security
#----------------------------------------------#
grafana_admin_password: pigsty
grafana_view_password: DBUser.Viewer
pg_admin_password: DBUser.DBA
pg_monitor_password: DBUser.Monitor
pg_replication_password: DBUser.Replicator
patroni_password: Patroni.API
haproxy_admin_password: pigsty
minio_secret_key: S3User.MinIO
etcd_root_password: Etcd.Root
...Explanation
The app/teable template provides a one-click deployment solution for Teable open-source no-code database.
What is Teable:
- Open-source Airtable alternative
- No-code database built on PostgreSQL
- Supports table, kanban, calendar, form, and other views
- Provides API and automation workflows
Key Features:
- Uses Pigsty-managed PostgreSQL as underlying storage
- Data is stored in real PostgreSQL tables
- Supports direct SQL queries
- Can integrate with other PostgreSQL tools and extensions
Access:
# Teable Web interface
http://tea.pigsty:8890
# Or via Nginx proxy
https://tea.pigsty
# Direct SQL access to underlying data
psql postgresql://dbuser_teable:[email protected]:5432/teable
Use Cases:
- Need Airtable-like functionality but want to self-host
- Team collaboration data management
- Need both API and SQL access
- Want data stored in real PostgreSQL
Notes:
- Teable user needs superuser privileges
- Must configure
PUBLIC_ORIGINto external access address - Supports email notifications (optional SMTP configuration)
Feedback
Was this page helpful?
Thanks for the feedback! Please let us know how we can improve.
Sorry to hear that. Please let us know how we can improve.