Installing openNDS
##################

Prerequisites
*************

openNDS is designed to run on a device configured as an IPv4 router and will have at least two network interfaces:

 **A WAN interface** (Wide Area Network). This interface must be connected to an Internet feed:

 * Either an ISP CPE (Internet Service Provider Customer Premises Equipment)
 * Or another router, such as the venue ADSL router.
 * It must be configured as a DHCP client, obtaining its IPv4 address and DNS server from the connected network.

 **A LAN interface** (Local Area Network). This interface MUST be configured to:

 * Provide the Default IPv4 gateway in a private IPv4 subnet that is different to any private subnets between it and the ISP CPE
 * Provide DHCP services to connected clients
 * Provide DNS services to connected clients
 * Provide Network Address Translation (NAT) for all outgoing traffic directed to the WAN interface.

If an improper routing configuration is detected, openNDS will shut down.

Installing on OpenWrt
*********************

* Have a router working with OpenWrt. At the time of writing, the current version of openNDS has been tested with OpenWrt 22.03.x, 23.05.x and Master Snapshot.

* openNDS v10.0.0 or higher, will not work on versions of OpenWrt less than 22.03.x

* Make sure your router is working correctly before you try to install  openNDS. In particular, make sure your DHCP daemon is serving addresses on the interface that openNDS will manage.

  The default interface is br-lan but can be changed to any LAN interface by editing the /etc/config/opennds file.

* To install openNDS on 23.3.x or higher, you may use the OpenWrt Luci web interface or alternatively, ssh to your router and run the command:

    ``opkg update``

  followed by

    ``opkg install opennds``

* openNDS is enabled by default and will start automatically on reboot or can be started and stopped manually.

* If the interface that you want openNDS to manage is not br-lan,
  edit /etc/config/opennds and set the gatewayinterface option.

* To start openNDS, run the following, or just reboot the router:

    ``service opennds start``

* To test the installation, connect a client device to the interface on your router that is managed by openNDS (for example, connect to the router's wireless lan).

 Most client device operating systems and browsers support Captive Portal Detection (CPD) and the operating system or browser on that device will attempt to contact a pre defined port 80 web page.

 CPD will trigger openNDS to serve the default splash page where you can click or tap Continue to access the Internet.

 See the Authentication section for details of setting up a proper authentication process.

 If your client device does not display the splash page it most likely does not support CPD.

 You should then manually trigger openNDS by trying to access a port 80 web site (for example, http://gnome.org is a good choice).

* To stop openNDS:

    ``service opennds stop``

* To uninstall openNDS:

    ``opkg remove opennds``

Generic Linux
*************

openNDS and libmicrohttps-ssl can be compiled in place for most distributions of Linux.

To compile libmicrohttpd and openNDS, see the chapter "How to Compile and install openNDS".
