Héberger un serveur¶
Pré-requis¶
- Python >= 3.6
- PostgreSQL >= 10
En plus de cela, un service de stockage de type objet est nécessaire afin de stocker les blocs de données chiffrés. À cette fin, Amazon S3 et OpenStack Swift sont tous deux supportés.
Hébergement¶
La communication entre client et serveur est effectuée via des Websocket. Ce protocole fournit une communication bidirectionnelle (nécessaire afin que le serveur puisse notifier le client des changements) tout en s’appuyant sur des standards du web.
Le serveur Parsec respecte la philosophie des applications à 12 facteurs. De ce fait une instance du serveur ne contient pas d’état et peut être remplacée à tout moment, ce qui la rend idéale pour un hébergement sur du PAAS ou bien au sein d’une architecture à base de conteneurs.
Au final, d’un point de vue hébergement, le serveur Parsec est similaire à une application web classique.
Installation¶
python -m venv venv
. ./venv/bin/activate
pip install parsec-cloud[backend]
Démarrage¶
Use the parsec backend run
command to start Parsec server, for instance:
parsec backend run --port $PORT --host 0.0.0.0 --db postgresql://<...> --blockstore s3:<...> --administration-token <token>
Paramètres¶
Note
Settings can be specified by using environment variable PARSEC_CMD_ARGS
.
All available command line arguments can be used and environ variables
within it will be expanded. For instance:
DB_URL=postgres:///parsec PARSEC_CMD_ARGS='--db=$DB_URL --host=0.0.0.0' parsec backend run
Hôte¶
--host <host>, -H <host>
- Environnement:
PARSEC_HOST
- Défaut:
127.0.0.1
Host sur lequel écouter.
URL de la base de données¶
--db <url>
- Environnement:
PARSEC_DB
Configuration de la base de données
Variables autorisées:
MOCKED
: Simulé en mémoirepostgresql://<...>
: Utilise une base PostgreSQL
Avertissement
MOCKED
est disponible uniquement à des fins de développement et de test, il ne faut pas l’utiliser en production.
Connexion à la Base de données¶
--db-min-connections <int>
- Environnement:
PARSEC_DB_MIN_CONNECTIONS
- Défaut:
5
Nombre minimal de connexions à la base de données PostgreSQL.
--db-max-connections <int>
- Environnement:
PARSEC_DB_MAX_CONNECTIONS
- Défaut:
7
Nombre maximum de connexions à la base de données PostgreSQL.
URL de stockage des blocs¶
--blockstore <url>, -b <url>
- Environnement:
PARSEC_BLOCKSTORE
Configuration du stockage des blocs
Variables autorisées:
MOCKED
: Simulé en mémoirePOSTGRESQL
: Utilise la base de données définie via le paramètre--db
s3:[<endpoint_url>]:<region>:<bucket>:<key>:<secret>
: Use Amazon S3 storageswift:<auth_url>:<tenant>:<container>:<user>:<password>
: Use OpenStack SWIFT storage
endpoint_url/auth_url sont considérées comme HTTPS par défaut (s3:foo.com:[…] deviant https://foo.com. Des caractères d’échappement doivent être ajoutés pour fournir un schéma personnalisé (s3:http\://foo.com:[…]).
En plus de ça, plusieurs configurations de blockstore peuvent être fournies pour former une grappe RAID0/1/5.
Chaque configuration doit être passée sous la forme``<raid_type>:<node>:<config>`` avec <raid_type>
RAID0/RAID1/RAID5, <node>
un nombre et <config>
la configuration de type MOCKED/POSTGRESQL/S3/SWIFT.
Par exemple, pour configurer un RAID0 avec deux nœuds:
$ parsec backend run -b RAID0:0:MOCKED -b RAID0:1:POSTGRESQL [...]
Avertissement
MOCKED
et POSTGRESQL
sont disponibles uniquement à des fins de développement et de test, il ne faut pas les utiliser en production.
Jeton d’administration¶
--administration-token <token>
- Environnement:
PARSEC_ADMINISTRATION_TOKEN
Jeton secret pour accéder à l’api d’administration.
SSL¶
--ssl-keyfile <file>
- Environnement:
PARSEC_SSL_KEYFILE
Fichier de clé SSF. Permet d’utiliser Parsec au-dessus de SSL.
--ssl-certfile <file>
- Environnement:
PARSEC_SSL_CERTFILE
Fichier de certificat SSL. Permet d’utiliser Parsec au-dessus de SSL.
--forward-proto-enforce-https
- Environnement:
PARSEC_FORWARD_PROTO_ENFORCE_HTTPS
Impose le HTTPS en redirigeant les requêtes entrantes qui ne correspondent pas à l’entête fourni. Peut être utile lorsque Parsec tourne derrière un forward-proxy qui gère la couche SSL. N’utilisez ce paramètre que si vous avez le contrôle de votre proxy ou que vous avez la garantie qu’il gère correctement cet entête.
Logs¶
--log-level <level>, -l <level>
- Environnement:
PARSEC_LOG_LEVEL
- Défaut:
WARNING
Granularité des logs d’erreurs.
Doit être DEBUG
, INFO
, WARNING
, ERROR
ou CRITICAL
.
--log-format <format>, -f <format>
- Environnement:
PARSEC_LOG_FORMAT
- Défaut:
CONSOLE
Format de log utilisé. Doit être CONSOLE
ou JSON
.
--log-file <file>, -o <file>
- Environnement:
PARSEC_LOG_FILE
- Défaut: log dans stderr
Le fichier de log dans lequel écrire.
Email¶
--backend-addr
- Environnement:
PARSEC_BACKEND_ADDR
URL pour communiquer avec ce serveur (utilisé pour les emails d’invitation.
--email-host
- Environnement:
PARSEC_EMAIL_HOST
L’hôte à utiliser pour l’envoi d’email.
--email-port
- Environnement:
PARSEC_EMAIL_PORT
- Default:
25
Le port à utiliser pour le serveur STMP défini dans EMAIL_HOST.
--email-host-user
- Environnement:
PARSEC_EMAIL_HOST_USER
Le nom d’utilisateur à utiliser pour le serveur SMTP défini dans EMAIL_HOST.
--email-host-password
- Environnement:
PARSEC_EMAIL_HOST_PASSWORD
Le mot de passe à utiliser pour le serveur SMTP défini dans EMAIL_HOST. Ce mot de passe est utilisé avec EMAIL_HOST_USER pour l’authentification auprès du serveur SMTP.
--email-use-ssl
- Environnement:
PARSEC_EMAIL_USE_SSL
Utiliser ou non une connexion TLS sécurisée pour communiquer avec le serveur SMTP. Utilisé pour une connexion TLS explicite, généralement sur le port 587.
--email-use-tls
- Environnement:
PARSEC_EMAIL_USE_TLS
Utiliser ou non une connexion TLS sécurisée pour communiquer avec le serveur SMTP. Dans la plupart des documentation, ce type de connexion TLS est nommé SSL. Elle utilise généralement le port 465.À noter que --email-use-tls
/--email-use-ssl
sont mutuellement exclusifs, un seul doit être mis à True.
--email-language
- Environnement:
PARSEC_EMAIL_LANGUAGE
- Default:
en
La langue à utiliser dans les emails (Valeurs possibles: en
(Anglais) ou fr
(Français)).
Webhooks¶
--spontaneous-organization-bootstrap
- Environnement:
PARSEC_SPONTANEOUS_ORGANIZATION_BOOTSTRAP
Autoriser le démarrage d’une organisation sans l’avoir créée au préalable.
Sans cette option, une organisation doit d’abord être créée par un administrateur (voir parsec core create_organization
command) avant que le démarrage puisse être effectué.
With this flag, the server allows anybody to bootstrap an organanization by providing an empty bootstrap token given 1) the organization is not boostrapped yet and 2) the organization hasn’t been created by administration (which would act as a reservation and change the bootstrap token)
--organization-bootstrap-webhook
- Environnement:
PARSEC_ORGANIZATION_BOOTSTRAP_WEBHOOK
URL pour avertir les tierces parties qu’une nouvelle organisation a été démarrée.
Chaque fois qu’une organisation est démarée, un POST HTTP est envoyé à l’URL avec un corps application/json
qui contient les champs suivants: organization_id
, device_id
, device_label
(possiblement NULL), human_email
(possiblement NULL), human_label
(possiblement NULL).
Exemple :
{
"organization_id": "MyOrg",
"device_id": "123@abc",
"device_label": "laptop",
"human_email": "j.doe@example.com",
"human_label": "John Doe"
}
Sentry¶
--sentry-dsn <url>
- Environnement:
PARSEC_SENTRY_DSN
URL de Sentry utilisé pour la télémétrie.
--sentry-environment <name>
- Environnement:
PARSEC_SENTRY_ENVIRONMENT
- Default:
production
Paramètre de nom d’environnement de Sentry pour la télémetrie.
Débogage¶
--debug
- Environnement:
PARSEC_DEBUG
Active les informations de débogage.
--dev
Equivalent to --debug --db=MOCKED --blockstore=MOCKED --administration-token=s3cr3t
--email-sender=no-reply@parsec.com --email-host=MOCKED
--backend-addr=parsec://localhost:<port>(?no_ssl=False if ssl is not set)
.