configuration NGinx

Bonjour à tous,

Je n’arrive pas à m’en sortir de la configuration de mon auto-hébergement.

Voici ma configuration:
J’ai un nom de domaine chez OVH NDD.ovh

Dans cette zone DNS, j’ai créé les enregistrements suivants:
Type A nextcloud.NDD.ovh
Type A piwigo.NDD.ovh
Type A cosy.NDD.ovh
Type CNAME home.cozy.NDD.ovh
Type CNAME settings.cosy.NDD.ovh

Déjà là je suis pas sûr d’avoir fait comme il faut :thinking::thinking:

Sur mon synology, j’ai installé mes dockers nextcloud et piwigo et redirigé par le biais du reverse interne du syno les flux entrant en fonction de l’URL ca marche super bien. :smiley:

Afin de déployer cozy, j’ai installé un serveur debian 10 dans une VM hébergée par mon NAS Synology.

J’ai généré dans mon syno le certificat let’s encrypt pour l’ensemble des URLs.

Après plusieurs essais, je fais appelle à vos lumières.

Donc j’ai installé les différentes couches et créé ma stack à l’aide la commande:

‘’’
cozy-stack instances add --passphrase famille --apps drive,photos,settings,home,store cosy.xxxx.yyy.fr
‘’’

J’ai ajouté le fichier de configuration suivant dans le nginx de la machine cosy:
/etc/nginx/sites-available/cozy.conf

