1
0
Bifurcation 0
miroir de https://github.com/PAPAMICA/Wiki-Tech.io.git synchronisé 2024-07-07 10:29:34 +02:00

docs: update Cloud/IPC/Docker

Cette révision appartient à :
Mickael Asseline 2021-11-12 09:15:27 +00:00 révisé par Mickael Asseline
Parent 9680df6dba
révision e477cf94e5

Voir le fichier

@ -2,7 +2,7 @@
title: Infomaniak Public Cloud - Mise en situation : Environnement Docker
description: Mettre en place un environnement Docker avec Traefik et Portainer
published: true
date: 2021-11-12T08:15:12.116Z
date: 2021-11-12T09:15:25.044Z
tags: openstack, docker, infomaniak, public-cloud, cloud, ipc, heat
editor: markdown
dateCreated: 2021-11-12T08:15:12.116Z
@ -352,7 +352,7 @@ Pour la gestion de la stack, voir ce tutoriel :
# Création de la VM
## Horizon
### Création du groupe de sécurité pour le port RDP
Pour nous connecter à la machine virtuelle une fois installée, nous allons avoir besoin d'ouvrir le port RDP (`3389`). Si vous avez bien suivis les autres tutoriel, cela devrais etre simple. Créez donc un nouveau groupe de sécurité `RDP`en suivant ce tutoriel :
Pour nous connecter à la machine virtuelle une fois installée, nous allons avoir besoin d'ouvrir le port RDP (`3389`). Si vous avez bien suivis les autres tutoriel, cela devrais etre simple. Créez donc un nouveau groupe de sécurité `HTTP-HTTPS`en suivant ce tutoriel :
- [🛡️ Les groupes de sécurité *Comprendre et utiliser le firewall et ses règles avec Horizon*](/Cloud/IPC/Security-Groups#horizon)
{.links-list}
@ -365,26 +365,27 @@ Comme pour la création du groupe de sécurité, utilisez le tutoriel suivant po
- [⚡ Les instances (machines virtuelles) *Créer et gérer une instance avec Horizon*](/Cloud/IPC/Instances#horizon)
{.links-list}
Sélectionnez l'image `Ubuntu 20,04 LTS Focal Fossa`:
Sélectionnez l'image `Debian 11.1 bullseye`:
![infomaniak-publiccloud_8_2.png](/images/cloud/infomaniak-public-cloud/8/infomaniak-publiccloud_8_2.png =600x)
Bien choisir la configuration adaptée à votre besoin :
![infomaniak-publiccloud_8_3.png](/images/cloud/infomaniak-public-cloud/8/infomaniak-publiccloud_8_3.png =600x)
Et pensez à bien ajouter vos groupes de sécurités en conséquence : (ici pour le port RDP (3389), SSH (22) et Ping (ICMP))
Et pensez à bien ajouter vos groupes de sécurités en conséquence : (ici pour le port HTTP (80), HTTPS (443), SSH (22) et Ping (ICMP))
![infomaniak-publiccloud_8_4.png](/images/cloud/infomaniak-public-cloud/8/infomaniak-publiccloud_8_4.png =600x)
## CLI
### Création du groupe de sécurité pour le port RDP
### Création du groupe de sécurité pour les ports HTTP et HTTPS
Voir ce tutoriel pour l'explication des commandes :
- [🛡️ Les groupes de sécurité *Comprendre et utiliser le firewall et ses règles en CLI*](/Cloud/IPC/Security-Groups#cli)
{.links-list}
```bash
openstack security group create --description "RDP (3389)" RDP
openstack security group rule create --dst-port 3389 --protocol TCP RDP
openstack security group create --description "HTTP (80) & HTTPS (443)" HTTP-HTTPS
openstack security group rule create --dst-port 80 --protocol TCP HTTP-HTTPS
openstack security group rule create --dst-port 443 --protocol TCP HTTP-HTTPS
```
### Création de l'instance
Voir ce tutoriel pour l'explication des commandes :
@ -392,68 +393,211 @@ Voir ce tutoriel pour l'explication des commandes :
{.links-list}
```bash
openstack server create --image "Ubuntu 20.04 LTS Focal Fossa" --flavor a2-ram4-disk50-perf1 --security-group "PING - SSH" --security-group "RDP" --key-name <KEYPAIR> --network ext-net1 Ubuntu-Desktop
openstack server show Ubuntu-Desktop
openstack server create --image "Debian 11.1 bullseye" --flavor a2-ram4-disk50-perf1 --security-group "PING - SSH" --security-group "HTTP-HTTPS" --key-name <KEYPAIR> --network ext-net1 Docker
openstack server show Docker
```
# Installation
## Connexion à l'instance
Dans un terminal, connectez vous avec :
```bash
ssh ubuntu@<IP_INSTANCE>
ssh debian@<IP_INSTANCE>
```
> ***IP_INSTANCE***
> - Adresse IP de votre instance `Ubuntu-Desktop`
> - Adresse IP de votre instance `Docker`
>
> .
{.is-info}
## Création de l'utilisateur
### Commençons par créer l'utilisateur avec lequel vous allez vous connecter en RDP :
```bash
PASS=$(perl -e 'print crypt("<USER_PASSWORD>", "salt"),"\n"')
sudo useradd -m -p $PASS <USER>
```
> ***USER_PASSWORD***
> - Mot de passe de votre utilisateur
>
> ***USER***
> - Nom de votre utilisateur **en miniscule**
>
> .
{.is-info}
### Et ajoutez cet utilisateur au groupe `sudo`:
```bash
sudo usermod -aG sudo <USER>
```
> ***USER***
> - Nom de votre utilisateur **en miniscule**
>
> .
{.is-info}
## Installation de l'interface graphique
## Installation de Docker
### Mettez à jour le serveur :
```bash
sudo apt update && sudo apt upgrade
```
### Installez `tasksel`et lancez l'installation de gnome :
### Installez les sources de `Docker` :
```bash
sudo apt install -y tasksel
sudo tasksel install ubuntu-desktop
apt install -y curl apt-transport-https ca-certificates gnupg2 software-properties-common apache2-utils
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg | apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") $(lsb_release -cs) stable"
apt-get update
```
## Installation de `xrdp`
### Il ne vous reste plus qu'à installer `xrdp` et redémarrer le server :
### Installez `Docker` :
```bash
sudo apt install xrdp
sudo reboot
apt-get -y install docker-ce docker-compose
systemctl enable docker
systemctl start docker
```
# Connexion en RDP
## Linux
Connectez vous avec le l'application [**Remmina**](https://remmina.org/)
## MacOS
Connectez vous avec l'application [**Microsoft Remote Desktop**](https://apps.apple.com/us/app/microsoft-remote-desktop/id1295203466?mt=12)
## Windows
Connectez vous avec l'outils de connexion RDP [**MSTSC**](/Microsoft/Windows-7-10/RDP)
## Installation de Traefik
### Créez un dossier `traefik` :
```bash
mkdir -p /apps/traefik
cd /apps/traefik
```
### Créez le premier fichier de configuration `traefik.yml`:
```yaml
api:
dashboard: true
entryPoints:
http:
address: ":80"
https:
address: ":443"
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false
certificatesResolvers:
http:
acme:
email: $EMAIL
storage: acme.json
httpChallenge:
entryPoint: http
providers.file:
filename: "/etc/traefik/dynamic_conf.toml"
watch: true
```
> Changez la variable `EMAIL` par votre adresse mail
{.is-warning}
### Créez le second fichier de configuration `config.yml`:
```yaml
http:
middlewares:
https-redirect:
redirectScheme:
scheme: https
default-headers:
headers:
frameDeny: true
sslRedirect: true
browserXssFilter: true
contentTypeNosniff: true
forceSTSHeader: true
stsIncludeSubdomains: true
stsPreload: true
secured:
chain:
middlewares:
- default-headers
```
### Créez le fichier `acme.json` et configurer ses permissions :
```yaml
touch /apps/traefik/acme.json
chmod 600 /apps/traefik/acme.json
```
### Créez et copiez le mot de passe chiffré pour accéder à l'interface Traefik :
```bash
echo $(htpasswd -nb <USER> <PASSWORD>) | sed -e s/\\$/\\$\\$/g
```
> Changez les variables `USER` et `PASSWORD` par votre utilisateur et son mot de passe
{.is-warning}
> Voici un exemple de retour : `user:$$apr1$$vBPOdKH4$$mYgQp2CFIJcW3XX8wOOZr0`
{.is-info}
### Créez le fichier `docker-compose.yml` pour Traefik :
```yaml
version: '2'
services:
traefik:
image: traefik:latest
container_name: traefik
restart: unless-stopped
security_opt:
- no-new-privileges:true
networks:
- proxy
ports:
- 80:80
- 443:443
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- /apps/traefik/traefik.yml:/traefik.yml:ro
- /apps/traefik/acme.json:/acme.json
- /apps/traefik/config.yml:/config.yml:ro
labels:
- traefik.enable=true
- traefik.http.routers.traefik.entrypoints=http
- traefik.http.routers.traefik.rule=Host("traefik.$NDD")
- traefik.http.middlewares.traefik-auth.basicauth.users=$USERPASS
- traefik.http.middlewares.traefik-https-redirect.redirectscheme.scheme=https
- traefik.http.routers.traefik.middlewares=traefik-https-redirect
- traefik.http.routers.traefik-secure.entrypoints=https
- traefik.http.routers.traefik-secure.rule=Host("traefik.$NDD")
- traefik.http.routers.traefik-secure.middlewares=traefik-auth
- traefik.http.routers.traefik-secure.tls=true
- traefik.http.routers.traefik-secure.tls.certresolver=http
- traefik.http.routers.traefik-secure.service=api@internal
networks:
proxy:
external: true
```
> Changez la variable `USERPASS` par le mot de passe copié précédemment et la variable `NDD` par votre nom de domaine
{.is-warning}
### Créez le réseau `proxy` dans Docker :
```bash
docker network create proxy
```
### Lancez le docker-compose `traefik` :
```bash
docker-compose -f /apps/traefik/docker-compose.yml up -d
```
## Installation de Portainer
### Créez un dossier `portainer` :
```bash
mkdir -p /apps/portainer
cd /apps/portainer
```
### Créez le fichier `docker-compose.yml` pour Portainer :
```yaml
version: '2'
services:
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
restart: unless-stopped
security_opt:
- no-new-privileges:true
environment:
TEMPLATES: https://github.com/PAPAMICA/docker-compose-collection/blob/master/templates-portainer.json
networks:
- proxy
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- /apps/portainer/data:/data
labels:
- traefik.enable=true
- traefik.http.routers.portainer.entrypoints=http
- traefik.http.routers.portainer.rule=Host("portainer.$NDD")
- traefik.http.middlewares.portainer-https-redirect.redirectscheme.scheme=https
- traefik.http.routers.portainer.middlewares=portainer-https-redirect
- traefik.http.routers.portainer-secure.entrypoints=https
- traefik.http.routers.portainer-secure.rule=Host("portainer.$NDD")
- traefik.http.routers.portainer-secure.tls=true
- traefik.http.routers.portainer-secure.tls.certresolver=http
- traefik.http.routers.portainer-secure.service=portainer
- traefik.http.services.portainer.loadbalancer.server.port=9000
- traefik.docker.network=proxy
networks:
proxy:
external: true
```
> Changez la variable `NDD` par votre nom de domaine
{.is-warning}
### Lancez le docker-compose `portainer` :
```bash
docker-compose -f /apps/portainer/docker-compose.yml up -d
```
> L'installation est terminée !
{.is-success}