So, you're confused about the amount of monkeys?

This is still heavily WIP! In fact, the information below is about the server that I twice replaced since. Please stay tuned for more information, more services and very much prettier look&feel!


What service do you run on this server?

At the moment, it is running the following services:

Service Description
Static HTML/CSS FAQ (this website)
Habari (stable) Pelican (stable) Lightweight PHP-based Blog/CMS, running SQLite as DB (PostgreSQL and MySQL are also options, but offer little to no speed-up).
Python-powered static website generator Running my personal blog as well as the news for this server.
Seeks Advanced, 2P2 collaborative search (meta)engine. IMHO the next step in web searching. Sadly, the project seems to have stalled. Unfortunately it is not actively maintained.
ownCloud Nextcloud File locker for controlled sharing, WebDAV, CalDaV, CardDAV, simple (versioned) backup server and lots more. Based on PHP and I run it on PostgreSQL (SQLite and MySQL are also supported). It is already great and used by organisations like CERN. It supports federation between instances and many advanced features and apps.
ZNC An advanced IRC bouncer to easily keep up with conversations on the relevant channels.
And running all that works?

I have to admit, I was a bit surprised at first how well it handles all this.

But later I noticed that if you choose wisely and select services that are not as resource-hungry (ownCloud is an exception here, for now) and by enabling certain features, it is a very powerful box. Remember that in the past we used even less powerful computers for our e-mail and fancy web servers.

Can you elaborate on your choice of DB?

At first I chose SQLite for everything, because it’s small, fast, contained in a file and easy on resources and powerful (enough). Since it doesn’t need a daemon, it doesn’t need any resources when idle.

I noticed though that for applications that often and in parallel access the DB (e.g. ownCloud) SQLite seems not to be the optimal solution. For those ocassions I run PostgreSQL and am happy to report that it runs just fine on the DreamPlug.

When my blog became bombarded by more spam comments then the poor DreamPlug could handle, I decided to switch my blog to a static HTML instead of PHP and SQL.


What hardware is all this running on?

Surprisingly this whole website plus a lot of other stuff is running on a small ARM device — namely the DreamPlug.

Technical specifications of the DreamPlug
SoC Kirkwood MV88F6281-A1
CPU Feroceon 88FR131 rev 1 (v5l) a.k.a. Marvel Sheeva 1.2 GHz (ARMv5TE)
RAM 512 MiB 16bit DDR2-800 MHz
Internal storage 4 GiB on board micro-SD
Internet connectivity 2 x Gigabit Ethernet 10/100/1000 Mbps
WiFi 802.11 b/g
Bluetooth BT2.1 + EDR
JTAG and UART connections for external module
External storage and connectivity 2 x USB 2.0 ports (Host)
1 x eSATA 2.0 port -3Gbps SATAII
1 x SD socket for user expansion/application
Audio interfaces Headphone (analogue) out
Mic In
Fiber Optics (SP/DIF) out
Power suppy 5V3A DC power supply (yes, it consumes <5 W!)
Physical dimensions 120mm (L) x 90mm (W) x 30mm (H)

For storage I use two HDDs in a LVM RAID. It seems to slow down the disks a bit, but still seems acceptable.

I want one, where do I get it?

Note: Since 2012, when I set it up, technology has much improved and you’ll be better served with a newer, more powerful model for a fraction of the price! (see below for a suggestion)

If you are from USA, you can get it directly from GlobalScale.

If you are from EU, as I am, it's easier to buy via NewIT and you even get a slightly longer warranty.

Slightly longer you say? What's wrong?

Well, you have to understand that DreamPlugs (as well as all other Sheeva-, Guru- D2-plugs) are dev kits. Which means you're free to hack away, but therefore the warrantly is very limited. If you buy it directly from GlobalScale, you only get one month of warranty; if you buy it from NewIT, you actually get a whole year.

Oh, OK ...em, are there any other caveats?

If you get a DreamPlug, I highly recommend buying the optional external JTAG module as well — it's not very expensive and it saved my butt a few times already! It's invaluable to unbrick your device. Don't be discouraged though — bricking a device is pretty common when you're playing with it. It's just that this one offers you an easier method on how to unbrick it. I'm quite happy with it, it's a great device ☺

Do you have any future plans?

In the foreseeable future I indeed plan to move to a more powerful device. Right now (early 2016) it seems my next device will be an Olimex OLinuXino Lime 2 – it’s Open Source Hardware, carries twice the memory of DreamPlug and a much more powerful Allwinner A20 dual-core CPU. In addition, it is also costs only a quarter of what a DreamPlug (still) does.

I will probably set up my disks differently as well. What I’m thinking of right now is is to use BtrFS snapshots instead to assure an easy migration should one disk die. The alternative would also be to use BtrFS RAID, but any since one disk will probably have to run via USB, mirrorring would mean slower read speeds. According to this article on Sunxi seems like I still could use SATA PMP, but at this stage I am not sure if I want to rely on port multiplication any more.

As for the DreamPlug, very likely it will find some other use (backup server maybe) or donate it to our hackerspace to use for something cool. It still far from dead ☺


What OS is powering Where My Monkey Is At?

I installed my favourite OS on this little beauty — namely Gentoo GNU/Linux — and I'm quite happy with it. I'm writing a HOWTO on how to install Gentoo on the DreamPlug and I hope to get it done by end of May 2012.

Gentoo? But doesn't compiling everything take forever?

Yes, this means that every package is compiled. But I take this as a positive thing. Using Portage to install/compile everything enables me to make fine adjustments to what I want and more importantly what I don't in a package. So with occasional compile time, you actually gain by having a smaller and better tuned system.

A neat trick to make sure when you're emerging stuff, the system's performance is not hampered too much, is to add PORTAGE_NICENESS="12" and PORTAGE_IONICE_COMMAND="ionice -c 3 -p \${PID}" to your /etc/make.conf.

Which webserver do you use?

I am currently running nginx as it is small and has a big user base.

Before that I used Cherokee. The reason for this choice was that it's a very small and nimble webserver, while at the same time being quite powerful and easy to set up. It also has a cute WebGUI. Once the bugs that drove me away get fixed, I might adopt it again :]

Do you plan to use HTML5?

Yes, I plan to use HTML5 and CSS3 and take advantage of as many of their features as possible. In fact, you're free to check the validity of the HTML5 and CSS3 of the website and if you find any issues, please let me know.

Also I'm trying to get from just modern semantics and styling to a more fancy use of HTML5. Or to put it more graphically:

HTML5 Powered with CSS3 / Styling, and SemanticsHTML5 Powered with CSS3 / Styling, Graphics, 3D & Effects, Multimedia, and Semantics

Do you have any future plans?

With the migration to new hardware, I will probably try setting it up with Debian. I still hold Gentoo in high regard, but don’t have the time any more that it takes to run a source-only distro.


Can I follow the state of this server and your progress and experience using this hardware and software?

Sure. You are always welcome where my monkey is at

That’s really nice to hear. Can I get an account then? ;)

I am more then happy to create accounts for people I know. So if you’re interested, do drop me a line. But do understand that this is a small, low power, personal server and I am not guarenteeing any uptime, that is maintained more of a hobby then as a serious service. I do try my best though.

Is this FAQ really a set of questions people have asked that often?

Well, to be completely honest, like most FAQs out there, it's a list of questions and answers that people actually asked as well as questions that I anticipated. If you have any questions, please do throw them my way.