# Server installieren

Benötigt wird ein Linux Webserver mit Ubuntu 18.04 LTS und 4 GB RAM

## 1. Installation Webserver

#### Variante A: Installation mit VirtualBox

Laden Sie die Software [VirtualBox](https://www.virtualbox.org/wiki/Downloads) herunter und installieren Sie diese auf Ihrem Betriebssystem. Die Software ist erhältlich für Windows, Mac (OS X) und Linux.

Laden Sie außerdem das Installationsmedium (ISO-Datei) der Linux-Distribution Ubuntu in der Version 18.04 LTS herunter: <https://www.ubuntu.com/download/desktop> (ca. 2 GB).

#### Neue virtuelle Maschine erstellen:

- Name: `kimws2019-openrefine`
- Type: `Linux`
- Version: `Ubuntu (64-bit)`
- Memory size: `4096 MB`
- Hard disk: `VDI` / `dynamically allocated` / `20 GB`

#### **Einstellungen der virtuellen Maschine anpassen (Empfehlungen):**

- General/Advanced/Shared clipboard: `Bidirectional`
- System/Processor/Processor(s): `2`
- System/Processor/Extended Features: `Enable PAE/NX`
- Display/Screen/Video Memory: `128 MB`
- Network/Adapter 1/Advanced/Port Forwarding/+ 
  - Host Port: `80`
  - Guest Port: `80`

#### Start der virtuellen Maschine:

Wählen Sie die zuvor heruntergeladene Installationsdatei (ubuntu-18.04.2-desktop-amd64.iso oder ähnlich) aus und folgen Sie dem Installationsprogramm. Danach sollten wir als erstes Sicherheitsupdates installieren. Öffnen Sie das Programm `Terminal` und geben Sie dort folgenden Befehl ein:

```
sudo apt update && sudo apt upgrade
```

#### VirtualBox Gasterweiterungen installieren

Nach erfolgreicher Installation des Betriebssystems müssen noch Erweiterungen der Software VirtualBox installiert werden, damit die  Zwischenablage funktioniert. Geben Sie dazu folgenden Befehl ein und starten Sie anschließend das System neu.

```
sudo apt install virtualbox-guest-x11
```

#### Variante B: Installation bei einem Cloud-Hoster

Eine kostengünstige Möglichkeit ist die Registrierung beim Anbieter  Digital Ocean. Sie erhalten 10 Dollar Startguthaben, sofern Sie sich  über folgenden Link anmelden: <https://m.do.co/c/22f45ed23fdd>

*Disclaimer: Der Autor dieses Tutorials erhält von Digital Ocean  25 Dollar Guthaben, sofern Sie Digital Ocean weiter nutzen und dort  mindestens 25 Dollar ausgeben, vgl. [Empfehlungsprogramm](https://www.digitalocean.com/docs/accounts/settings/referral-program/)*.

#### Droplet erstellen

- Image: Distributions / Ubuntu / 18.04
- Size: 4 GB, 2 CPUs, 80GB SSD, 4TB transfer
- Datacenter region: Frankfurt

#### Login via SSH

Per E-Mail wird die IP-Adresse und ein Einmalpasswort zugestellt.  Verbinden Sie sich über SSH mit dem Server. Unter Windows können Sie den  kostenlosen SSH-Client [putty.exe](https://the.earth.li/~sgtatham/putty/latest/w32/putty.exe)  verwenden, der ohne Administrationsrechte ausgeführt werden kann. Unter  Mac OS X und Linux ist eine SSH-Funktionalität integriert und kann direkt vom Terminal aufgerufen werden. Beispiel:

```
ssh root@46.101.132.29
```

Sobald Sie mit dem Einmalpasswort eingeloggt sind, müssen Sie ein neues Passwort für den Root-Account vergeben. Als erstes sollten wir  danach Sicherheitsupdates installieren:

```
apt update && apt upgrade
```

## 2. Installation von OpenRefine

- Install Java 8 und unzip

  - ```
    apt install openjdk-8-jre-headless unzip
    ```

- Java Workaround für Cloud-Server

  - ```
    sed -i 's/securerandom.source=file:\/dev\/random/securerandom.source=file:\/dev\/urandom/' /etc/java-8-openjdk/security/java.security
    ```

- Installation OpenRefine 3.2 beta

  - ```
    mkdir /opt/openrefine
    wget https://github.com/OpenRefine/OpenRefine/releases/download/3.2-beta/openrefine-linux-3.2-beta.tar.gz
    tar -xzf openrefine-linux-3.2-beta.tar.gz -C /opt/openrefine --strip 1
    ```

- Installation OpenRefine service als root

  - ```
    adduser --system openrefine
    ```

  - ```
    echo "[Unit]
    Description=OpenRefine
    [Service]
    User=openrefine
    ExecStart=/opt/openrefine/refine -i 0.0.0.0 -m 14G
    TimeoutStopSec=3600s
    Restart=always
    [Install]
    WantedBy=default.target
    " > /etc/systemd/system/openrefine.service
    ```

  - ```
    systemctl enable openrefine.service
    systemctl start openrefine.service
    ```

  - ```
    iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3333
    ```

- Installation OpenRefine client

  - ```
    wget -O /usr/bin/openrefine-client https://github.com/opencultureconsulting/openrefine-client/releases/download/v0.3.4/openrefine-client_0-3-4_linux-64bit
    chmod +x /usr/bin/openrefine-client
    ```

## 3. Nutzer*innen für Workshop anlegen

- SSH erlauben

  - ```
    sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
    systemctl reload sshd
    ```

- Beispieldateien in `/etc/skel` bereitlegen...

  - ```
    wget https://github.com/felixlohmeier/openrefine-kimws2019/archive/master.zip
    unzip -j master.zip -d /etc/skel/
    rm master.zip
    ```

- Gruppe und User anlegen

  - ```
    groupadd kim
    useradd -m -s/bin/bash -G kim kim01
    useradd -m -s/bin/bash -G kim kim02
    useradd -m -s/bin/bash -G kim kim03
    useradd -m -s/bin/bash -G kim kim04
    useradd -m -s/bin/bash -G kim kim05
    ```

- Passwörter setzen

  - ```
    passwd kim01
    ```

  - ```
    passwd kim02
    ```

  - ```
    passwd kim03
    ```

  - ```
    passwd kim04
    ```

  - ```
    passwd kim05
    ```

## 4. Installation HOS-MetadataTransformations

* Verzeichnis anlegen und Gruppe kim dafür berechtigen

  * ```
    mkdir -p /opt/hos
    chgrp -R kim /opt/hos/
    chmod -R 2775 /opt/hos/
    ```

* Daten herunterladen und installieren

  * ```
    cd /opt/hos
    git clone https://github.com/subhh/HOS-MetadataTransformations.git .
    ```

  * ```
    ./install.sh
    ```

  * ```
    ./init-solr-schema.sh
    ```

* Schreibrechte für Gruppe kim

  * ```
    chmod -R g+w /opt/hos
    ```

* Standardports in den Shell-Scripten verändern, damit sich die User nicht in die Quere kommen

  * ```
    sed -i 's/port="3334"/port="$((3334+$(id -u | cut -c 4)))"/g' /opt/hos/bin/*.sh /opt/hos/run.sh
    ```