---
title: "Web Server Using Compute Engine"
description: "Basic example of an Google Cloud web server accessible over HTTP"
url: "https://www.pulumi.com/dev/examples/gcp-go-webserver/"
image: "https://www.pulumi.com/assets/og/dev/examples/gcp-go-webserver.png"
---

# Web Server Using Compute Engine

Basic example of an Google Cloud web server accessible over HTTP

- Source on GitHub: https://github.com/pulumi/examples/tree/master/gcp-go-webserver
- Deploy with Pulumi: https://app.pulumi.com/new?template=https%3A%2F%2Fgithub.com%2Fpulumi%2Fexamples%2Ftree%2Fmaster%2Fgcp-go-webserver

## Get started with this example

This example lives in the [pulumi/examples](https://github.com/pulumi/examples/tree/master/gcp-go-webserver) repo. Pull down just this directory to follow along:

```bash
git clone --filter=blob:none --sparse https://github.com/pulumi/examples pulumi-examples
git -C pulumi-examples sparse-checkout set gcp-go-webserver
cd pulumi-examples/gcp-go-webserver
```

Starting point for building the Pulumi web server sample in Google Cloud.

This example deploys a Google Compute Engine virtual machine — together with a network and firewall rule that allows SSH and HTTP access — and runs a simple HTTP server on it that responds with `Hello, World!`.

## Running the App

1.  Create a new stack:

    ```
    $ pulumi stack init webserver-gcp-testing
    ```

1.  Configure the project:

    ```
    $ pulumi config set gcp:project YOURGOOGLECLOUDPROJECT
    $ pulumi config set gcp:zone us-central1-a
    ```

1.  Restore NPM dependencies:

    ```
    $ npm install
    ```

1.  Run `pulumi up` to preview and deploy changes:

    ```
    $ pulumi up
    Previewing changes:
    ...

    Performing changes:

        Type                     Name                                 Status      Info
    +   pulumi:pulumi:Stack      webserver-gcp-webserver-gcp-testing  created
    +   ├─ gcp:compute:Network   network                              created
    +   ├─ gcp:compute:Firewall  firewall                             created
    +   └─ gcp:compute:Instance  instance                             created

    ---outputs:---
    instanceIP  : "35.185.200.158"
    instanceName: "instance-af7e53b"

    info: 4 changes performed:
        + 4 resources created
    Update duration: 1m23s
    ```

1.  Curl the HTTP server:

    ```
    $ curl $(pulumi stack output instanceIP)
    Hello, World!
    ```

1.  SSH into the server:

    ```
    $ gcloud compute ssh $(pulumi stack output instanceName)
    Warning: Permanently added 'compute.4281826686797606751' (ECDSA) to the list of known hosts.

    The programs included with the Debian GNU/Linux system are free software;
    the exact distribution terms for each program are described in the
    individual files in /usr/share/doc/*/copyright.

    Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
    permitted by applicable law.
    albert@instance-af7e53b:~$
    ```

1. Cleanup

    ```
    $ pulumi destroy
    $ pulumi stack rm
    ```
