Lowcoder Documentation
  • Lowcoder overview
    • The "Hello World" walk
  • 🆕Setup and run
    • Cloud & Private Cloud
    • Self-hosting
      • Google Cloud Platform
      • Easypanel
      • Heroku
      • Raspberry Pi
      • Access local database or API
      • Update MongoDB Versions
      • Lowcoder Version Update
      • Traefik loadbalancer
      • SMTP Server
      • Migration from Openblocks
    • Security
  • 🏨Workspaces & Teamwork
    • Workspaces
      • SAAS Mode
      • Enterprise Mode
    • Members and Groups
    • Permissions for Resources
    • OAuth
      • KeyCloak
      • Google
      • GitHub
      • Generic OAuth Provider
    • Query library
    • Lowcoder Marketplace
  • ✨Build Applications
    • Create a new App
      • App(s) Navigation
      • Modules
      • Version and Release Management
    • App Editor
      • Query & Editing Roundtrips
      • Bulk Editing
      • Keyboard shortcuts
      • Data selection & Javascript
      • Layers
      • Visual Components
        • Common Component Settings
        • Messages / Toast
        • Dashboard & Reporting
          • Table
          • Charts and graphs
            • Bar Chart
            • Line Chart
            • Pie Chart
            • Scatter Chart
            • CandleStick Chart
            • Funnel Chart
            • Gauge Chart
            • Graph Chart
            • Heatmap Chart
            • Radar Chart
            • Sankey Chart
            • Suburst Chart
            • Theme River Chart
            • Tree Chart
            • Treemap Chart
            • Mermaid Chart
          • Google Maps
        • Layout & Navigation
          • List View
          • Drawer
          • Modal
          • Navigation
          • Cascader
          • Tree / Tree Select
          • Link
          • Floating Button
          • Text
          • Step Control
          • Page Layout
          • Content Card
          • Tabbed Container
        • Data Collection & Forms
          • Form
          • Input Field Types
          • JSON Schema Form
        • Meeting & Collaboration
        • Project Management
        • Calendar & Scheduling
          • Calendar
          • Date & Date Range
          • Time & Time Range
        • Document & File Management
          • File upload
        • Item & Signature Handling
        • Multimedia & Animation
          • Image
        • Integration & Extension
        • Legacy & Deprecated
      • Option lists
      • Date handling
      • Use Markdown
    • App Interaction
      • Event handlers
    • Themes & Styling
      • Design an efficient and user-friendly form
      • Customize Styles
      • Component Styling Possibilities
    • Video Calls in Lowcoder
  • 🚀Connect your Data
    • Data source basics
      • Configure IP allowlists
    • Data sources in Lowcoder
      • APIs as Datasource
        • REST API
        • GraphQL
        • Google Sheets
      • SQL Databases
        • MySQL
        • MariaDB
        • Supabase
          • Supabase PostgreSQL
          • Supabase Assets API
          • Supabase RealTime
          • Supabase OAuth
        • PostgreSQL
        • Microsoft SQL Server
        • Oracle
      • NoSQL Databases
        • MongoDB
        • CouchDB
        • DynamoDB
      • InMemory Databases
        • Redis
      • File Storages
        • S3 File Storage
      • BigData & OLAP
        • Big Query
        • Snowflake
        • ClickHouse
        • Elasticsearch
      • Websocket Datasource
    • Query basics
      • Bind Query Data to Components
      • Query library
  • 🪄Workflows
    • n8n Integration
  • 💫Business Logic in Apps
    • Write JavaScript
      • JavaScript query
      • Temporary state
      • Transformers
      • Data responder
      • Built-in JS functions
  • 🙌Publish Apps
    • Share an App
    • Publish an App
    • Embed an App
      • Embed App in HTML Pages
      • Embed App in WordPress Pages
      • Embed Apps in React
      • Embed Apps in NEXT.JS
      • Native embed SDK
        • Build the SDK from Source
  • 🔥Lowcoder Extension
    • Opensource Contribution
      • Develop UI components for Apps
      • Develop Data Source Plugins
    • Use third-party libraries in Apps
      • Day.js Date handling
      • Import your own JavaScript Library
    • Custom component
    • Lowcoder Open REST API
  • Lowcoder for Enterprise
    • Custom branding
Powered by GitBook
LogoLogo

More to try...

  • Lowcoder Website
  • Free Cloud Platform
  • Github
  • Discord

© Lowcoder Software LTD

