It’s been about two weeks since I got my Raspberry Pi for Christmas. It’s currently my favourite toy, and due to it’s extremely low power consumption it’s replaced my old server. Right now it’s basically being used as a headless server, despite the fact that it’s connected to my TV. I use command-line for everything with exceptions for when a screen is necessary, like watching movies or playing games. Most of the time, however, it’s just a server.
Note: this is meant to be more of an idea guide than an instruction manual.
Here’s my current setup:
- Power: an old cellphone USB adapter, pushing 5V at 1000 mAh.
- Network: Ethernet cable connected directly to my router.
- Audio/Video: HDMI to my TV.
- USB: Bluetooth Adapter
- SD Card: 32 GB Class-10 Micro SD in an SD adapter
I overclocked the CPU to 950 MHz. Overclocking has been known to be unstable to on the Pi, so I decided to throw a few bucks at my screen and buy a 3-pack of heat sinks on eBay for under $3.
I have yet to get a case, but I’m rather partial to the LEGO Raspberry Pi case. Time to go garage-sale shopping!
Note: check the eLinux.org Verified Peripherals list before buying any peripherals specifically for your Raspberry Pi.
I decided to go with Raspbian “Wheezy” for the OS. It’s an image of Debian that’s been optimized for Raspberry Pi and it’s the recommended image on the RaspberryPi.org download page. I was already comfortable with Debian from years of using Ubuntu, so it seemed like a no-brainer. By default, it doesn’t boot up into the GUI, and if you haven’t set it boot to GUI you can always do so by entering the `startx` command after logging in.
First thing after booting up the Pi and initial configuration is installing the essential packages:
Nothing says “geek” like a personalized welcome banner whenever you log into your commandline interface.
`sudo apt-get install sysvbanner`
Don’t forget to add the `banner “Hi [your name here]”` to ~/.profile or ~/.bashrc.
The Bluetooth stack doesn’t come with the stock image, but the packages can be installed with the package manager:
`sudo apt-get install bluetooth blueman bluez-utils`
You can setup your devices in command-line, but it’s easier to just do it via the Bluetooth manager in the GUI. Keep in mind that your Bluetooth adapter may not be fully compatible with the Pi, so consult the verified peripherals list linked above.
Chromium: A Decent Browser
The Raspbian image comes with the Midori browser, which I find lacking. Chromium is the project behind Google Chrome, so it’s definitely more powerful. It may be somewhat heavy for the Pi, so it may not be the best choice, but it’s what I prefer.
`sudo apt-get install chromium-browser`
Transmission: Torrent Client
Every PC needs a torrent client. You know, for downloading “legal” things. Torrent clients for Linux are few and they aren’t very good. Linux clients compatible with ARM are even fewer. Transmission is probably the best I’ve come across so far. The good thing is that with transmission-daemon, you can have it run even when you’re not logged in. It’ll just run in the background, all the time. You can use any computer to control it through the built-in web UI. Perfect for a headless server.
`sudo apt-get install transmission transmission-daemon`
When you have a computer that is more than a foot away, you need remote control. There are a variety of ways to remotely control your Pi though.
SSH will let you remotely control your Pi via command-line and it doesn’t require any configuration, just
`sudo apt-get install openssh-server`
VNC will let you remotely control your Pi via your GUI. It allows you to run multiple concurrent sessions, like when you’re watching something and don’t want to stop the video.
`sudo apt-get install tightvncserver`
If you want to control your Pi on your TV/monitor with your laptop and not let the mice and keyboards pile up, Synergy is your best bet. Just move your mouse off the screen and it goes onto the next. This will require configuration on your Synergy server PC, and you’ll need to setup your Pi to run `synergyc [your server host]` when the GUI is started.
`sudo apt-get install synergy`
At some point you’re probably going to want to share files between computers. There are multiple ways of doing this.
FTP is good because it can be used with any platform. There’s a few of them, but this is the one I use, for no particular reason.
`sudo apt-get install vsftpd`
Windows File Sharing
Windows’ native file sharing uses Samba, so installing it will make it appear under “Network”. It will require some configuring, but you won’t have to remember IPs or hostnames like with FTP.
`sudo apt-get install samba smbfs`
If you want to turn the Pi into a web server, you’re going to want the LAMP software stack. eLinux has a pretty good guide on this. Essentially, it’s just:
`sudo apt-get install apache2 mysql-server mysql-client php5 tomcat7`
The guide recommends tomcat6, but I had to resort to tomcat7 because my setup wouldn’t play nice with tomcat6.
This gets you the basic server, but you’ll want a few administration tools. So far, I’ve done:
`sudo apt-get install phpmyadmin phpsysinfo`
phpmyadmin let’s you administer your MySQL server with a web-based GUI.
phpsysinfo let’s you see a lot of information on your hardware from the browser.
Home Theater PC
If you’re looking to use your Pi as an HTPC, xbmc officially supports the Pi! While it is still under development, it runs rather well. However, because it’s still under development, you can’t get it directly from the Raspbian repo. You can either download the source and compile it yourself, or get a pre-built build from around the Internet. Personally, I got a build off of here.
Retro Game Console
With both HDMI and composite video out, and USB ports for game controllers, and the ability to download emulators, the Pi makes a great, little console. While there are a lot of emulators out there for Debian, not all are compatible with the Raspberry Pi’s ARM architecture, and some that are, aren’t very good for the hardware available. I’m still trying to figure out which are the best for my Pi.
The “Interesting To No One But Me” category.
Just in case you need to edit an office document, there’s always Open Office!
`sudo apt-get install openoffice.org`
Because no programmer’s PC is complete without an IDE, here’s Eclipse. While this is really more of a “because I can” sort of thing rather than something I actually use, it still works well enough for use.
`sudo apt-get install eclipse`