‘’’
server {
listen 80;
server_name *.cozy.backupfamilleblav.ovh 192.168.8.x 192.168.0.z
add_header Strict-Transport-Security “max-age=31536000; includeSubDomains; preload;”;
client_max_body_size 1g;

location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
‘’’

En réalisant cette configuration, j’ai le message d’erreur de certificat mais j’arrive à la page de connexion du site cosy en revanche, dès que je tente d’ouvrir la session, j’ai une erreur car home.cosy.NDD.ovh n’est pas redirigé par le reverse syno.

Donc dans mes questions :
Dois créer une régle par entrée DNS?
Comment dois-je configurer le serveur de ma vm pour qu’il accepte les connexions http ( si c’est possible.) de façon a utiliser le certificat géré par le NAS comme je le fait pour mes container docker?

Je vous remercie pour votre aide. Cela fait un bon moment que je fouille sans trouver. En revanche, j’ai trouvé des post parlant de tentative de mise en place sans savoir si elles ont été au bout.

Si j’y parvenais, je pourrais proposer un TUTO de configuration pour la communauté.

Merci pour votre aide

Oui, certainement.

HTTP n’est pas utilisable pour cozy-stack. Il faut nécessairement du HTTPS.
Il faut donc certainement délégué au NAS la gestion des certificats, mais ça risque d’être compliqué vu qu’il faudra un vhost Synology par cozy multiplié par le nombre d’applications installés.
Dans ce cas précis, je conseillerais plutôt de faire complètement sauter le reverse proxy nginx pour que le Synology serve directement le contenu de la stack, ce nginx ne servant du coup plus à rien.

Merci pour ta réponse rapide.

N’étant vraiment pas fort sur ces aspects peux-tu me dire plus précisément ce que tu entends par:

Quand tu dis cela. tu parles bien de supprimer le nginx de la VM?
Dans ce cas le reverse du syno renverrait vers le 8080 de la VM? si oui je vais pas avoir de pb de ré-écriture?

C’est bien cela?

Pour la partie VHost Synology pas de souci. Je souhaite utiliser l’auto-hébergement que pour le drive et le settings pour utiliser les connecteurs.

Pour les autre applications, j’ai un compte depuis longtemps sur le cloud.

Oui c’est ça. Faire directement pointer le Syno sur le cozy-stack.

Merci pour cette info.

Donc ce que j’ai fait c’est d’arrêter nginx sur la VM.
J’ai modifié la conf du VHost Syno pour qu’il pointe sur ipvm:8080.

A l’aide du fichier https://github.com/cozy/cozy-coclyco/blob/master/cozy/coclyco/nginx.conf

J’ai modifier le Vhost pour qu"il prenne les prérogatives du nginx.conf
Upgrade $http_upgrade;
Connection $connection_upgrade;
Host $host;
X-Forwarded-For $remote_addr;

quand je me connecte sur https://cosy.NDD.ovh Syno me dit ne pas trouver la page.

Quand je fais un curl sur la vm directement j’obtiens:

root@cozy:/etc/cozy# curl -v http://127.0.0.1:8080
* Expire in 0 ms for 6 (transfer 0x55eeea0bef50)
*   Trying 127.0.0.1...
* TCP_NODELAY set
* Expire in 200 ms for 4 (transfer 0x55eeea0bef50)
* Connected to 127.0.0.1 (127.0.0.1) port 8080 (#0)
> GET / HTTP/1.1
> Host: 127.0.0.1:8080
> User-Agent: curl/7.64.0
> Accept: */*
>
< HTTP/1.1 404 Not Found
< Content-Security-Policy: default-src 'self';img-src data: blob: 'self';frame-ancestors 'none';
< Content-Type: text/plain; charset=UTF-8
< Strict-Transport-Security: max-age=31536000; includeSubDomains
< X-Content-Type-Options: nosniff
< Date: Mon, 20 Apr 2020 15:33:09 GMT
< Content-Length: 18
<
* Connection #0 to host 127.0.0.1 left intact

Comme tu as pu remarquer je suis pas très calé mais 404 c’est pas bon non :unamused:

Comment savoir si la stack fonctionne bien?

Ça veut dire que la stack fonctionne :rofl:
Il faut un Host correct pour qu’elle retourne autre chose que 404, mais là a priori ça répond correctement.

Merci j’attends donc que le support de syno traite ma demande de configuration est vous direz si cela fonctionne.

Merci aeris pour ta patience

Bonjour à tous,

j’ai pas lâché l’affaire. :grin:

J’ai obtenu un retour de Syno.
Donc maintenant, je tente la politique des petits pas :thinking:

j’ai relancé le serveur nginx de ma vm hébergeant cozy avec une configuration minimaliste:

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /var/www/html;
        index index.html index.htm index.nginx-debian.html;

        server_name _;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }
}

server {
       listen 8081;
       server_name cosy.NDD.ovh *.cosy.NDD.ovh;

       location / {
           proxy_pass http://localhost:8080;
           proxy_set_header Host $host;
       }
}

J’ai recréé mon Vhost cosy.NDD.ovh sur le syno avec la conf suivante:

 https en entrée
 vers ip vm:8081 http en sortie

J’ai par ailleurs mis en debug les logs NGINX de la VM pour voir ce qui arrivait
Depuis un navigateur, je me suis connecté à: https://cosy.NDD.ovh.

J’obtiens la page de connexion, sécurisé par certificat :upside_down_face::crazy_face:

Fort de ce résultat, j’ai pensé que, plutôt que de garder NGinx sur la vm, je pouvais créer mon Vhost home.cosy.NDD.ovh pointant directement sur le 8080 de ma VM et là c’est le drame :sleepy:

Syno me dit qu’il ne trouve pas l’application. Donc j’ai une question:

Lors de la création de la stack, cette dernière n’écouterait-elle pas exclusivement sur 127.0.0.1?

En effet, si je fais pointer home.cosy.NDD.ovh vers le 8081, ça fonctionne.

:roll_eyes:

Merci pour vos retours

Bon ça y est tout fonctionne ou presque :crazy_face:

Voici ce que j’ai fait pour activer mon cozy sur un VM debian hébergé sur mon Nas Synology

Tout d’abord: Installation de cozy depuis la documentation officielle:
Ici

Je me suis juste arrêté à l’installation de cozy

J’ai arrêté nginx sur la VM (inutile puisque Syno prend le relais :grin:

J’ai ensuite créé une instance cozy à l’aide de la commande:

cozy-stack instances add --passphrase "MDP du compte" --apps drive,photos,settings,home,store cosy.NDD.ovh

Ensuite éditer le fichier
vi /etc/cozy/cozy.yml.local

Ce fichier contient l’ip d’écoute de votre instance. j’ai donc changé 127.0.0.1 du port 8080 par l’ip de mon Syno

Sur mon serveur DNS, j’ai créé les entrées suivantes:
cosy.NDD.ovh de type A pointant sur ma box free
drive.cosy.NDD.ovh de type CNAME sur cosy.NDD.ovh

Sur syno:
J’ai créé un certificat let’s encrypt avec:
Nom de domaine: cosy.NDD.ovh
Antre nom de l’objet: drive.cosy.NDD.ovh;sttings.cosy.NDD.ovh…

Enfin j’ai créé les VHOST dans les règles de proxy inversé:
Entrée HTTPS vers HTTP sur le port 8080 de ma VM debian
J’ai juste ajouté en entête personnalisée

Host $host

Voila pour ce que j’ai fait si cela peut en aider d’autre.

Maintenant, j’en viens à ma question au super admin de COZY :smiley:

Pour le moment seul l’application drive ne fonctionne pas faudrait-il un autre paramètre d’entête pour que cela fonctionne. Je me balade partout, j’ai même pu installer un connecteur pour ovh :grin: par contre quand je veux accéder à drive, j’ai

Ce site est inaccessible

Auriez-vous une idée?

J’ai trouvé :grinning:

mon enregistrement ovh ne fonctionnait pas. Je l’ai recréé et tout est rentré dans l’ordre. Tout fonctionne.

A l’attention des Modérateurs:
Cela sera-t-il utile si je rédigeais un TUTO de déploiement sur Syno cela pourrais intéresser d’autre personnes non?

1 Like

Salut,

Ca m’intéresse. :upside_down_face:

Je n’ai pas de NAS Syno mais un simple serveur.
Ta conf Nginx m’intéresse ainsi que les commandes. Je vais essayer d’avancer dessus si j’ai un peu de temps…

Mes quelques notes en vrac:

# voir si autres options
sudo cozy-stack instances add --apps drive,photos,settings cozy.mondomaine.eu

# A modifier
sudo vim /etc/cozy/cozy.yml.local
host: 192.168.1.153
port: 8080

sudo systemctl restart cozy-stack.service

sudo cozy-stack instance show cozy.mondomaine.eu
echo "register_token" | base64 -d | xxd -p

https://cozy.mondomaine.eu/?registerToken=4fe3a4a5e0917b693a95a266ef607123

J’ai du activé manuellement, mais je vais recommencer les manips…

Salut,

Désolé je viens de voir ta question. Les commandes sont les bonnes.
Je n’ai pas le temps matériel de rédiger un tuto pour le moment. Quel est ton problème exactement? j’essaierai de te répondre

Salut,

J’avais moi-même mis de côté l’install. :upside_down_face:

J’ai finalement réussi en reprenant mes notes.
J’ai donc suivi le process d’installation officiel : https://docs.cozy.io/en/tutorials/selfhost-debian/

Je m’arrête avant l’exécution de la commande “cozy-coclyco create”.
Faut juste inverser quelques lignes. Je mets donc mon process complet.

Sur le serveur qui héberge Cozy

  • Fichier à modifier: /etc/cozy/cozy.yml.local

Dans mon cas, il s’agit d’un autre serveur:
host: 192.168.1.153

sudo systemctl restart cozy-stack.service

Le service est bien ouvert sur le réseau:
sudo systemctl status cozy-stack.service

Jul 08 16:52:30 buster cozy-stack[613]: Ready and waiting for connections:
Jul 08 16:52:30 buster cozy-stack[613]: http server major started on “192.168.1.153:8080”
Jul 08 16:52:30 buster cozy-stack[613]: http server admin started on “127.0.0.1:6060”

  • Création de l’instance

J’ai remis le host dans le doute:
sudo cozy-stack instances add --host 192.168.1.153 --public-name toto --apps drive,photos,settings,store,home cozy.mondomaine.eu

Password:***
Instance created with success for domain cozy.mondomaine.eu
Registration token: “2f3860a50d5521d7fe46e5d20d760abc”
Password:***

Si on a oublié/perdu le token, on peut retrouver de cette manière:
sudo cozy-stack instance show cozy.mondomaine.eu
Répérer la ligne avec “register_token” (en BASE64):
echo "abcde+RuXSDXYGBA==" | base64 -d | xxd -p

https://cozy.mondomaine.eu/?registerToken=2f3860a50d5521d7fe46e5d20d760abc

C’est terminé côté Cozy. Si vous avez configuré votre serveur, vous devriez avoir accès. :ok_hand:

Sur mon serveur principal

Serveur qui reçoit les requêtes d’Internet et effectue un proxy_pass vers le serveur hébergeant Cozy.

Configuration Nginx

server {
    listen 80;
    listen [::]:80;
    server_name *.cozy.mondomaine.eu cozy.mondomaine.eu;

    location /.well-known/acme-challenge/ {
        proxy_pass http://192.168.1.153:80;
        include nginxconfig.io/proxy.conf;
    }

    location / {
        return 301 https://$host$request_uri;
    }
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name *.cozy.mondomaine.eu cozy.mondomaine.eu;

    root /var/www/eu.mondomaine.cozy;

    ssl_certificate /etc/letsencrypt/live/cozy.mondomaine.eu/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/cozy.mondomaine.eu/privkey.pem; # managed by Certbot

    # security
    include nginxconfig.io/security.conf;
    include nginxconfig.io/whitelist.conf;

    # logging
    access_log /var/log/nginx/eu.mondomaine.cozy_access.log;
    error_log /var/log/nginx/eu.mondomaine.cozy_error.log warn;

    index index.html index.php;

    # Cozy
    location / {
        proxy_pass http://192.168.1.153:8080;
        include nginxconfig.io/proxy.conf;
    }

    # additional config
    include nginxconfig.io/general.conf;
}

Enjoy. :nerd_face:

Me reste juste à résoudre le soucis de certificats sur le multi-domaine.