On this page
  • 1) Start easy:
  • All-in-one image
  • 2) Scale
  • Separate images: services in stateless containers
  • 3) Update to the latest version
  • 4) Customize the deployment
  • Use your own MongoDB and Redis
  • Run as non-root user
  • 5) Secure your deployment
  • Install SSL certificate
  • 6) Configure the Environment
  • ENV Variables for the all-in-one image
  • ENV Variables for the api-service image
  • ENV Variables for the node-service image
  • ENV Variables for the web frontend image
  • Health checks

Was this helpful?

  1. Setup and run

Self-hosting

PreviousCloud & Private CloudNextGoogle Cloud Platform

Last updated 7 months ago

Was this helpful?

In this article, you will be guided through how to host Lowcoder on your own server using Docker-Compose or Docker.

There are multiple ways of installation. We directly support:

  • to run with a single line of command.

  • Multi-Docker Image deployment for scaling scenarios with

  • Kubernetes-based deployment with .

1) Start easy:

For easy setup and deployment, we provide an that bundles frontend, backend, and data persistence services altogether in one single container.

All-in-one image

Prerequisites

Recommended system spec: 1-core CPU and 2 GB RAM.

Windows users are recommended to use PowerShell for running the commands below.

In your working directory, run the following commands to make a directory named Lowcoder to store the data of Lowcoder:

mkdir lowcoder
cd lowcoder

Deploy

Follow the steps below:

curl https://raw.githubusercontent.com/lowcoder-org/lowcoder/main/deploy/docker/docker-compose.yaml -o $PWD/docker-compose.yml
  1. Start the Docker container by running this command:

    docker-compose up -d

    The docker image, about 400 MB, is downloaded during the initial start-up.

    After downloading, it usually takes less than 30 seconds to start the service.

  2. Check the logs by running this command:

    docker logs -f lowcoder

    When you see frontend, backend, redis, and mongo entered the RUNNING state, the Lowcoder service has officially started:

Run the command below:

docker run -d --name lowcoder -p 3000:3000 -v "$PWD/stacks:/lowcoder-stacks" lowcoderorg/lowcoder-ce

Update to the latest version

Run the following commands to update to the latest Lowcoder image:

docker-compose pull
docker-compose rm -fsv lowcoder
docker-compose up -d

Run the following commands to update to the latest Lowcoder image:

docker pull lowcoderorg/lowcoder-ce
docker rm -fv Lowcoder
docker run -d --name Lowcoder -p 3000:3000 -v "$PWD/stacks:/Lowcoder-stacks" lowcoderorg/lowcoder-ce

2) Scale

Separate images: services in stateless containers

For bigger expected loads that need scaling in a cluster environment, we offer separate images for stateless containers of the backend and frontend service with a customizable Dockerfile. A well-functioning Lowcoder deployment consists of below services:

  • api-service: Backend service.

  • node-service: Backend service.

  • frontend: Frontend service.

  • MongoDB: Used for persisting data of users, apps, data sources, etc.

  • Redis: Used for maintaining user sessions, rate-limiter, etc.

Prerequisites

Deploy

  1. In your working directory, run the following commands to make a directory named lowcoder to store the data of Lowcoder:

    mkdir lowcoder
    cd lowcoder
  2. curl https://raw.githubusercontent.com/lowcoder-org/lowcoder/main/deploy/docker/docker-compose-multi.yaml -o $PWD/docker-compose-multi.yml
  3. Modify service configurations in the downloaded Dockerfile according to your needs:

    • mongodb: Start a new MongoDB instance on your host. You can delete this part and modify the environment variable MONGODB_URI of the api-service to use your own MongoDB.

    • redis: Start a new Redis instance on your host. You can delete this part and modify the environment variable REDIS_URI of the api-service to use your own Redis.

    • api-service: Required.

    • node-service: Required.

    • frontend: Required. Can be optional if you deploy the frontend on CDN.

  4. Start Docker containers by running this command:

    docker-compose -f docker-compose-multi.yml up -d

3) Update to the latest version

Run the following commands to update services to the latest in a Docker Compose installation:

docker-compose -f docker-compose-multi.yml pull
docker-compose -f docker-compose-multi.yml up -d

4) Customize the deployment

This section shows how to customize deployment configurations by setting environment variables.

If you have already started Docker containers, you need to restart the containers for new configurations to take effect. For example, the way to restart your container running an all-in-one image is:

One single command:

docker-compose down
docker-compose up -d

It picks up configuration changes by stopping containers already in service and recreating new ones.

Run the following commands to stop, remove the container already in service, and start up a new one using the newly customized deployment command.

docker stop lowcoder
docker rm lowcoder
# run your new docker run command

