LabyrinthAP provides a simple, responsive web interface to control wifi, hostapd, Lokinet daemon and related services necessary to access Lokinet on the Raspberry Pi or Orange Pi.
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Go to file
Bill Zimmerman ba1d065733 Create CNAME 6 years ago
ajax/networking Initial commit to enable logging for hostapd 7 years ago
config Updating install script and removing unneeded configuration file 7 years ago
dist Added vendor directory & gulp support for better dependency organization + compiling less & js files. added gulp 6 years ago
img New .ico and logo image 9 years ago
includes Specifies interface with -i option and wpa_cli. Resolves #163 6 years ago
installers Hotfix: specify interface with wpa_cli in patch_system_files(). Addresses #163 6 years ago
js Updated sudoers to accomodate restarting dhcpcd to apply network settings. 7 years ago
less Added assets + dependencies 9 years ago
vendor Added vendor directory & gulp support for better dependency organization + compiling less & js files. added gulp 6 years ago
.gitignore Initial commit 9 years ago
CNAME Create CNAME 6 years ago
CONTRIBUTING.md Create CONTRIBUTING.md 7 years ago
ISSUE_TEMPLATE.md Create ISSUE_TEMPLATE.md 6 years ago
LICENSE Intial commit 9 years ago
README.md Updated version 6 years ago
_config.yml Set theme jekyll-theme-minimal 6 years ago
bower.json Added vendor directory & gulp support for better dependency organization + compiling less & js files. added gulp 6 years ago
gulpfile.js Added vendor directory & gulp support for better dependency organization + compiling less & js files. added gulp 6 years ago
index.php Updated with minified sb-admin-2.css 6 years ago
package.json Added vendor directory & gulp support for better dependency organization + compiling less & js files. added gulp 6 years ago
raspap.php Fixed up a whole bunch of undefined variable warnings. Added a check to make sure raspap.auth exists before trying to include it. 7 years ago

README.md

$ raspap-webgui Release 1.3.1

A simple, responsive web interface to control wifi, hostapd and related services on the Raspberry Pi.

This project was inspired by a blog post by SirLagz about using a web page rather than ssh to configure wifi and hostapd settings on the Raspberry Pi. I mostly just prettified the UI by wrapping it in SB Admin 2, a Bootstrap based admin theme. Since then, the project has evolved to include greater control over many aspects of a networked RPi, better security, authentication, support for themes and more.

We'd be curious to hear about how you use this with your own Pi-powered access points. Ping us on Twitter (@billzimmerman, @jrmhaig and @SirLagz). Until then, here are some screenshots:

Contents

Prerequisites

You need to install some extra software in order for the Raspberry Pi to act as a WiFi router and access point. If all you're interested in is configuring your RPi as a client on an existing WiFi network, you can skip this step.

There are many guides available to help you select a WiFi adapter, install a compatible driver, configure HostAPD and so on. The details are outside the scope of this project, although I've had consistently good results with the Edimax Wireless 802.11b/g/n nano USB adapter it's small, cheap and easy to work with.

To configure your RPi as a WiFi router, either of these resources will start you on the right track:

After you complete the intial setup, you'll be able to administer these services using the web UI.

Quick installer

Install RaspAP from your RaspberryPi's shell prompt:

$ wget -q https://git.io/voEUQ -O /tmp/raspap && bash /tmp/raspap

The installer will complete the steps in the manual installation (below) for you.

After the reboot at the end of the installation the wireless network will be configured as an access point as follows:

  • IP address: 10.3.141.1
    • Username: admin
    • Password: secret
  • DHCP range: 10.3.141.50 to 10.3.141.255
  • SSID: raspi-webgui
  • Password: ChangeMe

Manual installation

These steps apply to the latest release of Raspbian (currently Stretch). Notes for previously released versions are provided, where applicable. Start off by installing git, lighttpd, php7, hostapd and dnsmasq.

$ sudo apt-get install git lighttpd php7.0-cgi hostapd dnsmasq

Note: for Raspbian Jessie and Wheezy, replace php7.0-cgi with php5-cgi. After that, enable PHP for lighttpd and restart it for the settings to take effect.

