Skip to content

Repository files navigation

BROLIT-SHELL

🌟 About the project

BROLIT-SHELL is a server management tool built on BASH, designed to expediently set up a LEMP Stack on Ubuntu servers (versions 22.04, 24.04, and 26.04). It streamlines the process of automating and restoring backups, deploying PHP projects, and executing various essential IT tasks efficiently.

ScreenShot

πŸ‘Ύ Why Bash?

  • Natively pre-installed on Linux systems.
  • Lightweight with minimal dependencies.

πŸ’‘ Benefits

  • Standardize server configurations.
  • Automate IT/DevOps tasks for efficiency.
  • Minimize time spent and errors in IT/DevOps operations.

🎯 Features

  • Fully open-source.
  • Automated LEMP stack installation (Nginx or OpenResty, MySQL/MariaDB, PHP).
  • Proxmox VE support with OpenResty as reverse proxy (replaces Nginx Proxy Manager).
  • Simplified backup and restoration processes.
  • Backup upload functionality to Dropbox or an FTP server.
  • Restore backups from Dropbox, URLs, or local files.
  • Site migration: move a Dockerized project between two brolit-managed servers with a single command, run from the source (BETA).
  • Streamlined creation, deployment, and hosting of PHP projects.
  • WordPress automated installation feature.
  • WP-CLI actions helper for WordPress management.
  • Integration of Let's Encrypt for SSL/TLS management.
  • Cloudflare support through API integration.
  • Image optimization tools to enhance web performance.
  • Comprehensive security tools, including malware scanners.
  • IP/Domain blacklist checking tool.
  • Email and Telegram notifications for system alerts.
  • Additional features and tools for enhanced server management.

🎯 New features! (since v 3.5)

  • Enhanced Docker Integration:
    • Facilitates backing up, restoring, and deploying new projects within Docker containers.
    • Offers WordPress-cli support specifically tailored for Docker environments.
  • Wordfence-cli scanning capabilities for WordPress sites.
  • OpenResty support with Lua API for dynamic proxy management.
  • Proxmox VE integration: manage OpenResty inside VMs via SSH.

⚠️ Supports

Ubuntu LTS 22.04, 24.04, or 26.04

Packages Versions BROLIT config
Nginx O.S default nginx.conf + mime.types + server blocks
OpenResty Latest nginx.conf + mime.types + Lua API (port 8080)
Lets Encrypt O.S default default config
MySQL O.S default my.cnf
MariaDB O.S default my.cnf
PHP-FPM 8.3.x/8.4.x/8.5.x php.ini + php-fpm.conf + www.conf
Redis O.S default redis.conf + object-cache.php
Monit O.S default monitrc + mysql + phpfpm + nginx + redis + system
WordPress latest default config
WP-CLI latest default config
Docker latest default config

Proxmox VE Integration

BROLIT-SHELL supports Proxmox VE environments with OpenResty as the reverse proxy inside VMs. This replaces Nginx Proxy Manager with a fully API-managed solution:

  • Runs directly on the Proxmox VE node (hypervisor) to provision a dedicated OpenResty gateway VM from scratch: creates the VM via qm, waits for it to come up, installs brolit-shell + OpenResty on it over SSH, registers a persistent SSH NAT rule, and points the node's own brolit_conf.json at the new VM β€” one call (proxmox_provision_openresty_vm), reachable from the main menu as PROXMOX TOOLS whenever brolit-shell detects it's running on a Proxmox node.
  • SSH-key-based authentication to the gateway VM (dedicated ed25519 keypair, injected via cloud-init) β€” no passwords stored or prompted for routine operations.
  • Install and configure OpenResty inside the VM via SSH.
  • Lua API for CRUD operations on proxy routes (port 8080, bearer-token authenticated, network-ACL restricted to the private subnet).
  • Certbot integration aware of Proxmox mode: DNS-01 challenges via Cloudflare for Cloudflare-managed domains, webroot challenges otherwise β€” both executed on the gateway VM, not the orchestrating node.
  • Migrate proxy hosts from an existing Nginx Proxy Manager via its API (optional; routes can also be created directly when NPM's API isn't reachable).
  • brolit-shell integration: PROXMOX_MODE=enabled + SERVER_CONFIG.openresty_vm_ip in config, set automatically by the provisioning flow.

Enhanced installation support for leading tools

Experience streamlined setup for a range of exceptional tools including Netdata, Portainer, Portainer Agent, Cockpit, Zabbix, and more.

Third party utils

BROLIT Shell uses some third-party tools:

Dropbox Uploader

Dropbox Uploader is a BASH script which can be used to upload, download, list or delete files from Dropbox, an online file sharing, synchronization and backup service.

Wordfence-cli

Wordfence-cli is a widely-used security tool for WordPress that provides features like malware scanning, and security monitoring.

Blacklist Checker

Blacklist check UNIX/Linux utility.

Nench

VPS benchmark script β€” based on the popular bench.sh, plus CPU and ioping tests, and dual-stack IPv4 and v6 speedtests by default.

βš™οΈ Installation

IMPORTANT: The script needs to be runned by root.

Cloud-init

#cloud-config
package_update: true
package_upgrade: true
packages:
 - git
runcmd:
- cd /root/
- git clone https://github.com/gauchocode/brolit-shell
- chmod +x brolit-shell/runner.sh

Manual

Cloning repo:

git clone https://github.com/gauchocode/brolit-shell

Change directories to the new ~/brolit-shell directory:

cd ~/brolit-shell

Give the execution permission to the script:

chmod +x runner.sh

🚩 First steps

Execute BROLIT:

./runner.sh

The first time you run BROLIT, it will prompt you to create a new config file: ~/.brolit_conf.json. Then open and edit this json file.

Running as cron job

This script relies on a different configuration file for each system user. The default configuration file location is /root/.brolit_conf.json. This means that if you setup the script with your user and then you try to run a cron job as root, it won't work.

  • To setup the script to run as a cron job please use the option "CRON TASKS"

Running tasks without menu

You can run some tasks like this:

./runner.sh --task "cloudflare-api" --subtask "clear_cache" --domain "gauchocode.com"

More information here: FLAGS

🚨 Update

BREAKING CHANGES SINCE VERSION 3.2

Before upgrade:

  1. Backup and rename the .brolit_conf.json
  2. Run updater.sh
  3. Run runner.sh to regenerate .brolit_conf.json
  4. Edit .brolit_conf.json
  5. If you use Dropbox as backup system, please move old backups to another folder (new directory structure since version 3.2)
  6. Run runner.sh

🧭 TODO List

TODO List

πŸ‘‹ Contributing

Please read CONTRIBUTING for details on our code of conduct, and the process for submitting pull requests to us.

Best Practices

πŸ‘₯ Team

This theme is maintained by the following person(s) and a bunch of awesome contributors.

Leandro Padula
Leandro Padula

⚠️ License

This project is licensed under the MIT License - see the LICENSE file for details.

Releases

Packages

Used by

Contributors

Languages