Skip to content
Xbot-me edited this page Jun 23, 2026 · 3 revisions

⚑ Welcome to the PulseDeploy Wiki

PulseDeploy is a modular Bash automation toolkit for spinning up production-ready Linux servers in minutes β€” on any major VPS provider or AWS EC2.

This wiki covers everything from quick installation to advanced per-module usage, troubleshooting, and contribution guides.


πŸ“š Table of Contents

Page Description
Home You are here
Installation How to clone and run PulseDeploy
Supported OS & Distros Ubuntu, Debian, Amazon Linux, Rocky Linux
Stacks LEMP, LAMP, Node.js setup details
Services Redis, Docker, Firewall, Certbot, Swap, PHP Tuning
AWS EC2 Guide EC2-specific setup, Security Groups, IMDSv2
Troubleshooting Common errors and fixes
Changelog Version history
Flags & Non-Interactive Mode CLI flags, env vars, AWS user-data, cloud-init

πŸš€ Quick Start

git clone https://github.com/Xbot-me/PulseDeploy.git
cd PulseDeploy
chmod +x bootstrap.sh scripts/**/*.sh
sudo bash bootstrap.sh

The interactive wizard will:

  1. Auto-detect your OS and version
  2. Ask which stack to install (LEMP / LAMP / Node.js / skip)
  3. Let you toggle optional services
  4. Show a full summary before making any changes

🧱 What Gets Installed

Stacks

Stack Components
LEMP Nginx + PHP-FPM (8.1/8.2/8.3) + MySQL
LAMP Apache + PHP (8.1/8.2/8.3) + MySQL
Node.js Node LTS + PM2 + Nginx reverse proxy

Services

Service What it does
Firewall UFW (Debian/Ubuntu) or firewalld (RHEL/Amazon Linux) + fail2ban
Redis Caching layer β€” Unix socket or TCP, auto-sized maxmemory
Docker Docker Engine + Compose v2, log rotation, weekly prune cron
Certbot Let's Encrypt SSL with auto-renewal cron
Swap Auto-sized swap file based on detected RAM, swappiness=10
PHP Tuning PHP-FPM pool tuning, OPcache JIT, php.ini hardening

🐧 Supported Distros

Distro Versions Notes
Ubuntu 20.04, 22.04, 24.04 Full support
Debian 11 (Bullseye), 12 (Bookworm) Full support
Amazon Linux 2, 2023 AWS-aware β€” IMDSv2 + Security Group hints
CentOS / Rocky / AlmaLinux 8, 9 SELinux-aware, Remi repo for PHP

πŸ”’ Security Defaults

Every install includes hardened defaults out of the box:

  • server_tokens off / ServerTokens Prod β€” hides server version from HTTP headers
  • Blocked access to .env, .git, .sql, .log, .bak, .sh files via web server rules
  • HTTP security headers on every request (X-Frame-Options, X-Content-Type-Options, Referrer-Policy)
  • fail2ban β€” SSH banned after 3 failed attempts for 24 hours
  • MySQL β€” root password auto-generated, saved to /root/.my.cnf (chmod 600), test DB removed
  • PHP β€” expose_php = Off, memory and upload limits set for production

πŸ“ Project Structure

PulseDeploy/
β”œβ”€β”€ bootstrap.sh                  # Main wizard entry point
β”œβ”€β”€ scripts/
β”‚   β”œβ”€β”€ os/                       # Per-distro package/firewall abstractions
β”‚   β”‚   β”œβ”€β”€ ubuntu.sh
β”‚   β”‚   β”œβ”€β”€ debian.sh
β”‚   β”‚   β”œβ”€β”€ amazon_linux.sh
β”‚   β”‚   └── centos_rocky.sh
β”‚   β”œβ”€β”€ stacks/                   # Stack installers
β”‚   β”‚   β”œβ”€β”€ lemp.sh
β”‚   β”‚   β”œβ”€β”€ lamp.sh
β”‚   β”‚   └── node.sh
β”‚   └── services/                 # Optional service installers
β”‚       β”œβ”€β”€ firewall.sh
β”‚       β”œβ”€β”€ redis.sh
β”‚       β”œβ”€β”€ docker.sh
β”‚       β”œβ”€β”€ certbot.sh
β”‚       β”œβ”€β”€ swap.sh
β”‚       └── php_tune.sh
β”œβ”€β”€ config/
β”‚   β”œβ”€β”€ nginx/default.conf        # Production Nginx template
β”‚   └── apache/vhost.conf         # Production Apache vhost
└── .github/
    β”œβ”€β”€ workflows/ci.yml          # ShellCheck + config validation CI
    β”œβ”€β”€ ISSUE_TEMPLATE/           # Bug report & feature request forms
    └── PULL_REQUEST_TEMPLATE.md

🧩 Running Modules Standalone

Every module is independently sourceable β€” no need to run the full wizard on an existing server:

# Tune PHP-FPM only
source scripts/os/ubuntu.sh
source scripts/services/php_tune.sh
tune_php_fpm

# Install Docker only
source scripts/os/ubuntu.sh
source scripts/services/docker.sh
install_docker

# Set up Redis only
source scripts/os/debian.sh
source scripts/services/redis.sh
install_redis

πŸ“‹ Post-Install Checklist

After running PulseDeploy, make sure to:

  • Delete /var/www/html/info.php (PHP test page β€” exposed by default after install)
  • Run certbot --nginx -d yourdomain.com to issue SSL
  • Point your domain DNS A record to your server IP
  • Check fail2ban: fail2ban-client status sshd
  • Check firewall: ufw status or firewall-cmd --list-all
  • Test Redis: redis-cli ping β†’ should return PONG
  • On AWS: verify ports 80/443/22 are open in your Security Group

πŸ—ΊοΈ Roadmap

  • --non-interactive flag for cloud-init / AWS user-data bootstrapping
  • WordPress fast-deploy module (LEMP + WP-CLI + config)
  • healthcheck.sh β€” audit an existing server's services and config
  • PostgreSQL stack option
  • Notification on install complete (Slack / email)

🀝 Contributing

See CONTRIBUTING.md for the full guide.

Short version:

  1. Fork the repo
  2. Create a branch: feat/your-feature or fix/your-fix
  3. Run shellcheck -x on any .sh files you changed
  4. Open a PR using the provided template

πŸ“œ License

MIT β€” free to use, fork, and adapt.


Built by @Xbot-me Β· build it Β· break it Β· fix it Β· automate it

Clone this wiki locally