Browse Source

More backing up

Bob Mottram 10 years ago
parent
commit
0ef773f767
1 changed files with 114 additions and 61 deletions
  1. 114
    61
      install-freedombone.sh

+ 114
- 61
install-freedombone.sh View File

115
 MICROBLOG_FREEDNS_SUBDOMAIN_CODE=
115
 MICROBLOG_FREEDNS_SUBDOMAIN_CODE=
116
 MICROBLOG_REPO="git://gitorious.org/social/mainline.git"
116
 MICROBLOG_REPO="git://gitorious.org/social/mainline.git"
117
 MICROBLOG_ADMIN_PASSWORD=
117
 MICROBLOG_ADMIN_PASSWORD=
118
+MICROBLOG_INSTALLED="no"
118
 
119
 
119
 # Domain name or redmatrix installation
120
 # Domain name or redmatrix installation
120
 REDMATRIX_DOMAIN_NAME=
121
 REDMATRIX_DOMAIN_NAME=
122
 REDMATRIX_REPO="https://github.com/friendica/red.git"
123
 REDMATRIX_REPO="https://github.com/friendica/red.git"
123
 REDMATRIX_ADDONS_REPO="https://github.com/friendica/red-addons.git"
124
 REDMATRIX_ADDONS_REPO="https://github.com/friendica/red-addons.git"
124
 REDMATRIX_ADMIN_PASSWORD=
125
 REDMATRIX_ADMIN_PASSWORD=
126
+REDMATRIX_INSTALLED="no"
125
 
127
 
126
 # Domain name or freedns subdomain for Owncloud installation
128
 # Domain name or freedns subdomain for Owncloud installation
127
 OWNCLOUD_DOMAIN_NAME=
129
 OWNCLOUD_DOMAIN_NAME=
130
 OWNCLOUD_ARCHIVE="owncloud-7.0.2.tar.bz2"
132
 OWNCLOUD_ARCHIVE="owncloud-7.0.2.tar.bz2"
131
 OWNCLOUD_DOWNLOAD="https://download.owncloud.org/community/$OWNCLOUD_ARCHIVE"
133
 OWNCLOUD_DOWNLOAD="https://download.owncloud.org/community/$OWNCLOUD_ARCHIVE"
132
 OWNCLOUD_HASH="ea07124a1b9632aa5227240d655e4d84967fb6dd49e4a16d3207d6179d031a3a"
134
 OWNCLOUD_HASH="ea07124a1b9632aa5227240d655e4d84967fb6dd49e4a16d3207d6179d031a3a"
135
+OWNCLOUD_INSTALLED="no"
133
 
136
 
134
 # Domain name or freedns subdomain for your wiki
137
 # Domain name or freedns subdomain for your wiki
135
 WIKI_FREEDNS_SUBDOMAIN_CODE=
138
 WIKI_FREEDNS_SUBDOMAIN_CODE=
137
 WIKI_ARCHIVE="dokuwiki-stable.tgz"
140
 WIKI_ARCHIVE="dokuwiki-stable.tgz"
138
 WIKI_DOWNLOAD="http://download.dokuwiki.org/src/dokuwiki/$WIKI_ARCHIVE"
141
 WIKI_DOWNLOAD="http://download.dokuwiki.org/src/dokuwiki/$WIKI_ARCHIVE"
139
 WIKI_HASH="a0e79986b87b2744421ce3c33b43a21f296deadd81b1789c25fa4bb095e8e470"
142
 WIKI_HASH="a0e79986b87b2744421ce3c33b43a21f296deadd81b1789c25fa4bb095e8e470"
143
+WIKI_INSTALLED="no"
140
 
144
 
141
 # see https://www.dokuwiki.org/template:mnml-blog
145
 # see https://www.dokuwiki.org/template:mnml-blog
142
 # https://andreashaerter.com/tmp/downloads/dokuwiki-template-mnml-blog/CHECKSUMS.asc
