.. /
                                                               .---.
                                                              /  .  \
                                                             |\_/|   |
                                                             |   |  /|
  .----------------------------------------------------------------' |
 /  .-.                                                              |
|  /   \     Setting up DNScrypt proxy with DNS over HTTPS           |
| |\_.  |                                                            |
|\|  | /|                                                            |
| `---' |    on artix with runit                  *ipv6 disabled     |
|       |-----------------------------------------------------------'
\       |
 \     /
  `---'
Install DNScrypt

sudo pacman -S dnscrypt-proxy-runit

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Create symlink

sudo ln -s /etc/runit/sv/dnscrypt-proxy /run/runit/service/

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Edit the configuration file:

sudo vim /etc/dnscrypt-proxy/dnscrypt-proxy.toml

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Make sure these options are set:

listen_addresses = ['127.0.0.1:53']
dnscrypt_servers = false
doh_servers = true

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Turn on the service

sudo sv up dnscrypt-proxy

sudo sv status dnscrypt-proxy

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Check your NetworkManager connection

nmcli connection show

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Then run these commands and replace "Wi-fi" with the name of your connection or use its UUID

sudo nmcli connection modify "Wi-Fi" ipv4.dns "127.0.0.1"
sudo nmcli connection modify "Wi-Fi" ipv4.ignore-auto-dns yes

sudo nmcli connection modify "Wi-Fi" ipv6.ignore-auto-dns yes

sudo nmcli connection down "Wi-Fi"
sudo nmcli connection up "Wi-Fi"

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
It should work now.


____________


Additonally check these to be sure:

sudo sv status dnscrypt-proxy

it should look like: run: dnscrypt-proxy: ...
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

sudo ss -lntup | grep ':53'

if you get something like

udp UNCONN 0 0 127.0.0.1:53 0.0.0.0:* users:(("dnscrypt-proxy",pid=1234,fd=5))
tcp LISTEN 0 4096 127.0.0.1:53 0.0.0.0:* users:(("dnscrypt-proxy",pid=1234,fd=6))

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

cat /etc/resolv.conf

it should look like: nameserver 127.0.0.1
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

dig @127.0.0.1 example.com

If you get an ANSWER SECTION, the local DNS proxy is responding