Simple VPS Provisioner

Simple VPS Provisioner
Simple VPS Provisioner (SVP) is a Go-based command-line utility that automates the provisioning of Debian 13 (Trixie) servers into fully configured, production-ready LAMP environments for Drupal or WordPress. With a single command, it installs and configures Nginx, PHP-FPM, MariaDB, Composer, and Certbot. Additionally, install per-domain PHP-FPM pools, UFW firewall rules, and secure SSL certificates. SVP emphasizes speed, idempotency, and security, offering reproducible setups you can trust to run multiple times without breaking existing configurations.
Project Date

Here is the revised version with the correct documentation URL:

Simple VPS Provisioner

Simple VPS Provisioner is a command-line tool that turns a fresh Debian or Ubuntu VPS into a production-ready LAMP environment for Drupal or WordPress with a single command. It’s designed for clean installations and provides a consistent, automated way to deploy sites, manage domains, configure PHP versions, and handle optional SSL via Let’s Encrypt.

What It Does

The tool provides a complete stack including Nginx, PHP-FPM, MariaDB, and optional HTTPS, then configures each site with isolated PHP pools, secure credentials, and a production-grade firewall. It supports both Drupal and WordPress, multiple domains on a single server, Git-based deployments, database imports, and basic authentication to restrict access when needed. Since it is idempotent, you can safely run it multiple times to apply updates or verify the configuration.

Getting Started

To install the tool on a new VPS, run:

curl -fsSL https://raw.githubusercontent.com/willjackson/simple-vps-provisioner/main/install-from-github.sh | sudo bash

After installation, provisioning a site takes only one command. For Drupal (with HTTPS):

sudo svp setup example.com --le-email admin@example.com

or for WordPress (with HTTPS):

sudo svp setup example.com --cms wordpress --le-email admin@example.com

If you prefer to start without SSL, omit the email flag and access your site over HTTP. Once provisioning completes, your site is ready at the domain you specified.

Additional Capabilities

Simple VPS Provisioner includes commands for updating PHP versions, managing SSL certificates, deploying from Git repositories, enabling or disabling HTTP basic auth, verifying server configuration, and setting up multiple domains or environments. You can also import databases during setup or adjust settings through command-line flags, making repeatable deployments easy to script or automate.

Learn More

Full documentation, examples, and troubleshooting guides are available at https://simple-vps-provisioner.will.gg/. The source code and installation scripts can be found on GitHub at https://github.com/willjackson/simple-vps-provisioner.

Simple VPS Provisioner aims to make server setup predictable and fast, providing a straightforward way to deploy Drupal or WordPress sites without manually configuring each service.

Project Status
Project Type
Version
v1.0.0

Saplings AI MCP

Saplings AI MCP
A recipe to enable a fully compliant MCP server on your Drupal site for seamless AI-powered interactions.
Project Date

The Saplings AI MCP Recipe turns your Drupal site into a fully compliant Model Context Protocol (MCP) server by installing and configuring AI Core, AI Agents, the MCP module, and other required dependencies. Once applied, your Drupal installation can talk directly to MCP-aware clients, execute AI functions, and invoke agents, extending your site with a wide range of AI-powered workflows. Drupal’s robust content model and modular architecture make it an ideal MCP server, especially when its content is exposed as resources and combined with AI tools for dynamic content generation and management.


Features

  • Installs AI Core, AI Agents, the MCP module, and other necessary modules.
  • Configures a general-purpose MCP server to support seamless interaction with connected MCP clients.
  • Enables execution of AI functions and invocation of agents from your Drupal site.
  • Allows customization so Drupal content can be exposed as MCP resources and used as AI tools for workflow automation.
  • Keeps configuration open-ended so you can further tune the MCP module, such as pointing it at different LLM providers or adding custom tools and resources as your use cases grow.

Installation Instructions

1. Preparation
Ensure your Drupal installation is up to date. It is recommended to take a full backup of your site before applying the recipe.

