Teable images are available in two editions: Enterprise Edition (EE) and Community Edition (CE). To switch between versions, simply add the "-ee" suffix to the image name.
EE
Enterprise Edition is now in the preview test, mail to support@teable.io we will give a 1-month trial license
The Enterprise Edition offers free access to all features included in the Community Edition. It also supports the use of a License to subscribe to exclusive Enterprise features, which can be reviewed on the . Data in the Enterprise Edition is compatible with the Community Edition, allowing for interchangeable switching between versions.
The Community Edition is an image built from open-source code and does not include any features of the Enterprise Edition. Data is compatible with the Enterprise Edition, allowing for seamless switching to the Enterprise version at any time.
# replace the default passwordPOSTGRES_PASSWORD=replace_this_passwordREDIS_PASSWORD=replace_this_passwordSECRET_KEY=replace_this_secret_key# replace the following with a publicly accessible addressPUBLIC_ORIGIN=http://127.0.0.1:3000# ---------------------# PostgresPOSTGRES_HOST=teable-dbPOSTGRES_PORT=5432POSTGRES_DB=teablePOSTGRES_USER=teable# RedisREDIS_HOST=teable-cacheREDIS_PORT=6379REDIS_DB=0# AppPRISMA_DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}BACKEND_CACHE_PROVIDER=redisBACKEND_CACHE_REDIS_URI=redis://default:${REDIS_PASSWORD}@${REDIS_HOST}:${REDIS_PORT}/${REDIS_DB}
Note: The minimum deployment of the Community Edition lacks Redis and cannot be directly upgraded to the Enterprise Edition. It is recommended to add the Redis component (see solution below).
# replace the default passwordPOSTGRES_PASSWORD=replace_this_passwordSECRET_KEY=replace_this_secret_key# replace the following with a publicly accessible addressPUBLIC_ORIGIN=http://127.0.0.1:3000# ---------------------# PostgresPOSTGRES_HOST=teable-dbPOSTGRES_PORT=5432POSTGRES_DB=teablePOSTGRES_USER=teable# AppPRISMA_DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
# replace the default passwordPOSTGRES_PASSWORD=replace_this_passwordREDIS_PASSWORD=replace_this_passwordSECRET_KEY=replace_this_secret_key# replace the following with a publicly accessible addressPUBLIC_ORIGIN=http://127.0.0.1:3000# ---------------------# PostgresPOSTGRES_HOST=teable-dbPOSTGRES_PORT=5432POSTGRES_DB=teablePOSTGRES_USER=teable# RedisREDIS_HOST=teable-cacheREDIS_PORT=6379REDIS_DB=0# AppPRISMA_DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}BACKEND_CACHE_PROVIDER=redisBACKEND_CACHE_REDIS_URI=redis://default:${REDIS_PASSWORD}@${REDIS_HOST}:${REDIS_PORT}/${REDIS_DB}
Adding Storage Service (Optional):
By default, Teable uses local storage to manage attachment resources. You can add MinIO or cloud storage for a more powerful and stable service.
MinIO provides an additional storage management interface (port 9001) and a more robust and stable file service.
docker-compose.yaml:
version:'3.9'services:# ...previous contentteable-storage:image:minio/minio:RELEASE.2024-02-17T01-15-57Zports: - "9000:9000" - "9001:9001"environment: - MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY} - MINIO_SECRET_KEY=${MINIO_SECRET_KEY}volumes: - teable-storage:/data:rwnetworks: - teablecommand:server /data --console-address ":9001"createbuckets:image:minio/mcnetworks: - teableentrypoint:> /bin/sh -c " /usr/bin/mc alias set teable-storage http://teable-storage:9000 ${MINIO_ACCESS_KEY} ${MINIO_SECRET_KEY}; /usr/bin/mc mb teable-storage/public; /usr/bin/mc anonymous set public teable-storage/public; /usr/bin/mc mb teable-storage/private; exit 0; "depends_on:teable-storage:condition:service_startednetworks:teable:name:teable-networkvolumes:teable-db: {}teable-cache: {}# Add an extra volumeteable-storage: {}
.env:
# replace the default passwordPOSTGRES_PASSWORD=replace_this_passwordREDIS_PASSWORD=replace_this_passwordSECRET_KEY=replace_this_secret_key# if enabled https please replace itPROTOCAL=http# Please set PUBLIC_HOST to the IP address or domain name of the currently deployed host. You cannot use localhost or 127.0.0.1.
PUBLIC_HOST=192.168.x.x# Please modify the final port to the port of the official access address. If it's 80 or 443, you can remove the : and port number.
PUBLIC_ORIGIN=${PROTOCAL}://${PUBLIC_HOST}:3000# ---------------------# PostgresPOSTGRES_HOST=teable-dbPOSTGRES_PORT=5432POSTGRES_DB=teablePOSTGRES_USER=teable# RedisREDIS_HOST=teable-cacheREDIS_PORT=6379REDIS_DB=0# MinioMINIO_ACCESS_KEY=teable_minio_accessMINIO_SECRET_KEY=${SECRET_KEY}# AppPRISMA_DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}BACKEND_CACHE_PROVIDER=redisBACKEND_CACHE_REDIS_URI=redis://default:${REDIS_PASSWORD}@${REDIS_HOST}:${REDIS_PORT}/${REDIS_DB}BACKEND_STORAGE_PROVIDER=minioBACKEND_STORAGE_PUBLIC_BUCKET=publicBACKEND_STORAGE_PRIVATE_BUCKET=privateBACKEND_STORAGE_MINIO_ENDPOINT=${PUBLIC_HOST}BACKEND_STORAGE_MINIO_PORT=9000BACKEND_STORAGE_MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY}BACKEND_STORAGE_MINIO_SECRET_KEY=${MINIO_SECRET_KEY}STORAGE_PREFIX=${PROTOCAL}://${PUBLIC_HOST}:${BACKEND_STORAGE_MINIO_PORT}
You need to create two buckets on MinIO. One public bucket for storing avatars and form header images, and one private bucket for storing attachment contents.
.env:
# ...previous content# minio providerBACKEND_STORAGE_PROVIDER=minio# public bucket nameBACKEND_STORAGE_PUBLIC_BUCKET=public# private bucket nameBACKEND_STORAGE_PRIVATE_BUCKET=private# minio endpoint ip or domainBACKEND_STORAGE_MINIO_ENDPOINT=minio.example.com# minio portBACKEND_STORAGE_MINIO_PORT=443# minio access keyBACKEND_STORAGE_MINIO_ACCESS_KEY=_minio_access_key_# minio secret keyBACKEND_STORAGE_MINIO_SECRET_KEY=_minio_secret_key_# full external addressSTORAGE_PREFIX=https://minio.example.com
You need to create two buckets on S3. One public bucket for storing avatars and form header images, and one private bucket for storing attachment content.
.env:
# ...previous content# use s3 standard providerBACKEND_STORAGE_PROVIDER:s3# region nameBACKEND_STORAGE_S3_REGION:us-east-2# endpoint,protocal is required (https)BACKEND_STORAGE_S3_ENDPOINT:https://s3.us-east-2.amazonaws.com# access keyBACKEND_STORAGE_S3_ACCESS_KEY:access_key# secret keyBACKEND_STORAGE_S3_SECRET_KEY:secret_key# public bucketBACKEND_STORAGE_PUBLIC_BUCKET:your-public-bucket# private bucketBACKEND_STORAGE_PRIVATE_BUCKET:your-private-bucket
The above process can be applied to most cloud providers, not just Amazon S3.
Starting the Application
Execute the application launch command in the current directory. Once the startup is complete, access 127.0.0.1:3000 to enter the application.
Note that if HTTPS is not configured, you won't be able to use the copy and paste functions within the tables.
docker-composepulldocker-composeup-d
Using a Hosted Database (Optional)
If you wish to use a hosted database, you can further streamline the deployment process:
Remove services.teable-db
Remove service.teable-db-migrate.depends_on
Remove volumes.teable-db
Update the .env file, replacing it with the configuration for your hosted database
Note that 127.0.0.1 is the internal network of the container. If you want to connect to a database deployed on your local machine, do not use 127.0.0.1 for POSTGRES_HOST. Instead, use host.docker.internal as the local address, otherwise, the connection will fail.
The same principle applies if you're using an externally hosted Redis:
Remove service.teable-cache
Remove service.teable.depends_on.teable-cache
Remove volumes.teable-cache
Update the .env file, replacing it with the configuration for your hosted Redis
Enabling the email service allows for in-site email notifications, user self-service password changes, and other features. Please configure the following environment variables according to your email service provider's information to enable the email service:
Teable can automatically create database roles within the application to allow secure access to table data from external applications. To enable this feature, you need to additionally configure the PUBLIC_DATABASE_PROXY environment variable.
This parameter should be set to an externally accessible database IP or domain + port number. If you're using the docker-compose deployment method mentioned earlier, the external access port would be 45432. For other deployment methods, please configure according to your specific setup.