[{"data":1,"prerenderedAt":589},["ShallowReactive",2],{"doc:\u002Fdocs\u002Fgetting-started":3,"docs-nav":375},{"id":4,"title":5,"body":6,"description":366,"extension":367,"meta":368,"navigation":369,"path":371,"seo":372,"stem":373,"__hash__":374},"docs\u002Fdocs\u002Fgetting-started.md","Getting started",{"type":7,"value":8,"toc":359},"minimark",[9,13,25,30,38,46,97,105,192,195,200,213,217,220,276,306,310,355],[10,11,5],"h1",{"id":12},"getting-started",[14,15,16,17,24],"p",{},"Tabularia runs on your own infrastructure. Everything it needs ships as containers:\nthe web app, the gateway, the engine and its workers, PostgreSQL for the metadata,\nValkey for the queues and MinIO as object storage. The images are published on\n",[18,19,23],"a",{"href":20,"rel":21},"https:\u002F\u002Fhub.docker.com\u002Fu\u002Fjumpasaservice",[22],"nofollow","Docker Hub"," for amd64 and arm64.",[26,27,29],"h2",{"id":28},"try-it-on-one-machine","Try it on one machine",[14,31,32,33,37],{},"Step by step, from an empty machine to a first scheduled flow, with every command and\nclick checked on a clean install: ",[18,34,36],{"href":35},"\u002Fdocs\u002Fgetting-started-docker-compose","Getting started with Docker Compose",".\nThe short version follows.",[14,39,40,41,45],{},"You need Docker with Docker Compose. This starts the ",[42,43,44],"strong",{},"development"," stack: the\nquickest way to see the product, not a production setup:",[47,48,53],"pre",{"className":49,"code":50,"language":51,"meta":52,"style":52},"language-bash shiki shiki-themes github-dark-dimmed github-light","git clone https:\u002F\u002Fgithub.com\u002FJumpAsAService\u002FTabularia.git\ncd Tabularia\u002Finfrastructure\ndocker compose up -d\n","bash","",[54,55,56,72,82],"code",{"__ignoreMap":52},[57,58,61,65,69],"span",{"class":59,"line":60},"line",1,[57,62,64],{"class":63},"sqRhv","git",[57,66,68],{"class":67},"sXfbr"," clone",[57,70,71],{"class":67}," https:\u002F\u002Fgithub.com\u002FJumpAsAService\u002FTabularia.git\n",[57,73,75,79],{"class":59,"line":74},2,[57,76,78],{"class":77},"swcJU","cd",[57,80,81],{"class":67}," Tabularia\u002Finfrastructure\n",[57,83,85,88,91,94],{"class":59,"line":84},3,[57,86,87],{"class":63},"docker",[57,89,90],{"class":67}," compose",[57,92,93],{"class":67}," up",[57,95,96],{"class":77}," -d\n",[14,98,99,100,104],{},"Nothing to configure. Open ",[18,101,102],{"href":102,"rel":103},"http:\u002F\u002Flocalhost:3000",[22]," and create the administrator: the page\nasks for it only while the installation has no account. The first start builds the\nimages, 2–3 minutes on a fast machine and 5–15 on a laptop.",[106,107,108,124],"table",{},[109,110,111],"thead",{},[112,113,114,118,121],"tr",{},[115,116,117],"th",{},"Service",[115,119,120],{},"URL",[115,122,123],{},"Credentials",[125,126,127,141,155,174],"tbody",{},[112,128,129,133,138],{},[130,131,132],"td",{},"App",[130,134,135],{},[18,136,102],{"href":102,"rel":137},[22],[130,139,140],{},"the administrator you create at the first visit",[112,142,143,146,152],{},[130,144,145],{},"Gateway",[130,147,148],{},[18,149,150],{"href":150,"rel":151},"http:\u002F\u002Flocalhost:8000",[22],[130,153,154],{},"through the app's sign-in",[112,156,157,160,166],{},[130,158,159],{},"Grafana",[130,161,162],{},[18,163,164],{"href":164,"rel":165},"http:\u002F\u002Flocalhost:3001",[22],[130,167,168,171,172],{},[54,169,170],{},"admin"," \u002F ",[54,173,170],{},[112,175,176,179,185],{},[130,177,178],{},"MinIO",[130,180,181],{},[18,182,183],{"href":183,"rel":184},"http:\u002F\u002Flocalhost:9001",[22],[130,186,187,171,190],{},[54,188,189],{},"minioadmin",[54,191,189],{},[14,193,194],{},"Upload a CSV, Excel, JSON or parquet file, or connect a database. Drag transformations\nfrom the sidebar, connect the nodes, click any node to preview its output, then run the\nflow, or download any node's data as CSV or Excel.",[196,197,199],"h3",{"id":198},"sample-data","Sample data",[14,201,202,203,206,207,212],{},"Already there: an ERP on PostgreSQL and a CRM on ClickHouse for a cured-meats company,\nand a ",[54,204,205],{},"Sample"," folder in Tabularia with the two connections, eleven flows (three\nscheduled) and four saved views. It appears a couple of minutes after the administrator\nis created. Details, and how to leave it out, in the\n",[18,208,211],{"href":209,"rel":210},"https:\u002F\u002Fgithub.com\u002FJumpAsAService\u002FTabularia\u002Fblob\u002Fmain\u002Finfrastructure\u002Fsampledb\u002FREADME.md",[22],"sample database README",".",[26,214,216],{"id":215},"go-to-production","Go to production",[14,218,219],{},"Docker Compose is for trying Tabularia; production runs on Kubernetes with the Helm chart.",[106,221,222,232],{},[109,223,224],{},[112,225,226,229],{},[115,227,228],{},"For",[115,230,231],{},"Read",[125,233,234,253,264],{},[112,235,236,239],{},[130,237,238],{},"Kubernetes",[130,240,241,245,246],{},[18,242,244],{"href":243},"\u002Fdocs\u002Fdeploy\u002Fkubernetes","Kubernetes and Helm"," and the chart in ",[18,247,250],{"href":248,"rel":249},"https:\u002F\u002Fgithub.com\u002FJumpAsAService\u002FTabularia\u002Ftree\u002Fmain\u002Finfrastructure\u002Fhelm\u002Ftabularia",[22],[54,251,252],{},"infrastructure\u002Fhelm\u002Ftabularia",[112,254,255,258],{},[130,256,257],{},"Every install and upgrade",[130,259,260],{},[18,261,263],{"href":262},"\u002Fdocs\u002Fdeploy\u002Frelease-checklist","Install and upgrade checklist",[112,265,266,269],{},[130,267,268],{},"Every setting",[130,270,271,275],{},[18,272,274],{"href":273},"\u002Fdocs\u002Fconfiguration","Configuration reference",": the environment variables, with their defaults",[14,277,278,281,282,285,286,289,290,293,294,297,298,305],{},[54,279,280],{},"SECURITY__FERNET_KEY"," and ",[54,283,284],{},"AUTH__ADMIN_PASSWORD"," are mandatory there: the chart has no\nfirst-start setup. With ",[54,287,288],{},"APP__ENV_NAME=production"," the gateway also refuses the development default secrets (",[54,291,292],{},"JWT__SECRET",", admin and database\npasswords) until they are replaced. Storage, broker, database, timezone and engines are\nset through the environment: pointing Tabularia at managed services is a configuration\nchange. Most settings are environment variables, all listed in the\n",[18,295,296],{"href":273},"configuration reference","; ",[18,299,302],{"href":300,"rel":301},"https:\u002F\u002Fgithub.com\u002FJumpAsAService\u002FTabularia\u002Fblob\u002Fmain\u002Finfrastructure\u002F.env.example",[22],[54,303,304],{},".env.example","\nis the starting file.",[26,307,309],{"id":308},"then","Then",[311,312,313,334,341,348],"ul",{},[314,315,316,317,320,321,324,325,329,330,212],"li",{},"Add an engine: a managed ",[42,318,319],{},"ClickHouse"," or ",[42,322,323],{},"Google BigQuery"," is configuration only:\nsee the ",[18,326,328],{"href":327},"\u002Fdocs\u002Foverview#run-it-on-your-engine--or-on-your-warehouse","overview"," and the\n",[18,331,333],{"href":332},"\u002Fdocs\u002Fengines\u002Fengine-differences","engine differences",[314,335,336,337,212],{},"Connect your sign-in: ",[18,338,340],{"href":339},"\u002Fdocs\u002Fdesign\u002Fsso-group-mapping","SSO and group mapping",[314,342,343,344,212],{},"Let another system drive Tabularia: ",[18,345,347],{"href":346},"\u002Fdocs\u002Fapi","API, tokens and webhooks",[314,349,350,351,212],{},"Take a flow with you: ",[18,352,354],{"href":353},"\u002Fdocs\u002Fdbt-export","export to dbt",[356,357,358],"style",{},"html pre.shiki code .sqRhv, html code.shiki .sqRhv{--shiki-default:#F69D50;--shiki-light:#6F42C1}html pre.shiki code .sXfbr, html code.shiki .sXfbr{--shiki-default:#96D0FF;--shiki-light:#032F62}html pre.shiki code .swcJU, html code.shiki .swcJU{--shiki-default:#6CB6FF;--shiki-light:#005CC5}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}",{"title":52,"searchDepth":74,"depth":84,"links":360},[361,364,365],{"id":28,"depth":74,"text":29,"children":362},[363],{"id":198,"depth":84,"text":199},{"id":215,"depth":74,"text":216},{"id":308,"depth":74,"text":309},"Try Tabularia on one machine with Docker Compose, then run it in production on Kubernetes with the Helm chart.","md",{"site":369,"source":370},true,"website\u002Fcontent\u002Fgetting-started.md","\u002Fdocs\u002Fgetting-started",{"title":5,"description":366},"docs\u002Fgetting-started","bUqHH1B0DfRajtJ6Jv_DmCHbIIbl5vU6Tfl5uYfL-vY",[376,392,447,479,511,537,561,581],{"title":5,"icon":377,"intro":378,"items":379},"start","Install it on one machine, learn the few ideas everything else is built on, and run a first flow.",[380,381,383,386,389],{"path":371,"title":5},{"path":35,"title":382},"Walkthrough with Docker Compose",{"path":384,"title":385},"\u002Fdocs\u002Fdeploy\u002Fminikube","Try it on your computer (minikube)",{"path":387,"title":388},"\u002Fdocs\u002Fconcepts","Concepts",{"path":390,"title":391},"\u002Fdocs\u002Foverview","Overview (README)",{"title":393,"icon":394,"intro":395,"items":396},"Capabilities","capabilities","What you can build: visual flows, analysis on any step, AI questions, pixel-perfect reports, dashboards, Python, R and SQL scripts, containers and the orchestration that ties them together.",[397,400,403,406,409,412,415,418,421,424,427,430,433,436,439,442,445],{"path":398,"title":399},"\u002Fdocs\u002Fcapabilities","All capabilities",{"path":401,"title":402},"\u002Fdocs\u002Fcapabilities\u002Fflows","Low-code flows",{"path":404,"title":405},"\u002Fdocs\u002Fcapabilities\u002Fpreview-and-analysis","Preview and analysis",{"path":407,"title":408},"\u002Fdocs\u002Fcapabilities\u002Fask-your-data","Ask your data with AI",{"path":410,"title":411},"\u002Fdocs\u002Fcapabilities\u002Freports","Pixel-perfect reports",{"path":413,"title":414},"\u002Fdocs\u002Fcapabilities\u002Freport-functions","Report functions",{"path":416,"title":417},"\u002Fdocs\u002Fcapabilities\u002Fdashboards","Dashboards",{"path":419,"title":420},"\u002Fdocs\u002Fscripting","Python and R",{"path":422,"title":423},"\u002Fdocs\u002Fsql-scripts","SQL scripts",{"path":425,"title":426},"\u002Fdocs\u002Fcapabilities\u002Fnotebooks","marimo notebooks as apps",{"path":428,"title":429},"\u002Fdocs\u002Fcontainer-node","Docker images in flows",{"path":431,"title":432},"\u002Fdocs\u002Fcapabilities\u002Fflow-groups","Flow groups: orchestration",{"path":434,"title":435},"\u002Fdocs\u002Fcapabilities\u002Fscheduling","Scheduling",{"path":437,"title":438},"\u002Fdocs\u002Fpushmail","Pushmail: datasources, reports and dashboards by email",{"path":440,"title":441},"\u002Fdocs\u002Fplaceholders","Dynamic dates",{"path":443,"title":444},"\u002Fdocs\u002Fcapabilities\u002Fengines","Engines",{"path":332,"title":446},"Engine differences",{"title":448,"icon":449,"intro":450,"items":451},"Sources","sources","Every way data comes in: files, databases, buckets, SFTP folders, HTTP APIs, SharePoint, Google Sheets, and the results of your own flows.",[452,455,458,461,464,467,470,473,476],{"path":453,"title":454},"\u002Fdocs\u002Fsources","All sources",{"path":456,"title":457},"\u002Fdocs\u002Fsources\u002Ffiles","Uploaded files",{"path":459,"title":460},"\u002Fdocs\u002Fsources\u002Fdatabases","Database tables and queries",{"path":462,"title":463},"\u002Fdocs\u002Fs3-datasource","S3 buckets",{"path":465,"title":466},"\u002Fdocs\u002Fsftp","SFTP folders",{"path":468,"title":469},"\u002Fdocs\u002Fapi-datasource","HTTP APIs",{"path":471,"title":472},"\u002Fdocs\u002Fsources\u002Fsharepoint","Excel on SharePoint",{"path":474,"title":475},"\u002Fdocs\u002Fsources\u002Fgoogle-sheets","Google Sheets",{"path":477,"title":478},"\u002Fdocs\u002Fsources\u002Fflow-outputs","Results of flows and scripts",{"title":480,"icon":481,"intro":482,"items":483},"Connections","connections","The systems Tabularia reads from and writes to, how each connection is set up, and who may use it.",[484,487,490,493,496,498,499,501,502,505,508],{"path":485,"title":486},"\u002Fdocs\u002Fconnections","All connections",{"path":488,"title":489},"\u002Fdocs\u002Fconnections\u002Fdatabases","Databases",{"path":491,"title":492},"\u002Fdocs\u002Fsqlserver","Microsoft SQL Server driver",{"path":494,"title":495},"\u002Fdocs\u002Fconnections\u002Fs3","S3 and compatible storage",{"path":465,"title":497},"SFTP servers",{"path":468,"title":469},{"path":471,"title":500},"SharePoint",{"path":474,"title":475},{"path":503,"title":504},"\u002Fdocs\u002Fconnections\u002Fsmtp","SMTP email",{"path":506,"title":507},"\u002Fdocs\u002Fcontainer-registries","Container registries",{"path":509,"title":510},"\u002Fdocs\u002Fconnections\u002Fdestinations","Writing data out",{"title":512,"icon":513,"intro":514,"items":515},"Integrations","integrations","How Tabularia fits your stack: AI providers, the REST API and webhooks, dbt, OpenLineage, single sign-on, SIEM and monitoring.",[516,519,522,523,525,528,531,534],{"path":517,"title":518},"\u002Fdocs\u002Fintegrations","All integrations",{"path":520,"title":521},"\u002Fdocs\u002Fintegrations\u002Fai","AI: where it is used",{"path":346,"title":347},{"path":353,"title":524},"Export to dbt",{"path":526,"title":527},"\u002Fdocs\u002Fopenlineage","OpenLineage",{"path":529,"title":530},"\u002Fdocs\u002Fsso-keycloak","Single sign-on with Keycloak",{"path":532,"title":533},"\u002Fdocs\u002Fsiem-splunk","Audit log to Splunk",{"path":535,"title":536},"\u002Fdocs\u002Fintegrations\u002Fmonitoring","Monitoring",{"title":538,"icon":539,"intro":540,"items":541},"Security & governance","governance","Who may see and do what, what is recorded, and how data quality and personal data are kept in check.",[542,545,548,551,554,555,558],{"path":543,"title":544},"\u002Fdocs\u002Fgovernance","Overview",{"path":546,"title":547},"\u002Fdocs\u002Fgovernance\u002Fpermissions","Permissions",{"path":549,"title":550},"\u002Fdocs\u002Fgovernance\u002Faudit-log","Audit log",{"path":552,"title":553},"\u002Fdocs\u002Fgovernance\u002Fdata-contracts","Data contracts",{"path":339,"title":340},{"path":556,"title":557},"\u002Fdocs\u002Fexamples\u002Fkeycloak","Keycloak example on a laptop",{"path":559,"title":560},"\u002Fdocs\u002Fengines\u002Fclickhouse-ai-user","A ClickHouse user for the AI assistant",{"title":562,"icon":563,"intro":564,"items":565},"Install & operate","operate","Run it in production on Kubernetes, configure it, upgrade it and keep it healthy.",[566,567,570,573,574,575,578],{"path":243,"title":244},{"path":568,"title":569},"\u002Fdocs\u002Fdeploy\u002Fkind","A company-like cluster on one computer (kind)",{"path":571,"title":572},"\u002Fdocs\u002Fdeploy\u002Fupgrading","Upgrading, backups and restore",{"path":262,"title":263},{"path":273,"title":274},{"path":576,"title":577},"\u002Fdocs\u002Fengine-settings","Settings from the panel",{"path":579,"title":580},"\u002Fdocs\u002Fdatabase-migrations","Database migrations",{"title":582,"icon":583,"intro":584,"items":585},"Reference","reference","Release process and the remaining reference pages.",[586],{"path":587,"title":588},"\u002Fdocs\u002Frelease-process","Release process",1793656371141]