||4 weeks ago|
|src||4 weeks ago|
|static||2 months ago|
|.gitignore||4 weeks ago|
|Cargo.lock||2 months ago|
|Cargo.toml||2 months ago|
|LICENSE.txt||1 month ago|
|README.md||4 weeks ago|
|config-dev.yml.tpl||4 weeks ago|
|config.yml||4 weeks ago|
|default.nix||5 months ago|
|flake.lock||2 months ago|
|flake.nix||4 weeks ago|
|rust-toolchain.toml||2 months ago|
|shell.nix||5 months ago|
Domani is a self-hosted rust service which connects a DNS hostname to a data backend (e.g. a git repository), all with no account needed. The user only inputs their domain name, their desired backend, and then adds two entries to their DNS server.
Domani supports serving domains using the following protocols:
- HTTPS (with SSL certificates automatically retrieved using LetsEncrypt)
Files are served as-is, with their extension being used to determine
Content-Type. If a directory is requested (e.g.
will be requested if the protocol is HTTP, or
index.gmi if the protocol is
Domani uses nix flakes for building and setting up the development environment.
In order to create a release binary:
A statically compiled binary will be placed in the
Domani is configured via a YAML file whose path is given on the command-line.
The format of the YAML file, along with all default values, can be found in the
config.yml file in this repo.
The YAML config file can be passed to the Domani process via the
domani --config-path <path>
By default HTTPS is not enabled, but can be enabled by setting the
service.http.https_addr field in the YAML config. There are a few other fields
in the configuration file which must be correctly configured if HTTPS is set up,
please read through the example file above carefully.
Once HTTPS is enabled, Domani will automatically handle setting it up via LetsEncrypt for both the Domani web interface and all domains which it is configured to serve.
Domani uses nix flakes for building and setting up the development environment. In order to open a shell with all necessary tooling (expected rust toolchain versions, etc...) simply do:
cp config-dev.yml.tpl config-dev.yml nix develop
Within the shell which opens you can do
cargo run to start a local instance.
Using the default configuration, the domain
domani-test.localhost should be
immediately available at:
Tutorials aimed at beginner users.
Support for more backends than just git repositories, including:
- Small static files (e.g. for well-knowns)
Automatic HTTP/gemtext rendering for markdown files.
Automatic HTTP rendering for gemtext files.