This cookbook describes how to set up a local LibriVox installation
inside a VirtualBox VM using the librivox-ansible
GitHub project.
Some parts of the LibriVox installation (files, databases) are made accessible to the host system, to allow the development to happen on the host machine.
The installation uses the original host names, which will be overridden
in the hosts
file. This is because the whole setup currently has these
host names hardcoded.
Note: This guide is not meant to be perfect or finished, but helpful. It tries to avoid many of the possible obstacles. If you want to improve this document, just edit it and send a pullup request.
Download and install VirtualBox 5.2.8.
- Download Ubuntu Xenial, server edition
- Create a new VM inside VirtualBox:
- 1 GB RAM
- 50 GB dynamic disk space
- Bridged networking
- Install Ubuntu in that VM
- Select all feature sets
The LibriVox playbook runs most of the tasks as root user. To make this easy, give your user complete root permissions without password. After all, this is just in a virtual machine in a private environment, so convenience is more important than security.
echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" > "/etc/sudoers.d/$USER"
From inside the VM, run:
ping6 www.google.com
If that works, skip the rest of this section. But if you get a network timeout, disable IPv6 networking:
echo 'net.ipv6.conf.all.disable_ipv6 = 1' > /etc/sysctl.d/01-disable-ipv6.conf
reboot
sudo su -
apt update
apt upgrade
apt install git gcc make perl python
exit
LibriVox requires Ansible >= 2.4, while Ubuntu comes with 2.0. Therefore, install Ansible from source.
mkdir git
cd git
git clone https://github.com/ansible/ansible
cd ansible
python setup.py build
python setup.py install --user
ansible --version
cd git
git clone https://github.com/librivox/librivox-ansible
cd librivox-ansible
ipaddr=$(ifconfig | perl -ne 'printf("%s\n", $1) if /^\s+inet addr:\s*(\S+)/ && $1 ne "127.0.0.1"')
printf '[server]\n%s\n' "$ipaddr" > hosts/localdev/hosts
Do not let Git overwrite the local changes when updating:
perl -i -pe '
s/force: yes/force: no/ if $module eq "git";
$module = $1 if /^ (\w+)/;
' */*/tasks/main.yml
ansible deploy.yml -i hosts/localdev/hosts
In /etc/hosts
or C:\Windows\System32\drivers\etc\hosts
, add:
192.168.178.87 librivox.org
192.168.178.87 dev.librivox.org
192.168.178.87 forum.librivox.org
192.168.178.87 wiki.librivox.org
192.168.178.87 www.librivox.org
Replace 192.168.178.87
with the IP of the LibriVox VM (see ipaddr
above).
To browse the LibriVox databases from the IDE, add a MySQL user:
sudo mysql
grant all privileges on *.* to `librivox`@`%` identified by 'librivox';
mysql -ulibrivox -plibrivox -e 'CREATE DATABASE librivox_catalog'
mysql -ulibrivox -plibrivox librivox_catalog < roles/blog+catalog/files/librivox_catalog.schema.sql
To access the LibriVox files (blog, catalog, forum, wiki) from the IDE, configure some shared folders in the VirtualBox machine settings.
# TODO
mount /mnt/sf_/... /librivox
You have the LibriVox environment basically running now. Visit https://librivox.org/ to check it out. Most of the LibriVox components don't work yet:
- The blog is an uninitialized WordPress installation, with no content.
- The catalog is empty, so searching will always result in "No result".
- The forum doesn't work since the database is missing.
- The wiki doesn't work since the database is missing.
As said above, this guide is not yet finished. But it's better than nothing.
If you want to get rid of the whole local LibriVox installation, follow these steps:
- In VirtualBox, remove the virtual machine and all its files
- Deinstall VirtualBox
- Clean up the
hosts
file - Remove the certificate from the trust store