sudo lighttpd-enable-mod fastcgi-php
sudo service lighttpd restart

Now comes the fun part. For security reasons, the www-data user which lighttpd runs under is not allowed to start or stop daemons, or run commands like ifdown and ifup, all of which we want our page to do. So what I have done is added the www-data user to the sudoers file, but with restrictions on what commands the user can run. Add the following to the end of /etc/sudoers:

www-data ALL=(ALL) NOPASSWD:/sbin/ifdown wlan0
www-data ALL=(ALL) NOPASSWD:/sbin/ifup wlan0
www-data ALL=(ALL) NOPASSWD:/bin/cat /etc/wpa_supplicant/wpa_supplicant.conf
www-data ALL=(ALL) NOPASSWD:/bin/cp /tmp/wifidata /etc/wpa_supplicant/wpa_supplicant.conf
www-data ALL=(ALL) NOPASSWD:/sbin/wpa_cli scan_results
www-data ALL=(ALL) NOPASSWD:/sbin/wpa_cli scan
www-data ALL=(ALL) NOPASSWD:/sbin/wpa_cli reconfigure
www-data ALL=(ALL) NOPASSWD:/bin/cp /tmp/hostapddata /etc/hostapd/hostapd.conf
www-data ALL=(ALL) NOPASSWD:/etc/init.d/hostapd start
www-data ALL=(ALL) NOPASSWD:/etc/init.d/hostapd stop
www-data ALL=(ALL) NOPASSWD:/etc/init.d/dnsmasq start
www-data ALL=(ALL) NOPASSWD:/etc/init.d/dnsmasq stop
www-data ALL=(ALL) NOPASSWD:/bin/cp /tmp/dhcpddata /etc/dnsmasq.conf
www-data ALL=(ALL) NOPASSWD:/sbin/shutdown -h now
www-data ALL=(ALL) NOPASSWD:/sbin/reboot
www-data ALL=(ALL) NOPASSWD:/sbin/ip link set wlan0 down
www-data ALL=(ALL) NOPASSWD:/sbin/ip link set wlan0 up
www-data ALL=(ALL) NOPASSWD:/sbin/ip -s a f label wlan0
www-data ALL=(ALL) NOPASSWD:/bin/cp /etc/raspap/networking/dhcpcd.conf /etc/dhcpcd.conf
www-data ALL=(ALL) NOPASSWD:/etc/raspap/hostapd/enablelog.sh
www-data ALL=(ALL) NOPASSWD:/etc/raspap/hostapd/disablelog.sh

Once those modifications are done, git clone the files to /var/www/html. Note: for older versions of Raspbian (before Jessie, May 2016) use /var/www instead.

sudo rm -rf /var/www/html
sudo git clone https://github.com/billz/raspap-webgui /var/www/html

Set the files ownership to www-data user.

sudo chown -R www-data:www-data /var/www/html

Move the RaspAP configuration file to the correct location

sudo mkdir /etc/raspap
sudo mv /var/www/html/raspap.php /etc/raspap/
sudo chown -R www-data:www-data /etc/raspap

Move the HostAPD logging scripts to the correct location

sudo mkdir /etc/raspap/hostapd
sudo mv /var/www/html/installers/*log.sh /etc/raspap/hostapd 

Reboot and it should be up and running!

sudo reboot

The default username is 'admin' and the default password is 'secret'.

Optional services

OpenVPN and TOR are two additional services that run perfectly well on the RPi, and are a nice way to extend the usefulness of your WiFi router. I've started on interfaces to administer these services. Not everyone will need them, so for the moment they are disabled by default. You can enable them by changing these options in index.php:

// Optional services, set to true to enable.
define('RASPI_OPENVPN_ENABLED', false );
define('RASPI_TORPROXY_ENABLED', false );

Please note that these are only UI's for now. If there's enough interest I'll complete the funtionality for these optional admin screens.

How to contribute

  1. File an issue in the repository, using the bug tracker, describing the contribution you'd like to make. This will help us to get you started on the right foot.
  2. Fork the project in your account and create a new branch: your-great-feature.
  3. Commit your changes in that branch.
  4. Open a pull request, and reference the initial issue in the pull request message.

License

See the LICENSE file.