Skip to content

Applications

An Application in Serversinc represents a deployable project (such as a web service, API, database, or background worker) that runs on a single server. Applications act as the central unit for deployment, configuration, and monitoring.


Applications can be created in two ways:

Deploy directly from a Docker image.

  • Requires an image name (optionally with tag).
  • Best for prebuilt services, custom images, or apps you don’t need to build from source.

Deploy from a GitHub repository.

  • Serversinc will build a Docker image from your repo using Buildpacks.
  • Best for projects you want to update via pushes to a repository.
FeatureDocker ApplicationGitHub Application
Source of truthDocker imageGitHub repo
Build stepNoneRuns a buildpack container on server
Deployment triggerManualManual or on push via Github Webhooks

When you add a domain to an application:

  • If Traefik is not installed on the server, Serversinc will automatically install and configure it.
  • The domain is bound to your application’s container through Traefik labels.
  • Traefik automatically provisions and renews SSL certificates for your domain via Let’s Encrypt.

Domains require a valid DNS A record pointing to your server’s IP address.

Serversinc generates Traefik labels on your application’s containers to handle:

  • Routing traffic from your domain to your container.
  • Setting up TLS certificates.
  • Routing requests to the correct internal container port (see Ports).

If you are using Cloudflare for DNS management, ensure that the A record for your domain is set to “DNS only” (grey cloud) to allow Let’s Encrypt to verify domain ownership. Alternatively, you can configure DNS-based verification in Traefik that works with Cloudflare’s proxy (orange cloud).


Key-value metadata attached to containers for Traefik or other orchestration.
Serversinc automatically manages Traefik-related labels, but you can add custom labels as needed.

Serversinc automatically adds metadata labels to each container:

NameValueNotes
com.serversinc.app_idApplication IDInternal reference
com.serversinc.workspace_idWorkspace IDInternal reference

These labels are used internally to manage and identify containers.

Bind paths or named volumes into your container. Useful for persistence (e.g., /data, logs, database storage).

Define runtime variables passed to your container.

NameValueNotes
APP_ENVproductionExample
DB_HOSTdb.internalDatabase connection string

Each Application can have one or more Containers, which are the actual running instances of your app.

  • Containers inherit config from the Application (env vars, volumes, labels).
  • Deployments eventually result in one running Container (see below).

👉 See the Container Reference for full details.

When deploying a new version of an application, you can choose between two strategies:

  • Recreate (default): Stops the existing container(s) before starting new ones. This is simpler but may cause downtime.
  • Rolling: Starts new container(s) before stopping the old ones, allowing for zero-downtime deployments.

When using Rolling deployments, you may notice two containers running simultaneously during the transition period.


You can execute commands inside an application’s container (e.g., artisan migrate, npm run build) by clicking into the Container’s Commands tab.

  • Commands are run inside the Docker container.
  • You can run commands on any container for the application.
  • Exit code and logs are captured and viewable in the dashboard.

Deployments are how you update an application.

  • Build

    • Only applies to GitHub Applications.
    • Builds a Docker image from your repository and tags it.
  • Deploy

    • Runs a container using a specific image.
    • Applies env vars, volumes, and labels.
    • Can happen after a build or directly for Docker Applications.

Applications can expose one or more ports.

  • Defined as container:host.
    Example: 3000:80 means the container listens on port 3000, mapped to host port 80.
  • The first container port is used in Traefik labels when binding domains.
Container PortHost PortNotes
300080Common for web applications
54325432Common for PostgreSQL
63796379Common for Redis

Here, the application container listens on port 3000, which is mapped to port 80 on the host. Traefik will route HTTP traffic from your domain to port 3000 in the container.


Serversinc can notify you when containers for an application:

  • Stop unexpectedly.
  • Start again.

Alerts are sent through your configured notification channels.

👉 See Notifications Reference for setup details.