bitbeet.dev
← volver a proyectos
// 02 · devops

WASM

CLI de despliegue distribuida como paquete para Linux.


STACK
Python 3.10+ · Nginx · Apache · systemd · Certbot · MySQL · PostgreSQL · Redis · MongoDB · PyPI · OBS
STATUS
live
LINK
github.com/Perkybeet/wasm ↗

WASM es una CLI empaquetada con todas las de la ley, no un script de shell. Se distribuye en PyPI (pip install wasm-cli) y en el openSUSE Build Service con paquetes nativos para Ubuntu 22.04 LTS, 24.04 LTS, Debian 12, Fedora 40 y openSUSE. Una instalación, un comando, un servidor corriendo.

Flujo de un deploy

WASM distribution and runtime: PyPI and OBS packages install the CLI, which orchestrates Nginx, systemd, Certbot and databases on the target Linux server // DISTRIBUTION PyPI pip install wasm-cli v0.15.8 openSUSE Build Service deb · rpm · native packages ubuntu · debian · fedora · opensuse Source github.com/Perkybeet/wasm $ wasm deploy --app APP CLI runtime // TARGETS ON HOST WEB SERVER Nginx / Apache vhost · gzip · headers asset cache · HTTP/2 PROCESS systemd unit restart=always · journald env · limits SSL Certbot letsencrypt HTTP-01 auto-renew · 60 day DATA (OPTIONAL) MySQL · Postgres Redis · MongoDB provisioned · env-injected
distributed as package (PyPI + OBS) · orchestrates web, process, SSL and databases on the target

El registro de deployers/

La detección de framework es pluggable. Cada target implementa una interfaz pequeña y se registra; la CLI elige el adecuado según el contenido del proyecto.

# src/wasm/deployers/registry.py
REGISTRY = {
    'nextjs': NextJsDeployer,
    'nodejs': NodeJsDeployer,
    'vite': ViteDeployer,
    'python': PythonDeployer,
    'static': StaticDeployer,
    'docker-compose': DockerComposeDeployer,
    'monorepo': MonorepoDeployer,
}

Lo que te gestiona

  • Build del framework — ejecuta el paso correcto, maneja lockfiles, cachea.
  • Servidor web — genera el vhost de Nginx o Apache con defaults sensatos (HTTP/2, gzip, cabeceras de seguridad, cache de assets).
  • SSL — emite y renueva certificados vía Certbot, método webroot. Resuelve el challenge HTTP-01 sin downtime.
  • Unidades systemd — servicio por app con auto-restart, logs en journald, env file y límites de recursos.
  • Bases de datos — aprovisionamiento opcional de MySQL, PostgreSQL, Redis y MongoDB con credenciales al entorno del servicio.
  • Snapshots — cada deploy guarda la release anterior. wasm rollback <app> cambia el symlink y reinicia.
  • Dashboard web — UI opcional para estado, logs y rollback con un clic, servida sobre el mismo Nginx.

Ergonomía CLI

$ wasm deploy --app bitbeet.dev --repo git@github.com:Perkybeet/bitbeet.git
 detectando framework static
 clone + install ok
 build dist/ (15.2 MB)
 vhost nginx generado
 unidad systemd bitbeet.dev.service
 SSL (letsencrypt)          → emitido
 health check 200 OK
 en vivo en https://bitbeet.dev

Este mismo sitio está desplegado con WASM — el vhost de Nginx que sirve bitbeet.dev salió del tooling de wasm deploy.


7
tipos de deployer
4
distros empaquetadas
v0.15
release actual