Erugo À propos Documentation Commencer

Installation avancée

Déployez Erugo sur un serveur de production avec Docker, certificats SSL et un proxy inverse. Ce guide couvre l'installation complète, de la création du serveur à l'accès HTTPS sécurisé.

Démarrage rapide disponible

Si vous voulez juste essayer Erugo localement, consultez le guide de démarrage rapide pour une installation plus simple.

Aperçu

Ce guide vous accompagne dans le déploiement d'Erugo sur un VPS avec Docker, Nginx Proxy Manager pour le proxy inverse et SSL, et un stockage persistant pour les fichiers téléchargés.

À la fin, vous aurez une instance Erugo prête pour la production, accessible via HTTPS avec renouvellement automatique des certificats SSL.

Configuration matérielle requise

Erugo n'a pas de configuration matérielle officiellement publiée, mais selon sa pile technologique (PHP, Laravel, Vue.js) et les scénarios d'utilisation typiques, voici les spécifications minimales recommandées :

Ressource Minimum Notes
CPU 2 vCPU Plus de cœurs aident avec les téléchargements simultanés
RAM 4 Go Suffisant pour une utilisation légère à modérée
Stockage 40 Go SSD Ajustez selon vos besoins de stockage de fichiers
Bande passante 10 Mbps Plus élevé est mieux pour les transferts de fichiers
Conseil stockage

La quantité de stockage dont vous aurez besoin dépend du nombre de fichiers que vous prévoyez de stocker et partager. Vous pouvez toujours augmenter plus tard ou attacher des volumes supplémentaires.

Configuration du serveur

Créer votre serveur

Vous aurez besoin d'un VPS (Virtual Private Server) d'un fournisseur cloud. Les options populaires incluent Hetzner, DigitalOcean, Linode ou Vultr. Ce guide utilise Ubuntu 24.04 comme système d'exploitation.

Configuration du serveur

  • Emplacement : Choisissez une région proche de vos utilisateurs
  • Image : Ubuntu 24.04
  • Type : vCPU partagé (x86 Intel/AMD)
  • Taille : 2 vCPU, 4 Go RAM, 40 Go SSD (ou plus)
  • Réseau : IPv4 et IPv6 publiques

Configuration des clés SSH

Pour la sécurité, utilisez une clé SSH Ed25519 qui offre une meilleure sécurité et efficacité par rapport à RSA et ECDSA.

Générer une clé SSH

Sur votre machine locale, générez une nouvelle clé SSH :

Terminal (machine locale)
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_erugo

Ajoutez le contenu de ~/.ssh/id_ed25519_erugo.pub (la clé publique) aux paramètres de clé SSH de votre fournisseur cloud lors de la création du serveur.

Se connecter à votre serveur

Une fois votre serveur créé, notez l'adresse IP et connectez-vous via SSH :

Terminal
ssh -i ~/.ssh/id_ed25519_erugo root@VOTRE_IP_SERVEUR

Remplacez VOTRE_IP_SERVEUR par l'adresse IP réelle de votre serveur.

Créer un utilisateur non-root

Pour les meilleures pratiques de sécurité, créez un utilisateur non-root dédié pour exécuter Docker au lieu d'utiliser le compte root. Cela limite les privilèges et réduit les vecteurs d'attaque potentiels.

Note fournisseur

Certains fournisseurs cloud (comme Vultr) créent automatiquement un utilisateur non-root. Si votre fournisseur en a déjà créé un, vous pouvez ignorer cette étape et utiliser cet utilisateur à la place.

Créer l'utilisateur

Exécutez ces commandes en tant que root pour créer un utilisateur nommé erugo :

Terminal (en tant que root)
# Créer l'utilisateur erugo
adduser --disabled-password --gecos "" erugo

# Ajouter l'utilisateur erugo au groupe sudo
usermod -aG sudo erugo

# Configurer l'authentification par clé SSH
mkdir -p /home/erugo/.ssh
cp /root/.ssh/authorized_keys /home/erugo/.ssh/authorized_keys
chown -R erugo:erugo /home/erugo/.ssh
chmod 700 /home/erugo/.ssh
chmod 600 /home/erugo/.ssh/authorized_keys

# Configurer sudo sans mot de passe pour l'utilisateur erugo
echo "erugo ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/erugo
chmod 440 /etc/sudoers.d/erugo

Basculer vers le nouvel utilisateur

Déconnectez-vous et reconnectez-vous en tant que nouvel utilisateur :

Terminal
ssh -i ~/.ssh/id_ed25519_erugo erugo@VOTRE_IP_SERVEUR

Configuration de Docker

Installer Docker

Installez Docker en utilisant le script de commodité officiel :

