Aller au contenu principal

Instances auto-hébergées de CWClock

Kubernetes

Un helmchart est disponible sur ce dépôt (dans le dossier helm). Vous pouvez aussi utiliser la CLI cwclock avec la commande cwclock bootstrap.

Essayer avec docker

Sur ce dépôt, la stack complète (PostgreSQL, migrations Flyway, backend et frontend servi par nginx) peut être démarrée avec une seule commande :

docker compose up --build --force-recreate

Cela va :

  1. Démarrer une base de données PostgreSQL.
  2. Exécuter les migrations SQL avec Flyway.
  3. Construire et démarrer le backend Go, qui écoute sur http://localhost:8080.
  4. Construire le frontend React et le servir via nginx sur http://localhost:3000, en appelant directement le backend via la variable d'environnement CWCLOCK_API_URL.

Une fois démarré, ouvrez http://localhost:3000 dans votre navigateur.

Une image publique est disponible ici rg.fr-par.scw.cloud/cwclock-t8d7th/cwclock-api:latest.

Sécurité

Vous pouvez modifier la valeur par défaut des variables suivantes :

  • JWT_SECRET qui vaut changeme par défaut
  • CWCLOCK_CONFIRMATION_EMAIL_EXPIRATION qui vaut 24h par défaut (expiration du lien de l'email de confirmation ou du lien de réinitialisation de mot de passe)

Mode de confirmation

Il existe une variable d'environnement CWCLOCK_ACTIVATION_MODE qui est définie à admin par défaut. Cela nécessite d'activer le nouveau compte enregistré par un administrateur sans envoyer d'email de confirmation.

Sinon, vous pouvez définir cette variable à email et cela enverra des emails de confirmation via l'API email de CWCloud.

Configuration OIDC

CWClock prend en charge la configuration OIDC pour Google OIDC, Github et Keycloak.

Vous devez configurer les variables suivantes sur l'API :

CWCLOCK_UI_URL=https://{votre domaine frontend}
CWCLOCK_OIDC_GOOGLE_CLIENT_ID=
CWCLOCK_OIDC_GOOGLE_CLIENT_SECRET=
CWCLOCK_OIDC_GITHUB_CLIENT_ID=
CWCLOCK_OIDC_GITHUB_CLIENT_SECRET=
CWCLOCK_OIDC_KEYCLOAK_BASE_URL=
CWCLOCK_OIDC_KEYCLOAK_CLIENT_ID=
CWCLOCK_OIDC_KEYCLOAK_CLIENT_SECRET=
CWCLOCK_OIDC_KEYCLOAK_GROUPS=

Voici l'URL de redirection/callback pour le frontend : https://{votre domaine api}/oidc/callback

Et voici l'URL de redirection/callback pour chaque fournisseur pour l'authentification API :

  • Google OIDC : https://{votre domaine api}/v1/oidc/google/callback
  • Github : https://{votre domaine api}/v1/oidc/github/callback
  • Keycloak : https://{votre domaine api}/v1/oidc/keycloak/callback

Récupérer l'identifiant et le secret client depuis Google OIDC

1/ Rendez-vous sur la console GCP et recherchez "OIDC" :

google-oidc-1

Vous arriverez sur la "Google Auth Platform"

2/ Créez une nouvelle application cliente :

google-oidc-2

Renseignez les URI de redirection avec les URLs suivantes :

  • https://{votre domaine api}/v1/oidc/google/callback
  • https://{votre domaine frontend}/oidc/callback

Renseignez aussi les Authorised JavaScript origins avec https://{votre domaine frontend}

3/ Copiez/collez l'identifiant client et le secret client (dans les variables d'environnement CWCLOCK_OIDC_GOOGLE_CLIENT_ID et CWCLOCK_OIDC_GOOGLE_CLIENT_SECRET) :

google-oidc-3

Récupérer l'identifiant et le secret client depuis Github

1/ Rendez-vous dans les paramètres développeurs :

github-oidc-1

2/ Créez une nouvelle "OAuth App"

github-oidc-2

Renseignez l'URI de redirection avec l'URL suivante : https://{votre domaine api}/oidc/callback

3/ Générez un nouveau secret client :

github-oidc-3

4/ Copiez/collez l'identifiant client et le secret client (dans les variables d'environnement CWCLOCK_OIDC_GITHUB_CLIENT_ID et CWCLOCK_OIDC_GITHUB_CLIENT_SECRET) :

github-oidc-4

API Email

CWClock peut envoyer des emails (pour les liens de confirmation, la régénération de mot de passe, l'envoi de factures) via l'API email de CWCloud.

Vous devez configurer les variables d'environnement suivantes :

  • CWCLOUD_API_URL (qui est définie par défaut à https://api.cwcloud.tech mais si vous utilisez un tenant séparé de CWCloud, vous pouvez surcharger cette valeur)
  • CWCLOUD_API_KEY qui attend une clé API
  • CWCLOUD_CONTACT_FORM_ID l'id du formulaire de contact de CWCloud
  • CWCLOCK_MAIL_FROM qui est l'expéditeur des emails
  • CWCLOCK_LIMIT_MAIL qui est une limite mensuelle d'emails envoyés par une organisation (100 par défaut)

Si elle n'est pas configurée, CWClock fonctionnera quand même mais n'enverra pas d'emails.

Note : si vous ne souhaitez pas utiliser l'API email ou de formulaire de contact de CWCloud, il vous suffira de créer des endpoints compatibles qui feront ce que vous souhaitez.