A decentralized DNS and mesh network protocol
This project represents a minimal blockchain without cryptocurrency, capable of sustaining any number of domain names in a bunch of original alternative zones. Not so clear? Hold on.
- Very small and peer-to-peer synchronized database of domain names. The consistency of this database is based on blockchain technology, that prevents retroactive changing of data, and has strict cryptographical consensus.
- DNS server with cache, like you have in your Internet-router. 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 (if you want to block ads and trackers).
- Other systems need you to organize and run several DNS-servers to resolve their domains and regular domains, we have both in one. Moreover, RUVNAME can forward requests of regular domains to 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.
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 Ruvchain Network only.
You can download and run already built binaries from releases, or you can build project yourself.
You can build Ruvname by issuing cargo build --release
and cargo run --release
commands in a directory of cloned repository.
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"
You don't need any additional steps to build Ruvname, just stick to the MSVC version of Rust.
If you see an error about missing VCRUNTIME140.dll
when running ruvname you will need to install VC Redistributable from Microsoft.
If you want to use modern browser engine from Edge instead of old from IE, you need to build with this command: cargo build --release --features "edge"
(or use corresponding build from releases).
If you'd rather use Gnu version of Rust you can build Ruvname by these steps:
pacman -S git mingw64/mingw-w64-x86_64-rust mingw64/mingw-w64-x86_64-cargo-c
git clone https://github.com/ruvcoindev/Ruvname.git
cd Ruvname
cargo build
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.0-dev
(on Debian/Ubuntu and derivatives).
Install from available AUR package created by @pztrn:
yay -S ruvname
Available in dm9pZCAq overlay
eselect repository enable dm9pZCAq
emerge --sync dm9pZCAq
emerge net-dns/ruvname
nix-shell
in this repo and then run cargo build --release
and cargo install
after you have entered the shell.
If you want to just use RUVNAME as a DNS daemon and resolve domains in blockchain, as well as clearnet domains.
You just need to install ruvname
service from repo and change your resolver in /etc/resolv.conf
.
Beware of NetworkManager, it can change your resolvers at will.
- Download repository public key and add it to your APT
gpg --fetch-keys https://deb.revertron.com/key.txt
gpg --export F244E16645D86D62 | sudo tee /usr/local/apt-keys/ruvname.gpg > /dev/null
- Add repository path to sources list
echo 'deb [signed-by=/usr/local/apt-keys/ruvname.gpg] https://deb.revertron.com/ debian ruvname' | sudo tee /etc/apt/sources.list.d/ruvname.list
- Update packages and install RUVNAME
sudo apt update && sudo apt install ruvname
- Enable and start the service
systemctl enable --now ruvname
After that configuration is in file /etc/ruvname.conf
and data is saved to /var/lib/ruvname
.
If you have some DNS server bound to port 53, it will not properly start. Deal with it on your own.
- Add repo:
zypper ar --refresh obs://home:Werwolf2517 home:Werwolf2517
- Refresh repos cache
zypper --gpg-auto-import-keys refresh
- Install package
zypper install -y Ruvname
- Run daemon
systemctl enable --now ruvname
If you want to run RUVNAME in docker container, you can do this by running:
docker run --rm --name ruvname -p 53:53/tcp -p 53:53/udp cofob/ruvname
If you want to create and manage your own domains on blockchain, you will need a version with GUI.
You can download it from releases section, choose appropriate OS and architecture version.
It needs to be without nogui
suffix.
Just unzip that archive in some directory and run ruvname
(or ruvname.exe
) binary.
By default, it searches for config file, named ruvname.toml
in current working directory, and creates/changes blockchain.db
file in the same directory.
If you want it to load config from another file you can command it so: ruvname -c /etc/ruvname.conf
.
- Stabilize blockchain functions (domain transfer, info & contacts in UI), bug hunting and fixing.
- Change DNS server/proxy to own resource saving implementation (using trust-dns-proto for RR parsing).
- P2P traffic encryption (ECDH). ✅
- Web-GUI to manage you node from browser.
- @umasterov contributed fantastic logo for this project.