Raspberry Pi: Difference between revisions
(Created page with "The scope of this article is the installation steps taken to produce a local area network using a RaspberryPi 3, running Raspbian Jessy Lite, with a bridged internet connectio...") |
m (JBG moved page RaspberryPi to Raspberry Pi) |
||
(10 intermediate revisions by the same user not shown) | |||
Line 4: | Line 4: | ||
In all locations where "vi" is used, feel free to use another text editor of your choice (ex. nano). | In all locations where "vi" is used, feel free to use another text editor of your choice (ex. nano). | ||
Setting up the network | Setting up the network | ||
Line 24: | Line 25: | ||
The file should contain, everything else can be commented out or deleted: | The file should contain, everything else can be commented out or deleted: | ||
auto lo | |||
auto lo | iface lo inet loopback | ||
iface lo inet loopback | allow-hotplug eth0 | ||
iface eth0 inet dhcp | |||
allow-hotplug eth0 | allow-hotplug wlan0 | ||
iface eth0 inet dhcp | iface wlan0 inet static | ||
address 10.1.1.1 | |||
allow-hotplug wlan0 | netmask 255.255.255.0 | ||
iface wlan0 inet static | network 10.1.1.0 | ||
broadcast 10.1.1.255 | |||
Install hostapd, and configure it. | Install hostapd, and configure it. | ||
Line 45: | Line 42: | ||
<code>$ sudo vi /etc/hostapd/hostapd.conf</code> | <code>$ sudo vi /etc/hostapd/hostapd.conf</code> | ||
interface=wlan0 | |||
interface=wlan0 | driver=nl80211 | ||
driver=nl80211 | ssid=Hackers & Designers | ||
ssid=Hackers & Designers | hw_mode=g | ||
hw_mode=g | channel=6 | ||
channel=6 | ieee80211n=1 | ||
ieee80211n=1 | wmm_enabled=1 | ||
wmm_enabled=1 | ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40] | ||
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40] | macaddr_acl=0 | ||
macaddr_acl=0 | ignore_broadcast_ssid=0 | ||
ignore_broadcast_ssid=0 | |||
<code>$ sudo vi /etc/default/hostapd</code> | <code>$ sudo vi /etc/default/hostapd</code> | ||
Line 68: | Line 63: | ||
<code>$ sudo apt-get install dnsmasq</code> | <code>$ sudo apt-get install dnsmasq</code> | ||
interface=wlan0 | |||
interface=wlan0 | listen-address=10.1.1.1 | ||
listen-address=10.1.1.1 | bind-interfaces | ||
bind-interfaces | server=8.8.8.8 | ||
server=8.8.8.8 | domain-needed | ||
domain-needed | bogus-priv | ||
bogus-priv | dhcp-range=10.1.1.50,10.1.1.250,12h | ||
dhcp-range=10.1.1.50,10.1.1.250,12h | |||
For the purposes of the Frankenstein "hovel" bot, also uncomment: | For the purposes of the Frankenstein "hovel" bot, also uncomment: | ||
log-queries | |||
log-queries | log-dhcp | ||
log-dhcp | |||
Setup IPv4 forwarding. | Setup IPv4 forwarding. | ||
Line 95: | Line 86: | ||
Execute the following. | Execute the following. | ||
<code>$ | $ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE | ||
$ sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT</code> | |||
$ sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT</code> | |||
$ sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"</code> | |||
To ensure the forwarding persists beyond restarts. | |||
<code>$ sudo vi /etc/rc.local</code> | |||
Add the following line before exit(0). | |||
<code>iptables-restore < /etc/iptables.ipv4.nat</code> | |||
Restart and verify the network is working. | |||
<code>$ sudo reboot</code> | |||
Frankenstein Bots (IRC) | |||
----------------------- | |||
The Frankenstein bot project requires an IRC server. I use UnrealIRCd for this. | |||
Install ssl. | |||
<code>$ sudo apt-get install libssl-dev</code> | |||
Download UnrealIRCd, for example (but maybe check the versions etc.). | |||
<code>$ wget 'https://www.unrealircd.org/unrealircd4/unrealircd-4.0.4.tar.gz'</code> | |||
Untar, change directory. | |||
$ tar -zxf unrealircd-4.0.4.tar.gz | |||
$ cd unrealircd-4.0.4/ | |||
Configure. | |||
<code>$ ./Config</code> | |||
It will ask a lot of questions, I accepted all the defaults. | |||
Build, Install. | |||
$ make | |||
$ make install | |||
Start. | |||
$ cd ~/unrealircd | |||
$ ./unrealircd start | |||
It may complain you need to create a configuration file. You can find how to do that [https://www.unrealircd.org/docs/Installing_from_source#Creating_a_configuration_file here] | |||
Creating Unix users | |||
------------------- | |||
You may desire to create one or more of your own users for bots or other things. | |||
<code>$ sudo adduser --home /home/jbg jbg</code> | |||
You may also need to add the user to a group for example "sudo". | |||
<code>$ sudo usermod -G sudo jbg</code> | |||
Install Python Modules | |||
---------------------- | |||
Some of the Frankinstein bots require the irc.bot Python module. | |||
Download and install pip. | |||
<code>$ wget https://bootstrap.pypa.io/get-pip.py</code> | |||
<code>$ sudo python get-pip.py</code> | |||
Install irc python module. | |||
<code>$ sudo pip install irc</code> | |||
Install Fun Command Line Utilities (H&D Terminal workshop) | |||
---------------------------------------------------------- | |||
<code>$ sudo apt-get install figlet</code> | |||
<code>$ sudo apt-get install mailutils</code> | |||
<code>$ sudo apt-get install cowsay</code> | |||
<code>$ sudo apt-get install jp2a</code> | |||
FTP | |||
------ | |||
For FTP simply follow the instructions [https://www.raspberrypi.org/documentation/remote-access/ftp.md here]. | |||
Etherpad | |||
-------- | |||
Install Node.js. Maybe check the version, perhaps there is something newer. | |||
<code>$ wget https://nodejs.org/dist/v4.4.7/node-v4.4.7.tar.gz</code> | |||
<code>$ tar -zxf node-v4.4.7.tar.gz</code> | |||
<code>$ cd node-v4.4.7/</code> | |||
<code>$ ./configure</code> | |||
<code>$ make</code> | |||
<code>$ sudo make install</code> | |||
Get dependencies for Etherpad. | |||
<code>$ sudo apt-get install gzip git curl libssl-dev pkg-config build-essential</code> | |||
Install Etherpad. | |||
<code>$ git clone git://github.com/ether/etherpad-lite.git</code> | |||
<code>$ cd etherpad-lite/</code> | |||
Run it!! | |||
<code>$ bin/run.sh</code> |
Latest revision as of 11:35, 14 January 2017
The scope of this article is the installation steps taken to produce a local area network using a RaspberryPi 3, running Raspbian Jessy Lite, with a bridged internet connection via an Ethernet cable to facilitate both the Hackers & Designers workshops around basic Unix and program skills for designers, and the Frankenstein Bot workshop by Constant.
Code blocks that begin with "$" denote terminal, command line instructions, all other code blocks denote configuration files and/or program source code.
In all locations where "vi" is used, feel free to use another text editor of your choice (ex. nano).
Setting up the network
These instructions are taken largely from here, but are reiterated in the case article disappears from the internet.
We need to tell dhcpcd to ignore the wlan0 interface.
$ sudo vi /etc/dhcpcd.conf
Add the following line to the bottom of the file:
denyinterfaces wlan0
wlan0 will need a static ip address.
$ sudo vi /etc/network/interfaces
The file should contain, everything else can be commented out or deleted:
auto lo iface lo inet loopback allow-hotplug eth0 iface eth0 inet dhcp allow-hotplug wlan0 iface wlan0 inet static address 10.1.1.1 netmask 255.255.255.0 network 10.1.1.0 broadcast 10.1.1.255
Install hostapd, and configure it.
$ sudo apt-get install hostapd
$ sudo vi /etc/hostapd/hostapd.conf
interface=wlan0 driver=nl80211 ssid=Hackers & Designers hw_mode=g channel=6 ieee80211n=1 wmm_enabled=1 ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40] macaddr_acl=0 ignore_broadcast_ssid=0
$ sudo vi /etc/default/hostapd
Uncomment and set the following value:
DAEMON_CONF="/etc/hostapd/hostapd.conf
Install and configure dnsmasq.
$ sudo apt-get install dnsmasq
interface=wlan0 listen-address=10.1.1.1 bind-interfaces server=8.8.8.8 domain-needed bogus-priv dhcp-range=10.1.1.50,10.1.1.250,12h
For the purposes of the Frankenstein "hovel" bot, also uncomment:
log-queries log-dhcp
Setup IPv4 forwarding.
$ sudo vi /etc/sysctl.conf
Uncomment the following line.
net.ipv4.ip_forward=1
Execute the following.
$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE $ sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT $ sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT $ sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
To ensure the forwarding persists beyond restarts.
$ sudo vi /etc/rc.local
Add the following line before exit(0).
iptables-restore < /etc/iptables.ipv4.nat
Restart and verify the network is working.
$ sudo reboot
Frankenstein Bots (IRC)
The Frankenstein bot project requires an IRC server. I use UnrealIRCd for this.
Install ssl.
$ sudo apt-get install libssl-dev
Download UnrealIRCd, for example (but maybe check the versions etc.).
$ wget 'https://www.unrealircd.org/unrealircd4/unrealircd-4.0.4.tar.gz'
Untar, change directory.
$ tar -zxf unrealircd-4.0.4.tar.gz $ cd unrealircd-4.0.4/
Configure.
$ ./Config
It will ask a lot of questions, I accepted all the defaults.
Build, Install.
$ make $ make install
Start.
$ cd ~/unrealircd $ ./unrealircd start
It may complain you need to create a configuration file. You can find how to do that here
Creating Unix users
You may desire to create one or more of your own users for bots or other things.
$ sudo adduser --home /home/jbg jbg
You may also need to add the user to a group for example "sudo".
$ sudo usermod -G sudo jbg
Install Python Modules
Some of the Frankinstein bots require the irc.bot Python module.
Download and install pip.
$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python get-pip.py
Install irc python module.
$ sudo pip install irc
Install Fun Command Line Utilities (H&D Terminal workshop)
$ sudo apt-get install figlet
$ sudo apt-get install mailutils
$ sudo apt-get install cowsay
$ sudo apt-get install jp2a
FTP
For FTP simply follow the instructions here.
Etherpad
Install Node.js. Maybe check the version, perhaps there is something newer.
$ wget https://nodejs.org/dist/v4.4.7/node-v4.4.7.tar.gz
$ tar -zxf node-v4.4.7.tar.gz
$ cd node-v4.4.7/
$ ./configure
$ make
$ sudo make install
Get dependencies for Etherpad.
$ sudo apt-get install gzip git curl libssl-dev pkg-config build-essential
Install Etherpad.
$ git clone git://github.com/ether/etherpad-lite.git
$ cd etherpad-lite/
Run it!!
$ bin/run.sh