Jump within this page:
This course on Scalable Internet Services in English (SS-E) is part of the AfNOG 2019 Workshop on Network Technology, held in conjunction with the AfNOG meeting in Dakar, Senegal, April-May 2019.
We use hands-on training in a well-equipped classroom over a five-day period to teach skills required for the configuration and operation of large scale Internet services.
Technical staff who are now providing Internet Services, or those who will be involved in the establishment and/or provisioning of basic Internet Services.
Experience using and administering *NIX Servers, Name Servers, Web Servers, Mail Servers and similar services. Knowledge of Networking is a plus!
You can get free help with any of the tutorials or materials on this site by joining the AfNOG mailing list and sending an email to afnog@afnog.org with your question or problem. Please note that you must subscribe to the list first, otherwise your post will be rejected automatically.
Name | Initials | From | Country |
---|---|---|---|
Isabel Odida | IO | Uganda | |
Kevin Chege | KC | ISOC | Kenya |
Vitus Aborogu | VA | Ghana.Com | Ghana |
Manhal Mohamed | MH | SdNOG | Sudan |
Michuki Mwangi | MM | ISOC | Kenya |
First Names | Surname | Organisation | Country |
---|---|---|---|
PENDING | PENDING |
Monday | Tuesday | Wednesday | Thursday | Friday | |
---|---|---|---|---|---|
10/06 | 11/06 | 12/06 | 13/06 | 14/06 | |
09:00-11:00 | Introduction | Data Security | Ansible, | Dovecot, Rainloop | Virtualization |
Tea break | |||||
11:30-13:00 | DNS | DNS | Ansible | NTP | RSPAMD |
Lunch | |||||
14:00-16:00 | DNS | DNS | Postfix | Monitoring | RADIUS |
Tea break | |||||
16:30-18:30 | Network Security | Apache, | Postfix | Monitoring | NETDATA and Expert Panel |
Supper | |||||
Evening Sessions: 20:00-22:00 |
General Help | General Help | General Help | Instructor Dinner | Closing Ceremony |
Details for project management of the SS-E workshop.
Please file an issue requesting to be added as an administrator of the AfNOG organisation on GitHub.
The instructors group on Google Groups:
There is a wiki page on course development.
To host this track you will probably need the following equipment:
We usually use LXC containers, although not everything is supported (e.g. you can’t run an iSCSI Target in an LXC container yet), so there is an alternative setup using KVM virtual machines. These are much heavier-weight, so you can’t run as many on the same host (especially RAM is a limiting factor, since each VM needs ~512 MB of dedicated RAM).
All done by CW unless anyone else wants to.
If someone else is hosting, then all you have to do is:
git@github.com:afnog/sse.git
to it~/SparkleShare/sse/.../*.md
Only one person should host a repository, otherwise you will duplicate work and maybe have race conditions (although you should both be producing and updating the same content, so it should actually work if you have more than one, but there’s no point or advantage to it.)
If you want to host, you need a Linux or Mac desktop with lsyncd
, rsync
and ruby
installed. Then follow
these steps:
git@github.com:afnog/afnog.github.io.git
to SparkleSharesudo gem install jekyll execjs therubyracer
make serve
For updates to automatically sync to the webserver in use at the AFNOG workshop, do the following:
sudo pkg install rubygem-jekyll
sudo gem install jekyll
cd /u/vol/www/vhosts/www.ws.afnog.org/data/afnog20XX
sudo mkdir sse-git-afnog20XX
cd sse-git-afnog20XX/
git init
git pull -p https://github.com/afnog/sse.git
jekyll build --destination /u/vol/www/vhosts/www.ws.afnog.org/data/afnog20XX/sse/
git@github.com:afnog/sse.git
.---
(front matter) are copied literally from the source (sse
) repository.git@github.com:afnog/afnog.github.io.git
._config.yml
, e.g. the year, and used with { { page.year } }
in HTML and Markdown files
(spaces added to stop Markdown from replacing this with the year number!)Presentations use a special format to invoke remark on the Markdown source files:
presentation.md
(so there can be only one
per directory).index.md
, which tells Jekyll to
use a specific layout (template file) to generate the HTML:
_layouts/presentation.html
.presentation.md
file from the same
directory using AJAX. So the URL that you use to load it is very important
in locating the correct presentation.md
file.presentation.html
files are generated because the presentation.md
files
deliberately do not have a “front matter” section which Jekyll requires.If you’re using Ruby 1.8, you may need to install Ruby 1.9 first.
Warning: This command by default will overwrite ../afnog.github.io/sse, since it assumes that you have both https://github.com/afnog/sse/ and https://github.com/afnog/afnog.github.io/ checked out side-by-side (for example in SparkleShare).
If you want it to overwrite a different directory (where it will write the generated HTML files), you can specify it as a command-line argument to Make:
make DST_DIR=/tmp/site
You will need to install Jekyll to generate the HTML files:
sudo gem install jekyll execjs therubyracer
Then run make
to build them once, in the destination directory:
make
Or run make watch
to tell Jekyll to stay running, watch for source files
changing, and generate a new HTML file when they do (ideal for modifying
presentations on the fly):
make watch
You can use make sync
to run lsyncd
(which you must have installed, for
example with brew install lsyncd
) to automatically rsync
the content to the
workshop server, http://www.ws.afnog.org. You will need to check the
SYNC_HOST
and SYNC_DIR
in the Makefile
, which must point to the
destination host and directory which will be overwritten.
make sync
If you want to have a server automatically fetch changes from Git and update the static website, you can’t use SparkleShare on the server because it’s a GUI tool. What you can do is checkout both Git repositories, using a fresh personal access token to give it write access to the afnog.github.io repository, and “git pull” in a loop (or automatically from Cron), generate the HTML and commit and publish it if different (which is almost what SparkleShare does):
git config --global user.name "Your Name"
git config --global user.email you@example.com
sudo apt install lsyncd rsync ruby ruby-dev gcc g++ make
sudo gem install jekyll execjs therubyracer
mkdir ~/website
cd ~/website
git clone https://github.com/afnog/sse.git
git clone https://<your GitHub username>:<your token>@github.com/afnog/afnog.github.io.git
git config --global push.default simple
while true; do cd ~/website/sse; git pull; make autocommit; sleep 5; done
Or replace the last line with a Cron job:
* * * * * cd ~/website/sse; git pull; make autocommit