A personal collection of Bash scripts for Debian-based x86_64 systems. Server bootstrapping, monitoring stack deployment, web server setup, shell quality-of-life tweaks, media downloads, and day-to-day automation.
Scripts are organized into two directories:
standalone/— self-contained scripts, each performing a single task.workflows/— higher-level scripts that chain standalones together to accomplish a larger goal.
Clone the repository:
git clone https://github.com/rebootless/shell-toolkit.git
cd shell-toolkitAll shell scripts are tracked with the executable bit and automatically corrected by GitHub Actions if necessary.
If your local checkout loses executable permissions (for example, after extracting a ZIP archive or copying files to a filesystem that does not preserve Unix permissions), restore them with:
find . -type f -name "*.sh" -exec chmod +x {} \;Then either run an individual script from standalone/ or execute a workflow from workflows/.
A dry run in a disposable VM or non-production environment is always a good idea before using scripts on production systems.
For a fresh Debian installation with only Standard system utilities and OpenSSH server selected:
Run as root:
apt update && apt install -y git && \
git clone https://github.com/rebootless/shell-toolkit && \
cd shell-toolkit/workflows/deploy-server && \
cp .env.example .env && \
nano .envAfter configuring .env, start the deployment:
./deploy-serverEvery script includes a metadata block immediately after the shebang describing its purpose,
requirements, privileges, dependencies, and other properties (summary, description,
sudo, interactive, idempotent, dependencies).
To regenerate the documentation locally:
./generate-docs.py- Debian-based x86_64 Linux system with Bash 5.0+
- Root/
sudoaccess for system-level scripts - Internet connection for package and image downloads
python3(standard library only) to rungenerate-docs.py- Some scripts require additional software such as
Docker,jq,pipx,flatpak, ornpm(see the documentation for details)
Issues and Pull Requests are welcome.
Please follow the rules:
- English comments and documentation
- Metadata block (
# ---DOC-START--- ... # ---DOC-END---) for every new script
Before submitting a Pull Request, ensure that documentation generation succeeds:
./generate-docs.py --strictDistributed under the GNU General Public License v3.0.
Built for self-hosted infrastructure, automation, and observability.