From Einstein Toolkit Documentation
Jump to: navigation, search

The Einstein Toolkit depends on a number of services managed by the ET maintainers. Here we list each of these, and give any relevant information. Ideally, this page should be sufficient for a maintainer to deal with urgent issues relating to these services in case the primary administrator is unavailable.

On 2018-12-10 and 2018-12-17 Steve Brandt and Roland Haas gave a short introduction to the ET infrastructure services. Here are the slides used which may contain information not yet included in this wiki.

Getting Help

  • For LSU sites, you can email CCT IT Support <>, please mention that you work with Steve Brandt. Ideally, you should have a CCT external user account when sending help mail. If you don't have one, please email the above address to ask for one.
  • For NCSA, the generic email for help of any kind is and CC'ing Roland Haas ( will help. If you are involved in a service hosted at NCSA we can create an external collaborators NCSA account for you, please contact Roland to create such an account.


  • Location: A VM at CCT
  • Administrator: Steve Brandt
  • Source for website:
  • Docker source for webserver:
  • Updating the website:
    • Login to the server as root
    • Go to the et-websites directory
    • Type 'docker-compose build'
    • Type 'docker-compose down' to bring down the server
    • Type 'docker-compose up -d' to restart with the new image
    • the website docker container auto-updates once a day
  • Members list: The members list is updated manually, in response to an email sent by the website's PHP script. The email sends the subscribers email address, whether they'd like to be added to the mailing list, a link to add the user to the mailing list, and a text entry for members.txt (from which the members page is generated). In addition, there is a python script,, which sorts the members.txt file.
  • Release announcements: Each must be put in the about/releases directory, using the name ET_{year}_{month} The script will generate a txt and html file from the md file.
  • the website reports unanswered question candidates on which is driven by the script in the tools directory of the www repo. Occasionally the script may be unable to contact the wiki page that holds emails flagged as "answered". When this happens only from within the webserver then Roland and Steve observed (at least once) that the ARP cache on the webserver was incorrect and could be reset by contacting the webserver from the wiki server

ThornGuide on

  • ThornGuide.php is in /www/einstein/www/documentation
  • It draws on the autogenerated http doc files, which are updated once a day by a GitHub action docs.yml
  • the github action trigger the webserver to update itself


git clone
cd www
python3 ./
# this adds a md5 hash of the email address to the file tutorials-whitelist.txt
git add tutorials-whitelist.txt 
git commit -m 'Tutorial whitelist: new user added'
git push
# respond to request on mailing list *and* to requestor directly


  • Location: A VM and Database at CCT
  • Accounts:
    • Log into docker image as root (docker exec -it wiki bash)
    • To create a user named dvader with password dieoobiwandie, run the command php /var/www/mediawiki/maintenance/createAndPromote.php dvader dieobiwandie
    • To change a password, run the command php /var/www/mediawiki/maintenance/changePassword.php --user=dvader --password=iluvupadme
  • Administrator: Steve Brandt, Roland Haas
  • Source code:



The organizations should has administrator group and a developer group where administrators are the ET maintainers and developers are ET users who have been granted write access to the repos. We try to keep access control coarse grained, erring on the side of granting write access easily and to all repos rather than micromanaging access.

New code repositories on bitbucket should set up a "repo push" (the default) web-hook to contact to send commit messages to where XXX is to be found in (or thereabouts, look for the variable $secret).

New code repositories on github should set up as the recipient of push event emails in .

github is used by to authenticate users but access to is possible without being in the github einsteintoolkit organization.

Bitbucket ticket repository

Mailing lists

  • Location: A VM at CCT, hostname port 2525 reachable via
  • Administrator: Steve Brandt. He needs to filter the spam daily. For those who want to know, Russian brides are still a popular subject in spam.
  • archives wrap text emails at the 80 character mark using CSS in /etc/mailman/templates/en/article.html
   <STYLE TYPE="text/css">
     pre {
           white-space: pre-wrap;       /* css-2.1, curent FF, Opera, Safari */
           white-space: -moz-pre-wrap;
           white-space: -pre-wrap;
           white-space: -o-pre-wrap;
           word-wrap: break-word;
           width: 80ch;
           overflow-x: auto;
alias_maps = hash:/etc/aliases, hash:/etc/mailman/aliases

Have to force-allow some SMTP servers ( in particular) for postdfix, currently in a file /etc/postfix/google_acces and /etc/postfix/

check_client_access hash:/etc/postfix/google_access

and in the access file google_access OK OK OK

After modifying which one must run:

sudo/usr/sbin/postmap google_access
sudo service postfix restart

Chat channels


  • we are using a zoom instance provided by LSU, details described on ET_call_Zoom_Info.
  • Administrator: Steve Brandt

ET call reminders

  • reminders to add to the agenda and for the calls themselves are sent to at Monday 15:18 Central time and Wednesday 17:15 Central time respectively, via cron jobs running on Roland Haas' workstation
  • Administrator: Roland Haas

if [ $(date +%s) -lt  $(date +%s -d  2019-06-21) ] ; then

mail -r -s "Agenda for Thursday's Meeting" <<EOF
Please update the Wiki with agenda items for Thursday's meeting. Thanks!

--The Maintainers

if [ $(date +%s) -lt  $(date +%s -d  2019-06-21) ] ; then

mail -r -s "Einstein Toolkit Meeting Reminder" <<EOF

Please consider joining the weekly Einstein Toolkit phone call at
9:00 am US central time on Thursdays. For details on how to connect
and what agenda items are to be discussed, use the link below.

--The Maintainers

Website monitoring

Websites are monitored every 15 minutes by using a dummy github einsteintoolkit-uptime with email address Currently monitored pages are:

Email updates are sent to <> which has had added to its list of allowed posters. An older hand-written monitor of Frank Loeffler's is at .

Access to the monitors is by all ET maintainers via its github repo

Cactus services?


  • Owned by LSU
  • Notes: Cannot point subdomains to any machines not controlled directly by LSU

Build and test

Adding a new thorn

The testing system does not use GetComponents to check out the code. Instead it uses a git super-repository where all thorns are submodules.

One creates a new submodule in repos</repos> for each git repository, similarly to how GetComponents creates a git checkout for each repository. One then has to manually create symbolic links from <codde>arrangements/&langle;ARRANGEMENT&rangle;/&langle;THORN&rangle; to the checkout. The submodule must be set up to track the main development branch (main, master, etc.).

For example for CarpetX

git clone
cd tests
git submodule update --recursive --init
cd repos
git submodule add -b main CarpetX

and then update .gitmodules to read

[submodule "repos/CarpetX"]                                                                                     path = repos/CarpetX
  revision = main
  branch = main
  url =
  upstreamurl =
  upstreamtype = git

And finally create the arrangements etc. use GetComponents

cd tests
bin/GetComponents --no-update --root $PWD manifest/

then use git status to then git add and git commit</commit> the changes.

Git updater