Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# Tinyauth Docs

This is the source code of the documentation site for my project [Tinyauth](https://github.com/steveiliop56/tinyauth).

I18N, Translation FR added
Comment on lines +4 to +5

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line is not needed in the readme.

10 changes: 5 additions & 5 deletions astro.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,11 @@ export default defineConfig({
Footer: "./src/components/footer.astro",
},
title: "Tinyauth",
defaultLocale: 'root',
locales: {
root: { label: 'English', lang: 'en' },
fr: { label: 'Français', lang: 'fr' },
},
credits: true,
logo: {
src: "./public/tinyauth.png",
Expand Down Expand Up @@ -197,10 +202,5 @@ export default defineConfig({
},
],
}),
umami({
hostUrl: "https://analytics.doesmycode.work",
endpointUrl: "https://analytics.doesmycode.work",
id: "ed560a2b-b321-4745-b2f8-d7de846aeb7f",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please do not remove the site analytics.

}),
],
});
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"@types/qrcode": "^1.5.6",
"@yeskunall/astro-umami": "^0.0.8",
"astro": "6.1.8",
"astro-mermaid": "^2.0.1",
"astro-mermaid": "2.1.0",
"bcryptjs": "^3.0.3",
"countup.js": "^2.10.0",
"mermaid": "^11.14.0",
Expand All @@ -27,4 +27,4 @@
"engines": {
"node": "v25.5.0"
}
}
}
11 changes: 6 additions & 5 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

30 changes: 30 additions & 0 deletions src/content/docs/fr/docs/__translated.log

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason for this file? If not, please remove it.

Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
about.mdx | 1e889f449f5781c37104f9fad86ebf05
getting-started.mdx | b3b7fbd6b492e7801a5b02ed9913daca
reference/authentication.mdx | 564bab6b6e0ebd699ab03a5d48353722
reference/cli.mdx | de1c9df802761e6c17b46a2154df21fd
reference/flow.mdx | b409573c18bf4d1e074d2b0c344f2f7a
reference/telemetry.mdx | 6bccf6ee6529b2102a60b941966febfa
reference/configuration.mdx | 879be81a8538a7e2fd34e845d72c14ad
reference/labels.mdx | f4c48667df3809d065d12aa18e9af6e5
reference/headers.mdx | fa5ae5af5e8b980a3acc8c514e23e1e1
reference/changelog.mdx | ccacf94861c67e850177a65b90eab1ea
integrations/zerobyte.mdx | bdfebd729458f1ccf700224241b8157c
contributing/contributing.mdx | 1117d6fcc0d32b5a03fa627fa6bdc756
community/caddy.mdx | 710ea501a1cd18548103fcec7d76e862
community/kubernetes.mdx | 64852f2004d533664e6d08b65933b536
community/zitadel-oauth.mdx | 87d3b156a281bc9766dbba67108b3ae0
guides/using-the-binary.mdx | 50b3931bfd96bc9a6af5f39f7b4504fd
guides/totp.mdx | e8be1169ed48c1bb18ccee71e2c9a9f8
guides/ldap.mdx | a7e1a57c7b7a05cf42008c5715a00bd6
guides/advanced.mdx | 53ebcfb055e8ced55920f4635aa0d1d3
guides/pocket-id.mdx | e878532c0d9ce788e8bb9108cea75a9c
guides/github-oauth.mdx | 7fa3d1894e9aba9a7b93db6abd1d05b3
guides/nginx-proxy-manager.mdx | 0f856cad69a3257483e11f08075e98d2
guides/runtipi.mdx | fe4741add036704f5a27612e8647735e
guides/github-app-oauth.mdx | 5c3af2177ffa72fc159f12576b855c2d
guides/oidc.mdx | 31d911c3ebac4b3f8f0a63bb5b07ebcf
guides/access-controls.mdx | c6025b8b7f82077ae1f3768574820dff
guides/google-oauth.mdx | 0025aef51ecea6181957b57beacb7c7a
guides/other-oauth.mdx | 6b96c12dde8ed0b207cf69c9d3e0dc10
breaking-updates/3-to-4.mdx | 9893d8c7366a64fe0938614b28b9ac0a
breaking-updates/4-to-5.mdx | 845a7fb26416ea0ebf77b4ce2de67eaa
1 change: 1 addition & 0 deletions src/content/docs/fr/docs/__untranslated.log

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
breaking-updates/4-to-5-migrator.astro | Erreur: Le fichier '4-to-5-migrator.astro' ne correspond à aucun pattern autorisé : *.txt, *.md*, *.json
22 changes: 22 additions & 0 deletions src/content/docs/fr/docs/about.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
title: "À propos"
description: "Quelques mots sur Tinyauth."
---

