api-server start#
Description#
The start
sub-command under the tools api-server
command creates and starts a container that runs the Containerlab API server. The API server provides a RESTful HTTP interface for managing Containerlab operations programmatically, including lab deployment, node management, and configuration tasks.
The API server is particularly useful for:
- Automating lab deployments and management
- Integrating Containerlab with other systems and workflows
- Providing a web-based interface for lab management
- Managing multiple labs programmatically
- Implementing custom lab automation solutions
Usage#
Flags#
--port | -p#
Port to expose the API server on. Defaults to 8080
.
--host#
Host address for the API server. Defaults to localhost
.
--image | -i#
Container image to use for the API server. Defaults to ghcr.io/srl-labs/clab-api-server/clab-api-server:latest
.
--log-level#
Log level for the API server. Options: debug
(default), info
, warn
, error
.
--name | -n#
Name of the API server container. Defaults to clab-api-server
.
--tls-enable#
Enable TLS for the API server. Defaults to false
.
--tls-cert#
Path to TLS certificate file (required if TLS is enabled).
--tls-key#
Path to TLS key file (required if TLS is enabled).
--ssh-base-port#
SSH proxy base port. Defaults to 2223
.
--ssh-max-port#
SSH proxy maximum port. Defaults to 2322
.
--runtime | -r#
Runtime to use for Containerlab operations inside the API server. Options are docker
(default) or podman
(WIP).
--jwt-secret#
JWT secret key for authentication. If not provided, a random secret will be generated automatically.
--jwt-expiration#
JWT token expiration time. Defaults to 60m
.
--user-group#
User group for API access. Defaults to clab_api
.
--superuser-group#
Superuser group name for administrative access. Defaults to clab_admins
.
--gin-mode#
Gin framework mode. Options: debug
, release
(default), test
.
--trusted-proxies#
Comma-separated list of trusted proxies for the API server.
--owner | -o#
Owner name for the API server container. If not provided, it will be determined from environment variables (SUDO_USER or USER).
--labs-dir | -l#
Directory to mount as shared labs directory where lab files will be stored.
Examples#
Start an API server with default settings:
❯ containerlab tools api-server start
10:28:35 INFO Generated random JWT secret for API server
10:28:35 INFO Pulling image ghcr.io/srl-labs/clab-api-server/clab-api-server:latest...
10:28:35 INFO Creating API server container clab-api-server
10:28:35 INFO Creating container name=clab-api-server
10:28:36 INFO API server container clab-api-server started successfully.
10:28:36 INFO API Server available at: http://localhost:8080
Start with custom port and labs directory:
❯ containerlab tools api-server start -p 9090 -l /home/user/containerlab/labs
11:40:03 INFO Pulling image ghcr.io/srl-labs/clab-api-server/clab-api-server:latest...
11:40:03 INFO Generated random JWT secret for API server
11:40:03 INFO Creating API server container clab-api-server
11:40:03 INFO API server container clab-api-server started successfully.
11:40:03 INFO API Server available at: http://localhost:9090
Start with TLS enabled:
❯ containerlab tools api-server start --tls-enable --tls-cert /path/to/cert.pem --tls-key /path/to/key.pem
11:40:03 INFO Pulling image ghcr.io/srl-labs/clab-api-server/clab-api-server:latest...
11:40:03 INFO Generated random JWT secret for API server
11:40:03 INFO Creating API server container clab-api-server
11:40:03 INFO API server container clab-api-server started successfully.
11:40:03 INFO API Server available at: http://localhost:8080
11:40:03 INFO API Server TLS enabled at: https://localhost:8080
Start with custom name and owner:
❯ containerlab tools api-server start --name prod-api-server --owner alice
11:40:03 INFO Pulling image ghcr.io/srl-labs/clab-api-server/clab-api-server:latest...
11:40:03 INFO Generated random JWT secret for API server
11:40:03 INFO Creating API server container prod-api-server
11:40:03 INFO API server container prod-api-server started successfully.
11:40:03 INFO API Server available at: http://localhost:8080
Start with custom JWT settings and user groups:
❯ containerlab tools api-server start --jwt-secret my-secret-key --jwt-expiration 120m --user-group developers --superuser-group admins
11:40:03 INFO Pulling image ghcr.io/srl-labs/clab-api-server/clab-api-server:latest...
11:40:03 INFO Creating API server container clab-api-server
11:40:03 INFO API server container clab-api-server started successfully.
11:40:03 INFO API Server available at: http://localhost:8080
The API server container is started with host network mode and various bind mounts that provide access to: - Docker socket for container management - Network namespaces for network operations - User and group information for authentication - Containerlab binary for lab operations
When started successfully, the API server will be available at the specified host and port, ready to handle Containerlab API requests.