Skip to content

Managing Apps

Apps are the center of Dokku Pro. The web UI covers an app's whole lifecycle - deploying, configuring, scaling, and inspecting it - so you rarely need to drop to the command line. The dashboard lists every app and its status.

The dashboard listing deployed apps and their status The dashboard listing deployed apps and their status
The app dashboard

Overview and Lifecycle

Create and delete apps, with a typed confirmation before an app is destroyed. Deleting an app returns you to the app list and shows a toast; the app is marked "deleting" in the list until the background destroy finishes and it drops out.

From the Actions menu in the app header - and from the status row on the Overview tab - you can start, stop, restart, and rebuild the app. Stopping is always confirmed, and the available actions reflect whether the app is not deployed, running, stopped, or deploy locked. You can also toggle deploy locking and turn on maintenance mode, which serves a maintenance page to all visitors.

An app's Overview tab showing its status row and the Actions menu An app's Overview tab showing its status row and the Actions menu
The app Overview tab

Any change that triggers a rebuild (environment variables, buildpacks, scaling, resource limits, or an explicit rebuild) runs as a queued background job. The UI surfaces each queued job as a toast with a link to follow it on the Activity tab, and reports when the job completes or fails.

A toast notification for a queued background job with a link to the Activity tab A toast notification for a queued background job with a link to the Activity tab
A queued-job toast notification

Domains

Manage an app's domains with inline editing and a DNS hint for routing new domains.

The Domains tab with inline editing and a DNS hint The Domains tab with inline editing and a DNS hint
The Domains tab

TLS Certificates

A unified TLS tab switches between Let's Encrypt and a manually uploaded certificate. Let's Encrypt is enabled with a registration email and a production or staging ACME server, runs as a queued background job while the certificate is issued, and then shows the issued certificate's status, expiry, and covered hostnames along with a disable action. A manual certificate can be uploaded when Let's Encrypt is not managing the certificate, and admins can toggle the server-wide auto-renewal cron job.

The TLS tab switching between Let's Encrypt and a manual certificate The TLS tab switching between Let's Encrypt and a manual certificate
The TLS tab

Environment Variables

Environment variables are edited through batched staging: edits, additions, and unsets accumulate in a client-side draft instead of deploying one at a time. A Rows view offers masked values with reveal and mask controls, copy buttons, inline editing, per-variable staging chips, and a composer for staging new variables. A .env view edits the whole config as text and previews the delta before applying it back to the draft.

The environment variables Rows view with masked values and per-variable staging chips The environment variables Rows view with masked values and per-variable staging chips
The environment variables tab
Staged environment variable changes shown as chips before deploying Staged environment variable changes shown as chips before deploying
Staged changes accumulating in the draft

A commit bar summarizes the pending changes and deploys them together in a single config:set when saved, requiring an explicit acknowledgement before any variable is unset, or discards the draft entirely.

The commit bar summarizing pending environment changes before deploying them together The commit bar summarizing pending environment changes before deploying them together
The commit bar

Scaling and Resources

Scale process counts and set memory limits, memory reserves, and CPU limits per process type.

The Processes tab showing per-process-type scaling and resource limits The Processes tab showing per-process-type scaling and resource limits
The Processes tab

Build Configuration

Configure how the app is built and run:

  • Buildpacks, including their ordering.
  • Builder selection and build directory configuration.
  • Scheduler selection.

HTTP Basic Authentication

Protect an app with HTTP basic authentication, including allowed users and allowed IP addresses that bypass authentication.

Logs

View live logs with a source selector that switches the stream between application (container stdout/stderr), nginx access, and nginx error logs, plus process filtering for application logs and pause and follow controls. Logs stream over a WebSocket, so when a proxy or CDN blocks the connection the tab shows a connection-error banner with a Retry action and a link to the WebSocket requirements.

The Logs tab streaming application output with a source selector and follow controls The Logs tab streaming application output with a source selector and follow controls
The Logs tab

Activity

An Activity tab lists the app's recent commands in a master-detail layout: selecting a command shows its context, status, timing, exit code, links to the related user and services, and its lineage, and live-tails its logs while it runs or shows the full log once complete. Viewing job logs requires the job:read permission; without it the tab shows an access-denied message.

The app Activity tab in a master-detail layout showing a command's details The app Activity tab in a master-detail layout showing a command's details
The app Activity tab

Settings

Rename an app from the Settings tab, with a typed confirmation and an option to skip the rebuild that would otherwise run afterwards. The rename runs as a queued background job, and the app's team access, webhook configuration, and activity history all follow it to the new name. Datastore linking with credential reveal is also managed here.

The app Settings tab with the rename control and other app settings The app Settings tab with the rename control and other app settings
The app Settings tab