# [Darknet Onion Webring (WIP)](http://uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/)

![logo](./www/img/onion.png)

Darknet Onion Webring is powered by a Minimalistic Onion Hidden Service uptime checker, written in only PHP and Python, because javascript is NOT needed.

## Why is the Darknet Onion Webring relevant ?

The Darknet depends on peers (like you and me) to run their own lists of onion links for visibility, as search engines can't crawl onion websites like they do on the clearnet. This project is there to list people's lists of onion links so that you don't have to search those links yourself.

The more people join the Darknet Onion Webring, the more visibility darknet websites will be able to have over time, just like how it would be on the clearnet while keeping the decentralisation and censorship-resistance intact. Let's make it happen.

## How to join the Darknet Onion Webring ?


As detailed above, this project aims to gain traction over time as more and more people join the webring, so that a decentralized ecosystem can be formed accross online communities.

1) run your own darknet-onion-webring instance as detailed below

1.2) Once you have a working webring instance spun up, make a 240x60 banner image like the one i made below, and upload it into the www/img/ folder:

![logo](./www/img/nowhere-banner.png)

1.3) Once done, you can add a line in the webring.php page like so:
```sh
<a href="http://uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion"><img src="img/nowhere-banner.png" class="banner"></a>
<a href="http://uptime.wdawadwdadwawaddawdawdwawadwdadwwp5dawdwadawdawadwdwaadw.onion"><img src="img/yournew-banner.png" class="banner"></a>

```

2) As you keep on exploring the darknet, make sure you list the new onion links you find in the CSV files that are in www/links/, (i like to keep them separated in categories, so that they can be displayed in groups in the php pages afterward.)

<u>Option A:</u>

3) If you want to contribute your findings to the master repository that i'm running, just [ping me directly on simplex](https://simplex.chat/contact#/?v=2-5&smp=smp%3A%2F%2F1OwYGt-yqOfe2IyVHhxz3ohqo3aCCMjtB-8wn4X_aoY%3D%40smp11.simplex.im%2FsM96T2YMg4As7FiVoUVEttBgZQVPxWnb%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAsKONXcyHAFEd79i13QZf8vDRUU5dVgQKQqUy_0S7ay4%253D%26srv%3D6ioorbm6i3yxmuoezrhjk6f6qgkc4syabh7m3so74xunb5nzr4pwgfqd.onion) so that i can create you a gitea account first 

4) Then create a pull request so that i can add your own links (AND the link to your list of links too in the index.php page) to the git repo directly. (**Please make sure you are keeping the sensitive websites in the same page, so the risk-based separation is kept (non-sensitive websites / sensitive websites))**

<u>Option B:</u>

3) If you want to go your own way just let us know that you're running your own list of onion links in the [Darknet Exploration SimpleX Chatroom](https://simplex.chat/contact#/?v=2-7&smp=smp%3A%2F%2FL5jrGV2L_Bb20Oj0aE4Gn-m5AHet9XdpYDotiqpcpGc%3D%40nowhere.moe%2FDkWtBNDdIPVjaap5trLwtmBBEUjyqxSZ%23%2F%3Fv%3D1-3%26dh%3DMCowBQYDK2VuAyEAcQLIsWEJ0xCv9sMSYVQV_sfMTkK_pisAtN55jgH08T8%253D%26srv%3Dt3srl5etd5y7nfvamlkdsjmm2okfu7db2jp4crxvf3tkwo42odme3kid.onion&data=%7B%22groupLinkId%22%3A%22iK4_U76rW6AdmZZfgVDDVQ%3D%3D%22%7D) so that we can add the link to your list of links in our own.


4) make sure you spread awareness of the darknet onion webring on darknet forums (there's [dread](http://g66ol3eb5ujdckzqqfmjsbpdjufmjd5nsgdipvxmsh7rckzlhywlzlqd.onion/) for example)


## How to run your own Darknet Onion Webring instance ?
0) git clone the repository in your directory of choice:
```sh
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-onion-webring]
→ apt install tor git torsocks -y

[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-onion-webring]
→ torsocks git clone http://git.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/nihilist/darknet-onion-webring /srv/darknet-onion-webring

```
1) Install nginx and php8.2-fpm
```sh
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-onion-webring]
→ apt install php8.2-fpm nginx -y
```

2) use the nginx.conf and drop it in /etc/nginx/sites-available/
```sh
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-onion-webring]
→ ls
nginx.conf  README.md  scripts  todo.txt  torrc  www

[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-onion-webring]
→ cp nginx.conf /etc/nginx/sites-available/uptime.conf

[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-onion-webring]
→ vim /etc/nginx/sites-available/uptime.conf
```
3) use [mkp244o](http://blog.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/opsec/torwebsite/index.html) if you want to have a custom vanity v3 hidden service domain name

4) use the torrc config to have a local socks5 port (as it will be used by the python script to check the uptime of the listed onion links)

```sh
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-onion-webring]
→ vim /etc/tor/torrc

[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-onion-webring]
→ cat /etc/tor/torrc

HiddenServiceDir /var/lib/tor/onions/nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/
HiddenServicePort 80 127.0.0.1:4443
SocksPort 127.0.0.1:9050

[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-onion-webring]
→ systemctl restart tor@default

```
5) enable the nginx config and validate that it can be accessed on Tor

```sh
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-onion-webring]
→ ln -s /etc/nginx/sites-available/uptime.conf /etc/nginx/sites-enabled/

[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-onion-webring]
→ nginx -s reload

6) install the python script dependencies:
```sh
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-onion-webring]
→ apt install python3-pandas python3-requests python3-socks

```

7) test if the uptimechecker python script works, it should output the following:
```sh
[ Wonderland ] [ /dev/pts/24 ] [/srv/darknet-onion-webring]
→ python3 scripts/uptimechecker.py
[+] ONION UPTIME CHECKER
[+] Reading the CSV File: /srv/darknet-onion-webring/www/links/webring.csv
[+] Checking if each .onion link is reachable:
[+] Editing the uptime score
0
[+] http://uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion 200
http://uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion ✔️
[+] Reading the CSV File: /srv/darknet-onion-webring/www/links/Exchanges.csv
[+] Checking if each .onion link is reachable:
[+] Editing the uptime score
0
http://exchanger.infinityjs5qob5euyao745kp5x2hh4xquh7qs5cze3kcxv63xdwxlad.onion/ ❌
[+] Editing the uptime score
1
[+] http://robosats6tkf3eva7x2voqso3a5wcorsnw34jveyxfqi2fu7oyheasid.onion/ 200
http://robosats6tkf3eva7x2voqso3a5wcorsnw34jveyxfqi2fu7oyheasid.onion/ ✔️
[+] Editing the uptime score
2

```

8) make sure the cronjob for scripts/uptimechecker.py is running at least once every 3 hours so that the csv files are automatically kept up to date.
```sh
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-onion-webring]
→ crontab -e

*/3 0 * * * python3 /srv/darknet-onion-webring/scripts/uptimechecker.py 
```


