Skip to content

You are viewing documentation for Instruqt 2.0 Labs which is in Beta currently. Official release date - 29 September, 2026. For Tracks documentation, please visit docs.instruqt.com.

Step 2 - Infrastructure Setup


Now that your project structure is in place, it’s time to define the infrastructure for your lab. In this step, you’ll create the containers and networking that form the foundation of your learning environment. You’ll also set up the user interface elements - a terminal for command-line access and a service tab to view the web server.

When you create the lab, you get redirected to the lab overview page. It shows you the lab’s title of your current version (you can see the selected version at the top. It should show Branch: main).

For more information on the lab overview page, see the Lab Overview documentation.

Let’s start by navigating to the Sandbox tab in the top bar. At first, you won’t have any options, since no infrastructure exists yet. The first step is to enter Edit mode by clicking the purple Edit mode button at the top.

This creates a separate copy of main for you to work in. Any changes you make here are isolated and won’t affect the main version until you save them.

After entering edit mode, a + button appears in the Sandbox tab. We’ll begin by creating a Network resource:

Let’s give it a name and a subnet:

  • Name: main
  • Subnet: 10.0.200.0/24

And click Add changes.

This adds the network resource to your environment. You can now see it listed in the Sandbox tab.

For additional details on creating networks, refer to the Network documentation.

If you want to see the code this generated, open the More actions menu (the icon next to Publish) and choose Review changes. It shows the network resource as a file diff, read-only, so you can check what you’re about to publish. Click the back arrow icon at the top to return to edit mode and keep going.

For the full lifecycle of adding, reviewing, and publishing changes, see Editing & Publishing.

Next, create the web server container. Click the + button again in the Sandbox tab and choose Container.

The container form is organized into collapsible sections. The Image and Resources sections are expanded by default, while other sections are collapsed. For this lab, you only need to configure a few:

  • Name: webserver
  • Image: The Image section is already expanded. Select Add a new public or private image on GCP and enter:
    • nginx:1.25
  • Port: Expand the Ports section and click Add port, then set:
    • Local (local port on the host machine): 80
    • You can also set Host as port inside the container. If the host port is not set, the same value as the container local port will be used
  • Network: Expand the Network section and click Add network, then select the network you created earlier (main).

Leave the other options as default. When finished, click Add changes.

This adds the container resource to your environment. It now appears in the Sandbox tab alongside the network.

For additional details on creating containers, refer to the Container documentation.

Now you need to create the interface that learners will actually see and use. This includes a service tab (so they can view the web server in their browser) and a terminal tab (so they can run commands on the server). These UI elements connect to the infrastructure you just created:

  • The service tab exposes the container’s web server
  • The terminal gives command-line access to the same container.

Let’s move to the Tabs tab so we can create these interface elements.

Click the + button in the Tabs tab and choose Service/Web Application.

Let’s configure the service tab:

  • Name: webserver
  • Target: Select the container you created earlier (webserver).
  • Scheme: http
  • Port: 80

When finished, click Add changes.

For additional details on creating service tabs, refer to the Creating Tabs documentation.

Let’s also create the terminal tab now. Click the + button again in the Tabs tab and choose Terminal.

Configure the terminal tab as follows:

  • Name: shell
  • Target: Select the container you created earlier (webserver).
  • Shell: /bin/bash

When finished, click Add changes.

For additional details on creating terminal tabs, refer to the Creating Tabs documentation.

Now that you’ve created the network, container, service tab, and terminal tab, it’s time to publish your changes. Each of those pages needed its own Add changes click, but nothing is saved to the lab until you publish.

If you want to see everything you’ve added in one place first, open the More actions menu and choose Review changes. It lists every changed file as a diff, read-only, so you can double check what you’re about to publish.

Click Publish in the top bar to open the Save changes dialog. Choose Save to this branch to merge directly into main, or Save to new branch… if you’d rather keep main unchanged for now. Let’s just save to main for this guide. Add a changes title (required) and, if you like, a description of what you did, then click Save changes to commit.

For the full breakdown of edit mode, adding changes, reviewing, and publishing, see Editing & Publishing.

You’ve successfully created the infrastructure foundation for your lab:

  • Network infrastructure that provides isolated networking for your lab environment
  • Container infrastructure running nginx web server that learners will customize
  • User interface elements including terminal access and web service viewing

Your lab now has a complete infrastructure setup that learners can interact with. The next step is to make it truly interactive by adding educational content and validation tasks.

In the next step, you’ll create interactive content and tasks that guide learners through hands-on activities while automatically validating their progress.