Domani connects your domain to whatever you want to host on it, all with no account needed
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
domani/README.md

97 lines
2.8 KiB

11 months ago
# Domani
1 year ago
11 months ago
Domani is a self-hosted rust service which connects a DNS hostname to a data
1 year ago
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.
[Demo](https://domani.micropelago.net)
1 year ago
Domani supports serving domains using the following protocols:
- HTTP
- HTTPS (with SSL certificates automatically retrieved using LetsEncrypt)
- [Gemini](https://gemini.circumlunar.space/)
Files are served as-is, with their extension being used to determine
Content-Type. If a directory is requested (e.g. `/some/dir/`) then `index.html`
will be requested if the protocol is HTTP, or `index.gmi` if the protocol is
gemini.
## Build
11 months ago
Domani uses nix flakes for building and setting up the development environment.
In order to create a release binary:
```
nix build
```
A statically compiled binary will be placed in the `result` directory.
A full release, which cross-compiles binaries for all supported platforms, can
be generated by doing:
```
nix build '.#release'
```
*NOTE* that cross-compiling will download a separate build environment for each
target platform, which can take up quite a bit of disk space (>10GB).
gigs).
## Configuration
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 `--config-path`
CLI parameter:
```
domani --config-path <path>
```
### HTTPS Support
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.
1 year ago
## Development
11 months ago
Domani uses nix flakes for building and setting up the development environment.
1 year ago
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
1 year ago
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:
* `http://domani-test.localhost:3080`
* `gemini://domani-test.localhost:3965`
1 year ago
## Roadmap
* Tutorials aimed at beginner users.
* Support for more backends than just git repositories, including:
* IPFS/IPNS
* Small static files (e.g. for well-knowns)
* Automatic HTTP/gemtext rendering for markdown files.
* Automatic HTTP rendering for gemtext files.