diff options
-rw-r--r-- | deploy/flake.lock | 12 | ||||
-rw-r--r-- | flake.lock | 4 | ||||
-rw-r--r-- | flakes/flake.lock | 2 | ||||
-rw-r--r-- | systems/eldiron/gemini/default.nix | 52 | ||||
-rw-r--r-- | systems/eldiron/gemini/public/index.gmi | 70 |
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 | }, |
@@ -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, ... }: |
2 | let | ||
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 | ''; | ||
13 | in | ||
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 | |||
5 | Dans 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 | |||
7 | Je 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 | |||
9 | Lorsque 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 | |||
11 | Depuis juin 2019 je fais partie du collectif CHATONS, dont je respecte en particulier la charte: | ||
12 | => https://chatons.org CHATONS | ||
13 | |||
14 | ## Tarifs | ||
15 | |||
16 | Je 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 | |||
21 | Voici 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 | |||
41 | Un tableau de bord des services est disponible : | ||
42 | => https://tools.immae.eu Tableau de bord des services | ||
43 | |||
44 | Je 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 | |||
46 | Si 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 | |||
52 | Vous devez commencer par accepter les conditions générales dgutilisation : | ||
53 | => https://www.immae.eu/CGU Conditions générales d’utilisation | ||
54 | Elles 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 | |||
56 | Ensuite, contactez-moi avec vos vœux : | ||
57 | => https://www.immae.eu/contacts_fr.html Page de contact | ||
58 | |||
59 | ## Infrastructure et open source | ||
60 | |||
61 | Dans 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 | |||
63 | Cette 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 | ||