Below are examples of configuring the all-in-one image by setting environment variables in docker-compose.yml. If you are self-hosting with separate images, modify the lowcoder-api-service part of the docker-compose-multi.yml file instead.

Use your own MongoDB and Redis

By default, Lowcoder uses the built-in MongoDB and Redis installed inside the container, and you can replace them with your own MongoDB and Redis clusters.

Add environment variables MONGODB_URI and REDIS_URI in docker-compose.yml downloaded in your working directory.

Add environment variables MONGODB_URI and REDIS_URI to the deployment command, as shown below:

docker run -d --name lowcoder -e MONGODB_URI=YOUR_MONGODB_URI REDIS_URI=YOUR_REDIS_URI -p 3000:3000 -v "$PWD/stacks:/lowcoder-stacks lowcoderorg/lowcoder-ce

Run as non-root user

By default, the supervisor will run under the user uid=9001. You can specify the uid by adding a docker environment variable LOCAL_USER_ID and setting its value to a different number, such as 10010.

Add an environment variable LOCAL_USER_ID in docker-compose.yml downloaded in your working directory.

Add an environment variable LOCAL_USER_ID to the deployment command, as shown below:

docker run -d --name lowcoder -e LOCAL_USER_ID=10010 -p 3000:3000 -v "$PWD/stacks:/lowcoder-stacks" lowcoderorg/lowcoder-ce

5) Secure your deployment

Install SSL certificate

With an SSL certificate, you can securely visit self-hosted Lowcoder with HTTPS protocol. Here are the steps to install your SSL certificate before starting a container:

  1. Copy fullchain.pem and privkey.pem to the $PWD/lowcoder-stacks/ssl directory.

  2. In $PWD/docker-compose.yml, change the value of ports to "3443:3443".

  1. Copy fullchain.pem and privkey.pem to the $PWD/lowcoder-stacks/ssl directory.

  2. Change the ports in the deployment command to 3443:3443, as shown below:

docker run -d --name lowcoder -p 3443:3443 -v "$PWD/stacks:/lowcoder-stacks" lowcoderorg/lowcoder-ce

In cases where you have certificates with names: server.crt and server.key, you need to rename them first as follows: server.crt => fullchain.pem server.key => privkey.pem

6) Configure the Environment

ENV Variables for Helm, Docker Compose, and Docker installations are to find in the most current version on our Github Repository.

ENV Variables for the all-in-one image

This image contains all services needed to run Lowcoder platform in one container.

Environment variable
Description
Default-Value

LOWCODER_REDIS_ENABLED

If true redis server is started in the container

true

LOWCODER_MONGODB_ENABLED

If true mongo database is started in the container

true

LOWCODER_MONGODB_EXPOSED

If true mongo database accept connections from outside the docker

false

LOWCODER_API_SERVICE_ENABLED

If true lowcoder api-service is started in the container

true

LOWCODER_NODE_SERVICE_ENABLED

If true lowcoder node-service is started in the container

true

LOWCODER_FRONTEND_ENABLED

If true lowcoder web frontend is started in the container

true

LOWCODER_PUID

ID of user running services. It will own all created logs and data.

9001

LOWCODER_PGID

ID of group of the user running services.

9001

LOWCODER_MONGODB_URL

Mongo database connection string

mongodb://localhost:27017/lowcoder?authSource=admin

LOWCODER_REDIS_URL

Redis server URL

redis://localhost:6379

LOWCODER_DB_ENCRYPTION_PASSWORD

Encryption password

lowcoder.org

LOWCODER_DB_ENCRYPTION_SALT

Salt used for encrypting password

lowcoder.org

LOWCODER_CORS_DOMAINS

CORS allowed domains

*

LOWCODER_PUBLIC_URL

The URL of the public User Interface

localhost:3000

LOWCODER_MAX_REQUEST_SIZE

Lowcoder max request size

20m

LOWCODER_MAX_QUERY_TIMEOUT

Lowcoder max query timeout (in seconds)

120

LOWCODER_DEFAULT_QUERY_TIMEOUT

Lowcoder default query timeout (in seconds)

10

LOWCODER_API_RATE_LIMIT

Number of max Request per Second

100

LOWCODER_API_SERVICE_URL

Lowcoder API service URL

http://localhost:8080

LOWCODER_NODE_SERVICE_URL

Lowcoder Node service (js executor) URL

http://localhost:6060

LOWCODER_MAX_ORGS_PER_USER

Default maximum organizations per user

100

LOWCODER_MAX_MEMBERS_PER_ORG

