Ready-to-run BunkerWeb configurations for popular services, fully editable to fit your stack.
The bunkerweb-templates repository collects community-maintained templates that deliver a working BunkerWeb configuration for well-known services such as WordPress, Plex, Nextcloud, or self-hosted dashboards. Each template mirrors BunkerWeb’s template specification, giving you a safe baseline that you can extend or reshape for your environment.
All templates and documentation in this repository are released under the GNU General Public License v3.0, in line with the main BunkerWeb project.
- Service-first library: Templates target specific apps (e.g. WordPress, Plex) so you can jump straight to a functional setup.
- Self-contained assets: Every entry under
templates/<name>/bundles the JSON definition and referenced configs. - Editable by design: Settings, configs, and steps follow BunkerWeb’s template spec, making tweaks straightforward.
- Built for iteration: Contributor workflows, style guides, and review checklists keep the hub growing sustainably.
- Open collaboration: Discuss ideas, report issues, and ship updates alongside the BunkerWeb community.
BunkerWeb includes three predefined templates (low, medium, high) that bundle common security settings. The easy-mode UI and the USE_TEMPLATE setting can also consume custom templates defined as JSON. A custom template can declare:
- Settings – Multisite settings whose values should override defaults.
- Configs – Paths to reusable NGINX configuration snippets that will be merged into your service.
- Steps – Optional guided steps combining settings and configs so users can adjust the template interactively in the UI.
This repository packages those JSON definitions alongside their configuration snippets, giving you a safe baseline that you can drop into BunkerWeb and adapt to any deployment method.
- Highlights
- How Templates Work
- Table of Contents
- Getting Started
- Available Templates
- Template Anatomy
- Repository Layout
- Contributing
- Community
- License
- Browse templates: Explore
templates/; each directory targets a specific service or use case and includes its required assets. - Review the JSON definition: Inspect
<template>/template.jsonto understand the settings, configs, and optional steps it provides. - Import the template: Either drop the directory into a plugin’s
templates/folder or upload the JSON bundle from the BunkerWeb web UI on theTemplatespage, then reference it with theUSE_TEMPLATEsetting or the easy-mode workflow. - Adjust to taste: Edit the JSON and accompanying configuration snippets so the template reflects your infrastructure.
- Share feedback: Open an issue or pull request if you find improvements, new services, or fixes worth sharing.
| Template | Summary | Directory |
|---|---|---|
| Drupal | Secure template with CMS-aware defaults | templates/drupal/ |
| Jellyfin | Media streaming template with reverse proxy tuning | templates/jellyfin/ |
| Nextcloud | Secure template with WebDAV-aware defaults | templates/nextcloud/ |
| Tomcat | Reverse proxy template with servlet-friendly defaults | templates/tomcat/ |
| WordPress | Secure template with essential hardening defaults | templates/wordpress/ |
templates/
├── wordpress/
│ ├── template.json
│ └── configs/
│ └── modsec/
│ └── wordpress_false_positives.conf
└── plex/
└── template.json
Every template directory mirrors the structure that BunkerWeb expects when loading custom templates from a plugin:
template.jsondescribes the templateid, user-facingname, and optionalsettings,configs, andsteps.configs/contains any NGINX fragments referenced in the JSON file.- Additional assets (e.g. helper scripts, documentation) can live beside these defaults if they assist users.
A minimal template.json might look like:
{
"id": "wordpress",
"name": "WordPress",
"settings": {
"SERVER_NAME": "www.example.com",
"REVERSE_PROXY_HOST": "http://mywp",
"MAX_CLIENT_SIZE": "50m",
"MODSECURITY_CRS_PLUGINS": "wordpress-rule-exclusions"
},
"configs": [
"modsec/wordpress_false_positives.conf"
],
"steps": [
{
"title": "Domains and TLS",
"subtitle": "Point the template at your WordPress hostname(s).",
"settings": [
"SERVER_NAME"
]
},
{
"title": "Reverse proxy",
"subtitle": "Tell BunkerWeb where your WordPress upstream lives.",
"settings": [
"REVERSE_PROXY_HOST",
"MAX_CLIENT_SIZE",
"MODSECURITY_CRS_PLUGINS"
],
"configs": [
"modsec/wordpress_false_positives.conf"
]
}
]
}And its directory can be embedded in a plugin like:
plugins/
└── example-plugin/
├── plugin.json
└── templates/
└── wordpress/
├── template.json
└── configs/
└── modsec/
└── wordpress_false_positives.conf
Alternatively, you can zip or upload the directory contents directly from the BunkerWeb web UI (Templates page) to make it available without packaging a plugin.
templates/– Community-curated templates, one directory per service with itstemplate.jsonand related configs.TEMPLATE_GUIDE.md– Canonical instructions for authors creating or updating a template.CONTRIBUTING.md– Contribution workflow, review expectations, and the submission checklist.
We welcome community contributions! Review the CONTRIBUTING.md guide for the full workflow. In short:
- Fork the repository and create a feature branch.
- Add or update your template following the guidelines.
- Submit a pull request describing your changes and any testing performed.
Maintainers and community members will review submissions collaboratively to ensure templates stay reliable and helpful.
Before you push, install the repository’s pre-commit hooks (pre-commit install) and run pre-commit run --all-files so formatting, spell-check, and secret scans pass locally.
Questions or ideas? Join the conversation with fellow BunkerWeb maintainers and users:
- Discord: discord.gg/YEdMKqztMZ
- GitHub Issues: Use the issue tracker to report bugs or request new templates.
- Code of Conduct: Review our community guidelines before engaging.
This repository, including all templates and documentation, is licensed under the GNU General Public License v3.0. By contributing, you agree that your contributions will be released under the same license.
