Pour des besoins professionnels, j'ai eu besoin de créer un blog. J'ai choisi un VPS chez OVH sous Ubuntu 18.04. Dans ce billet je vais vous donner toutes les étapes de l'installation.

1)  La première étape mettre à jour le système d'exploitation  

sudo apt-get update && sudo apt-get dist-upgrade && sudo apt-get autoremove

2) Installation du serveur Web : nginx

sudo ufw allow http https 
sudo ufw default allow outgoing
sudo ufw default deny incoming
sudo apt install nginx
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
curl http://localhost

3) Installation du SGBD : MariaDB  

sudo apt-get install mariadb-server mariadb-client
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service
sudo mysql_secure_installation

Voici les réponses aux questions

  • Enter current password for root (enter for none): Appuyer sur "Enter"
  • Set root password? [Y/n]: Y
  • New password: Votre mot de passe
  • Re-enter new password: Votre mot de passe
  • Remove anonymous users? [Y/n]: Y
  • Disallow root login remotely? [Y/n]: Y
  • Remove test database and access to it? [Y/n]:  Y
  • Reload privilege tables now? [Y/n]:  Y

4) Création de la base de donnée et du user  pour Ghost

sudo mysql -u root -p
CREATE DATABASE ghost;
CREATE USER 'ghostuser'@'localhost' IDENTIFIED BY 'Mot de passe';
GRANT ALL ON ghost.* TO 'ghostuser'@'localhost' IDENTIFIED BY 'Mot de passe' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

5) Installation de NodeJS

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install nodejs

6) Installation de Ghost

sudo adduser ghostuser
sudo usermod -aG sudo ghostuser
su - ghostuser
sudo mkdir -p /var/www/html/ghost/
sudo chown -R ghostuser:ghostuser /var/www/html/ghost
sudo chmod -R 755 /var/www/html/ghost
sudo apt install npm
cd /var/www/html/ghost
sudo npm i -g ghost-cli
ghost install

Les réponses aux questions :

  • System checks failed with message: 'Linux version is not Ubuntu 16'
    Some features of Ghost-CLI may not work without additional configuration.
    For local installs we recommend using ghost install local instead.? Continue anyway? Yes
  • ? Enter your blog URL: http://localhost:2368
  • ? Enter your MySQL hostname: localhost
  • ? Enter your MySQL username: ghostuser
  • ? Enter your MySQL password: Votre mot de passe
  • ? Enter your Ghost database name: ghost
  • ? Do you wish to set up "ghost" mysql user? No
  • ? Do you wish to set up Nginx? No
  • ? Do you wish to set up Systemd? Yes
  • ? Do you want to start Ghost? Yes

Votre blog est opérationnel sur le port 2368

7) Configuration de NGINX + SSL

sudo vi /etc/nginx/sites-available/ghost

copier le texte suivant en remplacent <votre-nom-de-domaine> :

server {
    listen 80;
    listen [::]:80;
    server_name <votre-nom-de-domaine>;

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:2368;
    }
}
sudo ln -s /etc/nginx/sites-available/ghost /etc/nginx/sites-enabled/
sudo systemctl restart nginx

Installation d'un certificat Let's Encrypt

sudo add-apt-repository ppa:certbot/certbot
sudo apt install python-certbot-nginx
sudo certbot --nginx -d <votre nom de domaine>
sudo systemctl restart nginx 

En fonction de vos besoins vous pouvez installer un serveur Mail (Postfix par exemple) et un système de commentaires respectant la vie privée. Sur ce blog j'utilise ISSO.