Back

Grenzland chat

This is the diff between the backup and the current copy.

# Grenzland chat

The Grenzland chat server can be reached at host `grenzland.club` port `6667`.

There are multiple web clients:

- [Wilderland](https://wilderland.ovh/) offers Convos and The Lounge
- [Campaign Wiki](https://campaignwiki.org/wiki/Chat) offers The Lounge

## IRC

The underlying technology is called [internet relay chat (IRC)](https://en.wikipedia.org/wiki/IRC).
You can use any IRC client to connect!

For macOS and iOS: [Colloquy](https://colloquy.app/) or [Palaver](https://palaverapp.com/).

For Android: [Revolution IRC](https://f-droid.org/packages/io.mrarm.irc/).
For the Linux console: [irssi](https://irssi.org/).

Universal chat apps like [Pidgin](https://pidgin.im/) or [Adium](https://adium.im/) for macOS are also possible, as are some mail clients like [Thunderbird](https://www.thunderbird.net)

Use the `/list` command to show the channels and join the ones that sound interesting.

## XMPP or Jabber

You can access the same channels using your favourite XMPP client.

Join conversations using the format `#welcome@irc.grenzland.club`. Replace `#welcome` with other channel names like `#talknix` or `#support`.

For macOS and iOS: [Monal](https://monal-im.org/).
For Android: [Conversations](https://conversations.im/).
For the Linux console: [Profanity](https://profanity-im.github.io/).
For a GUI: [Dino](https://dino.im/).

## Role-Playing Games

Our games are announced via [Norn](https://alexschroeder.ch/view/norn), a bot.

See [all games on our calendar](https://campaignwiki.org/files/norn/all).

## Link blogs

[Norn](https://alexschroeder.ch/view/norn) is also used to maintain a link blog.
The important one for us are the [Grenzland links](links).

## Admins

The operator names and passwords are stored in `/etc/ngircd/ngircd.conf` of the various server participating in our network. Each server has their own operators. They are listed in the `[Operator]` sections. The operator username and password are different from regular account usernames and password on the server, and they are different from the nicknames people use to connect to the network. The operator username and password is used for the `/OPER` command to get the `o` mode. With it, you have more privileges.

Operators can ban people as follows:

```
# become an operator
/oper username password
# where is somebody connecting from (look for "Actual host")
/whois nick
# ban somebody on the entire network (timeout is in seconds, 0 is permanent, 600 s is 10 min)
/gline nick!user@hostmask timeout reason
# list global bans
/stat g
```

Other interesting commands:

```
# send a message to all users
/wallops message
```

Note for admins: please remember that nick length needs to be the same across the network!

See [commands](irc-commands.txt) and [modes](irc-modes.txt) for more.

## Network

We use [ngircd](https://github.com/ngircd/ngircd) because it federates.

We increased the nick length:

```
MaxNickLength = 20
```

Topology:

- campaignwiki.org connects to wilderland.ovh on port 6697 using TLS
- grenzland.club connects to wilderland.ovh on port 6697 using TLS

Resilience: Provide multiple server sections with the same group ID.
`ngircd` will try to connect to one of them and stop as soon as it worked.

For campaignwiki.org, for example:

```
[Global]
Name = campaignwiki.org

# ...

[Server]
Name = wilderland.ovh
Host = wilderland.ovh
Port = 6697
SSLConnect = yes
SSLVerify = no
MyPassword = *secret A*
PeerPassword = *secret B*
Group = 1

[Server]
Name = grenzland.club
Host = grenzland.club
Port = 6697
SSLConnect = yes
SSLVerify = no
MyPassword = *secret C*
PeerPassword = *secret D*
Group = 1
```

Note how bothAll servers are in group 1.

Note also how eEvery connection is defined by a name and two passwords, "my" password and "the other password".
The `ngircd` server on the other side must provide them in reverse, of course.

For grenzland.club, for example:

```
[Global]
Name = grenzland.club

# ...

[Server]
Name = campaignwiki.org
Host = campaignwiki.org
Port = 6697
SSLConnect = yes
SSLVerify = yes
MyPassword = *secret B*
PeerPassword = *secret A*
Group = 1
```