Compare commits

4 Commits
Author SHA1 Message Date
cedric bc64981023 docs(deploy): clarify CI SSH key transfer to server
Déploiement PROD / check (push) Failing after 3m44s
Déploiement PROD / deploy (push) Has been skipped
2026-07-25 22:01:10 +04:00
cedric 3620010212 feat: add ko-fi link 2026-07-25 21:52:29 +04:00
cedric aa86bf65e4 feat(donations): clickable OKI links in donation disclaimer 2026-07-25 21:52:29 +04:00
cedric e673b484ce feat(donations): default OKI links and transparency notice 2026-07-25 21:35:33 +04:00
6 changed files with 176 additions and 27 deletions
+55 -4
View File
@@ -59,6 +59,11 @@ usermod -aG www-data deploy
# Répertoire de l'application
mkdir -p /var/www/annu-kute-ced
chown -R deploy:www-data /var/www/annu-kute-ced
# Répertoire SSH de l'utilisateur deploy (préparé pour les clés publiques)
mkdir -p /home/deploy/.ssh
chmod 700 /home/deploy/.ssh
chown -R deploy:deploy /home/deploy/.ssh
----
== 3️⃣ Clone du dépôt
@@ -200,15 +205,61 @@ Ouvrir le site dans un navigateur : vidéos, podcasts, timeline et le bouton d'i
== 8️⃣ Clé SSH du CI
C'est la clé utilisée par le runner Gitea Actions pour déployer. Elle est *différente* de la deploy key de lecture (étape 3) : celle-ci doit pouvoir écrire dans le clone.
C'est la clé utilisée par le runner Gitea Actions pour se connecter au serveur et déployer. Elle est *différente* de la deploy key de lecture (étape 3) : celle-ci doit pouvoir écrire dans le clone.
Générez la paire de clés *sur votre poste local* (pas sur le serveur), puis transférez la clé publique sur le serveur pour l'autoriser.
[source,bash]
----
# Générer la paire SUR VOTRE POSTE (pas sur le serveur)
# Sur votre poste local
ssh-keygen -t ed25519 -f annu-kute-ced-deploy -C "ci-gitea-annu-kute-ced"
# Autoriser la clé publique pour l'utilisateur deploy
sudo -u deploy tee -a /home/deploy/.ssh/authorized_keys < annu-kute-ced-deploy.pub
# Affichez la clé publique (elle doit être copiée sur le serveur)
cat annu-kute-ced-deploy.pub
----
=== Transfert de la clé publique sur le serveur
Option A — copie directe avec `scp` (depuis votre poste) :
[source,bash]
----
# Sur votre poste local (adapter user@serveur si vous ne vous connectez pas en root)
scp annu-kute-ced-deploy.pub root@<IP_DU_SERVEUR>:/tmp/annu-kute-ced-deploy.pub
# Puis sur le serveur, ajoutez-la au fichier authorized_keys de deploy
sudo -u deploy mkdir -p /home/deploy/.ssh
sudo -u deploy tee -a /home/deploy/.ssh/authorized_keys < /tmp/annu-kute-ced-deploy.pub
----
Option B — connexion SSH sur le serveur, puis création manuelle du fichier :
[source,bash]
----
# Sur le serveur, connecté en root ou avec sudo
sudo -u deploy mkdir -p /home/deploy/.ssh
sudo -u deploy tee -a /home/deploy/.ssh/authorized_keys
# Coller le contenu de annu-kute-ced-deploy.pub, puis Ctrl+D
----
Quelle que soit la méthode, vérifiez les permissions :
[source,bash]
----
chown -R deploy:deploy /home/deploy/.ssh
chmod 700 /home/deploy/.ssh
chmod 600 /home/deploy/.ssh/authorized_keys
----
=== Test de la connexion CI
Avant d'enregistrer la clé privée dans Gitea, testez depuis votre poste que la connexion fonctionne avec la clé privée générée :
[source,bash]
----
# Sur votre poste local
ssh -i annu-kute-ced-deploy deploy@<IP_DU_SERVEUR> "whoami && hostname"
# Attendu : "deploy" et le nom du serveur, sans mot de passe demandé
----
La clé privée (`annu-kute-ced-deploy`, sans passphrase) ira dans les secrets Gitea à l'étape suivante. *Conservez-la en lieu sûr et ne la commitez jamais.*
+20 -8
View File
@@ -492,12 +492,12 @@ NOTE: La timeline n'a pas de flag d'activation : elle est toujours affichée sur
| Constante | Défaut | Description
| `DONATIONS_ENABLED`
| `false`
| `true`
| Activer le système (icône cœur, lien « Soutenir », page `/dons.php`)
| `LIBERAPAY_URL` / `KOFI_URL`
| `''` / `''`
| URLs des plateformes externes
| `'https://liberapay.com/OKI/donate'` / `''`
| URLs des plateformes externes. Par défaut le lien Liberapay pointe vers OKI, mainteneur de l'application.
| `STRIPE_ENABLED`
| `false`
@@ -518,9 +518,15 @@ NOTE: La timeline n'a pas de flag d'activation : elle est toujours affichée sur
| `DONATION_CURRENCY`
| `'EUR'`
| Devise
| `DONATIONS_OKI_DISCLAIMER`
| Texte explicite
| Message affiché sur `/dons.php` lorsque les liens pointent vers les comptes d'une organisation tierce (OKI par défaut). Laissez vide pour masquer.
|===
NOTE: Au moins une plateforme (LiberaPay, Ko-fi ou Stripe) doit être configurée pour que `dons.php` s'affiche, sinon la page renvoie une erreur 500.
NOTE: Au moins une plateforme (LiberaPay, Ko-fi ou Stripe) doit être configurée pour que `dons.php` s'affiche, sinon la page renvoie une erreur 500. Par défaut, seul le compte Liberapay de OKI est renseigné.
TIP: Si vous déployez une instance indépendante, remplacez `LIBERAPAY_URL` par votre propre lien et adaptez ou videz `DONATIONS_OKI_DISCLAIMER`.
.Compte à rebours (maintenance / lancement)
[cols="2,2,3",options="header"]
@@ -1422,12 +1428,12 @@ NOTE: The timeline has no enable flag: it is always displayed on the homepage.
| Constant | Default | Description
| `DONATIONS_ENABLED`
| `false`
| `true`
| Enable the system (heart icon, "Support" link, `/dons.php` page)
| `LIBERAPAY_URL` / `KOFI_URL`
| `''` / `''`
| External platform URLs
| `'https://liberapay.com/OKI/donate'` / `''`
| External platform URLs. By default the LiberaPay link points to OKI, the application maintainer.
| `STRIPE_ENABLED`
| `false`
@@ -1448,9 +1454,15 @@ NOTE: The timeline has no enable flag: it is always displayed on the homepage.
| `DONATION_CURRENCY`
| `'EUR'`
| Currency
| `DONATIONS_OKI_DISCLAIMER`
| Explanatory text
| Message shown on `/dons.php` when donation links point to a third-party organization (OKI by default). Leave empty to hide.
|===
NOTE: At least one platform (LiberaPay, Ko-fi or Stripe) must be configured for `dons.php` to render, otherwise the page returns a 500 error.
NOTE: At least one platform (LiberaPay, Ko-fi or Stripe) must be configured for `dons.php` to render, otherwise the page returns a 500 error. By default only OKI's LiberaPay account is set.
TIP: If you deploy an independent instance, replace `LIBERAPAY_URL` with your own link and update or clear `DONATIONS_OKI_DISCLAIMER`.
.Countdown (maintenance / launch)
[cols="2,2,3",options="header"]
+39
View File
@@ -82,6 +82,45 @@
text-align: center;
}
/* Avertissement de transparence sur la page de dons */
.donation-disclaimer {
max-width: 1200px;
margin: 0 auto 30px;
padding: 20px 24px;
background: var(--card-bg);
border: 1px solid var(--border-color);
border-left: 4px solid var(--primary-red);
border-radius: 12px;
color: var(--text-color);
box-shadow: var(--card-shadow);
}
.donation-disclaimer p {
margin: 0;
line-height: 1.6;
}
.donation-disclaimer i {
color: var(--primary-red);
margin-right: 10px;
}
.donation-disclaimer a {
color: var(--primary-red);
text-decoration: underline;
font-weight: 600;
}
.donation-disclaimer a:hover {
text-decoration: none;
}
@media (max-width: 1024px) {
.donation-disclaimer {
margin-bottom: 20px;
}
}
/* Interface de don */
.donation-interface {
background: var(--card-bg);
+25
View File
@@ -49,6 +49,24 @@ $currencySymbol = $currency === 'EUR' ? '€' : '$';
$stripeOneTimeLinks = defined('STRIPE_ONE_TIME_LINKS') ? STRIPE_ONE_TIME_LINKS : [];
$stripeMonthlyLinks = defined('STRIPE_MONTHLY_LINKS') ? STRIPE_MONTHLY_LINKS : [];
/**
* Convertit les URLs d'un texte en liens cliquables tout en échappant le reste.
* Utilisé pour le message de transparence sur les dons.
*/
function linkUrlsInText(string $text): string {
$parts = preg_split('/(https?:\/\/[^\s<]+)/i', $text, -1, PREG_SPLIT_DELIM_CAPTURE);
$result = '';
foreach ($parts as $i => $part) {
if ($i % 2 === 1) {
$url = htmlspecialchars($part, ENT_QUOTES, 'UTF-8');
$result .= '<a href="' . $url . '" target="_blank" rel="noopener noreferrer">' . $url . '</a>';
} else {
$result .= htmlspecialchars($part, ENT_QUOTES, 'UTF-8');
}
}
return $result;
}
?>
<!DOCTYPE html>
<html lang="fr">
@@ -133,6 +151,13 @@ $stripeMonthlyLinks = defined('STRIPE_MONTHLY_LINKS') ? STRIPE_MONTHLY_LINKS : [
<!-- Section principale de don -->
<section class="donation-main">
<!-- Avertissement de transparence (optionnel) -->
<?php if (defined('DONATIONS_OKI_DISCLAIMER') && !empty(DONATIONS_OKI_DISCLAIMER)): ?>
<div class="donation-disclaimer" role="note">
<p><i class="fas fa-info-circle"></i> <?php echo linkUrlsInText(DONATIONS_OKI_DISCLAIMER); ?></p>
</div>
<?php endif; ?>
<div class="donation-content">
<div class="donation-message">
<!-- PERSONNALISEZ: Votre message de don -->
+25 -14
View File
@@ -222,32 +222,43 @@ if (!defined('WORDPRESS_ENABLED')) define('WORDPRESS_ENABLED', false);
// =========================================
// Activation du système de dons par défaut
if (!defined('DONATIONS_ENABLED')) define('DONATIONS_ENABLED', false);
// Par défaut les dons sont activés et pointent vers les comptes de l'association
// ORGANISATION KA INTERNATIONALE (OKI), mainteneur de l'application.
// Modifiez ces valeurs dans config.local.php pour utiliser vos propres comptes.
if (!defined('DONATIONS_ENABLED')) define('DONATIONS_ENABLED', true);
// URLs des plateformes de don
if (!defined('LIBERAPAY_URL')) define('LIBERAPAY_URL', ''); // Ex: https://liberapay.com/votre-compte/donate
if (!defined('KOFI_URL')) define('KOFI_URL', ''); // Ex: https://ko-fi.com/votre-compte
if (!defined('LIBERAPAY_URL')) define('LIBERAPAY_URL', 'https://liberapay.com/OKI/donate');
if (!defined('KOFI_URL')) define('KOFI_URL', 'https://ko-fi.com/J3J5TOZPI'); // Ex: https://ko-fi.com/votre-compte
if (!defined('STRIPE_ENABLED')) define('STRIPE_ENABLED', false);
// Message de transparence affiché sur la page de dons.
// Renseignez ce texte lorsque les liens pointent vers les comptes d'une organisation
// tierce (par exemple OKI) afin d'expliquer aux visiteurs pourquoi.
// Les URLs présentes dans ce texte sont automatiquement transformées en liens cliquables.
if (!defined('DONATIONS_OKI_DISCLAIMER')) {
define('DONATIONS_OKI_DISCLAIMER', 'Les liens ci-dessous pointent vers les comptes de donation de l\'association ORGANISATION KA INTERNATIONALE (OKI) — o-k-i.net. Pour soutenir spécifiquement OKI : o-k-i.net/dons. Pour adapter cette page à votre propre instance, voir la documentation (lien "Code Source" en bas de la page)');
}
// Configuration Stripe
if (!defined('STRIPE_ONE_TIME_LINKS')) {
define('STRIPE_ONE_TIME_LINKS', [
1 => '', // Lien Stripe pour don de 1€
5 => '', // Lien Stripe pour don de 5€
10 => '', // Lien Stripe pour don de 10€
20 => '', // Lien Stripe pour don de 20€
50 => '', // Lien Stripe pour don de 50€
'custom' => '' // Lien Stripe pour montant personnalisé
1 => 'https://don.o-k-i.net/b/aEUdTw5SD3SH7m0bII', // Lien pour don de 1€
5 => 'https://don.o-k-i.net/b/4gw6r480L1Kz5dScMO', // Lien pour don de 5€
10 => 'https://don.o-k-i.net/b/5kA02G1Cn4WLbCgeUV', // Lien pour don de 10€
20 => 'https://don.o-k-i.net/b/fZebLo94PfBpayc5kn', // Lien pour don de 20€
50 => 'https://don.o-k-i.net/b/6oE5n05SDdth49O004', // Lien pour don de 50€
'custom' => 'https://don.o-k-i.net/b/6oE2aO94P88X9u8eV4' // Lien pour montant personnalisé
]);
}
if (!defined('STRIPE_MONTHLY_LINKS')) {
define('STRIPE_MONTHLY_LINKS', [
1 => '', // Lien Stripe pour don mensuel de 1€
5 => '', // Lien Stripe pour don mensuel de 5€
10 => '', // Lien Stripe pour don mensuel de 10€
20 => '', // Lien Stripe pour don mensuel de 20€
50 => '', // Lien Stripe pour don mensuel de 50€
1 => 'https://don.o-k-i.net/b/7sI9Dgch14WL7m0fZ3', // Lien pour don mensuel de 1€
5 => 'https://don.o-k-i.net/b/8wM4iW4Ozbl95dS6ow', // Lien pour don mensuel de 5€
10 => 'https://don.o-k-i.net/b/8wM2aO80L74TcGk3ci', // Lien pour don mensuel de 10€
20 => 'https://don.o-k-i.net/b/00g7v894P88XgWAfZ7', // Lien pour don mensuel de 20€
50 => 'https://don.o-k-i.net/b/4gw8zc6WHgFtcGkbIP', // Lien pour don mensuel de 50€
]);
}
+12 -1
View File
@@ -349,10 +349,14 @@ define('WORDPRESS_ENABLED', false);
// =========================================
// Activer/désactiver le système de dons
// Par défaut les dons sont activés et pointent vers le compte Liberapay de OKI.
// Décommentez et passez à false pour désactiver complètement la page de dons.
// define('DONATIONS_ENABLED', true);
// URLs des plateformes de don
// define('LIBERAPAY_URL', 'https://liberapay.com/votre-compte/donate');
// Les exemples ci-dessous reproduisent la configuration par défaut (OKI).
// Remplacez-les par vos propres comptes si vous déployez une instance indépendante.
// define('LIBERAPAY_URL', 'https://liberapay.com/OKI/donate');
// define('KOFI_URL', 'https://ko-fi.com/votre-compte');
// Activer/désactiver les dons via Stripe
@@ -383,6 +387,13 @@ define('WORDPRESS_ENABLED', false);
// Devise pour les dons
// define('DONATION_CURRENCY', 'EUR');
// Message de transparence affiché sur la page de dons.
// À renseigner si les liens pointent vers les comptes d'une organisation tierce
// (par exemple OKI) afin d'expliquer aux visiteurs pourquoi.
// Les URLs présentes dans ce texte sont automatiquement transformées en liens cliquables.
// Laissez vide ou commentez pour masquer ce message.
// define('DONATIONS_OKI_DISCLAIMER', 'Les liens ci-dessous pointent vers les comptes de donation de l\'association ORGANISATION KA INTERNATIONALE (OKI) — https://o-k-i.net. Pour soutenir spécifiquement OKI : https://o-k-i.net/dons. Pour adapter cette page à votre propre instance, voir la documentation : https://labola.o-k-i.net/cedric/annu-kute-ced');
// =========================================
// Texte de présentation du podcast
// =========================================