Discussion:
[jadmin] Distributed XMPP servers behind firewalls
Liam Friel
2013-06-10 21:42:21 UTC
Permalink
Hi

I have a requirement to make a distributed chat and presence system, with
some restrictions to be described below, and I *think* that XMPP would be
an extremely good fit. I have spent quite some time reading up on XMPP,
however I am looking for some configuration advice: hopefully this is the
correct list.

This is to support a distributed loose association of computer clubs.

These computer clubs generally run in networks over which they have no
control (think school networks, or hotel networks: they run in those
premises, and have internet access, but no control over routers or
firewalls etc). They may be behind several layers of NAT.

What I want is:
- to create a central cloud hosted server
- to run a chat server locally inside each of the computer clubs
- clients on the local LAN can connect to their local chat server, and
chat to each other
- that is vanilla XMPP/Jabber behaviour. I favour prosody as the server,
for various reasons.
- each computer club chat server makes an encypted link to the central
server and announces it's presence
- this puts the local chat server "online" in our loose federation of
nodes
- central server remembers some data about each "local" server which
connects
- clients on each local LAN can how ask their "online" local server to tell
them what other servers are online
- clients can get a roster of clients either connected locally, or
connected to other servers
- clients can initiate a chat session with local clients, or clients
connected to other servers

