How i did SSL with let's encrypt for free

I use ubuntu v14 on vps machine. I have couple nodejs scripts running with pm2. I use https server inside js files:

const app = require('express')();

const fs = require('fs');
var privateKey = fs.readFileSync('/etc/letsencrypt/live/domain.com/privkey.pem'); // privatekey.pem
var certificate = fs.readFileSync('/etc/letsencrypt/live/domain.com/cert.pem'); // certificate.pem
var chain = fs.readFileSync('/etc/letsencrypt/live/domain.com/fullchain.pem'); // certificate.pem
const https = require('https').Server({
  key: privateKey,
  cert: certificate,
  ca: chain}, app);


In nginx i use this:

    server {
      listen 443 ssl;

      server_name domain.com www.domain.com;

     ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
     ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;

      keepalive_timeout 10;

      location /.well-known/acme-challenge/ {
        alias /var/www/challenges/;
        try_files $uri =404;
      }

      location / {
          proxy_redirect off;
          proxy_set_header   X-Real-IP         $remote_addr;
          proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
          proxy_set_header   X-Forwarded-Proto $scheme;
          proxy_set_header   Host              $http_host;
          proxy_set_header   X-NginX-Proxy     true;
          proxy_set_header   Connection        "";
          proxy_pass         http://pm2upstream;
     }



    }


Tried different guides and failed.

This worked:

  1. wget https://dl.eff.org/certbot-auto
  2. chmod a+x ./certbot-auto
  3. service nginx stop
  4. ./certbot-auto certonly  & follow instructions, use auto server
  5. reboot 0

i used reboot because it's super fast and restarts all my nodejs scripts and nginx. less typing and all restarts happen for sure. I know it gave couple seconds down but for this project that's not an issue. This is my testing side project with not much traffic anyways. In big company i bet there would be some sys admin to install SSL anyways, i'm developer, not sys admin.


Prestashop update all prices with SQL (fully working)

I had to update all prices of shop made with PrestaShop. Found some tutorials where in that crazy database prices are saved, but none fully working example in one place. I was updating from prices written in Lithuanian Litas to Euros. 1 Euro = 3.4528 Litas So my solution:

PHP Recursive dir size with iterator object

public function getDirSize($dir, $format = true)
    {
        $dir_iterator = new RecursiveDirectoryIterator($dir);
        $iterator = new RecursiveIteratorIterator($dir_iterator, RecursiveIteratorIterator::SELF_FIRST);
        $size = 0;
        foreach ($iterator as $file) {
            $size += $file->getSize();
        }

        if ($format) {
            if ($size / 1048576 > 1) {
                return round($size / 1048576, 1) . ' MB';

                // if the total size is bigger than 1 KB
            } elseif ($size / 1024 > 1) {
                return round($size / 1024, 1) . ' KB';

                // else return the filesize in bytes
            } else {
                return round($size, 1) . ' bytes';
            }
        } else {
            // return the total filesize in bytes
            return $size;
        }
    }

usage:


$size = getDirSize('/dir/to/get/size/');

Phalcon upgrade to 1.3.1 errors after upgrade from 1.2.6

I had plenty of errors after upgrade and the solution to all of them at once is simple - re-install php. Uninstall php/apache/nginx/sql/phpmyadmin - what you have and then install all one after one. start with apache, php, sql then phalcon :)