Home/pfSense Templates
Free Templates · Copy & Paste

6 ready-made HTML templates for pfSense

Three pfBlockerNG block pages + three captive portal splash screens. Preview them live, copy the code with one click, paste into pfSense, done. Every template is mobile-responsive and brand-customisable via CSS variables.

pfBlockerNG · Block Pages

Block-page templates

What users see when they try to visit a domain you've blocked. Replaces the default plain-white pfBlockerNG page with something professional.

blocked.example.com
Corporate

Professional

Dark navy + gold. For offices, banks, regulated businesses. Shows blocked URL, client IP, timestamp and an IT contact.

blocked.example.com
Schools & Family

Friendly

Lighter tone, emoji-led messaging. For schools, homes, hostels. Less "corporate scolding", more "hey, this isn't available".

malware.example.com
Security Alert

Threat Detected

Red security-alert aesthetic. For SOCs, MSSPs, serious warnings when a malware domain is caught. Shows threat category + feed source.

How to deploy a block page in pfSense

1

Go to pfBlockerNG DNSBL settings

Make sure pfBlockerNG is installed and at least one DNSBL group is enabled.

Firewall › pfBlockerNG › DNSBL › DNSBL Settings
2

Scroll down to "DNSBL Webserver"

Enable the DNSBL Webserver. Choose a port (default 8081 — must not clash with WebGUI).

3

Find "DNSBL Custom Content"

You'll see a large text area for custom HTML. This overrides the default block page site-wide.

Firewall › pfBlockerNG › DNSBL › DNSBL Settings › DNSBL Custom Content
4

Paste the template HTML

Click Copy HTML on any template above, paste the entire thing into the Custom Content field.

5

Customise the placeholders

Find and replace {{COMPANY_NAME}}, {{IT_EMAIL}}, {{LOGO_URL}} with your organisation's details. Optionally tweak brand colours in the :root CSS block.

6

Keep the pfBlockerNG variables

Do not remove $HOST_NAME$, $CLIENT_IP$, $RULE_NAME$. pfBlockerNG substitutes these live at request time so each user sees the domain they tried to visit.

7

Save and Force Reload

Click Save, then go to Update → Force Reload (All) to apply. Test by trying to reach a blocked domain.

Firewall › pfBlockerNG › Update › Force › Reload (All)
Captive Portal · Splash Pages

Captive portal templates

The splash page guests see on your WiFi before they get internet. All templates include the required pfSense form fields ($PORTAL_ACTION$, zone, redirurl, voucher or accept button).

wifi.hotel.local
Hotel / Resort

Guest WiFi — Voucher

Elegant brand-ready splash. Accepts a voucher code (room key style) + acceptable-use consent. Full brand logo + welcome message.

wifi.cafe.local
Cafe / Modern

Simple Free WiFi

One-click accept. No credentials, just an AUP checkbox and a "Connect" button. Warm coffee-shop aesthetic.

guest.corp.local
Corporate Guest

Visitor Registration

For office lobbies and B2B visitors. Name + company + host + AUP — sent to your RADIUS or logged for compliance.

How to deploy a captive portal in pfSense

1

Create a captive portal zone

Each zone attaches to one interface (usually your guest VLAN or dedicated WiFi interface).

Services › Captive Portal › Add
2

Configure the zone basics

Zone name (e.g. "GuestWiFi"), assign the interface, set idle timeout (e.g. 60 min) and hard timeout (e.g. 480 min).

3

Pick an authentication method

Hotel voucher → select Voucher, generate voucher rolls. Cafe → select "None, don't authenticate" for the simple accept button. Corporate → Local User Manager or RADIUS.

Services › Captive Portal › (zone) › Authentication
4

Upload the portal HTML

Copy one of the templates above and paste into the "Portal page contents" HTML upload.

Services › Captive Portal › (zone) › Upload ▸ Portal page contents
5

Keep the pfSense form variables

Do not change $PORTAL_ACTION$, $PORTAL_ZONE$, $PORTAL_REDIRURL$, accept/auth_voucher/auth_user/auth_pass input names. pfSense's backend matches these exactly.

6

Customise brand and copy

Replace {{VENUE_NAME}}, {{LOGO_URL}}, {{WELCOME_TEXT}} and adjust CSS variables in :root to match your brand.

7

Upload logo/assets (optional)

If referencing an external image, either link to an absolute URL or upload the file alongside the HTML in the same upload section and reference it as captiveportal-logo.png.

8

Save & test

Click Save. Connect a test device to the guest SSID. You should hit the splash page; after accepting you're let through.

Need a fully-branded portal?

We design + deploy fully custom captive portals

Company logo, animated backgrounds, SMS OTP, voucher management UI, session reporting and RADIUS integration. Handover includes admin docs and operator training.

Template code

✓ Copied to clipboard