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
-
Navigate to Quick Deploy Apps in Akamai's Cloud Manager portal.
-
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.
-
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. -
Click the Create Linode button to create an instance.
-
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.
-
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-Filterheader to filter the results by specific StackScript field values, likelabelandusername. Optionally, pipe the operation to thejqcommand-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 listcommand with the--labelflag to search by the exact StackScript label or use a utility likegrepto 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_stackscriptsdata 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
idfor the specific app, supported Linuximages, and a list of user-defined field names, likeuser_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 viewcommand with the--jsonflag. Optionally, pipe the JSON output tojqfor 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'sidvalue returned by the API. - For reference, you can review Quick Deploy App source files in these Akamai repositories:
- marketplace-apps for single-instance apps.
- marketplace-clusters for cluster apps.
-
-
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'simagesreturned in step 1.stackscript_id. Set it to the StackScriptidretrieved in step 1.stackscript_data. Define the fields specific to the app deployment. These keys must match thenamevalues returned in the StackScript'suser_defined_fieldsarray 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 createcommand.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_instanceresource.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.
Updated about 10 hours ago
