DigitalOcean : déployer et héberger une application cloud

🏷️ Applications utiles 📅 15/04/2026 21:00:00 👤 Mezgani said
Digitalocean Cloud Deploiement Devops Hebergement
DigitalOcean : déployer et héberger une application cloud

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.

DigitalOcean en chiffres : 600 000+ développeurs actifs · 15 datacenters mondiaux · tarif à partir de 4 $/mois pour un Droplet · crédits gratuits de 200 $ pour les nouveaux comptes (60 jours).

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 doctl ou 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 deploy et 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_configPasswordAuthentication 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
Pour démarrer : DigitalOcean offre 200 $ de crédits gratuits pendant 60 jours pour les nouveaux comptes — idéal pour tester tous les services sans risque.