J'ai des erreurs sur mon fichier docker-compose.yml... J'ai pourtant vérifié toutes les tabulations et l'indentation, sans succès. Je verrais ça plus en détail demain et au besoin je retaperai tout le fichier à la main au lieu de le copier directement depuis notepad++ sous windows.

root@scw-1e49a4:~/docker-compose# docker-compose up -d
ERROR: yaml.scanner.ScannerError: while scanning for the next token
found character '\t' that cannot start any token
  in "./docker-compose.yml", line 48, column 31

L'idée au final étant de ne créer qu'un seul docker-compose dans lequel on mettra tout. Je te poste un début avec koel, histoire que tu essaies, et je continue pour la suite 🙂

version: '2'

services:

nginx-proxy:
restart: always
image: jwilder/nginx-proxy
ports:
  - "80:80"
  - "443:443"
volumes:
  - /srv/docker/nginx/certs:/etc/nginx/certs:ro
  - /etc/nginx/vhost.d
  - /usr/share/nginx/html
  - /var/run/docker.sock:/tmp/docker.sock:ro

nginx-proxy-companion:
image: jrcs/letsencrypt-nginx-proxy-companion
volumes:
   - /srv/docker/nginx/certs:/etc/nginx/certs:rw
   - /var/run/docker.sock:/var/run/docker.sock
volumes_from:
   - nginx-proxy

  
koel:
container_name: koel
image: etopian/docker-koel
depends_on:
    - mariadb
ports:
    - "9876:80"
environment:
    - VIRTUAL_HOST=koel.domain.ldt
    - LETSENCRYPT_HOST=koel.domain.ldt
    - LETSENCRYPT_EMAIL=XXXXX@gmail.com
    - DB_HOST=mariadb
    - DB_DATABASE=forge
    - DB_USERNAME=root
    - DB_PASSWORD=XXXXXX
    - ADMIN_EMAIL=koel@example.com
    - ADMIN_NAME=admin
    - ADMIN_PASSWORD=admin
    - APP_DEBUG=true
    - AP_ENV=production
volumes:
   - /mnt/music/:/DATA/music/:ro

mariadb:
 image: mariadb:10.1
 container_name: mariadb
 environment:
   - MYSQL_ROOT_PASSWORD=XXXXXX
   - MYSQL_PASSWORD=XXXXXX
   - MYSQL_DATABASE=forge
 volumes:
   - /mnt/docker/mysql/db:/var/lib/mysql

Une fois les containers lancés tu tapes la commande suivante

docker exec koel su nginx -c "cd /DATA/htdocs && php artisan init"

Tu n'as plus qu'à pointer sur ton sous domaine qui en plus sera en https

Remplace par tes mots de passe, ton sous domaine etc.. pense à recaler le docker-compose au niveau tabulation

Ok, je teste ça ce soir. J'ai essayé d'installer tous les services individuellement, ça marche. J'ai des problèmes seulement quand je commence à utiliser deux services et qu'il y en a un sur le port 80 et l'autre sur le 443...

Merci beaucoup, je te tiens au courant 🙂

J'ai une erreur avec ton docker-compose.

ERROR: client and server don't have same version (client : 1.22, server: 1.18)

Après avoir consulté les docs de docker-compose, il faut utiliser la variable d'environnement :

COMPOSE_API_VERSION=auto

D'après le site (http://stackoverflow.com/questions/29377853/how-to-use-environment-variables-in-docker-compose), il faut créer un troisième fichier template.yml mais ça ne marche pas...

J'ai résolu mon problème en désinstallant docker et en le réinstallant avec la commande :

curl -fsSL https://get.docker.com/ | sh

Tout marche bien désormais, si ce n'est que Koel est en http et pas en https.

Vérifie dans ce dossier si tes clés sont bien présentes

/srv/docker/nginx/certs

Par ailleurs as tu un service qui exploite deja le port 443 ? Ce qui pourrait peu etre expliquer pourquoi tu n'es pas en https

Pour cosy tu rajoutes ça dans le docker-compose

