Purchase a copy of Sendy here and download the package.

Upload the package to your server and unzip it into a directory, for example, "sendy".

Edit includes/config.php make sure all the necessary fields are set. Such as:

define('APP_PATH', 'https://your_domain.com');
$dbHost = 'my_db_host'; //MySQL Hostname
$dbUser = 'my_user'; //MySQL Username
$dbPass = 'my_password'; //MySQL Password
$dbName = 'my_sendy_db'; //MySQL Database Name
$dbPort = 3306; //MySQL Port

Create uploads directory if it does not exists and set the permission to 777.

mkdir uploads
chmod 777 ./uploads

Install your nginx server and php packages.

sudo apt-get install nginx-full php-fpm php-mysql

Now you need to setup nginx to server sendy. Create the following server blocks:

server {
        listen 80;
        listen [::]:80;
        server_name your_domain.com;
        return 301 https://$host$request_uri;
}
server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;

        root /home/username/sendy;
        index index.php index.html;

        server_name your_domain.com;

        ssl on;
        ssl_certificate /path/to/cert.pem;
        ssl_certificate_key /path/to/key.pem;

        autoindex off;

        location / {
                index index.php index.html;
                try_files $uri $uri/ $uri.php?$args;
        }
        location /l/ {
                rewrite ^/l/([a-zA-Z0-9/]+)$ /l.php?i=$1 last;
        }
        location /t/ {
                rewrite ^/t/([a-zA-Z0-9/]+)$ /t.php?i=$1 last;
        }
        location /w/ {
                rewrite ^/w/([a-zA-Z0-9/]+)$ /w.php?i=$1 last;
        }
        location /unsubscribe/ {
                rewrite ^/unsubscribe/(.*)$ /unsubscribe.php?i=$1 last;
        }
        location /subscribe/ {
                rewrite ^/subscribe/(.*)$ /subscribe.php?i=$1 last;
        }

        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
        }

}

Restart your nginx server. Then visit your_domain.com and continue with the instruction to complete the setup. If you encounter any problem with the setup, visit your_domain.com/_compatibility.php?i=1 to check if all necessary requirements are met.

To setup the background processing, you need to add this line to crontab.

*/3 * * * * /usr/bin/php5 /home/username/sendy/scheduled.php > /dev/null 2>&1

Finally, if you are using Amazon SES to send the newsletter, config the IAM credential. It needs to have AmazonSESFullAccess and AmazonSNSFullAccess privilege.