Avant d'installer Tinyauth, il est naturel de se demander, _Pourquoi choisir Tinyauth plutôt que Authelia, Authentik ou Keycloak?_ C'est une question valable, et la réponse réside dans sa simplicité et son focus.

## Le défi de l'authentification dans les homelabs

Un middleware d'authentification est souvent utilisé pour protéger les applications qui ne disposent pas de screens de connexion intégrés ou pour ajouter une couche supplémentaire de sécurité. Alors que des projets comme Authelia, Authentik et Keycloak sont des solutions performantes, ils peuvent être difficiles à configurer pour les nouveaux utilisateurs, gourmands en ressources (car conçus pour un usage d'entreprise), ou lourds à mettre en place et à maintenir. Tinyauth répond à ces défis.

## La motivation derrière Tinyauth

Tinyauth a été développé comme un défi personnel pour créer une application robuste et résoudre les problèmes courants rencontrés avec les solutions d'authentification existantes. De nombreuses alternatives ne disposaient pas de support natif pour l'authentification directe de Traefik et nécessitaient des plugins et conteneurs supplémentaires. Tinyauth a été conçu autour de la simplicité comme principe fondamental — aucun tableau de bord complexe, aucun fichier de configuration intriqué, aucune dépendance externe. Tout est configuré à l'aide de variables d'environnement simples.

## Cas d'utilisation appropriés

Tinyauth n'est pas destiné aux environnements de production. Son objectif principal est d'ajouter un écran de connexion aux applications dans les homelabs ou de faciliter le partage de ressources avec la famille et les amis. Pour des scénarios nécessitant une gestion avancée des utilisateurs, Authentik est recommandé.

## Orientation future

Tinyauth a atteint un état mature, prenant en charge des fonctionnalités essentielles telles que OAuth, TOTP, LDAP et les contrôles d'accès. Il s'intègre parfaitement aux proxies populaires comme Nginx, Traefik et Caddy. L'accent restera sur le maintien de cette simplicité tout en introduisant des mises à jour améliorant la qualité de vie. Aucun plan n'est prévu pour introduire des tableaux de bord ou des fichiers de configuration complexes, préservant ainsi l'idée fondamentale du projet.
179 changes: 179 additions & 0 deletions src/content/docs/fr/docs/breaking-updates/3-to-4.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,179 @@
---
title: "Mise à jour de la version v3 vers v4"
description: "Un guide pour aider à migrer de Tinyauth v3 vers v4."
---

Tinyauth v4 introduit plusieurs changements majeurs qui nécessitent une migration manuelle. Ce guide décrit les mises à jour nécessaires pour une mise à niveau fluide.

## SQLite Database

À partir de la version 4, Tinyauth est une application avec état qui utilise une base de données SQLite pour stocker les sessions. Ce changement améliore la sécurité. Pour les configurations Docker, incluez le volume suivant :

```yaml
services:
tinyauth:
volumes:
- ./data:/data
```

Pour les installations binaires, le chemin de la base de données peut être modifié à l'aide de l'option suivante :

| Environnement | Indicateur | Description | Valeur par défaut | Requis |
| --------------- | ----------------- | -------------------------------------------------- | ------------------- | -------- |
| `DATABASE_PATH` | `--database-path` | Le chemin où la base de données SQLite sera stockée. | `/data/tinyauth.db` | no |

:::note
La base de données SQLite ne stocke pas les options de configuration. Toute la configuration est toujours effectuée à l'aide de variables d'environnement ou de drapeaux CLI. Si la persistance des sessions entre les redémarrages n'est pas une préoccupation, le volume de la base de données peut être omis.
:::

## OAuth

Le backend OAuth a été réécrit pour prendre en charge plusieurs fournisseurs OAuth. Les options suivantes sont obsolètes :

- `GITHUB_CLIENT_ID`/`--github-client-id`
- `GITHUB_CLIENT_SECRET`/`--github-client-secret`
- `GITHUB_CLIENT_SECRET_FILE`/`--github-client-secret-file`
- `GOOGLE_CLIENT_ID`/`--google-client-id`
- `GOOGLE_CLIENT_SECRET`/`--google-client-secret`
- `GOOGLE_CLIENT_SECRET_FILE`/`--google-client-secret-file`
- `GENERIC_CLIENT_ID`/`--generic-client-id`
- `GENERIC_CLIENT_SECRET`/`--generic-client-secret`
- `GENERIC_CLIENT_SECRET_FILE`/`--generic-client-secret-file`
- `GENERIC_AUTH_URL`/`--generic-auth-url`
- `GENERIC_TOKEN_URL`/`--generic-token-url`
- `GENERIC_USER_URL`/`--generic-user-url`
- `GENERIC_SCOPES`/`--generic-scopes`
- `GENERIC_NAME`/`--generic-name`
- `GENERIC_SKIP_SSL`/`--generic-skip-ssl`

