Pour installer le CMS Headless Directus, vous devez au préalable vous créer un compte Hetzner, posséder un nom de domaine et un accès à une base de données MySQL. Ces trois critères réunis, allons-y.
Connectez-vous au service Hetzner Cloud.
Créer votre projet si ce n'est déjà fait. Un projet regroupe un ensemble de serveurs.
Si vous éprouvez des difficultés avec les clés SSH sur Hetzner, peut-être bien que cet article pourrait vous aider : Se connecter en SSH sur un server cloud Hetzner.
Sélectionner le type de serveur que vous désirez en fonction de votre budget et de la puissance que vous désirez.
La clé SSH que vous avez renseigné précédemment devrait être sélectionné par défaut.
Nommer et créer votre nouveau serveur.
Récupérer l'adresse IP de votre serveur sur votre interface Hetzner.
Ouvrir un terminal (invite de commandes) et connecter en SSH à votre serveur :
ssh root@ipduserveur
apt update
apt upgrade
curl -sL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
apt update
apt install nodejs
node -v; npm -v
adduser master
usermod -aG sudo master
su - master
mkdir directus
cd directus
npm init
npm install directus
npx directus init
A la question "Ok to proceed?", répondez y
A la question "Choose your database client", sélectionnez Mysql / MariaDB / Aurora
Renseignez la configuration de connexion, valider
Créer votre premier utilisateur admin, valider, votre Directus est installé.
Vous pouvez modifier à votre convenance le fichier .env pour configurer plus finement votre Directus. Pensez à redémarrer votre instance Directus (cf PM2) pour que celui-ci soit pris en compte.
sudo npm install pm2 -g
pm2 -v
Vous devriez avoir un beau logo et un numéro de version.
pm2 start npm --name "directus" -- start
pm2 restart directus
pm2 logs directus
sudo apt install nginx
sudo systemctl status nginx
sudo nano /etc/nginx/sites-enabled/api.yourdomain.com.conf
server {
# listen 443 ssl http2;
server_name api.yourdomain.com;
# upload max size
client_max_body_size 8m;
# Include your SSL details here #
location / {
proxy_pass http://localhost:8055;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
add_header X-Cache $upstream_cache_status;
proxy_connect_timeout 30s;
proxy_read_timeout 86400s;
proxy_send_timeout 30s;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
access_log /var/log/nginx/api.yourdomain.com.log;
error_log /var/log/nginx/api.yourdomain.com.error.log;
}
sudo nginx -t
sudo systemctl restart nginx
sudo apt install python3-certbot-nginx -y
sudo certbot certonly -d api.yourdomain.com
Première question, sélectionner 1 pour NGINX
Deuxième question, saisir votre e-mail sur lequel vous allez recevoir vos notifications Let’s Encrypt
Troisième question, saisir y pour accepter les conditions générales
Quatrième question, saisir n pour ne pas recevoir la newsletter de Let’s Encrypt. Sauf si vous le souhaitez
Votre certificat a été généré avec succès.
Copier / coller les lignes suivantes :
Certificate is saved at: /etc/letsencrypt/live/api.yourdomain.com/fullchain.pem
Key is saved at: /etc/letsencrypt/live/api.yourdomain.com/privkey.pem
sudo nano /etc/nginx/sites-enabled/api.yourdomain.com.conf
server {
listen 443 ssl http2;
server_name api.yourdomain.com;
# upload max size
client_max_body_size 8m;
# Include your SSL details here
ssl_certificate /etc/letsencrypt/live/api.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/api.yourdomain.com/privkey.pem;
location / {
proxy_pass http://localhost:8055;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
add_header X-Cache $upstream_cache_status;
proxy_connect_timeout 30s;
proxy_read_timeout 86400s;
proxy_send_timeout 30s;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
access_log /var/log/nginx/api.yourdomain.com.log;
error_log /var/log/nginx/api.yourdomain.com.error.log;
}
server {
listen 80;
server_name api.yourdomain.com;
return 301 https://api.yourdomain.com$request_uri;
}
sudo nginx -t
sudo systemctl restart nginx
Vous devriez pourvoir accéder à votre api https://api.yourdomain.com, redirection vers https comprise ;)
sudo certbot renew --dry-run
Et ça devrait être bon ;)
// todo
sudo apt update
sudo apt install sendmail
sudo systemctl status sendmail
Modifier la configuration de votre fichier .env en suivant la documentation de Directus
Redémarrer votre instance Directus :
pm2 restart directus
sudo chown -R 1000:1000 /home/master/directus/uploads
pm2 stop directus
npm i --save directus@latest
npx directus database migrate:latest
pm2 start directus
Enjoy ^^