Get started

When a Quick Deploy App is deployed, a new Linode instance is created and the appropriate software is installed with the settings you provide.

Quick Deploy Apps don't install software on existing instances in your account.

📘

Akamai currently doesn’t manage software and system updates for Quick Deploy Apps. It’s up to you to perform routine maintenance on deployed software.

1. Deploy an app

Choose the deployment method that best fits your workflow. Use the Cloud Manager UI for a guided experience, or developer tools like the Linode API, CLI, or Terraform for automation.

In Cloud Manager

  1. Navigate to Quick Deploy Apps in Akamai's Cloud Manager portal.

  2. Under the Select an App section, select the app from the list or use the search bar to find the app you want to deploy.

    Click the info icon (i) next to the app name to open its details panel. Within the panel, there is also a link to the corresponding guide where you can learn how to deploy and access a given app.

  3. Complete the form to configure the app, following the steps within the Creating a Linode guide.

    Depending on the app, you may need to fill out additional options. See the guide that corresponds with your selected app for compatible distributions, recommended plans, and any additional configuration options.

    🚧

    Don't use the double quotation character (") within any of the form fields, including user and database password. This special character may cause issues during deployment.

  4. Click the Create Linode button to create an instance.

  5. Wait for the software installation to complete once the instance has been fully provisioned.

    Deploying an app can take about 5–10 minutes. If the instance is powered off or restarted before this time, the software installation will likely fail.

With Linode API, CLI, or Terraform

All Quick Deploy Apps are public StackScripts. StackScripts marked with the linode username indicate that we created them and officially maintain them. When querying StackScripts via the API, CLI, or Terraform, you can also identify Quick Deploy Apps by a label value that includes One-Click, for example, Docker One-Click.

