# Installation de différents conteneur : ## Portainer D’abord, il faut créer un « volume » Docker, vous pouvez le voir comme un partage qui sera monté dans votre conteneur. Si vous ne créez pas ce volume, à chaque redémarrage de votre conteneur toutes les données seront effacées pour revenir à l’état initial. ```shell docker volume create portainer_data ``` Puis simplement créer le conteneur pour Portainer : ```shell docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer:latest ``` Description de la commande : * **-d** : mode detached (un peu similaire à un mode daemon), pour éviter d’avoir les redirections d’entrée sortie de votre conteneur dans votre shell. * **-p 8000:8000 -p 9000:9000** : c’est pour redirection de port, la partie réseau de Docker fonctionne via un réseau local privé (dans 172.16.0.0/12 par défaut) et va mettre en place un NAT avec iptables devant docker pour permettre d’accéder au service depuis l’extérieur. * **–name=portainer** : le nom que vous voulez donner à votre conteneur et qui sera affiché dans l’interface. * **–restart=always** : le comportement que docker doit avoir en cas d’arrêt du conteneur. * **-v portainer_data:/data** : indique où monter le volume qu’on a créé dans le conteneur (et pareil pour la socket docker juste avant pour que portainer communique avec docker). Se rendre sur l'URL : `IP_serveur_docker:9000` ## OpenVPN Créer un volume `docker volume create --name vpn_vpn_data` : Placer les configurations du vpn dans le volume : * *Faire attention à bien renseigner l'adresse IP publique du réseau du serveur VPN* ```shell docker run -v vpn_vpn_data:/etc/openvpn --log-driver=none --rm kylemanna/openvpn ovpn_genconfig -u tcp://IP_PUBLIQUE ``` Ensuite, éxécuter cette commande afin d'initier l'installation du serveur. ```shell docker run -v vpn_vpn_data:/etc/openvpn --log-driver=none --rm -it kylemanna/openvpn ovpn_initpki ``` La sortie ressemble à ça : ```shell init-pki complete; you may now create a CA or requests. Your newly created PKI dir is: /etc/openvpn/pki Using SSL: openssl OpenSSL 1.1.1g 21 Apr 2020 Enter New CA Key Passphrase: Re-Enter New CA Key Passphrase: Generating RSA private key, 2048 bit long modulus (2 primes) ............................................................................+++++ e is 65537 (0x010001) You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Common Name (eg: your user, host, or server name) [Easy-RSA CA]: CA creation complete and you may now import and sign cert requests. Your new CA certificate file for publishing is at: /etc/openvpn/pki/ca.crt Using SSL: openssl OpenSSL 1.1.1g 21 Apr 2020 Generating DH parameters, 2048 bit long safe prime, generator 2 This is going to take a long time ..........................+...........................................++*++*++*++* DH parameters of size 2048 created at /etc/openvpn/pki/dh.pem Using SSL: openssl OpenSSL 1.1.1g 21 Apr 2020 Generating a RSA private key .............................................................................+++++ writing new private key to '/etc/openvpn/pki/easy-rsa-74.AGLNMA/tmp.DLiGfM' ----- Using configuration from /etc/openvpn/pki/easy-rsa-74.AGLNMA/tmp.iMLdjP Enter pass phrase for /etc/openvpn/pki/private/ca.key: Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows commonName :ASN.1 12:'IP_PUBLIQUE' Certificate is to be certified until Apr 26 11:05:30 2025 GMT (825 days) Write out database with 1 new entries Data Base Updated Using SSL: openssl OpenSSL 1.1.1g 21 Apr 2020 Using configuration from /etc/openvpn/pki/easy-rsa-149.laLkoO/tmp.GjEfMM Enter pass phrase for /etc/openvpn/pki/private/ca.key: An updated CRL has been created. CRL file: /etc/openvpn/pki/crl.pem ``` Créer un fichier `docker-compose.yaml` : ```yaml version: '2' services: geekeries_nginx: container_name: vpn hostname: vpn image: kylemanna/openvpn restart: always volumes: - vpn_vpn_data:/etc/openvpn ports: - 1194:1194/tcp cap_add: - NET_ADMIN volumes: vpn_vpn_data: external: true ``` Lancer les services avec la commande `docker-compose up -d`. :warning: Ne surtout pas oublier la redirection de port dans le routeur ou pare-feu vers le port 1194 en TCP de la machine docker. Génerer ensuite les certificats utilisateurs : ```shell docker run -v vpn_vpn_data:/etc/openvpn --log-driver=none --rm -it kylemanna/openvpn easyrsa build-client-full certificat01 ``` Puis la génération du fichier client de connexion (*à récupérer et à mettre sur le poste du client pour se connecter au serveur VPN*). ```shell docker run -v vpn_vpn_data:/etc/openvpn --log-driver=none --rm kylemanna/openvpn ovpn_getclient certificat01 > certificat01.ovpn ``` ## Overseerr Créer un fichier `docker-compose.yaml` : Assurez-vous de remplacer /path/to/appdata/config dans les exemples ci-dessous par un chemin de répertoire hôte valide. Si ce montage de volume n'est pas configuré correctement, vos paramètres/données Overseerr ne seront pas conservés lors de la recréation du conteneur (par exemple, lors de la mise à jour de l'image ou du redémarrage de votre machine). La valeur de la variable d'environnement TZ doit également être définie sur le nom de la base de données TZ de votre fuseau horaire ! (https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) ```yaml --- version: '3' services: overseerr: image: sctx/overseerr:latest container_name: overseerr environment: - LOG_LEVEL=debug - TZ=Europe/Paris - PORT=5055 #optional ports: - 5055:5055 volumes: - /path/to/appdata/config:/app/config restart: always ``` Ensuite, démarrez tous les services définis dans le fichier Compose : ```shell docker-compose up -d ``` ## Tautulli Créer un fichier `docker-compose.yaml` : ```yaml --- version: "2.1" services: tautulli: image: lscr.io/linuxserver/tautulli:latest container_name: tautulli environment: - PUID=1000 - PGID=1000 - TZ=Europe/Paris volumes: - tautulli:/config ports: - 8181:8181 restart: always volumes: tautulli: ``` Lancer les services avec la commande `docker-compose up -d`. ## Jackett Créer un fichier `docker-compose.yaml` : ```yaml --- version: "2.1" services: jackett: image: lscr.io/linuxserver/jackett:latest container_name: jackett environment: - PUID=1000 - PGID=1000 - TZ=Europe/Paris - AUTO_UPDATE=true #optional volumes: - jackett:/config - jackett:/downloads ports: - 9117:9117 restart: always volumes: jackett: ``` Lancer les services avec la commande `docker-compose up -d`. ## Radarr Créer un fichier `docker-compose.yaml` : ```yaml --- version: "2.1" services: tautulli: image: lscr.io/linuxserver/tautulli:latest container_name: tautulli environment: - PUID=1000 - PGID=1000 - TZ=Europe/Paris volumes: - tautulli:/config ports: - 8181:8181 restart: always volumes: tautulli: ``` Lancer les services avec la commande `docker-compose up -d`. ## Reverse proxy avec Nginx Créer un fichier `docker-compose.yaml` : ```yaml version: '3.7' services: reverse-proxy: image: nginx volumes: - ./nginx.conf:/etc/nginx/nginx.conf ports: - 80:80 whoami: image: containous/whoami container_name: whoami ``` Et un fichier de configuration pour la redirection des URL `nginx.conf` : ```yam events { } http { server { listen 80; server_name overseerr.pierreds.fr; location / { proxy_pass http://192.168.0.33:5055; } } server { listen 80; server_name plex.pierreds.fr; location / { proxy_pass http://192.168.0.10:32400; } } } ``` Lancer les services avec la commande `docker-compose up -d`.