diff --git a/README.md b/README.md index fdea74a..7cc8234 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,12 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in ## Overview -Create a redirection or a proxy to another path +This application allows to integrate a custom tile in YunoHost's user portal. Typical use cases include: +- **visible 301/302 redirect** : having a "virtual" app tile that's just a redirection to another url or external website +- **invisible redirect / reverse-proxy** : creating an app tile for a local app listening on a specific port, or a Docker container, or an app hosted on another machine + +In technical terms: this app only adds a NGINX configuration snippet with either `redirect` or `proxy_pass` rule, and a YunoHost tile + appropriate SSOwat configuration. + **Shipped version:** 1.0.0~ynh5 @@ -23,55 +28,24 @@ Create a redirection or a proxy to another path ## Disclaimers / important information -**Add a link on your user panel redirecting to another page or app, which can be protected behind your panel for some**. - -It could be an invisible redirect, an external link, another app on your local network, a reverse proxy to an app or a Docker container... Some apps can be even be protected behind your panel (meaning that you will have to log-in to access them). The only limit is your imagination - and NGINX ;). - -This app only adds a NGINX configuration file with `redirect` or `proxy_pass` rule, and a YunoHost tile. Nothing more. - ## Redirect type ### Visible redirect -Visitor's address bar will change. Helpfull to add a user link to another website +The client will be redirected to another url or external website - you-domain.com -> another-domain.net - you-domain.com/foo -> another-domain.net/bar +- `your-domain.com -> another-domain.net` +- `your-domain.com/foo -> another-domain.net/bar` -### Invisible (proxy) redirect +### Invisible redirect (a.k.a "reverse-proxy") -Visitor's address bar will remain the same. Mostly use to serve local webserver for a personnal application. +Visitor's address bar will remain the same. Typically used to integrate into YunoHost a manually-installed app into the portal. - you-domain.com/foo -> http://172.0.0.1:8080/app +- `you-domain.com/foo -> http://172.0.0.1:8080/app` -**IMPORTANT:** the `redirect.conf` file might need to be updated according to your situation! +**IMPORTANT:** you may have to further tweak the `redirect.conf` in the nginx configuration, depending on your needs! -**WARNING:** Many apps do not support being redirected to a different path due to relative links! This means that some apps being hosted for example on http://127.0.0.1:5050/app/ HAVE TO be redirected to http://domain.tld/app/ and NOT http://domain.tld/someotherapp/ - -*Concrete example:* the Odoo Docker container runs on http://127.0.0.1:8069/. You will not be able to redirect it to http://domain.tld/odoo/ ! You have to redirect it to the root, so for example http://odoo.domain.tld/ - -## Public or private redirect - -In case of a private redirect, the app will be available to logged in users only. This could be useful if you want to protect behind the SSO an app from your local network or from the server (e.g., a Docker container or an app that does not have user management or password protection). - -**IMPORTANT:** Make sure that the app you want to protect CANNOT be accessed by its port or another direct link. Otherwise, your app will only be protected in YunoHost but would still be available through its direct link. In the case of a Docker container, the port of the container will have to be local (e.g., -p 127.0.0.1:9000:9000). - -## Case examples - -- **Creating a tile for a Docker container** with a local port (e.g., -p 127.0.0.1:PORT:PORT): proxy redirect to http://127.0.0.1:PORT-OF-THE-CONTAINER/ - -- **Redirecting to an external website**: visible redirect to the URL - -- [CozyCloud behind YunoHost?](https://forum.cozy.io/t/cozy-cloud-sous-yunohost/616/11) - -- **Creating a tile and protecting apps that are difficult to package natively (or for prototyping)** - - -**_Feel free to [share your case examples and customized Nginx files on the forum](https://forum.yunohost.org/t/2182)._** - -## Credits - -Insprired by [scith](https://github.com/scith) work. +**IMPORTANT:** Many apps do not support being redirected to a different path due to relative links! This means that some apps being hosted for example on http://127.0.0.1:5050/app/ MUST be redirected to http://domain.tld/app/ and NOT http://domain.tld/someotherapp/. For example : an Odoo Docker container runs on http://127.0.0.1:8069/. You will not be able to redirect it to http://domain.tld/odoo/ ! You have to redirect it to the root, so for example http://odoo.domain.tld/ ## Documentation and resources diff --git a/README_fr.md b/README_fr.md index 876062f..6d62bc8 100644 --- a/README_fr.md +++ b/README_fr.md @@ -11,7 +11,12 @@ Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour ## Vue d'ensemble -Créer une redirection ou un proxy vers un autre emplacement +Cette application permet d'intégrée une tuile personalisée dans le portail utilisateur de YunoHost. Les cas d'usage typiques sont: +- **redirection 301/302 visible** : avoir une tuile d'app "virtuelle" qui se contente de rediriger vers une autre url ou un site externe +- **redirection invisible / reverse-proxy** : créer une tuile pour une application locale écoutant sur un port précis, ou bien un conteneur Docker, ou encore une app hébergée sur une autre machine + +En terme technique: cette app se contente de rajouter le morceau de configuration NGINX approprié avec soit `redirect` ou `proxy_pass`, et la tuile YunoHost + configuration SSOwat correspondante. + **Version incluse :** 1.0.0~ynh5 @@ -19,55 +24,24 @@ Créer une redirection ou un proxy vers un autre emplacement ## Avertissements / informations importantes -**Ajoutez un lien sur votre panneau d'utilisateur redirigeant vers une autre page ou application, qui peut être protégée derrière votre panneau pour certains**. - -Il peut s'agir d'une redirection invisible, d'un lien externe, d'une autre application sur votre réseau local, d'un reverse proxy vers une application ou un conteneur Docker... Certaines applications peuvent même être protégées derrière votre panneau (ce qui signifie que vous devrez vous connecter- pour y accéder). La seule limite est votre imagination - et NGINX ;). - -Cette application ajoute uniquement un fichier de configuration NGINX avec la règle `redirect` ou `proxy_pass` et une tuile YunoHost. Rien de plus. - -## Type de redirection +## Types de redirection ### Redirection visible -La barre d'adresse du visiteur va changer. Utile pour ajouter un lien utilisateur vers un autre site Web +Le client sera redirigé vers une autre URL ou site externe - votre-domaine.com -> autre-domaine.net - vous-domaine.com/foo -> autre-domaine.net/bar +- `votre-domaine.com -> un-autre-domaine.net` +- `votre-domaine.com/foo -> un-autre-domaine.net/bar` -### Redirection invisible (proxy) +### Redirection invisible (a.k.a "reverse-proxy") -La barre d'adresse du visiteur restera la même. Principalement utilisé pour servir le serveur Web local pour une application personnelle. +L'adresse du client restera inchangé dans le navigateur. Typiquement utilisé pour intéger dans YunoHost une application installée manuellement. - vous-domaine.com/foo -> http://172.0.0.1:8080/app +- `you-domain.com/foo -> http://172.0.0.1:8080/app` -**IMPORTANT :** le fichier `redirect.conf` devra peut-être être mis à jour en fonction de votre situation ! +**IMPORTANT:** il vous faudra peut-être bricoler manuellement `redirect.conf` dans la configuration nginx, en fonction de vos besoins. -**AVERTISSEMENT :** De nombreuses applications ne prennent pas en charge la redirection vers un chemin différent en raison de liens relatifs ! Cela signifie que certaines applications hébergées par exemple sur http://127.0.0.1:5050/app/ DOIVENT être redirigées vers http://domain.tld/app/ et NON vers http://domain.tld/someotherapp/ - -*Exemple concret :* le conteneur Odoo Docker fonctionne sur http://127.0.0.1:8069/. Vous ne pourrez pas le rediriger vers http://domain.tld/odoo/ ! Il faut le rediriger vers la racine, donc par exemple http://odoo.domain.tld/ - -## Redirection publique ou privée - -En cas de redirection privée, l'application sera disponible uniquement pour les utilisateurs connectés. Cela peut être utile si vous souhaitez protéger derrière le SSO une application de votre réseau local ou du serveur (par exemple, un conteneur Docker ou une application qui n'a pas de gestion des utilisateurs ou de protection par mot de passe). - -**IMPORTANT :** Assurez-vous que l'application que vous souhaitez protéger NE PEUT PAS être accessible via son port ou un autre lien direct. Sinon, votre application ne sera protégée que dans YunoHost mais sera toujours disponible via son lien direct. Dans le cas d'un conteneur Docker, le port du conteneur devra être local (par exemple, -p 127.0.0.1:9000:9000). - -## Exemples de cas - -- **Création d'une tuile pour un conteneur Docker** avec un port local (par exemple, -p 127.0.0.1:PORT:PORT) : redirection proxy vers http://127.0.0.1:PORT-OF-THE-CONTAINER/ - -- **Redirection vers un site externe** : redirection visible vers l'URL - -- [CozyCloud derrière YunoHost ?](https://forum.cozy.io/t/cozy-cloud-sous-yunohost/616/11) - -- **Créer une vignette et protéger les applications difficiles à packager nativement (ou pour le prototypage)** - - -**_N'hésitez pas à [partager vos exemples de cas et vos fichiers Nginx personnalisés sur le forum](https://forum.yunohost.org/t/2182)._** - -## Crédits - -Inspiré du travail de [scith](https://github.com/scith). +**IMPORTANT:** Certaines apps ne supportent pas d'être redirigées depuis un chemin différent à cause du fonctionnement des liens relatifs ... Cela signifie que par exemple une app hébergée sur `http://127.0.0.1:5050/app/` DOIT être routé sur `http://domaine.tld/app/` et PAS http://domaine.tld/unautrechemin/. Par exemple: un conteneur Docker Odoo tourne sur `http://127.0.0.1:8069/`. Il ne sera pas capable de fonctionné correctement si il est routé sur `http://domaine.tld/odoo/` ! Il faut forcément l'installer à la racine d'un domaine, par exemple `http://odoo.domaine.tld/` ## Documentations et ressources