Aller au contenu principal

Compte AWS et démarrer avec Lightsail

Ensuite, si vous utilisez AWS comme suggéré, vous devrez vous créer un compte. De plus, vous devrez ensuite configurer une instance de serveur en utilisant Lightsail, soit la solution VPS (Virtual Private Server) de AWS.

attention

Vous aurez besoin d'une carte de crédit pour créer votre compte. La majeure partie des hébergeurs le requiert, cela sert à la fois de validation d'identité, de validation du sérieux de l'inscription et dans le cas où vous utiliseriez des services payants, de facturer.

L'option que je vous propose ne vous coûtera rien pour les 3 premiers mois dans le cas du VPS et si vous utilisez d'autres services d'Amazon, plusieurs de ces services sont gratuits pendant 12 mois (pour une version de base).

  1. Rendez-vous à https://aws.amazon.com/fr/
  2. Appuyez sur Créer un compte AWS dans le haut à droite
  3. Complétez les étapes d'inscription img
  4. Lorsque l'inscription est terminée, cliquez sur Accéder à la console de gestion AWS img

Vous serez maintenant dans la console de gestion AWS vous donnant accès à tous les services offerts par AWS.

Changer de région

AWS permet de déployer des services dans plusieurs régions du monde. Vous pouvez changer votre région par défaut à l'aide du menu Région

Vous pouvez changer pour la région Canada - Central

img

Créer une instance Lightsail

  1. Faites une recherche pour le service Lightsail et sélectionnez le service img
  2. Appuyez sur Create an instance img
  3. À Select a blueprint, choisir Operating System (OS) only
  4. Configurez les paramètres de l'instance. De mon côté, j'ai choisi les valeurs suivantes
    • OS: Linux
    • Distro: Amazon Linux 2023. Il s'agit d'une version de Linux optimisée pour AWS. J'ai eu de meilleures performances sur un serveur avec des ressources limitées en utilisant AL2023 plutôt que Ubuntu par exemple.
    • Dual Stack: cela vous donnera une adresse IPv4 publique
    • Taille du serveur: Serveur à 7$/mois. Le démarrage et la configuration initiale d'un projet .NET sont très gourmands et 512 mb est limite sans utiliser de swap. Peu importe l'option choisie, je vous recommande de créer un swap (procédure plus bas), mais j'ai choisi 1G de RAM comme version puisque 512mb est trop restrictif dans le contexte. Libre à vous d'expérimenter.
    • Instance name: nommez l'instance avec un nom unique
  5. Attendez que votre instance soit prête (Instance status)
  6. Accédez à votre instance et vous pourrez y voir ces informations afin d'y accéder, en plus des options de configuration. img

Se connecter à l'instance

Vous pouvez vous connecter à votre instance par terminal, à l'aide de SSH.

Console web

Il existe une console web que vous pouvez utiliser en appuyant sur le bouton Connect using SSH, sous le titre Use your browser.

C'est une bonne façon de démarrer rapidement, mais l'expérience demeure celle d'un terminal au travers d'une interface Web!

Via votre terminal

Pour vous connecter en utilisant votre terminal, dans le bas de la page, téléchargez la clé SSH à l'aide du lien "Download default key".

  1. Télécharger la clé SSH

  2. Modifier les permissions (les clé SSH doivent avoir des permissions restrictives)

    chmod 600 LightsailDefaultKey-ca-central-1.pem

    Sur Windows, dans powershell:

    icacls LightsailDefaultKey-ca-central-1.pem /inheritance:r /grant:r "$($env:USERNAME):(R)"
  3. Obtenez votre adresse IPv4 publique à partir du tableau de bord de votre instance Lightsail

  4. Connectez-vous en faisant référence à la clé

    ssh -i LightsailDefaultKey-ca-central-1.pem ec2-user@<IP-PUBLIQUE>
  5. You're in!

Configurer l'instance

Une fois connecté par terminal, il vous faudra configurer un minimum le serveur.

Installer Docker

sudo dnf update
sudo dnf install docker

