From 0f228fb1fec52810396d03ff9a02b0f60904ea6b Mon Sep 17 00:00:00 2001 From: Disassembler Date: Tue, 12 Dec 2017 05:48:36 +0100 Subject: [PATCH] Introduce install script for OpenMapKit, closes #149 --- 00-install.sh | 1 + basic/srv/portal/img/OMK.png | Bin 0 -> 48061 bytes basic/srv/portal/index.html | 30 +++++++++-- openmapkit.sh | 50 ++++++++++++++++++ .../etc/nginx/sites-available/openmapkit | 14 +++++ .../lib/systemd/system/openmapkit.service | 15 ++++++ openmapkit/srv/omk/settings.js | 20 +++++++ 7 files changed, 125 insertions(+), 5 deletions(-) create mode 100644 basic/srv/portal/img/OMK.png create mode 100755 openmapkit.sh create mode 100644 openmapkit/etc/nginx/sites-available/openmapkit create mode 100644 openmapkit/lib/systemd/system/openmapkit.service create mode 100644 openmapkit/srv/omk/settings.js diff --git a/00-install.sh b/00-install.sh index 1ea5d1c..fa296b2 100755 --- a/00-install.sh +++ b/00-install.sh @@ -16,6 +16,7 @@ ${SOURCE_DIR}/gnuhealth.sh ${SOURCE_DIR}/kanboard.sh ${SOURCE_DIR}/mifosx.sh ${SOURCE_DIR}/motech.sh +${SOURCE_DIR}/openmapkit.sh ${SOURCE_DIR}/pandora.sh ${SOURCE_DIR}/sahana.sh ${SOURCE_DIR}/sambro.sh diff --git a/basic/srv/portal/img/OMK.png b/basic/srv/portal/img/OMK.png new file mode 100644 index 0000000000000000000000000000000000000000..fdaa65205b31c32b1776379b04100a9091960d9a GIT binary patch literal 48061 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 MobileSAMBRO Mobile

Mobilní klient k aplikaci Sahana EDEN. Po stažení se zaregistrujte a pro přístup k serveru zadejte IP vaší instalace Sahana EDEN.
IOSIOS 6.0 a vyšší
- AndroidAndroid 4.0 a vyšší + AndroidAndroid 4.0 a vyšší

@@ -71,7 +71,7 @@ -
+

Open Data KitOpen Data Kit

Sběr dat s pomocí smartphone.
XLSForm - online konverter XLS.
@@ -83,6 +83,26 @@

+
+

Open Map KitOpen Data Kit

+

Sběr dat s pomocí smartphone.
+

    +
  • Login:
  • +
  • Heslo:
  • +
+
+ + +

FrontlineSMSFrontlineSMS

SMS messaging přes veřejné datové brány

@@ -132,14 +152,14 @@

UshahidiUshahidi Mobile

Mobilní aplikace Ushahidi pro
IOSIOS 9.0 a vyšší
- AndroidAndroid 4.4 a vyšší + AndroidAndroid 4.4 a vyšší

