Docker image for RACHEL to allow deployment on any machine

What about creating a Docker image that runs RACHEL? In my experience with other software, Docker offers a pretty easy user experience, easier than, say, VirtualBox, and much lighter in terms of GB to download. I see that Vagrant is used in rachelproject/rachelpiOS , so maybe there’s a way to use Vagrant similar to Docker. Or maybe a Snap? My ideal is that with the smallest possible download, I run one command in my Linux terminal and ta-da!, RACHEL is running, configured with a network bridge so that it is available on the local network at its own IP. How can we make this happen? Would this get more attention by opening an issue on GitHub?

Background on how I got to this forum: I went to worldpossible-dot-org, and clicked on oer2go, and downloaded some modules, and then realized that there’s no explanation at oer2go of what to do with these modules in order to use them. So I looked around, and as far as I can tell, the only documented way to use the modules is to download the RaspberryPi image of 64 GB, and then either install it on its own hardware, follow the steps described by @AhmadLM in this post, or maybe create a RasPi virtual machine in VirtualBox or somesuch. At any rate, those all involve downloading another 64 GB, which could take a few days on my connection. A Docker image could require much less download, and allow much greater flexibility.

(Other options for the future include peer-to-peer internet and web protocols such as IPFS and Dat, and related projects like Beaker Browser, but for now, what I mention above seems more stable.)

3 Likes

for example, here is a tutorial about using Docker and Vagrant and bridging the container to the LAN: https://coderwall.com/p/2rpbba/docker-create-a-bridge-and-shared-network … and here’s info about connecting a Docker image to a LAN: http://blog.oddbit.com/2018/03/12/using-docker-macvlan-networks/

2 Likes

Rachel can be installed on any system. It only requires a web server with something like apache2 or lighttpd that hosts the RACHEL content shell and some other packages like php, sqlite3, xml2, and if you want ka-lite or kiwix you can install those separately. From there you just need to bridge the network interfaces and use a router. This can all be installed from a python script. I just finished the updated installation python script for the Raspberry Pi for the latest version of Raspbian ( stretch ) to support the new pi hardware. Most of these packages are available on other linux distros but Raspbian is basically Debian with some packages compiled to support the Raspberry Pi hardware.

Running anything in a VM isn’t really the most efficient way to do it for very old hardware in my opinion. It’s better to install things natively and as lightweight as possible to make the best use of all resources and to ensure there’s no translation of the ARM or x86 instruction sets required which would be the case when running a Pi image on an x86 PC. This is why I removed the Vagrant checks from my version of the installation script as I think it would be slow and planned a new installer for PC.

I will make a new installation script in the near future based on the Raspberry Pi one to support other hardware and Debian as it shouldn’t be very hard to get it working. It’s really only a syntax difference. It only takes one command to install RACHEL right now with my script on a Raspberry pi so it will be the same with the Debian script. I actually started testing that a few weeks ago but got busy with other things. My priority is finishing the new pi image at the moment but a generic Debian supported script should be coming very soon.

2 Likes

While a Debian install script will surely be useful for many people, I use Manjaro (an Arch Linux derivative), and other people use other systems. The benefit of Snap and Docker are their portability – Snap for Linux distros, and Docker for Linux, Windows, and Mac. I agree that virtualization seems inefficient for old hardware, but that’s not our use case here, and there’s also a difference in efficiency between OS-level virtualization vs. hardware virtualization. Use case example: I want to demonstrate the possibilities of RACHEL during a meeting, so I run it on my laptop. Or I want to run it for a week during an event, and we don’t have a dedicated computer for it, so during the morning we run it on my laptop, in the afternoon on my colleague’s laptop, and at night on a desktop. Many other use cases could benefit from an easy, clean setup that one can install, configure, and uninstall easily. This is why I think a Docker image for RACHEL would be useful.

1 Like

You would be able to do that by creating a Debian image after installing rachel.

So it’s interesting this topic came up right after I was discussing doing this. I’ve got a prototype Dockerfile built and out in Git if your are interested in helping me test and/or improve it.

It should be noted that Docker is not a virtualization system, and has extremely low overhead. I’m working on putting RACHEL into a Docker image to simplify the installation process. If you can get Docker (and docker-compose) installed on the platform, installing RACHEL can be as easy as a single docker-compose command.

I’m currently still looking at the content update process, as well as figuring out how best to store the content (as a passed in directory or maybe something else).

2 Likes

Hi Jim,

this is all a bit confusing but when people say Rachel can be installed on anything i get lost. The image i downloaded was for Raspberry Hardware. Can that same image be used in Oracle VirtualBox or there are dfferent flavors of Rachel for different OSes? Must say though the install went well and i’m pleased with Rachel. I am setting up an ICT lab for schools kids and the digital literacy content will be heavy on graphics and media so i wanted to install Rachel on a much more powerful machine (like a HP Z2 mini or ACEPC AK1 Mini PC). my assumption is more memory, storage and a fanless device will allow 20 kids to run videos etc. Is this possible?

1 Like

Hi @walash – you should be fine getting to 20 users streaming with a more powerful machine or even something like our RACHEL-Plus (celeron N3450/4gbRAM/32-bitOS/5400rpm 2.5") so long as you create a wired network.

The hangup is usually wireless transmission rates. Our RACHEL-Plus has two dedicated WiFi cards inside, so if you split users maybe 60/40 on 5g / 2.4g you should be fine with 20 users simultaneous. Otherwise, a good router added to RACHEL could help too.

Has anyone successfully dockerized Rachel yet? I’m going to try and do it for the 4B. Not too sure how to start yet though.

1 Like

@dsh did you tried to dockerize rachel?
I’m in the middle of a college project and I would like to dockerize rachel and improve the way to install it to raspberry pi’s.