ソースを参照

Owncloud installation

Bob Mottram 10 年 前
コミット
33f6d92628
共有1 個のファイルを変更した227 個の追加0 個の削除を含む
  1. 227
    0
      install-freedombone.sh

+ 227
- 0
install-freedombone.sh ファイルの表示

@@ -73,6 +73,14 @@ INSTALLED_WITHIN_DOCKER="no"
73 73
 # There should be no spaces in the name
74 74
 PRIVATE_MAILING_LIST=
75 75
 
76
+# Domain name or freedns subdomain for Owncloud installation
77
+OWNCLOUD_DOMAIN_NAME=
78
+# Freedns dynamic dns code for owncloud
79
+OWNCLOUD_FREEDNS_SUBDOMAIN_CODE=
80
+OWNCLOUD_ARCHIVE="owncloud-7.0.2.tar.bz2"
81
+OWNCLOUD_DOWNLOAD="https://download.owncloud.org/community/$OWNCLOUD_ARCHIVE"
82
+OWNCLOUD_HASH="ea07124a1b9632aa5227240d655e4d84967fb6dd49e4a16d3207d6179d031a3a"
83
+
76 84
 GPG_KEYSERVER="hkp://keys.gnupg.net"
77 85
 
78 86
 # optionally you can provide your exported GPG key pair here
@@ -97,6 +105,9 @@ INSTALL_DIR=$HOME/build
97 105
 # device name for an attached usb drive
98 106
 USB_DRIVE=/dev/sda1
99 107
 
108
+# memory limit for php in MB
109
+MAX_PHP_MEMORY=32
110
+
100 111
 export DEBIAN_FRONTEND=noninteractive
101 112
 
102 113
 # File which keeps track of what has already been installed
@@ -800,6 +811,9 @@ function script_to_make_self_signed_certificates {
800 811
 }
801 812
 