La nouvelle configuration pour les fournisseurs OAuth inclut un nom dynamique dans la clé de configuration (ID du fournisseur) qui sera utilisé pour les URL de rappel et l'identification au sein des points d'API. Les nouvelles options de configuration sont :

| Environnement | Indicateur | Description | Valeur par défaut | Requis |
| ------------------------------------------- | --------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------ | -------- |
| `PROVIDERS_[PROVIDER]_CLIENT_ID` | `--providers-[provider]-client-id` | L'ID du client pour le client OAuth. | `` | yes |
| `PROVIDERS_[PROVIDER]_CLIENT_SECRET` | `--providers-[provider]-client-secret` | Le secret du client pour le client OAuth. | `` | yes |
| `PROVIDERS_[PROVIDER]_CLIENT_SECRET_FILE` | `--providers-[provider]-client-secret-file` | Un chemin vers un fichier contenant le secret du client OAuth. | `` | no |
| `PROVIDERS_[PROVIDER]_SCOPES` | `--providers-[provider]-scopes` | Les scopes nécessaires pour le fournisseur OAuth. | `` | yes |
| `PROVIDERS_[PROVIDER]_REDIRECT_URL` [^1] | `--providers-[provider]-redirect-url` | L'URL de redirection pour le fournisseur OAuth. | `` | yes |
| `PROVIDERS_[PROVIDER]_AUTH_URL` | `--providers-[provider]-auth-url` | L'URL d'authentification pour le fournisseur OAuth. | `` | yes |
| `PROVIDERS_[PROVIDER]_TOKEN_URL` | `--providers-[provider]-token-url` | L'URL de token pour le fournisseur OAuth. | `` | yes |
| `PROVIDERS_[PROVIDER]_USER_INFO_URL` [^2] | `--providers-[provider]-user-info-url` | L'URL d'information utilisateur pour le fournisseur OAuth. | `` | yes |
| `PROVIDERS_[PROVIDER]_INSECURE_SKIP_VERIFY` | `--providers-[provider]-insecure-skip-verify` | Ignorer la vérification du certificat SSL pour le fournisseur. | `false` | no |
| `PROVIDERS_[PROVIDER]_NAME` | `--providers-[provider]-name` | Le nom du fournisseur OAuth (pour le bouton UI). | Provider ID with first letter capitalized. | no |

[^1]: Ceci est requis pour le moment. Bien que certains fournisseurs gèrent cela automatiquement, il est suggéré de le définir quand même.

[^2]: Veuillez noter l'ajout de `_INFO_` dans le nom de cette option.

Par exemple, pour configurer Google OAuth :

```
PROVIDERS_GOOGLE_CLIENT_ID=my-client-id
PROVIDERS_GOOGLE_CLIENT_SECRET=my-client-secret
```

Ou avec les drapeaux CLI :

```
--providers-google-client-id=my-client-id --providers-google-client-secret=my-client-secret
```

:::caution
Assurez-vous de modifier les URLs de rappel dans les paramètres de votre fournisseur OAuth pour correspondre à l'ID du fournisseur. Par exemple, si votre configuration est `PROVIDERS_GOOGLE_CLIENT_ID`, l'ID du fournisseur est `google` et l'URL de rappel est `https://tinyauth.example.com/api/oauth/callback/google`.
:::

:::note
L'utilisation de `google` ou `github` comme ID de fournisseur déclenche le remplissage automatique des informations requises (par exemple, l'URL de redirection, les scopes). Vous n'aurez à fournir que l'ID du client et le secret.
:::

## Labels

Les étiquettes ont été restructurées. Les étiquettes obsolètes incluent :

- `tinyauth.users`
- `tinyauth.allowed`
- `tinyauth.headers`
- `tinyauth.domain`
- `tinyauth.basic.password.plain`
- `tinyauth.basic.password.file`
- `tinyauth.basic.username`
- `tinyauth.oauth.whitelist`
- `tinyauth.oauth.groups`
- `tinyauth.ip.allow`
- `tinyauth.ip.block`
- `tinyauth.ip.bypass`

La nouvelle structure utilise des identifiants spécifiques à l'application :

