Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
187 lines (124 sloc) 5.95 KB

hack.p6c.org - Perl 6 community server

hack.p6c.org is a community server, with the hardware donated by the community, and the server generously hosted by noris network AG.

It offers shell access to community members for developing Perl 6 compilers and modules, running tests and IRC sessions.

Rules for automated jobs

If you set up a job (for example through cron) that runs unsupervised, please stick to the following safety precautions:

Guard against multiple parallel execution

For example through

    flock -n ~/yourservice.lock -c path/to/your-shell-script
Place appropriate resource limits

Guard your jobs against run-away memory or CPU usage, for example in bash with:

    ulimit -v 2097152 # 2GB
    ulimit -t 3600    # 1 hour

If your job needs more resources, it's OK to pick higher limits.

Just look what a typical execution needs, and multiply it with a safety margin (1.5 to 3)

Network

IPv4 address: 213.95.82.54

IPv6 addresses: 2001:780:101:ff00::2:1 to 2001:780:101:ff00::2:9.

(The complete block 2001:780:101:ff00::2:1 to 2001:780:101:ff00::2:ffff is available for this host, the addresses just aren't all bound to the interface yet).

SSH Host Public Keys

  • DSA: 1024 5c:cd:90:f7:e1:cc:cd:5b:2d:2a:fb:65:85:0b:83:a8 /etc/ssh/ssh_host_dsa_key.pub (DSA)
  • ECDSA: 256 99:47:b8:06:bb:ea:5c:35:37:9b:64:d6:e5:2d:9b:da /etc/ssh/ssh_host_ecdsa_key.pub (ECDSA)
  • RSA: 2048 81:6d:dd:58:37:5c:9f:b2:92:65:cf:67:7c:c9:af:16 /etc/ssh/ssh_host_rsa_key.pub (RSA)

rakudobrew

The user rakudobrew offers a rakudo installation with some modules. To use it, use source ~rakudobrew/rakudobrew-bash in a bash profile script (~/.profile) or in bash session. This will extend your $PATH variable to include a perl6 and perl6-m binary / script.

In /home/rakudobrew/MODULES is a list of modules that will be installed for new versions of rakudo. If you need a module added to that list, add it yourself (if you have the permissions) or ask an administrator to do it for you.

Updating rakudobrew

Should a new version of Rakudo be released, rakudobrew will need to be updated so that dependent projects (e.g. doc.perl6.org and examples.perl6.org) can be run with an up-to-date Rakudo. The steps to do this are:

    $ sudo su - rakudobrew   # need to do this as the rakudobrew user
    $ ./upgrade-rakudobrew

This will purge the old rakudobrew and reinstall MoarVM, NQP and Rakudo from scratch, installing panda afterwards and then the required modules. If this is not what you want, then you will have to perform some of the steps within upgrade-rakudobrew manually.

Administration

The following users have root/sudo access, and can potentially help you:

  username      IRC nick
  ========      ========
  moritz        moritz
  duff          PerlJam
  claudio       El_Che
  froggs        FROGGS
  timo          timotimo
  coke          [Coke]
  colomon       colomon
  ptc           [ptc]
  bartolin      bartolin
  pmichaud      pmichaud
  zoffix        Zoffix

The /etc directory is managed with etckeeper (so essentially a git repository). Please commit your changes (using --author="...").

New Users

should be added with

    adduser $newuser
    adduser $newuser users

Group users applies the resource limits (see next section), so it's kinda important.

External Services

The following services are in the same physical location as hack.perl6.org, and thus have both a low latency, and the traffic from and to them is not accounted. So please use them, unless there's a very good reason.

    DNS         62.128.1.42  62.128.1.53  2001:780:53::1  2001:780:53::2
    NTP         ntp1.noris.net  ntp2.noris.net
    Mirror      http://mirror.noris.net/

Logging

Rsyslog is configured to send log messages to www.p6c.org (in addition to write them to local log files). On www the messages are written to /var/log/hack.p6c.org/all_log.log

The relevant configuration files for rsyslog can be found under /etc/rsyslog.d/ (on hack and www).

Resource limits

Resource limits (intended to avoid unintentional lockups) are configured in /etc/security/limits.conf

dalek

Dalek is an IRC bot that reports commits to various github repositories on several IRC channels.

See https://github.com/perl6/mu/blob/master/misc/dalek-push.txt for how to make repositories push notifications to IRC through dalek.

On hack.p6c.org, dalek runs as two separate systemd services (with services files in /etc/systemd/system): dalek-http.service and dalek-irc.service.

dalek-http.service is a starman server that accepts web notifications from github. dalek-irc.service is the actual IRC bot. Both run off the source code in /home/dalek/dalek/, as dalek user and group. Both should automatically start at reboot

You can inspect and manipulate them with the usual systemd commands:

    systemctl status dalek-irc          # status info
    journalctl -u dalek-irc             # get output from dalek-irc
    journalctl -u -f dalek-irc          # get continued output from dalek-irc
    systemctl restart dalek-irc
    systemctl stop dalek-irc
    systemctl start dalek-irc
    systemctl reset-failed dalek-irc    # if 'status' shows it as 'failed'
    systemctl disable dalek-irc         # to stop it from being start at boot time
    systemctl enable dalek-irc          # to re-enable it to be started at boot time

Same goes with dalek-http, of course.

doc.perl6.org rebuild

The doc.perl6.org user has an hourly cron job that builds the HTML files for the http://doc.perl6.org/ website. It uses rsync to copy the files to the www.p6c.org host.

examples.perl6.org rebuild

Similarly to doc.perl6.org, examples.perl6.org has a cron job which periodically builds the HTML of the http://examples.perl6.org website. It also copies its files via rsync to the www.p6c.org host.