802 813
 function configure_email {
814
+  if [[ $SYSTEM_TYPE == "cloud" || $SYSTEM_TYPE == "chat" || $SYSTEM_TYPE == "social" ]]; then
815
+      return
816
+  fi
803 817
   if grep -Fxq "configure_email" $COMPLETION_FILE; then
804 818
       return
805 819
   fi
@@ -884,6 +898,9 @@ function configure_email {
884 898
 
885 899
 function spam_filtering {
886 900
   # NOTE: spamassassin installation currently doesn't work, sa-compile fails with a make error 23/09/2014
901
+  if [[ $SYSTEM_TYPE == "cloud" || $SYSTEM_TYPE == "chat" || $SYSTEM_TYPE == "social" ]]; then
902
+      return
903
+  fi
887 904
   if grep -Fxq "spam_filtering" $COMPLETION_FILE; then
888 905
       return
889 906
   fi
@@ -980,6 +997,9 @@ function spam_filtering {
980 997
 }
981 998
 
982 999
 function configure_imap {
1000
+  if [[ $SYSTEM_TYPE == "cloud" || $SYSTEM_TYPE == "chat" || $SYSTEM_TYPE == "social" ]]; then
1001
+      return
1002
+  fi
983 1003
   if grep -Fxq "configure_imap" $COMPLETION_FILE; then
984 1004
       return
985 1005
   fi
@@ -1005,6 +1025,9 @@ function configure_imap {
1005 1025
 }
1006 1026
 
1007 1027
 function configure_gpg {
1028
+  if [[ $SYSTEM_TYPE == "cloud" || $SYSTEM_TYPE == "chat" || $SYSTEM_TYPE == "social" ]]; then
1029
+      return
1030
+  fi
1008 1031
   if grep -Fxq "configure_gpg" $COMPLETION_FILE; then
1009 1032
       return
1010 1033
   fi
@@ -1063,6 +1086,9 @@ function configure_gpg {
1063 1086
 }
1064 1087
 
1065 1088
 function email_client {
1089
+  if [[ $SYSTEM_TYPE == "cloud" || $SYSTEM_TYPE == "chat" || $SYSTEM_TYPE == "social" ]]; then
1090
+      return
1091
+  fi
1066 1092
   if grep -Fxq "email_client" $COMPLETION_FILE; then
1067 1093
       return
1068 1094
   fi
@@ -1166,6 +1192,9 @@ function email_client {
1166 1192
 }
1167 1193
 
1168 1194
 function folders_for_mailing_lists {
1195
+  if [[ $SYSTEM_TYPE == "cloud" || $SYSTEM_TYPE == "chat" || $SYSTEM_TYPE == "social" ]]; then
1196
+      return
1197
+  fi
1169 1198
   if grep -Fxq "folders_for_mailing_lists" $COMPLETION_FILE; then
1170 1199
       return
1171 1200
   fi
@@ -1212,6 +1241,9 @@ function folders_for_mailing_lists {
1212 1241
 }
1213 1242
 
1214 1243
 function folders_for_email_addresses {
1244
+  if [[ $SYSTEM_TYPE == "cloud" || $SYSTEM_TYPE == "chat" || $SYSTEM_TYPE == "social" ]]; then
1245
+      return
1246
+  fi
1215 1247
   if grep -Fxq "folders_for_email_addresses" $COMPLETION_FILE; then
1216 1248
       return
1217 1249
   fi
@@ -1276,6 +1308,9 @@ function dynamic_dns_freedns {
1276 1308
 }
1277 1309
 
1278 1310
 function create_private_mailing_list {
1311
+  if [[ $SYSTEM_TYPE == "cloud" || $SYSTEM_TYPE == "chat" || $SYSTEM_TYPE == "social" ]]; then
1312
+      return
1313
+  fi
1279 1314
   # This installation doesn't work, results in ruby errors
1280 1315
   # There is currently no schleuder package for Debian jessie
1281 1316
   if grep -Fxq "create_private_mailing_list" $COMPLETION_FILE; then
@@ -1334,6 +1369,9 @@ function create_private_mailing_list {
1334 1369
 }
1335 1370
 
1336 1371
 function import_email {
1372
+  if [[ $SYSTEM_TYPE == "cloud" || $SYSTEM_TYPE == "chat" || $SYSTEM_TYPE == "social" ]]; then
1373
+      return
1374
+  fi
1337 1375
   EMAIL_COMPLETE_MSG='  *** Freedombone mailbox installation is complete ***'
1338 1376
   if grep -Fxq "import_email" $COMPLETION_FILE; then
1339 1377
       if [[ $SYSTEM_TYPE == "email" || $SYSTEM_TYPE == "mailbox" ]]; then
@@ -1392,9 +1430,197 @@ function install_web_server {
1392 1430
   git clone https://github.com/perusio/nginx_ensite
1393 1431
   cd $INSTALL_DIR/nginx_ensite
1394 1432
   cp nginx_* /usr/sbin
1433
+  nginx_dissite default
1395 1434
   echo 'install_web_server' >> $COMPLETION_FILE
1396 1435
 }
1397 1436
 
1437
+function install_owncloud {
1438
+  if [[ $SYSTEM_TYPE == "email" || $SYSTEM_TYPE == "mailbox" || $SYSTEM_TYPE == "chat" || $SYSTEM_TYPE == "social" ]]; then
1439
+      return
1440
+  fi
1441
+  OWNCLOUD_COMPLETION_MSG1=" *** Freedombone $SYSTEM_TYPE is now installed ***"
1442
+  OWNCLOUD_COMPLETION_MSG2="Open $OWNCLOUD_DOMAIN_NAME in a web browser to complete the setup"
1443
+  if grep -Fxq "install_owncloud" $COMPLETION_FILE; then
1444
+      if [[ $SYSTEM_TYPE == "cloud" ]]; then
1445
+          # unmount any attached usb drive
1446
+          if [ -d /media/usb ]; then
1447
+              umount /media/usb
1448
+              rm -rf /media/usb
1449
+          fi
1450
+          echo ''
1451
+          echo $OWNCLOUD_COMPLETION_MSG1
1452
+          echo $OWNCLOUD_COMPLETION_MSG2
1453
+          exit 0
1454
+      fi
1455
+      return
1456
+  fi
1457
+  if [ ! $OWNCLOUD_DOMAIN_NAME ]; then
1458
+      return
1459
+  fi
1460
+  if ! [[ $SYSTEM_TYPE == "cloud" ]]; then
1461
+      if [ ! $SYSTEM_TYPE ]; then
1462
+          return
1463
+      fi
1464
+  fi
1465
+  # if this is exclusively a cloud setup
1466
+  if [[ $SYSTEM_TYPE == "cloud" ]]; then
1467
+      OWNCLOUD_DOMAIN_NAME=$DOMAIN_NAME
1468
+      OWNCLOUD_FREEDNS_SUBDOMAIN_CODE=$FREEDNS_SUBDOMAIN_CODE
1469
+  fi
1470
+  apt-get -y --force-yes install php5 php5-gd php-xml-parser php5-intl wget
1471
+  apt-get -y --force-yesinstall php5-sqlite php5-mysql smbclient curl libcurl3 php5-curl
1472
+
1473
+  if [ ! -d /var/www/$OWNCLOUD_DOMAIN_NAME ]; then
1474
+      mkdir /var/www/$OWNCLOUD_DOMAIN_NAME
1475
+      mkdir /var/www/$OWNCLOUD_DOMAIN_NAME/htdocs
1476
+  fi
1477
+
1478
+  echo 'server {' > /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1479
+  echo '    listen 80;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1480
+  echo "    server_name $OWNCLOUD_DOMAIN_NAME;" >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1481
+  echo '    rewrite ^ https://$server_name$request_uri? permanent;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1482
+  echo '}' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1483
+
1484
+  echo 'server {' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1485
+  echo '    listen 443 ssl;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1486
+  echo "    root /var/www/$OWNCLOUD_DOMAIN_NAME/htdocs;" >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1487
+  echo "    server_name $OWNCLOUD_DOMAIN_NAME;" >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1488
+
1489
+  echo '    ssl on;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1490
+  echo "    ssl_certificate /etc/ssl/certs/$OWNCLOUD_DOMAIN_NAME.crt;" >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1491
+  echo "    ssl_certificate_key /etc/ssl/private/$OWNCLOUD_DOMAIN_NAME.key;" >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1492
+  echo "    ssl_dhparam /etc/ssl/certs/$OWNCLOUD_DOMAIN_NAME.dhparam;" >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1493
+
1494
+  echo '    ssl_session_timeout 5m;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1495
+  echo '    ssl_prefer_server_ciphers on;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1496
+  echo '    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # not possible to do exclusive' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1497
+  echo "    ssl_ciphers 'EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA';" >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1498
+  echo '    add_header X-Frame-Options DENY;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1499
+  echo '    add_header X-Content-Type-Options nosniff;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1500
+  echo '    add_header Strict-Transport-Security max-age=15768000;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1501
+  echo '    # if you want to be able to access the site via HTTP' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1502
+  echo '    # then replace the above with the following:' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1503
+  echo '    # add_header Strict-Transport-Security "max-age=0;";' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1504
+
1505
+  echo "    # make sure webfinger and other well known services aren't blocked" >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1506
+  echo '    # by denying dot files and rewrite request to the front controller' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1507
+  echo '    location ^~ /.well-known/ {' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1508
+  echo '        allow all;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1509
+  echo '        rewrite ^/(.*) /index.php?q=$uri&$args last;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1510
+  echo '    }' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1511
+
1512
+  echo '    client_max_body_size 10G; # set max upload size' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1513
+  echo '    client_body_buffer_size 128k;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1514
+  echo '    fastcgi_buffers 64 4K;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1515
+
1516
+  echo '    rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1517
+  echo '    rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1518
+  echo '    rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1519
+
1520
+  echo '    index index.php;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1521
+  echo '    error_page 403 /core/templates/403.php;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1522
+  echo '    error_page 404 /core/templates/404.php;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1523
+
1524
+  echo '    location = /robots.txt {' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1525
+  echo '        allow all;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1526
+  echo '        log_not_found off;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1527
+  echo '        access_log off;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1528
+  echo '    }' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1529
+
1530
+  echo '    location ~ ^/(data|config|\.ht|db_structure\.xml|README) {' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1531
+  echo '        deny all;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1532
+  echo '    }' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1533
+
1534
+  echo '    location / {' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1535
+  echo '        # The following 2 rules are only needed with webfinger' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1536
+  echo '        rewrite ^/.well-known/host-meta /public.php?service=host-meta last;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1537
+  echo '        rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1538
+
1539
+  echo '        rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1540
+  echo '        rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1541
+
1542
+  echo '        rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1543
+
1544
+  echo '        try_files $uri $uri/ index.php;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1545
+  echo '    }' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1546
+
1547
+  echo '    location ~ ^(.+?\.php)(/.*)?$ {' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1548
+  echo '        try_files $1 =404;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1549
+  echo '        fastcgi_split_path_info ^(.+\.php)(/.+)$;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1550
+  echo '        fastcgi_pass unix:/var/run/php5-fpm.sock;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1551
+  echo '        fastcgi_index index.php;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1552
+  echo '        include fastcgi_params;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1553
+  echo '        fastcgi_param SCRIPT_FILENAME $document_root$1;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1554
+  echo '        fastcgi_param PATH_INFO $2;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1555
+  echo '        fastcgi_param HTTPS on;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1556
+  echo '    }' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1557
+
1558
+  echo '    # Optional: set long EXPIRES header on static assets' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1559
+  echo '    location ~* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1560
+  echo '        expires 30d;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1561
+  echo "        # Optional: Don't log access to assets" >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1562
+  echo '        access_log off;' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1563
+  echo '    }' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1564
+  echo '}' >> /etc/nginx/sites-available/$OWNCLOUD_DOMAIN_NAME
1565
+
1566
+
1567
+  sed -i "s/memory_limit = 128M/memory_limit = $MAX_PHP_MEMORYM/g" /etc/php5/fpm/php.ini
1568
+  sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g' /etc/php5/fpm/php.ini
1569
+  sed -i "s/memory_limit = -1/memory_limit = $MAX_PHP_MEMORYM/g" /etc/php5/cli/php.ini
1570
+  sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 50M/g" /etc/php5/fpm/php.ini
1571
+  sed -i "s/post_max_size = 8M/post_max_size = 50M/g" /etc/php5/fpm/php.ini
1572
+
1573
+  makecert $OWNCLOUD_DOMAIN_NAME
1574
+
1575
+  # download owncloud
1576
+  cd $INSTALL_DIR
1577
+  wget $OWNCLOUD_DOWNLOAD
1578
+  if [ ! -f $INSTALL_DIR/$OWNCLOUD_ARCHIVE ]; then
1579
+      echo 'Owncloud could not be downloaded.  Check that it exists at '
1580
+      echo $OWNCLOUD_DOWNLOAD
1581
+      echo 'And if neccessary update the version number and hash within this script'
1582
+      exit 18
1583
+  fi
1584
+  # Check that the hash is correct
1585
+  CHECKSUM=$(sha256sum $OWNCLOUD_ARCHIVE | awk -F ' ' '{print $1}')
1586
+  if [[ $CHECKSUM != $OWNCLOUD_HASH ]]; then
1587
+      echo 'The sha256 hash of the owncloud download is incorrect. Possibly the file may have been tampered with. Check the hash on the Owncloud web site.'
1588
+      exit 19
1589
+  fi
1590
+  tar -xjf $OWNCLOUD_ARCHIVE
1591
+  echo 'Copying files...'
1592
+  cp -r owncloud/* /var/www/$OWNCLOUD_DOMAIN_NAME/htdocs
1593
+  chown -R www-data:www-data /var/www/$OWNCLOUD_DOMAIN_NAME/htdocs/apps
1594
+  chown -R www-data:www-data /var/www/$OWNCLOUD_DOMAIN_NAME/htdocs/config
1595
+  chown www-data:www-data /var/www/$OWNCLOUD_DOMAIN_NAME/htdocs
1596
+
1597
+  nginx_ensite $OWNCLOUD_DOMAIN_NAME
1598
+  service php5-fpm restart
1599
+  service nginx restart
1600
+
1601
+  # update the dynamic DNS
1602
+  if [[ $OWNCLOUD_FREEDNS_SUBDOMAIN_CODE != $FREEDNS_SUBDOMAIN_CODE ]]; then
1603
+      if ! grep -q "$OWNCLOUD_DOMAIN_NAME" /usr/bin/dynamicdns; then
1604
+          echo "# $OWNCLOUD_DOMAIN_NAME" >> /usr/bin/dynamicdns
1605
+          echo "wget -O - https://freedns.afraid.org/dynamic/update.php?$OWNCLOUD_FREEDNS_SUBDOMAIN_CODE== >> /dev/null 2>&1" >> /usr/bin/dynamicdns
1606
+      fi
1607
+  fi
1608
+
1609
+  echo 'install_owncloud' >> $COMPLETION_FILE
1610
+
1611
+  if [[ $SYSTEM_TYPE == "cloud" ]]; then
1612
+      # unmount any attached usb drive
1613
+      if [ -d /media/usb ]; then
1614
+          umount /media/usb
1615
+          rm -rf /media/usb
1616
+      fi
1617
+      echo ''
1618
+      echo $OWNCLOUD_COMPLETION_MSG1
1619
+      echo $OWNCLOUD_COMPLETION_MSG2
1620
+      exit 0
1621
+  fi
1622
+}
1623
+
1398 1624
 function install_final {
1399 1625
   if grep -Fxq "install_final" $COMPLETION_FILE; then
1400 1626
       return
@@ -1448,6 +1674,7 @@ dynamic_dns_freedns
1448 1674
 import_email
1449 1675
 install_web_server
1450 1676
 configure_firewall_for_web_server
1677
+install_owncloud
1451 1678
 install_final
1452 1679
 echo 'Freedombone installation is complete'
1453 1680
 exit 0