Browse Source

An optional configuration file

Bob Mottram 10 years ago
parent
commit
16ad5784f9
2 changed files with 61 additions and 1 deletions
  1. 1
    1
      README.md
  2. 60
    0
      install-freedombone.sh

+ 1
- 1
README.md View File

9
  - **Media**: Runs media services such as DLNA to play music or videos on your devices
9
  - **Media**: Runs media services such as DLNA to play music or videos on your devices
10
  - **Writer**: Host your blog and wiki
10
  - **Writer**: Host your blog and wiki
11
  - **Chat**: Encrypted IRC and XMPP services for one-to-one and many-to-many chat
11
  - **Chat**: Encrypted IRC and XMPP services for one-to-one and many-to-many chat
12
- - **Notmailbox**: Installs eveything except for the email server
12
+ - **Nonmailbox**: Installs eveything except for the email server
13
 
13
 
14
 Unlike certain other self-hosting projects Freedombone has more emphasis on security and privacy. When installed on a Beaglebone Black it uses the built-in hardware random number generator as an entropy source and all communications with the box are encrypted by default using the recommendations from https://bettercrypto.org. The firewall is configured to only allow communications on the necessary ports and to drop all other packets, icmp is disabled by default, emails are stored in encrypted form using your public key and time synchronisation occurs via TLS only.  Backups are also encrypted.
14
 Unlike certain other self-hosting projects Freedombone has more emphasis on security and privacy. When installed on a Beaglebone Black it uses the built-in hardware random number generator as an entropy source and all communications with the box are encrypted by default using the recommendations from https://bettercrypto.org. The firewall is configured to only allow communications on the necessary ports and to drop all other packets, icmp is disabled by default, emails are stored in encrypted form using your public key and time synchronisation occurs via TLS only.  Backups are also encrypted.
15
 
15
 

+ 60
- 0
install-freedombone.sh View File

81
 VARIANT_SOCIAL="social"
81
 VARIANT_SOCIAL="social"
82
 VARIANT_MEDIA="media"
82
 VARIANT_MEDIA="media"
83
 
83
 
84
+# An optional configuration file which overrides some of these variables
85
+CONFIGURATION_FILE="freedombone.cfg"
86
+
84
 SSH_PORT=2222
87
 SSH_PORT=2222
85
 
88
 
86
 # Why use Google as a time source?
89
 # Why use Google as a time source?
308
   fi
311
   fi
309
 }
312
 }
310
 
313
 
314
+function read_configuration {
315
+  if [ -f $CONFIGURATION_FILE ]; then
316
+      if grep -q "INSTALLING_ON_BBB" $CONFIGURATION_FILE; then
317
+          INSTALLING_ON_BBB=$(grep "INSTALLING_ON_BBB" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
318
+      fi
319
+      if grep -q "SSH_PORT" $CONFIGURATION_FILE; then
320
+          SSH_PORT=$(grep "SSH_PORT" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
321
+      fi
322
+      if grep -q "INSTALLED_WITHIN_DOCKER" $CONFIGURATION_FILE; then
323
+          INSTALLED_WITHIN_DOCKER=$(grep "INSTALLED_WITHIN_DOCKER" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
324
+      fi
325
+      if grep -q "PUBLIC_MAILING_LIST" $CONFIGURATION_FILE; then
326
+          PUBLIC_MAILING_LIST=$(grep "PUBLIC_MAILING_LIST" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
327
+      fi
328
+      if grep -q "MICROBLOG_DOMAIN_NAME" $CONFIGURATION_FILE; then
329
+          MICROBLOG_DOMAIN_NAME=$(grep "MICROBLOG_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
330
+      fi
331
+      if grep -q "MICROBLOG_FREEDNS_SUBDOMAIN_CODE" $CONFIGURATION_FILE; then
332
+          MICROBLOG_FREEDNS_SUBDOMAIN_CODE=$(grep "MICROBLOG_FREEDNS_SUBDOMAIN_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
333
+      fi
334
+      if grep -q "REDMATRIX_DOMAIN_NAME" $CONFIGURATION_FILE; then
335
+          REDMATRIX_DOMAIN_NAME=$(grep "REDMATRIX_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
336
+      fi
337
+      if grep -q "REDMATRIX_FREEDNS_SUBDOMAIN_CODE" $CONFIGURATION_FILE; then
338
+          REDMATRIX_FREEDNS_SUBDOMAIN_CODE=$(grep "REDMATRIX_FREEDNS_SUBDOMAIN_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
339
+      fi
340
+      if grep -q "OWNCLOUD_DOMAIN_NAME" $CONFIGURATION_FILE; then
341
+          OWNCLOUD_DOMAIN_NAME=$(grep "OWNCLOUD_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
342
+      fi
343
+      if grep -q "OWNCLOUD_FREEDNS_SUBDOMAIN_CODE" $CONFIGURATION_FILE; then
344
+          OWNCLOUD_FREEDNS_SUBDOMAIN_CODE=$(grep "OWNCLOUD_FREEDNS_SUBDOMAIN_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
345
+      fi
346
+      if grep -q "WIKI_DOMAIN_NAME" $CONFIGURATION_FILE; then
347
+          WIKI_DOMAIN_NAME=$(grep "WIKI_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
348
+      fi
349
+      if grep -q "WIKI_FREEDNS_SUBDOMAIN_CODE" $CONFIGURATION_FILE; then
350
+          WIKI_FREEDNS_SUBDOMAIN_CODE=$(grep "WIKI_FREEDNS_SUBDOMAIN_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
351
+      fi
352
+      if grep -q "GPG_ENCRYPT_STORED_EMAIL" $CONFIGURATION_FILE; then
353
+          GPG_ENCRYPT_STORED_EMAIL=$(grep "GPG_ENCRYPT_STORED_EMAIL" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
354
+      fi
355
+      if grep -q "MY_GPG_PUBLIC_KEY" $CONFIGURATION_FILE; then
356
+          MY_GPG_PUBLIC_KEY=$(grep "MY_GPG_PUBLIC_KEY" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
357
+      fi
358
+      if grep -q "MY_GPG_PRIVATE_KEY" $CONFIGURATION_FILE; then
359
+          MY_GPG_PRIVATE_KEY=$(grep "MY_GPG_PRIVATE_KEY" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
360
+      fi
361
+      if grep -q "USB_DRIVE" $CONFIGURATION_FILE; then
362
+          USB_DRIVE=$(grep "USB_DRIVE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
363
+      fi
364
+      if grep -q "MAX_PHP_MEMORY" $CONFIGURATION_FILE; then
365
+          MAX_PHP_MEMORY=$(grep "MAX_PHP_MEMORY" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
366
+      fi
367
+  fi
368
+}
369
+
311
 function check_hwrng {
370
 function check_hwrng {
312
   # If hardware random number generation was enabled then make sure that the device exists.
371
   # If hardware random number generation was enabled then make sure that the device exists.
313
   # if /dev/hwrng is not found then any subsequent cryptographic key generation would
372
   # if /dev/hwrng is not found then any subsequent cryptographic key generation would
4428
   reboot
4487
   reboot
4429
 }
4488
 }
4430
 
4489
 
4490
+read_configuration
4431
 argument_checks
4491
 argument_checks
4432
 remove_default_user
4492
 remove_default_user
4433
 configure_firewall
4493
 configure_firewall