Références

1 – Augmentation des limites de PHP via le fichier .htaccess pour WordPress

php_value upload_max_filesize 256M
php_value post_max_size 256M
php_value max_execution_time 300
php_value max_input_time 300

2 – Afficher les ports IP qui sont utilisés sur Ubuntu

sudo lsof -i -P -n | grep LISTEN

3 – Augmenter la taille d’un volume d’une VM Ubuntu

# Étape 01 : Augmenter la taille dans les paramètres de la VM

# Étape 02 : su -a 
 df -h
 cfdisk
 lvdisplay
 pvdisplay
 resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
 pvresize /dev/sda3
 lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
 resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
 df -h

4 – Éditer les fichiers d’une connexion ssh avec VS.Code

# Utiliser vs code pour l'édition de fichiers via sshd
1 - Installer l'extension Remote - SSH de Microsoft
2 - Pour l'édition des fichiers du système,
    - Renseigner un mot de passe sur le compte root : sudo passwd root
    - Ajouter la ligne suivante au fichier /etc/ssh/sshd_config :   
        PermitRootLogin yes
    - recharger la configuration ssh: sudo systemctl reload ssh    
3 - Dans VSCode, F1 : Remote-SSH: Ajouter un nouvel hôte ssh : etudiant@192.168... 
                        et enregistrer dans le fichier user/.ssh/config
4 - Optionnel - F1: Remote-SSH : Ouvrir le fichier config pour renseigner un nom significatif à la connexion.

5 - Connexion - F1: Remote-SSH: Se connecter à l'hôte.
6 - Ouvrir un dossier

5 – Solution .htaccess

ErrorDocument 404 /404.html
ErrorDocument 403 /403.html

<RequireAny>
        Require ip 192.168.2   
</RequireAny>

<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteRule ^ind(.*)$ index.html [L]
</IfModule>
sudo a2enmod rewrite
sudo systemctl restart apache2

6 – Exemple d’un format log apache2 perso

<VirtualHost *:80>
    ServerName site1.abc
    DocumentRoot /var/www/site1.abc/public_html
    LogFormat "Une requete de : %a pour -> %f avec les arguments suivants: %q" perso

    ErrorLog /var/www/site1.abc/journaux/erreurs.log
    CustomLog /var/www/site1.abc/journaux/journal.log perso
</VirtualHost>

7 – Installation de mysql-server

sudo apt-get install mysql-server

$ sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;
exit

8 – Virtualisation imbriquée dans vmware

1 - Désactiver hyper-V
2 - Exécuter dans powershell Admin: bcdedit /set hypervisorlaunchtype off
3 - Dans 'Sécurité Windows: Sécurité des périphériques' désactiver : Intégrité de la mémoire.
4- Redémarrer Windows

Dans la VM:
  - Disque de 200 go
  - Choisir l'interface réseau de type NAT

----
# Activer la virtualisation imbriquée sous virtualbox
VBoxManage modifyvm <VirtualMachineName> --nested-hw-virt on

9 – Accès vSphere

administrator@vsphere.local
Eb3n>~=U0C3H<{d]79@~

root:l*1.59!

10 – Mise en place de NFS

# 1 - Sur le serveur
# Installer le service nfs
sudo apt update
sudo apt install nfs-kernel-server

# Créer un répertoire de partage
sudo mkdir /var/nfs/420-3C3 -p
sudo chown nobody:nogroup /var/nfs/420-3C3
sudo echo "Ici la voix des Mistérons" > /var/nfs/420-3C3/coucou.txt

# Publier le dossier de partage
sudo nano /etc/exports
/var/nfs/420-3C3  *(rw,sync,no_subtree_check,all_squash,anonuid=65534,anongid=65534,insecure)

# Redémarrer le service nfs
sudo systemctl restart nfs-kernel-server
# Ou:
sudo exportfs -a

# Si le pare feu est activé alors ouvrir le port nfs:
sudo ufw allow from client_ip to any port nfs

# -----------------------------------------------------

