WASM is a command-line tool for deploying and managing web applications on Linux servers. It automates the deployment workflow from repository cloning through production serving, handling Nginx/Apache configuration, SSL certificates, systemd services, and application builds.
- Deploy Next.js, Node.js, Vite, Python, and static applications
- Configure Nginx and Apache virtual hosts
- Manage SSL certificates via Let's Encrypt/Certbot
- Create and control systemd services
- Database management (MySQL, PostgreSQL, Redis, MongoDB)
- Backup and rollback system
- Web-based dashboard (optional)
- Process monitoring and security scanning
# Add GPG key
curl -fsSL https://download.opensuse.org/repositories/home:/Perkybeet/xUbuntu_24.04/Release.key | \
gpg --dearmor | sudo tee /usr/share/keyrings/wasm.gpg > /dev/null
# Add repository
echo 'deb [signed-by=/usr/share/keyrings/wasm.gpg] https://download.opensuse.org/repositories/home:/Perkybeet/xUbuntu_24.04/ /' | \
sudo tee /etc/apt/sources.list.d/wasm.list
# Install
sudo apt update
sudo apt install wasmSupported versions:
- Ubuntu 22.04 LTS (Jammy Jellyfish)
- Ubuntu 24.04 LTS (Noble Numbat)
- Debian 12 (Bookworm)
sudo dnf config-manager --add-repo \
https://download.opensuse.org/repositories/home:/Perkybeet/Fedora_40/home:Perkybeet.repo
sudo dnf install wasm-cli# Tumbleweed
sudo zypper ar -f \
https://download.opensuse.org/repositories/home:/Perkybeet/openSUSE_Tumbleweed/ \
home_Perkybeet
sudo zypper install wasm-cli
# Leap 15.6
sudo zypper ar -f \
https://download.opensuse.org/repositories/home:/Perkybeet/openSUSE_Leap_15.6/ \
home_Perkybeet
sudo zypper install wasm-clipip install wasm-cligit clone https://github.com/Perkybeet/wasm.git
cd wasm
pip install -e .wasm create \
--domain myapp.example.com \
--source [email protected]:user/my-nextjs-app.git \
--type nextjs \
--port 3000Short syntax:
wasm create -d myapp.example.com -s [email protected]:user/app.git -t nextjs -p 3000Run wasm without arguments to enter interactive mode:
wasmThe interactive wizard will guide you through:
- Application type selection
- Domain configuration
- Source repository
- Port assignment
- SSL certificate setup
# Deploy application
wasm create -d example.com -s [email protected]:user/repo.git -t nextjs
# List deployed applications
wasm list
# View application status
wasm status example.com
# Restart application
wasm restart example.com
# Update application (git pull + rebuild)
wasm update example.com
# Remove application
wasm delete example.com
# View application logs
wasm logs example.com --follow# Create Nginx/Apache site
wasm site create -d example.com -w nginx
# List all sites
wasm site list
# Enable or disable site
wasm site enable example.com
wasm site disable example.com
# Delete site
wasm site delete example.com# Obtain Let's Encrypt certificate
wasm cert create -d example.com
# List certificates
wasm cert list
# Renew certificates
wasm cert renew
# View certificate details
wasm cert info example.com# Create systemd service
wasm service create --name myservice --command "/usr/bin/myapp" --user www-data
# Control services
wasm service start myservice
wasm service stop myservice
wasm service restart myservice
# View service status and logs
wasm service status myservice
wasm service logs myservice --follow
# Delete service
wasm service delete myservice# Install database engine
wasm db install mysql
# Create database
wasm db create mydb --engine mysql
# List databases
wasm db list --engine mysql
# Backup database
wasm db backup mydb --engine mysql --output backup.sql.gz
# Restore database
wasm db restore mydb backup.sql.gz --engine mysql# Create backup
wasm backup create example.com -m "Pre-deployment backup"
# List backups
wasm backup list example.com
# Restore from backup
wasm backup restore BACKUP_ID
# Quick rollback to last backup
wasm rollback example.com| Type | Framework | Auto-Detection |
|---|---|---|
nextjs |
Next.js | next.config.js, next.config.mjs |
nodejs |
Express, Fastify, Koa | package.json with start script |
vite |
React, Vue, Svelte (Vite) | vite.config.js, vite.config.ts |
python |
Django, Flask, FastAPI | requirements.txt, pyproject.toml |
static |
HTML/CSS/JS | index.html |
For each application type, WASM executes:
- Clone repository to
/var/www/apps/wasm-<app-name>/ - Install dependencies (npm, pip, etc.)
- Build application (if applicable)
- Create systemd service
- Configure Nginx/Apache reverse proxy
- Obtain SSL certificate (optional)
- Start service and verify status
Configuration file: /etc/wasm/config.yaml
# Web server preference
webserver: nginx
# Application directory
apps_directory: /var/www/apps
# Service user
service_user: www-data
# SSL configuration
ssl:
enabled: true
provider: certbot
email: [email protected]
# Logging
logging:
level: info
file: /var/log/wasm/wasm.log
# Node.js settings
nodejs:
default_version: 20
use_nvm: false
# Python settings
python:
default_version: "3.11"
use_venv: trueCreate .wasm.yaml in your project root:
type: nextjs
port: 3000
build_command: npm run build
start_command: npm run start
env_vars:
NODE_ENV: production
health_check:
path: /api/health
timeout: 30wasm create [options] Deploy new application
wasm list List deployed applications
wasm status <domain> Show application status
wasm restart <domain> Restart application
wasm stop <domain> Stop application
wasm start <domain> Start application
wasm update <domain> Update application (git pull + rebuild)
wasm delete <domain> Remove application
wasm logs <domain> [options] View application logs
wasm site create <domain> Create site configuration
wasm site list List all sites
wasm site enable <domain> Enable site
wasm site disable <domain> Disable site
wasm site delete <domain> Delete site
wasm site show <domain> Display site configuration
wasm service create [options] Create systemd service
wasm service list List managed services
wasm service status <name> Show service status
wasm service start <name> Start service
wasm service stop <name> Stop service
wasm service restart <name> Restart service
wasm service logs <name> View service logs
wasm service delete <name> Delete service
wasm cert create <domain> Obtain SSL certificate
wasm cert list List certificates
wasm cert info <domain> Show certificate details
wasm cert renew [domain] Renew certificates
wasm cert revoke <domain> Revoke certificate
wasm db install <engine> Install database engine
wasm db create <name> Create database
wasm db drop <name> Drop database
wasm db list List databases
wasm db backup <name> Backup database
wasm db restore <name> <file> Restore database
wasm db user-create <username> Create database user
wasm db grant <user> <db> Grant privileges
wasm backup create <domain> Create backup
wasm backup list [domain] List backups
wasm backup restore <id> Restore from backup
wasm backup delete <id> Delete backup
wasm backup verify <id> Verify backup integrity
wasm rollback <domain> [id] Quick rollback
WASM includes an optional web-based dashboard for remote management.
pip install wasm-cli[web]wasm web start --host 0.0.0.0 --port 8080- Application deployment and management
- Real-time logs and monitoring
- SSL certificate management
- Service control
- Backup creation and restoration
- Database management
- REST API with token authentication
Access the dashboard at http://your-server:8080
- Operating System: Ubuntu 20.04+, Debian 11+, Fedora 38+, openSUSE Leap 15.5+
- Python: 3.10 or higher
- Privileges: sudo access for service management
- nginx or apache2 (web server)
- certbot (SSL certificates)
- git (repository cloning)
- nodejs/npm (for Node.js applications)
- python3-venv (for Python applications)
- mysql-server or postgresql (database support)
WASM will check for missing dependencies and prompt installation when needed.
/var/www/apps/
├── wasm-example-com/
│ ├── current/ # Active deployment
│ ├── releases/ # Previous releases (for rollback)
│ │ ├── 20260114120000/
│ │ └── 20260113150000/
│ ├── shared/ # Persistent files (uploads, logs)
│ └── .env # Environment variables
│
└── wasm-another-app/
└── ...
# Clone repository
git clone https://github.com/Perkybeet/wasm.git
cd wasm
# Create virtual environment
python -m venv venv
source venv/bin/activate
# Install development dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Run linters
black src/
isort src/
ruff check src/This project is licensed under the WASM Non-Commercial Source-Available License (WASM-NCSAL) Version 1.0.
You may use WASM free of charge for:
- Personal projects
- Educational purposes
- Research and development
- Non-commercial use
Commercial use requires a license. This includes:
- Use within commercial organizations
- Providing paid services using WASM
- Reducing operational costs in business environments
- Any revenue-generating use case
For commercial licensing inquiries:
- Email: [email protected], [email protected]
- Phone: +34 637 881 066
- Web: bitbeet.dev
- Certbot - SSL certificate automation
- python-inquirer - Interactive CLI
- The open-source community
- Documentation: GitHub Wiki
- Issues: GitHub Issues
- Email: [email protected]
Developed by Bitbeet
