The deployment process starts through the deployment modal, which can be opened via the button in the dashboard or by ⌘ + K
.
Templates provided by
ale
have different default modules and libraries. If you need to use libraries that aren’t provided by default, such as Windows or Chrome libraries, use Dockerfile Template.Select Deployment source
Deploy from GitHub Repository
Deploy from GitHub Repository
Deploy via Git URL
Deploy via Git URL
Add Deploy Key

After selecting ‘Deploy Git Repository’ and navigating to the ‘Git URL’ tab, input the SSH Git URL of your repository. A Deploy Key will be generated automatically.
ale
supports SSH authentication for deploying private repositories from GitHub, GitLab, Bitbucket, and other git providers. See below for platform-specific deploy key setup.GitHub
GitHub

Go to Settings > Deploy keys in your repository. Then clickAdd deploy key
in the top right corner and paste the deploy key fromale
.
GitLab
GitLab

Go to Settings > Repository in your repository. Under the Deploy keys section, clickExpand
, thenAdd new key
, and paste the deploy key fromale
.
Bitbucket
Bitbucket

Go to Repository settings > Access keys in your repository. ClickAdd key
and paste the deploy key fromale
.
Select a Preset

Choose the preset that matches the repository.
For static sites like React or Vue, select Web Application.
Deploy from Template
Deploy from Template

For static sites like React or Vue, select Web Application.
Configure and Deploy
After selecting the source and preset, configure the deployment settings below and deploy.
Branch and Subdirectory
Branch and Subdirectory

After selecting a repository, fields for configuring the branch and subdirectory will appear. If your service is located in a subfolder instead of the root directory—such as when managing multiple services in one repository—enter the subfolder path in the Subdirectory field.
If this field is left blank, the root directory will be used for build and deployment by default.
For more details, see the Deploy from Subdir page.
Version
Version

Select the preset version that matches the repository.
Build or runtime failures may occur if the version specified in the project configuration files (build.gradle, package.json, requirement.txt, etc.) doesn’t match the version selected.
Environment Variables
Environment Variables

Environment variables can be added using any combination of the following methods:
- Drag and Drop ENV files
- Directly add variables using the
- Select from saved secrets using the
For more information about managing environment variables and secrets, see the Environment Variables page.
Port Number
Port Number
The port number must match the value specified in your source code or environment variables. If the port number is missing or incorrect, the service will fail to start.
If this field is left blank, the service will be deployed without a port.
Install, Build, Start Command
Install, Build, Start Command

Configure the lifecycle commands for your service.
- Install Command: Enter the command to install dependencies (e.g.,
npm install
,pip install -r requirements.txt
) - Build Command: Enter the command to build your application (e.g.,
npm run build
,gradle build
) - Start Command: Enter the command to run your service (e.g.,
npm start
,python app.py
)
If left empty, the default command shown in the placeholder will be used.
More Options
More Options

Configure additional deployment settings.
Available configuration fields will vary based on your selected template/preset. See below for language-specific settings.
Resource Settings and Deploy
Resource Settings and Deploy

- Resource Type: Select between On-demand or Spot instance types
- CPU: Maximum vCPU resource for the service. Minimum vCPU means 0.1 vCPU
- Memory: Maximum memory size the service can use
- Disk: Database disk capacity (Available for database services only)
- Replica: Number of service replicas for high availability and load balancing
- Deploy: Click
Deploy
If deployment fails due to resource limitations, see the Space and Resource Management page to add resources to the space.
Available configuration fields will vary based on your selected template/preset. See below for language-specific settings.
Logs & Terminal

Click the icon in the service card or service page to check deployment/runtime logs or access the terminal.
Metrics

You can view service metrics in the Metrics tab of the service page.
Update

When you update your code or modify resource settings, click Deploy
at the bottom of the service settings page to apply these changes with a new deployment.
To set up automated deployments using GitHub Actions, see the GitHub Actions page.
Rollback

To restore your service to a previous version, navigate to the deployment history tab in the service page.
Check the commit messages in the deployment history to ensure you’re rolling back to the intended version.
Troubleshooting
Subdirectory Not Applied (Error: Project files not found)
Subdirectory Not Applied (Error: Project files not found)

Builds are executed from the root directory during deployment. If your application source code is located in a subdirectory rather than the root directory of the repository, you need to configure the subdirectory path in your settings.
Version Mismatch
Version Mismatch

Build or runtime failures may occur if the version specified in the project configuration files (build.gradle, package.json, requirement.txt, etc.) doesn’t match the version selected. Set the appropriate versions according to your project and deploy again.
Port Number Issues
Port Number Issues
- To avoid runtime issues, ensure that the correct port numbers are set in your deployment settings for applications that require specific ports. If your application assigns ports dynamically, leave the port number field blank in the deployment settings.
Using Chrome Libraries like Selenium and Puppeteer
Using Chrome Libraries like Selenium and Puppeteer
- Templates provided by
ale
have different default modules and libraries. If you need to use libraries that aren’t provided by default, such as Windows or Chrome libraries, you’ll need to deploy using a Dockerfile.
You can either install plugins that support the required libraries, or add them directly through plugin development.
CORS Issues
CORS Issues

CORS solutions vary by framework, and issues can be resolved using framework-specific libraries or modules. While frameworks like Next.js offer built-in reverse proxy solutions through their Rewrites feature, you can use Rewrites configuration to set up reverse proxying when deploying web applications like React or Vue. See the reverse proxy page for detailed configuration guidelines.
Missing Runtime Logs
Missing Runtime Logs
- Click the
play
button on the service card to restart the service and check the runtime logs. If logs are still not visible, check the Events tab on the service page to troubleshoot the issue.
Memory Resource Exhaustion (OOM)
Memory Resource Exhaustion (OOM)

- JVM applications may experience Out of Memory (OOM) errors when memory usage exceeds allocated resources. Node.js applications can similarly face heap memory limitations. To resolve this, either configure memory settings in your application or deploy with increased resource limits.
Timezone
Timezone

Set the timezone using the TZ environment variable. You can find the list of supported timezone formats here. For framework-specific configuration options, consult your framework’s documentation.