FreeWifi PHP Captive Portal, useful for builds coffee or restaurants free hotspots without pay external cloud services. Works with Ubiquiti Unifi controller v4.X and v5.X
NB: This project has been deprecated. It's works anyway, but I suggest you to take a look to a modern springboot reimplementation with embedded webserver and administration panel: jEspresso Guest Portal
WARNING: Some countries' laws, require a logging data for guests activities from wifi hotspots. This tool does not collect any data or logs, so use it at your risk. If required in your country, install a logging system by yourself. I'm not responsible for law violations!
- Mac address/email authentication for free limited-time wifi access;
- Registered users authentication (support limited time login from single mac address);
- Remaining time counter for users (you can show them fake values, hiding minutes from remaining time);
- Blocking expired session's mac-address for minutes (or hours / days);
- Multilanguage and language browser detection (italian/english);
- Single customizable frontend theme.
- Mail login supports for guests, with logging useful for signing up to newsletters - NEW
- Disabling registered users login (set hotspot for guests only) - NEW
- Permanent login support - NEW
- Ubiquiti Unifi Controller (tested on 4.8.20 version)
- Linux Debian or Windows Lamp (tested on Debian and Raspbian 8)
- Nginx or Apache2 webserver with php enabled
- Sqlite3 or Mysql 5.5 server
- PHP 5.5 with mysql and/or sqlite3 PDO support
- PhpMyAdmin or external database client for backend [OPTIONAL]
-
Prepare your system installing the unifi controller, a web server (Nginx/Apache) with PHP/PDO CURL and a DBMS (Mysql or Sqlite3);
-
Put guest/ directory into webserver root (like /var/www/html) and change permissions to access www-data webserver user;
-
To increase security, move guest/s/default/db/hotspot.sqlite and hotspot.sql files to another path (like /var) inaccessible from web, but accessible from php;
-
Edit guest/s/default/config.inc.php Unifi Controller options, database settings and $GLOBALS['sessionLogging'] with random string.
-
If you use mysql, import hotspot.sql file into database (you can use PhpMyAdmin). If you prefer sqlite, set $GLOBALS['dbms']='sqlite' and $GLOBALS['sqliteFile'] to hotspot.sqlite file. For backend you can use sqliteweb (https://github.com/coleifer/sqlite-web).
-
Log in in Unifi Controller and set External Hotspot (from Guest Policies) to redirect to custom captive ip address.
-
All access will be logged into access_logs database table (set $GLOBALS['logAccessEnabled']) to false for disabling logging)
-
Set $GLOBALS['GuestMailAccess'] to true to enable guest authentication by email address (useful for signing up to newsletter)
-
Set $GLOBALS['showHomeRegistered'] to false to hide disable registered accounts (guest only)
-
Enjoy
This tool is released under MIT License
This Captive Portal is based on
- Medoo (http://medoo.in/)
- UniFi API browser (https://github.com/Art-of-WiFi/UniFi-API-browser)
Springboot / Angular reimplementation. Work in progress.
Emanuele Paiano - nixw0rm [at] gmail [dot] com
If you like this project, consider a little donation, so I can buy new hardware for testing and development. At least you can offer me a coffee.. :)