Web, Dev, Linux, Apache, Nginx, MySQL, webhost, webserver, sysadmin

For each of the following methods, make sure you have the right credentials to each remote server you are working. You need the right pair of username and password of each machine for a successful transfer.

Your backend is accessible only through ssh key-pairing but you have the need to use an FTP program like FileZilla to transfer a file from or to a local machine.

Temporarily disable the ssh only access
From the command line:

  1. sudo nano /etc/ssh/sshd_config
  2. Set PasswordAuthentication to yes
  3. sudo service sshd restart

From your FTP application

Certbot failed to renew certificate to all domains hosted in a particular server. While most of the servers shoot the bot to acquire the certificate, it bug me why some didn't when they have the same setup. I guess because a domain or two in those failed servers are using premium SSL, but I am not sure honestly.

Certbot will let you manage your SSL certificates, ensuring that your server will automatically renew Let's Encrypt without you doing it by hand.

Create a database named database_name and enter your root database password
mysql -u root -p -e "CREATE DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci";

Create a Drupal site directory. For this setup, websites are at /var/www/
cd /var/www

chown -R www-data:www-data /path/to/folder/

Note that this is a personal workflow of mine and not a tutorial.  Commands may vary according to your setup.