Note: Generate a personal access token to authenticate your API, CLI, or Terraform requests.

  1. To deploy a Quick Deploy App via API, CLI, or Terraform, you need to identify its StackScript id. Depending on the tool, use the following:

    • API. Run the List StackScripts operation with the X-Filter header to filter the results by specific StackScript field values, like label and username. Optionally, pipe the operation to the jq command-line tool to format the JSON output.

      curl --location 'https://api.linode.com/v4/linode/stackscripts' \
         --header 'Accept: application/json' \
         --header 'X-Filter: {"label": {"+contains": "Docker One-Click"}, "username": "linode"}' \
         --header 'Authorization: Bearer abc123def456hij789klm' | jq
      {
         "data": [
            {
               "id": 607433,
               "username": "linode",
               "user_gravatar_id": "1abc23d45ef67gh8ij9k012lmn34o56",
               "label": "Docker One-Click",
               "description": "Docker One Click App",
               "ordinal": 34,
               "logo_url": "assets/docker.svg",
               "images": [
                  "linode/ubuntu24.04"
               ],
               "deployments_total": 46402,
               "deployments_active": 1469,
               "is_public": true,
               "mine": false,
               "created": "2019-10-31T20:14:04",
               "updated": "2026-05-15T08:01:10",
               "rev_note": "",
               "script": "#!/bin/bash\n# <sample removed for readability>",
               "user_defined_fields": [
                  {
                     "name": "user_name",
                     "label": "The limited sudo user to be created for the Linode: *No Capital Letters or Special Characters*"
                  },
                  {
                     "name": "disable_root",
                     "label": "Disable root access over SSH?",
                     "oneof": "Yes,No",
                     "default": "No"
                  },
                  {
                     "name": "token_password",
                     "label": "Your Linode API token. This is needed to create your server's DNS records",
                     "default": ""
                  },
                  {
                     "name": "subdomain",
                     "label": "Subdomain",
                     "example": "The subdomain for the DNS record: www (Requires Domain)",
                     "default": ""
                  },
                  {
                     "name": "domain",
                     "label": "Domain",
                     "example": "The domain for the DNS record: example.com (Requires API token)",
                     "default": ""
                  },
                  {
                     "name": "soa_email_address",
                     "label": "Email address for new DNS zone",
                     "example": "user@domain.tld (Requires API token)",
                     "default": ""
                  },
                  {
                     "name": "add_ons",
                     "label": "Optional data exporter Add-ons for your deployment",
                     "manyof": "node_exporter,mysqld_exporter,newrelic,none",
                     "default": "none"
                  }
               ]
            }
         ],
         "page": 1,
         "pages": 1,
         "results": 1
      }
    • CLI. Run the linode-cli stackscripts list command with the --label flag to search by the exact StackScript label or use a utility like grep to filter the results.

      # Search by exact app name.
      linode-cli stackscripts list --label "Docker One-Click"
      
      # Search StackScripts for apps containing "Docker One-Click" in the label.
      # Use --page to navigate through additional results pages.
      linode-cli stackscripts list --page 12 | grep "Docker One-Click"
      ┌─────────┬────────────────┬──────────────────┬────────────────────┬───────────┬───────────────────┬────────────────────┐
      │ id      │ username       │ label            │ images             │ is_public │ created           │ updated            │
      ├─────────┼────────────────┼──────────────────┼────────────────────┼───────────┼───────────────────┼────────────────────┤
      │ 607433  │ linode         │ Docker One-Click │ linode/ubuntu24.04 │ True      │ 2019-10-31T20:14… │ 2026-05-15T15:21:… │
      └─────────┴────────────────┴──────────────────┴────────────────────┴───────────┴───────────────────┴────────────────────┘
    • Terraform. Run the linode_stackscripts data source with a set of filters to narrow down your results.

      data "linode_stackscripts" "my-stackscripts" {
         filter {
            name   = "label"
            values = ["Docker One-Click"]
         }
      
         filter {
            name   = "is_public"
            values = [true]
         }
      
         filter {
            name   = "username"
            values = ["linode"]
         }
      }
      
      output "my-stackscripts" {
         value = data.linode_stackscripts.my-stackscripts
      }
      my-stackscripts = {
         filter       = [
            {
               match_by = null
               name     = "is_public"
               values   = [
                  "true",
               ]
            },
            {
               match_by = null
               name     = "label"
               values   = [
                  "Docker One-Click",
               ]
            },
            {
               match_by = null
               name     = "username"
               values   = [
                  "linode",
               ]
            },
         ]
         id           = "ABC12DEF34g5HIj67KL89mn012O3PQrD4567Su09Vw01XwZ/w=="
         latest       = null
         order        = null
         order_by     = null
         stackscripts = [
            {
               created             = "2019-10-31T20:14:04Z"
               deployments_active  = 1469
               deployments_total   = 46402
               description         = "Docker One Click App"
               id                  = "607433"
               images              = [
                  "linode/ubuntu24.04",
               ]
               is_public           = true
               label               = "Docker One-Click"
               rev_note            = ""
               script              = <<-EOT
                  #!/bin/bash
                  <sample removed for readability>
               EOT
               updated             = "2026-05-24T22:53:00Z"
               user_defined_fields = [
                  {
                     default = ""
                     example = ""
                     label   = "The limited sudo user to be created for the Linode: *No Capital Letters or Special Characters*"
                     many_of = ""
                     name    = "user_name"
                     one_of  = ""
                  },
                  {
                     default = "No"
                     example = ""
                     label   = "Disable root access over SSH?"
                     many_of = ""
                     name    = "disable_root"
                     one_of  = "Yes,No"
                  },
                  {
                     default = ""
                     example = ""
                     label   = "Your Linode API token. This is needed to create your server's DNS records"
                     many_of = ""
                     name    = "token_password"
                     one_of  = ""
                  },
                  {
                     default = ""
                     example = "The subdomain for the DNS record: www (Requires Domain)"
                     label   = "Subdomain"
                     many_of = ""
                     name    = "subdomain"
                     one_of  = ""
                  },
                  {
                     default = ""
                     example = "The domain for the DNS record: example.com (Requires API token)"
                     label   = "Domain"
                     many_of = ""
                     name    = "domain"
                     one_of  = ""
                  },
                  {
                     default = ""
                     example = "user@domain.tld (Requires API token)"
                     label   = "Email address for new DNS zone"
                     many_of = ""
                     name    = "soa_email_address"
                     one_of  = ""
                  },
                  {
                     default = "none"
                     example = ""
                     label   = "Optional data exporter Add-ons for your deployment"
                     many_of = "node_exporter,mysqld_exporter,newrelic,none"
                     name    = "add_ons"
                     one_of  = ""
                  },
               ]
               user_gravatar_id    = "1abc23d45ef67gh8ij9k012lmn34o56"
               username            = "linode"
            },
         ]
      }

    The API and Terraform responses include the StackScript id for the specific app, supported Linux images, and a list of user-defined field names, like user_name, token_password, and others.

    The CLI response returns only a summary representation of each StackScript. To retrieve full details for a specific StackScript, run the linode-cli stackscripts view command with the --json flag. Optionally, pipe the JSON output to jq for formatting.

    # View the full JSON output.
    linode-cli stackscripts view 607433 --json | jq
    
    # View a specific field from the JSON output.
    linode-cli stackscripts view 607433 --json | jq '.[0].user_defined_fields'

    Notes:

    • You can also view full StackScript details in Cloud Manager at https://cloud.linode.com/stackscripts/<stackscript_id>. Replace <stackscript_id> with the StackScript's id value returned by the API.
    • For reference, you can review Quick Deploy App source files in these Akamai repositories:
  2. After identifying the StackScript details, deploy the app to a new Linode instance. In addition to the standard Linode deployment configurations, include these app-specific parameters:

    • image. Must match one of the StackScript's images returned in step 1.
    • stackscript_id. Set it to the StackScript id retrieved in step 1.
    • stackscript_data. Define the fields specific to the app deployment. These keys must match the name values returned in the StackScript's user_defined_fields array from step 1.

    Depending on the tool, use the following:

    • API. Run Create a new Linode operation.

      curl --location 'https://api.linode.com/v4/linode/instances' \
         --header 'Content-Type: application/json' \
         --header 'Accept: application/json' \
         --header 'Authorization: Bearer abc123def456hij789klm' \
         --data-raw '{
            "region": "us-east",
            "type": "g6-standard-2",
            "image": "linode/ubuntu24.04",
            "label": "my-docker-one-click-app",
            "root_pass": "@C0mpl3x#P@ssw0rd",
            "stackscript_id": 607433,
            "stackscript_data": {
               "user_name":"jsmith",
               "disable_root":"Yes",
               "token_password":"abc123def456hij789klm",
               "subdomain":"blog",
               "domain":"my-site.com",
               "soa_email_address":"jsmith@example.com",
               "add_ons": "mysqld_exporter"
            }
         }'
      {
         "id": 54321,
         "label": "my-docker-one-click-app",
         "group": "",
         "status": "provisioning",
         "created": "2026-05-15T14:45:39",
         "updated": "2026-05-15T14:45:39",
         "type": "g6-standard-2",
         "ipv4": [
            "123.123.123.123"
         ],
         "ipv6": "1200:3a04::5000:6bff:cd7e:8g90/123",
         "image": "linode/ubuntu24.04",
         "region": "us-east",
         "site_type": "core",
         "specs": {
            "disk": 1234,
            "memory": 4096,
            "vcpus": 2,
            "gpus": 0,
            "transfer": 4000,
            "accelerated_devices": 0
         },
         "alerts": {
            "cpu": 180,
            "network_in": 10,
            "network_out": 10,
            "transfer_quota": 80,
            "io": 10000
         },
         "backups": {
            "enabled": false,
            "available": false,
            "schedule": {
                  "day": null,
                  "window": null
            },
            "last_successful": null
         },
         "hypervisor": "kvm",
         "watchdog_enabled": true,
         "tags": [],
         "host_uuid": "123a45bc678de901fghi234jk5lmn6opq78",
         "has_user_data": false,
         "placement_group": null,
         "disk_encryption": "enabled",
         "lke_cluster_id": null,
         "capabilities": [
            "Block Storage Encryption",
            "SMTP Enabled",
            "Maintenance Policy"
         ],
         "interface_generation": "legacy_config",
         "maintenance_policy": "linode/migrate"
      }
    • CLI. Run the linode-cli linodes create command.

      linode-cli linodes create \
         --region us-east \
         --type g6-standard-2 \
         --label my-docker-one-click-app \
         --image linode/ubuntu24.04 \
         --root_pass @C0mpl3x#P@ssw0rd \
         --stackscript_id 607433 \
         --stackscript_data '{"user_name":"jsmith", "disable_root":"Yes", "token_password":"abc123def456hij789klm", "subdomain":"blog", "domain":"my-site.com", "soa_email_address":"jsmith@example.com", "add_ons":"mysqld_exporter"}'
      ┌──────────┬───────────┬─────────┬───────────┬───────────┬────────────┬───────────┬────────────┬───────────┬────────────┐
      │ id       │ label     │ region  │ type      │ image     │ status     │ ipv4      │ disk_encr… │ interfac… │ placement… │
      ├──────────┼───────────┼─────────┼───────────┼───────────┼────────────┼───────────┼────────────┼───────────┼────────────┤
      │ 54321    │ my-docke… │ us-east │ g6-stand… │ linode/u… │ provision… │ 123.123.… │ enabled    │ legacy_c… │            │
      └──────────┴───────────┴─────────┴───────────┴───────────┴────────────┴───────────┴────────────┴───────────┴────────────┘
    • Terraform. Run the linode_instance resource.

      resource "linode_instance" "my-linode" {
         region         = "us-east"
         type           = "g6-standard-2"
         label          = "my-docker-one-click-app"
         image          = "linode/ubuntu24.04"
         root_pass      = "@C0mpl3x#P@ssw0rd"
         stackscript_id = data.linode_stackscripts.my-stackscripts.stackscripts[0].id
         stackscript_data = {
            "user_name"         = "jsmith"
            "disable_root"      = "Yes"
            "token_password"    = "abc123def456hij789klm"
            "subdomain"         = "blog"
            "domain"            = "my-site.com"
            "soa_email_address" = "jsmith@example.com"
            "add_ons"           = "mysqld_exporter"
         }
      }
      my-linode = (sensitive value)

2. Verify installation

You need to wait for the software installation to complete before you can start using the app.

For most apps, to verify the installation is complete, use one of these ways:

  • Try to access the app. Access the app after the deployment time (5–10 minutes) elapses. If you can access it, the installation has completed successfully.
  • Lish console. Open the Lish console and follow the installation script. Once the Installation Complete! notice appears, the install is complete.
  • Log file. View the installation's log file by running grep -i 'installation complete' /var/log/stackscript.log. You should also see the same Installation Complete! notice confirming successful installation.

Some apps have different instructions for verifying installation. For those, see the guide that corresponds with that app.

3. Access an app

Since each app installs different software with different functions, the instructions for accessing an App can vary greatly.

To learn how to access and start using the app you deployed, review the guide that corresponds with your app.

Add a custom domain

For websites like WordPress, WooCommerce, and Drupal, you may need a domain name linked to your app. Otherwise, your app is only accessible through the instance’s IP address or rDNS value.

For information on how to add a domain name to your app, visit our DNS Manager guide. Specifically, you should set up an A record and assign your IP address to it.

For more general information about how DNS works, review the DNS Records: An Introduction guide.

Community resources

Browse our Akamai Cloud Community page for app-related questions.


Did this page help you?