瀏覽代碼

Onion site for hubzilla

Bob Mottram 9 年之前
父節點
當前提交
8dc873ddab
共有 1 個文件被更改,包括 107 次插入17 次删除
  1. 107
    17
      src/freedombone

+ 107
- 17
src/freedombone 查看文件

@@ -185,6 +185,7 @@ GNUSOCIAL_COMMIT='5b847eff120264c3e9571e8a939e6b3a30e68032'
185 185
 # Domain name for hubzilla installation
186 186
 HUBZILLA_DOMAIN_NAME=
187 187
 HUBZILLA_CODE=
188
+HUBZILLA_ONION_PORT=8085
188 189
 HUBZILLA_REPO="https://github.com/redmatrix/hubzilla.git"
189 190
 HUBZILLA_ADDONS_REPO="https://github.com/redmatrix/hubzilla-addons.git"
190 191
 HUBZILLA_ADMIN_PASSWORD=
@@ -3178,6 +3179,13 @@ function initial_setup {
3178 3179
   echo 'initial_setup' >> $COMPLETION_FILE
3179 3180
 }
3180 3181
 
3182
+function install_tor {
3183
+  if [[ $SYSTEM_TYPE == "$VARIANT_MESH" ]]; then
3184
+      return
3185
+  fi
3186
+  apt-get install tor
3187
+}
3188
+
3181 3189
 function install_editor {
3182 3190
   if grep -Fxq "install_editor" $COMPLETION_FILE; then
3183 3191
       return
@@ -7512,7 +7520,6 @@ function install_hubzilla {
7512 7520
       echo 'Hubzilla' >> /home/$MY_USERNAME/README
7513 7521
       echo '==========' >> /home/$MY_USERNAME/README
7514 7522
       echo $"Your MariaDB Hubzilla admin password is: $HUBZILLA_ADMIN_PASSWORD" >> /home/$MY_USERNAME/README
7515
-      echo '' >> /home/$MY_USERNAME/README
7516 7523
       chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
7517 7524
       chmod 600 /home/$MY_USERNAME/README
7518 7525
   fi
@@ -7631,6 +7638,82 @@ quit" > $INSTALL_DIR/batch.sql
7631 7638
   echo '      deny  all;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7632 7639
   echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7633 7640
   echo '}' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7641
+  echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7642
+  echo 'server {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7643
+  echo "    listen 127.0.0.1:${HUBZILLA_ONION_PORT} default_server;" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7644
+  echo "    root /var/www/$HUBZILLA_DOMAIN_NAME/htdocs;" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7645
+  echo "    server_name $HUBZILLA_DOMAIN_NAME;" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7646
+  echo "    error_log /var/log/nginx/${HUBZILLA_DOMAIN_NAME}_error_ssl.log $WEBSERVER_LOG_LEVEL;" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7647
+  echo '    index index.php;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7648
+  echo '    charset utf-8;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7649
+  echo '    client_max_body_size 20m;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7650
+  echo '    client_body_buffer_size 128k;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7651
+  echo '    access_log off;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7652
+  echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7653
+  echo '    limit_conn conn_limit_per_ip 10;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7654
+  echo '    limit_req zone=req_limit_per_ip burst=10 nodelay;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7655
+  echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7656
+  echo '    add_header X-Frame-Options DENY;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7657
+  echo '    add_header X-Content-Type-Options nosniff;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7658
+  echo '    add_header Strict-Transport-Security max-age=15768000;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7659
+  echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7660
+  echo '    # rewrite to front controller as default rule' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7661
+  echo '    location / {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7662
+  echo '        rewrite ^/(.*) /index.php?q=$uri&$args last;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7663
+  echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7664
+  echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7665
+  echo "    # make sure webfinger and other well known services aren't blocked" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7666
+  echo '    # by denying dot files and rewrite request to the front controller' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7667
+  echo '    location ^~ /.well-known/ {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7668
+  echo '        allow all;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7669
+  echo '        rewrite ^/(.*) /index.php?q=$uri&$args last;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7670
+  echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7671
+  echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7672
+  echo '    # statically serve these file types when possible' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7673
+  echo '    # otherwise fall back to front controller' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7674
+  echo '    # allow browser to cache them' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7675
+  echo '    # added .htm for advanced source code editor library' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7676
+  echo '    location ~* \.(jpg|jpeg|gif|png|ico|css|js|htm|html|ttf|woff|svg)$ {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7677
+  echo '        expires 30d;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7678
+  echo '        try_files $uri /index.php?q=$uri&$args;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7679
+  echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7680
+  echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7681
+  echo '    # block these file types' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7682
+  echo '    location ~* \.(tpl|md|tgz|log|out)$ {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7683
+  echo '        deny all;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7684
+  echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7685
+  echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7686
+  echo '    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7687
+  echo '    # or a unix socket' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7688
+  echo '    location ~* \.php$ {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7689
+  echo '        # Zero-day exploit defense.' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7690
+  echo '        # http://forum.nginx.org/read.php?2,88845,page=3' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7691
+  echo "        # Won't work properly (404 error) if the file is not stored on this" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7692
+  echo "        # server, which is entirely possible with php-fpm/php-fcgi." >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7693
+  echo "        # Comment the 'try_files' line out if you set up php-fpm/php-fcgi on" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7694
+  echo "        # another machine. And then cross your fingers that you won't get hacked." >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7695
+  echo '        try_files $uri $uri/ /index.php;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7696
+  echo '        # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7697
+  echo '        fastcgi_split_path_info ^(.+\.php)(/.+)$;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7698
+  echo '        # With php5-cgi alone:' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7699
+  echo '        # fastcgi_pass 127.0.0.1:9000;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7700
+  echo '        # With php5-fpm:' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7701
+  echo '        fastcgi_pass unix:/var/run/php5-fpm.sock;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7702
+  echo '        include fastcgi_params;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7703
+  echo '        fastcgi_index index.php;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7704
+  echo '        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7705
+  echo '        fastcgi_read_timeout 300;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7706
+  echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7707
+  echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7708
+  echo '    # deny access to all dot files' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7709
+  echo '    location ~ /\. {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7710
+  echo '        deny all;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7711
+  echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7712
+  echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7713
+  echo '    location ~ /\.ht {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7714
+  echo '      deny  all;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7715
+  echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7716
+  echo '}' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
7634 7717
 
7635 7718
   configure_php
7636 7719
 
@@ -7713,31 +7796,37 @@ quit" > $INSTALL_DIR/batch.sql
7713 7796
   chown -R www-data:www-data /var/www/$HUBZILLA_DOMAIN_NAME/htdocs
7714 7797
 
7715 7798
   nginx_ensite $HUBZILLA_DOMAIN_NAME
7799
+
7800
+  if [ ! -d /var/lib/tor ]; then
7801
+      echo $'No Tor installation found. Hubzilla onion site cannot be configured.'
7802
+      exit 45925
7803
+  fi
7804
+  if ! grep -q "hidden_service_hubzilla" /etc/tor/torrc; then
7805
+      echo 'HiddenServiceDir /var/lib/tor/hidden_service_hubzilla/' >> /etc/tor/torrc
7806
+      echo "HiddenServicePort 80 127.0.0.1:${HUBZILLA_ONION_PORT}" >> /etc/tor/torrc
7807
+      echo $'Added onion site for Hubzilla'
7808
+  fi
7809
+
7716 7810
   service php5-fpm restart
7717 7811
   service nginx restart
7718 7812
   service cron restart
7813
+  systemctl restart tor
7719 7814
 
7720
-  # some post-install instructions for the user
7721
-  if ! grep -q $"To set up your Hubzilla site go to" /home/$MY_USERNAME/README; then
7722
-      echo '' >> /home/$MY_USERNAME/README
7723
-      echo $"To set up your Hubzilla site go to" >> /home/$MY_USERNAME/README
7724
-      echo "https://$HUBZILLA_DOMAIN_NAME" >> /home/$MY_USERNAME/README
7725
-      echo $'You will need to have a non self-signed SSL certificate in order' >> /home/$MY_USERNAME/README
7726
-      echo $"to use Hubzilla. Put the public certificate in /etc/ssl/certs/$HUBZILLA_DOMAIN_NAME.crt" >> /home/$MY_USERNAME/README
7727
-      echo $"and the private certificate in /etc/ssl/private/$HUBZILLA_DOMAIN_NAME.key." >> /home/$MY_USERNAME/README
7728
-      echo $'If there is an intermediate certificate needed (such as with StartSSL) then' >> /home/$MY_USERNAME/README
7729
-      echo $'this will need to be concatenated onto the end of the crt file, like this:' >> /home/$MY_USERNAME/README
7730
-      echo '' >> /home/$MY_USERNAME/README
7731
-      echo "  cat /etc/ssl/certs/$HUBZILLA_DOMAIN_NAME.crt /etc/ssl/chains/startssl-sub.class1.server.ca.pem > /etc/ssl/certs/$HUBZILLA_DOMAIN_NAME.bundle.crt" >> /home/$MY_USERNAME/README
7732
-      echo '' >> /home/$MY_USERNAME/README
7733
-      echo $"Then change ssl_certificate to /etc/ssl/certs/$HUBZILLA_DOMAIN_NAME.bundle.crt" >> /home/$MY_USERNAME/README
7734
-      echo $"within /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME" >> /home/$MY_USERNAME/README
7815
+  if [ ! -f /var/lib/tor/hidden_service_hubzilla/hostname ]; then
7816
+      echo $'Hubzilla onion site hostname not found'
7817
+      exit 12052
7818
+  fi
7819
+  HUBZILLA_ONION_HOSTNAME=$(cat /var/lib/tor/hidden_service_hubzilla/hostname)
7820
+
7821
+  if ! grep -q "Hubzilla onion domain" /home/$MY_USERNAME/README; then
7822
+      echo "Hubzilla onion domain: ${HUBZILLA_ONION_HOSTNAME}" >> /home/$MY_USERNAME/README
7735 7823
       echo '' >> /home/$MY_USERNAME/README
7736 7824
       chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
7737 7825
       chmod 600 /home/$MY_USERNAME/README
7738 7826
   fi
7739 7827
 
7740
-  echo "Hubzilla domain:$HUBZILLA_DOMAIN_NAME" >> $COMPLETION_FILE
7828
+  echo "Hubzilla domain:${HUBZILLA_DOMAIN_NAME}" >> $COMPLETION_FILE
7829
+  echo "Hubzilla onion domain:${HUBZILLA_ONION_HOSTNAME}" >> $COMPLETION_FILE
7741 7830
   echo 'install_hubzilla' >> $COMPLETION_FILE
7742 7831
 }
7743 7832
 
@@ -8710,6 +8799,7 @@ change_debian_repos
8710 8799
 enable_backports
8711 8800
 configure_dns
8712 8801
 initial_setup
8802
+install_tor
8713 8803
 check_date
8714 8804
 install_dynamicdns
8715 8805
 randomize_cron