Spotter-VM/README.md

117 lines
5.8 KiB
Markdown
Raw Normal View History

2018-11-01 15:30:28 +01:00
This is the main repository containing all build and installation scripts, configuration and customization of operating system and all applications present in SpotterVM virtual machine.
## Virtual machine specifications
- **Memory:** 4 GB
- **CPU:** 1 processor, 2 cores
2018-11-01 15:30:28 +01:00
- **Hard Disk:** SCSI, 300 MB
- **CD/DVD**: IDE
- **Network Adapter**: Bridged
2018-11-01 15:30:28 +01:00
In case you're setting up a VMWare virtual machine, select OS type *Other Linux 3.x kernel 64-bit* and after the VM is created, manually edit the `*.vmx` file using a text editor and add `mem.hotadd = "FALSE"`. Failing to do so will result in system unable to boot. Other hypervisors don't need this adjustment.
2018-07-09 15:14:44 +02:00
2018-11-01 15:30:28 +01:00
## Virtual Machine creation
2018-07-09 15:14:44 +02:00
Download **Alpine Virtual 3.8.0 x86_64** from <https://alpinelinux.org/downloads/> and boot from it. At the login prompt, use the root user without password to log in.
```
# Set up interfaces (leave the default choices)
setup-interfaces
ifup eth0
# Download and launch the setup script
wget dl.dasm.cz/alpine.sh
sh alpine.sh
```
2018-11-01 15:30:28 +01:00
The script will perform installation and configuration of Alpine linux, LXC and the whole VMMgr platform. Virtual machine is protected by LUKS-on-LVM disk encryption. The encryption password, which is simultaneously also a password for VMMgr web administration interface, will be asked for at the beginning of the script execution. Root access is disabled.
2018-11-01 15:30:28 +01:00
After the script finishes and shuts down the virtual machine, remove CD/DVD drive from the virtual machine settings and extend the HDD to 80 GB. This is to minimize the overall size of the OVA (Open Virtual Appliance) file to which the VM will be exported.
## Application Build environment creation
### First time setup
2018-11-01 15:30:28 +01:00
Follow the VM creation steps as above, but comment the line disabling the root login in *alpine.sh* file before its execution. After the script finishes and HDD size is adjusted, add serial port in the virtual machine settings and set it to use Unix socket or named pipe (eg. `\\.\pipe\alpine`). Then start the VM and connect to the serial port using *screen*, *PuTTY* or any other terminal client.
2018-11-01 15:30:28 +01:00
```
2018-11-01 15:30:28 +01:00
# Install git and OpenSSH client
apk --no-cache add git openssh-client
2018-11-07 20:14:49 +01:00
# Create SSH key
ssh-keygen -t ecdsa
```
Assign the newly generated key to your GitLab account
2018-11-07 20:14:49 +01:00
```
# Clone the repository
2018-11-01 15:30:28 +01:00
git clone --recurse-submodules ssh://git@gitlab.dasm.cz:2222/Spotter-Cluster/Spotter-Cluster.git
2018-11-01 15:30:28 +01:00
# Install the build toolchain
Spotter-Cluster/zz-build/install-toolchain.sh
```
After the script finishes, it is possible to connect via SSH (provided you have personal key in `authorized_keys`) as the toolchain sets up also *openssh-server*. The serial connection will work only until disconnected. If it should work indefinitely, run
```
sed -i 's/ttyS0::once/ttyS0::respawn/' /etc/inittab
kill -1 1
```
2018-11-01 15:30:28 +01:00
### Building the packages
There are 3 distinct packaging systems.
2018-11-01 15:30:28 +01:00
1. Just a plain tar for basic OS setup used by *alpine.sh* installation script.
2. Abuild for the native Alpine linux packages (APK) used for LXC, ACME client and VMMgr packaging.
3. `lxc-build`/`lxc-pack` for LXC images building and packaging.
2018-11-01 15:30:28 +01:00
Full build of all components is automated via *build-all.sh* script. Before the script can be run, signing keys need to be put in place
```
# Supply Abuild signing key
vi /srv/build/repokey.rsa
2018-11-07 20:14:49 +01:00
# Or generate a new pair
echo '/srv/build/repokey.rsa' | abuild-keygen
2018-11-01 15:30:28 +01:00
# Supply lxc-pack signing key
vi /srv/build/packages.key
2018-11-07 20:14:49 +01:00
# Or generate a new pair
openssl ecparam -genkey -name secp384r1 -out /srv/build/packages.key
openssl ec -in /srv/build/packages.key -pubout -out /srv/build/packages.pub
2018-11-01 15:30:28 +01:00
# Build all packages
Spotter-Cluster/zz-build/build-all.sh
```
2017-12-14 07:43:55 +01:00
2018-11-01 15:30:28 +01:00
The full build process takes considerable amount of time, so it is advised to have a persistent build VM.
## Host assignment
2018-04-21 23:11:35 +02:00
| Application | Container | UID/GID | Internal Port | Host |
|-----------------|------------------:|--------:|-----------------:|----------|
| ActiveMQ | activemq | 61616 | 61616 (ActiveMQ) | - |
| CKAN | ckan | 8003 | 8080 (HTTP) | ckan |
| CKAN Datapusher | ckan-datapusher | 8004 | 8080 (HTTP) | - |
| Crisis Cleanup | crisiscleanup | 8005 | 8080 (HTTP) | cc |
| CTS | cts | 8006 | 8080 (HTTP) | cts |
| FrontlineSMS | frontlinesms | 8018 | 8080 (HTTP) | sms |
| GNU Health | gnuhealth | 8008 | 8080 (HTTP) | gh |
| KanBoard | kanboard | 8009 | 8080 (HTTP) | kb |
| MariaDB | mariadb | 3306 | 3306 (MySQL) | - |
| Mifos X | mifosx | 8012 | 8080 (HTTP) | mifosx |
| Motech | motech | 8013 | 8080 (HTTP) | motech |
| ODK Aggregate | opendatakit | 8015 | 8080 (HTTP) | odk |
| ODK Build | opendatakit-build | 8017 | 8080 (HTTP) | odkbuild |
| OpenMapKit | openmapkit | 8007 | 8080 (HTTP) | omk |
| Pan.do/ra | pandora | 8002 | 8080 (HTTP) | pandora |
| Postgres | postgres | 5432 | 5432 (Postgres) | - |
| RabbitMQ | rabbitmq | 5672 | 5672 (AMQP) | - |
| Redis | redis | 6379 | 6379 (Redis) | - |
| Sahana | sahana | 8001 | 8080 (HTTP) | sahana |
| SAMBRO | sambro | 8001 | 8080 (HTTP) | sambro |
| SeedDMS | seeddms | 8010 | 8080 (HTTP) | dms |
| Sigmah | sigmah | 8011 | 8080 (HTTP) | sigmah |
| Solr | solr | 8983 | 8983 (HTTP) | - |
| Ushahidi | ushahidi | 8014 | 8080 (HTTP) | ush |