Apprenez à utiliser DigitalOcean pour déployer des applications web, gérer des Droplets, configurer des bases de données managées et utiliser App Platform pour un déploiement simplifié.
Présentation de DigitalOcean
DigitalOcean est un fournisseur de cloud computing fondé en 2011, reconnu pour sa simplicité d'utilisation et ses tarifs transparents. Contrairement à AWS ou GCP, DigitalOcean cible les développeurs et startups avec une interface épurée et une documentation exemplaire.
Avantages par rapport à AWS/GCP/Azure
- 🧭 Interface simple — démarrer un serveur en moins de 60 secondes
- 💰 Tarifs prévisibles — prix fixe mensuel, pas de surprises
- 📚 Documentation communautaire — milliers de tutoriels détaillés
- ⚡ API complète — automatisation via CLI
doctlou Terraform - 🌍 Edge Network — CDN intégré pour les assets statiques
Droplets : serveurs virtuels cloud
Un Droplet est la brique de base de DigitalOcean — une machine virtuelle Linux hébergée dans leur infrastructure. Ils se créent et se détruisent en quelques secondes.
Créer un Droplet via l'interface
1. Se connecter sur cloud.digitalocean.com
2. Cliquer "Create" → "Droplets"
3. Choisir l'image : Ubuntu 24.04 LTS (recommandé)
4. Choisir le plan :
- Basic Shared CPU : 1 vCPU / 1 GB RAM / 25 GB SSD → 6 $/mois
- General Purpose : 2 vCPU / 8 GB RAM / 25 GB SSD → 63 $/mois
5. Choisir le datacenter (Frankfurt ou Amsterdam pour l'Europe)
6. Ajouter une clé SSH
7. Cliquer "Create Droplet"
Créer un Droplet via la CLI doctl
# Installer doctl
# macOS : brew install doctl
# Linux : snap install doctl
# Authentification
doctl auth init
# Créer un Droplet Ubuntu
doctl compute droplet create my-app \
--image ubuntu-24-04-x64 \
--size s-1vcpu-1gb \
--region fra1 \
--ssh-keys $(doctl compute ssh-key list --format ID --no-header)
# Lister les Droplets
doctl compute droplet list
# Se connecter en SSH
ssh root@<IP_DU_DROPLET>
Configurer un serveur Ubuntu pour une app Node/PHP
# Mise à jour système
apt update && apt upgrade -y
# Installer Node.js 22 (LTS)
curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
apt install -y nodejs
# Installer Nginx
apt install -y nginx
# Installer PM2 (process manager Node)
npm install -g pm2
# Vérifier
node -v && nginx -v && pm2 -v
App Platform : déploiement sans serveur
App Platform est le service PaaS de DigitalOcean — similaire à Heroku ou Netlify. Il gère automatiquement les serveurs, le scaling et les certificats SSL. Vous connectez votre dépôt Git et DigitalOcean déploie à chaque push.
Déployer depuis GitHub
1. cloud.digitalocean.com → "Apps" → "Create App"
2. Connecter votre compte GitHub / GitLab / Bitbucket
3. Sélectionner le dépôt et la branche (main)
4. DigitalOcean détecte automatiquement le type de projet :
- Node.js → npm run build
- Static Site → fichiers dans /dist
- Docker → Dockerfile à la racine
5. Définir les variables d'environnement
6. Choisir le plan :
- Static Site : GRATUIT (3 apps max)
- Basic App : 5 $/mois
7. Cliquer "Deploy"
Configuration via app.yaml (Infrastructure as Code)
name: mon-app-angular
region: fra
services:
- name: api
github:
repo: username/mon-repo
branch: main
run_command: node dist/server.js
environment_slug: node-js
instance_size_slug: apps-s-1vcpu-0.5gb
envs:
- key: NODE_ENV
value: production
- key: DATABASE_URL
value: "${db.DATABASE_URL}" # référence un composant DB
type: SECRET
static_sites:
- name: frontend
github:
repo: username/mon-repo
branch: main
build_command: npm run build
output_dir: dist/mon-app
databases:
- name: db
engine: PG
version: "16"
Bases de données managées
DigitalOcean propose des bases de données entièrement managées — sauvegardes automatiques, mises à jour, réplication et monitoring inclus.
| Moteur | Plan minimal | Cas d'usage |
|---|---|---|
| PostgreSQL | 15 $/mois (1 vCPU / 1 GB) | Apps transactionnelles, API REST |
| MySQL | 15 $/mois | CMS, WordPress, apps PHP |
| Redis | 15 $/mois | Cache, sessions, pub/sub |
| MongoDB | 15 $/mois | Documents JSON, APIs flexibles |
| Kafka | 50 $/mois | Event streaming, microservices |
Connexion à PostgreSQL depuis Node.js
// Utiliser la connection string fournie par DigitalOcean
// (stockée en variable d'environnement, jamais en dur)
import { Pool } from 'pg';
const pool = new Pool({
connectionString: process.env.DATABASE_URL,
ssl: {
rejectUnauthorized: false // requis pour DO Managed DB
}
});
export const query = (text: string, params?: unknown[]) =>
pool.query(text, params);
Spaces : stockage objet (S3-compatible)
DigitalOcean Spaces est un service de stockage objet compatible avec l'API AWS S3. Idéal pour stocker des uploads utilisateurs, des backups ou les assets statiques d'une Angular Universal app.
// Tarifs : 5 $/mois pour 250 GB + 1 TB de transfert
// CDN intégré : +1 $/mois pour activer le Edge Cache mondial
// Utilisation avec le SDK AWS S3 (compatible DigitalOcean Spaces)
import { S3Client, PutObjectCommand } from '@aws-sdk/client-s3';
const client = new S3Client({
endpoint: 'https://fra1.digitaloceanspaces.com',
region: 'fra1',
credentials: {
accessKeyId: process.env.SPACES_KEY!,
secretAccessKey: process.env.SPACES_SECRET!
}
});
async function uploadFile(key: string, body: Buffer, contentType: string) {
await client.send(new PutObjectCommand({
Bucket: 'mon-bucket',
Key: key,
Body: body,
ContentType: contentType,
ACL: 'public-read'
}));
return `https://mon-bucket.fra1.cdn.digitaloceanspaces.com/${key}`;
}
Déployer une app Angular sur DigitalOcean
Option 1 — App Platform (statique, recommandé)
# Structure du projet Angular
# angular.json → outputPath: "dist/mon-app/browser"
# Sur App Platform :
# - Type: Static Site
# - Build Command: npm run build -- --configuration=production
# - Output Dir: dist/mon-app/browser
# - GRATUIT jusqu'à 3 sites statiques
# Penser à ajouter un fichier de routes pour le routing Angular :
# _redirects (compatibilité Netlify-style) :
/* /index.html 200
Option 2 — Droplet + Nginx
# 1. Builder localement ou en CI/CD
ng build --configuration=production
# 2. Uploader les fichiers sur le Droplet
scp -r dist/mon-app/browser/* root@<IP>:/var/www/mon-app/
# 3. Configuration Nginx : /etc/nginx/sites-available/mon-app
server {
listen 80;
server_name mon-domaine.com;
root /var/www/mon-app;
index index.html;
# Gestion du routing Angular (HTML5 History API)
location / {
try_files $uri $uri/ /index.html;
}
# Cache agressif pour les assets hachés
location ~* \.(js|css|png|jpg|webp|svg|woff2)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
}
# 4. Activer le site et SSL (Let's Encrypt)
ln -s /etc/nginx/sites-available/mon-app /etc/nginx/sites-enabled/
apt install -y certbot python3-certbot-nginx
certbot --nginx -d mon-domaine.com
nginx -t && systemctl reload nginx
CI/CD avec GitHub Actions
# .github/workflows/deploy.yml
name: Deploy Angular to DigitalOcean
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
cache: 'npm'
- run: npm ci
- run: npm run build -- --configuration=production
- name: Deploy via SCP
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.DO_HOST }}
username: root
key: ${{ secrets.DO_SSH_KEY }}
source: "dist/mon-app/browser/*"
target: "/var/www/mon-app"
strip_components: 3
Sécurité et bonnes pratiques
-
Ne jamais se connecter en root en production — créez un utilisateur
non-root avec
adduser deployet accordez-lui les droits nécessaires. -
Configurer le pare-feu UFW dès la création du Droplet :
ufw allow OpenSSH && ufw allow 'Nginx Full' && ufw enable -
Désactiver l'authentification par mot de passe SSH :
dans
/etc/ssh/sshd_config→PasswordAuthentication no -
Activer les mises à jour automatiques de sécurité :
dpkg-reconfigure --priority=low unattended-upgrades - Surveiller avec DigitalOcean Monitoring — alertes CPU, mémoire, disque intégrées gratuitement dans tous les Droplets.
Tarifs et comparatif
| Service | DigitalOcean | AWS équivalent | Avantage DO |
|---|---|---|---|
| VM 1 vCPU / 1 GB | 6 $/mois | t3.micro ~8 $/mois | Prix fixe prévisible |
| App Platform (static) | Gratuit | S3 + CloudFront ~1 $/mois | Zéro configuration |
| PostgreSQL managé | 15 $/mois | RDS ~25 $/mois | -40% moins cher |
| Stockage objet 250 GB | 5 $/mois | S3 ~5,75 $/mois | CDN inclus |
| Load Balancer | 12 $/mois | ALB ~16 $/mois | Plus simple à configurer |
Conclusion
DigitalOcean est le choix idéal pour les développeurs qui veulent la puissance du cloud sans la complexité d'AWS. Sa combinaison de Droplets flexibles, App Platform sans serveur et bases de données managées couvre la majorité des besoins d'une application Angular moderne.
- 🚀 App Platform — déployez votre Angular en 5 minutes depuis GitHub
- 💧 Droplets — contrôle total pour des configs serveur spécifiques
- 🗄️ DB managées — PostgreSQL/MySQL sans administration
- 📦 Spaces — stockage S3-compatible + CDN mondial
- 💰 Tarifs clairs — pas de surprises sur la facture mensuelle