2017-12-02 00:29:49 +01:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
SOURCE_DIR=$(realpath $(dirname "${0}"))
|
|
|
|
|
|
|
|
# Install dependencies for GNU Health
|
|
|
|
apt-get -y --no-install-recommends install python3 python3-virtualenv virtualenv
|
|
|
|
|
2017-12-03 22:03:24 +01:00
|
|
|
# Add NodeJS repository for Sao (Tryton web client)
|
2017-12-03 19:43:50 +01:00
|
|
|
wget https://deb.nodesource.com/gpgkey/nodesource.gpg.key -O - | apt-key add -
|
|
|
|
echo 'deb https://deb.nodesource.com/node_8.x xenial main' > /etc/apt/sources.list.d/nodejs.list
|
|
|
|
apt-get -y update
|
|
|
|
|
2017-12-03 22:03:24 +01:00
|
|
|
# Install dependencies for Sao (Tryton web client)
|
2017-12-03 19:43:50 +01:00
|
|
|
apt-get -y --no-install-recommends install nodejs
|
|
|
|
|
|
|
|
# Download GNU Health
|
2017-12-02 00:29:49 +01:00
|
|
|
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
|
|
|
|
|
2017-12-03 22:03:24 +01:00
|
|
|
# Clone Sao (Tryton web client) repository
|
2017-12-03 23:38:36 +01:00
|
|
|
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/gnuhealth-sao-dependencies.patch
|
2017-12-03 19:43:50 +01:00
|
|
|
|
2017-12-02 00:29:49 +01:00
|
|
|
# Create Python virtualenv
|
|
|
|
virtualenv --system-site-packages -p /usr/bin/python3 /srv/gnuhealth
|
|
|
|
echo '. /srv/gnuhealth/bin/activate' >/srv/gnuhealth/.bash_profile
|
|
|
|
|
|
|
|
# Create database
|
|
|
|
export GNUHEALTH_PWD=$(head -c 18 /dev/urandom | base64 | tr -d '/+=')
|
|
|
|
envsubst <${SOURCE_DIR}/gnuhealth/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
|
|
|
|
|
2017-12-03 22:03:24 +01:00
|
|
|
# Install Sao (Tryton web client)
|
2017-12-03 19:43:50 +01:00
|
|
|
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'
|
|
|
|
|
2017-12-02 00:29:49 +01:00
|
|
|
# Configure GNU Health
|
|
|
|
envsubst <${SOURCE_DIR}/gnuhealth/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.7/bin/trytond-admin -d gnuhealth --all -v
|
|
|
|
rm -f /srv/gnuhealth/.adminpwd
|
|
|
|
|
|
|
|
# Configure GNU Health service
|
|
|
|
cp ${SOURCE_DIR}/gnuhealth/lib/systemd/system/gnuhealth.service /lib/systemd/system/gnuhealth.service
|
|
|
|
systemctl daemon-reload
|
|
|
|
systemctl enable gnuhealth
|
|
|
|
systemctl start gnuhealth
|
|
|
|
|
2017-12-03 22:03:24 +01:00
|
|
|
# Create nginx site definition
|
|
|
|
cp ${SOURCE_DIR}/gnuhealth/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
|
|
|
|
|
2017-12-02 00:29:49 +01:00
|
|
|
# Add portal application definition
|
2017-12-03 23:40:15 +01:00
|
|
|
${SOURCE_DIR}/basic/portal-app-manager.py gnuhealth "https://{host}:8006/index.html" admin "${GNUHEALTH_ADMIN_PWD}"
|
2017-12-03 22:47:10 +01:00
|
|
|
${SOURCE_DIR}/basic/portal-app-manager.py gnuhealth-clients -p clienturl "{host}:8006"
|