Difference between revisions of "Raspberry Pi setup"
(→Forward all IP to the device) |
|||
Line 111: | Line 111: | ||
<nowiki> | <nowiki> | ||
− | iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination | + | iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.1.2.1:80 |
iptables -t nat -A POSTROUTING -j MASQUERADE | iptables -t nat -A POSTROUTING -j MASQUERADE | ||
</nowiki> | </nowiki> |
Revision as of 14:13, 22 May 2016
Before you can do anything, you need to configure the Wifi on the Pi (NB: default Pi login is 'pi' and default password is 'raspberry')
The setting up a headless Pi instructions here (in particular Step 3) worked for us, although we only needed ssid and psk (password) for the network={... step.
Lets set up our map server with local cached image files
Contents
Installing required software
Install nginx (server), hostapd (wifi AP host), dnsmasq (light dns server) install Nginx
sudo apt-get update sudo apt-get install nginx sudo apt-get install hostapd sudo apt-get install dnsmasq
Web Server
Set up web server to forward 404's to root directory (needed for captive portal behaviour) and start edit /etc/nginx/sites-available/default
and modify line in "location / {" section:
try_files $uri $uri/ = 404;
becomes
try_files $uri $uri/ /index.html;
Now start the server
sudo service nginx start
Set up hostapd
Set up AP with hostap (instructions from set up AP with udhcpd) edit the file /etc/hostapd/hostapd.conf
interface=wlan0 ssid=TacticalSpaceLab hw_mode=g channel=6 auth_algs=1 wmm_enabled=0
Edit the file /etc/default/hostapd and change the line:
#DAEMON_CONF=""
to
DAEMON_CONF="/etc/hostapd/hostapd.conf"
Start it up, and add it to start at boot
sudo service hostapd start sudo update-rc.d hostapd enable
Note for EDIMAX adaptors
edimax version of hostapd if using an edimax wifi usb
DHCP and DNS for access point and captive portal
Set up /etc/network/interfaces for serving DHCP and DNS
auto lo iface lo inet loopback auto wlan0 iface wlan0 inet static address 10.1.2.1 netmask 255.255.255.0 network 10.1.2.0
configure dnsmasq /etc/dnsmasq.conf
# captive portal to this no-resolv server=/localnet/10.1.2.1 server=/tacticalspace/10.1.2.1 address=/#/10.1.2.1 interface=wlan0 dhcp-range=10.1.2.5,10.1.2.200,12h
restart dnsmasq
sudo /etc/init.d/dnsmasq restart
More Captive Portal Stuff
Forward all IP to the device
sudo nano /etc/sysctl.conf
uncomment:
net.ipv4.ip_forward = 1
then run the following to set up IP forwarding from iptables conversation for captive portals
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.1.2.1:80 iptables -t nat -A POSTROUTING -j MASQUERADE
Some notes about the process of making a captive portal
Pop up page info for IOS, Windows, and Android
Logging people
if you want dnsmarsq script logging... Create /var/log/dhcp_leases file with write create /usr/bin/logdhcp, make executable add it to dnsmasq config
#!/bin/bash destfile=/var/log/dhcp_leases #if [ "$1" == "add" ] #then if [ -f "$destfile" ] then echo "$1 $2" >> "$destfile" fi #fi
ended up using dnsmasq for DNS and DHCP. Setting DNS forward IP to local for captive portal setup
Map framework
Copy the server framework files across
The files needed for hosting the map are part of the Open Maps GitHub repository in location "Device Files/www/" Place these file (javascript, example index, map tiles) into /var/www/html
The repository only includes very far-out zoom levels (2,3,4). This older archive has zoom levels down to 18 in the areas around central Paris, Berlin, and Vienna: MQ var directory archive
Remember to make all /var/www/html folders readable with:
sudo find /var/www -type d -exec chmod a+x {} + sudo find /var/www -type d -exec chown root:root {} + sudo find /var/www -type f -exec chmod a+r {} + sudo find /var/www -type f -exec chown root:root {} +
Power saving
If you are using the device for battery-based or power-sensitive installs, follow these instructions for disabling LED and HDMI functionality to save power.
For Map content
MapNik coding platform for maps... pull render tiles using this?