Default maximum members per organization

1000

LOWCODER_MAX_GROUPS_PER_ORG

Default maximum groups per organization

100

LOWCODER_MAX_APPS_PER_ORG

Default maximum applications per organization

1000

LOWCODER_MAX_DEVELOPERS

Default maximum developers

100

LOWCODER_WORKSPACE_MODE

SAAS to activate, ENTERPRISE to switch off - Workspaces

SAAS

LOWCODER_EMAIL_SIGNUP_ENABLED

Control if users create their own Workspace automatic when Sign Up

true

LOWCODER_CREATE_WORKSPACE_ON_SIGNUP

IF LOWCODER_WORKSPACE_MODE = SAAS, controls if a own workspace is created for the user after sign up

true

LOWCODER_MARKETPLACE_PRIVATE_MODE

Control if not to show Apps on the local Marketplace to anonymous users

true

LOWCODER_SUPERUSER_USERNAME

Username of the Super-User of an Lowcoder Installation

admin@localhost

LOWCODER_SUPERUSER_PASSWORD

Password of the Super-User, if not present or empty, it will be generated

`generated and printed into log file

API Key Secret

Also, you should set the API-KEY secret, whcih should be a string of at least 32 random characters On linux/mac, generate one eg. with: head /dev/urandom | head -c 30 | shasum -a 256

Environment variable
Description
Default-Value

LOWCODER_API_KEY_SECRET

String to encrypt/sign API Keys that users may create

SMTP Server

To enable secure Password Reset flow for the users, you need to configure your own SMTP Server. You can do this with the following Variables (from Lowcoder v2.4.x on):

Environment Variable
Description
Default Value

LOWCODER_ADMIN_SMTP_HOST

SMTP Hostname of your Mail Relay Server

LOWCODER_ADMIN_SMTP_PORT

Port number for the SMTP service

587

LOWCODER_ADMIN_SMTP_USERNAME

Username for SMTP authentication

LOWCODER_ADMIN_SMTP_PASSWORD

Password for SMTP authentication

LOWCODER_ADMIN_SMTP_AUTH

Enable SMTP authentication

true

LOWCODER_ADMIN_SMTP_SSL_ENABLED

Enable SSL encryption

false

LOWCODER_ADMIN_SMTP_STARTTLS_ENABLED

Enable STARTTLS encryption

true

LOWCODER_ADMIN_SMTP_STARTTLS_REQUIRED

Require STARTTLS encryption

true

LOWCODER_LOST_PASSWORD_EMAIL_SENDER

"from" Email address of the password Reset Email Sender

service@lowcoder.cloud

ENV Variables for the api-service image

Environment variable
Description
Default-Value

LOWCODER_PUID

ID of user running services. It will own all created logs and data.

9001

LOWCODER_PGID

ID of group of the user running services.

9001

LOWCODER_MONGODB_URL

Mongo database connection string

mongodb://localhost:27017/lowcoder?authSource=admin

LOWCODER_REDIS_URL

Redis server URL

redis://localhost:6379

LOWCODER_DB_ENCRYPTION_PASSWORD

Encryption password

lowcoder.org

LOWCODER_DB_ENCRYPTION_SALT

Salt used for encrypting password

lowcoder.org

LOWCODER_CORS_DOMAINS

CORS allowed domains

*

LOWCODER_PUBLIC_URL

The URL of the public User Interface

localhost:3000

LOWCODER_MAX_ORGS_PER_USER

Default maximum organizations per user

100

LOWCODER_MAX_MEMBERS_PER_ORG

Default maximum members per organization

1000

LOWCODER_MAX_GROUPS_PER_ORG

Default maximum groups per organization

100

LOWCODER_MAX_APPS_PER_ORG

Default maximum applications per organization

1000

LOWCODER_MAX_DEVELOPERS

Default maximum developers

100

LOWCODER_MAX_REQUEST_SIZE

Lowcoder max request size

20m

LOWCODER_MAX_QUERY_TIMEOUT

Lowcoder max query timeout (in seconds)

120

LOWCODER_DEFAULT_QUERY_TIMEOUT

Lowcoder default query timeout (in seconds)

10

LOWCODER_WORKSPACE_MODE

SAAS to activate, ENTERPRISE to switch off - Workspaces

SAAS

LOWCODER_EMAIL_SIGNUP_ENABLED

Control is users can create their own Workspace when Sign Up

true

LOWCODER_CREATE_WORKSPACE_ON_SIGNUP

IF LOWCODER_WORKSPACE_MODE = SAAS, controls if a own workspace is created for the user after sign up

true

LOWCODER_MARKETPLACE_PRIVATE_MODE

Control if not to show Apps on the local Marketplace to anonymous users

true

LOWCODER_SUPERUSER_USERNAME

Username of the Super-User of an Lowcoder Installation

admin@localhost

LOWCODER_SUPERUSER_PASSWORD

Password of the Super-User, if not present or empty, it will be generated

`generated and printed into log file

