The Stanford team has a new emulation use case. Stanford’s Center for Spatial and Textual Analysis (CESTA) has a cluster of legacy research projects that are going to be shut down by our Information and Security office due to security vulnerabilities in their application stack. Spatial History Project. These are legacy LAMP stacks and also include legacy versions of Wordpress, Drupal and flash. Can emulation as a service can support these types of objects? If so is this something that can be done in a way that wouldn’t require us to individually rebuild each stack?
Some of the work already deployed in e.g. https://stabilize.app for configuring “networks” of machines and making them accessible and preservable will be being added to EaaSI next year (I link to Stabilize that I have a big stake in just because the videos there help to illustrate some of what will be possible). It’s mentioned in the roadmap here as currently planned for Q1 next year.
For now, we have experimented at Yale with two options:
- Importing a disk image from an existing server into EaaSI, adding a desktop GUI (if it doesn’t exist) with a web browser and providing access to that environment with the browser in “kiosk” mode and a user-account with minimal access rights
- Using an existing (or creating a new) environment with the requirements for the LAMP stack all ready installed, then exporting the data from the old machine(s) and importing them into the new one in EaaSI, then following the same steps as (1.) - user will minimal rights and browser in “kiosk” mode. I know you said this is not preferred - in our case one server was/is hosting multiple sites, so we had to separate the data anyway for security/privacy reasons.
Ethan and I did #2 for this website: Yale University Historical Register Online: Home
Here are the steps we followed:
- Get access to the web server disk image and boot it in a vm/emulator
- Reset the root password to access it
- Find the MySQL password in the website files (htdocs/mssa/hro/config.php)
- Export the MySQL database (mysqldump --host=localhost -u hrouser-p hro > /root/Desktop/hrodb.sql --single-transaction)
- Shut down the machine
- Extract the data export and “hro” website folder from the disk image (used ftk-imager on windows)
- Create a new CentOS 5.11 machine with LAMP stack in EaaSI
- Create new MySQL database and user
- Import MySQL database
- Copy website folder to /var/www/html
- Edit config.php within hro/lib to reference new SQL credentials and domain
- Ensure LAMP starts on boot
- Set web browser home page to localhost/hro
- Set web browser to open in kiosk mode on boot
I also did #1 for this site RAAI - Ross Archive of African Images
We’re in the process of establishing our Yale EaaSI node as a production service so haven’t launched either for researchers yet.
As part of this we brainstormed some questions to consider when sunsetting servers into Emulation:
Happy to answer any questions about any of this. I’m really pleased others are starting to explore the options here!
I’ll add that at least theoretically, you should be able to include multiple web servers in preserved “networks” and have their domains resolve properly in any browser within those networks.
Thank you Euan! This is great news and thank you for the detailed instructions. I’m meeting with our Spatial History folks later this week and we’ll likely be giving them access to our hosted EaaSI. More questions likely soon and thank you for this great information!