naos 2017/11/08 19:02

Nextcloud + HAproxy avec TLS, installé avec Docker-compose

testé sur CentOS7

# yum update

# yum install epel-release

# yum update

# yum install docker python-pip

# pip install docker-compose

# systemctl enable docker.service

# systemctl start docker.service

$ usermod -aG docker $(whoami)

# vim /etc/docker/daemon.json

{
    "live-restore": true,
    "group": "dockerroot"
}

Quittez la session Shell

# mkdir /etc/ssl/DOMAIN.TLD

# cd /etc/ssl/DOMAIN.TLD

# openssl genrsa -out /etc/ssl/DOMAIN.TLD/DOMAIN.TLD.key 2048

# openssl req -new -key /etc/ssl/DOMAIN.TLD/DOMAIN.TLD.key -out /etc/ssl/DOMAIN.TLD/DOMAIN.TLD.csr

# openssl x509 -req -days 365 -in /etc/ssl/DOMAIN.TLD/DOMAIN.TLD.csr -signkey /etc/ssl/DOMAIN.TLD/DOMAIN.TLD.key -out /etc/ssl/DOMAIN.TLD/DOMAIN.TLD.crt

# mkdir /home/USER/docker-haproxy

# cat /etc/ssl/DOMAIN.TLD/DOMAIN.TLD.crt /etc/ssl/DOMAIN.TLD/DOMAIN.TLD.key | tee /home/USER/docker-haproxy/cert.pem

# cd /home/USER/docker-haproxy

# chown USER:USER /home/USER/docker-haproxy/cert.pem

$ vim Dockerfile

FROM alpine
RUN apk update && apk add haproxy
 
ADD haproxy.cfg /etc/haproxy/
ADD cert.pem /etc/haproxy/cert.pem
 
ENTRYPOINT ["haproxy"]
CMD ["-d", "-f", "/etc/haproxy/haproxy.cfg"]

$ vim haproxy.cfg

global
 
defaults
 mode http
 timeout connect 5000ms
 
 timeout client 50000ms
 timeout server 50000ms
 
backend legacy
 server legacy_server nextcloud:80
 
backend TLS
 redirect scheme https if !{ ssl_fc }
 server TLS_server nextcloud:80
 
frontend app
 bind *:80
 default_backend legacy
 
frontend appTLS
 bind *:443 ssl crt /etc/haproxy/cert.pem
 default_backend TLS

$ mkdir /home/USER/docker_infra_test

$ cd /home/USER/docker_infra_test

$ vim docker-compose.yml

version: '2'
volumes:
  mariadb:
  nextcloud_data:
  nextcloud_config:
  haproxy:
 
services:
  load_balancer:
    build:
      context: /home/USER/docker-haproxy
    image: haproxy
    volumes:
      - haproxy:/etc/haproxy
    ports:
      - "80:80"
      - "443:443"
    links:
      - nextcloud
  mariadb:
    image: mariadb
    volumes:
      - mariadb:/data
    environment: 
     - MYSQL_ROOT_PASSWORD=VOTRE_MOT_DE_PASSE
     - MYSQL_RANDOM_ROOT_PASSWORD=no
     - MYSQL_ALLOW_EMPTY_PASSWORD=no
     - MYSQL_DATABASE=nextcloud
     - MYSQL_USER=admin
     - MYSQL_PASSWORD=VOTRE_MOT_DE_PASSE
  nextcloud:
    volumes:
      - nextcloud_config:/config
      - nextcloud_data:/data
    image: nextcloud
    links:
      - mariadb:mysql
    ports:
     - "8001:80"

Vous pouvez ensuite vous connecter sur https://VOTRE_IP

N'oubliez pas de remplacer “localhost” par “mysql”.


COMMANDES UTILES

Afficher les logs d'un conteneur:

$ docker logs NOM_CONTENEUR

Démarrer une image:

$ docker run NOM_IMAGE

Afficher la liste des images déjà téléchargées:

$ docker images

Supprimer une image:

$ docker rmi No_IMAGE

Démarrer un conteneur:

$ docker start NOM_CONTENEUR

Créer un conteneur:

$ docker create

Supprimer un conteneur:

$ docker rm -f No_CONTENEUR

Afficher les paramètres d'un conteneur:

$ docker inspect CONTAINER

Créer un nouveau volume:

$ docker volume create VOLUME

Supprimer toutes les images:

$ docker rmi $(docker images|awk '{print $3}')

Supprimer une image:

$ docker rmi IMAGE

Afficher la liste des réseaux:

$ docker network ls

Rentrer dans un conteneur:

$ docker exec -it 4023ecc44691 ash
  • nextcloud_tls_haproxy_docker-compose.txt
  • Dernière modification: 2017/11/08 19:39
  • par naos