sudo usermod -a -G docker ec2-user
id ec2-user
newgrp docker
info
  • dnf est le gestionnaire de paquets utilisé par Amazon Linux
  • sudo usermod -a -G docker ec2-user: Ajoute l’utilisateur ec2-user au groupe docker, permettant d’exécuter des commandes Docker sans sudo.
  • id ec2-user: Affiche les informations de l’utilisateur ec2-user, y compris les groupes auxquels il appartient.
  • newgrp docker: Applique immédiatement les changements de groupe pour la session en cours, en passant au groupe docker sans se déconnecter.

Installer git

sudo dnf install git

Installer Docker Compose et Buildx

sudo mkdir -p /usr/local/lib/docker/cli-plugins/

# Docker Compose
sudo curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose

# Docker Buildx (requis pour construire les images)
BUILDX_VERSION=$(curl -s https://api.github.com/repos/docker/buildx/releases/latest | grep '"tag_name"' | cut -d'"' -f4)
sudo curl -SL "https://github.com/docker/buildx/releases/download/${BUILDX_VERSION}/buildx-${BUILDX_VERSION}.linux-amd64" -o /usr/local/lib/docker/cli-plugins/docker-buildx
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-buildx

sudo systemctl enable docker.service
sudo systemctl start docker.service
info
  • sudo mkdir -p /usr/local/lib/docker/cli-plugins/: Crée le répertoire des plugins CLI Docker s'il n'existe pas déjà.
  • Les commandes curl téléchargent Docker Compose et Docker Buildx depuis les dépôts GitHub officiels et les placent dans le répertoire des plugins CLI Docker.
  • chmod +x: Rend les fichiers exécutables.
  • sudo systemctl enable docker.service: Configure le service Docker pour qu'il démarre automatiquement au démarrage du système.
  • sudo systemctl start docker.service: Démarre immédiatement le service Docker.

Ajouter de l'espace swap

Si vous avez choisi une petite instance de VPS avec, par exemple, 512mb ou 1gb de mémoire vive, il est possible que la compilation de l'application et la création du conteneur sature rapidement la mémoire vive. Cela peut faire en sorte de "geler" le serveur.

Pour pallier à cette limitation, on peut dédier de l'espace disque afin qu'il soit utilisé comme de la mémoire vive. Cela est beaucoup moins rapide, mais à tout de moins évite de faire planter le serveur!

  1. Créer le fichier de swap. Par exemple, pour un swap de 2G:
    sudo fallocate -l 2G /swapfile
  2. Définir les permissions. Le fichier swap doit avoir des permissions restreintes pour des raisons de sécurité.
    sudo chmod 600 /swapfile
  3. Configurer le fichier comme swap.
    sudo mkswap /swapfile
  4. Activer le swap
    sudo swapon /swapfile
  5. Vérifier que le swap est bien activé
    sudo swapon --show
  6. Pour que le swap soit activé automatiquement au démarrage, ajoutez-le au fichier /etc/fstab.
    sudo bash -c 'echo "/swapfile swap swap defaults 0 0" >> /etc/fstab'

Cloner votre repo et démarrer le conteneur

cd ~
mkdir apps
cd apps

git clone [url-de-votre-repo]
cd [dossier repo]

docker compose up

Vous aurez des erreurs du genre:

snowfall_postgres  | Error: Database is uninitialized and superuser password is not specified.
snowfall_postgres | You must specify POSTGRES_PASSWORD to a non-empty value for the
snowfall_postgres | superuser. For example, "-e POSTGRES_PASSWORD=password" on "docker run".

Cela est dû au fait que les variables d'environnement ne sont pas configurées.

Quelques commandes docker utiles

Exécuter en mode detatched

Pour exécuter en mode "detached" (en arrière-plan) (vous pouvez faire CTRL+C pour fermer):

docker compose up -d

Stopper un conteneur

Pour arrêter un conteneur, vous n'avez qu'à exécuter (dans le bon dossier)

docker compose stop