I would rather not write this s/w myself from scratch: this is rather close
to a distributed XMPP network of servers (isn't it?) except that I cannot
really rely on DNS to find the local server in each computer club, and
servers in each local club cannot directly contact each other. All contact
will have to go via the central server.

Any necessary level of ssl certs, unique identifiers for the "local" chat
servers etc is possible. It's just that local server A cannot see local
server B: they will have to communicate via the central cloud-hosted server.

Is XMPP the right answer to this problem? Or am I barking up the wrong tree
there?

TIA for your expert advice.

Regards
Liam
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.jabber.org/pipermail/jadmin/attachments/20130610/17bb702d/attachment.html>
herbert langhans
2013-06-10 22:38:24 UTC
Permalink
From: Liam Friel <liam.friel at gmail.com> [130610 23:42]
Hi

I have a requirement to make a distributed chat and presence system, with
some restrictions to be described below, and I *think* that XMPP would be
an extremely good fit. I have spent quite some time reading up on XMPP,
however I am looking for some configuration advice: hopefully this is the
correct list.

This is to support a distributed loose association of computer clubs.

These computer clubs generally run in networks over which they have no
control (think school networks, or hotel networks: they run in those
premises, and have internet access, but no control over routers or
firewalls etc). They may be behind several layers of NAT.

What I want is:
- to create a central cloud hosted server
- to run a chat server locally inside each of the computer clubs
- clients on the local LAN can connect to their local chat server, and
chat to each other
- that is vanilla XMPP/Jabber behaviour. I favour prosody as the server,
for various reasons.
- each computer club chat server makes an encypted link to the central
server and announces it's presence
- this puts the local chat server "online" in our loose federation of
nodes
- central server remembers some data about each "local" server which
connects
- clients on each local LAN can how ask their "online" local server to tell
them what other servers are online
- clients can get a roster of clients either connected locally, or
connected to other servers
- clients can initiate a chat session with local clients, or clients
connected to other servers

I would rather not write this s/w myself from scratch: this is rather close
to a distributed XMPP network of servers (isn't it?) except that I cannot
really rely on DNS to find the local server in each computer club, and
servers in each local club cannot directly contact each other. All contact
will have to go via the central server.

Any necessary level of ssl certs, unique identifiers for the "local" chat
servers etc is possible. It's just that local server A cannot see local
server B: they will have to communicate via the central cloud-hosted server.

Is XMPP the right answer to this problem? Or am I barking up the wrong tree
there?

TIA for your expert advice.

Regards
Liam

_______________________________________________
JAdmin mailing list
Info: http://mail.jabber.org/mailman/listinfo/jadmin
Unsubscribe: JAdmin-unsubscribe at jabber.org
_______________________________________________

Hi Liam,
on my server I run the jabberd-1.4.2 XMPP-server. I use it always as a
private chat network, just client-server-client. Its relieable. The
public jabber servers behave sometimes strange so I installed my own.

It should do for your network, for what I understand you can connect
various servers to each other and then use clients to chat across the
network.

Maybe you want to take a look to its configuration file jabber.xml - all
the settings have remarks and help you to understand what you can do
with it. I suggest to download it, get an idea and start with a single
server and a client (pidgin has plenty of settings) where you can
register two users. Then try to send messages between two open chat
windows.

Cheers
herb langhans
--
sprachtraining langhans
herbert langhans, warschau
herbert[at]langhans.com.pl
office [at]langhans.com.pl
http://www.langhans.com.pl
+0048 603 341 441

| jabber:herbert.raimund
| yahoo_im:herbert.raimund
| icq:414500866
Liam Friel
2013-06-10 22:59:18 UTC
Permalink
Hi,

Thanks for the feedback.

I know that I could just have clients just register against the single
central server, but what we want is a little more complicated.

We want to have a physical server in each club, a raspberry pi actually,
and have the clients in each club connect to that. There are several
reasons for that, not all technical ...

But we also want this distributed set of raspberry pi machines form a lose
federation of chat severs, such that clients connected to each pi can see
and chat with clients on other PiS.

Am I looking at a custom development?

Which I would be fine with, but if I could do it with judicious xmpp server
configuration, all the better.

Liam
Post by herbert langhans
From: Liam Friel <liam.friel at gmail.com> [130610 23:42]
Hi
I have a requirement to make a distributed chat and presence system, with
some restrictions to be described below, and I *think* that XMPP would be
an extremely good fit. I have spent quite some time reading up on XMPP,
however I am looking for some configuration advice: hopefully this is the
correct list.
This is to support a distributed loose association of computer clubs.
These computer clubs generally run in networks over which they have no
control (think school networks, or hotel networks: they run in those
premises, and have internet access, but no control over routers or
firewalls etc). They may be behind several layers of NAT.
- to create a central cloud hosted server
- to run a chat server locally inside each of the computer clubs
- clients on the local LAN can connect to their local chat server, and
chat to each other
- that is vanilla XMPP/Jabber behaviour. I favour prosody as the server,
for various reasons.
- each computer club chat server makes an encypted link to the central
server and announces it's presence
- this puts the local chat server "online" in our loose federation of
nodes
- central server remembers some data about each "local" server which
connects
- clients on each local LAN can how ask their "online" local server to tell
them what other servers are online
- clients can get a roster of clients either connected locally, or
connected to other servers
- clients can initiate a chat session with local clients, or clients
connected to other servers
I would rather not write this s/w myself from scratch: this is rather close
to a distributed XMPP network of servers (isn't it?) except that I cannot
really rely on DNS to find the local server in each computer club, and
servers in each local club cannot directly contact each other. All contact
will have to go via the central server.
Any necessary level of ssl certs, unique identifiers for the "local" chat
servers etc is possible. It's just that local server A cannot see local
server B: they will have to communicate via the central cloud-hosted server.
Is XMPP the right answer to this problem? Or am I barking up the wrong tree
there?
TIA for your expert advice.
Regards
Liam
_______________________________________________
JAdmin mailing list
Info: http://mail.jabber.org/mailman/listinfo/jadmin
Unsubscribe: JAdmin-unsubscribe at jabber.org
_______________________________________________
Hi Liam,
on my server I run the jabberd-1.4.2 XMPP-server. I use it always as a
private chat network, just client-server-client. Its relieable. The
public jabber servers behave sometimes strange so I installed my own.
It should do for your network, for what I understand you can connect
various servers to each other and then use clients to chat across the
network.
Maybe you want to take a look to its configuration file jabber.xml - all
the settings have remarks and help you to understand what you can do
with it. I suggest to download it, get an idea and start with a single
server and a client (pidgin has plenty of settings) where you can
register two users. Then try to send messages between two open chat
windows.
Cheers
herb langhans
--
sprachtraining langhans
herbert langhans, warschau
herbert[at]langhans.com.pl
office [at]langhans.com.pl
http://www.langhans.com.pl
+0048 603 341 441
| jabber:herbert.raimund
| yahoo_im:herbert.raimund
| icq:414500866
_______________________________________________
JAdmin mailing list
Info: http://mail.jabber.org/mailman/listinfo/jadmin
Unsubscribe: JAdmin-unsubscribe at jabber.org
_______________________________________________
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.jabber.org/pipermail/jadmin/attachments/20130610/cfef9501/attachment.html>
Tomasz Sterna
2013-06-10 23:42:26 UTC
Permalink
Post by Liam Friel
We want to have a physical server in each club, a raspberry pi
actually, and have the clients in each club connect to that. There are
several reasons for that, not all technical ...
Should this clubs be able to operate standalone in case of lack of the
connection to the central hub, or is the connection to hub assumed
always present?

If the latter, you could have a jabber server installed on the hub and
just have local c2s managers deployed in each club network.
Both jabberd14 and jabberd2 work fine in this arrangement.
Post by Liam Friel
But we also want this distributed set of raspberry pi machines form a
lose federation of chat severs, such that clients connected to each pi
can see and chat with clients on other PiS.
Every-user-sees-other-user is a common requirement for hosted chat
servers. It is usually called "shared roster" feature in jabber servers.
But keep in mind that having it makes presence exchanges grow
exponentially to the number of users online.

Maybe you could do with a autojoin-chatroom feature of a client?
Most popular Jabber clients have it implemented.
--
Tomasz Sterna :(){ :|:&};:
Instant Messaging Consultant Open Source Developer
http://abadcafe.pl/ http://www.xiaoka.com/portfolio
Liam Friel
2013-06-11 08:26:20 UTC
Permalink
Hi Tomasz,

I hadn't considered that ... but actually that would not be too much of a
restriction (only works with a connection to the hub).

That looks like an excellent idea.
I will look into the details some more.

Thanks!

Liam
Post by Tomasz Sterna
Post by Liam Friel
We want to have a physical server in each club, a raspberry pi
actually, and have the clients in each club connect to that. There are
several reasons for that, not all technical ...
Should this clubs be able to operate standalone in case of lack of the
connection to the central hub, or is the connection to hub assumed
always present?
If the latter, you could have a jabber server installed on the hub and
just have local c2s managers deployed in each club network.
Both jabberd14 and jabberd2 work fine in this arrangement.
Post by Liam Friel
But we also want this distributed set of raspberry pi machines form a
lose federation of chat severs, such that clients connected to each pi
can see and chat with clients on other PiS.
Every-user-sees-other-user is a common requirement for hosted chat
servers. It is usually called "shared roster" feature in jabber servers.
But keep in mind that having it makes presence exchanges grow
exponentially to the number of users online.
Maybe you could do with a autojoin-chatroom feature of a client?
Most popular Jabber clients have it implemented.
--
Instant Messaging Consultant Open Source Developer
http://abadcafe.pl/ http://www.xiaoka.com/portfolio
_______________________________________________
JAdmin mailing list
Info: http://mail.jabber.org/mailman/listinfo/jadmin
Unsubscribe: JAdmin-unsubscribe at jabber.org
_______________________________________________
--
--------
Liam Friel

mob: +353-86-8546660

twitter: @liamfriel | skype: liam.friel | linkedin:
http://ie.linkedin.com/in/liamfriel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.jabber.org/pipermail/jadmin/attachments/20130611/44434d21/attachment.html>
Loading...