Self-hosting
Last updated
Last updated
© Lowcoder Software LTD
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:
Single Docker Image to run with a single line of command.
Multi-Docker Image deployment for scaling scenarios with Docker Compose
Kubernetes-based deployment with HELM Charts.
For easy setup and deployment, we provide an all-in-one image that bundles frontend, backend, and data persistence services altogether in one single container.
Docker (version 20.10.7 or above)
Docker-Compose (version 1.29.2 or above)
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:
Follow the steps below:
Download the configuration file by clicking docker-compose.yml or running the curl command:
Start the Docker container by running this command:
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.
Check the logs by running this command:
When you see frontend
, backend
, redis
, and mongo
entered the RUNNING state
, the Lowcoder service has officially started:
Visit http://localhost:3000 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.
Run the following commands to update to the latest Lowcoder image:
For bigger expected loads that need scaling in a cluster environment, we provide separate images of backend and frontend services with a customizable Dockerfile.
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.
Docker-Compose (version 1.29.2 or above)
In your working directory, run the following commands to make a directory named lowcoder
to store the data of Lowcoder:
Download the configuration file by clicking docker-compose-multi.yml or running the curl command:
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.
Start Docker containers by running this command:
Visit http://localhost:3000 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.
Run the following commands to update services to the latest in a Docker Compose installation:
Please also have a look at this migration / update guide
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:
It picks up configuration changes by stopping containers already in service and recreating new ones.
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.
For more information about configurations and environment variables, see Configuration.
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.
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.
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:
Copy fullchain.pem
and privkey.pem
to the $PWD/lowcoder-stacks/ssl
directory.
In $PWD/docker-compose.yml
, change the value of ports
to "3443:3443"
.
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
ENV Variables for Helm, Docker Compose, and Docker installations are to find in the most current version on our Github Repository.
This image contains all services needed to run Lowcoder platform in one container.
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
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
LOWCODER_API_KEY_SECRET
String to encrypt/sign API Keys that users may create
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):
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
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
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
LOWCODER_API_KEY_SECRET
String to encrypt/sign API Keys that users may create
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):
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
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
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
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:
In response, you will get a 200 Status code if the service is up and running and a JSON like this: