Show HN: Distr – open-source distribution platform for on-prem deployments

github.com

18 points by louis_w_gk a day ago

Distr is designed to help software engineers distribute and manage their applications or agents in customer-controlled or shared-responsibility environments. You only need a Docker Compose file or Helm chart—everything else for on-prem is handled by the platform.

We’re are an open source dev tool company. Over the past couple of months, we’ve spoken with dozens of software companies to understand their challenges with on-prem deployments. We analyzed the internal tools they’ve built and the best practices from existing solutions, combining them into a prebuilt, Open Source solution that works out of the box and integrates seamlessly.

Distr consists of two key components:

1. Hub - Provides a centralized view of all deployments and controls connected agents. - Comes with a simple GUI but also supports API and SDK access for seamless integration. - Fully Open- Surce and self-hostable, or you can use our fully managed platform.

2. Lightweight Agents - Pre-built agents for Helm (Kubernetes) and Docker Compose (VM) that run alongside your application. - Handle lifecycle tasks like guided installation, updates, and rollbacks. - Provide basic metrics (health status, application version) and logs

If you already have a customer portal or self-service interface for on-prem deployments, you can seamlessly integrate all features into your existing portal or application using our API or SDK. Alternatively, you can use our pre-built, white-labeled customer portal.

Here’s what an integration into your existing customer portal could look like:

  import {DistrService} from "@glasskube/distr-sdk";
  
  const customerHasAutoUpdatesEnabled = false; // replace with your own logic
  const deploymentTargetId = 'da1d7130-bfa9-49a1-b567-c49728837df7';
  const service = new DistrService({
      apiKey: 'distr-8c24167aeb5fd4bb48b6d2140927df0f'
  });
  
  const result = await service.isOutdated(deploymentTargetId);
  if(result.deploymentTarget.deployment?.latestStatus?.type !== 'ok') {
      // let the user decide whether to allow updates from an instable state, e.g. with:
      if(!confirm('The deployment is not in a stable state. Do you want to update anyway?')) {
          return;
      }
  }
  if(result.outdated) {
      if(customerHasAutoUpdatesEnabled) {
          await service.updateDeployment({deploymentTargetId});
          // notify customer about the update
      } else {
          const newerVersionsAvailable = result.newerVersions;
          // notify customer about the newer versions, e.g. via email
      }
  }


With the SDK/API, you can: - Display real-time deployed version and deployment status directly within the application, notifying customers when their deployed version is outdated. - Allow customers to trigger updates from within your app using a simple API call

If you’re distributing software and want to streamline updates or enhance monitoring, we’d love your feedback and are here to answer any questions.

Getting started is easy—just bring your Docker Compose file or Helm chart, and we’ll guide you through the rest.

Check out the fully managed version (https://app.distr.sh/register) and explore our documentation (https://distr.sh/docs/) to learn more.