2. Dependencies
Verify that Composer is installed on your server, since several dependencies are managed through it.

3. Install the recipe

Use Composer to install the Saplings AI MCP recipe:

composer require drupal/ai_saplings_mcp

4. Enable the modules

After installation, enable the recipe and its modules using Drush (or through the Drupal admin UI):

drush recipe ../recipes/ai_saplings_mcp

5. Test the configuration

Confirm that your setup is working by connecting an MCP client to your Drupal site and testing basic interactions such as listing resources or invoking a simple tool.


Further Configuration

The recipe provides a sensible default MCP server configuration, but you are encouraged to refine it to match your environment:

  • Adjust the MCP server settings provided by the MCP module, including authentication and endpoint options.
  • Swap in different LLM backends or AI providers through Drupal’s AI configuration if you prefer alternate models.
  • Define additional tools and resources that expose Drupal content, search, or custom workflows to your MCP clients.

Once configured, your Drupal site becomes a powerful, AI-aware MCP server that can plug cleanly into modern LLM tooling.

Project Status
Project Type
Version
1.0.x

Media Dupe Detect

Media Dupe Detect module page on Drupal.org
Media Dupe Detect is a Drupal module that integrates with the Media Library to detect duplicate file uploads by hash and prompt users to reuse existing media instead of creating new items.
Project Date

Media Dupe Detect is a Drupal module that enhances the core Media and Media Library experience by automatically identifying duplicate file uploads.

When a user uploads a file through a Media Library widget, the module compares the file hash against existing files. If a match is found, the user is prompted to reuse the existing media item instead of creating a new one.

Features

Media Dupe Detect integrates with the Media Library widget and provides:

  • Detection of duplicate media items based on file hash
  • A prompt to reuse existing media items when a duplicate is found
  • A role-based permission that allows trusted users to bypass duplicate detection
  • Field-level configuration so duplicate checks can be enabled per media field

Typical use cases include:

  • Keeping the Media Library clean and organized
  • Preventing unnecessary duplication of images and documents
  • Supporting large teams and editorial workflows where many users upload assets

Configuration

After installing and enabling the module and its dependencies:

  1. Go to the Form display configuration for the content type or entity type that uses a media field (for example: Structure → Content types → Your type → Manage form display).
  2. On the Media Library widget for the media field, click the gear icon to open the widget settings.
  3. Enable the Detect duplicates option to turn on duplicate detection for that field.
  4. Navigate to People → Permissions and use the Bypass media duplicate upload prevention permission to allow specific roles to upload duplicates when needed.

The module does not add any new configuration pages or content types. All behavior is controlled through existing form display settings and permissions.

Requirements

Media Dupe Detect relies on Drupal core media functionality and file hashing:

For more details, downloads, and issue tracking, see the Media Dupe Detect project page.

Tags
Project Status
Project Type
Version
1.0.0-beta2

Audit Export Module

Audit Export module for Drupal
Audit Export provides a streamlined way to audit Drupal sites, offering automated reports and exports that give administrators and developers clear insight into how their site is structured and configured.
Project Date

Audit Export is a flexible auditing and reporting module for Drupal 7 through 11. It gives administrators and developers a clear view into how their site is structured, where things are configured, and what might need attention. Think of it as a periodic check-up for your Drupal installation, minus the waiting room.

Features

Comprehensive Entity Audits
Review the structure and configuration of content entities, user roles, menus, taxonomy vocabularies, and views. If Drupal stores it, you can probably audit it.

Automated Reports via Cron
Schedule recurring audits with Drupal cron to keep continuous visibility into site configuration.

CSV Export for External Tools
Export audit data as CSV for dashboards, spreadsheets, or external analysis systems.

Drush Integration
Run audits and export reports from the command line using Drush. Ideal for CI/CD pipelines and automation-heavy workflows.

Custom Audit Plugins
Extend the module by building your own audit plugins for custom requirements.

