Installing Turris Omnia Router

I was looking for a smart solution to run virtual machines in my DMZ to host different services on separate operating systems. At the moment all webservices are running on the pi on one single OS. If you mess up one service (and that happens to me quite frequently 🙂 you have to reinstall the whole system from the backup, thus loosing all changes you made to the other services since the last time you backuped.

The Turris Omnia is a router that comes with OpenWRT (a Linux especially for routers) and has many possibilities to expand its functionality. First of all you can attach an mSATA drive and secondly you can use LXC-Containers to host different OS. In my case a OS for every service I would like to host (Webserver, Mailserver, Tor, Filesharing, Nextcloud, FTP, Jabber and so on).

Installing the mSATA drive was a bit complicated but this video shows you how to do it. BUT: you may find it odd, that the cables of the wificards to the antennas are to short to switch slots (besides wondering why the OT guys have placed a wifi-card in the only minipci/mSATA storage slot available and leaving the other minipci slot unused). So you have to unhook the cables from the 2,4 GHz card and the 5 GHz card and switch them to the other side. Beware to connect it to the right antenna jack (distinguish between the 5 and the 2,4 GHz jack, you can see the description next to the jack)

After booting OT connect to the shell via SSH and check /proc/partitions if the drive has been recognized (e.g. sda1). Run fdisk /dev/sda and mkfs.ext4 to make the drive available and then mount it through /etc/config/fstab to /srv/lxc. Having the drive mounted on this path you can run the LXC-containers (make sure you have the module installed in the admin-gui) on the mSATA and preserve the internal 8GB flashdrive.

you can also mount an external usb-drive (e.g. /dev/sdb1) to the container. you just have to add the line

lxc.mount.entry = /tmp/run/mountd/sdb1   /srv/lxc/transmission/rootfs/media/usb  none bind,optional,create=dir 0  0

to your LXC-Container config of the container named “transmission” and of course mkdir the directory.