#!/bin/bash SOURCE_DIR=$(realpath $(dirname "${0}"))/gnuhealth # Install dependencies for GNU Health apt-get -y --no-install-recommends install python3 python3-virtualenv virtualenv # Add NodeJS repository for Sao (Tryton web client) 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 dependencies for Sao (Tryton web client) apt-get -y --no-install-recommends install nodejs # Download GNU Health wget http://ftp.gnu.org/gnu/health/gnuhealth-3.2.8.tar.gz -O /tmp/gnuhealth.tgz tar xzf /tmp/gnuhealth.tgz -C /srv mv /srv/gnuhealth-3.2.8 /srv/gnuhealth rm -f /tmp/gnuhealth.tgz # Clone Sao (Tryton web client) repository git clone -b 4.2 --single-branch --depth 1 https://github.com/tryton/sao /srv/gnuhealth/sao # Apply Sao (Tryton web client) dependencies patch patch -d /srv/gnuhealth/sao -p0 <${SOURCE_DIR}/gnuhealth-sao-dependencies.patch # Create Python virtualenv virtualenv --system-site-packages -p /usr/bin/python3 /srv/gnuhealth echo '. /srv/gnuhealth/bin/activate' >/srv/gnuhealth/.bash_profile # Create databases export GNUHEALTH_PWD=$(head -c 18 /dev/urandom | base64 | tr -d '/+=') envsubst <${SOURCE_DIR}/tmp/gnuhealth-createdb.sql >/tmp/gnuhealth-createdb.sql sudo -u postgres psql -f /tmp/gnuhealth-createdb.sql rm -f /tmp/gnuhealth-createdb.sql # Create GNU Health OS user adduser --system --group --home /srv/gnuhealth --shell /bin/bash gnuhealth chown -R gnuhealth:gnuhealth /srv/gnuhealth # Install GNU Health sudo -u gnuhealth -i /srv/gnuhealth/gnuhealth-setup install # Install Sao (Tryton web client) sudo -u gnuhealth npm install --production --prefix /srv/gnuhealth/sao sudo -u gnuhealth bash -c 'cd /srv/gnuhealth/sao && /srv/gnuhealth/sao/node_modules/grunt-cli/bin/grunt' # Configure GNU Health envsubst <${SOURCE_DIR}/srv/gnuhealth/gnuhealth/tryton/server/config/trytond.conf >/srv/gnuhealth/gnuhealth/tryton/server/config/trytond.conf # Populate database export GNUHEALTH_ADMIN_PWD=$(head -c 12 /dev/urandom | base64) echo ${GNUHEALTH_ADMIN_PWD} >/srv/gnuhealth/.adminpwd sudo -u gnuhealth -i TRYTONPASSFILE=/srv/gnuhealth/.adminpwd /srv/gnuhealth/gnuhealth/tryton/server/trytond-4.2.8/bin/trytond-admin -d gnuhealth --all -v rm -f /srv/gnuhealth/.adminpwd # Populate demo database wget http://health.gnu.org/downloads/postgres_dumps/gnuhealth-3.2rc1.sql.gz -O /tmp/gnuhealth_demo.sql.gz export PGPASSWORD=${GNUHEALTH_PWD} zcat /tmp/gnuhealth_demo.sql.gz | psql gnuhealth_demo gnuhealth unset PGPASSWORD rm -f /tmp/gnuhealth_demo.sql.gz # Configure GNU Health service cp ${SOURCE_DIR}/lib/systemd/system/gnuhealth.service /lib/systemd/system/gnuhealth.service systemctl daemon-reload systemctl enable gnuhealth systemctl start gnuhealth # Create nginx site definition cp ${SOURCE_DIR}/etc/nginx/sites-available/gnuhealth /etc/nginx/sites-available/gnuhealth ln -s /etc/nginx/sites-available/gnuhealth /etc/nginx/sites-enabled/gnuhealth # Restart nginx systemctl restart nginx # Add portal application definition portal-app-manager gnuhealth "https://{host}:8006/index.html" admin "${GNUHEALTH_ADMIN_PWD}" portal-app-manager gnuhealth-clients -p clienturl "{host}:8006"