Optional Remote Posting
Send audit results to external APIs or monitoring platforms for centralized reporting.

Similar Modules

You may also want to explore Site Audit.

Post-Installation

Visit /admin/config/system/audit-export to access the admin UI and run audits. Reports can be exported from the UI or generated using:

  • drush audit-export:run
  • drush audit-export:export

Requirements

  • Drupal 7.x through 11.x
  • Drush (optional but recommended)

Supporting the Module

Contributions and feedback are welcome. Submit issues or pull requests on the Audit Export project page.

Tags
Project Status
Project Type
Version
1.0.0-beta1

Drupal + NextJS Starter

Drupal + NextJS Starter
This project provides a starter kit for evaluating a headless Drupal setup with Next.js. It combines Drupal 11 as the content backend with a Next.js 15 frontend, including JSON:API, OAuth, TypeScript, and Tailwind. The environment is containerized using Docker/Docksal, and the repository can be cloned and initialized for testing. The kit is intended to help assess Drupal’s suitability as a backend for a modern Next.js application.
Project Date

Drupal 11 + Next.js Starter Kit

A modern headless CMS starter that combines Drupal 11 as the content management backend with Next.js 15 as the frontend framework.

Features

  • Backend: Drupal 11 with JSON:API, Simple OAuth authentication
  • Frontend: Next.js 15 with App Router, TypeScript, Tailwind CSS
  • Content Types: Pages, Articles, Events with image fields
  • Authentication: OAuth2 client credentials flow
  • Development: Docksal containerized environment

Prerequisites

  • Docksal is installed and running
  • Docker and Docker Compose (installed with Docksal)

Installation

1. Clone and Initialize

git clone git@github.com:willjackson/drupal-nextjs-starter.git d11-nextjs-starter
cd d11-nextjs-starter
fin init

Initialize with Options:

# Initialize with sample content
fin init --content

# Initialize with AI Tools
fin init --ai

# Initialize with both content and AI Tools
fin init --content --ai

Explore this project to try out Drupal and see its utility as a viable, well-supported backend for Next.js. Start managing content with Drupal while leveraging Next.js for a dynamic frontend experience. Invitation is open to use this starter kit and discover its capabilities.

Tags
Project Status
Project Type

Drupal Docksal Starter Template

Drupal Docksal Starter Template
This is a clean starter project for Drupal 11, pre-configured to run in a Docksal development environment.
Project Date

This project provides a clean, Composer-managed Drupal 11 starter site tailored for a smooth development experience with Docksal. It’s intentionally minimal, containing only Drupal core with no contributed modules or themes, making it ideal for developers who want full control over their project’s architecture from the first commit.

What’s Included

This starter ships with a preconfigured Docksal setup using the default LAMP stack, complete with image version pinning to ensure consistent environments. It also includes examples of PHP and MySQL configuration overrides, giving developers a convenient place to adjust settings without touching global system configs.

To streamline setup, the project includes a customizable fin init script that takes care of local bootstrapping tasks. Out of the box, it installs Drupal via Drush and prepares the environment, but you can extend it for tasks such as database imports, enabling modules, preparing settings files, running updates, or managing caches.

Getting Started

If you haven’t installed Docksal yet, begin with the official setup guide at https://docs.docksal.io/getting-started/setup/.

Once your environment is ready, clone the project:

git clone https://github.com/willjackson/Docksal-Drupal-11-Starter.git drupal11
cd drupal11

Run the initialization process:

fin init

This command installs Drupal, configures the environment, and prints login credentials to the terminal. When the process completes, your new site will be available at:

http://drupal11.docksal.site

Learn More

You can explore the full project, view the fin init script, and check out environment configuration examples on GitHub at https://github.com/willjackson/Docksal-Drupal-11-Starter.

This starter aims to provide a clean, dependable foundation for any Drupal 11 build running on Docksal, giving you a predictable environment and a blank slate to develop the features your project actually needs.

Project Status
Project Type
Version
1.0.0