Category Archives: Home server

Moving away from Google

Moving my contacts and calendar away from Google:
http://davdroid.bitfire.at/what-is-davdroid
http://baikal-server.com

Collaborative editing: http://etherpad.org/

Voip:

jitsi.org They have a new alpha for android, might be a suitable option on android as well in the future

or Mumble http://mumble.sourceforge.net/ but it requires a server and people connected to that server.

Hostapd configuration for a 802.11n AP with ath9k

At home I have a good cable internet access but the router/modem combo that my ISP provides includes wireless G (54Mbit/s) AP and a fastEthernet switch (100 Mbit/s).

So when I bought my new server, I was planning to use it as an upgrade for both my wired and wireless networks. The HP microserver has 2 low profile PCIex slots so I bought a cheap gigabit ethernet card and a cheap 150Mbit/s atheros chipset based wifi card :

  • TP-Link – TL-WN781ND – Carte WiFi N PCI express – 150Mbps (14€)
  • TP-Link – Carte réseau Gigabit PCI-Express 1x – Chipset RealTek – TG-3468 (13€)

Installation on Debian is easy, I always use the ISO installer that includes the binary blobs. You should find indications easily on Google anyway.

wlan0 and eth1 on my server are bridged. My ISP’s router is the DHCP server, serving addresses on 192.168.0.0/24

The desktop computer has 2 interfaces: 1 is connected to the router with DHCP, the other is connected to the server’s eth0 with static ips on another private addressing.

So the configuration on the Microserver is limited to bridging 2 interfaces and configuring hostapd.

I took most of the information I needed from that link: http://forum.doozan.com/read.php?2,6300

Here is my /etc/hostapd/hostapd.conf :

# if you want to bridge the onboard eth0 and the wireless USB adapter’s wlan0, this should work
interface=wlan0
bridge=br0
# this is the driver that must be used for ath9k and other similar chipset devices
driver=nl80211
# yes, it says 802.11g, but the n-speeds get layered on top of it
hw_mode=g
# this enables the 802.11n speeds and capabilities … You will also need to enable WMM for full HT functionality.
ieee80211n=1
wmm_enabled=1

# self-explanatory, but not all channels may be enabled for you – check /var/log/messages for details
channel=1
# also, make sure you survey your 2.4GHz environment, and find some uncluttered/uncrowded channels

# adjust to fit your location
country_code=FR
# Here is the authoritative list of countries:
# http://www.iso.org/iso/country_codes/iso_3166_code_lists/country_names_and_code_elements.htm

# let your AP broadcast the settings that agree with the above-mentioned regulatory requirements per country
ieee80211d=1
# adjust to fit your preference
ssid=yourssid
# this is how I set mine up – works perfectly for iPhone, Mac OS X (SnowLeopard) & Linux
auth_algs=3
wpa=3
wpa_passphrase=yourpassword
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
macaddr_acl=0
# these have to be set in agreement w/ channel and some other values… read hostapd.conf docs

# here I’m using 40MHz channels to try and maximize my throughput
ht_capab=[HT40][SHORT-GI-40][RX-STBC1]
# … these can be tuned to specific capabilities per device/chipset
# IIUC, this enables reauthentication for clients, so the passphrase doesn’t have to be re-entered
eap_reauth_period=360000000
# … my understanding… 3600 seconds = 1 hr, so your device would have to reauthenticate if it rejoined after 1 hr
# I have mine set quite a bit higher than 3600 seconds… so that my iPhone doesn’t ask me to type in the password
# frequently…
# makes the SSID visible and broadcasted
ignore_broadcast_ssid=0

And for the bridging, here is my /etc/network.interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# Interface vers le routeur et internet
auto eth1
iface eth1 inet static
address 192.168.0.4
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1

# Interface vers le pc fixe pour transferts rapides
auto eth0
iface eth0 inet static
address 10.0.0.1
netmask 255.255.255.0
network 10.0.0.0
broadcast 10.0.0.255

# Interface wifi pour AP
iface wlan0 inet static
address 192.168.0.3
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1

# Interface bridge
auto br0
iface br0 inet static
bridge_ports eth1 wlan0
address 192.168.0.2
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
up /sbin/ifconfig br0 up
post-up /bin/sleep 10 ; /usr/sbin/hostapd -B /etc/hostapd/hostapd.conf
pre-down /usr/bin/killall hostapd
down /sbin/ifconfig br0 down

The post-up and pre-down take care of switching on and off the wireless AP as soon as the bridge is up/down.

Launching XBMC from an Android remote on a dedicated Debian HTPC

I bought recently a HP microserver to upgrade from my previous server that was a Seagate Dockstar.

HP Proliant Microserver Seagate Dockstar

One of the goals I had in mind was to use the server not only as a NAS, webserver, etc… but also as a HTPC running XBMC (and as a gigabit switch and a 802.11N AP but more on that later). I was running Debian Squeeze for ARM on the Dockstar and went for Debian Wheezy (tesing for now) for the Proliant as it has a more recent kernel to build my AP, and XBMC Eden is available directly in Debian repositories. My idea is to set it up now and stay on Wheezy when it becomes stable so I have only minimal maintenance to do in the future.

My Microserver is plugged to my videoprojector (Acer K10 LED) by VGA. I have no other graphical application running on the microserver so I didn’t install a window manager and I’m launching XBMC with xinit.

XBMC works great on the Microserver. I’m using ALSA as my sound system and a FiiO E10 as my USB sound card. I have a mpd server running to be able to play music in my living room, controlled by an Android client Droid MPD Client (HD). XBMC or mpd are mutually exclusive in their usage of the sound card (maybe I could enhance that by tweaking ALSA settings or moving to some other audio management ?). This is the first rason why I want to be able to start or stop XBMC on demand.

Another reason is that XBMC being idle uses between 10 and 30% of CPU. My machine serves as a server 24/7 and as a HTPC around 1h per day on average (I don’t use it everyday).

I have no keyboard attached to the Microserver.

So what I did was install 2 applications to my Android smartphone:

Official XBMC Remote
Script Kitty

The XBMC remote is a very fine app to remote control your XBMC HTPC and it also can exit XBMC.

Script Kitty is an application that lets you run scripts on a server with SSH. It lets you create a simple launcher on your homescreen that directly connects to your server and runs a command on it. Perfect to launch XBMC without having to install anything more on the Microserver !

The result on my home screen looks like this:

[nggallery id=1]

To configure Script Kitty, you have to give it your SSH credentials and tell it some commands to execute. Then you go to your home screen and add a direct shortcut to the script you created.

Here is the script I run on the server:

/usr/bin/xinit /usr/bin/xbmc-standalone — :0

By default on Debian, you will not be able to use xinit from a SSH shell. This seems to be a security feature. In order to allow it, you need to run:

dpkg-reconfigure x11-common

And from the menu choose to grant anybody the right to start X.