| Nom | Description |
| ----------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `tinyauth.apps.[app].config.domain` | Le domaine où l'application protégée est exposée. Tinyauth utilisera cela pour identifier le conteneur approprié. |
| `tinyauth.apps.[app].users.allow` | Une liste séparée par des virgules d'utilisateurs autorisés à accéder à l'application. |
| `tinyauth.apps.[app].users.block` | Une liste séparée par des virgules d'utilisateurs non autorisés à accéder à l'application. |
| `tinyauth.apps.[app].oauth.whitelist` | Une liste séparée par des virgules ou une expression régulière d'adresses e-mail autorisées à accéder à l'application (provenant d'OAuth). |
| `tinyauth.apps.[app].oauth.groups` | Une liste séparée par des virgules de groupes OAuth requis pour qu'un utilisateur accède à l'application. |
| `tinyauth.apps.[app].ip.allow` | Une liste séparée par des virgules d'adresses IP ou de CIDR autorisées à accéder à l'application. |
| `tinyauth.apps.[app].ip.block` | Une liste séparée par des virgules d'adresses IP ou de CIDR non autorisées à accéder à l'application. |
| `tinyauth.apps.[app].ip.bypass` | Une liste séparée par des virgules d'adresses IP ou de CIDR pour lesquelles l'authentification ne sera pas requise afin d'accéder à l'application. |
| `tinyauth.apps.[app].response.headers` | Une liste séparée par des virgules d'en-têtes que Tinyauth inclura dans sa réponse (utile pour l'authentification aux applications protégées avec des jetons). |
| `tinyauth.apps.[app].response.basicauth.username` | Nom d'utilisateur utilisé par Tinyauth pour s'authentifier à une application cible via l'authentification basique. |
| `tinyauth.apps.[app].response.basicauth.password` | Mot de passe utilisé par Tinyauth pour s'authentifier à une application cible via l'authentification basique. |
| `tinyauth.apps.[app].response.basicauth.passwordfile` | Un chemin vers un fichier contenant le mot de passe utilisé par Tinyauth pour s'authentifier à une application cible via l'authentification basique. |
| `tinyauth.apps.[app].path.allow` | Une expression régulière des chemins qui ne nécessitent pas d'authentification. |
| `tinyauth.apps.[app].path.block` | Une expression régulière des chemins qui nécessiteront une authentification (signifiant que tous les autres chemins sont autorisés). |

Par exemple, si votre configuration actuelle ressemble à ceci :

```yaml
services:
whoami:
labels:
tinyauth.users: user1,user2
```

Vous devrez également le modifier :

```yaml
services:
whoami:
labels:
tinyauth.apps.whoami.users.allow: user1,user2
```

:::note
Le mécanisme de découverte des étiquettes utilise désormais le nom de l'application dans le sous-domaine de la requête. Par exemple, `myapp.example.com` correspond à `tinyauth.apps.myapp.foo: bar`. La découverte d'étiquettes basée sur le nom du conteneur n'est plus prise en charge.
:::

:::note
Il est conseillé de passer à l'étiquette `tinyauth.apps.[app].config.domain` pour une meilleure découverte.
:::

## Configuration Changes

Les options suivantes sont obsolètes :

- `SECRET`/`--secret`
- `SECRET_FILE`/`--secret-file`
- `DISABLE_CONTINUE`/`--disable-continue`

Options modifiées :

| Actuel | Nouveau | Valeurs |
| ----------------------------------- | ----------------------------------- | ----------------------------------------------------------- |
| `COOKIE_SECURE` (`--cookie-secure`) | `SECURE_COOKIE` (`--secure-cookie`) | `true`, `false` |
| `LOG_LEVEL` (`--log-level`) | `LOG_LEVEL` (`--log-level`) | `trace`, `debug`, `info`, `warn`, `error`, `fatal`, `panic` |

## API Changes

L'API a été mise à jour. Si vous utilisez l'API directement, veuillez consulter les sources du [contrôleur](https://github.com/steveiliop56/tinyauth/tree/main/internal/controller). Tous les chemins d'API ont le préfixe `/api`. Plus important encore, le chemin de vérification de santé a changé.

| Chemin actuel | Nouveau chemin | Méthode |
| ------------------ | -------------- | ------ |
| `/api/healthcheck` | `/api/healthz` | `GET` |
| `/api/healthcheck` | `/api/healthz` | `HEAD` |

Il existe également une nouvelle commande `tinyauth healthcheck` qui vérifiera automatiquement si le serveur est en bonne santé en utilisant votre configuration actuelle. L'image Docker inclut la vérification de santé suivante :

```dockerfile
HEALTHCHECK --interval=30s --timeout=5s --start-period=5s --retries=3 CMD ["tinyauth", "healthcheck"]
```
Loading