raspap-webgui/README.md

179 lines
9.4 KiB
Markdown
Raw Normal View History

2015-02-27 16:10:52 +01:00
![](http://i.imgur.com/xeKD93p.png)
2019-02-08 12:21:58 +01:00
# `$ raspap-webgui` [![Release 1.4.1](https://img.shields.io/badge/Release-1.4.1-green.svg)](https://github.com/billz/raspap-webgui/releases) [![Awesome](https://awesome.re/badge.svg)](https://github.com/thibmaek/awesome-raspberry-pi)
2018-09-22 13:02:02 +02:00
2017-11-06 17:09:38 +01:00
A simple, responsive web interface to control wifi, hostapd and related services on the Raspberry Pi.
2015-02-27 16:10:52 +01:00
2019-01-21 11:38:25 +01:00
This project was inspired by a [**blog post**](http://sirlagz.net/2013/02/06/script-web-configuration-page-for-raspberry-pi/) by SirLagz about using a web page rather than ssh to configure wifi and hostapd settings on the Raspberry Pi. I began by prettifying the UI by wrapping it in [**SB Admin 2**](https://github.com/BlackrockDigital/startbootstrap-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, a Quick Installer, support for themes and more. RaspAP has been featured on sites such as [Instructables](http://www.instructables.com/id/Raspberry-Pi-As-Completely-Wireless-Router/), [Adafruit](https://blog.adafruit.com/2016/06/24/raspap-wifi-configuration-portal-piday-raspberrypi-raspberry_pi/), [Raspberry Pi Weekly](https://www.raspberrypi.org/weekly/commander/) and [Awesome Raspberry Pi](https://project-awesome.org/thibmaek/awesome-raspberry-pi) and implemented in countless projects.
2015-02-27 17:18:06 +01:00
We'd be curious to hear about how you use this with your own RPi-powered projects. Until then, here are some screenshots:
2015-02-27 16:10:52 +01:00
2019-03-18 17:09:33 +01:00
![](https://i.imgur.com/lQ57jVg.png)
![](https://i.imgur.com/jFDMEy6.png)
![](https://i.imgur.com/ck0XS8P.png)
![](https://i.imgur.com/Vaej8Xv.png)
![](https://i.imgur.com/iNuMMip.png)
2015-02-27 16:10:52 +01:00
## Contents
2015-03-11 11:34:35 +01:00
- [Prerequisites](#prerequisites)
2016-06-16 17:02:47 +02:00
- [Quick installer](#quick-installer)
2019-04-09 21:56:19 +02:00
- [Simultaneous AP and Wifi client](#simultaneous-ap-and-wifi-client)
2019-03-11 23:38:42 +01:00
- [Support us](#support-us)
2016-06-16 17:02:47 +02:00
- [Manual installation](#manual-installation)
2018-06-01 20:19:07 +02:00
- [Multilingual support](#multilingual-support)
2015-03-11 12:18:45 +01:00
- [Optional services](#optional-services)
2015-02-27 16:10:52 +01:00
- [How to contribute](#how-to-contribute)
2015-03-11 12:17:03 +01:00
- [License](#license)
2015-02-27 16:10:52 +01:00
2015-03-11 11:34:35 +01:00
## Prerequisites
2019-03-06 01:34:34 +01:00
Start with a clean install of the [latest release of Raspbian](https://www.raspberrypi.org/downloads/raspbian/) (currently Stretch). Raspbian Stretch Lite is recommended.
2015-03-11 11:34:35 +01:00
2019-03-06 01:34:34 +01:00
1. Update Raspbian, including the kernel and firmware, followed by a reboot:
```
sudo apt-get update
sudo apt-get dist-upgrade
sudo reboot
```
2. Set the WiFi country in raspi-config's **Localisation Options**: `sudo raspi-config`
2015-03-11 11:34:35 +01:00
2019-03-06 01:34:34 +01:00
3. If you have an older Raspberry Pi without an onboard WiFi chipset, the [**Edimax Wireless 802.11b/g/n nano USB adapter**](https://www.edimax.com/edimax/merchandise/merchandise_detail/data/edimax/global/wireless_adapters_n150/ew-7811un) is an excellent option it's small, cheap and has good driver support.
2015-03-11 11:34:35 +01:00
2019-03-06 01:34:34 +01:00
With the prerequisites done, you can proceed with either the Quick installer or Manual installation steps below.
2015-03-11 12:17:03 +01:00
2016-06-16 17:02:47 +02:00
## Quick installer
Install RaspAP from your RaspberryPi's shell prompt:
```sh
2019-04-04 15:11:06 +02:00
wget -q https://git.io/voEUQ -O /tmp/raspap && bash /tmp/raspap
2016-06-16 17:02:47 +02:00
```
The installer will complete the steps in the manual installation (below) for you.
2016-10-23 22:39:22 +02:00
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
2016-10-23 22:39:22 +02:00
* DHCP range: 10.3.141.50 to 10.3.141.255
* SSID: `raspi-webgui`
* Password: ChangeMe
2019-04-09 21:56:19 +02:00
## Simultaneous AP and Wifi client
2019-04-09 23:51:50 +02:00
RaspAP lets you easily create an AP with a Wifi client configuration (also known as managed mode). When configured as a WiFi client, enable the AP from the **Advanced** tab of **Configure hotspot** by sliding the **Wifi client AP mode** toggle. Save settings and start the hotspot. The managed mode AP is functional without restart.
2019-04-09 21:56:19 +02:00
![](https://i.imgur.com/4JkK2a5.png)
2019-03-11 23:38:42 +01:00
## Support us
2019-04-09 21:54:15 +02:00
RaspAP is free software, but powered by your support. If you find RaspAP useful for your personal projects, please consider making a small donation. We believe strongly about creating high quality, intuitive software for the Raspberry Pi, as well as the importance of keeping it maintained.
2019-03-11 23:38:42 +01:00
[![Beerpay](https://beerpay.io/billz/raspap-webgui/badge.svg?style=flat)](https://beerpay.io/billz/raspap-webgui)
2016-06-16 17:02:47 +02:00
## Manual installation
2017-11-17 08:11:18 +01:00
These steps apply to the latest release of Raspbian (currently [Stretch](https://www.raspberrypi.org/downloads/raspbian/)). Notes for previously released versions are provided, where applicable. Start off by installing git, lighttpd, php7, hostapd and dnsmasq.
2015-02-27 16:10:52 +01:00
```sh
2019-04-04 16:11:41 +02:00
sudo apt-get install git lighttpd php7.0-cgi hostapd dnsmasq vnstat
2015-02-27 16:10:52 +01:00
```
2017-11-17 08:11:18 +01:00
**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.
2015-02-27 16:10:52 +01:00
```sh
2017-11-17 08:11:18 +01:00
sudo lighttpd-enable-mod fastcgi-php
2016-10-22 23:02:39 +02:00
sudo service lighttpd restart
2015-02-27 16:10:52 +01:00
```
2015-02-28 00:31:34 +01:00
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`, substituting your wireless interface for `wlan0` if needed:
2015-02-27 16:10:52 +01:00
```sh
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 -i wlan0 scan_results
www-data ALL=(ALL) NOPASSWD:/sbin/wpa_cli -i wlan0 scan
www-data ALL=(ALL) NOPASSWD:/sbin/wpa_cli -i wlan0 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
2017-11-17 08:11:18 +01:00
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
2015-02-27 16:10:52 +01:00
```
2015-02-27 17:38:09 +01:00
2016-08-31 10:45:00 +02:00
Once those modifications are done, git clone the files to `/var/www/html`.
**Note:** for older versions of Raspbian (before Jessie, May 2016) use
2016-08-31 10:48:56 +02:00
`/var/www` instead.
2015-02-27 17:38:09 +01:00
```sh
2016-08-31 10:45:00 +02:00
sudo rm -rf /var/www/html
sudo git clone https://github.com/billz/raspap-webgui /var/www/html
2015-02-27 17:38:09 +01:00
```
Set the files ownership to `www-data` user.
```sh
2016-08-31 10:45:00 +02:00
sudo chown -R www-data:www-data /var/www/html
2015-02-27 17:38:09 +01:00
```
2016-05-29 17:38:43 +02:00
Move the RaspAP configuration file to the correct location
```sh
sudo mkdir /etc/raspap
2016-08-31 10:45:00 +02:00
sudo mv /var/www/html/raspap.php /etc/raspap/
sudo chown -R www-data:www-data /etc/raspap
2016-05-29 17:38:43 +02:00
```
2017-11-17 08:11:18 +01:00
Move the HostAPD logging scripts to the correct location
```sh
sudo mkdir /etc/raspap/hostapd
sudo mv /var/www/html/installers/*log.sh /etc/raspap/hostapd
```
2015-02-27 17:38:09 +01:00
Reboot and it should be up and running!
```sh
sudo reboot
```
2015-03-11 12:17:03 +01:00
2016-05-29 17:38:43 +02:00
The default username is 'admin' and the default password is 'secret'.
2018-06-01 20:19:07 +02:00
## Multilingual support
RaspAP uses [GNU Gettext](https://www.gnu.org/software/gettext/) to manage multilingual messages. In order to use RaspAP with one of our supported translations, you must configure a corresponding language package on your RPi. To list languages currently installed on your system, use `locale -a` at the shell prompt. To generate new locales, run `sudo dpkg-reconfigure locales` and select any other desired locales. Details are provided on our [wiki](https://github.com/billz/raspap-webgui/wiki/Translations#raspap-in-your-language).
The following translations are currently maintained by the project:
2018-06-16 23:48:00 +02:00
- Deutsch
2018-06-01 20:19:07 +02:00
- Français
- Italiano
- Português
- Svenska
- Nederlands
2018-10-17 17:56:21 +02:00
- 简体中文 (Chinese Simplified)
2018-11-04 18:02:04 +01:00
- Čeština
2018-11-19 18:26:44 +01:00
- Русский
2019-01-13 09:56:48 +01:00
- Español
2019-03-05 00:17:03 +01:00
- Finnish
- Sinhala
2018-06-01 20:19:07 +02:00
If your language is not in the list above, why not [contribute a translation](https://github.com/billz/raspap-webgui/wiki/Translations#contributing-a-translation)? Contributors will receive credit as the original translators.
2015-03-11 12:17:03 +01:00
## 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 `/var/www/html/includes/config.php`:
2015-03-11 12:17:03 +01:00
```sh
// Optional services, set to true to enable.
define('RASPI_OPENVPN_ENABLED', false );
define('RASPI_TORPROXY_ENABLED', false );
```
2015-03-11 14:33:04 +01:00
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.
2015-03-11 12:17:03 +01:00
2015-02-27 16:10:52 +01:00
## 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
2016-05-01 08:54:24 +02:00
See the [LICENSE](./LICENSE) file.