Préparer un serveur sur AWS
Ce guide prépare une instance EC2 pour Bring Your Own Server, avec son pare-feu, son IP fixe et son stockage de sauvegarde. Skysize installe tout le reste sur le serveur.
Chaque étape comporte deux onglets : cliquez dans Console, ou collez depuis Ligne de commande. Votre choix s'applique à toute la page.
Les commandes s'exécutent dans CloudShell, l'icône de terminal en haut de la console AWS : vous n'avez ainsi rien à installer. Gardez le même onglet ouvert, car chaque bloc réutilise les valeurs de l'étape 1.
1. Choisir vos valeurs
Choisissez la région la plus proche de vos utilisateurs, et la taille adaptée à votre usage.
| Usage | Type d'instance | vCPU | RAM | Disque |
|---|---|---|---|---|
| Une branche de production et une de staging | m7i.large | 2 | 8 GB | 100 GB |
| Production avec des branches de staging et de développement | m7i.xlarge | 4 | 16 GB | 200 GB |
Évitez les types Graviton comme m7g ou t4g : ils sont ARM, et l'installateur refuse de s'y exécuter. Évitez t3 en production : il épuise ses crédits CPU sous une charge soutenue.
- Console
- Ligne de commande
Sélectionnez votre région en haut à droite de la console AWS. Utilisez la même à chaque étape.
export AWS_REGION=us-east-2 AWS_DEFAULT_REGION=us-east-2
NAME=skysize-odoo
TYPE=m7i.large
DISK_GB=100
BUCKET=$NAME-backups-$(aws sts get-caller-identity --query Account --output text)
2. Créer le groupe de sécurité
Le serveur a besoin de ces règles entrantes, et d'aucune autre :
| Type | Port | Source | Pourquoi |
|---|---|---|---|
| HTTP | 80 | Toute adresse (0.0.0.0/0) | Certificats et redirections |
| HTTPS | 443 | Toute adresse (0.0.0.0/0) | Vos sites Odoo |
Skysize n'a besoin d'aucun port entrant qui lui soit propre. Il n'y a pas de règle SSH, car vous vous connectez avec Session Manager à l'étape 6. Laissez PostgreSQL (5432) fermé sauf si vous utilisez l'accès à la base de données en lecture seule. Conservez la règle sortante par défaut, qui autorise tout : le serveur en a besoin.
- Console
- Ligne de commande
- Ouvrez EC2 → Security Groups → Create security group.
- Donnez au nom et à la description la valeur
skysize-odoo, et conservez le VPC par défaut. - Sous Inbound rules, ajoutez les deux règles ci-dessus.
- Cliquez sur Create security group.
VPC_ID=$(aws ec2 describe-vpcs --filters Name=isDefault,Values=true \
--query 'Vpcs[0].VpcId' --output text)
SG_ID=$(aws ec2 create-security-group --group-name "$NAME" \
--description "Skysize Odoo server" --vpc-id "$VPC_ID" \
--query GroupId --output text)
aws ec2 authorize-security-group-ingress --group-id "$SG_ID" \
--protocol tcp --port 80 --cidr 0.0.0.0/0
aws ec2 authorize-security-group-ingress --group-id "$SG_ID" \
--protocol tcp --port 443 --cidr 0.0.0.0/0
Si VPC_ID affiche None, votre compte n'a pas de VPC par défaut. Donnez à VPC_ID la valeur d'un VPC doté d'un sous-réseau public, et ajoutez --subnet-id à l'étape 4.
3. Créer le bucket de sauvegarde et le rôle du serveur
Skysize n'effectue aucune sauvegarde tant qu'un projet n'a pas de cible de sauvegarde. Cette étape crée un bucket privé et un rôle qui permet au serveur de l'utiliser, sans aucun secret à stocker.
- Console
- Ligne de commande
Bucket
- Ouvrez S3 → Create bucket.
- Saisissez un nom unique sur l'ensemble d'AWS, par exemple
skysize-odoo-backups-suivi de l'ID de votre compte. - Laissez Block all public access activé, puis cliquez sur Create bucket.
Rôle
- Ouvrez IAM → Roles → Create role.
- Choisissez AWS service, puis EC2, et cliquez sur Next.
- Sélectionnez la politique
AmazonSSMManagedInstanceCore, et cliquez sur Next. - Nommez le rôle
skysize-odoo, et cliquez sur Create role. - Ouvrez le rôle, puis Add permissions → Create inline policy → JSON.
- Collez ceci, avec le nom de votre bucket à la place de
YOUR_BUCKET, et nommez la politiquebackups:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:ListBucket", "s3:GetBucketLocation"],
"Resource": "arn:aws:s3:::YOUR_BUCKET"
},
{
"Effect": "Allow",
"Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:AbortMultipartUpload", "s3:ListMultipartUploadParts"],
"Resource": "arn:aws:s3:::YOUR_BUCKET/*"
}
]
}
aws s3 mb "s3://$BUCKET"
cat > ec2-trust.json <<'JSON'
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": { "Service": "ec2.amazonaws.com" },
"Action": "sts:AssumeRole"
}]
}
JSON
cat > backups.json <<JSON
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:ListBucket", "s3:GetBucketLocation"],
"Resource": "arn:aws:s3:::$BUCKET"
},
{
"Effect": "Allow",
"Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:AbortMultipartUpload", "s3:ListMultipartUploadParts"],
"Resource": "arn:aws:s3:::$BUCKET/*"
}
]
}
JSON
aws iam create-role --role-name "$NAME" \
--assume-role-policy-document file://ec2-trust.json
aws iam put-role-policy --role-name "$NAME" \
--policy-name backups --policy-document file://backups.json
aws iam attach-role-policy --role-name "$NAME" \
--policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
aws iam create-instance-profile --instance-profile-name "$NAME"
aws iam add-role-to-instance-profile \
--instance-profile-name "$NAME" --role-name "$NAME"
sleep 15
La dernière ligne laisse à AWS le temps de rendre le nouveau rôle disponible.
4. Lancer l'instance
Utilisez Ubuntu 24.04 pour x86. Sur AWS, utilisez Ubuntu ou Debian : Amazon Linux, l'image proposée par défaut dans la console, n'est pas pris en charge et l'installateur le refuse. Les commandes de cette page sont écrites pour Ubuntu.
- Console
- Ligne de commande
Ouvrez EC2 → Instances → Launch instances, et définissez :
| Paramètre | Valeur |
|---|---|
| Name | skysize-odoo |
| Application and OS Images | Ubuntu, puis Ubuntu Server 24.04 LTS, architecture 64-bit (x86) |
| Instance type | Le type de l'étape 1 |
| Key pair | Proceed without a key pair |
| Network settings | Select existing security group : skysize-odoo. Laissez Auto-assign public IP activé. |
| Configure storage | La taille de disque de l'étape 1, type gp3 |
| Advanced details → IAM instance profile | skysize-odoo |
Cliquez ensuite sur Launch instance.
INSTANCE_ID=$(aws ec2 run-instances \
--image-id resolve:ssm:/aws/service/canonical/ubuntu/server/24.04/stable/current/amd64/hvm/ebs-gp3/ami-id \
--instance-type "$TYPE" \
--security-group-ids "$SG_ID" \
--iam-instance-profile "Name=$NAME" \
--block-device-mappings "DeviceName=/dev/sda1,Ebs={VolumeSize=$DISK_GB,VolumeType=gp3}" \
--tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=$NAME}]" \
--query 'Instances[0].InstanceId' --output text)
aws ec2 wait instance-running --instance-ids "$INSTANCE_ID"
5. Lui attribuer une IP fixe
L'IP publique d'une instance change lorsqu'elle s'arrête et redémarre, ce qui casserait vos enregistrements DNS. Notez cette IP : vos enregistrements DNS pointeront vers elle.
- Console
- Ligne de commande
- Ouvrez EC2 → Elastic IPs → Allocate Elastic IP address, et cliquez sur Allocate.
- Sélectionnez la nouvelle adresse, puis Actions → Associate Elastic IP address.
- Choisissez votre instance, et cliquez sur Associate.
ALLOC_ID=$(aws ec2 allocate-address --domain vpc --query AllocationId --output text)
aws ec2 associate-address --instance-id "$INSTANCE_ID" --allocation-id "$ALLOC_ID"
aws ec2 describe-addresses --allocation-ids "$ALLOC_ID" --query 'Addresses[0].PublicIp' --output text
echo "Bucket: $BUCKET Region: $AWS_REGION"
6. Se connecter au serveur
Dans la console EC2, sélectionnez l'instance et choisissez Connect → Session Manager → Connect. Cela ouvre un terminal dans votre navigateur, sans clé SSH ni port ouvert. La connexion peut mettre une minute ou deux à devenir disponible après le lancement. C'est ici que vous collez la commande d'installation de Skysize.
7. Définir la cible de sauvegarde
Une fois votre projet créé, ouvrez ses Paramètres → Cible de sauvegarde, cliquez sur Ajouter une cible et renseignez :
| Champ | Valeur |
|---|---|
| Type | AWS S3 |
| Bucket | Le nom de votre bucket |
| Région | Votre région, par exemple us-east-2 |
| Préfixe | Le nom du projet |
| Authentification | Rôle IAM |
Cliquez sur Tester pour la vérifier depuis votre serveur.
Envoyer des emails depuis Odoo
AWS bloque par défaut le port 25 sortant. Utilisez un relais SMTP sur le port 587, comme Amazon SES. Voir Configurer l'email sortant.
Connecter le serveur à Skysize
Votre serveur est prêt. Suivez Configurer votre propre serveur, à partir de l'étape d'enregistrement du serveur. En bref : enregistrez-le dans le tableau de bord, connectez-vous-y en SSH et collez la commande d'installation. Le statut passe à En ligne moins d'une minute après la fin de l'installateur.
Une fois votre premier projet lancé, ajoutez votre domaine.
En cas de problème
Le tableau de bord indique que les ports 80 et 443 ne sont pas joignables. Vérifiez les règles de pare-feu ci-dessus, et que l'IP publique indiquée dans les paramètres du serveur est bien celle que vous avez notée. Cliquez ensuite sur Vérifier à nouveau.
Le serveur reste Hors ligne. Le serveur se connecte en sortie à Skysize, aucune règle entrante ne résout donc ce problème. Exécutez ces commandes sur le serveur :
sudo systemctl status skysize-agent
sudo journalctl -u skysize-agent -n 50
nc -zv cp.skysize.io 50051
Si l'installateur ne s'est pas terminé, ou si le jeton d'enrôlement a déjà été utilisé, utilisez Régénérer le jeton d'enrôlement sur la page du serveur et relancez la commande d'installation.
Le problème persiste ? Ouvrez Assistance dans le tableau de bord et joignez la sortie de ces commandes.