Chat - p2p IRC (ircd & weechat)
For the purpose of a quick and instant chat or communication which is 100% anonymous and if chosen private, especially for coordination of smaller groups (or committees - read governance), we use ircd - a peer-to-peer IRC chat, built by DarkFi. ircd supports group chats (open and private) as well as DMs.
Weechat is a client most use (runs the chat in terminal), although other IRC clients will work as well.
If the setup is done from scratch, also make sure to install git.
sudo apt install git
- Clone DarkFi repository.
git clone https://github.com/darkrenaissance/darkfi
cd darkfi
Installation
Note: This installation guide is for Linux based on Debian. For other OS, check here to see which dependencies are needed.
- ircd runs on v0.4.1 (tag) for now while taud for example run on master (branch). On master default is rustup nightly while on v0.4.1 default is rustup stable. Here is more info on the difference between branches and tags.
Open your terminal and navigate to the directory where Darkfi repository will be cloned and follow the steps below.
- Begin by installing rustup & cargo.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
- Install dependencies & update.
-
sudo apt-get update
-
sh contrib/dependency_setup.sh
- The most updated information can be found in DarkFi's installation guide.
Note:git checkout v0.4.1
mean that currently it's on v0.4.1, which is a tag andgit checkout master
mean it's on master.
git checkout v0.4.1
rustup target add wasm32-unknown-unknown
Compile & install ircd
- In DarkFi folder, compile ircd.
make ircd
Note: If there is an error when compiling, it's likely because dependecies are missing. The cmd above should install everything. However, sometimes troubleshooting through manual installations is necessary. Go to DarkFi docs and install each separately like so "sudo apt install make", "sudo apt install gcc" etcetera.
Run ircd
- While in darkfi folder --> The following command starts ircd daemon, the chat works only when this daemon is running, don't turn it off.
./ircd
- The first time runnning
./ircd
a configuration file will be created. It is located in '.config/darkfi'. Open it ie. with vim in terminal.
vim .config/darkfi/ircd_config.toml
- Read from 'New Rooms Configuration' to see what & how to add information in the configuration file to join chat rooms, generate secrets for new ones etcetera.
Install, start & configure weechat
-
Open a new tab in terminal.
-
Install weechat & dependencies.
sudo apt-get install -y git make jq vim weechat libssl-dev
sudo apt-get install weechat-curses weechat-plugins
- In case
libssl-dev
returned error run:
sudo apt-get install libmpg123-dev
- Open a new terminal window and start Weechat:
weechat
Connect weechat to the ircd daemon, save and restart the client. To do this, in Weechat prompt line enter these commands:
/server add darkfi localhost/6667 -autoconnect
/save
/quit
Usage
ircd
In case the computer was restarted or connection lost, in darkfi folder enter:
./ircd
Keep the daemon running in one terminal window and use weechat in another.
Start Weechat
weechat
Weechat commands
Weechat allows for a wide range of custom configuration, see Weechat documentation. Few useful commands are listed below.
Change nick:
/nick {NEW_NAME}
Quit chat room
/quit
Quit Weechat
/exit
See help
/help
Change chat rooms by alt + arrow up/down or alt + channel_number
New Rooms Configuration
The information on how to join chat rooms or create new is included in the ircd config file in ~/.config/darkfi/ircd_config.toml
as comments or in specification in DarkFi wiki. This manual shows more explicit steps.
Join an unencrypted channel
To add and open a public channel on ircd, such as #new_channel, just add it to autojoin line in the config file. LunarDAOs public channel is '#lunardao'. An example would be adding a channel called "#lunardao-support" to your config"
autojoin = [....<existing_channels>..., "#lunardao"]
#lunardao
is a public channel, which means it is unencrypted and therefore no secret is needed. Adding the channel like this is enough.
Restart ircd daemon (restart ircd after any config changes). The channel shall appear automatically in the weechat. Without a secret, the channel is unencrypted and anyone can join and see the content.
Join an encrypted channel
Generate secret for a new channel
In case of starting a new private channel, a secret must be generated.
- Generate a secret for a new secret channel, enter in terminal:
ircd --gen-secret
- Add the secret and a name of channel of your choice to your config file (read below).
- Share this secret and the exact name of the channel PRIVATELY with others who are to be included in the channel.
Add an encrypted channel to ircd
- Include the name of the channel and the secret to the config file (~/.config/darkfi/ircd_config.toml):
[channel."#nameofthesecretchannel"]
secret = "{secret_string}"
topic = "the purpose of the channel
- add the "#nameofthesecretchannel" to the autojoin
[]
line just like with public channels above. - Save the config file and restart ircd - the channels will appear in the weechat client.
Direct messages
To DM with someone on ircd:
- Generate a key-pair using
ircd --gen-keypair
.
NEVER share your private key!
Possibly keys can be shared to a file using
ircd --gen-keypair -o ~/some_dir/filename
- Add a line to ircd_config.toml:
[private_key."your_newly_generated_private_key"]
- Share the pub key publicly or with others you want to chat with
- Add a contact of a user to DM with to the ircd_config.toml:
[contact."name_for_contact_of_your_choice"]
contact_pubkey = "the_pub_key_sent_by_the_contact"
- Save the config and restart ircd
- To add this contact in the weechat client, enter
/query {same_name_as_in_the_config}
. Name appears in the contact list.- Note: However users may change their nicks often, the
/query {name}
command reads the{name}
added per contact to ircd_config.toml. The daemon reads the pub_key associated with the{name}
saved (aligning with the counterpartys private_key in their config). (Can be understood as a contact list in a phone.)
- Note: However users may change their nicks often, the
- Both of the users interested to DM must add the other ones pub key to the config as a contact, save and restart ircd.
Meeting bot
LunarDAO deployed the meetbot.py to moderate the community meetings. Type following commands to use the bot.
See the meeting agenda.
!list
Add a topic to the agenda.
!topic {YOUR TOPIC}
Start a meeting
!start
Move to the next topic
!next
End meeting.
!end
ircd on tor
This is what to do in order to route ircd traffic through tor.
- Run tor daemon in background or in a terminal using:
sudo tor
- Start ircd like this:
torify ./ircd
ircd with NYM
DarkFi offers a guide on how to use Nym's mixnet to anonymously connect to other peers in the network when using ircd.