mirror of
https://github.com/YunoHost-Apps/outline_ynh.git
synced 2024-09-03 19:56:12 +02:00
commit
296c5ed717
27 changed files with 585 additions and 801 deletions
29
README.md
29
README.md
|
@ -16,43 +16,22 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
The fastest wiki and knowledge base for growing teams. Beautiful, feature rich, and markdown compatible.
|
Outline is a wiki and knowledge base for growing teams. Beautiful, feature rich, and markdown compatible.
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
- Fully working installation of Outline wiki
|
- Fully working installation of Outline wiki
|
||||||
- Including a Dex server to connect to Yunohost's LDAP userbase using an OIDC auth flow
|
- Including a Dex server to connect to YunoHost's LDAP userbase using an OIDC auth flow
|
||||||
- Using Yunohost's built-in SMTP server for notifications
|
- Using Yunohost's built-in SMTP server for notifications
|
||||||
|
|
||||||
|
|
||||||
**Shipped version:** 0.74.0~ynh1
|
**Shipped version:** 0.75.0~ynh1
|
||||||
|
|
||||||
**Demo:** https://app.getoutline.com/create
|
**Demo:** https://app.getoutline.com/create
|
||||||
|
|
||||||
## Screenshots
|
## Screenshots
|
||||||
|
|
||||||
![Screenshot of Outline](./doc/screenshots/outline_screenshot.png)
|
![Screenshot of Outline](./doc/screenshots/screenshot.png)
|
||||||
|
|
||||||
## Disclaimers / important information
|
|
||||||
|
|
||||||
### Not totally free licence
|
|
||||||
Outline is a softwared licenced under [BUSL 1.1 licence](https://spdx.org/licenses/BUSL-1.1.html).
|
|
||||||
⚠️ That licence **is not totally free**. Please read it very carefully if you have any commercial use in mind.
|
|
||||||
The Outline version shipped with this package (v0.73.1) will be released under Apache-2.0 licence [after August 18th 2027](https://github.com/outline/outline/blob/ebeb201a9f48e2c6b619a0d152e051946849aa10/LICENSE).
|
|
||||||
|
|
||||||
### Known limitations
|
|
||||||
|
|
||||||
1. The app can now run in the CI server and reach level 8. However, it is still very young and not broadly tested. **Please use it with extreme care if it's on a prod server**
|
|
||||||
2. The app requires [Dex app](https://github.com/YunoHost-apps/dex_ynh) to be installed (Dex installation and setup is automatic, though)
|
|
||||||
3. The app is requiring two domains including one fully dedicated (one for Dex, one for Outline)
|
|
||||||
4. ARM architectures are not yet supported (But it should be achievable soon)
|
|
||||||
5. Because it's built from sources, the app requires an important amount of RAM, disk and time to install properly
|
|
||||||
|
|
||||||
|
|
||||||
### How to create an admin user
|
|
||||||
|
|
||||||
The first user to login will automatically be granted admin rights
|
|
||||||
You can then change the user rights by default and/or change the admin user afterwards from the Outline settings page
|
|
||||||
|
|
||||||
## :red_circle: Antifeatures
|
## :red_circle: Antifeatures
|
||||||
|
|
||||||
|
|
36
README_fr.md
36
README_fr.md
|
@ -16,43 +16,21 @@ Si vous n’avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) po
|
||||||
|
|
||||||
## Vue d’ensemble
|
## Vue d’ensemble
|
||||||
|
|
||||||
The fastest wiki and knowledge base for growing teams. Beautiful, feature rich, and markdown compatible.
|
Outile est un wiki et la base de connaissances les plus rapides pour les équipes en pleine croissance. Beau, riche en fonctionnalités et compatible avec les démarques.
|
||||||
|
|
||||||
### Features
|
### Caractéristiques
|
||||||
|
|
||||||
- Fully working installation of Outline wiki
|
- Installation entièrement fonctionnelle du wiki Outline
|
||||||
- Including a Dex server to connect to Yunohost's LDAP userbase using an OIDC auth flow
|
- Y compris un serveur Dex pour se connecter à la base d'utilisateurs LDAP de YunoHost à l'aide d'un flux d'authentification OIDC
|
||||||
- Using Yunohost's built-in SMTP server for notifications
|
- Utilisation du serveur SMTP intégré de Yunohost pour les notifications
|
||||||
|
|
||||||
|
**Version incluse :** 0.75.0~ynh1
|
||||||
**Version incluse :** 0.74.0~ynh1
|
|
||||||
|
|
||||||
**Démo :** https://app.getoutline.com/create
|
**Démo :** https://app.getoutline.com/create
|
||||||
|
|
||||||
## Captures d’écran
|
## Captures d’écran
|
||||||
|
|
||||||
![Capture d’écran de Outline](./doc/screenshots/outline_screenshot.png)
|
![Capture d’écran de Outline](./doc/screenshots/screenshot.png)
|
||||||
|
|
||||||
## Avertissements / informations importantes
|
|
||||||
|
|
||||||
### Not totally free licence
|
|
||||||
Outline is a softwared licenced under [BUSL 1.1 licence](https://spdx.org/licenses/BUSL-1.1.html).
|
|
||||||
⚠️ That licence **is not totally free**. Please read it very carefully if you have any commercial use in mind.
|
|
||||||
The Outline version shipped with this package (v0.73.1) will be released under Apache-2.0 licence [after August 18th 2027](https://github.com/outline/outline/blob/ebeb201a9f48e2c6b619a0d152e051946849aa10/LICENSE).
|
|
||||||
|
|
||||||
### Known limitations
|
|
||||||
|
|
||||||
1. The app can now run in the CI server and reach level 8. However, it is still very young and not broadly tested. **Please use it with extreme care if it's on a prod server**
|
|
||||||
2. The app requires [Dex app](https://github.com/YunoHost-apps/dex_ynh) to be installed (Dex installation and setup is automatic, though)
|
|
||||||
3. The app is requiring two domains including one fully dedicated (one for Dex, one for Outline)
|
|
||||||
4. ARM architectures are not yet supported (But it should be achievable soon)
|
|
||||||
5. Because it's built from sources, the app requires an important amount of RAM, disk and time to install properly
|
|
||||||
|
|
||||||
|
|
||||||
### How to create an admin user
|
|
||||||
|
|
||||||
The first user to login will automatically be granted admin rights
|
|
||||||
You can then change the user rights by default and/or change the admin user afterwards from the Outline settings page
|
|
||||||
|
|
||||||
## :red_circle: Fonctions indésirables
|
## :red_circle: Fonctions indésirables
|
||||||
|
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
;; Test complet
|
|
||||||
; pre-install
|
|
||||||
sudo yunohost domain add dex.domain.tld
|
|
||||||
sudo yunohost domain add minio.domain.tld
|
|
||||||
; Manifest
|
|
||||||
domain="domain.tld"
|
|
||||||
is_public=1
|
|
||||||
language="fr"
|
|
||||||
dex_domain="dex.domain.tld"
|
|
||||||
dex_path="/example"
|
|
||||||
; Checks
|
|
||||||
pkg_linter=1
|
|
||||||
setup_sub_dir=1
|
|
||||||
setup_root=1
|
|
||||||
setup_nourl=0
|
|
||||||
setup_private=1
|
|
||||||
setup_public=1
|
|
||||||
upgrade=1
|
|
||||||
#upgrade=1 from_commit=f56cd7d
|
|
||||||
backup_restore=1
|
|
||||||
multi_instance=0
|
|
||||||
change_url=0
|
|
||||||
;;; Options
|
|
||||||
Email=
|
|
||||||
Notification=none
|
|
||||||
;;; Upgrade options
|
|
||||||
; commit=f56cd7d
|
|
||||||
name=Name and date of the commit.
|
|
||||||
manifest_arg=domain=DOMAIN&path=PATH&admin=USER&language=fr&is_public=1&password=pass&port=666&
|
|
|
@ -10,7 +10,7 @@ UTILS_SECRET=__UTILS_SECRET__
|
||||||
|
|
||||||
# For production point these at your databases, in development the default
|
# For production point these at your databases, in development the default
|
||||||
# should work out of the box.
|
# should work out of the box.
|
||||||
DATABASE_URL=postgres://__DB_NAME__:__SECRET_KEY__@localhost:5432/__DB_NAME__
|
DATABASE_URL=postgres://__DB_NAME__:__DB_PWD__@localhost:5432/__DB_NAME__
|
||||||
DATABASE_URL_TEST=postgres://user:pass@localhost:5532/outline-test
|
DATABASE_URL_TEST=postgres://user:pass@localhost:5532/outline-test
|
||||||
# Uncomment this to disable SSL for connecting to Postgres
|
# Uncomment this to disable SSL for connecting to Postgres
|
||||||
PGSSLMODE=disable
|
PGSSLMODE=disable
|
||||||
|
@ -81,8 +81,8 @@ DEBUG=cache,presenters,events,emails,mailer,utils,http,server,processors
|
||||||
# "you've been invited" you'll need to provide authentication for an SMTP server
|
# "you've been invited" you'll need to provide authentication for an SMTP server
|
||||||
SMTP_HOST='localhost'
|
SMTP_HOST='localhost'
|
||||||
SMTP_PORT='25'
|
SMTP_PORT='25'
|
||||||
SMTP_USERNAME=''
|
SMTP_USERNAME='__APP__'
|
||||||
SMTP_PASSWORD=''
|
SMTP_PASSWORD='__MAIL_PWD__'
|
||||||
SMTP_FROM_EMAIL='__APP__@__DOMAIN__'
|
SMTP_FROM_EMAIL='__APP__@__DOMAIN__'
|
||||||
SMTP_REPLY_EMAIL='webmaster@__DOMAIN__'
|
SMTP_REPLY_EMAIL='webmaster@__DOMAIN__'
|
||||||
SMTP_TLS_CIPHERS=
|
SMTP_TLS_CIPHERS=
|
||||||
|
@ -93,4 +93,4 @@ SMTP_SECURE='false'
|
||||||
|
|
||||||
# The default interface language. See translate.getoutline.com for a list of
|
# The default interface language. See translate.getoutline.com for a list of
|
||||||
# available language codes and their rough percentage translated.
|
# available language codes and their rough percentage translated.
|
||||||
DEFAULT_LANGUAGE=__LANGUAGE_KEY__
|
DEFAULT_LANGUAGE=__LANGUAGE__
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
SOURCE_URL=https://github.com/outline/outline/archive/e4d00783585f2a509da3565723227d2b5959a2e9.zip
|
|
||||||
SOURCE_SUM=f3394b676393e574c52aab14786b3553a58c1a87e215ae889d9c8e4d3dd6d962
|
|
||||||
SOURCE_SUM_PRG=sha256sum
|
|
||||||
SOURCE_FORMAT=zip
|
|
||||||
SOURCE_IN_SUBDIR=true
|
|
||||||
SOURCE_FILENAME=
|
|
||||||
SOURCE_EXTRACT=true
|
|
|
@ -1,4 +1,6 @@
|
||||||
location / {
|
#sub_path_only rewrite ^__PATH__$ __PATH__/ permanent;
|
||||||
|
location __PATH__/ {
|
||||||
|
|
||||||
proxy_pass http://127.0.0.1:__PORT__;
|
proxy_pass http://127.0.0.1:__PORT__;
|
||||||
proxy_redirect off;
|
proxy_redirect off;
|
||||||
proxy_set_header Host $host;
|
proxy_set_header Host $host;
|
||||||
|
|
|
@ -6,7 +6,7 @@ After=network.target postgresql.service redis-server.service
|
||||||
Type=simple
|
Type=simple
|
||||||
User=__APP__
|
User=__APP__
|
||||||
Group=__APP__
|
Group=__APP__
|
||||||
WorkingDirectory=__FINALPATH__/
|
WorkingDirectory=__INSTALL_DIR__/
|
||||||
Environment="NODE_ENV=production"
|
Environment="NODE_ENV=production"
|
||||||
Environment="__YNH_NODE_LOAD_PATH__"
|
Environment="__YNH_NODE_LOAD_PATH__"
|
||||||
ExecStart=__YNH_NPM__ start
|
ExecStart=__YNH_NPM__ start
|
||||||
|
|
4
doc/ADMIN.md
Normal file
4
doc/ADMIN.md
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
### How to create an admin user
|
||||||
|
|
||||||
|
The first user to login will automatically be granted admin rights
|
||||||
|
You can then change the user rights by default and/or change the admin user afterwards from the Outline settings page
|
|
@ -1,7 +1,7 @@
|
||||||
The fastest wiki and knowledge base for growing teams. Beautiful, feature rich, and markdown compatible.
|
Outline is a wiki and knowledge base for growing teams. Beautiful, feature rich, and markdown compatible.
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
- Fully working installation of Outline wiki
|
- Fully working installation of Outline wiki
|
||||||
- Including a Dex server to connect to Yunohost's LDAP userbase using an OIDC auth flow
|
- Including a Dex server to connect to YunoHost's LDAP userbase using an OIDC auth flow
|
||||||
- Using Yunohost's built-in SMTP server for notifications
|
- Using Yunohost's built-in SMTP server for notifications
|
||||||
|
|
7
doc/DESCRIPTION_fr.md
Normal file
7
doc/DESCRIPTION_fr.md
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
Outile est un wiki et la base de connaissances les plus rapides pour les équipes en pleine croissance. Beau, riche en fonctionnalités et compatible avec les démarques.
|
||||||
|
|
||||||
|
### Caractéristiques
|
||||||
|
|
||||||
|
- Installation entièrement fonctionnelle du wiki Outline
|
||||||
|
- Y compris un serveur Dex pour se connecter à la base d'utilisateurs LDAP de YunoHost à l'aide d'un flux d'authentification OIDC
|
||||||
|
- Utilisation du serveur SMTP intégré de Yunohost pour les notifications
|
|
@ -1,18 +0,0 @@
|
||||||
### Not totally free licence
|
|
||||||
Outline is a softwared licenced under [BUSL 1.1 licence](https://spdx.org/licenses/BUSL-1.1.html).
|
|
||||||
⚠️ That licence **is not totally free**. Please read it very carefully if you have any commercial use in mind.
|
|
||||||
The Outline version shipped with this package (v0.73.1) will be released under Apache-2.0 licence [after August 18th 2027](https://github.com/outline/outline/blob/ebeb201a9f48e2c6b619a0d152e051946849aa10/LICENSE).
|
|
||||||
|
|
||||||
### Known limitations
|
|
||||||
|
|
||||||
1. The app can now run in the CI server and reach level 8. However, it is still very young and not broadly tested. **Please use it with extreme care if it's on a prod server**
|
|
||||||
2. The app requires [Dex app](https://github.com/YunoHost-apps/dex_ynh) to be installed (Dex installation and setup is automatic, though)
|
|
||||||
3. The app is requiring two domains including one fully dedicated (one for Dex, one for Outline)
|
|
||||||
4. ARM architectures are not yet supported (But it should be achievable soon)
|
|
||||||
5. Because it's built from sources, the app requires an important amount of RAM, disk and time to install properly
|
|
||||||
|
|
||||||
|
|
||||||
### How to create an admin user
|
|
||||||
|
|
||||||
The first user to login will automatically be granted admin rights
|
|
||||||
You can then change the user rights by default and/or change the admin user afterwards from the Outline settings page
|
|
6
doc/PRE_INSTALL.md
Normal file
6
doc/PRE_INSTALL.md
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
### Known limitations
|
||||||
|
|
||||||
|
1. This app is still young and not broadly tested. **Please use it with extreme care if it's on a prod server**
|
||||||
|
2. The app requires [Dex app](https://github.com/YunoHost-apps/dex_ynh) to be installed (Dex installation and setup is automatic, though)
|
||||||
|
3. The app is requiring two domains including one fully dedicated (one for Dex, one for Outline)
|
||||||
|
4. Because it's built from sources, the app requires an important amount of RAM, disk and time to install properly
|
6
doc/PRE_INSTALL_fr.md
Normal file
6
doc/PRE_INSTALL_fr.md
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
### Limites connues
|
||||||
|
|
||||||
|
1. Cette app est encore jeune et n'a pas été largement testée. **Veuillez l'utiliser avec une extrême prudence s'il est sur un serveur de production**
|
||||||
|
2. L'application nécessite l'installation de [l'application Dex](https://github.com/YunoHost-apps/dex_ynh) (l'installation et la configuration de Dex sont cependant automatiques)
|
||||||
|
3. L'application nécessite deux domaines dont un entièrement dédié (un pour Dex, un pour Outline)
|
||||||
|
4. Parce qu'elle est construite à partir de sources, l'application nécessite une quantité importante de RAM, de disque et de temps pour s'installer correctement.
|
Binary file not shown.
Before Width: | Height: | Size: 1.3 MiB |
BIN
doc/screenshots/screenshot.png
Normal file
BIN
doc/screenshots/screenshot.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 421 KiB |
|
@ -1,70 +0,0 @@
|
||||||
{
|
|
||||||
"name": "Outline",
|
|
||||||
"id": "outline",
|
|
||||||
"packaging_format": 1,
|
|
||||||
"description": {
|
|
||||||
"en": "Wiki and knowledge base for teams",
|
|
||||||
"fr": "Wiki et base de connaissances pour les équipes"
|
|
||||||
},
|
|
||||||
"version": "0.74.0~ynh1",
|
|
||||||
"url": "https://www.getoutline.com",
|
|
||||||
"upstream": {
|
|
||||||
"license": "BUSL-1.1",
|
|
||||||
"website": "https://www.getoutline.com",
|
|
||||||
"demo": "https://app.getoutline.com/create",
|
|
||||||
"admindoc": "https://www.getoutline.com/developers",
|
|
||||||
"userdoc": "https://www.getoutline.com/about",
|
|
||||||
"code": "https://github.com/outline/outline"
|
|
||||||
},
|
|
||||||
"license": "BUSL-1.1",
|
|
||||||
"maintainer": {
|
|
||||||
"name": "Raoul de Limezy"
|
|
||||||
},
|
|
||||||
"requirements": {
|
|
||||||
"yunohost": ">= 11.0.9"
|
|
||||||
},
|
|
||||||
"multi_instance": false,
|
|
||||||
"services": [
|
|
||||||
"nginx"
|
|
||||||
],
|
|
||||||
"arguments": {
|
|
||||||
"install" : [
|
|
||||||
{
|
|
||||||
"name": "domain",
|
|
||||||
"type": "domain"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "is_public",
|
|
||||||
"type": "boolean",
|
|
||||||
"default": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "language",
|
|
||||||
"type": "string",
|
|
||||||
"ask": {
|
|
||||||
"en": "Choose the application language",
|
|
||||||
"fr": "Choisissez la langue de l'application"
|
|
||||||
},
|
|
||||||
"choices": ["fr", "en"],
|
|
||||||
"default": "en"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "dex_domain",
|
|
||||||
"type": "domain",
|
|
||||||
"ask": {
|
|
||||||
"en": "Domain for authentication. It can't be the same domain as above. Dex app will be installed and used for the authentication mechanism.",
|
|
||||||
"fr": "Domaine pour l'authentification. Il ne peut pas s'agir du même domaine que ci-dessus. L'application Dex sera installée et utilisée pour le mécanisme d'authentification."
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "dex_path",
|
|
||||||
"type": "path",
|
|
||||||
"default": "/",
|
|
||||||
"ask": {
|
|
||||||
"en": "Path for authentication URL. Please don't use 'auth' as it will break NGINX configuration.",
|
|
||||||
"fr": "Chemin de l'URL d'authentification. Veuillez ne pas utiliser 'auth' car cela casserait la configuration NGINX."
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
81
manifest.toml
Normal file
81
manifest.toml
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
packaging_format = 2
|
||||||
|
|
||||||
|
id = "outline"
|
||||||
|
name = "Outline"
|
||||||
|
description.en = "Wiki and knowledge base for teams"
|
||||||
|
description.fr = "Wiki et base de connaissances pour les équipes"
|
||||||
|
|
||||||
|
version = "0.75.0~ynh1"
|
||||||
|
|
||||||
|
maintainers = ["Raoul de Limezy"]
|
||||||
|
|
||||||
|
[upstream]
|
||||||
|
license = "BUSL-1.1"
|
||||||
|
website = "https://www.getoutline.com"
|
||||||
|
demo = "https://app.getoutline.com/create"
|
||||||
|
admindoc = "https://www.getoutline.com/developers"
|
||||||
|
userdoc = "https://www.getoutline.com/about"
|
||||||
|
code = "https://github.com/outline/outline"
|
||||||
|
|
||||||
|
[integration]
|
||||||
|
yunohost = ">= 11.2"
|
||||||
|
architectures = "all"
|
||||||
|
multi_instance = false
|
||||||
|
ldap = false
|
||||||
|
sso = false
|
||||||
|
disk = "50M"
|
||||||
|
ram.build = "3G"
|
||||||
|
ram.runtime = "50M"
|
||||||
|
|
||||||
|
[install]
|
||||||
|
[install.domain]
|
||||||
|
type = "domain"
|
||||||
|
|
||||||
|
[install.init_main_permission]
|
||||||
|
type = "group"
|
||||||
|
default = "visitors"
|
||||||
|
|
||||||
|
[install.language]
|
||||||
|
ask.en = "Choose the application language"
|
||||||
|
ask.fr = "Choisissez la langue de l'application"
|
||||||
|
type = "select"
|
||||||
|
choices = ["de_DE", "en_US", "es_ES", "fr_FR", "it_IT", "nl_NL", "pl_PL", "pt_PT"]
|
||||||
|
default = "fr_FR"
|
||||||
|
|
||||||
|
[install.dex_domain]
|
||||||
|
ask.en = "Domain for authentication. It can't be the same domain as above. Dex app will be installed and used for the authentication mechanism."
|
||||||
|
ask.fr = "Domaine pour l'authentification. Il ne peut pas s'agir du même domaine que ci-dessus. L'application Dex sera installée et utilisée pour le mécanisme d'authentification."
|
||||||
|
type = "domain"
|
||||||
|
|
||||||
|
[install.dex_path]
|
||||||
|
ask.en = "Path for authentication URL. Please don't use 'auth' as it will break NGINX configuration."
|
||||||
|
ask.fr = "Chemin de l'URL d'authentification. Veuillez ne pas utiliser 'auth' car cela casserait la configuration NGINX."
|
||||||
|
type = "path"
|
||||||
|
default = "/"
|
||||||
|
|
||||||
|
[resources]
|
||||||
|
[resources.sources.main]
|
||||||
|
url = "https://github.com/outline/outline/archive/2c9b01391fa12ebfd65dc01ec33bbb4941ef23bf.zip"
|
||||||
|
sha256 = "1bf8ef7fdac470ed0faeefd9575ffbac1f12d623e89d9ee244b2f83788d92933"
|
||||||
|
|
||||||
|
[resources.system_user]
|
||||||
|
allow_email = true
|
||||||
|
|
||||||
|
[resources.install_dir]
|
||||||
|
|
||||||
|
[resources.ports]
|
||||||
|
main.default = 2410
|
||||||
|
|
||||||
|
[resources.permissions]
|
||||||
|
main.url = "/"
|
||||||
|
main.auth_header = false
|
||||||
|
|
||||||
|
[resources.apt]
|
||||||
|
packages = "postgresql gawk"
|
||||||
|
|
||||||
|
extras.yarn.repo = "deb https://dl.yarnpkg.com/debian/ stable main"
|
||||||
|
extras.yarn.key = "https://dl.yarnpkg.com/debian/pubkey.gpg"
|
||||||
|
extras.yarn.packages = "yarn"
|
||||||
|
|
||||||
|
[resources.database]
|
||||||
|
type = "postgresql"
|
|
@ -4,10 +4,7 @@
|
||||||
# COMMON VARIABLES
|
# COMMON VARIABLES
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
# dependencies used by the app
|
NODEJS_VERSION=18
|
||||||
pkg_dependencies="postgresql"
|
|
||||||
|
|
||||||
NODEJS_VERSION=20
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# PERSONAL HELPERS
|
# PERSONAL HELPERS
|
||||||
|
|
|
@ -10,52 +10,11 @@
|
||||||
source ../settings/scripts/_common.sh
|
source ../settings/scripts/_common.sh
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# MANAGE SCRIPT FAILURE
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
ynh_clean_setup () {
|
|
||||||
### Remove this function if there's nothing to clean before calling the remove script.
|
|
||||||
true
|
|
||||||
}
|
|
||||||
# Exit if an error occurs during the execution of the script
|
|
||||||
ynh_abort_if_errors
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# LOAD SETTINGS
|
|
||||||
#=================================================
|
|
||||||
ynh_print_info --message="Loading installation settings..."
|
|
||||||
|
|
||||||
app=$YNH_APP_INSTANCE_NAME
|
|
||||||
|
|
||||||
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
|
||||||
domain=$(ynh_app_setting_get --app=$app --key=domain)
|
|
||||||
path_url=$(ynh_app_setting_get --app=$app --key=path_url)
|
|
||||||
port=$(ynh_app_setting_get --app=$app --key=port)
|
|
||||||
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
|
|
||||||
language_key=$(ynh_app_setting_get --app=$app --key=language_key)
|
|
||||||
secret_key=$(ynh_app_setting_get --app=$app --key=secret_key)
|
|
||||||
utils_secret=$(ynh_app_setting_get --app=$app --key=utils_secret)
|
|
||||||
dex_app=$(ynh_app_setting_get --app=$app --key=dex_app)
|
|
||||||
dex_domain=$(ynh_app_setting_get --app=$app --key=dex_domain)
|
|
||||||
dex_path=$(ynh_app_setting_get --app=$app --key=dex_path)
|
|
||||||
oidc_secret=$(ynh_app_setting_get --app=$app --key=oidc_secret)
|
|
||||||
oidc_name=$(ynh_app_setting_get --app=$app --key=oidc_name)
|
|
||||||
oidc_callback=$(ynh_app_setting_get --app=$app --key=oidc_callback)
|
|
||||||
dex_auth_uri=$(ynh_app_setting_get --app=$app --key=dex_auth_uri)
|
|
||||||
dex_token_uri=$(ynh_app_setting_get --app=$app --key=dex_token_uri)
|
|
||||||
dex_user_uri=$(ynh_app_setting_get --app=$app --key=dex_user_uri)
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# DECLARE DATA AND CONF FILES TO BACKUP
|
# DECLARE DATA AND CONF FILES TO BACKUP
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info --message="Declaring files to be backed up..."
|
ynh_print_info --message="Declaring files to be backed up..."
|
||||||
|
|
||||||
### N.B. : the following 'ynh_backup' calls are only a *declaration* of what needs
|
|
||||||
### to be backuped and not an actual copy of any file. The actual backup that
|
|
||||||
### creates and fill the archive with the files happens in the core after this
|
|
||||||
### script is called. Hence ynh_backups calls takes basically 0 seconds to run.
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# BACKUP LOCAL STORAGE
|
# BACKUP LOCAL STORAGE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -66,7 +25,7 @@ ynh_backup --src_path="/var/lib/outline"
|
||||||
# BACKUP THE APP MAIN DIR
|
# BACKUP THE APP MAIN DIR
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
ynh_backup --src_path="$final_path"
|
ynh_backup --src_path="$install_dir"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# BACKUP THE NGINX CONFIGURATION
|
# BACKUP THE NGINX CONFIGURATION
|
||||||
|
@ -112,9 +71,6 @@ ynh_backup --src_path="/etc/systemd/system/$app.service"
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_print_info --message="Backing up the PostgreSQL database..."
|
ynh_print_info --message="Backing up the PostgreSQL database..."
|
||||||
|
|
||||||
### (However, things like MySQL dumps *do* take some time to run, though the
|
|
||||||
### copy of the generated dump to the archive still happens later)
|
|
||||||
|
|
||||||
ynh_psql_dump_db --database="$db_name" > db.sql
|
ynh_psql_dump_db --database="$db_name" > db.sql
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
|
@ -9,75 +9,6 @@
|
||||||
source _common.sh
|
source _common.sh
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# RETRIEVE ARGUMENTS
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
old_domain=$YNH_APP_OLD_DOMAIN
|
|
||||||
old_path=$YNH_APP_OLD_PATH
|
|
||||||
|
|
||||||
new_domain=$YNH_APP_NEW_DOMAIN
|
|
||||||
new_path=$YNH_APP_NEW_PATH
|
|
||||||
|
|
||||||
app=$YNH_APP_INSTANCE_NAME
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# LOAD SETTINGS
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Loading installation settings..." --weight=1
|
|
||||||
|
|
||||||
# Needed for helper "ynh_add_nginx_config"
|
|
||||||
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
|
||||||
domain=$(ynh_app_setting_get --app=$app --key=domain)
|
|
||||||
path_url=$(ynh_app_setting_get --app=$app --key=path_url)
|
|
||||||
port=$(ynh_app_setting_get --app=$app --key=port)
|
|
||||||
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
|
|
||||||
language_key=$(ynh_app_setting_get --app=$app --key=language_key)
|
|
||||||
secret_key=$(ynh_app_setting_get --app=$app --key=secret_key)
|
|
||||||
utils_secret=$(ynh_app_setting_get --app=$app --key=utils_secret)
|
|
||||||
dex_app=$(ynh_app_setting_get --app=$app --key=dex_app)
|
|
||||||
dex_domain=$(ynh_app_setting_get --app=$app --key=dex_domain)
|
|
||||||
dex_path=$(ynh_app_setting_get --app=$app --key=dex_path)
|
|
||||||
oidc_secret=$(ynh_app_setting_get --app=$app --key=oidc_secret)
|
|
||||||
oidc_name=$(ynh_app_setting_get --app=$app --key=oidc_name)
|
|
||||||
oidc_callback=$(ynh_app_setting_get --app=$app --key=oidc_callback)
|
|
||||||
dex_auth_uri=$(ynh_app_setting_get --app=$app --key=dex_auth_uri)
|
|
||||||
dex_token_uri=$(ynh_app_setting_get --app=$app --key=dex_token_uri)
|
|
||||||
dex_user_uri=$(ynh_app_setting_get --app=$app --key=dex_user_uri)
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# BACKUP BEFORE CHANGE URL THEN ACTIVE TRAP
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Backing up the app before changing its URL (may take a while)..." --weight=1
|
|
||||||
|
|
||||||
# Backup the current version of the app
|
|
||||||
ynh_backup_before_upgrade
|
|
||||||
ynh_clean_setup () {
|
|
||||||
# Remove the new domain config file, the remove script won't do it as it doesn't know yet its location.
|
|
||||||
ynh_secure_remove --file="/etc/nginx/conf.d/$new_domain.d/$app.conf"
|
|
||||||
|
|
||||||
# Restore it if the upgrade fails
|
|
||||||
ynh_restore_upgradebackup
|
|
||||||
}
|
|
||||||
# Exit if an error occurs during the execution of the script
|
|
||||||
ynh_abort_if_errors
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# CHECK WHICH PARTS SHOULD BE CHANGED
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
change_domain=0
|
|
||||||
if [ "$old_domain" != "$new_domain" ]
|
|
||||||
then
|
|
||||||
change_domain=1
|
|
||||||
fi
|
|
||||||
|
|
||||||
change_path=0
|
|
||||||
if [ "$old_path" != "$new_path" ]
|
|
||||||
then
|
|
||||||
ynh_die "Outline has to be installed on the root of a domain"
|
|
||||||
fi
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STANDARD MODIFICATIONS
|
# STANDARD MODIFICATIONS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -85,45 +16,31 @@ fi
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Stopping a systemd service..." --weight=1
|
ynh_script_progression --message="Stopping a systemd service..." --weight=1
|
||||||
|
|
||||||
ynh_systemd_action --service_name=$app --action="stop" --log_path="/var/log/$app/$app.log"
|
ynh_systemd_action --service_name=$app --action="stop" --log_path="systemd"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# MODIFY URL IN NGINX CONF
|
# MODIFY URL IN NGINX CONF
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Updating NGINX web server configuration..." --weight=1
|
ynh_script_progression --message="Updating NGINX web server configuration..." --weight=1
|
||||||
|
|
||||||
nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf
|
ynh_change_url_nginx_config
|
||||||
|
|
||||||
# Change the domain for NGINX
|
|
||||||
if [ $change_domain -eq 1 ]
|
|
||||||
then
|
|
||||||
# Delete file checksum for the old conf file location
|
|
||||||
ynh_delete_file_checksum --file="$nginx_conf_path"
|
|
||||||
mv $nginx_conf_path /etc/nginx/conf.d/$new_domain.d/$app.conf
|
|
||||||
# Store file checksum for the new config file location
|
|
||||||
ynh_store_file_checksum --file="/etc/nginx/conf.d/$new_domain.d/$app.conf"
|
|
||||||
fi
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# UPDATING A CONFIGURATION
|
# UPDATING A CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
domain=$new_domain
|
|
||||||
|
|
||||||
ynh_secure_remove --file="$final_path/.env"
|
|
||||||
ynh_script_progression --message="Updating the configuration file..." --weight=1
|
ynh_script_progression --message="Updating the configuration file..." --weight=1
|
||||||
|
|
||||||
ynh_add_config --template="../conf/.env" --destination="$final_path/.env"
|
ynh_add_config --template="../conf/.env" --destination="$install_dir/.env"
|
||||||
|
|
||||||
chmod 400 "$final_path/.env"
|
chmod 400 "$install_dir/.env"
|
||||||
chown $app:$app "$final_path/.env"
|
chown $app:$app "$install_dir/.env"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RUN DB MIGRATION
|
# RUN DB MIGRATION
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Running DB initial migration..." --weight=3
|
ynh_script_progression --message="Running DB initial migration..." --weight=3
|
||||||
|
|
||||||
pushd "$final_path"
|
pushd "$install_dir"
|
||||||
ynh_use_nodejs
|
ynh_use_nodejs
|
||||||
ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH yarn db:migrate
|
ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH yarn db:migrate
|
||||||
popd
|
popd
|
||||||
|
@ -135,14 +52,7 @@ popd
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Starting a systemd service..." --weight=1
|
ynh_script_progression --message="Starting a systemd service..." --weight=1
|
||||||
|
|
||||||
ynh_systemd_action --service_name=$app --action="start" --log_path="/var/log/$app/$app.log"
|
ynh_systemd_action --service_name=$app --action="start" --log_path="systemd"
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# RELOAD NGINX
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Reloading NGINX web server..." --weight=1
|
|
||||||
|
|
||||||
ynh_systemd_action --service_name=nginx --action=reload
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SLACK WARNING
|
# SLACK WARNING
|
||||||
|
|
172
scripts/install
172
scripts/install
|
@ -9,47 +9,18 @@
|
||||||
source _common.sh
|
source _common.sh
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# MANAGE SCRIPT FAILURE
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
ynh_clean_setup () {
|
|
||||||
### Remove this function if there's nothing to clean before calling the remove script.
|
|
||||||
true
|
|
||||||
}
|
|
||||||
# Exit if an error occurs during the execution of the script
|
|
||||||
ynh_abort_if_errors
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RETRIEVE ARGUMENTS FROM THE MANIFEST
|
# RETRIEVE ARGUMENTS FROM THE MANIFEST
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
domain=$YNH_APP_ARG_DOMAIN
|
|
||||||
path_url="/"
|
|
||||||
is_public=$YNH_APP_ARG_IS_PUBLIC
|
|
||||||
|
|
||||||
language=$YNH_APP_ARG_LANGUAGE
|
|
||||||
|
|
||||||
if [ $language == "fr" ]; then
|
|
||||||
language_key="fr_FR"
|
|
||||||
echo "French"
|
|
||||||
else
|
|
||||||
language_key="en_US"
|
|
||||||
echo "English"
|
|
||||||
fi
|
|
||||||
|
|
||||||
secret_key=$(ynh_hex_32_random)
|
|
||||||
utils_secret=$(ynh_hex_32_random)
|
utils_secret=$(ynh_hex_32_random)
|
||||||
|
secret_key=$(ynh_hex_32_random)
|
||||||
app=$YNH_APP_INSTANCE_NAME
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# INSTALL DEX APP FOR OAUTH2 / OIDC
|
# INSTALL DEX APP FOR OAUTH2 / OIDC
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Installing Dex..." --weight=18
|
ynh_script_progression --message="Installing Dex..." --weight=18
|
||||||
|
|
||||||
dex_domain=$YNH_APP_ARG_DEX_DOMAIN
|
|
||||||
dex_path=$YNH_APP_ARG_DEX_PATH
|
|
||||||
oidc_secret=$(ynh_hex_32_random)
|
oidc_secret=$(ynh_hex_32_random)
|
||||||
oidc_name="Outline"
|
oidc_name="Outline"
|
||||||
oidc_callback="$domain/auth/oidc.callback"
|
oidc_callback="$domain/auth/oidc.callback"
|
||||||
|
@ -58,7 +29,7 @@ if yunohost app list | grep -q "$YNH_APP_ARG_DEX_DOMAIN$YNH_APP_ARG_DEX_PATH"; t
|
||||||
ynh_die "The domain provided for Dex is already used by another app. Please chose another one !"
|
ynh_die "The domain provided for Dex is already used by another app. Please chose another one !"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
yunohost app install https://github.com/YunoHost-Apps/dex_ynh --force --args "domain=$dex_domain&path=$dex_path&OIDC_name=$oidc_name&OIDC_secret=$oidc_secret&OIDC_callback=$oidc_callback" 2>&1 | tee dexlog.txt
|
yunohost app install https://github.com/YunoHost-Apps/dex_ynh --force --args "domain=$dex_domain&path=$dex_path&oidc_name=$oidc_name&oidc_secret=$oidc_secret&oidc_callback=$oidc_callback" 2>&1 | tee dexlog.txt
|
||||||
dex_app=$(gawk 'match($0, /Installation of (.+) completed/, app) {print app[1]}' dexlog.txt)
|
dex_app=$(gawk 'match($0, /Installation of (.+) completed/, app) {print app[1]}' dexlog.txt)
|
||||||
rm dexlog.txt
|
rm dexlog.txt
|
||||||
|
|
||||||
|
@ -74,31 +45,14 @@ else
|
||||||
dex_user_uri="https://$dex_domain$dex_path/userinfo"
|
dex_user_uri="https://$dex_domain$dex_path/userinfo"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#===================================================
|
|
||||||
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
|
|
||||||
#===================================================
|
|
||||||
ynh_script_progression --message="Validating installation parameters..." --weight=1
|
|
||||||
|
|
||||||
final_path=/var/www/$app
|
|
||||||
test ! -e "$final_path" || ynh_die --message="This path already contains a folder"
|
|
||||||
|
|
||||||
# Register (book) web path
|
|
||||||
ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STORE SETTINGS FROM MANIFEST
|
# STORE SETTINGS FROM MANIFEST
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Storing installation settings..." --weight=1
|
ynh_script_progression --message="Storing installation settings..." --weight=1
|
||||||
|
|
||||||
ynh_app_setting_set --app=$app --key=domain --value=$domain
|
|
||||||
ynh_app_setting_set --app=$app --key=path --value=$path_url
|
|
||||||
ynh_app_setting_set --app=$app --key=language --value=$language
|
|
||||||
ynh_app_setting_set --app=$app --key=secret_key --value=$secret_key
|
|
||||||
ynh_app_setting_set --app=$app --key=utils_secret --value=$utils_secret
|
ynh_app_setting_set --app=$app --key=utils_secret --value=$utils_secret
|
||||||
ynh_app_setting_set --app=$app --key=language_key --value=$language_key
|
ynh_app_setting_set --app=$app --key=secret_key --value=$secret_key
|
||||||
ynh_app_setting_set --app=$app --key=dex_app --value=$dex_app
|
ynh_app_setting_set --app=$app --key=dex_app --value=$dex_app
|
||||||
ynh_app_setting_set --app=$app --key=dex_domain --value=$dex_domain
|
|
||||||
ynh_app_setting_set --app=$app --key=dex_path --value=$dex_path
|
|
||||||
ynh_app_setting_set --app=$app --key=oidc_name --value=$oidc_name
|
ynh_app_setting_set --app=$app --key=oidc_name --value=$oidc_name
|
||||||
ynh_app_setting_set --app=$app --key=oidc_secret --value=$oidc_secret
|
ynh_app_setting_set --app=$app --key=oidc_secret --value=$oidc_secret
|
||||||
ynh_app_setting_set --app=$app --key=oidc_callback --value=$oidc_callback
|
ynh_app_setting_set --app=$app --key=oidc_callback --value=$oidc_callback
|
||||||
|
@ -106,17 +60,6 @@ ynh_app_setting_set --app=$app --key=dex_auth_uri --value=$dex_auth_uri
|
||||||
ynh_app_setting_set --app=$app --key=dex_token_uri --value=$dex_token_uri
|
ynh_app_setting_set --app=$app --key=dex_token_uri --value=$dex_token_uri
|
||||||
ynh_app_setting_set --app=$app --key=dex_user_uri --value=$dex_user_uri
|
ynh_app_setting_set --app=$app --key=dex_user_uri --value=$dex_user_uri
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# STANDARD MODIFICATIONS
|
|
||||||
#=================================================
|
|
||||||
# FIND AND OPEN A PORT
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Finding an available port..." --weight=1
|
|
||||||
|
|
||||||
# Find an available port
|
|
||||||
port=$(ynh_find_port --port=2410)
|
|
||||||
ynh_app_setting_set --app=$app --key=port --value=$port
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# INSTALL DEPENDENCIES
|
# INSTALL DEPENDENCIES
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -125,29 +68,11 @@ ynh_script_progression --message="Installing dependencies..." --weight=1
|
||||||
# Install nodejs
|
# Install nodejs
|
||||||
ynh_install_nodejs --nodejs_version=$NODEJS_VERSION 2>&1
|
ynh_install_nodejs --nodejs_version=$NODEJS_VERSION 2>&1
|
||||||
|
|
||||||
ynh_install_app_dependencies $pkg_dependencies 2>&1
|
|
||||||
|
|
||||||
# Install Yarn
|
|
||||||
ynh_install_extra_app_dependencies --repo="deb https://dl.yarnpkg.com/debian/ stable main" --package="yarn" --key="https://dl.yarnpkg.com/debian/pubkey.gpg" 2>&1
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# CREATE DEDICATED USER
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Configuring system user..." --weight=1
|
|
||||||
|
|
||||||
# Create a system user
|
|
||||||
ynh_system_user_create --username=$app --home_dir="$final_path"
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# CREATE A POSTGRESQL DATABASE
|
# CREATE A POSTGRESQL DATABASE
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Creating a PostgreSQL database..." --weight=1
|
ynh_script_progression --message="Creating a PostgreSQL database..." --weight=1
|
||||||
|
|
||||||
db_name=$(ynh_sanitize_dbid --db_name=$app)
|
|
||||||
ynh_app_setting_set --app=$app --key=db_name --value=$db_name
|
|
||||||
ynh_psql_test_if_first_run
|
|
||||||
ynh_psql_setup_db --db_user=$db_name --db_name=$db_name --db_pwd=$secret_key
|
|
||||||
|
|
||||||
ynh_psql_execute_as_root --sql="CREATE EXTENSION IF NOT EXISTS unaccent;" --database=$db_name
|
ynh_psql_execute_as_root --sql="CREATE EXTENSION IF NOT EXISTS unaccent;" --database=$db_name
|
||||||
ynh_psql_execute_as_root --sql="CREATE EXTENSION IF NOT EXISTS pg_trgm;" --database=$db_name
|
ynh_psql_execute_as_root --sql="CREATE EXTENSION IF NOT EXISTS pg_trgm;" --database=$db_name
|
||||||
|
|
||||||
|
@ -156,13 +81,11 @@ ynh_psql_execute_as_root --sql="CREATE EXTENSION IF NOT EXISTS pg_trgm;" --datab
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Setting up source files..." --weight=2
|
ynh_script_progression --message="Setting up source files..." --weight=2
|
||||||
|
|
||||||
ynh_app_setting_set --app=$app --key=final_path --value=$final_path
|
|
||||||
# Download, check integrity, uncompress and patch the source from app.src
|
# Download, check integrity, uncompress and patch the source from app.src
|
||||||
ynh_setup_source --dest_dir="$final_path"
|
ynh_setup_source --dest_dir="$install_dir"
|
||||||
|
|
||||||
chmod 750 "$final_path"
|
chmod -R o-rwx "$install_dir"
|
||||||
chmod -R o-rwx "$final_path"
|
chown -R $app:www-data "$install_dir"
|
||||||
chown -R $app:www-data "$final_path"
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SETUP LOCAL STORAGE
|
# SETUP LOCAL STORAGE
|
||||||
|
@ -179,18 +102,28 @@ ynh_script_progression --message="Configuring NGINX web server..." --weight=1
|
||||||
# Create a dedicated NGINX config
|
# Create a dedicated NGINX config
|
||||||
ynh_add_nginx_config
|
ynh_add_nginx_config
|
||||||
|
|
||||||
|
# Create a dedicated systemd config
|
||||||
|
ynh_add_systemd_config
|
||||||
|
|
||||||
|
# Use logrotate to manage application logfile(s)
|
||||||
|
ynh_use_logrotate
|
||||||
|
|
||||||
|
cron_path="/etc/cron.d/$app"
|
||||||
|
ynh_add_config --template="../conf/outline.cron" --destination="$cron_path"
|
||||||
|
chown root: "$cron_path"
|
||||||
|
chmod 644 "$cron_path"
|
||||||
|
|
||||||
|
yunohost service add $app --description="Outline server" --log="/var/log/$app/$app.log"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# BUILD YARN DEPENDENCIES
|
# BUILD YARN DEPENDENCIES
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Building $app. This can be very long, be patient !" --weight=18
|
||||||
|
|
||||||
pushd "$final_path"
|
pushd "$install_dir"
|
||||||
ynh_use_nodejs
|
ynh_use_nodejs
|
||||||
ynh_script_progression --message="Fetching Yarn production dependencies... This can be very long, be patient !" --weight=18
|
|
||||||
ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH yarn install --frozen-lockfile --network-timeout 1000000000 2>&1
|
ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH yarn install --frozen-lockfile --network-timeout 1000000000 2>&1
|
||||||
ynh_script_progression --message="Building... This can be very long, be patient !" --weight=18
|
ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH NODE_OPTIONS="--max-old-space-size=3200" yarn build 2>&1
|
||||||
ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH NODE_OPTIONS="--max-old-space-size=3900" yarn build 2>&1
|
|
||||||
ynh_script_progression --message="Cleaning cache... " --weight=3
|
|
||||||
ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH yarn cache clean 2>&1
|
ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH yarn cache clean 2>&1
|
||||||
popd
|
popd
|
||||||
|
|
||||||
|
@ -199,81 +132,28 @@ popd
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Adding a configuration file..." --weight=1
|
ynh_script_progression --message="Adding a configuration file..." --weight=1
|
||||||
|
|
||||||
ynh_add_config --template="../conf/.env" --destination="$final_path/.env"
|
ynh_add_config --template="../conf/.env" --destination="$install_dir/.env"
|
||||||
|
|
||||||
chmod 400 "$final_path/.env"
|
chmod 400 "$install_dir/.env"
|
||||||
chown $app:$app "$final_path/.env"
|
chown $app:$app "$install_dir/.env"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RUN DB MIGRATION
|
# RUN DB MIGRATION
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Running DB initial migration..." --weight=3
|
ynh_script_progression --message="Running DB initial migration..." --weight=3
|
||||||
|
|
||||||
pushd "$final_path"
|
pushd "$install_dir"
|
||||||
ynh_use_nodejs
|
ynh_use_nodejs
|
||||||
ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH yarn db:migrate
|
ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH yarn db:migrate
|
||||||
popd
|
popd
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# SETUP SYSTEMD
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Configuring a systemd service..." --weight=1
|
|
||||||
|
|
||||||
# Create a dedicated systemd config
|
|
||||||
ynh_add_systemd_config
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# GENERIC FINALIZATION
|
|
||||||
#=================================================
|
|
||||||
# SETUP LOGROTATE
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Configuring log rotation..." --weight=1
|
|
||||||
|
|
||||||
# Use logrotate to manage application logfile(s)
|
|
||||||
ynh_use_logrotate
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# ADD A CRON JOB
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
cron_path="/etc/cron.d/$app"
|
|
||||||
ynh_add_config --template="../conf/outline.cron" --destination="$cron_path"
|
|
||||||
chown root: "$cron_path"
|
|
||||||
chmod 644 "$cron_path"
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# INTEGRATE SERVICE IN YUNOHOST
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Integrating service in YunoHost..." --weight=1
|
|
||||||
|
|
||||||
yunohost service add $app --description="Outline server" --log="/var/log/$app/$app.log"
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# START SYSTEMD SERVICE
|
# START SYSTEMD SERVICE
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Starting a systemd service..." --weight=1
|
ynh_script_progression --message="Starting a systemd service..." --weight=1
|
||||||
|
|
||||||
# Start a systemd service
|
# Start a systemd service
|
||||||
ynh_systemd_action --service_name=$app --action="start" --log_path="/var/log/$app/$app.log"
|
ynh_systemd_action --service_name=$app --action="start" --log_path="systemd"
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# SETUP SSOWAT
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Configuring permissions..." --weight=1
|
|
||||||
|
|
||||||
# Make app public if necessary
|
|
||||||
if [ $is_public -eq 1 ]
|
|
||||||
then
|
|
||||||
ynh_permission_update --permission="main" --add="visitors"
|
|
||||||
fi
|
|
||||||
ynh_permission_url --permission="main" --auth_header=false
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# RELOAD NGINX
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Reloading NGINX web server..." --weight=1
|
|
||||||
|
|
||||||
ynh_systemd_action --service_name=nginx --action=reload
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# END OF SCRIPT
|
# END OF SCRIPT
|
||||||
|
|
|
@ -9,31 +9,6 @@
|
||||||
source _common.sh
|
source _common.sh
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# LOAD SETTINGS
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Loading installation settings..." --weight=1
|
|
||||||
|
|
||||||
app=$YNH_APP_INSTANCE_NAME
|
|
||||||
|
|
||||||
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
|
||||||
domain=$(ynh_app_setting_get --app=$app --key=domain)
|
|
||||||
path_url=$(ynh_app_setting_get --app=$app --key=path_url)
|
|
||||||
port=$(ynh_app_setting_get --app=$app --key=port)
|
|
||||||
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
|
|
||||||
language_key=$(ynh_app_setting_get --app=$app --key=language_key)
|
|
||||||
secret_key=$(ynh_app_setting_get --app=$app --key=secret_key)
|
|
||||||
utils_secret=$(ynh_app_setting_get --app=$app --key=utils_secret)
|
|
||||||
dex_app=$(ynh_app_setting_get --app=$app --key=dex_app)
|
|
||||||
dex_domain=$(ynh_app_setting_get --app=$app --key=dex_domain)
|
|
||||||
dex_path=$(ynh_app_setting_get --app=$app --key=dex_path)
|
|
||||||
oidc_secret=$(ynh_app_setting_get --app=$app --key=oidc_secret)
|
|
||||||
oidc_name=$(ynh_app_setting_get --app=$app --key=oidc_name)
|
|
||||||
oidc_callback=$(ynh_app_setting_get --app=$app --key=oidc_callback)
|
|
||||||
dex_auth_uri=$(ynh_app_setting_get --app=$app --key=dex_auth_uri)
|
|
||||||
dex_token_uri=$(ynh_app_setting_get --app=$app --key=dex_token_uri)
|
|
||||||
dex_user_uri=$(ynh_app_setting_get --app=$app --key=dex_user_uri)
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STANDARD REMOVE
|
# STANDARD REMOVE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -47,91 +22,26 @@ then
|
||||||
yunohost service remove $app
|
yunohost service remove $app
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# STOP AND REMOVE SERVICE
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Stopping and removing the systemd service..." --weight=1
|
|
||||||
|
|
||||||
# Remove the dedicated systemd config
|
# Remove the dedicated systemd config
|
||||||
ynh_remove_systemd_config
|
ynh_remove_systemd_config
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# REMOVE LOGROTATE CONFIGURATION
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Removing logrotate configuration..." --weight=1
|
|
||||||
|
|
||||||
# Remove the app-specific logrotate config
|
# Remove the app-specific logrotate config
|
||||||
ynh_remove_logrotate
|
ynh_remove_logrotate
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# REMOVE THE POSTGRESQL DATABASE
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Removing the PostgreSQL database..."
|
|
||||||
|
|
||||||
# Remove a database if it exists, along with the associated user
|
|
||||||
ynh_psql_remove_db --db_user=$db_name --db_name=$db_name
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# REMOVE DEPENDENCIES
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Removing dependencies..." --weight=1
|
|
||||||
|
|
||||||
# Remove metapackage and its dependencies
|
|
||||||
ynh_remove_app_dependencies
|
|
||||||
ynh_remove_nodejs
|
ynh_remove_nodejs
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# REMOVE APP MAIN DIR
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Removing app main directory..." --weight=1
|
|
||||||
|
|
||||||
# Remove the app directory securely
|
|
||||||
ynh_secure_remove --file="$final_path"
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# REMOVE DEX APP
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Removing Dex app used for Outline auth..." --weight=1
|
|
||||||
|
|
||||||
yunohost app remove $dex_app
|
yunohost app remove $dex_app
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# REMOVE LOCAL STORAGE
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Removing Outline local storage..." --weight=1
|
|
||||||
ynh_secure_remove --file="/var/lib/outline"
|
ynh_secure_remove --file="/var/lib/outline"
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# REMOVE NGINX CONFIGURATION
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Removing NGINX web server configuration..." --weight=1
|
|
||||||
|
|
||||||
# Remove the dedicated NGINX config
|
# Remove the dedicated NGINX config
|
||||||
ynh_remove_nginx_config
|
ynh_remove_nginx_config
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# SPECIFIC REMOVE
|
|
||||||
#=================================================
|
|
||||||
# REMOVE VARIOUS FILES
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Removing various files..." --weight=1
|
|
||||||
|
|
||||||
# Remove a cron file
|
# Remove a cron file
|
||||||
ynh_secure_remove --file="/etc/cron.d/$app"
|
ynh_secure_remove --file="/etc/cron.d/$app"
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# GENERIC FINALIZATION
|
|
||||||
#=================================================
|
|
||||||
# REMOVE DEDICATED USER
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Removing the dedicated system user..." --weight=1
|
|
||||||
|
|
||||||
# Delete a system user
|
|
||||||
ynh_system_user_delete --username=$app
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# END OF SCRIPT
|
# END OF SCRIPT
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
ynh_script_progression --message="If you don't need it anymore, don't forget to remove the MinIO app !"
|
|
||||||
ynh_script_progression --message="Removal of $app completed" --last
|
ynh_script_progression --message="Removal of $app completed" --last
|
||||||
|
|
150
scripts/restore
150
scripts/restore
|
@ -10,50 +10,6 @@
|
||||||
source ../settings/scripts/_common.sh
|
source ../settings/scripts/_common.sh
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# MANAGE SCRIPT FAILURE
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
ynh_clean_setup () {
|
|
||||||
#### Remove this function if there's nothing to clean before calling the remove script.
|
|
||||||
true
|
|
||||||
}
|
|
||||||
# Exit if an error occurs during the execution of the script
|
|
||||||
ynh_abort_if_errors
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# LOAD SETTINGS
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Loading installation settings..." --weight=1
|
|
||||||
|
|
||||||
app=$YNH_APP_INSTANCE_NAME
|
|
||||||
|
|
||||||
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
|
||||||
domain=$(ynh_app_setting_get --app=$app --key=domain)
|
|
||||||
path_url=$(ynh_app_setting_get --app=$app --key=path_url)
|
|
||||||
port=$(ynh_app_setting_get --app=$app --key=port)
|
|
||||||
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
|
|
||||||
language_key=$(ynh_app_setting_get --app=$app --key=language_key)
|
|
||||||
secret_key=$(ynh_app_setting_get --app=$app --key=secret_key)
|
|
||||||
utils_secret=$(ynh_app_setting_get --app=$app --key=utils_secret)
|
|
||||||
dex_app=$(ynh_app_setting_get --app=$app --key=dex_app)
|
|
||||||
dex_domain=$(ynh_app_setting_get --app=$app --key=dex_domain)
|
|
||||||
dex_path=$(ynh_app_setting_get --app=$app --key=dex_path)
|
|
||||||
oidc_secret=$(ynh_app_setting_get --app=$app --key=oidc_secret)
|
|
||||||
oidc_name=$(ynh_app_setting_get --app=$app --key=oidc_name)
|
|
||||||
oidc_callback=$(ynh_app_setting_get --app=$app --key=oidc_callback)
|
|
||||||
dex_auth_uri=$(ynh_app_setting_get --app=$app --key=dex_auth_uri)
|
|
||||||
dex_token_uri=$(ynh_app_setting_get --app=$app --key=dex_token_uri)
|
|
||||||
dex_user_uri=$(ynh_app_setting_get --app=$app --key=dex_user_uri)
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# CHECK IF THE APP CAN BE RESTORED
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Validating restoration parameters..." --weight=1
|
|
||||||
|
|
||||||
test ! -d $final_path \
|
|
||||||
|| ynh_die --message="There is already a directory: $final_path"
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# CHECK IF DEX IS INSTALLED, IF NOT INSTALL IT
|
# CHECK IF DEX IS INSTALLED, IF NOT INSTALL IT
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -65,41 +21,22 @@ if ! yunohost app list | grep -q "id: $dex_app"; then
|
||||||
if yunohost app list | grep -q "$dex_domain$dex_path"; then
|
if yunohost app list | grep -q "$dex_domain$dex_path"; then
|
||||||
ynh_die "The domain provided for Dex is already used by another app. Please chose another one !"
|
ynh_die "The domain provided for Dex is already used by another app. Please chose another one !"
|
||||||
fi
|
fi
|
||||||
yunohost app install https://github.com/YunoHost-Apps/dex_ynh --force --args "domain=$dex_domain&path=$dex_path&OIDC_name=$oidc_name&OIDC_secret=$oidc_secret&OIDC_callback=$oidc_callback"
|
yunohost app install https://github.com/YunoHost-Apps/dex_ynh --force --args "domain=$dex_domain&path=$dex_path&oidc_name=$oidc_name&oidc_secret=$oidc_secret&oidc_callback=$oidc_callback"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# STANDARD RESTORATION STEPS
|
|
||||||
#=================================================
|
|
||||||
# RESTORE THE NGINX CONFIGURATION
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Restoring the NGINX configuration..." --weight=1
|
|
||||||
|
|
||||||
ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf"
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# RECREATE THE DEDICATED USER
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Recreating the dedicated system user..." --weight=1
|
|
||||||
|
|
||||||
# Create the dedicated user (if not existing)
|
|
||||||
ynh_system_user_create --username=$app --home_dir="$final_path"
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RESTORE THE APP MAIN DIR
|
# RESTORE THE APP MAIN DIR
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Restoring the app main directory..." --weight=1
|
ynh_script_progression --message="Restoring the app main directory..." --weight=1
|
||||||
|
|
||||||
ynh_restore_file --origin_path="$final_path"
|
ynh_restore_file --origin_path="$install_dir"
|
||||||
|
|
||||||
chmod 750 "$final_path"
|
chmod -R o-rwx "$install_dir"
|
||||||
chmod -R o-rwx "$final_path"
|
chown -R $app:www-data "$install_dir"
|
||||||
chown -R $app:www-data "$final_path"
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RESTORE LOCAL STORAGE
|
# RESTORE LOCAL STORAGE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
ynh_script_progression --message="Restoring the app local storage..." --weight=1
|
ynh_script_progression --message="Restoring the app local storage..." --weight=1
|
||||||
|
|
||||||
ynh_restore_file --origin_path="/var/lib/outline"
|
ynh_restore_file --origin_path="/var/lib/outline"
|
||||||
|
@ -107,6 +44,13 @@ ynh_restore_file --origin_path="/var/lib/outline"
|
||||||
chmod -R o-rwx "/var/lib/outline"
|
chmod -R o-rwx "/var/lib/outline"
|
||||||
chown -R $app:www-data "/var/lib/outline"
|
chown -R $app:www-data "/var/lib/outline"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# RESTORE THE POSTGRESQL DATABASE
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Restoring the PostgreSQL database..." --weight=6
|
||||||
|
|
||||||
|
ynh_psql_execute_file_as_root --file="./db.sql" --database=$db_name
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SPECIFIC RESTORATION
|
# SPECIFIC RESTORATION
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -117,84 +61,38 @@ ynh_script_progression --message="Reinstalling dependencies..." --weight=1
|
||||||
# Install nodejs
|
# Install nodejs
|
||||||
ynh_install_nodejs --nodejs_version=$NODEJS_VERSION 2>&1
|
ynh_install_nodejs --nodejs_version=$NODEJS_VERSION 2>&1
|
||||||
|
|
||||||
ynh_install_app_dependencies $pkg_dependencies 2>&1
|
ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf"
|
||||||
|
|
||||||
# Install Yarn
|
|
||||||
ynh_install_extra_app_dependencies --repo="deb https://dl.yarnpkg.com/debian/ stable main" --package="yarn" --key="https://dl.yarnpkg.com/debian/pubkey.gpg"
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# RESTORE THE POSTGRESQL DATABASE
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Restoring the PostgreSQL database..." --weight=6
|
|
||||||
|
|
||||||
ynh_psql_test_if_first_run
|
|
||||||
ynh_psql_setup_db --db_user=$db_name --db_name=$db_name --db_pwd=$secret_key
|
|
||||||
ynh_psql_execute_file_as_root --file="./db.sql" --database=$db_name
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# UPDATING A CONFIGURATION
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
ynh_secure_remove --file="$final_path/.env"
|
|
||||||
ynh_script_progression --message="Updating the configuration file..." --weight=1
|
|
||||||
|
|
||||||
ynh_add_config --template="../conf/.env" --destination="$final_path/.env"
|
|
||||||
|
|
||||||
chmod 400 "$final_path/.env"
|
|
||||||
chown $app:$app "$final_path/.env"
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# RESTORE SYSTEMD
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Restoring the systemd configuration..." --weight=1
|
|
||||||
|
|
||||||
ynh_restore_file --origin_path="/etc/systemd/system/$app.service"
|
ynh_restore_file --origin_path="/etc/systemd/system/$app.service"
|
||||||
systemctl enable $app.service --quiet
|
systemctl enable $app.service --quiet
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# RESTORE THE LOGROTATE CONFIGURATION
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Restoring the logrotate configuration..." --weight=1
|
|
||||||
|
|
||||||
ynh_restore_file --origin_path="/etc/logrotate.d/$app"
|
ynh_restore_file --origin_path="/etc/logrotate.d/$app"
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# RESTORE THE LOGS
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Restoring the logs..." --weight=1
|
|
||||||
|
|
||||||
ynh_restore_file --origin_path="/var/log/$app/$app.log"
|
ynh_restore_file --origin_path="/var/log/$app/$app.log"
|
||||||
|
|
||||||
#=================================================
|
ynh_restore_file --origin_path="/etc/cron.d/$app"
|
||||||
# INTEGRATE SERVICE IN YUNOHOST
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Integrating service in YunoHost..." --weight=1
|
|
||||||
|
|
||||||
yunohost service add $app --description="Outline server" --log="/var/log/$app/$app.log"
|
yunohost service add $app --description="Outline server" --log="/var/log/$app/$app.log"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# UPDATING A CONFIGURATION
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Updating the configuration file..." --weight=1
|
||||||
|
|
||||||
|
ynh_add_config --template="../conf/.env" --destination="$install_dir/.env"
|
||||||
|
|
||||||
|
chmod 400 "$install_dir/.env"
|
||||||
|
chown $app:$app "$install_dir/.env"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# START SYSTEMD SERVICE
|
# START SYSTEMD SERVICE
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Starting a systemd service..." --weight=1
|
ynh_script_progression --message="Starting a systemd service..." --weight=1
|
||||||
|
|
||||||
ynh_systemd_action --service_name=$app --action="start" --log_path="/var/log/$app/$app.log"
|
ynh_systemd_action --service_name=$app --action="start" --log_path="systemd"
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# GENERIC FINALIZATION
|
|
||||||
#=================================================
|
|
||||||
# RELOAD NGINX AND PHP-FPM
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Reloading NGINX web server..." --weight=1
|
|
||||||
|
|
||||||
ynh_systemd_action --service_name=nginx --action=reload
|
ynh_systemd_action --service_name=nginx --action=reload
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# RESTORE THE CRON FILE
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Restoring cron job..." --weight=1
|
|
||||||
|
|
||||||
ynh_restore_file --origin_path="/etc/cron.d/$app"
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# END OF SCRIPT
|
# END OF SCRIPT
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
119
scripts/upgrade
119
scripts/upgrade
|
@ -9,54 +9,12 @@
|
||||||
source _common.sh
|
source _common.sh
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# LOAD SETTINGS
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Loading installation settings..." --weight=1
|
|
||||||
|
|
||||||
app=$YNH_APP_INSTANCE_NAME
|
|
||||||
|
|
||||||
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
|
||||||
domain=$(ynh_app_setting_get --app=$app --key=domain)
|
|
||||||
path_url=$(ynh_app_setting_get --app=$app --key=path_url)
|
|
||||||
port=$(ynh_app_setting_get --app=$app --key=port)
|
|
||||||
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
|
|
||||||
language_key=$(ynh_app_setting_get --app=$app --key=language_key)
|
|
||||||
secret_key=$(ynh_app_setting_get --app=$app --key=secret_key)
|
|
||||||
utils_secret=$(ynh_app_setting_get --app=$app --key=utils_secret)
|
|
||||||
dex_app=$(ynh_app_setting_get --app=$app --key=dex_app)
|
|
||||||
dex_domain=$(ynh_app_setting_get --app=$app --key=dex_domain)
|
|
||||||
dex_path=$(ynh_app_setting_get --app=$app --key=dex_path)
|
|
||||||
oidc_secret=$(ynh_app_setting_get --app=$app --key=oidc_secret)
|
|
||||||
oidc_name=$(ynh_app_setting_get --app=$app --key=oidc_name)
|
|
||||||
oidc_callback=$(ynh_app_setting_get --app=$app --key=oidc_callback)
|
|
||||||
dex_auth_uri=$(ynh_app_setting_get --app=$app --key=dex_auth_uri)
|
|
||||||
dex_token_uri=$(ynh_app_setting_get --app=$app --key=dex_token_uri)
|
|
||||||
dex_user_uri=$(ynh_app_setting_get --app=$app --key=dex_user_uri)
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# CHECK VERSION
|
# CHECK VERSION
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
upgrade_type=$(ynh_check_app_version_changed)
|
upgrade_type=$(ynh_check_app_version_changed)
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." --weight=1
|
|
||||||
|
|
||||||
# Ugly fix for an early mistake - to be removed with next upgrade
|
|
||||||
ynh_secure_remove --file="$final_path/outlinestorage"
|
|
||||||
|
|
||||||
# Backup the current version of the app
|
|
||||||
ynh_backup_before_upgrade
|
|
||||||
ynh_clean_setup () {
|
|
||||||
# Restore it if the upgrade fails
|
|
||||||
ynh_restore_upgradebackup
|
|
||||||
}
|
|
||||||
# Exit if an error occurs during the execution of the script
|
|
||||||
ynh_abort_if_errors
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STANDARD UPGRADE STEPS
|
# STANDARD UPGRADE STEPS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -64,15 +22,7 @@ ynh_abort_if_errors
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Stopping a systemd service..." --weight=1
|
ynh_script_progression --message="Stopping a systemd service..." --weight=1
|
||||||
|
|
||||||
ynh_systemd_action --service_name=$app --action="stop" --log_path="/var/log/$app/$app.log"
|
ynh_systemd_action --service_name=$app --action="stop" --log_path="systemd"
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# CREATE DEDICATED USER
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Making sure dedicated system user exists..." --weight=1
|
|
||||||
|
|
||||||
# Create a dedicated user (if not existing)
|
|
||||||
ynh_system_user_create --username=$app --home_dir="$final_path"
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
||||||
|
@ -83,15 +33,11 @@ then
|
||||||
ynh_script_progression --message="Upgrading source files..." --weight=1
|
ynh_script_progression --message="Upgrading source files..." --weight=1
|
||||||
|
|
||||||
# Download, check integrity, uncompress and patch the source from app.src
|
# Download, check integrity, uncompress and patch the source from app.src
|
||||||
ynh_secure_remove --file="$final_path"
|
ynh_setup_source --dest_dir="$install_dir"
|
||||||
ynh_setup_source --dest_dir="$final_path"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
ynh_script_progression --message="Done" --weight=1
|
chmod -R o-rwx "$install_dir"
|
||||||
|
chown -R $app:www-data "$install_dir"
|
||||||
chmod 750 "$final_path"
|
|
||||||
chmod -R o-rwx "$final_path"
|
|
||||||
chown -R $app:www-data "$final_path"
|
|
||||||
|
|
||||||
#=======================================================
|
#=======================================================
|
||||||
# MIGRATE MINIO BUCKET IF UPGRADING FROM AN OLD VERSION
|
# MIGRATE MINIO BUCKET IF UPGRADING FROM AN OLD VERSION
|
||||||
|
@ -102,11 +48,6 @@ if ynh_compare_current_package_version --comparison le --version 0.69.2.2~ynh1
|
||||||
then
|
then
|
||||||
ynh_script_progression --message="Migrating MinIO data to local directory"
|
ynh_script_progression --message="Migrating MinIO data to local directory"
|
||||||
|
|
||||||
minio_domain=$(ynh_app_setting_get --app=$app --key=minio_domain)
|
|
||||||
minio_admin=$(ynh_app_setting_get --app=$app --key=minio_admin)
|
|
||||||
minio_password=$(ynh_app_setting_get --app=$app --key=minio_password)
|
|
||||||
mc_path=$(ynh_app_setting_get --app=$app --key=mc_path)
|
|
||||||
|
|
||||||
mkdir -p "/var/lib/$app/data"
|
mkdir -p "/var/lib/$app/data"
|
||||||
chown -R minio:www-data "/var/lib/$app"
|
chown -R minio:www-data "/var/lib/$app"
|
||||||
ynh_exec_warn_less sudo -u minio $mc_path/mc mirror --preserve "minio/outlinestorage" "/var/lib/$app/data"
|
ynh_exec_warn_less sudo -u minio $mc_path/mc mirror --preserve "minio/outlinestorage" "/var/lib/$app/data"
|
||||||
|
@ -130,31 +71,18 @@ ynh_script_progression --message="Upgrading NGINX web server configuration..." -
|
||||||
# Create a dedicated NGINX config
|
# Create a dedicated NGINX config
|
||||||
ynh_add_nginx_config
|
ynh_add_nginx_config
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# UPGRADE DEPENDENCIES
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Upgrading dependencies..." --weight=1
|
|
||||||
|
|
||||||
ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies
|
|
||||||
|
|
||||||
# Install Nodejs
|
# Install Nodejs
|
||||||
ynh_exec_warn_less ynh_install_nodejs --nodejs_version=$NODEJS_VERSION 2>&1
|
ynh_exec_warn_less ynh_install_nodejs --nodejs_version=$NODEJS_VERSION
|
||||||
|
|
||||||
# Install Yarn
|
|
||||||
ynh_install_extra_app_dependencies --repo="deb https://dl.yarnpkg.com/debian/ stable main" --package="yarn" --key="https://dl.yarnpkg.com/debian/pubkey.gpg" 2>&1
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# UPGRADE YARN DEPENDENCIES
|
# UPGRADE YARN DEPENDENCIES
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Building Yarn dependencies... This can be very long, be patient !" --weight=10
|
ynh_script_progression --message="Building $app. This can be very long, be patient !" --weight=10
|
||||||
|
|
||||||
pushd "$final_path"
|
pushd "$install_dir"
|
||||||
ynh_use_nodejs
|
ynh_use_nodejs
|
||||||
ynh_script_progression --message="Fetching Yarn production dependencies... This can be very long, be patient !" --weight=18
|
|
||||||
ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH yarn install --frozen-lockfile --network-timeout 1000000000 2>&1
|
ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH yarn install --frozen-lockfile --network-timeout 1000000000 2>&1
|
||||||
ynh_script_progression --message="Building... This can be very long, be patient !" --weight=18
|
|
||||||
ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH NODE_OPTIONS="--max-old-space-size=3900" yarn build 2>&1
|
ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH NODE_OPTIONS="--max-old-space-size=3900" yarn build 2>&1
|
||||||
ynh_script_progression --message="Cleaning cache... " --weight=3
|
|
||||||
ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH yarn cache clean 2>&1
|
ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH yarn cache clean 2>&1
|
||||||
popd
|
popd
|
||||||
|
|
||||||
|
@ -163,17 +91,17 @@ popd
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Adding a configuration file..." --weight=1
|
ynh_script_progression --message="Adding a configuration file..." --weight=1
|
||||||
|
|
||||||
ynh_add_config --template="../conf/.env" --destination="$final_path/.env"
|
ynh_add_config --template="../conf/.env" --destination="$install_dir/.env"
|
||||||
|
|
||||||
chmod 400 "$final_path/.env"
|
chmod 400 "$install_dir/.env"
|
||||||
chown $app:$app "$final_path/.env"
|
chown $app:$app "$install_dir/.env"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RUN DB MIGRATION
|
# RUN DB MIGRATION
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Running DB initial migration..."
|
ynh_script_progression --message="Running DB initial migration..."
|
||||||
|
|
||||||
pushd "$final_path"
|
pushd "$install_dir"
|
||||||
ynh_use_nodejs
|
ynh_use_nodejs
|
||||||
ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH NODE_ENV=production yarn db:migrate
|
ynh_exec_warn_less sudo -u $app env $ynh_node_load_PATH NODE_ENV=production yarn db:migrate
|
||||||
popd
|
popd
|
||||||
|
@ -186,30 +114,14 @@ ynh_script_progression --message="Upgrading systemd configuration..." --weight=1
|
||||||
# Create a dedicated systemd config
|
# Create a dedicated systemd config
|
||||||
ynh_add_systemd_config
|
ynh_add_systemd_config
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# GENERIC FINALIZATION
|
|
||||||
#=================================================
|
|
||||||
# SETUP LOGROTATE
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Upgrading logrotate configuration..." --weight=1
|
|
||||||
|
|
||||||
# Use logrotate to manage app-specific logfile(s)
|
# Use logrotate to manage app-specific logfile(s)
|
||||||
ynh_use_logrotate --non-append
|
ynh_use_logrotate --non-append
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# UPDATE THE CRON JOB
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
cron_path="/etc/cron.d/$app"
|
cron_path="/etc/cron.d/$app"
|
||||||
ynh_add_config --template="../conf/outline.cron" --destination="$cron_path"
|
ynh_add_config --template="../conf/outline.cron" --destination="$cron_path"
|
||||||
chown root: "$cron_path"
|
chown root: "$cron_path"
|
||||||
chmod 644 "$cron_path"
|
chmod 644 "$cron_path"
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# INTEGRATE SERVICE IN YUNOHOST
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Integrating service in YunoHost..." --weight=1
|
|
||||||
|
|
||||||
yunohost service add $app --description="Outline server" --log="/var/log/$app/$app.log"
|
yunohost service add $app --description="Outline server" --log="/var/log/$app/$app.log"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -217,14 +129,7 @@ yunohost service add $app --description="Outline server" --log="/var/log/$app/$a
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Starting a systemd service..." --weight=1
|
ynh_script_progression --message="Starting a systemd service..." --weight=1
|
||||||
|
|
||||||
ynh_systemd_action --service_name=$app --action="start" --log_path="/var/log/$app/$app.log"
|
ynh_systemd_action --service_name=$app --action="start" --log_path="systemd"
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# RELOAD NGINX
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Reloading NGINX web server..." --weight=1
|
|
||||||
|
|
||||||
ynh_systemd_action --service_name=nginx --action=reload
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# END OF SCRIPT
|
# END OF SCRIPT
|
||||||
|
|
371
sources/patches/diff.txt
Normal file
371
sources/patches/diff.txt
Normal file
|
@ -0,0 +1,371 @@
|
||||||
|
diff --git a/app/components/Icons/OutlineIcon.tsx b/app/components/Icons/OutlineIcon.tsx
|
||||||
|
index bb7f29ce7..70db50bcd 100644
|
||||||
|
--- a/app/components/Icons/OutlineIcon.tsx
|
||||||
|
+++ b/app/components/Icons/OutlineIcon.tsx
|
||||||
|
@@ -22,7 +22,10 @@ export default function OutlineIcon({
|
||||||
|
viewBox={cover ? "2 2 20 20" : "0 0 24 24"}
|
||||||
|
version="1.1"
|
||||||
|
>
|
||||||
|
- <path d="M14.6667 20.2155V20.7163C14.6667 21.4253 14.0697 22 13.3333 22C13.1044 22 12.8792 21.9432 12.6797 21.8351L4.67965 17.5028C4.25982 17.2754 4 16.8478 4 16.384V7.61623C4 7.15248 4.25982 6.72478 4.67965 6.49742L12.6797 2.16508C13.3215 1.81751 14.1344 2.03666 14.4954 2.65456C14.6077 2.8467 14.6667 3.06343 14.6667 3.28388V3.78471L15.6169 3.51027C16.3222 3.30655 17.0655 3.69189 17.2771 4.37093C17.3144 4.49059 17.3333 4.61486 17.3333 4.73979V5.26091L18.5013 5.12036C19.232 5.03242 19.8984 5.53141 19.9897 6.23488C19.9966 6.2877 20 6.34088 20 6.3941V17.6061C20 18.3151 19.403 18.8898 18.6667 18.8898C18.6114 18.8898 18.5561 18.8865 18.5013 18.8799L17.3333 18.7393V19.2604C17.3333 19.9694 16.7364 20.5441 16 20.5441C15.8702 20.5441 15.7412 20.5259 15.6169 20.49L14.6667 20.2155ZM14.6667 18.8753L16 19.2604V4.73979L14.6667 5.12488V18.8753ZM17.3333 6.55456V17.4457L18.6667 17.6061V6.3941L17.3333 6.55456ZM5.33333 7.61623V16.384L13.3333 20.7163V3.28388L5.33333 7.61623ZM6.66667 8.47006L8 7.82823V16.172L6.66667 15.5302V8.47006Z" />
|
||||||
|
+ <path
|
||||||
|
+ d="m 20.289859,11.238917 c 1.1839,-0.602335 1.765465,-1.4746827 1.765465,-2.6378124 0,-0.9346579 -0.332322,-1.7031547 -0.996968,-2.2847194 -0.685416,-0.6023353 -1.557763,-0.913888 -2.617042,-0.913888 -1.350062,0 -2.388571,0.3946336 -3.136297,1.1839 -0.643876,0.6854159 -1.14236,1.495453 -1.433142,2.4508809 -0.290783,0.9761979 -0.436174,2.2639489 -0.436174,3.8424829 v 8.017288 c 0,1.495452 -0.145391,2.533961 -0.436174,3.136296 h 2.907825 c 0.270012,-0.685416 0.415404,-1.723925 0.415404,-3.136296 v -1.370832 c 0.602335,0.373863 1.24621,0.540025 1.931626,0.540025 1.246211,0 2.305489,-0.415404 3.177837,-1.246211 1.017739,-0.976198 1.516223,-2.222409 1.516223,-3.738632 0,-1.993936 -0.893118,-3.260917 -2.679353,-3.800942 z M 16.322756,9.4942219 c 0,-1.1839 0.08308,-2.035477 0.270012,-2.5339614 0.207702,-0.6231053 0.623105,-0.9138877 1.22544,-0.9138877 0.456944,0 0.810037,0.353093 1.059279,1.0592788 0.207702,0.581565 0.290783,1.2877513 0.290783,2.097788 0,0.3530929 -0.02077,0.7061859 -0.103851,1.0385084 -0.103851,0.436174 -0.228472,0.664646 -0.373863,0.664646 l -0.934658,-0.186931 c -0.664646,0 -0.996969,0.186931 -0.996969,0.560794 0,0.353093 0.270012,0.540025 0.830808,0.540025 l 0.893117,-0.186932 c 0.228472,0 0.498484,0.270013 0.768496,0.768497 0.415404,0.747726 0.623106,1.682384 0.623106,2.866284 0,1.474682 -0.103851,2.492421 -0.311553,3.094756 -0.249242,0.706186 -0.747726,1.059279 -1.474682,1.059279 -0.789267,0 -1.391602,-0.373863 -1.765465,-1.14236 z M 4.7941133,15.254891 Q 4.50597,15.041916 4.2303546,14.929164 q -0.2630873,-0.12528 -0.6389264,-0.12528 -0.400895,0 -0.9395978,0.150336 -0.5261747,0.137807 -1.3530207,0.425951 -0.087696,-0.0877 -0.1879196,-0.238032 Q 1.0231943,14.991803 0.98561039,14.82894 1.3739774,14.528269 1.8500403,14.190013 2.3386312,13.851758 2.9023899,13.500975 2.4639109,13.024912 2.1632396,12.624017 1.8625683,12.223122 1.6746488,11.884867 1.4867292,11.534084 1.3990334,11.208357 q -0.075168,-0.325728 -0.075168,-0.651455 0,-0.400895 0.1127517,-0.8268457 Q 1.561897,9.2915774 1.8124565,8.7904584 2.0755438,8.2768117 2.4764389,7.687997 2.8773339,7.0866545 3.4410926,6.3475042 3.0903094,5.9716651 2.7771101,5.658466 2.4764389,5.3452666 2.2384074,5.0571236 2.012904,4.7689802 1.8750963,4.5058928 1.7498166,4.2302774 1.7498166,3.9296061 q 0,-0.3633111 0.1628636,-0.7015663 Q 2.2008235,2.6266973 2.5140228,2.0879945 2.83975,1.5367639 3.1654772,0.9730052 3.3032849,0.9354213 3.4786765,0.9604772 q 0.1753915,0.012528 0.3131992,0.0751677 -0.012528,0.1002238 -0.012528,0.2129756 0,0.1127517 0,0.2004475 0,0.2630873 0.037584,0.5136467 0.037584,0.2380315 0.1378077,0.4885909 Q 4.054963,2.701865 4.2303546,2.9774804 4.4057462,3.2530957 4.6938895,3.578823 5.2200642,4.1425816 5.808879,4.7439241 6.4102214,5.3327389 7.0240919,5.9215533 7.6379623,6.4978401 8.2518332,7.0615985 8.8657036,7.6128292 9.4294624,8.1264762 9.8303572,7.700525 10.105973,7.3747979 q 0.288143,-0.3382551 0.463534,-0.5888148 0.18792,-0.2505593 0.263088,-0.4510069 0.08769,-0.2004472 0.08769,-0.3883668 0,-0.2881434 -0.200447,-0.5387027 Q 10.531923,5.1448193 10.068388,4.7439241 9.6925497,4.4181971 9.454518,4.1926935 9.2164867,3.96719 9.0786789,3.7917984 8.9533994,3.6038789 8.9032873,3.4535433 8.8657036,3.3032076 8.8657036,3.127816 q 0,-0.3006713 0.3633112,-0.839374 0.3758391,-0.5512306 1.2778532,-1.37807665 0.100223,-0.0250559 0.263087,0.0250559 0.162863,0.0501119 0.288143,0.11275175 -0.01253,0.1252797 -0.02506,0.2129755 0,0.087696 0,0.1628636 0,0.1378077 0.03758,0.2505594 0.03758,0.1127518 0.150336,0.2505594 0.112752,0.1252797 0.313199,0.3131993 0.200448,0.1879195 0.526175,0.4760628 0.726622,0.6514545 1.014766,1.0398216 0.288143,0.375839 0.288143,0.6890381 0,0.2380317 -0.112752,0.5888148 -0.100224,0.3507831 -0.438479,0.8769578 -0.338255,0.5136467 -0.964653,1.240269 -0.613871,0.7266222 -1.641164,1.7163319 0.538702,0.4885909 0.914541,0.8519021 0.388367,0.3507827 0.663983,0.6138707 0.275615,0.263087 0.463535,0.451007 0.200447,0.187919 0.363311,0.338255 0.488591,0.451007 0.751678,0.814318 0.263087,0.363311 0.263087,0.651454 0,0.225504 -0.100223,0.463535 -0.25056,0.576287 -0.476063,1.127517 -0.225504,0.551231 -0.463535,1.165102 -0.313199,0.02506 -0.551231,-0.03758 -0.187919,-0.501119 -0.451007,-0.92707 -0.250559,-0.425951 -0.55123,-0.80179 Q 10.744899,13.200304 10.419172,12.862049 10.093445,12.523794 9.7677178,12.198066 9.1037353,11.546612 8.3270013,10.81999 7.5627949,10.093367 6.811117,9.4043289 6.0594387,8.7152906 5.3829281,8.1139482 4.7189459,7.5126054 4.242883,7.0991825 3.6916523,7.8258048 3.5037328,8.3519795 3.3283412,8.8656262 3.3283412,9.3291611 q 0,0.3758392 0.1628636,0.7642059 0.1753916,0.388367 0.5387027,0.851902 0.3758391,0.463535 0.9646538,1.027294 0.5888144,0.563759 1.4407165,1.315437 0.025055,0.06264 0,0.125279 z"
|
||||||
|
+ id="path11"
|
||||||
|
+ style="stroke-width:0.36652" />
|
||||||
|
</svg>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
diff --git a/app/editor/menus/block.tsx b/app/editor/menus/block.tsx
|
||||||
|
index 301c2610d..1e6917bd8 100644
|
||||||
|
--- a/app/editor/menus/block.tsx
|
||||||
|
+++ b/app/editor/menus/block.tsx
|
||||||
|
@@ -20,6 +20,7 @@ import {
|
||||||
|
MathIcon,
|
||||||
|
DoneIcon,
|
||||||
|
EmbedIcon,
|
||||||
|
+ BookmarkedIcon,
|
||||||
|
} from "outline-icons";
|
||||||
|
import * as React from "react";
|
||||||
|
import styled from "styled-components";
|
||||||
|
@@ -195,6 +196,13 @@ export default function blockMenuItems(dictionary: Dictionary): MenuItem[] {
|
||||||
|
keywords: "notice card suggestion",
|
||||||
|
attrs: { style: "tip" },
|
||||||
|
},
|
||||||
|
+ {
|
||||||
|
+ name: "container_notice",
|
||||||
|
+ title: dictionary.bibleNotice,
|
||||||
|
+ icon: <BookmarkedIcon />,
|
||||||
|
+ keywords: "notice card bible",
|
||||||
|
+ attrs: { style: "bible" },
|
||||||
|
+ },
|
||||||
|
{
|
||||||
|
name: "separator",
|
||||||
|
},
|
||||||
|
diff --git a/app/hooks/useDictionary.ts b/app/hooks/useDictionary.ts
|
||||||
|
index 6a73e6750..15b74aa9e 100644
|
||||||
|
--- a/app/hooks/useDictionary.ts
|
||||||
|
+++ b/app/hooks/useDictionary.ts
|
||||||
|
@@ -81,6 +81,8 @@ export default function useDictionary() {
|
||||||
|
warningNotice: t("Warning notice"),
|
||||||
|
success: t("Success"),
|
||||||
|
successNotice: t("Success notice"),
|
||||||
|
+ bible: t("Bible"),
|
||||||
|
+ bibleNotice: t("Bible quote"),
|
||||||
|
insertDate: t("Current date"),
|
||||||
|
insertTime: t("Current time"),
|
||||||
|
insertDateTime: t("Current date and time"),
|
||||||
|
diff --git a/app/scenes/Document/components/Document.tsx b/app/scenes/Document/components/Document.tsx
|
||||||
|
index a231a90ee..67684d36d 100644
|
||||||
|
--- a/app/scenes/Document/components/Document.tsx
|
||||||
|
+++ b/app/scenes/Document/components/Document.tsx
|
||||||
|
@@ -532,11 +532,6 @@ class DocumentScene extends React.Component<Props> {
|
||||||
|
</Flex>
|
||||||
|
</React.Suspense>
|
||||||
|
</MaxWidth>
|
||||||
|
- {isShare &&
|
||||||
|
- !parseDomain(window.location.origin).custom &&
|
||||||
|
- !auth.user && (
|
||||||
|
- <Branding href="//www.getoutline.com?ref=sharelink" />
|
||||||
|
- )}
|
||||||
|
</Container>
|
||||||
|
{!isShare && (
|
||||||
|
<Footer>
|
||||||
|
diff --git a/app/scenes/Login/components/AuthenticationProvider.tsx b/app/scenes/Login/components/AuthenticationProvider.tsx
|
||||||
|
index 5d564453d..9e3c5b55b 100644
|
||||||
|
--- a/app/scenes/Login/components/AuthenticationProvider.tsx
|
||||||
|
+++ b/app/scenes/Login/components/AuthenticationProvider.tsx
|
||||||
|
@@ -70,7 +70,7 @@ function AuthenticationProvider(props: Props) {
|
||||||
|
<InputLarge
|
||||||
|
type="email"
|
||||||
|
name="email"
|
||||||
|
- placeholder="me@domain.com"
|
||||||
|
+ placeholder="email@domaine.fr"
|
||||||
|
value={email}
|
||||||
|
onChange={handleChangeEmail}
|
||||||
|
disabled={isSubmitting}
|
||||||
|
@@ -79,12 +79,12 @@ function AuthenticationProvider(props: Props) {
|
||||||
|
short
|
||||||
|
/>
|
||||||
|
<ButtonLarge type="submit" disabled={isSubmitting}>
|
||||||
|
- {t("Sign In")} →
|
||||||
|
+ {t("S'identifier")} →
|
||||||
|
</ButtonLarge>
|
||||||
|
</>
|
||||||
|
) : (
|
||||||
|
<ButtonLarge type="submit" icon={<EmailIcon />} fullwidth>
|
||||||
|
- {t("Continue with Email")}
|
||||||
|
+ {t("Accès membre (email)")}
|
||||||
|
</ButtonLarge>
|
||||||
|
)}
|
||||||
|
</Form>
|
||||||
|
@@ -99,7 +99,7 @@ function AuthenticationProvider(props: Props) {
|
||||||
|
icon={<PluginIcon id={id} />}
|
||||||
|
fullwidth
|
||||||
|
>
|
||||||
|
- {t("Continue with {{ authProviderName }}", {
|
||||||
|
+ {t("Accès {{ authProviderName }}", {
|
||||||
|
authProviderName: name,
|
||||||
|
})}
|
||||||
|
</ButtonLarge>
|
||||||
|
diff --git a/app/scenes/Login/index.tsx b/app/scenes/Login/index.tsx
|
||||||
|
index 9a9650b48..5357d5cf5 100644
|
||||||
|
--- a/app/scenes/Login/index.tsx
|
||||||
|
+++ b/app/scenes/Login/index.tsx
|
||||||
|
@@ -264,7 +264,7 @@ function Login({ children }: Props) {
|
||||||
|
) : (
|
||||||
|
<>
|
||||||
|
<StyledHeading as="h2" centered>
|
||||||
|
- {t("Login to {{ authProviderName }}", {
|
||||||
|
+ {t("Bienvenue sur Anthropologie Biblique", {
|
||||||
|
authProviderName: config.name || env.APP_NAME,
|
||||||
|
})}
|
||||||
|
</StyledHeading>
|
||||||
|
@@ -282,7 +282,7 @@ function Login({ children }: Props) {
|
||||||
|
{hasMultipleProviders && (
|
||||||
|
<>
|
||||||
|
<Note>
|
||||||
|
- {t("You signed in with {{ authProviderName }} last time.", {
|
||||||
|
+ {t("Vous vous êtes authentifié avec l'accès {{ authProviderName }} la dernière fois.", {
|
||||||
|
authProviderName: defaultProvider.name,
|
||||||
|
})}
|
||||||
|
</Note>
|
||||||
|
diff --git a/app/typings/styled-components.d.ts b/app/typings/styled-components.d.ts
|
||||||
|
index be368444f..ecfcae00c 100644
|
||||||
|
--- a/app/typings/styled-components.d.ts
|
||||||
|
+++ b/app/typings/styled-components.d.ts
|
||||||
|
@@ -54,6 +54,8 @@ declare module "styled-components" {
|
||||||
|
noticeWarningText: string;
|
||||||
|
noticeSuccessBackground: string;
|
||||||
|
noticeSuccessText: string;
|
||||||
|
+ noticeBibleBackground: string;
|
||||||
|
+ noticeBibleText: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Colors {
|
||||||
|
diff --git a/package.json b/package.json
|
||||||
|
index e0d3f56ea..fcd1ce270 100644
|
||||||
|
--- a/package.json
|
||||||
|
+++ b/package.json
|
||||||
|
@@ -160,6 +160,7 @@
|
||||||
|
"pg-tsquery": "^8.4.1",
|
||||||
|
"pluralize": "^8.0.0",
|
||||||
|
"png-chunks-extract": "^1.0.0",
|
||||||
|
+ "passport-req": "^0.1.1",
|
||||||
|
"polished": "^4.2.2",
|
||||||
|
"prosemirror-codemark": "^0.4.2",
|
||||||
|
"prosemirror-commands": "^1.5.2",
|
||||||
|
diff --git a/plugins/req/plugin.json b/plugins/req/plugin.json
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000..ae7c40333
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/plugins/req/plugin.json
|
||||||
|
@@ -0,0 +1,4 @@
|
||||||
|
+{
|
||||||
|
+ "name": "visiteur",
|
||||||
|
+ "description": "Adds an req compatible authentication provider."
|
||||||
|
+}
|
||||||
|
diff --git a/plugins/req/server/auth/req.ts b/plugins/req/server/auth/req.ts
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000..bc03fc6d3
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/plugins/req/server/auth/req.ts
|
||||||
|
@@ -0,0 +1,70 @@
|
||||||
|
+import passport from "@outlinewiki/koa-passport";
|
||||||
|
+import type { Context } from "koa";
|
||||||
|
+import Router from "koa-router";
|
||||||
|
+import { capitalize } from "lodash";
|
||||||
|
+import { Strategy as ReqStrategy } from "passport-req";
|
||||||
|
+import { slugifyDomain } from "@shared/utils/domains";
|
||||||
|
+import accountProvisioner from "@server/commands/accountProvisioner";
|
||||||
|
+import env from "@server/env";
|
||||||
|
+import passportMiddleware from "@server/middlewares/passport";
|
||||||
|
+import { User } from "@server/models";
|
||||||
|
+import { AuthenticationResult } from "@server/types";
|
||||||
|
+import {
|
||||||
|
+ StateStore,
|
||||||
|
+ getTeamFromContext,
|
||||||
|
+ getClientFromContext,
|
||||||
|
+} from "@server/utils/passport";
|
||||||
|
+
|
||||||
|
+const router = new Router();
|
||||||
|
+const providerName = "req";
|
||||||
|
+
|
||||||
|
+export const config = {
|
||||||
|
+ name: "visiteur",
|
||||||
|
+ enabled: true,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+if (true) {
|
||||||
|
+ passport.use(
|
||||||
|
+ new ReqStrategy(
|
||||||
|
+ async function (req,done) {
|
||||||
|
+ try {
|
||||||
|
+ const domain = "domain.tld";
|
||||||
|
+ const subdomain = domain.split(".")[0];
|
||||||
|
+ const teamName = capitalize(subdomain);
|
||||||
|
+ const name = "visiteur";
|
||||||
|
+ const email = "visiteur@anthropologiebiblique.fr";
|
||||||
|
+ const result = await accountProvisioner({
|
||||||
|
+ ip: req.ip,
|
||||||
|
+ team: {
|
||||||
|
+ name: teamName,
|
||||||
|
+ domain,
|
||||||
|
+ subdomain,
|
||||||
|
+ },
|
||||||
|
+ user: {
|
||||||
|
+ name: name,
|
||||||
|
+ email: email,
|
||||||
|
+ avatarUrl: null,
|
||||||
|
+ },
|
||||||
|
+ authenticationProvider: {
|
||||||
|
+ name: providerName,
|
||||||
|
+ providerId: domain,
|
||||||
|
+ },
|
||||||
|
+ authentication: {
|
||||||
|
+ providerId: "1234",
|
||||||
|
+ accessToken: null,
|
||||||
|
+ refreshToken: null,
|
||||||
|
+ scopes: [],
|
||||||
|
+ },
|
||||||
|
+ });
|
||||||
|
+ return done(null, result.user, result);
|
||||||
|
+ } catch (err) {
|
||||||
|
+ return done(err, null);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ )
|
||||||
|
+ );
|
||||||
|
+
|
||||||
|
+ router.get("req", passportMiddleware(providerName));
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+export default router;
|
||||||
|
\ No newline at end of file
|
||||||
|
diff --git a/server/emails/mailer.tsx b/server/emails/mailer.tsx
|
||||||
|
index f53e44b6b..bcf56efca 100644
|
||||||
|
--- a/server/emails/mailer.tsx
|
||||||
|
+++ b/server/emails/mailer.tsx
|
||||||
|
@@ -207,6 +207,7 @@ export class Mailer {
|
||||||
|
: {
|
||||||
|
rejectUnauthorized: false,
|
||||||
|
},
|
||||||
|
+ ignoreTLS:true
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/shared/editor/components/Styles.ts b/shared/editor/components/Styles.ts
|
||||||
|
index bdebcc6c0..ca670a66f 100644
|
||||||
|
--- a/shared/editor/components/Styles.ts
|
||||||
|
+++ b/shared/editor/components/Styles.ts
|
||||||
|
@@ -886,6 +886,20 @@ h6 {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+.notice-block.bible {
|
||||||
|
+ background: ${transparentize(0.9, props.theme.noticeBibleBackground)};
|
||||||
|
+ border-left: 4px solid ${props.theme.noticeBibleBackground};
|
||||||
|
+ color: ${props.theme.noticeBibleText};
|
||||||
|
+
|
||||||
|
+ .icon {
|
||||||
|
+ color: ${props.theme.noticeBibleBackground};
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ a {
|
||||||
|
+ color: ${props.theme.noticeBibleText};
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
blockquote {
|
||||||
|
margin: 0;
|
||||||
|
padding: 8px 10px 8px 1.5em;
|
||||||
|
diff --git a/shared/editor/nodes/Notice.tsx b/shared/editor/nodes/Notice.tsx
|
||||||
|
index bd976e69b..9ee40b8d5 100644
|
||||||
|
--- a/shared/editor/nodes/Notice.tsx
|
||||||
|
+++ b/shared/editor/nodes/Notice.tsx
|
||||||
|
@@ -1,5 +1,5 @@
|
||||||
|
import Token from "markdown-it/lib/token";
|
||||||
|
-import { WarningIcon, InfoIcon, StarredIcon, DoneIcon } from "outline-icons";
|
||||||
|
+import { WarningIcon, InfoIcon, StarredIcon, BookmarkedIcon, DoneIcon } from "outline-icons";
|
||||||
|
import { wrappingInputRule } from "prosemirror-inputrules";
|
||||||
|
import { NodeSpec, Node as ProsemirrorNode, NodeType } from "prosemirror-model";
|
||||||
|
import * as React from "react";
|
||||||
|
@@ -44,6 +44,8 @@ export default class Notice extends Node {
|
||||||
|
? "warning"
|
||||||
|
: dom.className.includes("success")
|
||||||
|
? "success"
|
||||||
|
+ : dom.className.includes("bible")
|
||||||
|
+ ? "bible"
|
||||||
|
: undefined,
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
@@ -93,6 +95,8 @@ export default class Notice extends Node {
|
||||||
|
component = <WarningIcon />;
|
||||||
|
} else if (node.attrs.style === "success") {
|
||||||
|
component = <DoneIcon />;
|
||||||
|
+ } else if (node.attrs.style === "bible") {
|
||||||
|
+ component = <BookmarkedIcon />;
|
||||||
|
} else {
|
||||||
|
component = <InfoIcon />;
|
||||||
|
}
|
||||||
|
diff --git a/shared/styles/theme.ts b/shared/styles/theme.ts
|
||||||
|
index 5f10aa263..137f125c9 100644
|
||||||
|
--- a/shared/styles/theme.ts
|
||||||
|
+++ b/shared/styles/theme.ts
|
||||||
|
@@ -31,6 +31,7 @@ const defaultColors: Colors = {
|
||||||
|
warning: "#f08a24",
|
||||||
|
success: "#2f3336",
|
||||||
|
info: "#a0d3e8",
|
||||||
|
+ bible: "#996633",
|
||||||
|
brand: {
|
||||||
|
red: "#FF5C80",
|
||||||
|
pink: "#FF4DFA",
|
||||||
|
@@ -96,6 +97,8 @@ const buildBaseTheme = (input: Partial<Colors>) => {
|
||||||
|
noticeSuccessBackground: colors.brand.green,
|
||||||
|
noticeSuccessText: colors.almostBlack,
|
||||||
|
tableSelectedBackground: transparentize(0.8, colors.accent),
|
||||||
|
+ noticeBibleBackground: "#996633",
|
||||||
|
+ noticeBibleText: colors.almostBlack,
|
||||||
|
breakpoints,
|
||||||
|
...colors,
|
||||||
|
...spacing,
|
||||||
|
@@ -234,6 +237,7 @@ export const buildDarkTheme = (input: Partial<Colors>): DefaultTheme => {
|
||||||
|
noticeTipText: colors.white,
|
||||||
|
noticeWarningText: colors.white,
|
||||||
|
noticeSuccessText: colors.white,
|
||||||
|
+ noticeBibleText: colors.white,
|
||||||
|
progressBarBackground: colors.slate,
|
||||||
|
scrollbarBackground: colors.black,
|
||||||
|
scrollbarThumb: colors.lightBlack,
|
||||||
|
diff --git a/yarn.lock b/yarn.lock
|
||||||
|
index c47df111a..3d7a8e387 100644
|
||||||
|
--- a/yarn.lock
|
||||||
|
+++ b/yarn.lock
|
||||||
|
@@ -10290,6 +10290,14 @@ passport-oauth@1.0.x:
|
||||||
|
passport-oauth1 "1.x.x"
|
||||||
|
passport-oauth2 "1.x.x"
|
||||||
|
|
||||||
|
+passport-req@^0.1.1:
|
||||||
|
+ version "0.1.1"
|
||||||
|
+ resolved "https://registry.yarnpkg.com/passport-req/-/passport-req-0.1.1.tgz#451bff1500b3d464a768d42f0762328a21236a18"
|
||||||
|
+ integrity sha512-9qmM0vD5v7jYLWxezNNCleOw+8IkVAuvOwQ6NJaUuJkdFJTR1KatXH1i5MxWgffx+libLWYLRUPtc6GHOmn+6w==
|
||||||
|
+ dependencies:
|
||||||
|
+ passport "~0.1.1"
|
||||||
|
+ pkginfo "0.2.x"
|
||||||
|
+
|
||||||
|
passport-slack-oauth2@^1.2.0:
|
||||||
|
version "1.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/passport-slack-oauth2/-/passport-slack-oauth2-1.2.0.tgz#d214a698b55a137393636a26827747f6c436dab4"
|
||||||
|
@@ -10320,6 +10328,14 @@ passport@^0.7.0:
|
||||||
|
pause "0.0.1"
|
||||||
|
utils-merge "^1.0.1"
|
||||||
|
|
||||||
|
+passport@~0.1.1:
|
||||||
|
+ version "0.1.18"
|
||||||
|
+ resolved "https://registry.yarnpkg.com/passport/-/passport-0.1.18.tgz#c8264479dcb6414cadbb66752d12b37e0b6525a1"
|
||||||
|
+ integrity sha512-qteYojKG/qth7UBbbGU7aqhe5ndJs6YaUkH2B6+7FWQ0OeyYmWknzOATpMhdoSTDcLLliq9n4Fcy1mGs80iUMw==
|
||||||
|
+ dependencies:
|
||||||
|
+ pause "0.0.1"
|
||||||
|
+ pkginfo "0.2.x"
|
||||||
|
+
|
||||||
|
passthrough-counter@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/passthrough-counter/-/passthrough-counter-1.0.0.tgz#1967d9e66da572b5c023c787db112a387ab166fa"
|
18
tests.toml
Normal file
18
tests.toml
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
test_format = 1.0
|
||||||
|
|
||||||
|
[default]
|
||||||
|
|
||||||
|
# ------------
|
||||||
|
# Tests to run
|
||||||
|
# ------------
|
||||||
|
|
||||||
|
preinstall = """
|
||||||
|
sudo yunohost domain add dex.domain.tld
|
||||||
|
"""
|
||||||
|
|
||||||
|
# -------------------------------
|
||||||
|
# Default args to use for install
|
||||||
|
# -------------------------------
|
||||||
|
|
||||||
|
args.dex_domain="dex.domain.tld"
|
||||||
|
args.dex_path="/example"
|
Loading…
Reference in a new issue