JSPM

@ebowwa/installations

0.4.6
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 4
  • Score
    100M100P100Q61313F
  • License MIT

Composable server installation utilities for edge deployment automation

Package Exports

  • @ebowwa/installations
  • @ebowwa/installations/automated-setup
  • @ebowwa/installations/bootstrap
  • @ebowwa/installations/clone
  • @ebowwa/installations/deploy-glm-channels
  • @ebowwa/installations/device-auth
  • @ebowwa/installations/doppler
  • @ebowwa/installations/github-auth
  • @ebowwa/installations/runtime
  • @ebowwa/installations/standalone-telegram-bot
  • @ebowwa/installations/sudo
  • @ebowwa/installations/systemd
  • @ebowwa/installations/tailscale-auth

Readme

@ebowwa/seedinstallation

Composable server installation utilities for edge deployment automation.

Features

  • systemd - Create/manage systemd services with security hardening
  • sudo - Run commands as root via SSH (remote execution)
  • bootstrap - Bootstrap/configure new servers
  • device-auth - Device login flows (GitHub, Doppler, Tailscale)
  • clone - Clone git repositories
  • runtime - Detect runtime environment (VPS vs local)

Installation

npm install @ebowwa/seedinstallation

Usage

Systemd Service Management

import { createServiceUnit, SECURITY_PRESETS } from "@ebowwa/seedinstallation/systemd";

await createServiceUnit("my-api", {
  description: "My API Service",
  workingDirectory: "/opt/my-api",
  execStart: "/usr/bin/node index.js",
  ...SECURITY_PRESETS.network,
  context: { host: "5.161.83.44", user: "root" }
});

Environment Detection

import { hasSystemd, safeSystemd } from "@ebowwa/seedinstallation/systemd";

// Check if systemd is available
const check = await hasSystemd();
if (!check.available) {
  console.log("No systemd - running in container/codespaces");
}

// Safe wrapper with fallback
await safeSystemd(
  async () => {
    await createServiceUnit("my-service", { ... });
  },
  {
    requireSystemd: false,
    onNoSystemd: async (check) => {
      console.log(`No systemd: ${check.message}`);
      // Fallback: run process directly
    },
  }
);

License

MIT