146
 # https://andreashaerter.com/tmp/downloads/dokuwiki-template-mnml-blog/CHECKSUMS.asc
297
   fi
301
   fi
298
 }
302
 }
299
 
303
 
304
+function backup_to_friends_servers {
305
+  if grep -Fxq "backup_to_friends_servers" $COMPLETION_FILE; then
306
+      return
307
+  fi
308
+  if [ ! $FRIENDS_SERVERS_LIST ]; then
309
+      return
310
+  fi
311
+
312
+  apt-get -y --force-yes install duplicity
313
+
314
+  # script to do backups
315
+  echo '#!/bin/bash' > /usr/bin/backup2friends
316
+  echo 'GPG_KEY=$1' >> /usr/bin/backup2friends
317
+  echo '' >> /usr/bin/backup2friends
318
+  echo "if [ ! -f $FRIENDS_SERVERS_LIST ]; then" >> /usr/bin/backup2friends
319
+  echo '    exit 1' >> /usr/bin/backup2friends
320
+  echo 'fi' >> /usr/bin/backup2friends
321
+  echo '' >> /usr/bin/backup2friends
322
+  echo 'if [ ! $GPG_KEY ]; then' >> /usr/bin/backup2friends
323
+  echo "    echo 'Unable to perform automated backup. You need to add a GPG key to /etc/cron.daily/backuptofriends' | mail -s 'Backup failure' $MY_USERNAME@$DOMAIN_NAME" >> /usr/bin/backup2friends
324
+  echo '    exit 2' >> /usr/bin/backup2friends
325
+  echo 'fi' >> /usr/bin/backup2friends
326
+  echo '' >> /usr/bin/backup2friends
327
+
328
+  echo '# Put some files into a temporary directory so that they can be easily backed up' >> /usr/bin/backup2friends
329
+  echo "if [ ! -d /home/$MY_USERNAME/tempfiles ]; then" >> /usr/bin/backup2friends
330
+  echo "  mkdir /home/$MY_USERNAME/tempfiles" >> /usr/bin/backup2friends
331
+  echo 'fi' >> /usr/bin/backup2friends
332
+  if [[ $MICROBLOG_INSTALLED == "yes" ]]; then
333
+      echo "mysqldump --password=$MARIADB_PASSWORD gnusocial > /home/$MY_USERNAME/tempfiles/gnusocial.sql" >> /usr/bin/backup2friends
334
+  fi
335
+  if [[ $REDMATRIX_INSTALLED == "yes" ]]; then
336
+      echo "mysqldump --password=$MARIADB_PASSWORD redmatrix > /home/$MY_USERNAME/tempfiles/redmatrix.sql" >> /usr/bin/backup2friends
337
+  fi
338
+  if [[ $OWNCLOUD_INSTALLED == "yes" ]]; then
339
+      echo "tar -czvf /home/$MY_USERNAME/tempfiles/owncloud.tar.gz /var/www/$OWNCLOUD_DOMAIN_NAME/htdocs/config /var/www/$OWNCLOUD_DOMAIN_NAME/htdocs/data" >> /usr/bin/backup2friends
340
+  fi
341
+  if [[ $WIKI_INSTALLED == "yes" ]]; then
342
+      echo "tar -czvf /home/$MY_USERNAME/tempfiles/wiki.tar.gz /var/www/$WIKI_DOMAIN_NAME/htdocs" >> /usr/bin/backup2friends
343
+  fi
344
+  echo 'tar -czvf /home/$MY_USERNAME/tempfiles/temp.tar.gz /home/$MY_USERNAME/.gnupg /home/$MY_USERNAME/.muttrc /home/$MY_USERNAME/.procmailrc /home/$MY_USERNAME/.ssh /home/$MY_USERNAME/personal' >> /usr/bin/backup2friends
345
+
346
+  echo '' >> /usr/bin/backup2friends
347
+  echo 'while read remote_server' >> /usr/bin/backup2friends
348
+  echo 'do' >> /usr/bin/backup2friends
349
+  echo '  # Get the server and its password' >> /usr/bin/backup2friends
350
+  echo '  SERVER="${* %%remote_server}"' >> /usr/bin/backup2friends
351
+  echo '  FTP_PASSWORD="${remote_server%% *}"' >> /usr/bin/backup2friends
352
+  echo '' >> /usr/bin/backup2friends
353
+  echo '  # Backup the public mailing list' >> /usr/bin/backup2friends
354
+  echo "  if [ -d $PUBLIC_MAILING_LIST_DIRECTORY ]; then" >> /usr/bin/backup2friends
355
+  echo "    duplicity incr --ssh-askpass --encrypt-key $GPG_KEY --full-if-older-than 4W --exclude-other-filesystems $PUBLIC_MAILING_LIST_DIRECTORY $SERVER/publicmailinglist" >> /usr/bin/backup2friends
356
+  echo '  fi' >> /usr/bin/backup2friends
357
+  echo '' >> /usr/bin/backup2friends
358
+  echo '  # Backup xmpp settings' >> /usr/bin/backup2friends
359
+  echo "  if [ -d $XMPP_DIRECTORY ]; then" >> /usr/bin/backup2friends
360
+  echo "    duplicity incr --ssh-askpass --encrypt-key $GPG_KEY --full-if-older-than 4W --exclude-other-filesystems $XMPP_DIRECTORY $SERVER/xmpp" >> /usr/bin/backup2friends
361
+  echo '  fi' >> /usr/bin/backup2friends
362
+  echo '' >> /usr/bin/backup2friends
363
+  echo '  # Backup web content and other stuff' >> /usr/bin/backup2friends
364
+  echo "  if [ -d /home/$MY_USERNAME/tempfiles ]; then" >> /usr/bin/backup2friends
365
+  echo "    duplicity incr --ssh-askpass --encrypt-key $GPG_KEY --full-if-older-than 4W --exclude-other-filesystems /home/$MY_USERNAME/tempfiles $SERVER/tempfiles" >> /usr/bin/backup2friends
366
+  echo '  fi' >> /usr/bin/backup2friends
367
+  echo '' >> /usr/bin/backup2friends
368
+  echo '  # Backup email' >> /usr/bin/backup2friends
369
+  echo "  if [ -d /home/$MY_USERNAME/Maildir ]; then" >> /usr/bin/backup2friends
370
+  echo "    duplicity incr --ssh-askpass --encrypt-key $GPG_KEY --full-if-older-than 4W --exclude-other-filesystems /home/$MY_USERNAME/Maildir $SERVER/Maildir" >> /usr/bin/backup2friends
371
+  echo '  fi' >> /usr/bin/backup2friends
372
+  echo '' >> /usr/bin/backup2friends
373
+  echo '  # Backup DLNA cache' >> /usr/bin/backup2friends
374
+  echo "  if [ -d /var/cache/minidlna ]; then" >> /usr/bin/backup2friends
375
+  echo "    duplicity incr --ssh-askpass --encrypt-key $GPG_KEY --full-if-older-than 4W --exclude-other-filesystems /var/cache/minidlna $SERVER/dlna" >> /usr/bin/backup2friends
376
+  echo '  fi' >> /usr/bin/backup2friends
377
+  echo '' >> /usr/bin/backup2friends
378
+
379
+  echo '  duplicity --ssh-askpass --force cleanup $SERVER' >> /usr/bin/backup2friends
380
+  echo '  duplicity --ssh-askpass --force remove-all-but-n-full 2 $SERVER' >> /usr/bin/backup2friends
381
+  echo "done < $FRIENDS_SERVERS_LIST" >> /usr/bin/backup2friends
382
+  echo '' >> /usr/bin/backup2friends
383
+  echo '# Remove temporary files' >> /usr/bin/backup2friends
384
+  echo "if [ -d /home/$MY_USERNAME/tempfiles ]; then" >> /usr/bin/backup2friends
385
+  echo "  rm -rf /home/$MY_USERNAME/tempfiles" >> /usr/bin/backup2friends
386
+  echo 'fi' >> /usr/bin/backup2friends
387
+  echo 'exit 0' >> /usr/bin/backup2friends
388
+  chmod +x /usr/bin/backup2friends
389
+
390
+  # update crontab
391
+  echo '#!/bin/bash' > /etc/cron.daily/backuptofriends
392
+  if [ $MY_GPG_PUBLIC_KEY_ID ]; then
393
+      echo "GPG_KEY=$MY_GPG_PUBLIC_KEY_ID" >> /etc/cron.daily/backuptofriends
394
+  else
395
+      echo 'GPG_KEY=' >> /etc/cron.daily/backuptofriends
396
+  fi
397
+  echo '/usr/bin/backup2friends $GPG_KEY' >> /etc/cron.daily/backuptofriends
398
+  chmod +x /etc/cron.daily/backuptofriends
399
+
400
+  echo 'backup_to_friends_servers' >> $COMPLETION_FILE
401
+}
402
+
300
 function remove_default_user {
403
 function remove_default_user {
301
   # make sure you don't use the default user account
404
   # make sure you don't use the default user account
302
   if [[ $MY_USERNAME == "debian" ]]; then
405
   if [[ $MY_USERNAME == "debian" ]]; then
1918
   EMAIL_COMPLETE_MSG='  *** Freedombone mailbox installation is complete ***'
2021
   EMAIL_COMPLETE_MSG='  *** Freedombone mailbox installation is complete ***'
1919
   if grep -Fxq "import_email" $COMPLETION_FILE; then
2022
   if grep -Fxq "import_email" $COMPLETION_FILE; then
1920
       if [[ $SYSTEM_TYPE == "$VARIANT_MAILBOX" ]]; then
2023
       if [[ $SYSTEM_TYPE == "$VARIANT_MAILBOX" ]]; then
2024
+          backup_to_friends_servers
1921
           echo ''
2025
           echo ''
1922
           echo "$EMAIL_COMPLETE_MSG"
2026
           echo "$EMAIL_COMPLETE_MSG"
1923
           if [ -d $USB_MOUNT ]; then
2027
           if [ -d $USB_MOUNT ]; then
1941
   fi
2045
   fi
1942
   echo 'import_email' >> $COMPLETION_FILE
2046
   echo 'import_email' >> $COMPLETION_FILE
1943
   if [[ $SYSTEM_TYPE == "$VARIANT_MAILBOX" ]]; then
2047
   if [[ $SYSTEM_TYPE == "$VARIANT_MAILBOX" ]]; then
2048
+      backup_to_friends_servers
1944
       apt-get -y --force-yes autoremove
2049
       apt-get -y --force-yes autoremove
1945
       # unmount any attached usb drive
2050
       # unmount any attached usb drive
1946
       echo ''
2051
       echo ''
2003
   OWNCLOUD_COMPLETION_MSG2="Open $OWNCLOUD_DOMAIN_NAME in a web browser to complete the setup"
2108
   OWNCLOUD_COMPLETION_MSG2="Open $OWNCLOUD_DOMAIN_NAME in a web browser to complete the setup"
2004
   if grep -Fxq "install_owncloud" $COMPLETION_FILE; then
2109
   if grep -Fxq "install_owncloud" $COMPLETION_FILE; then
2005
       if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" ]]; then
2110
       if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" ]]; then
2111
+          backup_to_friends_servers
2112
+          apt-get -y --force-yes autoremove
2006
           # unmount any attached usb drive
2113
           # unmount any attached usb drive
2007
           if [ -d $USB_MOUNT ]; then
2114
           if [ -d $USB_MOUNT ]; then
2008
               umount $USB_MOUNT
2115
               umount $USB_MOUNT
2172
       echo 'WARNING: No freeDNS subdomain code given for Owncloud. It is assumed that you are using some other dynamic DNS provider.'
2279
       echo 'WARNING: No freeDNS subdomain code given for Owncloud. It is assumed that you are using some other dynamic DNS provider.'
2173
   fi
2280
   fi
2174
 
2281
 
2282
+  OWNCLOUD_INSTALLED="yes"
2175
   echo 'install_owncloud' >> $COMPLETION_FILE
2283
   echo 'install_owncloud' >> $COMPLETION_FILE
2176
 
2284
 
2177
   if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" ]]; then
2285
   if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" ]]; then
2286
+      backup_to_friends_servers
2287
+      apt-get -y --force-yes autoremove
2178
       # unmount any attached usb drive
2288
       # unmount any attached usb drive
2179
       if [ -d $USB_MOUNT ]; then
2289
       if [ -d $USB_MOUNT ]; then
2180
           umount $USB_MOUNT
2290
           umount $USB_MOUNT
2509
       chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
2619
       chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
2510
   fi
2620
   fi
2511
 
2621
 
2622
+  WIKI_INSTALLED="yes"
2512
   echo 'install_wiki' >> $COMPLETION_FILE
2623
   echo 'install_wiki' >> $COMPLETION_FILE
2513
 }
2624
 }
