Skip to content

How to setup your own Simplex Directory

For a long time the SimpleX team had the monopoly on deciding which groups could have official visibility and which groups didn't, due to them having the single most popular simplex directory out there. Starting from today this changes, given that the Nowhere community has finally found out how to host SimpleX directories, we started doing that ourselves and we're now also teaching other simplex communities how to run their own SimpleX directories.

In other words, we're accelerating the decentralisation of SimpleX up a notch, There should not be a monopoly on SimpleX Directories, we believe that anyone should be able to host one, to promote the groups their community wants to list, with their own set of rules.

This repository is there to help you setup a simplex directory from scratch, it enables you to essentially list simplex groups that your community creates, you can either approve or reject them, you can also appoint other trusted members of your community to do the same as admins.

How to setup your own simplex directory

$ git config --global http.proxy socks5h://localhost:9050
$ git config --global https.proxy socks5h://localhost:9050
$ git clone http://gdatura24gtdy23lxd7ht3xzx6mi7mdlkabpvuefhrjn4t5jduviw5ad.onion/Nowhere/simplex-directory
$ cd simplex-directory
$ cp env-sample .env
$ vim .env
Here in the .env file definitely edit the following:

  • the SIMPLEX_SERVICE_NAME needs to be changed to whatever you want, i recommend the following format: <community name> Directory to make it easy to remember
  • the DIRECTORY_POSTGRES_PASSWORD needs to be changed to another password
  • the SIMPLEX_SMP_SERVERS value needs to be changed to SMP server that you run, setup your own by following this tutorial
  • the SIMPLEX_XFTP_SERVERS value also needs to be changed to a XFTP server that you run, setup your own by following this tutorial
  • the SIMPLEX_SUPER_USERS value also needs to be changed but only after the bot is setup initially, so you can leave it as it currently is with a dummy value
$ mkdir -p tor-data/torrc
$ vim tor-data/torrc/torrc
$ cat tor-data/torrc/torrc
SOCKSPort 0.0.0.0:9050 

$ chown -R 100:65533 tor-data/
$ chmod 700 -R tor-data

$ sudo docker compose up 

then wait for it to complete and once its running go get the simplex invite link manually:

[...]

tor-directory        | Jul 05 18:44:35.000 [notice] Bootstrapped 95% (circuit_create): Establishing a Tor circuit                                                                                                                                                                                                                                                                            
tor-directory        | Jul 05 18:44:35.000 [notice] Bootstrapped 100% (done): Done
simplex-directory-1  | [INFO] Starting SimpleX Directory Service...
simplex-directory-1  | [INFO] SimpleX Directory Service Configuration:
simplex-directory-1  | [INFO]   Super Users: 1:Nihilist,2:Noone
simplex-directory-1  | [INFO]   Service Name: Nowhere Directory
simplex-directory-1  | [INFO]   Log Level: important
simplex-directory-1  | [INFO]   SMP Servers: smp://9u8jZd9XK7B_jSBYgA3Dz1r1AMxAPgdgnwdHMO_v2FA=@dghh7wjyjrectfblqnyuy4mbshrybvlvnc5d5if5uyaceogtiiq5fnyd.onion:5223                                                                                                                                                                                                 
simplex-directory-1  | [INFO]   XFTP Servers: xftp://rhAy7k67PzsD0G5ZBW7GsHphhg-hVLhck0kYbowX8uY=@p7xawauvylt6eznc7fu7iblhwgtajxad7yzyps7nvekqzhirqxl4z3ad.onion:5333                                                                                                                                                                                                                        
simplex-directory-1  | [INFO]   Running as: uid=1001(simplexdir) gid=1001(simplexdir) groups=1001(simplexdir)                                                                                                                                                                                                                                                                                
simplex-directory-1  | [INFO] Starting service with arguments: --super-users 4:Nihilist,5:Noone --server smp://9u8jZd9XK7B_jSBYgA3Dz1r1AMxAPgdgnwdHMO_v2FA=:P0szword12318pfyefs23123@dghh7wjyjrectfblqnyuy4mbshrybvlvnc5d5if5uyaceogtiiq5fnyd.onion:5223 --xftp-server xftp://rhAy7k67PzsD0G5ZBW7GsHphhg-hVLhck0kYbowX8uY=@p7xawauvylt6eznc7fu7iblhwgtajxad7yzyps7nvekqzhirqxl4z3ad.onion:533
3 --blocked-words-file /data/filters/blocked-words-sfw.txt --blocked-fragments-file /data/filters/blocked-fragments.txt --blocked-extenstion-rules /data/filters/word-variants.hs --name-spelling-file /data/filters/spelling.hs --profile-name-limit 64 --captcha-generator /usr/local/bin/captcha-generator --service-name Nowhere Directory --log-level important --yes-migrate --socks-proxy 10.161.0.3:9050 --socks-mode always
simplex-directory-1  | [INFO] SimpleX Directory Service started with PID: 9

then go get the simplex directory bot invite link manually by doing the following:

$ docker compose exec directory-service-db \
    psql -U directory_service -d directory_service -tAc \
    "SELECT convert_from(conn_req_contact, 'UTF8') FROM simplex_v1_chat_schema.user_contact_links LIMIT 1;"

