# 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`.