Announcing DoltLab on Podman

FEATURE RELEASE
5 min read

In the last few weeks we’ve had customers ask for the ability to run DoltLab with Podman instead of Docker. For those who don’t know, Podman is an open-source container engine for managing containers, pods, and images. It is also compatible with OCI-compliant container formats, including Docker, which allows Podman users to run Docker images and Docker Compose files.

Since DoltLab runs via Docker Compose and Docker Swarm, it made sense that it should also be deployable via Podman for teams that prefer that runtime.

Today we’re excited to announce that DoltLab v2.4.7 includes official Podman deployment support. This post covers how to get started running DoltLab with Podman.

Prerequisites#

Preparing for a Podman deployment of DoltLab is identical to preparing for a standard DoltLab deployment. You’ll need a host with sufficient memory and disk, and you’ll need to make sure the required ports are open on the host: 80, 50051, and 4321. For our example deployment, I’ll be choosing a t2.large AWS EC2 host, assigning it a public IP address, and configuring the security group to allow ingress on these three ports.

Installation#

Once the host is online, SSH into it and install the unzip utility if it’s not already installed, then download the latest DoltLab release. This can be done with curl.

Next, unzip the DoltLab zip file and cd into the resulting directory. To install all the dependencies DoltLab needs, use the included installer binary with the --ubuntu flag to generate an installation script you can run to quickly install dependencies, including Podman (and podman compose/podman-compose) as well as Docker and Docker Compose. I recommend using this script to install DoltLab’s dependencies.

ubuntu@ip-10-2-2-158:~$ sudo apt update -y && sudo apt install unzip -y
...
ubuntu@ip-10-2-2-158:~$ curl -LO https://doltlab-releases.s3.us-east-1.amazonaws.com/linux/amd64/doltlab-v2.4.7.zip
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 27.1M  100 27.1M    0     0  28.3M      0 --:--:-- --:--:-- --:--:-- 28.3M
ubuntu@ip-10-2-2-158:~$ unzip doltlab-v2.4.7.zip -d doltlab
Archive:  doltlab-v2.4.7.zip
  inflating: doltlab/installer
  inflating: doltlab/smtp_connection_helper
  inflating: doltlab/installer_config.yaml
ubuntu@ip-10-2-2-158:~$ cd doltlab
ubuntu@ip-10-2-2-158:~/doltlab$ ./installer --ubuntu
2025-10-31T17:23:49.370Z        INFO    metrics/emitter.go:111  Successfully sent DoltLab usage metrics

2025-10-31T17:23:49.370Z        INFO    cmd/main.go:711 To install DoltLab's dependencies, use this script      {"script": "/home/ubuntu/doltlab/ubuntu_install.sh"}

ubuntu@ip-10-2-2-158:~/doltlab$ ./ubuntu_install.sh

After executing the installation script, you’re ready to configure your host and DoltLab instance.

Configuration#

With Podman, your host may not allow you to bind to privileged port 80 by default, even if it’s open in your security group. For example, you may see this error:

Error response from daemon: rootlessport cannot expose privileged port 80, you can add 'net.ipv4.ip_unprivileged_port_start=80' to /etc/sysctl.conf (currently 1024), or choose a larger port number (>= 1024): listen tcp 0.0.0.0:80: bind: permission denied

To avoid this error, edit /etc/sysctl.conf and add the line net.ipv4.ip_unprivileged_port_start=80. Then save and reload the config with:

ubuntu@ip-10-2-2-158:~/doltlab$ sudo sysctl -p
net.ipv4.ip_unprivileged_port_start = 80

Next, start the Podman API service on the host so podman compose (or podman-compose) can run DoltLab’s generated Compose file. You can run it in the background or manage it with systemd; for this example we’ll start it in the background:

ubuntu@ip-10-2-2-158:~/doltlab$ podman system service -t 0 &
[1] 6285

Now configure the DoltLab instance using the installer_config.yaml file. At the top of the file there’s a new runtime field with a default value of docker. Change this to podman so the installer generates Podman-specific assets. Since this is an example deloyment, I’ll set runtime and the required host value and leave the rest at defaults. For production, be sure to change the default passwords in the configuration file.

# installer_config.yaml

version: "v2.4.7"
runtime: podman 

host: "54.163.222.146"
...

After saving these edits, run the installer binary to generate the Podman assets.

ubuntu@ip-10-2-2-158:~/doltlab$ ./installer
2025-10-31T17:49:24.227Z        INFO    cmd/main.go:728 Successfully configured DoltLab core    {"version": "v2.4.7"}

2025-10-31T17:49:24.227Z        INFO    cmd/main.go:735 To start DoltLab, use:  {"script": "/home/ubuntu/doltlab/start.sh"}
2025-10-31T17:49:24.227Z        INFO    cmd/main.go:740 To stop DoltLab, use:   {"script": "/home/ubuntu/doltlab/stop.sh"}

Deploy#

After running the installer, you’ll have start.sh and stop.sh scripts to start and stop your instance. To start DoltLab, run ./start.sh. Podman will pull DoltLab’s service images and start them. You can then use Podman CLI commands to interact with and monitor your DoltLab deployment.

ubuntu@ip-10-2-2-158:~/doltlab$ podman ps
CONTAINER ID  IMAGE                                             COMMAND               CREATED        STATUS        PORTS                                                                                                                 NAMES
37011cd73334  quay.io/doltlab/dolthub-server:v2.4.7             npm start             7 seconds ago  Up 7 seconds                                                                                                                        doltlab-doltlabui-1
177498d3766c  quay.io/doltlab/dolthubapi-server:v2.4.7          -doltlab -outboun...  7 seconds ago  Up 7 seconds                                                                                                                        doltlab-doltlabapi-1
995d6899baf1  quay.io/doltlab/dolt-sql-server:v2.4.7            -l debug              7 seconds ago  Up 7 seconds                                                                                                                        doltlab-doltlabdb-1
98fd80840e90  quay.io/doltlab/fileserviceapi-server:v2.4.7      -outboundInternal...  7 seconds ago  Up 7 seconds                                                                                                                        doltlab-doltlabfileserviceapi-1
0169a7523499  docker.io/envoyproxy/envoy:v1.33-latest           -c /envoy.json        7 seconds ago  Up 7 seconds  0.0.0.0:80->80/tcp, 0.0.0.0:2001->2001/tcp, 0.0.0.0:4321->4321/tcp, 0.0.0.0:7770->7770/tcp, 0.0.0.0:50051->50051/tcp  doltlab-doltlabenvoy-1
9c28ae667569  quay.io/doltlab/dolthubapi-graphql-server:v2.4.7  npm start             7 seconds ago  Up 8 seconds                                                                                                                        doltlab-doltlabgraphql-1
d50ff4de2ef6  quay.io/doltlab/doltremoteapi-server:v2.4.7       -http-port 100 -o...  7 seconds ago  Up 8 seconds                                                                                                                        doltlab-doltlabremoteapi-1

Conclusion#

We’re always excited when customers tell us how they’re using DoltLab and what features or tooling they’d like to see supported. Come by our Discord — we’d love to chat with you!

JOIN THE DATA EVOLUTION

Get started with Dolt

Or join our mailing list to get product updates.