2514
 
2625
 
2905
       chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
3016
       chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
2906
   fi
3017
   fi
2907
 
3018
 
3019
+  MICROBLOG_INSTALLED="yes"
2908
   echo 'install_gnu_social' >> $COMPLETION_FILE
3020
   echo 'install_gnu_social' >> $COMPLETION_FILE
2909
 }
3021
 }
2910
 
3022
 
3114
       chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
3226
       chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
3115
   fi
3227
   fi
3116
 
3228
 
3229
+  REDMATRIX_INSTALLED="yes"
3117
   echo 'install_redmatrix' >> $COMPLETION_FILE
3230
   echo 'install_redmatrix' >> $COMPLETION_FILE
3118
 }
3231
 }
3119
 
3232
 
3646
   echo 'create_restore_script' >> $COMPLETION_FILE
3759
   echo 'create_restore_script' >> $COMPLETION_FILE
3647
 }
3760
 }
3648
 
3761
 
3649
-function backup_to_friends_servers {
3650
-  if grep -Fxq "backup_to_friends_servers" $COMPLETION_FILE; then
3651
-      return
3652
-  fi
3653
-  if [ ! $FRIENDS_SERVERS_LIST ]; then
3654
-      return
3655
-  fi
3656
-
3657
-  apt-get -y --force-yes install duplicity
3658
-
3659
-  # script to do backups
3660
-  echo '#!/bin/bash' > /usr/bin/backup2friends
3661
-  echo 'GPG_KEY=$1' >> /usr/bin/backup2friends
3662
-  echo '' >> /usr/bin/backup2friends
3663
-  echo "if [ ! -f $FRIENDS_SERVERS_LIST ]; then" >> /usr/bin/backup2friends
3664
-  echo '    exit 1' >> /usr/bin/backup2friends
3665
-  echo 'fi' >> /usr/bin/backup2friends
3666
-  echo '' >> /usr/bin/backup2friends
3667
-  echo 'if [ ! $GPG_KEY ]; then' >> /usr/bin/backup2friends
3668
-  echo "    echo 'Unable to perform automated backup. You need to add a GPG key to /etc/cron.daily/backuptofriends' | mail -s 'Backup failure' $MY_USERNAME@$DOMAIN_NAME" >> /usr/bin/backup2friends
3669
-  echo '    exit 2' >> /usr/bin/backup2friends
3670
-  echo 'fi' >> /usr/bin/backup2friends
3671
-  echo '' >> /usr/bin/backup2friends
3672
-  echo "if [ ! -d /home/$MY_USERNAME/backups ]; then" >> /usr/bin/backup2friends
3673
-  echo "  mkdir /home/$MY_USERNAME/backups" >> /usr/bin/backup2friends
3674
-  echo 'fi' >> /usr/bin/backup2friends
3675
-  echo '' >> /usr/bin/backup2friends
3676
-  echo '# Backup the public mailing list' >> /usr/bin/backup2friends
3677
-  echo "if [ -d $PUBLIC_MAILING_LIST_DIRECTORY ]; then" >> /usr/bin/backup2friends
3678
-  echo "  tar -czvf /home/$MY_USERNAME/backups/mailinglist.tar.gz $PUBLIC_MAILING_LIST_DIRECTORY" >> /usr/bin/backup2friends
3679
-  echo 'fi' >> /usr/bin/backup2friends
3680
-  echo '' >> /usr/bin/backup2friends
3681
-  echo '# Backup XMPP settings' >> /usr/bin/backup2friends
3682
-  echo "if [ -d $XMPP_DIRECTORY ]; then" >> /usr/bin/backup2friends
3683
-  echo "  tar -czvf /home/$MY_USERNAME/backups/xmpp.tar.gz $XMPP_DIRECTORY" >> /usr/bin/backup2friends
3684
-  echo 'fi' >> /usr/bin/backup2friends
3685
-  echo '' >> /usr/bin/backup2friends
3686
-  echo 'while read remote_server' >> /usr/bin/backup2friends
3687
-  echo 'do' >> /usr/bin/backup2friends
3688
-  echo '  SERVER="${* %%remote_server}"' >> /usr/bin/backup2friends
3689
-  echo '  FTP_PASSWORD="${remote_server%% *}"' >> /usr/bin/backup2friends
3690
-  echo "  duplicity incr --ssh-askpass --encrypt-key $GPG_KEY --full-if-older-than 4W --exclude-other-filesystems /home/$MY_USERNAME $SERVER" >> /usr/bin/backup2friends
3691
-  echo '  duplicity --ssh-askpass --force cleanup $SERVER' >> /usr/bin/backup2friends
3692
-  echo '  duplicity --ssh-askpass --force remove-all-but-n-full 2 $SERVER' >> /usr/bin/backup2friends
3693
-  echo "done < $FRIENDS_SERVERS_LIST" >> /usr/bin/backup2friends
3694
-  echo 'exit 0' >> /usr/bin/backup2friends
3695
-  chmod +x /usr/bin/backup2friends
3696
-
3697
-  # update crontab
3698
-  echo '#!/bin/bash' > /etc/cron.daily/backuptofriends
3699
-  if [ $MY_GPG_PUBLIC_KEY_ID ]; then
3700
-      echo "GPG_KEY=$MY_GPG_PUBLIC_KEY_ID" >> /etc/cron.daily/backuptofriends
3701
-  else
3702
-      echo 'GPG_KEY=' >> /etc/cron.daily/backuptofriends
3703
-  fi
3704
-  echo '/usr/bin/backup2friends $GPG_KEY' >> /etc/cron.daily/backuptofriends
3705
-  chmod +x /etc/cron.daily/backuptofriends
3706
-
3707
-  echo 'backup_to_friends_servers' >> $COMPLETION_FILE
3708
-}
3709
-
3710
 function install_final {
3762
 function install_final {
3711
   if grep -Fxq "install_final" $COMPLETION_FILE; then
3763
   if grep -Fxq "install_final" $COMPLETION_FILE; then
3712
       return
3764
       return
3787
 install_dlna_server
3839
 install_dlna_server
3788
 install_mediagoblin
3840
 install_mediagoblin
3789
 install_final
3841
 install_final
3842
+apt-get -y --force-yes autoremove
3790
 echo 'Freedombone installation is complete'
3843
 echo 'Freedombone installation is complete'
3791
 exit 0
3844
 exit 0