cozy:
container_name: cozy
image: cozy/full
environment:
    - VIRTUAL_HOST=site.domaine.com
    - LETSENCRYPT_HOST=site.domaine.com
    - LETSENCRYPT_EMAIL=XXXXX@gmail.com

J'ai maintenant une erreur PHP sur le sous domaine koel avec le nouveau docker-compose .

RuntimeException in compiled.php line 7020: No supported encrypter found. The cipher and / or key length are invalid.

in compiled.php line 7020
at EncryptionServiceProvider->Illuminate\Encryption\{closure}(object(Application), array()) in compiled.php line 1284
at Container->build(object(Closure), array()) in compiled.php line 1237
at Container->make('encrypter', array()) in compiled.php line 1775
at Application->make('Illuminate\Contracts\Encryption\Encrypter') in compiled.php line 1329
at Container->resolveClass(object(ReflectionParameter)) in compiled.php line 1313
at Container->getDependencies(array(object(ReflectionParameter)), array()) in compiled.php line 1299
at Container->build('App\Http\Middleware\EncryptCookies', array()) in compiled.php line 1237
at Container->make('App\Http\Middleware\EncryptCookies', array()) in compiled.php line 1775
at Application->make('App\Http\Middleware\EncryptCookies') in compiled.php line 9577
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in compiled.php line 2983
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in compiled.php line 9577
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in compiled.php line 9567
at Pipeline->then(object(Closure)) in compiled.php line 2249
at Kernel->sendRequestThroughRouter(object(Request)) in compiled.php line 2232
at Kernel->handle(object(Request)) in index.php line 53

Et après avoir fait la MaJ Cozy, j'ai une page 502 :

502 Bad Gateway nginx/1.10.1

C'est parce que tu as oublié de taper la ligne de commande

