| Variabile d’ambiente | Descrizione | Valore predefinito | Obbligatoria | Esempio |
|---|---|---|---|---|
| Configurazione principale | ||||
| PUBLIC_ORIGIN | Origine pubblica per generare URL completi; deve essere impostata sull’indirizzo di accesso dell’app | - | Sì | https://app.teable.ai |
| SECRET_KEY | Segreto radice per JWT, sessioni e condivisione. Genera un valore casuale complesso | - | Sì | openssl rand -base64 32 |
| BACKEND_JWT_SECRET | Firma i JWT di autenticazione, condivisione e plugin. In sua assenza viene usato SECRET_KEY | SECRET_KEY | - | openssl rand -base64 32 |
| BACKEND_SESSION_SECRET | Firma i cookie della sessione di accesso. In sua assenza viene usato SECRET_KEY | SECRET_KEY | - | openssl rand -base64 32 |
| BACKEND_STORAGE_ENCRYPTION_KEY | Crittografa i token di accesso agli allegati. Obbligatoria quando BACKEND_STORAGE_PROVIDER è local | - | Sì | stringa casuale di 16 caratteri |
| BACKEND_STORAGE_ENCRYPTION_IV | Vettore di inizializzazione per la crittografia associato a BACKEND_STORAGE_ENCRYPTION_KEY | - | Sì | stringa casuale di 16 caratteri |
| BACKEND_ACCESS_TOKEN_ENCRYPTION_KEY | Crittografa i token di accesso personali | - | Sì | stringa casuale di 16 caratteri |
| BACKEND_ACCESS_TOKEN_ENCRYPTION_IV | Vettore di inizializzazione per la crittografia associato a BACKEND_ACCESS_TOKEN_ENCRYPTION_KEY | - | Sì | stringa casuale di 16 caratteri |
| PORT | Porta su cui viene eseguita l’applicazione | 3000 | - | 3000 |
| LOG_LEVEL | Livello dei log; opzioni: fatal, error, warn, info, debug, trace | info | - | debug |
| Configurazione dello storage | ||||
| BACKEND_STORAGE_PROVIDER | Provider di storage; opzioni: local, minio, s3, aliyun | local | - | s3 |
| BACKEND_STORAGE_LOCAL_PATH | Percorso dello storage locale | .assets/uploads | - | .assets/uploads |
| BACKEND_STORAGE_PUBLIC_BUCKET | Nome del bucket pubblico | public | - | teable-public |
| BACKEND_STORAGE_PRIVATE_BUCKET | Nome del bucket privato per allegati, file delle app, dati archiviati e altri contenuti protetti | private | - | teable-private |
| BACKEND_STORAGE_PUBLIC_URL | Sostituzione dell’URL pubblico per il bucket pubblico (facoltativa) | - | - | https://cdn.example.com |
| BACKEND_STORAGE_PRIVATE_BUCKET_ENDPOINT | Sostituzione dell’endpoint del bucket privato (facoltativa) | - | - | https://private-bucket.endpoint |
| BACKEND_STORAGE_S3_REGION | Regione dello storage S3, obbligatoria quando BACKEND_STORAGE_PROVIDER è s3 | - | - | us-east-2 |
| BACKEND_STORAGE_S3_ENDPOINT | Endpoint dello storage S3, obbligatorio quando BACKEND_STORAGE_PROVIDER è s3 | - | - | https://s3.us-east-2.amazonaws.com |
| BACKEND_STORAGE_S3_INTERNAL_ENDPOINT | Endpoint interno S3 (facoltativo) | - | - | http://s3.internal |
| BACKEND_STORAGE_S3_FORCE_PATH_STYLE | Usa URL in stile percorso (endpoint/bucket/key) per le richieste S3 rivolte al browser. Abilita questa opzione quando l’endpoint pubblico non può servire sottodomini dei bucket. Non può essere combinata con BACKEND_STORAGE_PRIVATE_BUCKET_ENDPOINT | false | - | true |
| BACKEND_STORAGE_S3_INTERNAL_FORCE_PATH_STYLE | Sostituisce l’indirizzamento in stile percorso per le richieste S3 interne. Se non impostata, eredita l’impostazione pubblica quando entrambi i client condividono un endpoint; un endpoint interno separato mantiene l’indirizzamento in stile host virtuale | - | - | true |
| BACKEND_STORAGE_S3_ACCESS_KEY | Chiave di accesso allo storage S3, obbligatoria quando BACKEND_STORAGE_PROVIDER è s3 | - | - | your_access_key |
| BACKEND_STORAGE_S3_SECRET_KEY | Chiave segreta dello storage S3, obbligatoria quando BACKEND_STORAGE_PROVIDER è s3 | - | - | your_secret_key |
| BACKEND_STORAGE_S3_MAX_SOCKETS | Numero massimo di socket S3 (facoltativo) | 100 | - | 100 |
| BACKEND_STORAGE_MINIO_ENDPOINT | Endpoint dello storage MinIO | - | - | minio.example.com |
| BACKEND_STORAGE_MINIO_PORT | Porta MinIO | 9000 | - | 443 |
| BACKEND_STORAGE_MINIO_USE_SSL | Indica se MinIO utilizza SSL | false | - | true |
| BACKEND_STORAGE_MINIO_ACCESS_KEY | Chiave di accesso MinIO | - | - | access-key |
| BACKEND_STORAGE_MINIO_SECRET_KEY | Chiave segreta MinIO | - | - | secret-key |
| BACKEND_STORAGE_MINIO_INTERNAL_ENDPOINT | Endpoint interno MinIO (facoltativo, senza HTTPS) | - | - | minio.internal |
| BACKEND_STORAGE_MINIO_INTERNAL_PORT | Porta interna MinIO (facoltativa) | 9000 | - | 9000 |
| BACKEND_STORAGE_MINIO_REGION | Regione MinIO (facoltativa) | - | - | us-east-1 |
| BACKEND_STORAGE_UPLOAD_METHOD | Metodo di caricamento | put | - | put |
| STORAGE_PREFIX | Prefisso dello storage; il valore predefinito è PUBLIC_ORIGIN | PUBLIC_ORIGIN | - | http://localhost:3000 |
| Configurazione della cache | ||||
| BACKEND_CACHE_PROVIDER | Provider della cache; opzioni: sqlite, memory, redis | sqlite | - | redis |
| BACKEND_CACHE_REDIS_URI | URI di connessione Redis obbligatorio per la consegna delle attività calcolate; usato anche per la cache quando BACKEND_CACHE_PROVIDER è redis | - | Sì | redis://default:teable@127.0.0.1:6379/0 |
| Configurazione della cache delle prestazioni | ||||
| BACKEND_PERFORMANCE_CACHE | URL Redis della cache delle prestazioni per memorizzare i risultati delle query e migliorare l’efficienza della collaborazione multiutente. È consigliata un’istanza Redis distinta da BACKEND_CACHE_REDIS_URI | - | - | redis://default:teable@127.0.0.1:6379/0 |
| Configurazione dell’autenticazione | ||||
| SOCIAL_AUTH_PROVIDERS | Elenco di provider di autenticazione social separati da virgole | - | - | github,google,oidc |
| BACKEND_GITHUB_CLIENT_ID | ID client OAuth di GitHub | - | - | github_client_id |
| BACKEND_GITHUB_CLIENT_SECRET | Segreto client OAuth di GitHub | - | - | github_client_secret |
| BACKEND_GOOGLE_CLIENT_ID | ID client OAuth di Google | - | - | google_client_id |
| BACKEND_GOOGLE_CLIENT_SECRET | Segreto client OAuth di Google | - | - | google_client_secret |
| BACKEND_OIDC_CLIENT_ID | ID client OIDC | - | - | google_client_id |
| BACKEND_OIDC_CLIENT_SECRET | Segreto client OIDC | - | - | google_client_secret |
| BACKEND_OIDC_CALLBACK_URL | URL di callback OIDC | - | - | https://app.teable.ai/api/auth/oidc/callback |
| Sicurezza e verifica | ||||
| TURNSTILE_SITE_KEY | Chiave del sito Cloudflare Turnstile per la verifica dell’autenticazione | - | - | 1x00000000000000000000AA |
| TURNSTILE_SECRET_KEY | Chiave segreta Cloudflare Turnstile per la verifica dell’autenticazione | - | - | 1x0000000000000000000000000000000AA |
| TEABLE_SSRF_PROTECTION_DISABLED | Disabilita la protezione che blocca le richieste in uscita verso indirizzi di rete loopback, privati, link-local e altri indirizzi riservati. Imposta su true soltanto nei deployment self-hosted attendibili che devono accedere a endpoint interni | false | - | true |
| BACKEND_SIGNUP_VERIFICATION_CODE_RATE_LIMIT_SECONDS | Intervallo del limite di frequenza (secondi) per l’invio delle email con il codice di verifica della registrazione | - | - | 30 |
| BACKEND_TRUST_PROXY | Impostazione di attendibilità del reverse proxy usata per risolvere l’IP del client dietro un proxy. Influisce sui log di controllo e sui record di sicurezza correlati. Accetta true, false, un numero di hop o un elenco di IP/CIDR/preimpostazioni. Se vuota, considera attendibili i proxy della rete privata | loopback, linklocal, uniquelocal | - | loopback, linklocal, uniquelocal |
| Configurazione email (deprecata: usa Amministrazione di sistema > Impostazioni istanza > Email) | ||||
| BACKEND_MAIL_HOST | Indirizzo predefinito del server di posta. Consigliamo di configurare visivamente Email di notifica ed Email di Automazione in Amministrazione di sistema > Impostazioni istanza > Email | smtp.teable.ai | - | smtp.gmail.com |
| BACKEND_MAIL_PORT | Porta predefinita del server di posta | 465 | - | 465 |
| BACKEND_MAIL_SECURE | Indica se il servizio di posta predefinito utilizza SSL/TLS | true | - | true |
| BACKEND_MAIL_SENDER | Indirizzo mittente predefinito | noreply.teable.ai | - | noreply@company.com |
| BACKEND_MAIL_SENDER_NAME | Nome mittente predefinito | Teable | - | Teable |
| BACKEND_MAIL_AUTH_USER | Nome utente predefinito per l’autenticazione del server di posta | - | - | username |
| BACKEND_MAIL_AUTH_PASS | Password predefinita per l’autenticazione del server di posta | - | - | usertoken |
| BACKEND_MAIL_INVITE_USER_NAME_MAX_LENGTH | Lunghezza massima del nome dell’invitante negli oggetti delle email di invito. Un valore vuoto o 0 disabilita il troncamento | - | - | 32 |
| BACKEND_MAIL_INVITE_SPACE_NAME_MAX_LENGTH | Lunghezza massima del nome dello Spazio o della Base negli oggetti delle email di invito. Un valore vuoto o 0 disabilita il troncamento | - | - | 32 |
| Configurazione sessione/JWT | ||||
| BACKEND_SESSION_EXPIRES_IN | Durata prima della scadenza della sessione | 7d | - | 7d |
| BACKEND_SESSION_COOKIE_SECURE | Indica se proteggere il cookie di sessione | false | - | true |
| BACKEND_SESSION_ORIGIN_CHECK_ENABLED | Abilita i controlli Origin e Fetch Metadata per le richieste API non sicure del browser che usano cookie di sessione. Abilita questa opzione soltanto se il reverse proxy o la CDN conserva queste intestazioni | false | - | false |
| BACKEND_JWT_EXPIRES_IN | Durata prima della scadenza del JWT | 20d | - | 20d |
| BACKEND_RESET_PASSWORD_EMAIL_EXPIRES_IN | Durata prima della scadenza dell’email di reimpostazione della password | 30m | - | 30m |
| Limiti delle risorse | ||||
| MAX_COPY_CELLS | Numero massimo di celle copiabili in una singola richiesta | - | - | 50000 |
| MAX_READ_ROWS | Numero massimo di righe leggibili in una singola richiesta | - | - | 10000 |
| MAX_ATTACHMENT_UPLOAD_SIZE | Dimensione massima di caricamento degli allegati (byte) | - | - | 2147483648 |
| TASK_MAX_FIELDS_PER_BATCH | Numero massimo di Campi IA inviati al modello in una richiesta batch. I valori sono limitati all’intervallo da 1 a 20 | 5 | - | 5 |
| TASK_MAX_CONCURRENCY | Numero massimo di esecuzioni in sospeso delle attività dei Campi IA distribuite in un ciclo di pianificazione. I valori sono limitati all’intervallo da 1 a 20 | 5 | - | 5 |
| TABLE_LIMIT_FIELD_OPTIONS_MAX_BYTES | Numero massimo di byte per le opzioni serializzate dei Campi | 262144 | - | 262144 |
| TABLE_LIMIT_SELECT_CHOICES_MAX | Numero massimo di scelte per un Campo di selezione | 1000 | - | 1000 |
| TABLE_LIMIT_SELECT_CHOICE_NAME_MAX_LENGTH | Lunghezza massima del nome di una scelta di selezione | 1000 | - | 1000 |
| TABLE_LIMIT_SELECT_DEFAULT_VALUES_MAX | Numero massimo di valori predefiniti di selezione | 100 | - | 100 |
| TABLE_LIMIT_CELL_VALUE_MAX_BYTES | Numero massimo di byte per il valore di una cella | 262144 | - | 262144 |
| TABLE_LIMIT_RECORD_FIELDS_MAX_BYTES | Numero massimo di byte per i Campi serializzati di un Record | 1048576 | - | 1048576 |
| TABLE_LIMIT_RECORDS_PER_MUTATION_MAX | Numero massimo di Record per mutazione | 20000 | - | 20000 |
| TABLE_LIMIT_COMPUTED_CELL_VALUE_MAX_BYTES | Numero massimo di byte per il valore calcolato di una cella | 262144 | - | 262144 |
| TABLE_LIMIT_FORMULA_MAX_LENGTH | Lunghezza massima di una formula | 8192 | - | 8192 |
| TABLE_LIMIT_TABLES_PER_BASE_MAX | Numero massimo di Tabelle per Base | 1000 | - | 1000 |
| TABLE_LIMIT_FIELDS_PER_TABLE_MAX | Numero massimo di Campi per Tabella | 500 | - | 500 |
| TABLE_LIMIT_VIEWS_PER_TABLE_MAX | Numero massimo di Viste per Tabella | 100 | - | 100 |
| TABLE_LIMIT_CREATE_TABLE_FIELDS_MAX | Numero massimo di Campi accettati durante la creazione di una Tabella | 1000 | - | 1000 |
| TABLE_LIMIT_CREATE_TABLE_VIEWS_MAX | Numero massimo di Viste accettate durante la creazione di una Tabella | 20 | - | 20 |
| TABLE_LIMIT_CREATE_TABLE_RECORDS_MAX | Numero massimo di Record accettati durante la creazione di una Tabella | 20000 | - | 20000 |
| TABLE_LIMIT_RECORDS_PER_TABLE_MAX | Numero massimo di righe per Tabella. Un valore vuoto indica che non esiste un limite di righe a livello di istanza | - | - | 1000000 |
| TABLE_LIMIT_VIEW_FILTER_ITEMS_MAX | Numero massimo di elementi di filtro in una Vista | 100 | - | 100 |
| TABLE_LIMIT_VIEW_FILTER_DEPTH_MAX | Profondità massima dei filtri annidati in una Vista | 5 | - | 5 |
| TABLE_LIMIT_VIEW_SORT_ITEMS_MAX | Numero massimo di elementi di ordinamento in una Vista | 20 | - | 20 |
| TABLE_LIMIT_VIEW_GROUP_ITEMS_MAX | Numero massimo di elementi di raggruppamento in una Vista | 3 | - | 3 |
| TABLE_LIMIT_VIEW_OPTIONS_MAX_BYTES | Numero massimo di byte per le opzioni serializzate di una Vista | 262144 | - | 262144 |
| TABLE_LIMIT_NAME_MAX_LENGTH | Lunghezza massima del nome visualizzato per gli oggetti di Tabella supportati | 100 | - | 100 |
| TABLE_LIMIT_DESCRIPTION_MAX_LENGTH | Lunghezza massima della descrizione per gli oggetti di Tabella supportati | 2000 | - | 2000 |
| AUTOMATION_MIN_SCHEDULED_MINUTES_INTERVAL | Intervallo minimo (in minuti) utilizzabile da un trigger pianificato con frequenza Minuti. Imposta un valore superiore a 60 per disabilitare le pianificazioni a livello di minuti | 10 | - | 15 |
| AUTOMATION_MIN_EMAIL_POLL_INTERVAL_MINUTES | Intervallo minimo di polling della casella di posta (in minuti) utilizzabile da un trigger email | 10 | - | 15 |
| IA e App Builder (connessione al piano di runtime) | ||||
| SANDBOX_PROVIDER | Provider di sandbox per le sessioni IA; opensandbox si collega a un piano di runtime self-hosted | - | - | opensandbox |
| TEABLE_INFRA_API_URL | URL di ingresso del piano di runtime: deve essere l’ingresso pubblico (instrada /v1 al motore sandbox), non l’indirizzo di un servizio interno | - | - | https://infra.teable.example.com |
| TEABLE_INFRA_API_KEY | Chiave API condivisa con il piano di runtime | - | - | your-infra-api-key |
| TEABLE_INFRA_BUCKET | Bucket per il piano dati dell’area di lavoro IA | teable-agent | - | teable-agent |
| SANDBOX_OPENSANDBOX_IMAGE | Prefisso senza tag dell’immagine dell’agente sandbox: Teable aggiunge il proprio tag di release affinché l’agente corrisponda sempre alla versione dell’app. I deployment in Cina usano il prefisso del mirror Aliyun | - | - | ghcr.io/teableio/teable-sandbox-agent |
| SANDBOX_OPENSANDBOX_RUNTIME | Tipo di runtime del motore sandbox: kubernetes o docker. Nei deployment Docker deve essere docker | kubernetes | - | docker |
| SANDBOX_OPENSANDBOX_USE_SERVER_PROXY | Instrada gli endpoint sandbox attraverso il proxy basato su percorso del motore anziché tramite sottodomini per porta (utilizzato dalla modalità locale di Docker) | false | - | true |
| APP_DEPLOY_PROVIDER | Backend di deployment di App Builder; l’hosting autonomo completo usa docker-runtime | vercel | - | docker-runtime |
| SANDBOX_JWT_SECRET | Segreto per firmare le sessioni sandbox. Genera un valore casuale per ogni host e usa lo stesso valore nel servizio sandbox | - | Sì | stringa casuale |
| SANDBOX_CPU | vCPU per sandbox (le impostazioni dell’Amministrazione di sistema hanno la precedenza) | 2 | - | 2 |
| SANDBOX_MEMORY | Memoria (GiB) per sandbox (le impostazioni dell’Amministrazione di sistema hanno la precedenza) | 4 | - | 4 |
| SANDBOX_DISK | Disco temporaneo (GiB) per sandbox (le impostazioni dell’Amministrazione di sistema hanno la precedenza) | 15 | - | 15 |
| Opzioni delle funzionalità | ||||
| RECORD_HISTORY_DISABLED | Indica se disabilitare la cronologia dei Record; il valore predefinito è false | false | - | true |
| BACKEND_STORAGE_COLD_ARCHIVE_DISABLED | Indica se interrompere l’archiviazione pianificata dei dati storici. I dati già archiviati rimangono leggibili | false | - | true |
| PASSWORD_LOGIN_DISABLED | Indica se disabilitare l’accesso con password (OAuth e OIDC restano disponibili) | false | - | true |
| Analisi e monitoraggio | ||||
| MICROSOFT_CLARITY_ID | ID delle metriche di Microsoft Clarity, per abilitare l’analisi con Microsoft Clarity | - | - | your-metrics-id |
| OTEL_EXPORTER_OTLP_ENDPOINT | Endpoint OTLP di OpenTelemetry | - | - | http://jaeger:4317 |
| TELEMETRY_REPORT_DISABLED | Disabilita l’invio della telemetria self-hosted, inclusi i report di conformità delle licenze provenienti dalle istanze connesse | false | - | true |
| Configurazione del database | ||||
| PRISMA_DATABASE_URL | URL di connessione al database; deve essere configurato | - | Sì | postgresql://teable:teable@127.0.0.1:5432/teable |
| PUBLIC_DATABASE_PROXY | Indirizzo del database raggiungibile dall’esterno (host:porta) usato nelle credenziali generate dal pannello “Connessione database” della Base; impostalo per abilitare l’accesso SQL esterno in sola lettura | - | - | db.example.com:42345 |
| PRISMA_TRANSACTION_TIMEOUT | Durata massima (ms) di una transazione prima del timeout. Aumentala per le transazioni prolungate (ad esempio, aggiornamenti in blocco con molte chiavi esterne) | 5000 | - | 60000 |
| PRISMA_TRANSACTION_MAX_WAIT | Tempo massimo (ms) di attesa per acquisire una transazione dal pool | 2000 | - | 5000 |
| BIG_TRANSACTION_TIMEOUT | Timeout (ms) per le transazioni interne di grandi dimensioni, come l’esportazione di Base di grandi dimensioni | 600000 | - | 1200000 |
Segreti e rotazione
Ogni valore indicato sopra come segreto deve provenire dalla tua configurazione. Il server li controlla una volta all’avvio, ma un segreto mancante non impedisce mai l’avvio: Teable utilizza il valore predefinito incorporato nelle versioni precedenti, registra le variabili mancanti nei log e si avvia. Questi valori incorporati sono pubblici, quindi chiunque può falsificare token o decifrare i dati che proteggono. Ciò è accettabile per una rapida prova locale, ma non è sicuro in altri contesti. Aggiornamento di un deployment esistente. Un’istanza eseguita senza queste variabili utilizzava implicitamente i vecchi valori incorporati e continua a usarli. L’avviso all’avvio mostra il blocco esatto da aggiungere affinché sessioni, token e dati crittografati esistenti continuino a funzionare. Copialo così com’è, riavvia, quindi pianifica una rotazione. Se il formato della configurazione lo richiede, ricorda di eseguire l’escape di$ nei valori.
Nuovo deployment. Genera invece valori nuovi:
openssl rand -base64 32
openssl rand -hex 8 per gli slot *_ENCRYPTION_KEY e
*_ENCRYPTION_IV di 16 caratteri.
Il log di avvio mostra un avviso anche quando un segreto è impostato esplicitamente
su un vecchio valore predefinito noto pubblicamente. L’istanza continua a funzionare
affinché i dati restino accessibili, ma chiunque può falsificare token o decifrare i
dati protetti da tale valore. Esegui la rotazione.

