07- Installation wordpress

1- On créé un répertoire /home/user/wordpress et on se place dedans

mkdir /home/user/wordpress
cd /home/user/wordpress

2- On créé le docker-compose.yml

nano docker-compose.yml

3- On y insère les lignes suivantes

version: '3.3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "801:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:

En modifiant les user/pass

4- On lance le conteneur

docker-compose up -d

5- On créé le vhost

5-1 On créé le fichier de config du vhost

sudo nano /etc/nginx/sites-available/wordpress

5-2 On y insère les lignes suivantes

server {
    listen                     80;
    server_name                domaine.com;
    client_max_body_size       200M;
    location / {
             proxy_pass        http://127.0.0.1:801;
             proxy_redirect    off;
             proxy_set_header  Host               $host;
             proxy_set_header  X-Forwarded-Server $host;
             proxy_set_header  X-Real-IP          $remote_addr;
             proxy_set_header  X-Forwarded-For    $proxy_add_x_forwarded_for;
             proxy_set_header  X-Forwarded-Proto  http;
                }
        }

5-3 On l’active

sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/wordpress

5-4 On redémarre nginx

sudo service nginx reload

Le site est maintenant accessible sur http://domaine.com

06- Installation du webmail rainloop

1- On créé un repertoire /home/user/webmail et on se place dedans

mkdir /home/user/webmail
cd /home/user/webmail

2- On créé le docker-compose.yml

rainloop:
  image: jprjr/rainloop
  environment:
    NGINX: 1
  ports:
    - 800:80
  volumes:
    - "./data/rainloop:/var/lib/rainloop/data"

3- On lance le conteneur

docker-compose up -d

4- On accède à l’interface d’administration du webmail

L’interface d’admin est disponible sur http://domaine.com:800/?admin

Login : admin / password : 12345

5- Création du VHOST

5-1 Création du fichier de vhost

sudo nano /etc/nginx/sites-available/mail

5-2 on colle les lignes suivantes en changeant le nom de domaine

server {
    listen                     80;
    server_name                mail.domaine.com;
    client_max_body_size       200M;
    location / {
             proxy_pass        http://127.0.0.1:800;
             proxy_redirect    off;
             proxy_set_header  Host               $host;
             proxy_set_header  X-Forwarded-Server $host;
             proxy_set_header  X-Real-IP          $remote_addr;
             proxy_set_header  X-Forwarded-For    $proxy_add_x_forwarded_for;
             proxy_set_header  X-Forwarded-Proto  http;
                }
        }

 

5-3 On active le VHOST

sudo ln -s /etc/nginx/sites-available/mail /etc/nginx/sites-enabled/mail

5-4 On redémarre nginx

sudo service nginx reload

Le webmail est maintenant accessible sur http://mail.domaine.com

L’interface d’administration est maintenant accessible sur http://mail.domaine.com/?admin

05 – installation d’un serveur de mail

1- On créé un repertoire /home/user/mail_server et on se place dedans

mkdir /home/user/mail_server
cd /home/user/mail_server

2- On télécharge les sources du serveur

curl -o setup.sh https://raw.githubusercontent.com/tomav/docker-mailserver/master/setup.sh; chmod a+x ./setup.sh
curl -o docker-compose.yml https://raw.githubusercontent.com/tomav/docker-mailserver/master/docker-compose.yml.dist
curl -o .env https://raw.githubusercontent.com/tomav/docker-mailserver/master/.env.dist

03- On édite le .env pour y mettre les infos du domaine

04- On démarre le conteneur

docker-compose up -d mail

05- On créé une adresse mail

./setup.sh email add <user@domain> [<password>]

06- On génère le DKIM

./setup.sh config dkim

07- On redémarre le conteneur

docker-compose down
docker-compose up -d mail

 

04- Configuration initiale de Nginx

1- On commence par vérifier le nombre de cœurs de notre serveur

grep processor /proc/cpuinfo | wc -l

2- On ajuste le nginx.conf en fonction du nombre de cœurs, et on masque notre version du serveur web

user www-data;
worker_processes 8;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
 
events {
    worker_connections 768;
    # multi_accept on;                                                                                                                                                                                                                   
}
 
http {
 
    ##                                                                                                                                                                                                                                   
    # Basic Settings                                                                                                                                                                                                                     
    ##                                                                                                                                                                                                                                   
 
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    server_tokens off;

3- On redémarre nginx

sudo systemctl reload nginx.service

 

Introduction

Je viens de réinstaller complètement le serveur. L’occasion pour moi de créer des nouveaux tutoriels, les anciens étant devenus obsolètes.

Auparavant, j’étais sur un proxmox avec des VM. Ne disposant que d’une IP publique, des règles iptables sur l’host transféraient tout sur une vm Pfsense qui redirigait vers la bonne vm. J’ai testé la même chose avec un reverse proxy nginx sans être vraiment convaincu.

Finalement aujourd’hui, j’ai installé un ubuntu-server 18.04 avec un nginx comme reverse proxy et tous mes services sont sous docker. Ce sera l’explication de mes premiers tutoriels.

02 – Installation de base

1- Dans un premier temps, nous avons besoin de curl et de software-properties-common :

sudo apt install -y curl software-properties-common

 

2- Pour le reverse proxy nous aurons besoin de nginx

sudo apt-get -y install nginx

 

3 – On passe à l’installation de docker

Il faut d’abord ajouter le depot à notre source.list

  • on ajoute la clé
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  • on peut maintenant ajouter le dépot
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  • on met à jour la liste des paquets
sudo apt update
  • et on installe docker-ce
sudo apt install -y docker-ce

 

4 – On installe ensuite docker-compose

sudo curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

en vérifiant au préalable le numéro de la dernière version (ici 1.23.1)

  • On donne les droits à notre utilisateur pour qu’il puisse utiliser docker-compose
sudo usermod -aG docker NOMDUTILISATEUR

en remplaçant « NOMDUTILISATEUR » par votre propre login

  • on donne les droits d’exécution à docker-compose
sudo chmod +x /usr/local/bin/docker-compose

 

01 – Présentation

Dans cette série de tutoriels, nous allons voir comment installer un serveur personnel sous ubuntu-server 18 avec un nginx qui officie comme reverse proxy et tous les services dont nous avons besoin dans des conteneurs docker.

Nous ne traiterons pas de l’installation d’ubuntu-server ni du serveur DNS. Mon installation est réalisée sur un kimsufi bi-xeon avec un nom de domaine pris chez OVH. pour des raisons de facilité, j’ai choisi de gérer les DNS par l’interface d’OVH et non pas sur le serveur.