Self-hosting
In this article, you will be guided through hosting Openblocks on your own server using Docker-Compose or Docker.
For easy setup and deployment, we provide an all-in-one image which bundles frontend, backend and data persistence services altogether in one single container.
Also, for developers in need of stateless containers in cluster environment, we provide separate images of backend and frontend services with a customizable Dockerfile.
Recommended system spec: 1-core CPU and 2 GB RAM.
Windows users are recommended to use PowerShell for running commands below.
In your working directory, run the following commands to make a directory named
openblocks
to store the data of Openblocks:mkdir openblocks
cd openblocks
Docker-Compose (Recommend)
Docker
Follow the steps below:
- 1.curl https://cdn-files.openblocks.dev/docker-compose.yml -o $PWD/docker-compose.yml
- 2.Start the Docker container by running this command:docker-compose up -dThe 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.
- 3.Check the logs by running this command:docker logs -f openblocksWhen you see
frontend
,backend
,redis
, andmongo
entered the RUNNING state
, the Openblocks service has officially started: - 4.Visit http://localhost:3000 and click Sign up. Openblocks will automatically create a workspace for you, then you can start building your apps and invite members to your workspace.
Run the command below:
docker run -d --name openblocks -p 3000:3000 -v "$PWD/stacks:/openblocks-stacks" openblocksdev/openblocks-ce
Docker-Compose
Docker
Run the following commands to update to the latest Openblocks image:
docker-compose pull
docker-compose rm -fsv openblocks
docker-compose up -d
Run the following commands to update to the latest Openblocks image:
docker pull openblocksdev/openblocks-ce
docker rm -fv openblocks
docker run -d --name openblocks -p 3000:3000 -v "$PWD/stacks:/openblocks-stacks" openblocksdev/openblocks-ce
For developers who require stateless containers in a cluster environment, we offer separate images of backend and frontend service with a customizable Dockerfile. A well-functioning Openblocks 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.
- 1.In your working directory, run the following commands to make a directory named
openblocks
to store the data of Openblocks:mkdir openblockscd openblocks - 2.curl https://cdn-files.openblocks.dev/docker-compose-multi.yml -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 openblocks-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 openblocks-api-service to use your own Redis. - openblocks-api-service: Required.
- openblocks-node-service: Required.
- openblocks-frontend: Required. Can be optional if you deploy frontend on CDN.
- 4.Start Docker containers by running this command:docker-compose -f docker-compose-multi.yml up -d
- 5.Visit http://localhost:3000 and click Sign up. Openblocks 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:
docker-compose -f docker-compose-multi.yml pull
docker-compose -f docker-compose-multi.yml up -d
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:
Docker-Compose (Recommend)
Docker
One single command:
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 openblocks
docker rm openblocks
# run your new docker run command
Below are examples of configuring all-in-one image by setting environment variables in
docker-compose.yml
. If you are self-hosting with separate images, modify openblocks-api-service
part of docker-compose-multi.yml
instead. By default Openblocks uses the built-in MongoDB and Redis installed inside the container, and you can replace them with your own MongoDB and Redis clusters.
Docker-Compose
Docker
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 openblocks -e MONGODB_URI=YOUR_MONGODB_URI REDIS_URI=YOUR_REDIS_URI -p 3000:3000 -v "$PWD/stacks:/openblocks-stacks openblocksdev/openblocks-ce
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 Number, such as 10010
.Docker-Compose
Docker
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 openblocks -e LOCAL_USER_ID=10010 -p 3000:3000 -v "$PWD/stacks:/openblocks-stacks" openblocksdev/openblocks-ce
With an SSL certificate, you can securely visit self-hosted Openblocks with HTTPS protocol. Here are the steps to install your SSL certificate before starting a container:
Docker-Compose
Docker
- 1.Copy
fullchain.pem
andprivkey.pem
to the$PWD/stacks/ssl
directory. - 2.In
$PWD/docker-compose.yml
, change the value ofports
to"3443:3443"
.
- 1.Copy
fullchain.pem
andprivkey.pem
to the$PWD/stacks/ssl
directory. - 2.Change the
ports
in the deployment command to3443:3443
, as shown below:
docker run -d --name openblocks -p 3443:3443 -v "$PWD/stacks:/openblocks-stacks" openblocksdev/openblocks-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
Last modified 2mo ago