All docs

Deploy your first app

Last updated: June 21, 2026

This guide starts after your MapleDeploy server is ready. If you have not created a server yet, start with Create your server.

By the end, you will have an application running on your MapleDeploy server using Coolify.

What you will need

  • A Git repository hosted on GitHub, GitLab, Bitbucket, Gitea, or another Git host.
  • A Dockerfile in your repository, or a project that Nixpacks can detect.
  • The port your application listens on, such as 3000, 5000, or 8080.

GitHub has the deepest Coolify integration. For other Git providers, public repositories can use Public Repository and private repositories use deploy keys.

Step 1: Open Coolify

Sign in to the MapleDeploy dashboard, open your server, and select the Coolify dashboard link.

Close-up of server details showing Pro plan, Toronto region, IP address, and Coolify dashboard link
Open Coolify from your server details page.

Step 2: Connect your Git provider

If your code is on GitHub, start there. In Coolify, go to Sources and add a GitHub App. GitHub will ask which repositories the app can access.

Once connected, Coolify can pull from those repositories and create webhooks for automatic deploys when you push to the selected branch.

Coolify Sources page content showing a connected GitHub source with an add button
Connected Git sources are reused across future applications.

For GitLab, Bitbucket, Gitea, and other Git providers, public repositories can use Public Repository. For private repositories, choose Private Repository (Deploy Key). Coolify generates a public deploy key. Add that key to your repository settings with read access.

For GitLab, Bitbucket, and Gitea, use the Manual Git Webhooks section in Coolify, set the matching webhook secret, and configure push events in your Git provider. For other Git providers, use the auth-required deploy webhook with a Coolify API token through your provider's workflow or webhook system.

Step 3: Create the application

In Coolify, create a project. Projects group related resources.

Inside the project, choose Add New Resource, then select the repository type:

  • Public Repository for a public repo.
  • Private Repository (GitHub App) for a repo connected through GitHub.
  • Private Repository (Deploy Key) for a private repo from any Git provider.

Select the repository and branch to continue.

Close-up of six deployment options split into Git-based and Docker-based columns with descriptions
Choose the repository type that matches your Git setup.

Step 4: Configure the build

Coolify needs to know how to build your app and which port it should route traffic to.

Build pack

If your repository has a Dockerfile, select Dockerfile. This is the most predictable option because your repository controls the build.

If the Dockerfile is not in the repository root, set Dockerfile Location to its path from the app base directory, such as /docker/Dockerfile.

If you do not have a Dockerfile, select Nixpacks. Nixpacks auto-detects common project types. For monorepos or unusual builds, use a Dockerfile.

Exposed port

In the Network section, set Ports Exposes to the port your app listens on:

  • Node.js Express or Next.js: 3000
  • Python Flask: 5000
  • Go HTTP server: 8080

This must match your app exactly. If the port is wrong, the container may start but the app will not be reachable.

Close-up of Network section showing Ports Exposes set to 3000, Port Mappings, and Network Aliases fields
Set Ports Exposes to the port your application listens on.

Step 5: Deploy

Select Deploy. Coolify pulls your code, builds the image, starts the container, and shows logs while it works.

When deployment finishes, open the Links menu at the top of the application page. Coolify gives you a temporary URL that works immediately.

Close-up of the open Links dropdown showing a temporary sslip.io URL before custom domain setup
The temporary URL is useful for checking the app before adding a custom domain.

Step 6: Verify the app

Open the temporary URL. If the app loads, your deployment is working.

If it does not load, check the most common causes first:

  • Build errors: Read the build logs and fix missing dependencies or failed commands.
  • Port mismatch: Set Ports Exposes to the exact port your app binds to.
  • Missing environment variables: Add required variables in Environment Variables, then redeploy.
  • Localhost binding: Bind the app to 0.0.0.0, not only 127.0.0.1 or localhost.

Next steps

For a production URL, follow Custom domains.

For databases, set up backups before you store important data. See the backup guide.