# 2 - Sur le client
sudo apt install nfs-common
sudo mount -t nfs 35.247.98.108:/var/nfs/420-3C3 /home/user/nfs/

11 – Reverse Proxy avec apache2

11.1 – Hôte virtuel sur le serveur d’entré

<VirtualHost *:80>
    # Fichier de conf pour un site en proxy inversé
    # NOTE: Penser à définir un DNS dans /etc/hosts du serveur d'entré, pour le nom de domaine.
    # Toutes les requêtes pour cet hote virtuel seront transférées vers un autre serveur.
    ServerName notremaison.org

    ErrorLog ${APACHE_LOG_DIR}/error-notremaison.org.log
    CustomLog ${APACHE_LOG_DIR}/access-notremaison.org.log combined

    ProxyPass / http://notremaison.org/
    ProxyPassReverse / http://notremaison.org/
    ProxyRequests Off

</VirtualHost>

<VirtualHost *:443>
    # Fichier de conf pour un site en proxy inversé
    # NOTE: Penser à définir une entrée dans /etc/hosts pour le nom de domaine.
    # Toutes les requêtes pour cet hote virtuel seront transférées vers un autre serveur.
    ServerName notremaison.org

    ErrorLog ${APACHE_LOG_DIR}/error-notremaison.org.log
    CustomLog ${APACHE_LOG_DIR}/access-notremaison.org.log combined

    SSLProxyEngine on
    ProxyPass / https://notremaison.org/
    ProxyPassReverse / https://notremaison.org/
    ProxyRequests Off

</VirtualHost>

11.2 – Hôte virtuel sur le serveur de destination

<VirtualHost *:80>
    ServerName notremaison.org

    DocumentRoot /notremaison
    <Directory /notremaison>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>

    ErrorLog /var/log/apache2/notremaison-erreurs.log
    CustomLog /var/log/apache2/notremaison-journal.log combined
</VirtualHost>

11.3 – Reverse proxy sur nginx

# /etc/nginx/conf.d/default.conf

server {

  listen 80;
  server_name menu.com;

   location / {
     proxy_pass http://192.168.2.51:8200;
   }
}

server {
  listen 443;

  server_name mon-projet.freeddns.org;

   location / {
     proxy_pass https://mon-projet.freeddns.org;
   }
}

12 – traefik

$ docker network create traefik_net
$ touch data/acme.json
$ chmod 600 data/acme.json
$ docker-compose [-f fichier.yml] up -d

docker-compose.yml

version: "3.8"

services:
  traefik:
    image: traefik:latest
    container_name: traefik3
    restart: unless-stopped
#    security_opt:
#      - no-new-privileges:true
    networks:
      - traefik_net
    ports:
      - 80:80
      - 443:443
      - 8080:8080
    environment:      
      TRAEFIK_DASHBOARD_CREDENTIALS: ${TRAEFIK_DASHBOARD_CREDENTIALS}
      GODADDY_API_KEY: ${GODADDY_API_KEY}
      GODADDY_API_SECRET: ${GODADDY_API_SECRET}
    
    env_file: .env

    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./data/traefik.yml:/traefik.yml:ro
      - ./data/acme.json:/acme.json
      - ./data/config.yml:/config.yml:ro
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.traefik.entrypoints=http"
      - "traefik.http.routers.traefik.rule=Host(`traefik-dashboard.notremaison.org`)"
      - "traefik.http.middlewares.traefik-auth.basicauth.users=${TRAEFIK_DASHBOARD_CREDENTIALS}"
      - "traefik.http.middlewares.traefik-https-redirect.redirectscheme.scheme=https"
      - "traefik.http.middlewares.sslheader.headers.customrequestheaders.X-Forwarded-Proto=https"
      - "traefik.http.routers.traefik.middlewares=traefik-https-redirect"
      - "traefik.http.routers.traefik-secure.entrypoints=https"
      - "traefik.http.routers.traefik-secure.rule=Host(`traefik-dashboard.notremaison.org`)"
      - "traefik.http.routers.traefik-secure.middlewares=traefik-auth"
      - "traefik.http.routers.traefik-secure.tls=true"
      - "traefik.http.routers.traefik-secure.tls.certresolver=letsencrypt"
      - "traefik.http.routers.traefik-secure.tls.domains[0].main=notremaison.org"
      - "traefik.http.routers.traefik-secure.tls.domains[0].sans=*.notremaison.org"
      - "traefik.http.routers.traefik-secure.service=api@internal"

