Initial commit

This commit is contained in:
nemunaire 2024-01-21 18:20:21 +01:00
commit ba1b4bfbe8
40 changed files with 474 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
assets/logo/happyDomain.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
assets/og.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 KiB

BIN
assets/og.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

BIN
assets/providers.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 739 KiB

BIN
assets/providers.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

1
en/Makefile Normal file
View File

@ -0,0 +1 @@
include ../pandoc-opts.mk

192
en/content.md Normal file
View File

@ -0,0 +1,192 @@
**happyDomain is a free and open-source interface that makes domain names accessibles and reduces the usual friction points.**\
Our modern interface centralizes your domains and includes all the features you'd expect these days for painless domain management.
We built happyDomain because we want to save operational teams time, by giving them superpowers:
to be in full control over their production's or internal domains, without having to read and learn all the regularly new standards, by staying focused on organizational needs.
Our mission is to help people become more independent on the Internet, in the face of the tech giants, by making domain names everyone's business.
\tableofcontents
\newpage
# The Origin
Back in 2018, Pierre-Olivier gave a lecture at a computer engineering school about system administration.
For a practical exercice, he implements a reduced hosting provider console, including domain management.
Students were astonished by the complexity, remembering Pierre-Olivier that no one at his job want to make domain updates.
At the same time [Stéphane Bortzmeyer commented on that complexity](https://www.bortzmeyer.org/hebergement-dns-chaton.html)[^sbortmeyer] for everyone else.
Clearly there was something to be done!
[^sbortmeyer]: <https://www.bortzmeyer.org/hebergement-dns-chaton.html>
# Feature List
Here's an overview of happyDomain's main features:
- consolidate domain names from over 45 domain name providers or authoritative servers,
- guide administrators with clear forms,
- clearly visualize the changes that will be propagated,
- keep a history of changes made to the zone,
- return to a previous zone status with a single click,
- group records by services/needs: email, delegation, server, load balancing, etc.
- abstract all technical complexity into a logical view,
- import/export the zone as a standard file,
- keep track of actions for later auditing,
- automate tasks via a REST API.
# Technical Details
happyDomain has an ultra-fast user interface, backed with a small footprint binary or container.
We use state of the art tech:
- Our interface is based on [SvelteKit](https://kit.svelte.dev/), and relies on a [Service Worker](https://developer.mozilla.org/docs/Web/API/Service_Worker_API) to have a reduced network footprint: only API requests are exchanged once first loaded.
- The server is a Golang binary: even large zones are processed in a flash on low power devices.
- To be deployed in modern stack, we provide a [Alpine-based Docker image](https://hub.docker.com/r/happydomain/happydomain/), suitable for Docker, Podman, Kubernetes, ... and available for most common architectures: `amd64`, `arm` and `arm64`.
For the DNS part, we rely on battle tested dependencies, such as:
- The great [miekg's DNS library](https://github.com/miekg/dns), used by [CoreDNS](https://coredns.io/), at the heart of Kubernetes.
- Providers' integrations are given by the fantastic [dnscontrol project](https://dnscontrol.org/) of StackOverflow.
happyDomain is built to last: designed from the ground-up for all kind of load, with security and efficiency in mind.
# Usage and Applications
Today, we welcome all system administrators to join our platform:
- employes managing internal or publicly available domains,
- freelances handling large portfolio of customers,
- communication agencies with countless domain names,
- geeks looking for new horizons,
- privacy aware individuals wanting to gain their independence.
Domain names are everybody's business.
We built a simple interface that aims to respond to concretes needs, hidding all the complexity, changing standards from users.
Employes and freelances will enjoy our effortless platform.
Think of the time spent regularly on DNS issues, dealing with sometimes insane providers interface or their lack for X or Y features.
Moreover, reading and understanding documentations or searching tutorial for your exact setup can be tedious.
Each organizational or client request can be treated in seconds without fear or doubt, even without looking for some nasty tutorial or insanely-technical documentation.
# How to Test happyDomain
We are a free and open source project: you can use the official interface available at [`www.happydomain.org`](https://www.happydomain.org/), or install it at home.
A demonstration is available at [`try.happydomain.org`](https://try.happydomain.org/): you can evaluate how happyDomain work, no account or domain required.
For an easy deployment, we provide [a Docker image](https://hub.docker.com/r/happydomain/happydomain/)[^dockerhub]:
```
docker run -e HAPPYDOMAIN_NO_AUTH=1 -p 8081:8081 happydomain/happydomain
```
The source code is available on Framagit[^framagit]: you can consult it, copy it, give your opinion, report bugs or make modifications, as you wish.
[^dockerhub]: <https://hub.docker.com/r/happydomain/happydomain/>
[^framagit]: <https://framagit.org/happyDomain/>
# Team and Community
happyDomain is built by a group of people based in Paris, in France.
Among others, Pierre-Olivier[^nemunaire] leads the developments and Frédéric federates the team.
[^nemunaire]: <https://nemunai.re/>
We're building a community of users who want to regain control of their domain names.
You can join us on our Matrix channel[^matrix], or find out more by following our blog[^blog] and our Mastodon account[^mastodon].
[^matrix]: <https://matrix.to/#/#happyDNS:matrix.org>
[^blog]: <https://blog.happydomain.org/>
[^mastodon]: <https://floss.social/@happyDomain>
# Contact Information
Don't hesitate to contact us at <press@happydomain.org> for any details or press inquiries.
# Frequently Asked Questions
#### Do you sell domain names? {-}
No, happyDomain does not sell domains yet.
To start using our interface, you need to buy a domain from one of our [supported providers](https://www.happydomain.org/providers/features).
#### I don't want to rely on my domain name hosting provider anymore. Can I host my domain name on your infrastructure? {-}
We'll provide such a feature in the near future, as it's on our manifest. We choose to focus first on spreading the word that domain names are accessibles to everyone through this sweet interface, before targeting privacy, censorship, …
#### I have my own infrastructure. Can I use happyDomain as a secondary authoritative server? {-}
We'll provide such feature in a near future, as soon as our name server infrastructure is ready.
# Media Assets
Main color: <span style="background: #1cb487; color: #fff; padding: 0.2em 0.5em; font-family: monospace">#1cb487</span>
## Logos
![happyDomain logo black](../assets/logo/happyDomain.png)\
happyDomain logo black
![happyDomain logo white](../assets/logo/happyDomain-white.png)\
happyDomain logo black
![happyDomain icon](../assets/logo/happyDomain-icon.png)\
happyDomain icon
![happyDomain rounded icon](../assets/logo/happyDomain-rounded.png)\
happyDomain rounded icon
## Screenshots
![happyDomain home page](../screenshots/domains-list.png)
**happyDomain's home page:**
domains are listed by group, with their status. Filters are on the right.
![import a domain in happyDomain](../screenshots/domain-import.png)
**Import a domain from a provider:**
when supported, just hit the button to synchronize it in happyDomain.
---
![domain abstraction created by happyDomain](../screenshots/domain-abstract.png)
**Main domain page**:
an abstract view of the zone, the raw records are grouped under services.
![happyDomain expose simple but complete forms](../screenshots/service-caa.png)
**The form to edit CAA records**:
each service is deeply explained, you are guided at each step.
---
![review the modifications before publishing them](../screenshots/zone-diff.png)
Modifications are not directly propagated: you choose when to apply them in one go.
**A diff is presented before applying changes, a good way to avoid visible mistakes.**
![happyDomain keeps a history](../screenshots/domain-history.png)
**happyDomain keeps an history:** view previous modifications, rollback in one click.
---
![happyDomain logs actions](../screenshots/domain-logs.png)
**happyDomain logs actions made on the domain:** allowing future audits.
\newpage
## Feature Graphics
![OpenGraph image](../assets/og.png)
![happyDomain supports more than 45 providers to date, more to come thanks to dnscontrol](../assets/providers.png)

BIN
en/first-page.pdf Normal file

Binary file not shown.

1
fr/Makefile Normal file
View File

@ -0,0 +1 @@
include ../pandoc-opts.mk

191
fr/content.md Normal file
View File

@ -0,0 +1,191 @@
**happyDomain est une interface libre et open-source qui rend les noms de domaine accessibles en réduisant les points de friction habituels.**\
Notre interface moderne centralise vos domaines et inclut toutes les fonctionnalités que vous attendriez aujourd'hui pour une gestion de domaine sans prise de tête.
Nous avons créé happyDomain parce que nous voulons faire gagner du temps aux équipes opérationnelles, en leur donnant des super-pouvoirs:
avoir un contrôle total sur leurs domaines tant en production qu'en interne, sans avoir à lire et à apprendre tous les nouveaux standards et en restant concentré sur les besoins organisationnels.
Notre mission est d'aider chacun à devenir plus indépendant sur Internet, face aux géants de la technologie, en faisant des noms de domaine l'affaire de tous.
\renewcommand*\contentsname{Sommaire}
\tableofcontents
\newpage
# L'origine
En 2018, Pierre-Olivier a donné un cours dans une école d'ingénieurs en informatique sur l'administration système.
Pour une série de travaux pratiques, il a mis en place une console d'hébergeur réduite, incluant notamment la gestion des domaines.
Pendant que les étudiants montrent leur étonnement face à la complexité des domaines, Pierre-Olivier constate que personne à son travail ne veut faire des mises à jour de domaine.
En même temps, [Stéphane Bortzmeyer commente cette complexité](https://www.bortzmeyer.org/hebergement-dns-chaton.html)[^sbortmeyer] pour M. et Mme Michu.
Il y avait clairement quelque chose à faire!
[^sbortmeyer]: <https://www.bortzmeyer.org/hebergement-dns-chaton.html>
# Liste des fonctionnalités
Voici un aperçu des principales fonctionnalités d'happyDomain:
- centraliser la gestion des domaines de plus de 45 fournisseurs de noms de domaine ou serveurs faisant autorité,
- guider les administrateurs avec des formulaires clairs,
- visualiser clairement les changements qui seront propagés,
- conserver l'historique des modifications apportées à la zone,
- revenir à un état antérieur de la zone en un seul clic,
- regrouper les enregistrements par services/besoins: email, délégation, serveur, répartition de charge, etc.
- éliminer toute la complexité technique grâce à une vue logique, plus simple,
- importer/exporter la zone depuis/vers un fichier Bind standard,
- garder une trace des actions pour un audit ultérieur,
- automatiser les tâches via une API REST.
# Détails techniques
happyDomain dispose d'une interface utilisateur ultra-rapide, propulsée par un binaire ou un conteneur léger.
Nous utilisons des technologies de pointe:
- Notre interface est basée sur [SvelteKit](https://kit.svelte.dev/) et s'appuie sur un [Service Worker](https://developer.mozilla.org/docs/Web/API/Service_Worker_API) pour avoir une empreinte réseau réduite: seules les requêtes API sont échangées une fois chargées pour la première fois.
- Le serveur est un programme Golang: même les grandes zones sont traitées en un clin d'œil sur les appareils à faible puissance.
- Pour être déployé dans une infrastructure moderne, nous fournissons une [image Docker basée sur Alpine](https://hub.docker.com/r/happydomain/happydomain/), adaptée à Docker, Podman, Kubernetes, ... et disponible pour les architectures les plus courantes: `amd64`, `arm` et `arm64`.
En ce qui concerne le DNS, nous nous appuyons sur des dépendances robustes, telles que:
- L'incroyable [bibliothèque DNS de miekg](https://github.com/miekg/dns), utilisée, entre autres, par [CoreDNS](https://coredns.io/), au cœur de Kubernetes.
- Les intégrations des fournisseurs sont données par le fantastique [projet dnscontrol](https://dnscontrol.org/) de StackOverflow.
happyDomain est construit pour durer: conçu dès le départ pour tous types de charge, avec la sécurité et l'efficacité à l'esprit.
# Utilisation et applications
Aujourd'hui, nous invitons tous les administrateurs système à rejoindre notre plateforme:
- les employés qui gèrent des domaines internes ou publics,
- les indépendants gérant un large portefeuille de domaines pour leurs clients,
- les agences de communication possédant d'innombrables noms de domaine,
- les geeks à la recherche de nouveaux horizons,
- les personnes soucieuses de la protection de leur vie privée et désireuses de gagner leur indépendance.
Les noms de domaine sont l'affaire de tous.
Nous avons construit une interface simple qui vise à répondre à des besoins concrets, en cachant aux utilisateurs toute la complexité et l'évolution des normes.
Employés et indépendants apprécieront notre sympathique plateforme.
Pensez au temps passé régulièrement sur des questions de DNS, que vous devez traiter avec les interfaces obscures des fournisseurs ou en faisant face à leur manque de fonctionnalités.
De plus, lire et comprendre des documentations ou chercher des tutoriels pour votre configuration exacte peut être fastidieux.
Avec happyDomain, chaque demande organisationnelle ou émanant de client peut être traitée en quelques secondes sans crainte ni doute, même sans avoir à chercher un tutoriel ou une documentation trop technique.
# Comment tester happyDomain?
Nous sommes un projet libre et open source: vous pouvez utiliser l'interface officielle disponible à [`www.happydomain.org`](https://www.happydomain.org/), ou l'installer chez vous.
Une démonstration est disponible à [`try.happydomain.org`](https://try.happydomain.org/): vous pouvez évaluer comment happyDomain fonctionne, sans compte ni domaine.
Pour un déploiement facile, nous fournissons [une image Docker](https://hub.docker.com/r/happydomain/happydomain/)[^dockerhub]:
```
docker run -e HAPPYDOMAIN_NO_AUTH=1 -p 8081:8081 happydomain/happydomain
```
Le code source est disponible sur Framagit[^framagit]: vous pouvez le consulter, le copier, donner votre avis, rapporter des bugs ou faire des modifications, comme vous le souhaitez.
[^dockerhub]: <https://hub.docker.com/r/happydomain/happydomain/>
[^framagit]: <https://framagit.org/happyDomain/>
# Équipe et communauté
happyDomain est développé par un groupe de personnes basées à Paris, en France.
Parmi elles, Pierre-Olivier[^nemunaire] dirige les développements et Frédéric fédère l'équipe.
[^nemunaire]: <https://nemunai.re/>
Nous construisons une communauté d'utilisateurs qui veulent reprendre le contrôle de leurs noms de domaine et/ou de leur vie privée.
Vous pouvez nous rejoindre sur notre canal Matrix[^matrix], ou en savoir plus en suivant notre blog[^blog] et notre compte Mastodon[^mastodon].
[^matrix]: <https://matrix.to/#/#happyDNS:matrix.org>
[^blog]: <https://blog.happydomain.org/>
[^mastodon]: <https://floss.social/@happyDomain>
# Nous contacter
N'hésitez pas à nous contacter à l'adresse <presse@happydomain.org> pour toute information ou demande de presse.
# Foire aux questions
#### Vendez-vous des noms de domaine? {-}
Non, happyDomain ne vend pas encore de domaines.
Pour commencer à utiliser notre interface, vous devez acheter un domaine auprès de l'un de nos [fournisseurs supportés](https://www.happydomain.org/providers/features).
#### Je ne veux plus dépendre de mon hébergeur de nom de domaine. Puis-je héberger mon nom de domaine sur votre infrastructure? {-}
Nous proposerons une telle fonctionnalité dans un avenir proche, car elle figure dans notre manifeste. Nous avons choisi de nous concentrer d'abord sur la diffusion de l'idée que les noms de domaine sont accessibles à tout le monde grâce à cette interface fonctionnelle, avant de nous concentrer sur la protection de la vie privée, la lutte contre la censure, ...
#### J'ai ma propre infrastructure. Puis-je utiliser happyDomain comme serveur d'autorité secondaire? {-}
Nous fournirons cette fonctionnalité dans un futur proche, dès que notre infrastructure de serveurs de noms sera prête.
# Ressources médias
Couleur principale: <span style="background: #1cb487; color: #fff; padding: 0.2em 0.5em; font-family: monospace">#1cb487</span>
## Logos
![happyDomain logo black](../assets/logo/happyDomain.png)\
Logo happyDomain noir
![happyDomain logo white](../assets/logo/happyDomain-white.png)\
Logo happyDomain blanc
![happyDomain icon](../assets/logo/happyDomain-icon.png)\
Icône happyDomain
![happyDomain rounded icon](../assets/logo/happyDomain-rounded.png)\
Icône arrondie happyDomain
## Captures d'écran
![happyDomain home page](../screenshots/domains-list.png)
**Page d'accueil d'happyDomain:**
les domaines sont regroupés, visibles avec leur statut. Les filtres se trouvent à droite.
---
![import a domain in happyDomain](../screenshots/domain-import.png)
**Import d'un domaine depuis un fournisseur:**
il suffit de cliquer sur le bouton pour le synchroniser dans happyDomain.
![domain abstraction created by happyDomain](../screenshots/domain-abstract.png)
**Page principale d'un domaine:**
une vue abstraite de la zone, les enregistrements bruts sont regroupés sous les services.
---
![happyDomain expose simple but complete forms](../screenshots/service-caa.png)
**Le formulaire pour éditer les enregistrements CAA:**
chaque service est expliqué en détail, vous êtes guidé à chaque étape.
![review the modifications before publishing them](../screenshots/zone-diff.png)
Les modifications ne sont pas directement propagées: vous choisissez quand les appliquer en une seule fois.
**Un diff est présenté avant l'application des modifications, ce qui permet d'éviter les erreurs visibles.**
---
![happyDomain keeps a history](../screenshots/domain-history.png)
**happyDomain garde un historique:** afficher les modifications précédentes, revenir en arrière en un seul clic.
![happyDomain logs actions](../screenshots/domain-logs.png)
**happyDomain enregistre les actions effectuées sur le domaine,** permettant des audits futurs.
## Images de présentation
![Image OpenGraph](../assets/og.png)
![happyDomain supporte plus de 45 fournisseurs à ce jour, d'autres sont à venir grâce à dnscontrol](../assets/providers.png)

BIN
fr/first-page.pdf Normal file

Binary file not shown.

59
header.tex Normal file
View File

@ -0,0 +1,59 @@
% Decent marging...
\usepackage[cm]{fullpage}
% Indentation for all paragraph (even the first one) + ventilate
\usepackage{indentfirst}
\setlength{\parskip}{6pt plus 2pt minus 1pt}
% Avoid vertical space before/after itemize
\usepackage{enumitem}
\setlist{nosep}
% Use sans-serif font for section' titles
\usepackage{sectsty}
\allsectionsfont{\sffamily \bfseries}
% Use sans-serif font for title page
\usepackage{titling}
\renewcommand{\maketitlehooka}{\sffamily}
% Use monospaced font for URLs
\usepackage{hyperref}
\urlstyle{tt}
% In french, list item starts with dash, not bullet
\renewcommand\labelitemi{---}
\usepackage{etoolbox}
\usepackage{tcolorbox}
\lstset{
belowcaptionskip=1\baselineskip,
xleftmargin=6pt,
xrightmargin=0.25pt,
backgroundcolor=\color{lightgray!20!white},
basicstyle=\ttfamily,
breakatwhitespace=false,
breaklines=true,
commentstyle=\color{SeaGreen},
columns=fullflexible,
deletekeywords={echo}{source},
extendedchars=true,
frame=l,
framerule=1.2pt,
framesep=5pt,
keepspaces=true,
keywordstyle=\color{blue},
rulecolor=\color{black},
showspaces=false,
showstringspaces=false,
showtabs=false,
stringstyle=\color{purple},
tabsize=4
}
\makeatletter
\pretocmd{\subsection}{\addtocontents{toc}{\protect\addvspace{-5\p@}}}{}{}
\pretocmd{\subsubsection}{\addtocontents{toc}{\protect\addvspace{-6\p@}}}{}{}
\makeatother

30
pandoc-opts.mk Normal file
View File

@ -0,0 +1,30 @@
PANDOCOPTS = --pdf-engine=lualatex \
--standalone \
--number-sections \
--listings \
-f markdown+smart \
-M fontsize=12pt \
-M papersize=a4 \
-M mainfont="Linux Libertine" \
-M monofont="Inconsolata" \
-M sansfont="Linux Biolinum" \
-M colorlinks=true \
-M linkcolor="black" \
-M urlcolor="ForestGreen" \
-M indent=true \
-V pdfa \
--include-in-header=../header.tex
all: press-kit.pdf
press-kit.pdf: first-page.pdf content.pdf
gs -dNOPAUSE -sDEVICE=pdfwrite -dAutoRotatePages=/None -sOUTPUTFILE=$@ -dBATCH $+
content.pdf: content.md
pandoc ${PANDOCOPTS} -o $@ $+
content.tex: content.md
pandoc ${PANDOCOPTS} -o $@ $+
clean::
rm -f content.pdf press-kit.pdf

Binary file not shown.

After

Width:  |  Height:  |  Size: 483 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 608 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

BIN
screenshots/domain-logs.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 601 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 303 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 349 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
screenshots/ose23.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
screenshots/ose23.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

BIN
screenshots/sdk-python.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

BIN
screenshots/sdk-python.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

BIN
screenshots/service-caa.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 509 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

BIN
screenshots/zone-diff.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 690 KiB

BIN
screenshots/zone-diff.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB