Installation derrière haproxy + lxd


#1

Bonjour,

J’aimerais tester en auto-hébergement cozycloud sur mon infrastructure maison qui est composée de containers LXD avec un haporxy qui fait le gardien aux portes 80 et 443 et aussi le gérant des gentils certificats Letsencrypt.

J’ai mon beau container Ubuntu 16.04, j’ai fait la majeur partie du tutoriel, hors, pas possible de démarre un cozy-coclyco, qui m’assène un virulent:

urn:acme:error:unauthorized :: The client lacks sufficient authorization :: No registration exists matching provided key

Peut-être est-ce dû à un manque de connaissances de ma part, mais je pense que logiquement letsencrypt ne peut pas atteindre sa cible.

Est-ce possible de créer des instances cozy sans passer par la case letsencrypt et que je puisse gérer moi-même letsencrypt avec mon haproxy?

Merci d’avance et j’espère faire pleins de belles découvertes avec ce joli-cozy.


#2

Bonjour,

Oui, il est tout à fait possible de se passer de Let’s Encrypt, mais alors il ne faut pas passer par cozy-coclyco mais directement par cozy-stack pour la création des instances, et du coup gérer soi-même le vhost nginx associé à l’instance créée.


#3

Pour compléter, voici la documentation pour utiliser cozy-stack en ligne de commande. cozy-stack est à la fois le serveur qui va servir tes instances, à lancer avec cozy-stack serve, et l’outil pour gérer ces instances, les applications, etc. Par exemple, pour créer une instance, tu utiliseras cozy-stack instances add.

Dans la configuration de ton serveur, il faut d’abord que tu choisisses quel modèle tu veux utiliser pour les sous-domaines de tes applications. Pour des raisons de sécurité, chaque application de chaque instance utilise sont propre domaine. Ainsi, si l’adresse principale de ton serveur est fred.chezfred.cloud, l’application photo pourra utiliser photo.fred.chezfred.cloud ou fred-photo.chezfred.cloud. Il faut ensuite que tu obtiennes un certificat Let’s encrypt pour tous les domaines utilisés par ton serveur. Les applications pour lesquelles tu dois déclarer des sous-domaines sont collect, drive, onboarding, photos et settings.

Attention, l’exécution des connecteurs sur un serveur auto-hébergé demande un peu de configuration. Pour bien isoler les connecteurs, ils s’exécutent dans des bacs à sable avec nsjail, et je crois que les script pour créer l’environnement ou exécuter les connecteurs ne fonctionnent pas encore sous Ubuntu. Il faudrait que tu jettes un œil à ces deux scripts et essaie de les faire fonctionner dans ton environnement :

Et j’interpelle @gudbes qui nous aide à documenter tout ce processus pour vérifier que je n’ai pas raconté trop de bêtises :wink:


#4

Alors je ne suis toujours pas un spécialiste de la V3 auto-hébergé mais je bosse dessus et j’espère finir le tuto pour guider les prochains vers la bonne voie (Amen :angel:).
Pour répondre à Clochix, je ne vois pas de bêtises (à ma connaissance) dans tes propos :slight_smile:


#5

Bonjour,

Merci beaucoup pour vos réponses.

J’ai donc bricoler pour faire l’instance:
cozy-stack instances add --apps collect,drive,photos,settings xxxxxxxx.com
taper mot de passe admin
Il me répond qu’il est content et qu’il saute partout de joie!

Mais après…

J’ai donc essayer l’exécution des scripts et là moins bon…

mknod: /usr/share/cozy/chroot/test-dev-null: Operation not permitted
E: Cannot install into target ‘/usr/share/cozy/chroot’ mounted with noexec or nodev

J’ai trouvé sur un autre topic ce problème: ICI et là je bloque, mes connaissances ne sont pas assez important pour résoudre.

Donc j’ai bien la création de l’instance, mais je ne sais pas quel type de configuration nginx je dois créer pour accéder au service.

J’ai pu lire que la doc n’est pas encore faite à ce sujet, mais serait-il possible d’avoir une “bande-annonce” voir même un trailer de quelques instant pour le suspens!

Merci d’avance,


#6

mknod: /usr/share/cozy/chroot/test-dev-null: Operation not permitted
E: Cannot install into target ‘/usr/share/cozy/chroot’ mounted with noexec or nodev

Bonjour,
également devant ce problème.
Ma méconnaissance de lxd me fait défaut.
J’ai rajouté

> kernel.unprivileged_userns_clone=1

Dois-je recréer le conteneur ? Ou rebooter carrément l’isolateur ?
Merci d’avance


#7

J’ai réussi à palier au problème ci dessous :

mknod: /usr/share/cozy/chroot/test-dev-null: Operation not permitted
E: Cannot install into target ‘/usr/share/cozy/chroot’ mounted with noexec or nodev

avec la commande :

lxc config set DOMAIN security.privileged true

Si jamais ça peut aider.
Du coup, installation réussie dans un container LXD avec RVPRX (en prime)
Mais j’ai un problème, lors de la synchronisation de document, ça finit par tourner en boucle et ne jamais me rendre la main.
Il me fait rafraichir la page. Et là j’ai bel et bien les documents.
idem pour une installation de connecteurs.
Pis pour finir, ça parle à quelqu’un ça ?
[27/Feb/2019:22:56:44 +0100] "GET /realtime/ HTTP/1.0" 400 12 "-" "Mozilla/5.0 (Android 9; Mobile; rv:65.0) Gecko/65.0 Firefox/65.0"


#8

Hello @valde,

Bienvenue à bord de ce forum :smile:

Les applications utilisent des websockets pour mettre à jour en temps réel leur affichage lorsque des évènements surviennent sur le serveur. Ce sont ces chaussettes en toile qui utilisent la route /realtime/. Tu as manifestement un souci avec cette route, ce qui explique pourquoi le rafraîchissement automatique des pages ne fonctionne plus. Reste à comprendre quel est le problème.
L’utilisation des websockets nécessite parfois des réglages au niveau de Nginx, pour autoriser les requêtes, gérer les timeouts, etc. Peut-être peux-tu regarder de ce côté.


#9

L’utilisation des websockets nécessite parfois des réglages au niveau de Nginx, pour autoriser les requêtes, gérer les timeouts, etc. Peut-être peux-tu regarder de ce côté.

Le soucis qui se présentait à moi était d’avoir un cozy dans un conteneur LXD, derrière un reverse-proxy. La configuration de deux vhost est périlleuse.
mais c’est possible, je viens de résoudre le problème :

location / {
        proxy_pass http://....;
        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;
    }

Pour le ProxyPass, sur le reverse proxy, il faut renseigner l’adresse du conteneur et sur le conteneur cozy, vers localhost en 8080
Plus évidement tout ce qui va bien sur le vhost du reverse, le ssl tout ça tout ça.
ET, de faire un certificat avec tous les sous domaines.
Là, le 400 pour realtime deviant un code http 101
Si ça peut aider.

Il me reste a résoudre un erreur 404 sur mondomaine/settings/context
Est ce un soucis connu de votre côté ?