Terminal
bash <(wget -qO- https://get.docker.com)

Ajouter l'utilisateur au groupe Docker

Pour éviter d'utiliser sudo pour chaque commande Docker :

Terminal
sudo usermod -aG docker $USER
Déconnexion requise

Déconnectez-vous et reconnectez-vous pour que les changements de groupe prennent effet.

Vérifier l'installation

Après vous être reconnecté, vérifiez que Docker fonctionne :

Terminal
docker run hello-world

Vous devriez voir un message de succès confirmant que Docker est installé correctement.

Configuration du proxy inverse

Configuration DNS

Configurez les enregistrements DNS pour accéder à votre instance Erugo via un domaine personnalisé. Vous aurez besoin d'accéder aux paramètres DNS de votre domaine (par exemple via Cloudflare, votre registrar, etc.).

Créer un enregistrement A

  • Naviguez vers vos paramètres DNS
  • Ajoutez un nouvel enregistrement A
  • Définissez le Nom sur votre sous-domaine souhaité (ex : erugo ou fichiers)
  • Définissez le Contenu sur l'adresse IP de votre serveur
  • Définissez le TTL sur Auto ou une valeur basse pendant la configuration

Par exemple, si votre domaine est exemple.com et que vous utilisez le sous-domaine fichiers, vous accéderez à Erugo à fichiers.exemple.com.

Nginx Proxy Manager

Nginx Proxy Manager fournit un moyen facile de gérer les hôtes de proxy inverse avec génération automatique de certificats SSL via Let's Encrypt.

Créer le répertoire

Terminal
mkdir nginx-proxy-manager
cd nginx-proxy-manager

Configuration Docker Compose

Créez un fichier docker-compose.yml :

docker-compose.yml
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '443:443'
      - '81:81'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    networks:
      - nginx_internal_network

networks:
  nginx_internal_network:
    name: nginx_internal_network
    driver: bridge

Démarrer Nginx Proxy Manager

Terminal
docker compose up -d && docker compose logs -f

Appuyez sur Ctrl+C pour arrêter de suivre les logs une fois que le conteneur est en cours d'exécution.

Accéder à l'interface d'administration

Ouvrez votre navigateur et naviguez vers :

http://VOTRE_IP_SERVEUR:81

Identifiants de connexion par défaut :

Sécurité

Vous serez invité à modifier ces identifiants à la première connexion. Utilisez un mot de passe fort et une adresse e-mail valide.

Installation d'Erugo

Configuration Docker Compose

Créez un répertoire dédié pour Erugo :

Terminal
cd ~
mkdir erugo
cd erugo

Créez le fichier docker-compose.yml :

docker-compose.yml
services:
  app:
    image: wardy784/erugo:latest
    restart: always
    container_name: erugo
    volumes:
      - /home/erugo/Erugo-Storage:/var/www/html/storage
    deploy:
      resources:
        limits:
          memory: 2G
        reservations:
          memory: 1G
    networks:
      - nginx_internal_network

networks:
  nginx_internal_network:
    external: true
Pas de port exposé

Le port n'est pas exposé directement car nous utilisons Nginx Proxy Manager comme proxy inverse. Le trafic passera par le réseau Docker interne.

Configuration du stockage persistant

Le montage de volume garantit que les fichiers téléchargés sont stockés sur votre système hôte, pas seulement à l'intérieur du conteneur. Cela signifie :

  • Les fichiers ne seront pas perdus si le conteneur est recréé
  • Vous pouvez facilement sauvegarder ou inspecter les fichiers téléchargés depuis le serveur

Créer le répertoire de stockage

Terminal
mkdir -p /home/erugo/Erugo-Storage
chown -R $(id -u):$(id -g) /home/erugo/Erugo-Storage

Démarrer Erugo

Terminal
docker compose up -d && docker compose logs -f

Appuyez sur Ctrl+C pour arrêter de suivre les logs une fois que le conteneur est en cours d'exécution.

Configurer l'hôte proxy

Maintenant, configurez Nginx Proxy Manager pour router le trafic vers votre conteneur Erugo.

Ajouter un nouvel hôte proxy

  1. Accédez à Nginx Proxy Manager à http://VOTRE_IP_SERVEUR:81
  2. Cliquez sur HostsProxy Hosts
  3. Cliquez sur Add Proxy Host

Paramètres de l'onglet Details

Paramètre Valeur
Domain Names Votre sous-domaine (ex : fichiers.exemple.com)
Scheme http
Forward Hostname / IP erugo
Forward Port 80
Websockets Support Activé
Block Common Exploits Activé
Pourquoi « erugo » comme nom d'hôte ?

Le DNS interne de Docker permet aux conteneurs sur le même réseau de se joindre en utilisant le nom du conteneur comme nom d'hôte. Puisque nous avons nommé le conteneur erugo, Nginx Proxy Manager peut lui transférer le trafic en utilisant ce nom.

Configuration du certificat SSL

Configurez SSL pour sécuriser votre instance Erugo avec HTTPS.

Paramètres de l'onglet SSL

  1. Cliquez sur l'onglet SSL dans les paramètres de l'hôte proxy
  2. Sélectionnez Request a new SSL Certificate
  3. Activez Force SSL
  4. Activez HTTP/2 Support
  5. Entrez votre adresse e-mail pour les notifications Let's Encrypt
  6. Acceptez les conditions d'utilisation de Let's Encrypt
  7. Cliquez sur Save

Attendez quelques secondes que le certificat SSL soit émis. Une fois terminé, vous pouvez accéder à Erugo en toute sécurité à https://fichiers.exemple.com (en utilisant votre domaine réel).

Succès !

Votre instance Erugo est maintenant entièrement configurée et accessible via HTTPS.

Comprendre le réseau Docker

Dans cette configuration, Nginx Proxy Manager et Erugo sont tous deux connectés au même réseau bridge défini par l'utilisateur nommé nginx_internal_network.

Pourquoi ça fonctionne

Les réseaux bridge définis par l'utilisateur de Docker incluent la découverte automatique de services basée sur DNS :

  • Chaque conteneur peut atteindre les autres en utilisant le nom du conteneur comme nom d'hôte
  • Lorsque NPM route le trafic vers Erugo, il transfère à http://erugo:80
  • Pas besoin d'exposer le port 80 sur l'hôte ou de rechercher les IP internes des conteneurs

Tout est géré de manière transparente à l'intérieur du réseau Docker, offrant à la fois sécurité et commodité.

Remerciements

Ce guide est basé sur l'excellent tutoriel de Pierluigi Montinaro, qui écrit sur l'auto-hébergement et le DevOps sur son blog DevOps Chronicles.