simplex:/contact#/?v=2-7&smp=smp%3A%2F%2F9u8jZd9XK7B_jSBYgA3Dz1r1AMxAPgdgnwdHMO_v2FA%3D%40dghh7wjyjrectfblqnyuy4mbshrybvlvnc5d5if5uyaceogtiiq5fnyd.onion%3A5223%2Fc3jtPOl8Lon7D1z7AUZ71wJJ36evLAm0%23%2F%3Fv%3D1-4%26dh%3DMCowBQYDK2VuAyEA1HAz5TxmvrpNWZwk3hVx0xc7DATu18wrXtw1MtUn-XU%253D%26q%3Dc
Then copy paste the invite link into your simplex client to contact the simplex directory:

alt text

alt text

From there the Bot is functional and ready to be used from the users' perspective, they can create simplex chatrooms like this one for example:

alt text

Then don't forget to add a welcome message:

alt text

Then invite the simplex directory as an admin into your public chatroom:

alt text

Then the simplex directory joins the chatroom:

alt text

And once joined it'll tell you to add the simplex invite link it just created to the chatroom in the welcome message:

alt text

so you do it:

alt text

and once that's done, the simplex directory bot detects that you just did it and now the group needs to be approved by a directory admin:

alt text

then you need to ensure you're added as a superadmin, to do so you need the contactID from the simplex bot:

$ docker compose exec directory-service-db \
    psql -U directory_service -d directory_service -c \
    "SELECT contact_id, local_display_name FROM simplex_v1_chat_schema.contacts ORDER BY contact_id;"
 contact_id | local_display_name
-------------+--------------------
          1  | Nowhere Directory
          2  | SimpleX Status
          3  | Ask SimpleX Team
          4  | Nihilist
          [...]
          57 | Nihilist_1
so we edit the .env file as follows, for instance here i'm adding 2 of my simplex profiles to be the super users:

$ cat .env | grep SUPER
SIMPLEX_SUPER_USERS="4:Nihilist,57:Nihilist_1"

And before we recreate the simplex-directory container we can also ensure that the "simplex owners chatroom" is created, (which is a chatroom where the chatroom owners whose chatrooms got approved automatically get invited to). To do that simply create the chatroom, for example i named it "Directories Doomsday Bunker":

alt text

i invited all my community staff in there as admins, along with the simplex directory bot:

alt text

then upon joining the simplex bot can be instructed to invite the chatroom owners to it like by finding the group ID for the group by doing the following:

$ docker compose exec directory-service-db \
    psql -U directory_service -d directory_service -c \
    "SELECT group_id, local_display_name FROM simplex_v1_chat_schema.groups ORDER BY group_id;"

 group_id |              local_display_name
----------+-----------------------------------------------
        1 | The OPSEC Bible
        2 | Datura Network Project
        3 | Agorism & Anarchy
        4 | Darknet Lantern (Onion + SimpleX Exploration)
        5 | Sysadmin, Hacking, and Programming
        6 | Productivity & Health
        7 | Psychedelia (Trips, Art, Music)
        8 | Nowhere General
        9 | Sysadmin, Hacking, and Programming_1
       10 | Directories Doomsday Bunker
(10 rows)

so the correct value for the simplex group owners is as follows:

$ vim .env
$ cat .env | grep OWNERS_GROUP

SIMPLEX_OWNERS_GROUP=10:'Directories Doomsday Bunker'

Then you can recreate the simplex-directory container with the updated .env file:

$ docker compose up -d --force-recreate

Then to approve a new chatroom you just need to type what the directory bot asks you to type for example:

/approve 2: `Datura Network Project` 1

From the Directory's admin perspective it looks like so:

alt text

And from the users' perspective it will appear like so:

alt text

then you can setup anti spam filters like so (captcha stands for the captcha challenge that people need to fill in to be accepted, and the 'name' value stands for rejecting members with inappropriate names):

# from a users' POV:
/filter 2 
/filter 2 name captcha

# from an admin's POV:
/filter 2:'Anonymous Alcoholics'
/filter 2:'Anonymous Alcoholics' name captcha 

alt text

Here's an example of someone that wants to join your public chatroom after you enable the captcha filter:

alt text

alt text

alt text

alt text

And here as you can see the captcha filter is functionnal, this should do the trick to stop bots from entering your chatrooms:

alt text

Then after successfully typing the captcha correctly, the user gets approved into the chatroom as wanted.

alt text

And that's it ! you now know how to setup your own simplex directory, with your own rules.

alt text

If you're interested in getting your simplex directory listed in our 'Directories Doomsday Bunker' Chatroom, just set one up, and let us know in that chatroom, and we're going to list the link to your simplex directory in the welcome message to help users discover more chatrooms! (as long as those directories follow our own community rules)


Suggest changes
Nihilist 2026-07-08
Donate XMR to the author:
8C1MNeB4KEHGApg6sPxFPn3NWERD3mPv7AjC8mCm1CJCXjoKnf36SYBdZ6ywCMdZRC4cxu7Uax3tufDqMXS2mLvHNCJzQZS