2021-04-04 23:28:38 +05:00
#  Alfis
2021-02-22 23:46:37 +01:00
2021-02-23 16:34:18 +01:00

2021-02-22 23:43:32 +01:00
2021-02-16 18:06:46 +01:00
Alternative Free Identity System
2021-05-02 12:55:51 +02:00
This project represents a minimal blockchain without cryptocurrency, capable of sustaining any number of domain names in a bunch of original alternative zones.
2021-09-16 18:26:29 +02:00
Not so clear? Hold on.
## This software provides:
2025-10-28 00:25:32 +01:00
- Tiny and [peer-to-peer ](https://en.wikipedia.org/wiki/Peer-to-peer ) synchronized database of domain names.
The consistency of this database is based on [blockchain ](https://en.wikipedia.org/wiki/Blockchain ) technology that prevents retroactive changing of data, and has strict cryptographical consensus.
- DNS server with cache and enhanced security features. It resolves the domains from database and forwards all regular DNS-requests to some other resolver – your router, Google DNS, Cloudflare DNS, or [AdGuard DNS ](https://dns.adguard.com/ ) (if you want to block ads and trackers).
2021-09-16 18:26:29 +02:00
- Other systems need you to organize and run several DNS-servers to resolve their domains and regular domains, we have both in one.
Moreover, ALFIS can forward requests of regular domains to [DNS-over-HTTPS ](https://en.wikipedia.org/wiki/DNS_over_HTTPS ) server. The security and privacy is right here.
- Convenient graphical user interface to create domains in this alternative domain system. If you want just to use it like a DNS-server you can run it with `-n` flag or just build/download the variant without GUI.
2021-02-16 23:27:25 +01:00
2021-03-31 14:03:20 +02:00

2021-03-18 12:35:40 +01:00
2021-05-31 09:50:00 +02:00

2021-02-25 16:13:33 +01:00
2021-05-31 09:50:00 +02:00

2021-05-13 14:43:30 +02:00
2025-10-28 00:25:32 +01:00
## How does it work?
2021-05-09 16:58:14 +02:00
Every node connects to its siblings and synchronizes the domain database.
This DB consists of cryptographically bound blocks, that contain encrypted domain names, contacts, and some info, if you wish.
There are 10 domain zones available to get domain in:
`.anon` , `.btn` , `.conf` , `.index` , `.merch` , `.mirror` , `.mob` , `.screen` , `.srv` , `.ygg` .
But, `.anon` and `.ygg` are bound to have IP-addresses from Yggdrasil Network only.
2021-02-16 23:27:25 +01:00
2021-03-19 16:36:13 +01:00
## Building and running
2021-02-16 23:27:25 +01:00
### On every OS
2021-03-19 16:36:13 +01:00
You can download and run already built binaries from [releases ](https://github.com/Revertron/Alfis/releases ), or you can build project yourself.
2021-05-31 09:50:00 +02:00
You can build Alfis by issuing `cargo build --release` and `cargo run --release` commands in a directory of cloned repository.
2021-02-16 23:27:25 +01:00
2021-12-22 20:28:05 +01:00
If you want to build a version without GUI and without DoH:
`cargo build --release --no-default-features`
And this for build without GUI, but with DoH:
`cargo build --release --no-default-features --features="doh"`
2021-04-04 11:04:01 +05:00
###  On Windows
2021-02-16 23:27:25 +01:00
You don't need any additional steps to build Alfis, just stick to the MSVC version of Rust.
2021-03-19 16:36:13 +01:00
If you see an error about missing `VCRUNTIME140.dll` when running alfis you will need to install [VC Redistributable ](https://www.microsoft.com/en-us/download/details.aspx?id=52685 ) from Microsoft.
2025-10-28 00:25:32 +01:00
The GUI version uses WebView2 (Edge-based rendering engine), which is included by default on Windows 10/11. If you're on an older system, you may need to install [WebView2 Runtime ](https://developer.microsoft.com/en-us/microsoft-edge/webview2/ ).
2021-03-19 16:36:13 +01:00
2021-04-04 11:04:01 +05:00
###  On Windows (MINGW64)
2021-02-16 23:27:25 +01:00
If you'd rather use Gnu version of Rust you can build Alfis by these steps:
```
2021-02-22 23:46:37 +01:00
pacman -S git mingw64/mingw-w64-x86_64-rust mingw64/mingw-w64-x86_64-cargo-c
2021-02-16 23:27:25 +01:00
git clone https://github.com/Revertron/Alfis.git
cd Alfis
cargo build
```
2021-04-04 11:04:01 +05:00
###  On Linux
2025-10-28 00:25:32 +01:00
If you are building on Linux, you must ensure that you have `libwebkitgtk` library installed.
You can do it by issuing this command: `sudo apt install libwebkit2gtk-4.1-dev` (on Debian/Ubuntu and derivatives).
2021-04-03 17:44:49 +05:00
2021-04-04 11:04:01 +05:00
####  On Arch Linux
2021-04-03 17:44:49 +05:00
2021-05-10 13:05:39 +05:00
Install from available [AUR package ](https://aur.archlinux.org/packages/alfis ) created by [@pztrn ](https://github.com/pztrn ):
2021-04-03 17:44:49 +05:00
``` sh
2021-05-10 13:05:39 +05:00
yay -S alfis
2021-04-03 17:44:49 +05:00
```
2021-04-05 01:17:11 +02:00
2021-09-13 17:13:31 +03:00
#### <img src="https://www.gentoo.org/assets/img/logo/icon-192.png" alt="Gentoo Logo" width=16 height=16> On Gentoo Linux
Available in [dm9pZCAq overlay ](https://github.com/gentoo-mirror/dm9pZCAq )
``` sh
eselect repository enable dm9pZCAq
emerge --sync dm9pZCAq
emerge net-dns/alfis
```
2025-02-06 17:51:26 +01:00
### <img src="https://nixos.org/favicon.ico" alt="NixOS Logo" style="height: 1em"> On Nix/NixOS
2021-05-31 09:50:00 +02:00
`nix-shell` in this repo and then run `cargo build --release` and `cargo install` after you have entered the shell.
2021-05-14 01:06:46 -07:00
2021-04-05 01:17:11 +02:00
## Installation
2021-04-14 12:59:47 +02:00
### Debian/Ubuntu (only blockchain DNS, without GUI)
If you want to just use ALFIS as a DNS daemon and resolve domains in blockchain, as well as clearnet domains.
You just need to install `alfis` service from repo and change your resolver in `/etc/resolv.conf` .
Beware of NetworkManager, it can change your resolvers at will.
2021-04-05 01:17:11 +02:00
1. Download repository public key and add it to your APT
```
2024-07-29 20:04:59 +02:00
gpg --fetch-keys https://deb.revertron.com/key.txt
gpg --export F244E16645D86D62 | sudo tee /usr/local/apt-keys/alfis.gpg > /dev/null
2021-04-05 01:17:11 +02:00
```
2025-10-28 00:25:32 +01:00
2. Add a repository path to sources list
2021-04-05 01:17:11 +02:00
```
2024-07-29 20:04:59 +02:00
echo 'deb [signed-by=/usr/local/apt-keys/alfis.gpg] https://deb.revertron.com/ debian alfis' | sudo tee /etc/apt/sources.list.d/alfis.list
2021-04-05 01:17:11 +02:00
```
2021-05-09 16:58:14 +02:00
3. Update packages and install ALFIS
2021-04-05 01:17:11 +02:00
```
2021-05-09 16:58:14 +02:00
sudo apt update && sudo apt install alfis
2021-04-05 01:17:11 +02:00
```
2021-05-09 16:58:14 +02:00
4. Enable and start the service
2021-04-05 01:17:11 +02:00
```
2021-05-09 16:58:14 +02:00
systemctl enable --now alfis
2021-04-05 01:17:11 +02:00
```
After that configuration is in file `/etc/alfis.conf` and data is saved to `/var/lib/alfis` .
2021-04-14 12:59:47 +02:00
If you have some DNS server bound to port 53, it will not properly start. Deal with it on your own.
2022-04-13 19:50:39 +05:00
### openSUSE (without GUI)
1. Add repo:
```
zypper ar --refresh obs://home:Werwolf2517 home:Werwolf2517
```
2. Refresh repos cache
```
zypper --gpg-auto-import-keys refresh
```
3. Install package
```
zypper install -y Alfis
```
4. Run daemon
```
systemctl enable --now alfis
```
2022-01-04 14:04:54 +01:00
### Docker
If you want to run ALFIS in docker container, you can do this by running:
``` shell
docker run --rm --name alfis -p 53:53/tcp -p 53:53/udp cofob/alfis
```
2021-05-09 16:58:14 +02:00
### GUI version Windows/Linux/macOS (if you want to create and change domains)
2021-04-14 12:59:47 +02:00
If you want to create and manage your own domains on blockchain, you will need a version with GUI.
2025-10-28 00:25:32 +01:00
You can download it from [releases ](https://github.com/Revertron/Alfis/releases ) section, choose the appropriate OS and architecture version.
2021-04-14 12:59:47 +02:00
It needs to be without `nogui` suffix.
Just unzip that archive in some directory and run `alfis` (or `alfis.exe` ) binary.
2025-10-28 00:25:32 +01:00
By default, it searches for a config file, named `alfis.toml` in current working directory, and creates/changes `blockchain.db` file in the same directory.
2021-05-06 10:55:13 +02:00
If you want it to load config from another file you can command it so: `alfis -c /etc/alfis.conf` .
## Roadmap
2025-10-28 00:25:32 +01:00
1. Stabilize blockchain functions (domain transfer, info & contacts in UI), bug hunting and fixing. ✅
2. ~~Change DNS server/proxy to own resource saving implementation (using trust-dns-proto for RR parsing).~~
2021-05-31 09:50:00 +02:00
3. P2P traffic encryption (ECDH). ✅
2025-10-28 00:25:32 +01:00
4. ~~Web-GUI to manage your node from browser.~~
2021-11-07 14:45:36 +01:00
## Remarkable contributions
* [@umasterov ](https://github.com/umasterov ) contributed fantastic logo for this project.