AlphaVPS


Docker, Docker Compose, Portainer

1. Installation de Docker

Mettre à jour le système :

apt update && apt upgrade -y

Installer les dépendances nécessaires :

apt install -y ca-certificates curl gnupg

Ajouter la clé GPG officielle de Docker :

install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg

Ajouter le dépôt officiel de Docker :

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list

Mettre à jour les paquets et installer Docker :

apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Vérifier que Docker fonctionne correctement :

docker run hello-world

Si tout fonctionne, Docker est bien installé.

Si non, il se peu qu'il y ait un problème avec le daemon. Alors fais ça:

update-alternatives --set iptables /usr/sbin/iptables-legacy
apt reinstall docker-ce

2. Installation de Docker Compose

ℹ️ Depuis Docker 2.x, docker-compose est inclus dans Docker sous forme de plugin.
Tu peux vérifier la version installée avec :

docker compose version

Si tu veux utiliser docker-compose comme une commande indépendante, installe-le avec :

curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-$(uname -m) -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

Vérifie l'installation :

docker-compose version

3. Installation de Portainer

Créer un volume pour stocker les données de Portainer :

docker volume create portainer_data

Lancer le conteneur Portainer :

docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v portainer_data:/data portainer/portainer-ce:latest

Accéder à l'interface web de Portainer :


4. Vérification et gestion

Voir les conteneurs actifs :

docker ps

Démarrer/arrêter un conteneur :

docker start portainer
docker stop portainer

Mettre à jour Portainer :

docker stop portainer
docker rm portainer
docker pull portainer/portainer-ce:latest
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v portainer_data:/data portainer/portainer-ce:latest

[EN]

1. Install Docker

Update system packages:

apt update && apt upgrade -y

Install required dependencies:

apt install -y ca-certificates curl gnupg

Add Docker’s official GPG key:

install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg

Add the official Docker repository:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list

Update package lists and install Docker:

apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Verify Docker is installed correctly:

docker run hello-world

If you see a success message, Docker is correctly installed. 🎉

If not, there might be a problem with the daemon. So, do this:

update-alternatives --set iptables /usr/sbin/iptables-legacy
apt reinstall docker-ce

2. Install Docker Compose

ℹ️ Since Docker 2.x, docker-compose is included as a Docker plugin.
Check if it’s already installed:

docker compose version

If you need to install docker-compose as a standalone command:

curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-$(uname -m) -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

Verify the installation:

docker-compose version

3. Install Portainer

Create a volume for Portainer data:

docker volume create portainer_data

Run the Portainer container:

docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v portainer_data:/data portainer/portainer-ce:latest

Access the Portainer web interface:


4. Useful Docker & Portainer Commands

Check running containers:

docker ps

Start/stop a container:

docker start portainer
docker stop portainer

Update Portainer to the latest version:

docker stop portainer
docker rm portainer
docker pull portainer/portainer-ce:latest
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v portainer_data:/data portainer/portainer-ce:latest

Sécuriser et Configurer un VPS avec UFW & Nginx Proxy Manager

🔹 Objectifs

✅ Bloquer tous les accès extérieurs sauf :


1️⃣ Configurer le pare-feu UFW

1.1 - Installer UFW (si ce n'est pas fait)

apt update && apt install ufw -y

1.2 - Bloquer tout trafic entrant par défaut

ufw default deny incoming
ufw default allow outgoing

1.3 - Autoriser uniquement tes IPs à accéder aux services sensibles

Remplace 100.100.10.11, 100.100.10.12, 100.100.10.13 par tes adresses IP autorisées.

ufw allow from 100.100.10.11
ufw allow from 100.100.10.12
ufw allow from 100.100.10.13

1.4 - Autoriser uniquement les ports nécessaires

📌 Autoriser HTTP (80), HTTPS (443) et l’interface de Nginx Proxy Manager (81) pour tout le monde :

ufw allow 80   # HTTP
ufw allow 443  # HTTPS
ufw allow 81   # Interface Nginx Proxy Manager

📌 Autoriser SSH uniquement pour tes IPs privées :

ufw allow from 100.100.10.11 to any port 22
ufw allow from 100.100.10.12 to any port 22
ufw allow from 100.100.10.13 to any port 22

1.5 - Empêcher UFW de bloquer le traffic interne

ufw allow from 172.16.0.0/12

1.6 - Activer UFW et vérifier les règles

ufw enable
ufw status verbose

🔥 Ton serveur est maintenant sécurisé :


2️⃣ Installer et Configurer Nginx Proxy Manager

2.1 - Créer un dossier pour Nginx Proxy Manager

mkdir -p /opt/npm && cd /opt/npm

2.2 - Créer le fichier docker-compose.yml

nano docker-compose.yml

Ajoute ce contenu :

services:
  npm:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: nginx_proxy_manager
    restart: unless-stopped
    ports:
      - "80:80"     # HTTP
      - "443:443"   # HTTPS
      - "81:81"     # Interface d'administration
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

2.3 - Démarrer Nginx Proxy Manager

docker-compose up -d

2.4 - Vérifier que le conteneur tourne

docker ps

3️⃣ Configurer le Domaine

3.1 - Ajouter les enregistrements DNS

Sur ton registrar (OVH, Cloudflare, Namecheap, etc.), configure les entrées DNS :

📌 Attends quelques minutes/heures que la propagation DNS se fasse.


4️⃣ Configurer les Redirections dans Nginx Proxy Manager

4.1 - Accéder à l'interface web

👉 Ouvre http://100.100.10.10:81 dans ton navigateur.

4.2 - Se connecter

Identifiants par défaut :

⚠️ Change immédiatement ton mot de passe !

4.3 - Ajouter une redirection avec SSL

1️⃣ Dans Nginx Proxy Manager, va dans Proxy Hosts et clique sur Add Proxy Host.
2️⃣ Ajoute un domaine :

📌 Après validation, accède à https://example.com et teste !


5️⃣ Tester et Vérifier

✅ Vérifie que https://example.com fonctionne bien.
✅ Vérifie que l’accès SSH est bien restreint à tes IPs autorisées :

ufw status verbose

✅ Vérifie que les services Docker tournent correctement :

docker ps

✅ Teste si l’IP du serveur est bloquée en essayant d’accéder directement à http://100.100.10.10.


🎯 Résumé Final

🔥 Sécurité 🚀 Accès Web 🛠️ Outils
SSH limité à tes IPs Sites accessibles via noms de domaine Docker installé
Ports 80, 443, 81 ouverts pour tout le monde SSL automatique avec Let's Encrypt Nginx Proxy Manager opérationnel
Tous les autres ports bloqués Redirections faciles via Proxy Manager Pare-feu UFW actif

Commandes utiles pour UFW

Liste des règles

ufw status numbered

Effacer une règle par son numéro (par ex 7)

ufw delete 7