As per https://sendy.co/,  it is a self hosted email newsletter application that lets you send trackable emails via Amazon Simple Email Service (SES). This makes it possible for you to send authenticated bulk emails at an insanely low price without sacrificing deliverability

So in this tutorial we will see the complete steps to set one up on an Ubuntu server 18.04

First, we will setup Virtualmin on Ubuntu 18.04

Upgrade the server.

# sudo apt-get update
# sudo apt-get dist-upgrade -y

Download the Virtualmin installer script

wget https://software.virtualmin.com/gpl/scripts/install.sh
Install the above script using # sh install.sh command.

Once that is done, login to virtualmin using the IP:10000 and configure the setup using the web-wizard.

Once the virtualmin installation is done, go ahead with creating a new domain on which you would install sendy on. For example, if the site is going to be example.com/sendy, create a new server as example.com in the virtualmin interface and make sure to point the example.com’s A record to your Ubuntu server.

You can secure your site by using the free SSL offered by Virtualmin.

Now, upload the sendy zip file which you would have received/ downloaded ( https://sendy.co/get-updated )

The sendy.zip file should go to /home/example.com/public_html/sendy.zip

Unzip the folder from the pwd

# unzip sendy.zip

Now edit the config file via SSH, which would be the easiest.

# vim /home/example.com/public_html/includes/config.php

In the below line, make sure to replace your sendy URL needed.

So,

nano define('APP_PATH', 'https://your_sendy_installation_url');

Becomes,

nano define('APP_PATH', 'https://example.com/sendy');

Now, provide the database information needed for sendy. You can find this under Virtualmin -> Your domain -> Edit databases.

If you remember what username / password you gave during the creation of this domain in virtualmin, you can use that directly, else go and find it.


Note the database name and change the password in the next field, if you dont remember the password which you gave.

So, you will now have the following details :

	$dbHost = ''; //MySQL Hostname
	$dbUser = ''; //MySQL Username
	$dbPass = ''; //MySQL Password
	$dbName = ''; //MySQL Database Name

Database name and Username would be the same in this setup and hostname will be the localhost.

Once this done, restart your apache service and load http://example.com/_compatibility.php?i=1 in the browser.

This would show a comptatablity test.

You might fail for PHP-CURL and rewrite module.

Install them both in the Ubuntu server.

# a2enmod rewrite
# systemctl restart apache2
# apt-get install -y php-curl or apt-get install -y php7.2-curl ( based on the PHP version )

Thats it, now configure the crons needed

Login as root via SSH and type # crontab -e

And add the following :

*/5 * * * * php /home/example.com/public_html/scheduled.php > /dev/null 2>&1 

*/1 * * * * php /home/example.com/public_html/autoresponders.php > /dev/null 2>&1

 */5 * * * * php /home/example.com/public_html/import-csv.php > /dev/null 2>&1

*/15 * * * * php /home/example.com/public_html/update-segments.php > /dev/null 2>&1

Make sure the license is activated on the same domain and load example.com/sendy.