networks:
  traefik_net:
    external: true
# data/config.yml
# Note: Il n'est pas requis de redémarrer traefik suite à une modification de ce fichier.
http:
 #region routers 
  routers:
    esxi:
      entryPoints:
        - "https"
      rule: "Host(`esxi.notremaison.org`)"
      middlewares:
        - default-headers
        - https-redirectscheme
      tls: {}
      service: esxi

    menu:
      entryPoints:
        - "https"
      rule: "Host(`menu.notremaison.org`)"
      middlewares:
        - default-headers
        - https-redirectscheme
      tls: {}
      service: menu

    notremaison:
      entryPoints:
        - "https"
      rule: "Host(`notremaison.org`)"
      middlewares:
        - default-headers
        - https-redirectscheme
      tls: {}
      service: notremaison

    pihole:
      entryPoints:
        - "https"
      rule: "Host(`pihole.notremaison.org`)"
      middlewares:
        - default-headers
        - https-redirectscheme
      tls: {}
      service: pihole

#endregion
#region services
  services:
    esxi:
      loadBalancer:
        servers:
          - url: "https://192.168.2.117:443"
        passHostHeader: true

    menu:
      loadBalancer:
        servers:
          - url: "http://192.168.2.51:8200"
        passHostHeader: true

    notremaison:
      loadBalancer:
        servers:
          - url: "http://192.168.2.189:80"
        passHostHeader: true
    # NOTE: La redirection vers https est activé.
    # Par contre, il faut renseigner le protocol (port) d'écoute sur le serveur cible.
    pihole:
      loadBalancer:
        servers:
          - url: "http://192.168.2.51:80"
        passHostHeader: true

#endregion
  middlewares:
    https-redirectscheme:
      redirectScheme:
        scheme: https
        permanent: true
    default-headers:
      headers:
        frameDeny: true
        browserXssFilter: true
        contentTypeNosniff: true
        forceSTSHeader: true
        stsIncludeSubdomains: true
        stsPreload: true
        stsSeconds: 15552000
        customFrameOptionsValue: SAMEORIGIN
        customRequestHeaders:
          X-Forwarded-Proto: https

    default-whitelist:
      ipAllowList:
        sourceRange:
        - "10.0.0.0/8"
        - "192.168.0.0/16"
        - "172.16.0.0/12"

    secured:
      chain:
        middlewares:
        - default-whitelist
        - default-headers
# data/traefik.yml
api:
  dashboard: true
  debug: true
  insecure: true
entryPoints:
  http:
    address: ":80"
    http:
      redirections:
        entryPoint:
          to: https
          scheme: https
  https:
    address: ":443"
serversTransport:
  insecureSkipVerify: true
providers:
  docker:
    endpoint: "unix:///var/run/docker.sock"
    exposedByDefault: false
  file:
    filename: /config.yml
certificatesResolvers:
  letsencrypt:
    acme:
      email: alain.boudreault@me.com
      storage: acme.json
      caServer: https://acme-v02.api.letsencrypt.org/directory # prod (default)
      #caServer: https://acme-staging-v02.api.letsencrypt.org/directory # staging
      dnsChallenge:
        provider: godaddy
        #disablePropagationCheck: true
        delayBeforeCheck: 90s
        resolvers:
          - "1.1.1.1:53"
          - "8.8.8.8:53"
# .env
MY_DOMAIN=notremaison.org
DEFAULT_NETWORK=traefik_net
GODADDY_API_KEY=
GODADDY_API_SECRET=
GODADDY_SEQUENCE_INTERVAL=120
TRAEFIK_DASHBOARD_CREDENTIALS=

13 – Activation de Windows

# Sous powershell:
irm https://get.activated.win | iex