瀏覽代碼

Onion site for blog

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

+ 110
- 3
src/freedombone 查看文件

@@ -214,6 +214,7 @@ WIKI_CODE=
214 214
 # Domain name for your blog
215 215
 FULLBLOG_DOMAIN_NAME=
216 216
 FULLBLOG_CODE=
217
+FULLBLOG_ONION_PORT=8086
217 218
 FULLBLOG_REPO="https://github.com/danpros/htmly"
218 219
 FULLBLOG_COMMIT='5f271a2370cc1bfde15f2a0d5ed6928cc74b0efa'
219 220
 MY_BLOG_TITLE="My Blog"
@@ -7105,6 +7106,87 @@ function install_blog {
7105 7106
   echo '      deny  all;' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7106 7107
   echo '    }' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7107 7108
   echo '}' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7109
+  echo '' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7110
+  echo 'server {' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7111
+  echo "    listen 127.0.0.1:${FULLBLOG_ONION_PORT} default_server;" >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7112
+  echo "    root /var/www/$FULLBLOG_DOMAIN_NAME/htdocs;" >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7113
+  echo "    server_name $FULLBLOG_DOMAIN_NAME;" >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7114
+  echo '    access_log off;' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7115
+  echo "    error_log /var/log/nginx/${FULLBLOG_DOMAIN_NAME}_error_ssl.log $WEBSERVER_LOG_LEVEL;" >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7116
+  echo '    index index.php;' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7117
+  echo '    charset utf-8;' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7118
+  echo '    client_max_body_size 20m;' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7119
+  echo '    client_body_buffer_size 128k;' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7120
+  echo '' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7121
+  echo '    limit_conn conn_limit_per_ip 10;' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7122
+  echo '    limit_req zone=req_limit_per_ip burst=10 nodelay;' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7123
+  echo '' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7124
+  echo '    add_header X-Frame-Options DENY;' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7125
+  echo '    add_header X-Content-Type-Options nosniff;' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7126
+  echo '    add_header Strict-Transport-Security "max-age=0;";' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7127
+  echo '' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7128
+  echo '    # rewrite to front controller as default rule' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7129
+  echo '    location / {' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7130
+  echo '        rewrite ^/(.*) /index.php?q=$uri&$args last;' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7131
+  echo '    }' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7132
+  echo '' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7133
+  echo "    # make sure webfinger and other well known services aren't blocked" >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7134
+  echo '    # by denying dot files and rewrite request to the front controller' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7135
+  echo '    location ^~ /.well-known/ {' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7136
+  echo '        allow all;' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7137
+  echo '    }' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7138
+  echo '' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7139
+  echo '    # statically serve these file types when possible' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7140
+  echo '    # otherwise fall back to front controller' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7141
+  echo '    # allow browser to cache them' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7142
+  echo '    # added .htm for advanced source code editor library' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7143
+  echo '    location ~* \.(jpg|jpeg|gif|png|ico|css|js|htm|html|ttf|woff|svg)$ {' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7144
+  echo '        expires 30d;' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7145
+  echo '        try_files $uri /index.php?q=$uri&$args;' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7146
+  echo '    }' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7147
+  echo '' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7148
+  echo '    # block these file types' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7149
+  echo '    location ~* \.(tpl|md|tgz|log|out)$ {' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7150
+  echo '        deny all;' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7151
+  echo '    }' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7152
+  echo '' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7153
+  echo '    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7154
+  echo '    # or a unix socket' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7155
+  echo '    location ~* \.php$ {' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7156
+  echo '        # Zero-day exploit defense.' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7157
+  echo '        # http://forum.nginx.org/read.php?2,88845,page=3' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7158
+  echo "        # Won't work properly (404 error) if the file is not stored on this" >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7159
+  echo "        # server, which is entirely possible with php-fpm/php-fcgi." >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7160
+  echo "        # Comment the 'try_files' line out if you set up php-fpm/php-fcgi on" >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7161
+  echo "        # another machine. And then cross your fingers that you won't get hacked." >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7162
+  echo '        try_files $uri $uri/ /index.php;' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7163
+  echo '        # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7164
+  echo '        fastcgi_split_path_info ^(.+\.php)(/.+)$;' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7165
+  echo '        # With php5-cgi alone:' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7166
+  echo '        # fastcgi_pass 127.0.0.1:9000;' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7167
+  echo '        # With php5-fpm:' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7168
+  echo '        fastcgi_pass unix:/var/run/php5-fpm.sock;' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7169
+  echo '        include fastcgi_params;' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7170
+  echo '        fastcgi_index index.php;' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7171
+  echo '        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7172
+  echo '    }' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7173
+  echo '' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7174
+  echo '    # deny access to all dot files' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7175
+  echo '    location ~ /\. {' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7176
+  echo '        deny all;' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7177
+  echo '    }' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7178
+  echo '' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7179
+  echo '    #deny access to store' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7180
+  echo '    location ~ /store {' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7181
+  echo '        deny all;' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7182
+  echo '    }' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7183
+  echo '    location ~ /(data|conf|bin|inc)/ {' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7184
+  echo '      deny all;' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7185
+  echo '    }' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7186
+  echo '    location ~ /\.ht {' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7187
+  echo '      deny  all;' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7188
+  echo '    }' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7189
+  echo '}' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
7108 7190
 
7109 7191
   if [ ! -f /etc/ssl/certs/$FULLBLOG_DOMAIN_NAME.dhparam ]; then
7110 7192
       if [[ $LETSENCRYPT_ENABLED != "yes" ]]; then
@@ -7142,7 +7224,6 @@ function install_blog {
7142 7224
       echo $"Log into your blog at https://$FULLBLOG_DOMAIN_NAME/login" >> /home/$MY_USERNAME/README
7143 7225
       echo $'Edit your blog title and time zone at:' >> /home/$MY_USERNAME/README
7144 7226
       echo "  /var/www/$FULLBLOG_DOMAIN_NAME/htdocs/config/config.ini" >> /home/$MY_USERNAME/README
7145
-      echo '' >> /home/$MY_USERNAME/README
7146 7227
       chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
7147 7228
       chmod 600 /home/$MY_USERNAME/README
7148 7229
   fi
@@ -7155,8 +7236,34 @@ function install_blog {
7155 7236
   echo 'role = admin' >> /var/www/$FULLBLOG_DOMAIN_NAME/htdocs/config/users/$MY_USERNAME.ini
7156 7237
 
7157 7238
   nginx_ensite $FULLBLOG_DOMAIN_NAME
7158
-  service php5-fpm restart
7159
-  service nginx restart
7239
+
7240
+  if [ ! -d /var/lib/tor ]; then
7241
+      echo $'No Tor installation found. Blog onion site cannot be configured.'
7242
+      exit 45926
7243
+  fi
7244
+  if ! grep -q "hidden_service_blog" /etc/tor/torrc; then
7245
+      echo 'HiddenServiceDir /var/lib/tor/hidden_service_blog/' >> /etc/tor/torrc
7246
+      echo "HiddenServicePort 80 127.0.0.1:${FULLBLOG_ONION_PORT}" >> /etc/tor/torrc
7247
+      echo $'Added onion site for blog'
7248
+  fi
7249
+
7250
+  systemctl restart php5-fpm
7251
+  systemctl restart nginx
7252
+  systemctl restart tor
7253
+
7254
+  if [ ! -f /var/lib/tor/hidden_service_blog/hostname ]; then
7255
+      echo $'Blog onion site hostname not found'
7256
+      exit 12053
7257
+  fi
7258
+  FULLBLOG_ONION_HOSTNAME=$(cat /var/lib/tor/hidden_service_blog/hostname)
7259
+
7260
+  if ! grep -q "Blog onion domain" /home/$MY_USERNAME/README; then
7261
+      echo "Blog onion domain: ${FULLBLOG_ONION_HOSTNAME}" >> /home/$MY_USERNAME/README
7262
+      echo '' >> /home/$MY_USERNAME/README
7263
+      chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
7264
+      chmod 600 /home/$MY_USERNAME/README
7265
+  fi
7266
+  echo "Blog onion domain:${HUBZILLA_ONION_HOSTNAME}" >> $COMPLETION_FILE
7160 7267
 
7161 7268
   # update the dynamic DNS
7162 7269
   CURRENT_DDNS_DOMAIN=$FULLBLOG_DOMAIN_NAME