API Key Secret

Also, you should set the API-KEY secret, whcih should be a string of at least 32 random characters On linux/mac, generate one eg. with: head /dev/urandom | head -c 30 | shasum -a 256

Environment variable
Description
Default-Value

LOWCODER_API_KEY_SECRET

String to encrypt/sign API Keys that users may create

SMTP Server

To enable secure Password Reset flow for the users, you need to configure your own SMTP Server. You can do this with the following Variables (from Lowcoder v2.4.x on):

Environment Variable
Description
Default Value

LOWCODER_ADMIN_SMTP_HOST

SMTP Hostname of your Mail Relay Server

LOWCODER_ADMIN_SMTP_PORT

Port number for the SMTP service

587

LOWCODER_ADMIN_SMTP_USERNAME

Username for SMTP authentication

LOWCODER_ADMIN_SMTP_PASSWORD

Password for SMTP authentication

LOWCODER_ADMIN_SMTP_AUTH

Enable SMTP authentication

true

LOWCODER_ADMIN_SMTP_SSL_ENABLED

Enable SSL encryption

false

LOWCODER_ADMIN_SMTP_STARTTLS_ENABLED

Enable STARTTLS encryption

true

LOWCODER_ADMIN_SMTP_STARTTLS_REQUIRED

Require STARTTLS encryption

true

LOWCODER_LOST_PASSWORD_EMAIL_SENDER

"from" Email address of the password Reset Email Sender

service@lowcoder.cloud

ENV Variables for the node-service image

Environment variable
Description
Default-Value

LOWCODER_PUID

ID of user running services. It will own all created logs and data.

9001

LOWCODER_PGID

ID of group of the user running services.

9001

LOWCODER_API_SERVICE_URL

Lowcoder API service URL

http://localhost:8080

ENV Variables for the web frontend image

Environment variable
Description
Default-Value

LOWCODER_PUID

ID of user running services. It will own all created logs and data.

9001

LOWCODER_PGID

ID of group of the user running services.

9001

LOWCODER_MAX_QUERY_TIMEOUT

Lowcoder max query timeout (in seconds)

120

LOWCODER_MAX_REQUEST_SIZE

Lowcoder max request size

20m

LOWCODER_API_SERVICE_URL

Lowcoder API service URL

http://localhost:8080

LOWCODER_NODE_SERVICE_URL

Lowcoder Node service (js executor) URL

http://localhost:6060

Health checks

The API Service has an included health check endpoint from v2.4.1 on.

You can check the health of the running API Service and it's connected MongoDB & Redis by the following HTTP Call:

```
GET /api/status/health HTTP/1.1
```

In response, you will get a 200 Status code if the service is up and running and a JSON like this:

{
    "status": "UP",
    "components": {
        "mongo": {
            "status": "UP",
            "components": {
                "reactiveMongoSlaveTemplate": {
                    "status": "UP"
                },
                "reactiveMongoTemplate": {
                    "status": "UP"
                }
            }
        },
        "ping": {
            "status": "UP"
        },
        "redis": {
            "status": "UP"
        }
    }
}

(version 20.10.7 or above)

(version 1.29.2 or above)

Download the configuration file by clicking or running the curl command:

Visit and click Sign up. Lowcoder will automatically create a workspace for you, then you can start building your apps and invite members to your workspace.

For bigger expected loads that need scaling in a cluster environment, we provide with a customizable Dockerfile.

(version 1.29.2 or above)

Download the configuration file by clicking or running the curl command:

Visit and click Sign up. Lowcoder will automatically create a workspace for you, then you can start building your apps and invite members to your workspace.

Please also have a look at this

For more information about configurations and environment variables, see .

🆕
Docker
Docker-Compose
docker-compose.yml
http://localhost:3000
separate images of backend and frontend services
Docker-Compose
docker-compose-multi.yml
http://localhost:3000
migration / update guide
Configuration
Single Docker Image
Docker Compose
HELM Charts
Heroku based deployment
Google Cloud Platform
Raspberry Pi
all-in-one image
Multi-Image Installation to scale. API-Service & Node-Service can get scaled independently.