Endpoints¶
Endpoints are the public or private entry points to your app services. They consist of HTTP domains, redirects, and published ports.
From Apps > [App] > [Instance] > Endpoints you can manage:
DomainsPortsSettingsfor HTTP routes and published portsAuthsRedirects
Domains and redirects are stored as routes behind the scenes, so API, CLI, task, and infrastructure documentation may still use the term route. The dashboard separates them by what users configure.
To temporarily replace enabled public HTTP and HTTPS routes with a fixed 503 Service Unavailable response, use
app instance maintenance mode.
Domains¶
Domains receive HTTP and HTTPS traffic for an app service. A domain matches a hostname and path, then serves the request from an app service endpoint.
Each domain has:
- app service
- endpoint
- port
- hostname
- path
- path match type:
prefixorexact - TLS mode:
Let's Encrypt,Custom, orNone - whether the domain should be
Main - whether the domain should be
Primary
The dashboard automatically selects and hides the endpoint or port field when the selected app service has only one eligible choice. Only public HTTP ports can serve domains.
Redirects¶
Redirects receive requests on a source hostname and path, then send the client to another URL. They are supported on clusters that use Envoy Gateway.
Each redirect has:
- source hostname and path
- destination scheme, hostname, and optional replacement path
- status code:
301 Permanentor302 Temporary - TLS for the source hostname
- an associated app service, endpoint, and public HTTP port
Leave the destination hostname empty to keep the source hostname. Leave the destination path empty to preserve the requested path. The destination hostname, when provided, must be a hostname rather than a full URL.
When adding a redirect, the source hostname field suggests existing custom hostnames but also accepts a new hostname.
If you select an existing hostname, the redirect inherits that hostname's current TLS certificate. If you enter a new
hostname, choose its TLS mode: Let's Encrypt, Custom, or None. A certificate is needed for the source only when
clients will reach the redirect over HTTPS; the redirect destination manages its own TLS separately.
A redirect does not send traffic to its associated app service, but the association remains part of its lifecycle. Disabling the app service disables its redirects; re-enabling the service re-enables redirects that were disabled with the service. During a routing deployment, redirects can remain available even when the associated service has no successful runtime because a redirect does not need a service backend.
Technical domains¶
By default, Wodby generates technical routes for app services that expose public HTTP endpoints. Ports marked
private do not receive Wodby technical routes.
The default hostname pattern is:
<service-name>.<instance-name>.<app-name>.<org-name>.wodby.app
The main app service also owns the shorter root technical hostname:
<instance-name>.<app-name>.<org-name>.wodby.app
Changing the main app service retargets this existing root technical route to the new service's primary public HTTP
endpoint. The hostname, certificate, and route settings stay with the route. This does not change which route is the
app instance's Main route.
Wodby automatically issues and renews Let's Encrypt certificates for these technical routes. Certificate validation for technical routes uses Wodby-managed DNS records, so the certificate can be issued before the app service itself is serving traffic.
Technical routes are managed by Wodby. You can disable one to stop serving it, but you cannot retarget it, change its generated hostname or path, or delete it. Wodby removes generated routes when the underlying endpoint structure no longer requires them.
Custom domains and redirects¶
The dashboard presents custom serving routes as domains and redirect routes as redirects:
- open
Endpoints > Domainsand selectNew domainto connect a hostname and path to an app service - open
Endpoints > Redirectsand selectAdd redirectto redirect a source hostname and path
Creating or editing custom domains and redirects requires an active paid subscription. Wodby-managed technical routes and their SSL certificates remain available on all active plans.
Use a custom route when you want to:
- attach your own hostname
- serve an app service under a specific path, such as
example.com/blog - choose whether the route should become the main app instance route or the primary route for a service endpoint
Use a redirect when you want to move traffic to another hostname, path, or scheme without serving an app backend.
Only services with HTTP endpoints are available in this flow.
Domains and redirects have separate editors. A domain and redirect cannot use the same hostname, path, and path match type at the same time. To replace a domain with a redirect, or a redirect with a domain, delete the existing item and create the other type.
You can retarget an existing custom domain or redirect association to a public HTTP port on another enabled app service. Retargeting preserves the hostname, path, TLS certificate, route settings, and route authentication. Wodby-generated technical routes cannot be retargeted from this form.
On clusters with Wodby infrastructure version 4.0.0 or newer, route changes are applied through an app-instance
routing deployment. They do not require the source or target app service to be
redeployed. Older infrastructure versions continue to apply the change through an app-service deployment.
When you create a custom domain or redirect with Let's Encrypt, certificate issuance runs separately from application deployment. An unattached or incorrectly routed hostname does not fail the deployment or change the app instance to an errored state. You can also delete a custom domain or redirect while its app instance is errored, so a bad hostname never blocks cleanup.
Deleting a custom domain or redirect also removes its route-specific HTTP settings and authentication scope. Reusable organization-level custom certificates remain available until you delete them separately.
Main and primary¶
Wodby distinguishes between two default-route flags:
Mainis the canonical route for the whole app instancePrimaryis the default route for a specific endpoint
The main route can be either a Wodby-generated technical route or a custom route. Main routes are always primary. In practice:
- an app instance with enabled public routes has one main route
- each endpoint can have its own primary route
The main route and the main app service are separate choices. The main route determines the canonical hostname used by the app, while the main app service determines where the root Wodby technical hostname sends traffic.
An enabled main route remains main until it becomes unavailable or you explicitly replace it. A custom main route can also be deleted; a Wodby-generated technical route cannot. Wodby also preserves a valid primary route for an endpoint instead of replacing it during routine reconciliation.
When the selected main or primary route becomes unavailable, Wodby chooses a replacement. Enabled custom routes are preferred over generated technical routes only when such a replacement is necessary.
TLS certificates¶
Wodby can issue TLS certificates for endpoint routes. For public docs, treat Let's Encrypt as the supported issuer for managed certificate flows today. Wodby automatically renews Let's Encrypt certificates before they expire.
For generated technical routes, Wodby validates certificates through managed DNS. Custom route certificates are validated through the public HTTP route. Before contacting Let's Encrypt, Wodby publishes a temporary challenge and checks that the hostname returns its exact challenge response. DNS resolution by itself, or an unrelated successful HTTP response from another server, is not enough.
A custom hostname can be proxied through Cloudflare or another reverse proxy. It is considered attached when requests
to /.well-known/acme-challenge/* are forwarded to the Wodby route and return Wodby's challenge response. The public
DNS record may therefore resolve to proxy addresses instead of directly to the cluster. If the proxy sends challenge
requests to another origin, replaces the response, or redirects them somewhere that does not reach Wodby, certificate
issuance remains pending. Adjust the proxy's origin or routing rules, or temporarily disable proxying while the initial
certificate is issued.
New managed certificates have a Pending status until Wodby verifies the route and Let's Encrypt issues the
certificate. A requested issuer of Let's Encrypt does not by itself mean that a certificate has already been issued.
If public DNS does not resolve, the route reports Awaiting DNS. If DNS resolves but the exact challenge does not reach
Wodby, it reports Not connected. The separate certificate task fails, while the certificate remains Pending and
Wodby retries pending routes hourly. This does not fail an application deployment or change the app instance status.
Infrastructure errors are reported separately as Error.
After fixing DNS or proxy routing, open the route and select Reconcile certificate to check attachment immediately
instead of waiting for the next automatic retry. This starts a certificate task, not an application deployment. If a
certificate check for the route is already running, Wodby reuses that task rather than starting a duplicate.
Certificate renewals are scheduled automatically and spread over time. If Let's Encrypt is temporarily busy or rate limits a renewal request, Wodby schedules another renewal attempt and includes the retry time in the failed renewal notification.
Organization > Certificates shows issued and uploaded certificates by issuer, hostname, status, issue date, renewal
date, expiry date, and where each certificate is used. Use the issuer filter to show all certificates, Let's Encrypt
certificates, or certificates from a detected custom certificate authority. The list is paginated and can include
certificates used by application routes and supported database resources. Select a certificate row to see its key
details, all DNS names, SHA-256 fingerprint, validity dates, and individual route usages.
Upload a custom certificate¶
Uploading and applying custom TLS certificates requires an active paid subscription. Custom certificates are reusable
organization-level assets. To add one, open Organization > Certificates, select Add custom certificate, and
provide:
- the server certificate and intermediate certificates in PEM format
- the matching unencrypted private key in PEM format
The certificate input can contain the leaf certificate and its intermediate chain in one text value. The order does not matter: Wodby identifies the leaf by matching it to the private key and stores the chain in the correct order. You may include a self-signed root certificate, but Wodby removes it because TLS servers normally send the leaf and intermediates, not the trusted root.
Accepted private keys are:
- PKCS#8 PEM with a
BEGIN PRIVATE KEYheader - PKCS#1 RSA PEM with a
BEGIN RSA PRIVATE KEYheader, using at least 2048 bits - SEC1 EC PEM with a
BEGIN EC PRIVATE KEYheader, using P-256, P-384, or P-521
Encrypted or password-protected private keys are not supported. Wodby also does not currently accept PFX/P12 files or ZIP archives. If your certificate authority supplies an archive, extract the PEM certificate, intermediate chain, and private key first. Certificate authorities commonly supply certificates and intermediates but do not supply the private key when you created the certificate signing request yourself; use the private key generated with that request.
Before saving, Wodby verifies that:
- the private key matches the server certificate
- the certificate is currently valid and supports TLS server authentication
- the leaf is not a CA certificate
- the certificate contains at least one DNS Subject Alternative Name (SAN)
- every included non-root certificate belongs to the selected chain
The private key and certificate material are stored as secrets. Certificate listings expose metadata such as DNS names, validity, key type, and a SHA-256 fingerprint, but never return the private key.
Apply a custom certificate to a domain or redirect¶
When creating or editing a custom domain or redirect, select Custom as the TLS mode and choose an uploaded
certificate. Wodby shows only active custom certificates whose DNS SANs cover the source hostname. Standard X.509
hostname rules apply: for example, *.example.com covers www.example.com, but not example.com or
shop.eu.example.com.
Wodby repeats the same checks when saving the route, so a certificate cannot be attached across organizations, after
expiry, or to a hostname it does not cover. Changing the TLS mode to Let's Encrypt starts or reuses the managed
certificate flow. Changing it to None removes TLS from the hostname.
TLS is selected per hostname. If an app instance has multiple route paths for the same host, changing the certificate
on one of them changes it for every path using that host. Uploaded certificates remain available for reuse after they
are detached. You can delete an uploaded certificate only after it is no longer used by any route or other supported
resource. To remove one, select its hostname in Organization > Certificates, then select Delete certificate. The
delete action remains unavailable until every usage shown on the certificate page has been detached. Wodby does not
renew uploaded certificates automatically; upload and select a replacement before the current certificate expires.
Organization admins receive staged expiration warnings 30, 14, 7, and 1 day before expiry, plus an expired
notification. Each user can control these emails with the Custom certificate expiration notification setting.
Before scheduling a downgrade to the free Developer plan, delete every uploaded custom certificate. Detaching a certificate from its routes is not sufficient because the reusable organization-level certificate remains a paid feature until it is deleted.
Domain and redirect status¶
The Domains and Redirects lists each have a Status column. It shows OK only when routing and any requested
certificate are both ready; otherwise it identifies which state still needs attention. The Certificate column shows
certificate status, while the issuer icon before the source hostname distinguishes managed and custom certificates.
Domain and redirect details show the issuer, certificate status, and latest attachment-check state separately. An
issuer of Let's Encrypt does not by itself mean that a certificate has been issued. Attachment status is independent
from deployment status: a route can exist and the app can be healthy while its custom hostname is still waiting for
DNS or points to another origin.
When App Access is configured, the provider owns the selected endpoints' connection path. Wodby suppresses ordinary public routes in the selected scope and uses the Access primary hostname as the app instance's canonical address. The Domains and Redirects lists show the effective Access hostname; Cloudflare Protected and Tailscale use provider-facing hostnames, while Cloudflare Private network reuses the suppressed Wodby technical hostname. Routes that target the same app port share one Access hostname. With Selected endpoints scope, routes for unselected endpoints remain public.
The private flag on a port does not create a Cloudflare or Tailscale endpoint by itself. Private ports without an
explicit App Access configuration remain reachable only through internal Kubernetes networking.
HTTP settings¶
The dashboard's HTTP settings screen controls route settings for clusters that use Envoy Gateway. They are predefined
settings rather than arbitrary Kubernetes annotations.
Route settings can be configured at two scopes:
- app instance defaults, inherited by serve routes in the app instance
- domain- or redirect-specific settings, which override app instance defaults for one item
Supported route settings are:
| Setting | Value |
|---|---|
https_redirect |
true or false |
no_index |
true or false |
request_body_size |
size with Ki, Mi, or Gi, such as 64Mi |
session_affinity |
cookie or header |
path_rewrite |
path starting with / |
hsts |
disabled, enabled, or include_subdomains |
Domains support every setting in this table. Redirects support https_redirect, no_index, and hsts; settings that
depend on an application backend are not available for redirects. Domain and redirect options are grouped separately
when you select an override target.
HSTS¶
HTTP Strict Transport Security (HSTS) tells browsers to use HTTPS for future requests to a hostname. Wodby applies the setting only after the route has an active TLS certificate:
disableddoes not add an HSTS response header. Use it as a route-specific override when an inherited HSTS setting must be disabled.enabledsendsStrict-Transport-Security: max-age=63072000.include_subdomainssends the same two-year policy withincludeSubDomains.
Use include_subdomains only when every subdomain of the route hostname supports HTTPS. Browsers remember HSTS policy,
so disabling the setting later does not immediately remove policy already cached by visitors. Wodby does not add the
preload directive automatically.
Wodby enables the enabled policy on public Wodby-managed technical routes. Private App Access routes are excluded.
On Envoy Gateway clusters, the New domain form also enables HSTS by default; clear the checkbox when a domain must
remain accessible without an HSTS policy. Existing custom domains are not changed automatically.
For new Envoy Gateway app instances, Wodby creates default route settings to match the previous ingress behavior:
- HTTPS redirect is enabled by default
- session affinity uses cookies by default
- generated technical routes get
no_indexenabled by default - public generated technical routes get HSTS enabled by default
On infrastructure version 4.0.0 or newer, changing route settings starts a routing deployment and does not mark app
services as needing redeploy. Older infrastructure versions continue to mark the affected service or app instance as
needing redeploy.
Legacy ingress settings
Older clusters that still use Ingress Nginx may expose legacy ingress annotation settings. Envoy Gateway clusters use the route settings above. Kubernetes annotations are still available separately where service or stack templates support Kubernetes resource annotations.
Auths¶
The Auths screen manages HTTP basic authentication.
Each auth entry has:
- username
- password
- optional realm
- optional app service scope
- optional domain or redirect scope
This gives you three practical scopes:
- app-level, when both service and route are left empty
- service-level, when a service is selected and route is left empty
- domain- or redirect-level, when a specific item is selected
Auth precedence is most-specific first:
- domain or redirect auth overrides service auth
- service auth overrides app-level auth
The edit screen can also reveal the current password for an existing auth entry. You need runtime secret reveal permission and recent secret reveal confirmation.
On infrastructure version 4.0.0 or newer, changing auth settings starts a routing deployment and does not mark app
services as needing redeploy. Older infrastructure versions continue to mark the affected app services and app
instance as needing redeploy.
Ports¶
The Ports screen lists endpoint ports defined by your app services.
Each port has:
- app service
- endpoint name
- protocol
- internal port number
- whether the service template marks it as private
- optional public port
Publishing ports¶
Manual port publishing is intended for non-HTTP ports such as SSH or other TCP or UDP services.
- HTTP exposure is handled through routes, not through manual public-port publishing
- only non-private, non-HTTP ports can be published or unpublished from this screen
- publishing or unpublishing a port may redeploy the cluster gateway app before the public port becomes available
On clusters with Wodby infrastructure version 4.0.0 or newer, TCP publishing requires the cluster's TCPRoute
capability and UDP publishing requires its UDPRoute capability. Some provider-managed Gateway API installations use
the Standard channel, which can support Wodby's HTTP/HTTPS routing without these optional route types. When a protocol
is unavailable, the port page explains the limitation and prevents the port from being published. You can review the
detected capabilities under Clusters > [Cluster] > Infrastructure > Operations; see
Gateway API compatibility for details.
Wodby assigns the public port automatically from the cluster-wide range 31222-32222. The first available port in that range is used.
On regular managed Kubernetes clusters, published ports are exposed through the cluster load balancer. In single-node managed clusters that use direct node traffic instead of a load balancer, Wodby manages the node firewall rules for this published-port range.
When a port is published, the dashboard shows the assigned public port. For SSHD services, it also shows ready-to-use ssh, sftp, and scp command examples based on the app instance main route.
If you plan to use published SSH ports, see SSH keys.
Port Settings¶
Port settings are supported for published TCP ports on Envoy Gateway clusters. They are not applied to unpublished ports or UDP ports.
Supported port settings are:
| Setting | Value |
|---|---|
idle_timeout |
duration such as 30s, 5m, or 1h |
connection_limit |
positive integer |
tcp_keepalive |
true or false |
Changing port settings marks the app instance as needing redeploy and redeploys the cluster gateway app.