@@ -155,7 +175,7 @@ diff --git a/openmapkit.sh b/openmapkit.sh new file mode 100755 index 0000000..48616eb --- /dev/null +++ b/openmapkit.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +SOURCE_DIR=$(realpath $(dirname "${0}"))/openmapkit + +# Add NodeJS repository +wget https://deb.nodesource.com/gpgkey/nodesource.gpg.key -O - | apt-key add - +echo 'deb https://deb.nodesource.com/node_8.x stretch main' > /etc/apt/sources.list.d/nodejs.list +apt-get -y update + +# Install OpenMapKit dependencies +apt-get install --no-install-recommends -y build-essential nodejs python-dev python-virtualenv virtualenv + +# Clone repositories +git clone --depth 1 https://github.com/AmericanRedCross/OpenMapKitServer /srv/omk +git -C /srv/omk submodule update --init + +# Install OpenMapKit python virtual environment +virtualenv --no-site-packages --python=/usr/bin/python2.7 /srv/omk +/srv/omk/bin/pip install -r /srv/omk/requirements.txt + +# Create OpenMapKit OS user +adduser --system --group --home /srv/omk --shell /bin/bash omk +chown -R omk:omk /srv/omk + +# Install NodeJS dependencies +sudo -u omk -i npm install yarn +sudo -u omk -i npm install libxmljs +sudo -u omk -i /srv/omk/node_modules/yarn/bin/yarn + +# Configure OpenMapKit +export OMK_ADMIN_USER="admin" +export OMK_ADMIN_PWD=$(head -c 12 /dev/urandom | base64) +envsubst <${SOURCE_DIR}/srv/omk/settings.js >/srv/omk/settings.js + +# Configure OpenMapKit service +cp ${SOURCE_DIR}/lib/systemd/system/openmapkit.service /lib/systemd/system/openmapkit.service +systemctl daemon-reload +systemctl enable openmapkit +systemctl start openmapkit + +# Create nginx site definition +cp ${SOURCE_DIR}/etc/nginx/sites-available/openmapkit /etc/nginx/sites-available/openmapkit +ln -s /etc/nginx/sites-available/openmapkit /etc/nginx/sites-enabled/openmapkit + +# Restart services +systemctl restart nginx + +# Add portal application definition +portal-app-manager openmapkit "https://{host}:8007/" admin "${OMK_ADMIN_PWD}" +portal-app-manager openmapkit-clients -p clienturl "http://{host}:8096" diff --git a/openmapkit/etc/nginx/sites-available/openmapkit b/openmapkit/etc/nginx/sites-available/openmapkit new file mode 100644 index 0000000..35e293a --- /dev/null +++ b/openmapkit/etc/nginx/sites-available/openmapkit @@ -0,0 +1,14 @@ +server { + listen 8007 ssl http2; + listen [::]:8007 ssl http2; + + access_log /var/log/nginx/openmapkit.access.log; + error_log /var/log/nginx/openmapkit.error.log; + + location / { + proxy_set_header X-Forwarded-For $remote_addr; + proxy_set_header X-Forwarded-Host $host:$server_port; + proxy_set_header X-Forwarded-Proto https; + proxy_pass http://127.0.0.1:8096; + } +} diff --git a/openmapkit/lib/systemd/system/openmapkit.service b/openmapkit/lib/systemd/system/openmapkit.service new file mode 100644 index 0000000..8bad599 --- /dev/null +++ b/openmapkit/lib/systemd/system/openmapkit.service @@ -0,0 +1,15 @@ +[Unit] +Description=OpenMapKit Server +After=network.target + +[Service] +Type=simple +User=omk +Environment=NODE_ENV=production +Environment=VIRTUAL_ENV=/srv/omk +Environment=PATH=/srv/omk/bin:/usr/local/bin:/usr/bin:/bin +WorkingDirectory=/srv/omk +ExecStart=/usr/bin/node server.js + +[Install] +WantedBy=multi-user.target diff --git a/openmapkit/srv/omk/settings.js b/openmapkit/srv/omk/settings.js new file mode 100644 index 0000000..5f5fcb8 --- /dev/null +++ b/openmapkit/srv/omk/settings.js @@ -0,0 +1,20 @@ +module.exports = { + name: 'OpenMapKit Server', + description: 'OpenMapKit Server is the lightweight server component of OpenMapKit that handles the collection and aggregation of OpenStreetMap and OpenDataKit data.', + port: 8096, + dataDir: __dirname + '/data', + pagesDir: __dirname + '/pages', + hostUrl: 'http://posm.io', + osmApi: { + server: 'http://osm.posm.io', + user: 'POSM', + pass: '' + }, + + // To do simple authentication, you can have an object like so: + auth: { + user: '${OMK_ADMIN_USER}', + pass: '${OMK_ADMIN_PWD}' + } + +};