Repository navigation
Setting up a central ECCE server
ECCE can run two ways.
Per user (the default). Each user gets their own data server and
message broker, started automatically the first time they run ecce.
Nothing to configure. Right for a workstation.
Central server. One server holds everyone's calculations and the shared structure and basis-set libraries, and many clients connect to it. This is how ECCE was originally deployed. Use it for a teaching machine with a class on it, or when several workstations should all see the same data.
Both modes work from the same installation. Setting up the second does
not take the first away — ecce still runs locally, ecce -remote
uses the central server.
You need:
- A machine to be the server, reachable by name from every client.
- ECCE installed on the server and on each client.
- Root (or whoever owns
/opt/ecce) on each machine, once.
Two ports must be open from the clients to the server:
| Port | What |
|---|---|
| 8096 | data server (Apache/WebDAV) |
| 8095 | message broker (ActiveMQ) |
On the server machine.
ecce-dataserver-start
ecce-gateway-start
Check they came up:
ecce-dataserver-status
ecce-gateway-status
Every user needs an account on the server, whichever machine they sit at:
ecce-dataserver-adduser alice
ecce-dataserver-adduser bob
It will prompt for a password for each. These are ECCE accounts, not Unix accounts — they have nothing to do with the user's login.
From a client machine:
curl -I http://SERVER:8096/Ecce
Anything other than a refused connection means the port is open. If it hangs or is refused, it is a firewall — open 8096 and 8095 before going further, because everything below assumes they are open.
On every client machine, once, as root:
ecce-remote-setup SERVER
Replace SERVER with the server's host name. That is the whole
configuration step. It:
- writes
/opt/ecce/siteconfig/RemoteServer/pointing at that host - points the message broker at the same host
- keeps a copy of the original broker settings, so the machine can be put back to local-only later
If your server uses non-default ports:
ecce-remote-setup SERVER 8096 8095
Users run:
ecce -remote
This connects to the central data server and broker and does not start per-user copies of either. Users log in with the ECCE account created in Part 1 step 2.
Plain ecce still runs the per-user local servers, so one installation
serves both.
On a client, ecce -remote, then:
- The login box should accept the account you created on the server.
- The Organizer should show the same data from every client.
- On the client,
ecce-dataserver-statusshould report nothing running locally — if a local data server started,-remotedid not take effect.
Create a calculation on one client and confirm it appears on another. That is the real test: it means both are talking to the same server.
The login box never accepts anything. Usually the account does not
exist on the server, or the client is pointed at the wrong host. Check
/opt/ecce/siteconfig/RemoteServer/DataServers names the server you
expect, and that ecce-dataserver-adduser was run on the server.
ECCE starts but nothing loads, or apps fail to open. The broker is
not reachable. Check port 8095 from the client, and that
java.naming.provider.url in /opt/ecce/siteconfig/jndi.properties
names the server. ecce-remote-setup sets this; if the file was edited
afterwards it may have been reverted.
A local data server starts anyway. -remote was not seen. Check
you are running ecce -remote and not just ecce. Setting
ECCE_REMOTE_SERVER=1 in the environment has the same effect.
Going back to local-only. Remove
/opt/ecce/siteconfig/RemoteServer/, and restore the broker settings
from /opt/ecce/siteconfig/jndi.properties.local, which
ecce-remote-setup left there for exactly this.
The data server authenticates with HTTP Basic over plain HTTP. Passwords cross the network base64-encoded, which is not encryption — anyone able to watch the traffic between client and server can read them.
On a trusted internal network that is the trade-off ECCE has always made. Across anything untrusted, put it behind a TLS reverse proxy or a VPN. Do not expose the server to the open internet as it stands.