aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIsmaël Bouya <ismael.bouya@normalesup.org>2023-10-06 14:56:57 +0200
committerIsmaël Bouya <ismael.bouya@normalesup.org>2023-10-06 17:05:06 +0200
commita59f486863020816cbc0d3fc69ac7926134215d0 (patch)
tree353ad195766e650e05d8fb73d80dac7f849807a7
parentf8df6790bb82a00b3900c6066595b5d62c63ee75 (diff)
downloadNix-a59f486863020816cbc0d3fc69ac7926134215d0.tar.gz
Nix-a59f486863020816cbc0d3fc69ac7926134215d0.tar.zst
Nix-a59f486863020816cbc0d3fc69ac7926134215d0.zip
Migrate gemini capsule to user config
-rw-r--r--deploy/flake.lock12
-rw-r--r--flake.lock4
-rw-r--r--flakes/flake.lock2
-rw-r--r--systems/eldiron/gemini/default.nix52
-rw-r--r--systems/eldiron/gemini/public/index.gmi70
5 files changed, 34 insertions, 106 deletions
diff --git a/deploy/flake.lock b/deploy/flake.lock
index 73e45f7..07a5473 100644
--- a/deploy/flake.lock
+++ b/deploy/flake.lock
@@ -2783,7 +2783,7 @@
2783 }, 2783 },
2784 "locked": { 2784 "locked": {
2785 "lastModified": 1, 2785 "lastModified": 1,
2786 "narHash": "sha256-uXrrLvmLWqk4wm2wIJVvWKWbTzc//GSU70qdTy3NDzE=", 2786 "narHash": "sha256-nEhIk4RloOuTKmJxzvJP3l4Ap1kqjg5YjnpjKHyE1N0=",
2787 "path": "../flakes", 2787 "path": "../flakes",
2788 "type": "path" 2788 "type": "path"
2789 }, 2789 },
@@ -3903,7 +3903,7 @@
3903 }, 3903 },
3904 "locked": { 3904 "locked": {
3905 "lastModified": 1, 3905 "lastModified": 1,
3906 "narHash": "sha256-wiEcgRls3HyHMPKsPfsKvrOHMntsJXy0lQNrBk/JJFY=", 3906 "narHash": "sha256-5Cvss4/y9e4l3QMI3azrsjfqnKnKJcW79IviACOVpX8=",
3907 "path": "../systems/eldiron", 3907 "path": "../systems/eldiron",
3908 "type": "path" 3908 "type": "path"
3909 }, 3909 },
@@ -8888,11 +8888,11 @@
8888 "nixpkgs": "nixpkgs_106" 8888 "nixpkgs": "nixpkgs_106"
8889 }, 8889 },
8890 "locked": { 8890 "locked": {
8891 "lastModified": 1696428371, 8891 "lastModified": 1696596844,
8892 "narHash": "sha256-Pod6jxwxtg6lz1z6lX4F2z6/DiXaEIxVdPWGBF8MkEo=", 8892 "narHash": "sha256-qtQL21ZF1N3EMqGo5RJq4ytWngsKYOv5mE/pSSxaJJM=",
8893 "ref": "master", 8893 "ref": "master",
8894 "rev": "5d6e12a0d26171adb523689ce54ea70616ca5ce7", 8894 "rev": "ac58ff30d8f1712ef115d3c8aaf8da2211662e90",
8895 "revCount": 697, 8895 "revCount": 698,
8896 "type": "git", 8896 "type": "git",
8897 "url": "git+ssh://gitolite@git.immae.eu/perso/Immae/Config/Nix/Nixops/Secrets" 8897 "url": "git+ssh://gitolite@git.immae.eu/perso/Immae/Config/Nix/Nixops/Secrets"
8898 }, 8898 },
diff --git a/flake.lock b/flake.lock
index c33b938..61d7371 100644
--- a/flake.lock
+++ b/flake.lock
@@ -2664,7 +2664,7 @@
2664 }, 2664 },
2665 "locked": { 2665 "locked": {
2666 "lastModified": 1, 2666 "lastModified": 1,
2667 "narHash": "sha256-uXrrLvmLWqk4wm2wIJVvWKWbTzc//GSU70qdTy3NDzE=", 2667 "narHash": "sha256-nEhIk4RloOuTKmJxzvJP3l4Ap1kqjg5YjnpjKHyE1N0=",
2668 "path": "./flakes", 2668 "path": "./flakes",
2669 "type": "path" 2669 "type": "path"
2670 }, 2670 },
@@ -3919,7 +3919,7 @@
3919 }, 3919 },
3920 "locked": { 3920 "locked": {
3921 "lastModified": 1, 3921 "lastModified": 1,
3922 "narHash": "sha256-wiEcgRls3HyHMPKsPfsKvrOHMntsJXy0lQNrBk/JJFY=", 3922 "narHash": "sha256-5Cvss4/y9e4l3QMI3azrsjfqnKnKJcW79IviACOVpX8=",
3923 "path": "../systems/eldiron", 3923 "path": "../systems/eldiron",
3924 "type": "path" 3924 "type": "path"
3925 }, 3925 },
diff --git a/flakes/flake.lock b/flakes/flake.lock
index 87f7424..677625d 100644
--- a/flakes/flake.lock
+++ b/flakes/flake.lock
@@ -3824,7 +3824,7 @@
3824 }, 3824 },
3825 "locked": { 3825 "locked": {
3826 "lastModified": 1, 3826 "lastModified": 1,
3827 "narHash": "sha256-wiEcgRls3HyHMPKsPfsKvrOHMntsJXy0lQNrBk/JJFY=", 3827 "narHash": "sha256-5Cvss4/y9e4l3QMI3azrsjfqnKnKJcW79IviACOVpX8=",
3828 "path": "../systems/eldiron", 3828 "path": "../systems/eldiron",
3829 "type": "path" 3829 "type": "path"
3830 }, 3830 },
diff --git a/systems/eldiron/gemini/default.nix b/systems/eldiron/gemini/default.nix
index 600afbc..fc21413 100644
--- a/systems/eldiron/gemini/default.nix
+++ b/systems/eldiron/gemini/default.nix
@@ -1,22 +1,7 @@
1{ lib, config, pkgs, ... }: 1{ lib, config, pkgs, ... }:
2let
3 configFile = pkgs.writeText "config.yaml" ''
4 listen: ":1965"
5 hosts:
6 immae.eu:
7 cert: /var/lib/acme/immae/full.pem
8 key: /var/lib/acme/immae/key.pem
9 paths:
10 - path: /
11 root: ${./public}
12 '';
13in
14{ 2{
15 options.myServices.gemini.enable = lib.mkEnableOption "enable Gemini capsule"; 3 options.myServices.gemini.enable = lib.mkEnableOption "enable Gemini capsule";
16 config = lib.mkIf config.myServices.gemini.enable { 4 config = lib.mkIf config.myServices.gemini.enable {
17 security.acme.certs.immae.postRun = ''
18 systemctl restart gemini.service
19 '';
20 myServices.chatonsProperties.hostings.gemini = { 5 myServices.chatonsProperties.hostings.gemini = {
21 file.datetime = "2022-08-27T18:00:00"; 6 file.datetime = "2022-08-27T18:00:00";
22 hosting = { 7 hosting = {
@@ -30,21 +15,34 @@ in
30 install.type = "PACKAGE"; 15 install.type = "PACKAGE";
31 }; 16 };
32 software = { 17 software = {
33 name = "twins"; 18 name = "stargazer";
34 website = "https://code.rocketnine.space/tslocum/twins"; 19 website = "https://git.sr.ht/~zethra/stargazer/";
35 license.url = "https://code.rocketnine.space/tslocum/twins/src/branch/master/LICENSE"; 20 license.url = "https://git.sr.ht/~zethra/stargazer/tree/main/LICENSE";
36 license.name = "MIT License"; 21 license.name = "GNU AFFERO GENERAL PUBLIC LICENSE Version 3";
37 version = pkgs.twins.version; 22 version = pkgs.stargazer.version;
38 source.url = "https://code.rocketnine.space/tslocum/twins"; 23 source.url = "https://git.sr.ht/~zethra/stargazer/";
39 }; 24 };
40 }; 25 };
41 networking.firewall.allowedTCPPorts = [ 1965 ]; 26 networking.firewall.allowedTCPPorts = [ 1965 ];
42 systemd.services.gemini = { 27 security.acme.certs = {
43 description = "Gemini capsule server"; 28 "gemini" = {
44 wantedBy = [ "multi-user.target" ]; 29 group = "stargazer";
45 after = [ "network.target" ]; 30 domain = "immae.eu";
46 serviceConfig.ExecStart = "${pkgs.twins}/bin/twins -config ${configFile}"; 31 keyType = "rsa4096";
47 serviceConfig.Type = "simple"; 32 postRun = ''
33 cp -a key.pem key_pkcs8.pem
34 sed -i -e "s/ RSA PRIVATE KEY/ PRIVATE KEY/" key_pkcs8.pem
35 systemctl restart stargazer.service
36 '';
37 extraDomainNames = [];
38 };
39 };
40 services.stargazer = {
41 enable = true;
42 ipLog = true;
43 requestTimeout = 0;
44 genCerts = false;
45 regenCerts = false;
48 }; 46 };
49 }; 47 };
50} 48}
diff --git a/systems/eldiron/gemini/public/index.gmi b/systems/eldiron/gemini/public/index.gmi
deleted file mode 100644
index 034a0d9..0000000
--- a/systems/eldiron/gemini/public/index.gmi
+++ /dev/null
@@ -1,70 +0,0 @@
1# Immae
2
3## Présentation
4
5Dans le but de promouvoir la décentralisation des données personnelles et l’usage de logiciels open source, je propose un hébergement de divers services utiles. Ces services sont basés sur du code libre et déployés sur des systèmes libres également.
6
7Je suis un particulier, et dans la mesure de mes capacités, j’essaye toujours de fournir des services à ma famille et à mes amis proches en remplacement de services non libres fournis par les géants du web. J’ai décidé de faire le nécessaire pour étendre ces services à un public plus large, avec pour but de conserver une qualité suffisante.
8
9Lorsque c’est possible, les programmes que je développe sont également libres de droits (ce n’est pas toujours dépendant de ma volonté ou tributaire de ma disponibilité pour rendre le code accessible)
10
11Depuis juin 2019 je fais partie du collectif CHATONS, dont je respecte en particulier la charte:
12=> https://chatons.org CHATONS
13
14## Tarifs
15
16Je ne cherche pas à faire de profits en proposant ces services. Cependant, l’hébergement de ces services n’est pas gratuit, et maintenir ces services à un niveau de qualité suffisant demande de l’investissement en temps. Ainsi, selon l’usage désiré, le niveau de personnalisation et support dont vous avez besoin et les moyens à votre disposition et votre volonté, une participation pourra être demandée afin d’y accéder.
17=> https://www.immae.eu/licences_et_tip.html Tips
18
19## Services proposés
20
21Voici une liste non exhaustive de services que je propose :
22
23* Mastodon
24* Nextcloud
25* Calendrier/Contacts et synchronisation
26* Hébergement de vidéos (Mediagoblin)
27* Hébergement de vidéos (Peertube)
28* Kanboard
29* Flux RSS
30* "Lire plus tard" (wallabag)
31* Partage de liens (Shaarli)
32* Raccourcisseur d’URLs
33* Édition de texte collaborative
34* Réseau social
35* Hébergement de dépôts git privés et publics, gestion d’issues
36* Messagerie instantanée (XMPP/Jabber)
37* Comptes e-mails avec domaines personnalisés, IMAP/SMTP, MX backup
38* Hébergement et administration de sites web privés
39* Comptes shell protégés
40
41Un tableau de bord des services est disponible :
42=> https://tools.immae.eu Tableau de bord des services
43
44Je propose également de l’aide à distance (ou de visu si la distance est faible), pour l’usage de ces outils ou d’autres problèmes liés à l’informatique.
45
46Si vous ne voyez pas ce que vous voulez dans la liste, nous pourrons essayer de trouver une solution ensemble. Je suis ouvert aussi bien sûr à la création de nouveaux services (la liste est encore incomplète et d’autres services sont déjà prévus), dans le cadre défini en haut : basé sur des applications libres.
47
48=> https://status.immae.eu État des services
49
50## Comment faire ?
51
52Vous devez commencer par accepter les conditions générales dgutilisation :
53=> https://www.immae.eu/CGU Conditions générales d’utilisation
54Elles ne contiennent rien d’inhabituel mais elles ont été écrites par moi-même, donc sans jargon juridique. Elles vous permettront de décider si les garanties proposées sont en accord avec ce que vous pouvez vous permettre.
55
56Ensuite, contactez-moi avec vos vœux :
57=> https://www.immae.eu/contacts_fr.html Page de contact
58
59## Infrastructure et open source
60
61Dans le but de pouvoir décemment offrir une qualité de service suffisante sans pour autant y passer mes journées, l’installation des services est gérée via NixOS, permettant d’assurer la reproductibilité et l’automatisation des installations.
62
63Cette configuration est stockée publiquement dans un dépôt git, réutilisable et améliorable librement (avec probablement quelques ajustements).
64=> https://git.immae.eu/cgit/perso/Immae/Config/Nix.git/ Dépôt git de la configuration
65
66
67=> https://www.immae.eu/contacts_fr.html Page de contact
68=> https://www.immae.eu/CGU Conditions générales d’utilisation
69=> https://www.immae.eu/mentions.html Mentions légales
70=> https://www.immae.eu/licences_et_tip.html Quelques informations sur les licences utilisées et tips