docker exec koel su nginx -c "cd /DATA/htdocs && php artisan init"

    laster13 Effectivement ça marche. Par contre, les maj de Cozy m'ont fait planter mon docker...

    J'ai aussi réfléchi à un détail important. N'est-il pas intéressant d'héberger mon site chez un hébergeur (hébergeur gratuit type hostinger) et de faire pointer mon nom de domaine dessus ? Cela me permet d'éviter qu'on puisse remonter sur mon VPS et surtout cela économise de la place. Le seul soucis est l'impossibilité d'avoir un site en https...

      Glodi J'ai aussi réfléchi à un détail important. N'est-il pas intéressant d'héberger mon site chez un hébergeur (hébergeur gratuit type hostinger) et de faire pointer mon nom de domaine dessus ? Cela me permet d'éviter qu'on puisse remonter sur mon VPS et surtout cela économise de la place. Le seul soucis est l'impossibilité d'avoir un site en https...

      Le miens est également sur un VPS, la bande passante est bonne et il ne prend pas de place. Pense à le sécuriser avec fail2ban, portsentry, et interdit l'acces root dans le fichier sshd_config ainsi que le port.
      https://mondedie.fr/d/5318-Tuto-Securisation-Logs-V-3-nginx

      Je complète le docker-compose en considérant que tu as un site WordPress qui sera donc sur le domaine principal.
      Du coup la base de donnée de WordPress se crée toute seule. Au final que deux bases de données, une pour koel et l'autre pour WordPress. Les autres services n'en ont pas besoin.

      codiad:
       container_name: codiad
       image: wernight/codiad
       environment:
          - VIRTUAL_HOST=codiad.domaine.com
          - LETSENCRYPT_HOST=codiad.domaine.com
          - LETSENCRYPT_EMAIL=xxxxx@gmail.com
      
      wordpress:
      image: wordpress
      depends_on:
         - mariadb
      environment:
         - VIRTUAL_HOST=domaine.com
         - LETSENCRYPT_HOST=domaine.com
         - LETSENCRYPT_EMAIL=xxxxx@gmail.com
         - WORDPRESS_DB_HOST=mariadb
         - WORDPRESS_DB_PASSWORD=xxxxx
         - WORDPRESS_DB_USER=root
         - WORDPRESS_DB_NAME=wordpress
         - MYSQL_ROOT_PASSWORD=xxxxxxx
         - MYSQL_PASSWORD=xxxxxxx

      Effectivement cosy semble planter à la mise à jour .. je vais jeter un œil, quelques soucis aussi avec jitsi mais bon on avance 🙂

      Salut,

      Si tu veux, j'ai créé une image docker de reverse proxy (nginx) qui auto-génère la configuration, ainsi que les certificats ssl avec letsencrypt.

      Plus d'information ici

      Pour faire simple, tout ce joue avec les labels, voici un exemple :

      version: '2'
      
      networks:
        default:
          driver: bridge
      
      services:
        reverse:
          image: xataz/nginx:1.11
          container_name: reverse
          ports:
            - "80:8080"
            - "443:8443"
          environment:
            - EMAIL=contact@site1.fr 
            - UID=1000
            - GID=1000
          volumes:
            - /srv/docker/nginx/ssl:/nginx/ssl
            - /srv/docker/nginx/log:/nginx/log
          depends_on:
            - codiad
            - cozy
            - koel
            - jitsi
      
        codiad:
          blablabla
          blablabla
          labels:
            - reverse.backend.port=1490
            - reverse.frontend.domain=sub1.site1.fr 
            - reverse.frontend.ssl=true
      
        cozy:
          blablabla
          blablabla
          labels:
            - reverse.backend.port=734
            - reverse.frontend.domain=sub2.site1.fr 
            - reverse.frontend.ssl=true
      
        koel:
          blablabla
          blablabla
          labels:
            - reverse.backend.port=1816
            - reverse.frontend.domain=sub3.site1.fr 
            - reverse.frontend.ssl=true
      
        jitsi:
          blablabla
          blablabla
          labels:
            - reverse.backend.port=2000
            - reverse.frontend.domain=sub4.site1.fr 
            - reverse.frontend.ssl=true

      Et voila ça marche ^^ (enfin normalement)

        Mon site n'utilise pas wordpress. C'est un site statique en HTML, CSS, javascript et PHP. Effectivement, j'ai des erreurs pour l'installation de jitsi.

        xataz Est-ce que ça change vraiment par rapport à la conf précédente ?

        Pour jitsi, j'ai essayé le bloc suivant :

        videobridge:
          image: mdlavin/jitsi
          environment:
            JITSI_SECRET=mdp
            JITSI_DOMAIN=jitsi.domaine.com
            JITSI_HOST=jitsi.domaine.com
            LETSENCRYPT_HOST=jitsi.domaine.com
            LETSENCRYPT_EMAIL=xxxxx@gmail.com

        Rien ne s'affiche, et le docker ne démarre pas... Du coup, j'ai essayé d'installer son rival, Big Blue Button avec le bloc :

        bbb:
          build: .
          ports:
           - "80:80"
          expose:
          #- "80"
          - "9123:9123"
          - "1935:1935"
          environment:
              SERVER_NAME=bbb.domaine.com
              SERVER_SALT=5ca422de042242086336aa041f26d79e
              MOBILE_SALT=03b07
              VIRTUAL_HOST=bbb.domaine.com
               BBB_INSTALL_DEMOS: "yes"
               LETSENCRYPT_HOST=bbb.domaine.com
               LETSENCRYPT_EMAIL=xxxxx@gmail.com

        Mais à nouveau, rien ne semble démarrer... Je n'ai pas encore testé la solution de xataz

        4 jours plus tard

        Je me suis aperçu que nginx n'acceptait pas les fichiers de plus de 1Mb en upload. Il faut modifier la variable upload_max_filesize dans php.ini et client_max_body_size dans la conf de nginx. Comment je fais ça ? Il faut rentrer dans le docker cozy ? Quelqu'un a du nouveau sur Jitsi ou BBB ?

        Pour mon site, j'ai rajouté :

        php:
            build: .
            image: floatapp/docker-php-apache:5.6-1.0
            ports:
             - "80:80"
            volumes:
             - ./apache2/sites-enabled:/etc/apache2/sites-enabled
             - ./sites:/var/www/html
             - LETSENCRYPT_HOST=domaine.com
             - LETSENCRYPT_EMAIL=xxxxx@gmail.com

        Il n'y a pas d'erreurs ?

        Répondre…