Skip to content
Snippets Groups Projects
startup-owncloud.sh 2.97 KiB
Newer Older
Pierre Ozoux's avatar
Pierre Ozoux committed
#!/bin/bash -eux

### configure email
sed -i s/##MAIL_HOST##/${MAIL_HOST}/ /etc/ssmtp/ssmtp.conf
sed -i s/##MAIL_PORT##/${MAIL_PORT}/ /etc/ssmtp/ssmtp.conf
sed -i s/##MAIL_USER##/${MAIL_USER}/ /etc/ssmtp/ssmtp.conf
sed -i s/##MAIL_PASS##/${MAIL_PASS}/ /etc/ssmtp/ssmtp.conf

Pierre Ozoux's avatar
Pierre Ozoux committed
###
# Check Pre Install
###

if [ -f /var/www/owncloud/config/config.php ]
then
  echo ">> owncloud already configured - skipping initialization"
Pierre Ozoux's avatar
Pierre Ozoux committed
  ## Update Database if this is run after an update
  echo ">> update database if necessary"
  cd /var/www/owncloud
  chmod o+x occ
  /opt/mysql-check.sh
  sudo -u www-data ./occ upgrade || (( $? == 3 ))
  cd -
Pierre Ozoux's avatar
Pierre Ozoux committed
  exit 0
fi

if [ ! -z ${OWNCLOUD_DO_NOT_INITIALIZE+x} ]
then
  echo ">> OWNCLOUD_DO_NOT_INITIALIZE set - skipping initialization"
  exit 0
fi

source /etc/environment

###
# Variables
###

if [ -z ${OWNCLOUD_IMAP_HOST+x} ]
then
  OWNCLOUD_IMAP_HOST=mail
fi

if [ -z ${DB_PORT+x} ]
then
  DB_PORT=3306
fi

if [ -z ${DB_NAME+x} ]
then
  DB_NAME=owncloud
fi

if [ -z ${EMAIL+x} ]
then
  EMAIL="admin"
  echo ">> owncloud admin user: $EMAIL"
fi

if [ -z ${ADMIN_PASSWORD+x} ]
then
  ADMIN_PASSWORD=`perl -e 'my @chars = ("A".."Z", "a".."z"); my $string; $string .= $chars[rand @chars] for 1..10; print $string;'`
  echo ">> generated owncloud admin password: $ADMIN_PASSWORD"
fi

###
# Pre Install
###

if [ ! -z ${OWNCLOUD_HSTS_HEADERS_ENABLE+x} ]
then
  echo ">> HSTS Headers enabled"
  sed -i 's/#add_header Strict-Transport-Security/add_header Strict-Transport-Security/g' /etc/nginx/conf.d/nginx-owncloud.conf

  if [ ! -z ${OWNCLOUD_HSTS_HEADERS_ENABLE_NO_SUBDOMAINS+x} ]
  then
    echo ">> HSTS Headers configured without includeSubdomains"
    sed -i 's/; includeSubdomains//g' /etc/nginx/conf.d/nginx-owncloud.conf
  fi
else
  echo ">> HSTS Headers disabled"
fi

###
# Headless initialization
###
echo ">> copy apps into apps folder."
cp -R /owncloud-apps/* /var/www/owncloud/apps/

echo ">>Setting Permissions:"
ocpath='/var/www/owncloud'
htuser='www-data'

chown -R root:${htuser} ${ocpath}/
chown -R ${htuser}:${htuser} ${ocpath}/apps/
chown -R ${htuser}:${htuser} ${ocpath}/config/
chown -R ${htuser}:${htuser} ${ocpath}/data/

echo ">> initialization"
echo ">> starting nginx to configure owncloud"
sleep 1
nginx > /tmp/nginx.log 2> /tmp/nginx.log &
sleep 1

## Create OwnCloud Installation
echo ">> init owncloud installation"
DATA_DIR=/var/www/owncloud/data

/opt/mysql-check.sh

if [ -z ${DB_USER+x} ] || [ -z ${DB_PASS+x} ]
then
  echo "We need user and password for database" 
  exit 1
else
  echo ">> using mysql DB"
  DB_TYPE="mysql"
  POST=`echo "install=true&adminlogin=$EMAIL&adminpass=$ADMIN_PASSWORD&adminpass-clone=$ADMIN_PASSWORD&directory=$DATA_DIR&dbtype=$DB_TYPE&dbuser=$DB_USER&dbpass=$DB_PASS&dbpass-clone=$DB_PASS&dbname=$DB_NAME&dbhost=$DB_HOST:$DB_PORT"`
fi

echo ">> using curl to post data to owncloud"
echo "POST = $POST"
curl -d "$POST" http://${URL}/index.php

echo ">> killing nginx - done with configuration"
sleep 1
killall nginx
echo ">> finished initialization"