<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.sugarlabs.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Scg</id>
	<title>Sugar Labs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.sugarlabs.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Scg"/>
	<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/go/Special:Contributions/Scg"/>
	<updated>2026-04-21T00:05:09Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Infrastructure_Team/TODO&amp;diff=100630</id>
		<title>Infrastructure Team/TODO</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Infrastructure_Team/TODO&amp;diff=100630"/>
		<updated>2017-08-21T18:01:51Z</updated>

		<summary type="html">&lt;p&gt;Scg: /* High-priority tasks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{TeamHeader|Infrastructure Team}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unmaintained services ===&lt;br /&gt;
&lt;br /&gt;
* [[Service/translate]] -- Pootle&lt;br /&gt;
&lt;br /&gt;
=== High-priority tasks ===&lt;br /&gt;
&lt;br /&gt;
* New css/template for planet.sugarlabs.org ... or an entirely new rss aggregator&lt;br /&gt;
* Move wiki.sugarlabs.org to a container&lt;br /&gt;
* Document Docker (including new container creation, image maintenance and backups)&lt;br /&gt;
&lt;br /&gt;
=== Wishlist ===&lt;br /&gt;
&lt;br /&gt;
* Switch from Google Analytics to [http://piwik.org/ piwik]&lt;br /&gt;
* Switch Pipermail archives to HyperKitty&lt;br /&gt;
* Switch to Mailman 3 (Fedora switched all their lists, so it&#039;s probably stable enough for us as well)&lt;br /&gt;
* A pastebin app like http://fpaste.org&lt;br /&gt;
* Host an instance of [http://selectricity.org Selectricity] for the next elections&lt;br /&gt;
* An Etherpad instance?&lt;br /&gt;
*: See http://www.mediawiki.org/wiki/Future/Real-time_collaboration&lt;br /&gt;
* Make the Mediawiki HTML5 video handler work in wiki-devel&lt;br /&gt;
&lt;br /&gt;
[[Category:TODO]]&lt;/div&gt;</summary>
		<author><name>Scg</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Infrastructure_Team/TODO&amp;diff=100629</id>
		<title>Infrastructure Team/TODO</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Infrastructure_Team/TODO&amp;diff=100629"/>
		<updated>2017-08-21T18:00:57Z</updated>

		<summary type="html">&lt;p&gt;Scg: /* High-priority tasks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{TeamHeader|Infrastructure Team}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unmaintained services ===&lt;br /&gt;
&lt;br /&gt;
* [[Service/translate]] -- Pootle&lt;br /&gt;
&lt;br /&gt;
=== High-priority tasks ===&lt;br /&gt;
&lt;br /&gt;
* Migrate Mailman2 to Mailman3 + Hyperkitty for lists.sugarlabs.org.&lt;br /&gt;
* New css/template for planet.sugarlabs.org ... or an entirely new rss aggregator&lt;br /&gt;
* Move wiki.sugarlabs.org to a container&lt;br /&gt;
* Document Docker (including new container creation, image maintenance and backups)&lt;br /&gt;
&lt;br /&gt;
=== Wishlist ===&lt;br /&gt;
&lt;br /&gt;
* Switch from Google Analytics to [http://piwik.org/ piwik]&lt;br /&gt;
* Switch Pipermail archives to HyperKitty&lt;br /&gt;
* Switch to Mailman 3 (Fedora switched all their lists, so it&#039;s probably stable enough for us as well)&lt;br /&gt;
* A pastebin app like http://fpaste.org&lt;br /&gt;
* Host an instance of [http://selectricity.org Selectricity] for the next elections&lt;br /&gt;
* An Etherpad instance?&lt;br /&gt;
*: See http://www.mediawiki.org/wiki/Future/Real-time_collaboration&lt;br /&gt;
* Make the Mediawiki HTML5 video handler work in wiki-devel&lt;br /&gt;
&lt;br /&gt;
[[Category:TODO]]&lt;/div&gt;</summary>
		<author><name>Scg</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Machine/justice&amp;diff=100551</id>
		<title>Machine/justice</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Machine/justice&amp;diff=100551"/>
		<updated>2017-08-07T02:26:12Z</updated>

		<summary type="html">&lt;p&gt;Scg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{TOCright}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hostnames ==&lt;br /&gt;
* justice.sugarlabs.org&lt;br /&gt;
* freedom.sugarlas.org&lt;br /&gt;
&lt;br /&gt;
=== Info ===&lt;br /&gt;
&lt;br /&gt;
Freedom and Justice are two twin KVM hosts bought by Sugar Labs in 2012.&lt;br /&gt;
&lt;br /&gt;
Justice is currently our primary VM hosting box, while freedom is a hot-standby with secondary services and backups.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
* 2U rack-mountable case&lt;br /&gt;
* Motherboard ASUS KFSN5-D&lt;br /&gt;
* 8-core Opteron 6212 @ 1.4GHz&lt;br /&gt;
* 64GB RAM&lt;br /&gt;
* 2x1TB RAID1&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
* Ubuntu Precise (12.04) amd64  on justice&lt;br /&gt;
* Ubuntu 14.04 LTS  on freedom&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
Hosted by the [http://media.mit.edu/ MIT Media Lab], building E15.&lt;br /&gt;
&lt;br /&gt;
== Admins ==&lt;br /&gt;
* [[User:Bernie|Bernie Innocenti]], bernie on #sugar Freenode&lt;br /&gt;
* [[User:Scg|Samuel Cantero]], scg on #sugar Freenode&lt;br /&gt;
* [[User:Dogi|Stefan Unterhauser]], dogi on #sugar or [http://mibbit.com/?channel=%23treehouse&amp;amp;server=irc.oftc.net #treehouse]&lt;br /&gt;
* [[User:SAMdroid|Sam]], samdroid on #sugar on Freenode&lt;br /&gt;
&lt;br /&gt;
== Network configuration ==&lt;br /&gt;
Justice is globally accessible through public, static IPv4.&lt;br /&gt;
The IPv6 /64 subnet (6to4) is currently experimental and not associated with AAAA records.&lt;br /&gt;
&lt;br /&gt;
IPs 18.85.44.59-77 are available for hosted VMs.&lt;br /&gt;
&lt;br /&gt;
== Hosted VMs ==&lt;br /&gt;
All KVM virtual machines are managed by libvirtd. Yes, that&#039;s scary.&lt;br /&gt;
&lt;br /&gt;
See [[Sysadmin/Add virtual machine]] for creating new VMs.&lt;br /&gt;
&lt;br /&gt;
{{Special:PrefixIndex/{{PAGENAME}}/}}&lt;/div&gt;</summary>
		<author><name>Scg</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Sysadmin/Add_virtual_machine&amp;diff=100550</id>
		<title>Sysadmin/Add virtual machine</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Sysadmin/Add_virtual_machine&amp;diff=100550"/>
		<updated>2017-08-07T02:08:48Z</updated>

		<summary type="html">&lt;p&gt;Scg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Create new VM on [[Machine/justice]] or [[Machine/freedom]] ===&lt;br /&gt;
&lt;br /&gt;
This procedure creates a clone of the [[Machine/template-xenial|Ubuntu Xenial template virtual machine]].&lt;br /&gt;
&lt;br /&gt;
 virt-clone -o template-xenial --file=/var/lib/libvirt/images/boot/FOOBAR-boot.img --file=/dev/justice/FOOBAR-root -n FOOBAR&lt;br /&gt;
 virsh autostart FOOBAR&lt;br /&gt;
 virsh start --console FOOBAR&lt;br /&gt;
&lt;br /&gt;
* Add A and AAAA records for the new host in the sugarlabs.org zone file (See [[Service/Nameservers]]).&lt;br /&gt;
&lt;br /&gt;
* Now login as root from the console (there should be no password)&lt;br /&gt;
&lt;br /&gt;
* setup both IPv4 and IPv6 addresses&lt;br /&gt;
&lt;br /&gt;
 vi /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
* change machine fqdn&lt;br /&gt;
&lt;br /&gt;
 sed -i -e s/template-xenial/FOOBAR/g /etc/hosts /etc/hostname /etc/mailname /etc/postfix/main.cf&lt;br /&gt;
&lt;br /&gt;
* activate new IP and hostname&lt;br /&gt;
&lt;br /&gt;
 /etc/init.d/networking restart&lt;br /&gt;
&lt;br /&gt;
* install latest security/stability updates&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get dist-upgrade&lt;br /&gt;
&lt;br /&gt;
* Find a nice color combo for HOST_COLOR in /etc/zzz_profile.conf&lt;br /&gt;
&lt;br /&gt;
* generate host keys and a key for root&lt;br /&gt;
&lt;br /&gt;
 rm /etc/ssh/ssh_host_*&lt;br /&gt;
 dpkg-reconfigure openssh-server&lt;br /&gt;
 ssh-keygen -N &amp;quot;&amp;quot; -f /root/.ssh/id_rsa -t rsa&lt;br /&gt;
&lt;br /&gt;
* Setup wizbackup on a backup server (See [[Service/backup]])&lt;br /&gt;
&lt;br /&gt;
* Move daily, weekly, monthly cronjobs to a unique timeslot to avoid cpu/net storms&lt;br /&gt;
&lt;br /&gt;
 vi /etc/crontab&lt;br /&gt;
&lt;br /&gt;
* The most important thing: come up with a funny quip for this machine&lt;br /&gt;
&lt;br /&gt;
 vi /etc/motd.tail&lt;br /&gt;
&lt;br /&gt;
* Taa--daah!&lt;br /&gt;
&lt;br /&gt;
 reboot&lt;br /&gt;
&lt;br /&gt;
* Add the machine to &amp;lt;code&amp;gt;/etc/munin/munin.conf&amp;lt;/code&amp;gt; on [[Machine/sunjammer]] for monitoring.&lt;br /&gt;
&lt;br /&gt;
 [FOOBAR.sugarlabs.org]&lt;br /&gt;
        address FOOBAR.sugarlabs.org&lt;br /&gt;
&lt;br /&gt;
See also: [[Sysadmin/Delete virtual machine]], [[Sysadmin/Migrate_virtual_machine]].&lt;/div&gt;</summary>
		<author><name>Scg</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Machine/template-xenial&amp;diff=100549</id>
		<title>Machine/template-xenial</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Machine/template-xenial&amp;diff=100549"/>
		<updated>2017-08-07T02:06:28Z</updated>

		<summary type="html">&lt;p&gt;Scg: Created page with &amp;quot;== VM Creation (host part) ==   virt-install -v --accelerate --nographics -x console=ttyS0,115200 \  --name template-xenial --vcpus=3 --ram $((1 * 1024)) \  --os-type=linux --...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VM Creation (host part) ==&lt;br /&gt;
&lt;br /&gt;
 virt-install -v --accelerate --nographics -x console=ttyS0,115200 \&lt;br /&gt;
 --name template-xenial --vcpus=3 --ram $((1 * 1024)) \&lt;br /&gt;
 --os-type=linux --os-variant=ubuntu16.04 --network bridge:br0 \&lt;br /&gt;
 --disk path=/var/lib/libvirt/images/boot/template-xenial-boot.img,bus=virtio,size=0.25,format=raw \&lt;br /&gt;
 --disk path=/dev/justice/template-xenial-root,bus=virtio,size=10 \&lt;br /&gt;
 --location http://ubuntu.media.mit.edu/ubuntu/dists/xenial/main/installer-amd64/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Obs&#039;&#039;&#039;: &#039;&#039;format=raw&#039;&#039; is mandatory, otherwise qcow2 format will be used by default. &lt;br /&gt;
&#039;&#039;raw&#039;&#039; format allows us to easily create device mappings for the image.&lt;br /&gt;
&lt;br /&gt;
The new VM will boot into the installer. Answer all questions with the defaults, except:&lt;br /&gt;
&lt;br /&gt;
# Hostname: template-precise&lt;br /&gt;
# Mirror: enter information manually&lt;br /&gt;
# Mirror hostname: ubuntu.media.mit.edu&lt;br /&gt;
# (create your user with a strong password and no encrypted home)&lt;br /&gt;
# Partitioning: manual (see Partitioning below)&lt;br /&gt;
# Automatically install security updates&lt;br /&gt;
# Software selection:&lt;br /&gt;
#* Basic Ubuntu Server&lt;br /&gt;
#* OpenSSH server&lt;br /&gt;
# GRUB: let the installer setup grub on /dev/vba (which contains /boot)&lt;br /&gt;
&lt;br /&gt;
== Partitioning ==&lt;br /&gt;
&lt;br /&gt;
The goal is to have a small disk file for the MBR and /boot, and a larger raw filesystem in&lt;br /&gt;
an LVM Logical Volume. We don&#039;t want the LV to be partitioned because this makes it harder to&lt;br /&gt;
resize, mount, etc.&lt;br /&gt;
&lt;br /&gt;
Now create a partition table in the smallest disk (256MB) and create a single partition in it.&lt;br /&gt;
Format this partition as ext4, labeled &amp;quot;boot&amp;quot; and mounted as /boot.&lt;br /&gt;
&lt;br /&gt;
The installer won&#039;t let you format the entire disk as a filesystem, so go ahead and partition&lt;br /&gt;
the 10GB disk too, then create a primary partition in it and format it as ext4, mounted as /&lt;br /&gt;
and labeled &amp;quot;template-xenial&amp;quot; (&#039;&#039;&#039;&amp;quot;template-xenial-root&amp;quot; would exceed the ext4 limit&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
And yes.. just in case you&#039;re wondering. We don&#039;t use swap partitions.&lt;br /&gt;
&lt;br /&gt;
We&#039;ll have to fix the disk later.&lt;br /&gt;
&lt;br /&gt;
== First boot ==&lt;br /&gt;
After installation has finished and OS is restarted, it will boot but we won&#039;t have serial console access &lt;br /&gt;
(&amp;lt;code&amp;gt;virsh console template-xenial&amp;lt;/code&amp;gt;). This is due the getty service for serial device is disabled by default on Ubuntu 16.04.&lt;br /&gt;
We&#039;ll fix this later.&lt;br /&gt;
&lt;br /&gt;
== Switch the root filesystem to an LV ==&lt;br /&gt;
&lt;br /&gt;
When the machine is offline, go to the host to recreate the root filesystem directly as an LV (as opposed to a partitioned volume)&lt;br /&gt;
&lt;br /&gt;
First of all, we need to set up the device mapping for the first and only partition where the root filesystem resides.&lt;br /&gt;
 &lt;br /&gt;
 kpartx -av  /dev/justice/template-xenial-root&lt;br /&gt;
&lt;br /&gt;
Mount the root partition:&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/template-xenial-root&lt;br /&gt;
 mount /dev/mapper/justice-template--xenial-root1 /mnt/template-xenial-root&lt;br /&gt;
&lt;br /&gt;
Now create and format a new LV:&lt;br /&gt;
&lt;br /&gt;
  lvcreate -L 10G -n template-xenial-root2 justice&lt;br /&gt;
  mkfs.ext4 -L template-xenial -O flex_bg,extent,uninit_bg,sparse_super /dev/justice/template-xenial-root2&lt;br /&gt;
  tune2fs -c -1 -i 0 /dev/justice/template-xenial-root2&lt;br /&gt;
  mkdir /mnt/template-xenial-root2&lt;br /&gt;
  mount /dev/justice/template-xenial-root2 /mnt/template-xenial-root2&lt;br /&gt;
&lt;br /&gt;
Move the files over:&lt;br /&gt;
&lt;br /&gt;
  rsync -HAXphax --numeric-ids /mnt/template-xenial-root/ /mnt/template-xenial-root2/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: By default, Ubuntu 16.04 uses UUID in /etc/fstab in order to mount partitions. Since we have changed the root &lt;br /&gt;
partition to a new disk, the UUID will change. Aside from that, the grub.cfg also specifies the location of the root filesystem&lt;br /&gt;
using UUID notation (ex: /vmlinuz-4.4.0-89-generic root=UUID=0ad5d004-e5dd-4b93-abe4-2bb0ba4fd94a).&lt;br /&gt;
&lt;br /&gt;
Before we umount the filesystems, let&#039;s create a chroot environment and fix previous issues:&lt;br /&gt;
&lt;br /&gt;
  kpartx -av /var/lib/libvirt/images/boot/template-xenial-boot.img&lt;br /&gt;
  mount /dev/mapper/loop0p1 /mnt/template-xenial-root2/boot&lt;br /&gt;
  mount --bind /dev/ /mnt/template-xenial-root2/dev/&lt;br /&gt;
  mount -t proc proc /mnt/template-xenial-root2/proc/&lt;br /&gt;
  mount -t sysfs sys /mnt/template-xenial-root2/sys/&lt;br /&gt;
  chroot /mnt/template-xenial-root2/&lt;br /&gt;
&lt;br /&gt;
Once inside the chroot environment:&lt;br /&gt;
&lt;br /&gt;
* Fix serial console access by making getty listen on /dev/ttyS0:&lt;br /&gt;
  systemctl enable serial-getty@ttyS0.service&lt;br /&gt;
&lt;br /&gt;
* Replace UUID with device name for root fs location inside /boot/grub/grub.cfg&lt;br /&gt;
  sed -i -r &amp;quot;s/root=UUID=[0-9a-f-]+/root=\/dev\/vdb/&amp;quot; /boot/grub/grub.cfg&lt;br /&gt;
&lt;br /&gt;
* Adjust /etc/fstab to mount the filesystems from &amp;quot;LABEL=boot&amp;quot; and &amp;quot;LABEL=template-xenial&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally (VERY IMPORTANT), umount all filesystems before starting the VM:&lt;br /&gt;
  umount /mnt/template-xenial-root2/boot/&lt;br /&gt;
  umount /mnt/template-xenial-root2/dev/&lt;br /&gt;
  umount /mnt/template-xenial-root2/proc/&lt;br /&gt;
  umount /mnt/template-xenial-root2/sys/&lt;br /&gt;
  umount /mnt/template-xenial-root2/ /mnt/template-xenial-root/&lt;br /&gt;
&lt;br /&gt;
Get rid of the old root and rename the new one on top of it&lt;br /&gt;
&lt;br /&gt;
  lvremove /dev/justice/template-xenial-root&lt;br /&gt;
  lvrename justice template-xenial-root2 template-xenial-root&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuration after system start ==&lt;br /&gt;
&lt;br /&gt;
After the installation, the machine will boot automatically and you&#039;ll be dropped into the serial console.&lt;br /&gt;
You can return to the console at any time by doing:&lt;br /&gt;
&lt;br /&gt;
 virsh console template-xenial&lt;br /&gt;
&lt;br /&gt;
Login with your installation username and password, then become root:&lt;br /&gt;
&lt;br /&gt;
 sudo -i&lt;br /&gt;
&lt;br /&gt;
* Adjust /etc/default/grub:&lt;br /&gt;
** Set `GRUB_CMDLINE_LINUX_DEFAULT=&amp;quot;console=ttyS0,115200&amp;quot;` (and remove the obnoxious &amp;quot;quiet splash&amp;quot;)&lt;br /&gt;
** Uncomment GRUB_DISABLE_LINUX_UUID&lt;br /&gt;
* Update grub: `update-grub`&lt;br /&gt;
&lt;br /&gt;
* Get rid of the restricted repositories from /etc/apt/sources.list (virtual machines don&#039;t need any non-free drivers anyway).&lt;br /&gt;
* Add a few useful packages:&lt;br /&gt;
&lt;br /&gt;
 apt-get install etckeeper bash-completion strace munin-node postfix vim aptitude&lt;br /&gt;
&lt;br /&gt;
Note: etckeeper uses git by default :)&lt;br /&gt;
&lt;br /&gt;
When prompted on how to configure postfix, say &amp;quot;Internet site&amp;quot;.&lt;br /&gt;
Afterwards, edit `/etc/postfix/main.cs` by hand and set `inet_interfaces = loopback-only` and restart postfix.&lt;br /&gt;
&lt;br /&gt;
* Monitor mail for root:&lt;br /&gt;
&lt;br /&gt;
 echo &amp;gt;&amp;gt;/etc/aliases &amp;quot;root: systems-logs@lists.sugarlabs.org&amp;quot;&lt;br /&gt;
 newaliases&lt;br /&gt;
&lt;br /&gt;
* Switch to the virtual kernel:&lt;br /&gt;
&lt;br /&gt;
 apt-get install linux-image-virtual linux-virtual&lt;br /&gt;
 apt-get purge linux-image-generic&lt;br /&gt;
 apt-get autoremove&lt;br /&gt;
 update-grub&lt;br /&gt;
&lt;br /&gt;
=== Network interface setup ===&lt;br /&gt;
&lt;br /&gt;
We use [http://en.wikipedia.org/wiki/6to4 6to4] to reach the closest IPv6 anycast relay.&lt;br /&gt;
Append the following to /etc/network/interfaces:&lt;br /&gt;
&lt;br /&gt;
 auto eth0&lt;br /&gt;
 iface eth0 inet static&lt;br /&gt;
	address 18.85.44.67&lt;br /&gt;
	netmask 255.255.255.0&lt;br /&gt;
	gateway 18.85.44.1&lt;br /&gt;
	# dns-* options are implemented by the resolvconf package, if installed&lt;br /&gt;
	dns-nameservers 18.71.0.151 18.70.0.160 18.72.0.3&lt;br /&gt;
	dns-search sugarlabs.org&lt;br /&gt;
&lt;br /&gt;
 auto tun6to4&lt;br /&gt;
 iface tun6to4 inet6 v4tunnel&lt;br /&gt;
	# printf &amp;quot;2002:%02x%02x:%02x%02x::1\n&amp;quot; `echo $IPV4ADDR | tr . &#039; &#039;`&lt;br /&gt;
	address 2002:1255:2c43::1&lt;br /&gt;
	netmask 16&lt;br /&gt;
	gateway ::192.88.99.1&lt;br /&gt;
	endpoint any&lt;br /&gt;
	local 18.85.44.67&lt;br /&gt;
&lt;br /&gt;
=== Other configurations === &lt;br /&gt;
&lt;br /&gt;
Add these to /etc/sudoers:&lt;br /&gt;
&lt;br /&gt;
 #bernie: forward ssh-agent&lt;br /&gt;
 Defaults    env_keep+=&amp;quot;SSH_AUTH_SOCK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 #bernie: &lt;br /&gt;
 %sudo ALL=(ALL:ALL) NOPASSWD: ALL&lt;br /&gt;
&lt;br /&gt;
* Install your ssh keys to /root/.ssh/authorized_keys and to your user account. Also install the wizbackup keys for [[Service/backup]].&lt;br /&gt;
&lt;br /&gt;
Once your keys are installed, you might SSH in and start configuration using a SSH session.&lt;br /&gt;
&lt;br /&gt;
Log in with &amp;quot;ssh -A template-xenial.sugarlabs.org&amp;quot; to forward your ssh-agent and copy files from sunjammer&lt;br /&gt;
&lt;br /&gt;
 rsync -aP &amp;lt;your-user&amp;gt;@sunjammer.sugarlabs.org:/usr/src/devtools/ /usr/src/devtools/&lt;br /&gt;
 ln -sf /usr/src/devtools/sysadm/bashrc.sh /etc/skel/.bashrc&lt;br /&gt;
 ln -sf /usr/src/devtools/sysadm/bashrc.sh /root/.bashrc&lt;br /&gt;
 ln -sf /usr/src/devtools/sysadm/zzz_profile.sh /etc/profile.d/zzz_profile.sh&lt;br /&gt;
 ln -sf /usr/src/devtools/conf/vimrc /etc/vim/vimrc.local&lt;br /&gt;
&lt;br /&gt;
 vim /etc/bash.bashrc # comment out code messing with PS1&lt;br /&gt;
 vim /etc/login.defs # set umask 002&lt;br /&gt;
&lt;br /&gt;
* Create /etc/zzz_profile.conf:&lt;br /&gt;
&lt;br /&gt;
 HOST_COLOR=&#039;\033[1;40;37m&#039;&lt;br /&gt;
&lt;br /&gt;
* Disable PasswordAuthentication in /etc/ssh/sshd_config, then restart ssh&lt;br /&gt;
&lt;br /&gt;
* Set a blank password for root, to be used to log in from the console only&lt;br /&gt;
&lt;br /&gt;
  passwd -d&lt;br /&gt;
&lt;br /&gt;
* Insert into /etc/munin/munin.node:&lt;br /&gt;
&lt;br /&gt;
 #bernie&lt;br /&gt;
 allow ^208\.118\.235\.53$     # sunjammer.sugarlabs.org&lt;br /&gt;
 allow ^2001:4830:134:7::11$   # sunjammer.sugarlabs.org (IPv6)&lt;br /&gt;
&lt;br /&gt;
* Add/remove munin plugins&lt;br /&gt;
&lt;br /&gt;
 cd /etc/munin/plugins&lt;br /&gt;
 rm df_inode entropy forks fw_packets if_err_ens2 open_files open_inodes threads uptime processes proc_pri swap&lt;br /&gt;
&lt;br /&gt;
* Disable unused services (They are dependencies of the ubuntu-server package):&lt;br /&gt;
  systemctl disable snapd.service&lt;br /&gt;
  systemctl disable atd.service &lt;br /&gt;
  systemctl disable iscsid.service &lt;br /&gt;
  systemctl disable lvm2-monitor.service&lt;br /&gt;
  systemctl disable open-vm-tools.service&lt;br /&gt;
  systemctl disable lxcfs.service&lt;br /&gt;
  systemctl disable lxd-containers.service&lt;/div&gt;</summary>
		<author><name>Scg</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=FindTheGoldInThePot&amp;diff=100069</id>
		<title>FindTheGoldInThePot</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=FindTheGoldInThePot&amp;diff=100069"/>
		<updated>2017-03-25T17:05:30Z</updated>

		<summary type="html">&lt;p&gt;Scg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Flea Market Barking Up The Wrong Tree&lt;br /&gt;
&lt;br /&gt;
Birds of a Feather Flock Together&lt;br /&gt;
&lt;br /&gt;
In Pickle Heads Up Close But No Cigar&lt;br /&gt;
&lt;br /&gt;
Needle In a Haystack Lovey Dovey&lt;br /&gt;
&lt;br /&gt;
A Fool and His Money are Soon Parted&lt;/div&gt;</summary>
		<author><name>Scg</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=FindTheGoldInThePot&amp;diff=100068</id>
		<title>FindTheGoldInThePot</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=FindTheGoldInThePot&amp;diff=100068"/>
		<updated>2017-03-25T17:04:34Z</updated>

		<summary type="html">&lt;p&gt;Scg: Created page with &amp;quot;Flea Market Barking Up The Wrong Tree  Birds of a Feather Flock Together  In a Pickle Heads Up Close But No Cigar  Needle In a Haystack Lovey Dovey  A Fool and His Money are S...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Flea Market Barking Up The Wrong Tree&lt;br /&gt;
&lt;br /&gt;
Birds of a Feather Flock Together&lt;br /&gt;
&lt;br /&gt;
In a Pickle Heads Up Close But No Cigar&lt;br /&gt;
&lt;br /&gt;
Needle In a Haystack Lovey Dovey&lt;br /&gt;
&lt;br /&gt;
A Fool and His Money are Soon Parted&lt;/div&gt;</summary>
		<author><name>Scg</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Service/turtleartday.org&amp;diff=99259</id>
		<title>Service/turtleartday.org</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Service/turtleartday.org&amp;diff=99259"/>
		<updated>2016-08-01T04:21:07Z</updated>

		<summary type="html">&lt;p&gt;Scg: /* Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
The [[Turtle Art]] front page. &lt;br /&gt;
&lt;br /&gt;
Managed with the Jekyll CMS, it contains static articles describing the annual event.&lt;br /&gt;
&lt;br /&gt;
== Hostnames ==&lt;br /&gt;
&lt;br /&gt;
http://www.turtleartday.org&lt;br /&gt;
&lt;br /&gt;
== Hosted on ==&lt;br /&gt;
&lt;br /&gt;
[[Machine/sunjammer]]&lt;br /&gt;
&lt;br /&gt;
== Administrative contact ==&lt;br /&gt;
&lt;br /&gt;
marketing AT sugarlabs DOT org&lt;br /&gt;
&lt;br /&gt;
== Sysadmins ==&lt;br /&gt;
&lt;br /&gt;
Send email to the systems sugar labs list.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
In https://github.com/sugarlabs/turtleartday.org/settings/hooks there is a webhook defined, as documented at https://developer.github.com/webhooks/&lt;br /&gt;
&lt;br /&gt;
This sends a POST request in JSON format to https://hook.sugarlabs.org/www.turtleartday.org&lt;br /&gt;
&lt;br /&gt;
A container named org.turtleartday.www-rebuilder is in charge of processing this payload, which does the following:&lt;br /&gt;
&lt;br /&gt;
1. Install jekyll.&lt;br /&gt;
&lt;br /&gt;
2. Clone the SL repo.&lt;br /&gt;
&lt;br /&gt;
3. Install Flask&lt;br /&gt;
&lt;br /&gt;
4. Execute a Flask Python App which does the following: pull the repo and jekyll build. This app doesn&#039;t parse the POST request.&lt;br /&gt;
&lt;br /&gt;
The site is generated in the folder /clone/_site which is bind to the following directory in freedom: /srv/www-turtleartday.org-out. This is the document root for the site turtleartday.org in the nginx server block.&lt;br /&gt;
&lt;br /&gt;
== Upgrade notes ==&lt;br /&gt;
&lt;br /&gt;
Remember to restart the org.turtleartday.www-rebuilder container after upgrading freedom. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Service|www]]&lt;/div&gt;</summary>
		<author><name>Scg</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=User:Scg&amp;diff=98636</id>
		<title>User:Scg</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=User:Scg&amp;diff=98636"/>
		<updated>2016-05-16T18:06:19Z</updated>

		<summary type="html">&lt;p&gt;Scg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Personal info ==&lt;br /&gt;
&lt;br /&gt;
I am a computer engineer and a GNU/Linux passionate.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;LinkedIn profile&#039;&#039;&#039;: https://www.linkedin.com/in/scantero&lt;br /&gt;
&lt;br /&gt;
== Contact info ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;E-mail&#039;&#039;&#039;: scanterog AT gmail DOT com&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Freenode IRC nickname&#039;&#039;&#039;: scg on #sugar channel&lt;/div&gt;</summary>
		<author><name>Scg</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=User:Scg&amp;diff=98635</id>
		<title>User:Scg</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=User:Scg&amp;diff=98635"/>
		<updated>2016-05-16T18:06:07Z</updated>

		<summary type="html">&lt;p&gt;Scg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Personal info ==&lt;br /&gt;
&lt;br /&gt;
I am a computer engineer and a GNU/Linux passionate.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;LinkedIn profile&#039;&#039;&#039;: https://www.linkedin.com/in/scantero&lt;br /&gt;
&lt;br /&gt;
testing &#039;&#039;&#039;LinkedIn profile&#039;&#039;&#039;: https://www.linkedin.com/in/scantero&lt;br /&gt;
&lt;br /&gt;
== Contact info ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;E-mail&#039;&#039;&#039;: scanterog AT gmail DOT com&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Freenode IRC nickname&#039;&#039;&#039;: scg on #sugar channel&lt;/div&gt;</summary>
		<author><name>Scg</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=User:Scg&amp;diff=98504</id>
		<title>User:Scg</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=User:Scg&amp;diff=98504"/>
		<updated>2016-05-15T05:08:06Z</updated>

		<summary type="html">&lt;p&gt;Scg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Personal info ==&lt;br /&gt;
&lt;br /&gt;
I am a computer engineer and a GNU/Linux passionate.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;LinkedIn profile&#039;&#039;&#039;: https://www.linkedin.com/in/scantero&lt;br /&gt;
&lt;br /&gt;
== Contact info ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;E-mail&#039;&#039;&#039;: scanterog AT gmail DOT com&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Freenode IRC nickname&#039;&#039;&#039;: scg on #sugar channel&lt;/div&gt;</summary>
		<author><name>Scg</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=User:Scg&amp;diff=98503</id>
		<title>User:Scg</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=User:Scg&amp;diff=98503"/>
		<updated>2016-05-15T04:48:44Z</updated>

		<summary type="html">&lt;p&gt;Scg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Personal info ==&lt;br /&gt;
&lt;br /&gt;
I am a computer engineer and a GNU/Linux passionate. Currently here as a volunteer trying to help in this wonderful project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;LinkedIn profile&#039;&#039;&#039;: https://www.linkedin.com/in/scantero&lt;br /&gt;
&lt;br /&gt;
== Contact info ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;E-mail&#039;&#039;&#039;: scanterog AT gmail DOT com&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Freenode IRC nickname&#039;&#039;&#039;: scg on #sugar channel&lt;/div&gt;</summary>
		<author><name>Scg</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=MediaWiki:Loginprompt&amp;diff=98481</id>
		<title>MediaWiki:Loginprompt</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=MediaWiki:Loginprompt&amp;diff=98481"/>
		<updated>2016-05-14T20:25:33Z</updated>

		<summary type="html">&lt;p&gt;Scg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You must have cookies enabled to log in to {{SITENAME}}.&lt;/div&gt;</summary>
		<author><name>Scg</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Sysadmin/Letsencrypt&amp;diff=97082</id>
		<title>Sysadmin/Letsencrypt</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Sysadmin/Letsencrypt&amp;diff=97082"/>
		<updated>2016-03-08T02:18:57Z</updated>

		<summary type="html">&lt;p&gt;Scg: Testing VisualEdit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
&lt;br /&gt;
Let’s Encrypt (LE) is a free, automated, and open certificate authority (CA), run for the public’s benefit. It is sponsored by the biggest Internet companies and browsers: Google (Chrome), Mozilla (Firefox), and so on. At the time of writing, LE is in public beta.&lt;br /&gt;
&lt;br /&gt;
Currently, we have LE installed on [[Machine/freedom]].&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
We have chosen &amp;lt;code&amp;gt;/opt/letsencrypt&amp;lt;/code&amp;gt; as the base or home directory for the LE client. The LE Client is a fully-featured, extensible client for the Let’s Encrypt CA (or any other CA that speaks the ACME protocol) that can automate the tasks of obtaining certificates and configuring webservers to use them.&lt;br /&gt;
&lt;br /&gt;
Because there is no a LE package for Ubuntu yet, we must clone the &amp;lt;code&amp;gt;letsencrypt-auto&amp;lt;/code&amp;gt; wrapper script. This script obtains some dependencies from the OS (apt-get) and puts others in a python virtual environment (Pip). The only requirement is Python 2.6 or Python 2.7.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git clone https://github.com/letsencrypt/letsencrypt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This client requires root access in order to write to &amp;lt;code&amp;gt;/etc/letsencrypt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/var/log/letsencrypt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/var/lib/letsencrypt&amp;lt;/code&amp;gt;; to bind to ports 80 and 443 and to read and modify webserver configurations (for apache or nginx plugins).&lt;br /&gt;
&lt;br /&gt;
== Getting a certificate ==&lt;br /&gt;
&lt;br /&gt;
The Let’s Encrypt client supports a number of different &#039;&#039;plugins&#039;&#039; that can be used to obtain and/or install certificates. For the moment, we decided to get the certificates manually and apply the changes to the the web server with a script. We can use the Nginx plugin to automatically obtain and install the certificate but this plugin is still experimental.&lt;br /&gt;
&lt;br /&gt;
In order to automate the process (of getting the cert), we create a config file for each domain inside the folder &amp;lt;code&amp;gt;/etc/letsencrypt/config&amp;lt;/code&amp;gt;. For example, the config file for www.slo is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# We use a 4096 bit RSA key instead of 2048&lt;br /&gt;
rsa-key-size = 4096&lt;br /&gt;
&lt;br /&gt;
email = sysadmin@sugarlabs.org&lt;br /&gt;
domains = sugarlabs.org, www.sugarlabs.org&lt;br /&gt;
&lt;br /&gt;
authenticator = webroot&lt;br /&gt;
&lt;br /&gt;
# This is the webroot directory of your domain in which&lt;br /&gt;
# letsencrypt will write a hash in /.well-known/acme-challenge directory.&lt;br /&gt;
webroot-path = /srv/www-sugarlabs/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The LE validation server must have access to the domain (port 80) of which we want to get the certificate. In order to validate that the server control the domain, the LE CA will issue one or more sets of challenges. For example, provisioning an HTTP resource under a well-known URI. Usually, the resource requested will be located at &amp;lt;code&amp;gt;/.well-known/acme-challenge&amp;lt;/code&amp;gt; under the webroot folder of the requested site.&lt;br /&gt;
&lt;br /&gt;
In Nginx, we can define how to process a specific request with the location directive. Be sure to add the following lines to the server block inside Nginx:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
location &#039;/.well-known/acme-challenge&#039; {&lt;br /&gt;
        root /srv/www-sugarlabs/;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get the certificate using the previous config file, we must execute the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/opt/letsencrypt/letsencrypt-auto certonly --config /etc/letsencrypt/config/sugarlabs.org.ini &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All generated keys and issued certificates can be found in &amp;lt;code&amp;gt;/etc/letsencrypt/live/sugarlabs.org/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The same process can be applied for getting certs for other domains: &lt;br /&gt;
(1) create a subdomain.domain.tld config file,&lt;br /&gt;
(2) define the well-know resource and,&lt;br /&gt;
(3) request the certificate.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: We had to comment out our CAA records in the DNS in order to obtain the certificates. CAA records forbids LE to issue certificates for a domain.&lt;br /&gt;
&lt;br /&gt;
== Renewing a Certificate ==&lt;br /&gt;
&lt;br /&gt;
Let’s Encrypt CA issues short lived certificates (90 days). In order to automate the renewal, we everyday automatically execute a script which checks the expiration day for every certificate and requests the renewal 15 days before the expiration day (this value is tweakable). After renewing the cert, the script reload the Nginx config.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
LE_CERTS=&#039;/etc/letsencrypt/live&#039;&lt;br /&gt;
LE_CONFIG_PATH=&#039;/etc/letsencrypt/config&#039;&lt;br /&gt;
LE_BIN=&#039;/opt/letsencrypt/letsencrypt-auto&#039;&lt;br /&gt;
WEB_SERVER=&#039;nginx&#039;&lt;br /&gt;
EXP_LIMIT=15&lt;br /&gt;
&lt;br /&gt;
for config in $(ls $LE_CONFIG_PATH/*.ini); do&lt;br /&gt;
   domain=$(basename &amp;quot;$config&amp;quot; .ini)&lt;br /&gt;
   DATE_NOW=$(date -d &amp;quot;now&amp;quot; +%s)&lt;br /&gt;
   EXP_DATE=$(date -d &amp;quot;`openssl x509 -in $LE_CERTS/$domain/cert.pem -text -noout | grep &amp;quot;Not After&amp;quot; | cut -c 25-`&amp;quot; +%s)&lt;br /&gt;
   EXP_DAYS=$(( (EXP_DATE - $DATE_NOW) / 86400 ))&lt;br /&gt;
   if (( $EXP_DAYS &amp;lt; $EXP_LIMIT )) ; then&lt;br /&gt;
        echo &amp;quot;The certificate for $domain is about to expire soon. Starting renewal...&amp;quot;&lt;br /&gt;
        $LE_BIN certonly --renew-by-default --config $config&lt;br /&gt;
        echo &amp;quot;Reloading $WEB_SERVER&amp;quot;&lt;br /&gt;
        /usr/sbin/service $WEB_SERVER reload&lt;br /&gt;
        echo &amp;quot;Renewal process finished for $domain&amp;quot;&lt;br /&gt;
   else&lt;br /&gt;
        echo &amp;quot;The certificate for $domain is up to date, no need for renewal ($EXP_DAYS days left for renewal).&amp;quot;&lt;br /&gt;
   fi&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The script is named &amp;lt;code&amp;gt;renew-letsencrypt.sh&amp;lt;/code&amp;gt; and is located in &amp;lt;code&amp;gt;/usr/local/bin &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sites ==&lt;br /&gt;
&lt;br /&gt;
The sites currently with a LE SSL certificate are:&lt;br /&gt;
&lt;br /&gt;
* [https://www.sugarlabs.org www.sugarlabs.org].&lt;br /&gt;
* [https://nagios.sugarlabs.org nagios.sugarlabs.org].&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
* [[User:scg|Samuel]], scg on #sugar on Freenode.&lt;/div&gt;</summary>
		<author><name>Scg</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Sysadmin/Letsencrypt&amp;diff=96780</id>
		<title>Sysadmin/Letsencrypt</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Sysadmin/Letsencrypt&amp;diff=96780"/>
		<updated>2016-01-03T21:08:09Z</updated>

		<summary type="html">&lt;p&gt;Scg: /* Renewing a Certificate */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
&lt;br /&gt;
Let’s Encrypt (LE) is a free, automated, and open certificate authority (CA), run for the public’s benefit. It is sponsored by the biggest Internet companies and browsers: Google (Chrome), Mozilla (Firefox), and so on. At the time of writing, LE is in public beta.&lt;br /&gt;
&lt;br /&gt;
Currently, we have LE installed on [[Machine/freedom]].&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
We have chosen &amp;lt;code&amp;gt;/opt/letsencrypt&amp;lt;/code&amp;gt; as the base or home directory for the LE client. The LE Client is a fully-featured, extensible client for the Let’s Encrypt CA (or any other CA that speaks the ACME protocol) that can automate the tasks of obtaining certificates and configuring webservers to use them.&lt;br /&gt;
&lt;br /&gt;
Because there is no a LE package for Ubuntu yet, we must clone the &amp;lt;code&amp;gt;letsencrypt-auto&amp;lt;/code&amp;gt; wrapper script. This script obtains some dependencies from the OS (apt-get) and puts others in a python virtual environment (Pip). The only requirement is Python 2.6 or Python 2.7.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git clone https://github.com/letsencrypt/letsencrypt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This client requires root access in order to write to &amp;lt;code&amp;gt;/etc/letsencrypt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/var/log/letsencrypt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/var/lib/letsencrypt&amp;lt;/code&amp;gt;; to bind to ports 80 and 443 and to read and modify webserver configurations (for apache or nginx plugins).&lt;br /&gt;
&lt;br /&gt;
== Getting a certificate ==&lt;br /&gt;
&lt;br /&gt;
The Let’s Encrypt client supports a number of different &#039;&#039;plugins&#039;&#039; that can be used to obtain and/or install certificates. For the moment, we decided to get the certificates manually and apply the changes to the the web server with a script. We can use the Nginx plugin to automatically obtain and install the certificate but this plugin is still experimental.&lt;br /&gt;
&lt;br /&gt;
In order to automate the process (of getting the cert), we create a config file for each domain inside the folder &amp;lt;code&amp;gt;/etc/letsencrypt/config&amp;lt;/code&amp;gt;. For example, the config file for www.slo is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# We use a 4096 bit RSA key instead of 2048&lt;br /&gt;
rsa-key-size = 4096&lt;br /&gt;
&lt;br /&gt;
email = sysadmin@sugarlabs.org&lt;br /&gt;
domains = sugarlabs.org, www.sugarlabs.org&lt;br /&gt;
&lt;br /&gt;
authenticator = webroot&lt;br /&gt;
&lt;br /&gt;
# This is the webroot directory of your domain in which&lt;br /&gt;
# letsencrypt will write a hash in /.well-known/acme-challenge directory.&lt;br /&gt;
webroot-path = /srv/www-sugarlabs/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The LE validation server must have access to the domain (port 80) of which we want to get the certificate. In order to validate that the server control the domain, the LE CA will issue one or more sets of challenges. For example, provisioning an HTTP resource under a well-known URI. Usually, the resource requested will be located at &amp;lt;code&amp;gt;/.well-known/acme-challenge&amp;lt;/code&amp;gt; under the webroot folder of the requested site.&lt;br /&gt;
&lt;br /&gt;
In Nginx, we can define how to process a specific request with the location directive. Be sure to add the following lines to the server block inside Nginx:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
location &#039;/.well-known/acme-challenge&#039; {&lt;br /&gt;
        root /srv/www-sugarlabs/;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get the certificate using the previous config file, we must execute the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/opt/letsencrypt/letsencrypt-auto certonly --config /etc/letsencrypt/config/sugarlabs.org.ini &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All generated keys and issued certificates can be found in &amp;lt;code&amp;gt;/etc/letsencrypt/live/sugarlabs.org/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The same process can be applied for getting certs for other domains: &lt;br /&gt;
(1) create a subdomain.domain.tld config file,&lt;br /&gt;
(2) define the well-know resource and,&lt;br /&gt;
(3) request the certificate.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: We had to comment out our CAA records in the DNS in order to obtain the certificates. CAA records forbids LE to issue certificates for a domain.&lt;br /&gt;
&lt;br /&gt;
== Renewing a Certificate ==&lt;br /&gt;
&lt;br /&gt;
Let’s Encrypt CA issues short lived certificates (90 days). In order to automate the renewal, we everyday automatically execute a script which checks the expiration day for every certificate and requests the renewal 15 days before the expiration day (this value is tweakable). After renewing the cert, the script reload the Nginx config.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
LE_CERTS=&#039;/etc/letsencrypt/live&#039;&lt;br /&gt;
LE_CONFIG_PATH=&#039;/etc/letsencrypt/config&#039;&lt;br /&gt;
LE_BIN=&#039;/opt/letsencrypt/letsencrypt-auto&#039;&lt;br /&gt;
WEB_SERVER=&#039;nginx&#039;&lt;br /&gt;
EXP_LIMIT=15&lt;br /&gt;
&lt;br /&gt;
for config in $(ls $LE_CONFIG_PATH/*.ini); do&lt;br /&gt;
   domain=$(basename &amp;quot;$config&amp;quot; .ini)&lt;br /&gt;
   DATE_NOW=$(date -d &amp;quot;now&amp;quot; +%s)&lt;br /&gt;
   EXP_DATE=$(date -d &amp;quot;`openssl x509 -in $LE_CERTS/$domain/cert.pem -text -noout | grep &amp;quot;Not After&amp;quot; | cut -c 25-`&amp;quot; +%s)&lt;br /&gt;
   EXP_DAYS=$(( (EXP_DATE - $DATE_NOW) / 86400 ))&lt;br /&gt;
   if (( $EXP_DAYS &amp;lt; $EXP_LIMIT )) ; then&lt;br /&gt;
        echo &amp;quot;The certificate for $domain is about to expire soon. Starting renewal...&amp;quot;&lt;br /&gt;
        $LE_BIN certonly --renew-by-default --config $config&lt;br /&gt;
        echo &amp;quot;Reloading $WEB_SERVER&amp;quot;&lt;br /&gt;
        /usr/sbin/service $WEB_SERVER reload&lt;br /&gt;
        echo &amp;quot;Renewal process finished for $domain&amp;quot;&lt;br /&gt;
   else&lt;br /&gt;
        echo &amp;quot;The certificate for $domain is up to date, no need for renewal ($EXP_DAYS days left for renewal).&amp;quot;&lt;br /&gt;
   fi&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The script is named &amp;lt;code&amp;gt;renew-letsencrypt.sh&amp;lt;/code&amp;gt; and is located in &amp;lt;code&amp;gt;/usr/local/bin &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sites ==&lt;br /&gt;
&lt;br /&gt;
The sites currently with a LE SSL certificate are:&lt;br /&gt;
&lt;br /&gt;
* [https://www.sugarlabs.org www.sugarlabs.org].&lt;br /&gt;
* [https://nagios.sugarlabs.org nagios.sugarlabs.org].&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
* [[User:scg|Samuel]], scg on #sugar on Freenode&lt;/div&gt;</summary>
		<author><name>Scg</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Sysadmin/Letsencrypt&amp;diff=96779</id>
		<title>Sysadmin/Letsencrypt</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Sysadmin/Letsencrypt&amp;diff=96779"/>
		<updated>2016-01-03T20:47:37Z</updated>

		<summary type="html">&lt;p&gt;Scg: Created page with &amp;quot;== Description ==  Let’s Encrypt (LE) is a free, automated, and open certificate authority (CA), run for the public’s benefit. It is sponsored by the biggest Internet comp...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
&lt;br /&gt;
Let’s Encrypt (LE) is a free, automated, and open certificate authority (CA), run for the public’s benefit. It is sponsored by the biggest Internet companies and browsers: Google (Chrome), Mozilla (Firefox), and so on. At the time of writing, LE is in public beta.&lt;br /&gt;
&lt;br /&gt;
Currently, we have LE installed on [[Machine/freedom]].&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
We have chosen &amp;lt;code&amp;gt;/opt/letsencrypt&amp;lt;/code&amp;gt; as the base or home directory for the LE client. The LE Client is a fully-featured, extensible client for the Let’s Encrypt CA (or any other CA that speaks the ACME protocol) that can automate the tasks of obtaining certificates and configuring webservers to use them.&lt;br /&gt;
&lt;br /&gt;
Because there is no a LE package for Ubuntu yet, we must clone the &amp;lt;code&amp;gt;letsencrypt-auto&amp;lt;/code&amp;gt; wrapper script. This script obtains some dependencies from the OS (apt-get) and puts others in a python virtual environment (Pip). The only requirement is Python 2.6 or Python 2.7.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git clone https://github.com/letsencrypt/letsencrypt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This client requires root access in order to write to &amp;lt;code&amp;gt;/etc/letsencrypt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/var/log/letsencrypt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/var/lib/letsencrypt&amp;lt;/code&amp;gt;; to bind to ports 80 and 443 and to read and modify webserver configurations (for apache or nginx plugins).&lt;br /&gt;
&lt;br /&gt;
== Getting a certificate ==&lt;br /&gt;
&lt;br /&gt;
The Let’s Encrypt client supports a number of different &#039;&#039;plugins&#039;&#039; that can be used to obtain and/or install certificates. For the moment, we decided to get the certificates manually and apply the changes to the the web server with a script. We can use the Nginx plugin to automatically obtain and install the certificate but this plugin is still experimental.&lt;br /&gt;
&lt;br /&gt;
In order to automate the process (of getting the cert), we create a config file for each domain inside the folder &amp;lt;code&amp;gt;/etc/letsencrypt/config&amp;lt;/code&amp;gt;. For example, the config file for www.slo is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# We use a 4096 bit RSA key instead of 2048&lt;br /&gt;
rsa-key-size = 4096&lt;br /&gt;
&lt;br /&gt;
email = sysadmin@sugarlabs.org&lt;br /&gt;
domains = sugarlabs.org, www.sugarlabs.org&lt;br /&gt;
&lt;br /&gt;
authenticator = webroot&lt;br /&gt;
&lt;br /&gt;
# This is the webroot directory of your domain in which&lt;br /&gt;
# letsencrypt will write a hash in /.well-known/acme-challenge directory.&lt;br /&gt;
webroot-path = /srv/www-sugarlabs/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The LE validation server must have access to the domain (port 80) of which we want to get the certificate. In order to validate that the server control the domain, the LE CA will issue one or more sets of challenges. For example, provisioning an HTTP resource under a well-known URI. Usually, the resource requested will be located at &amp;lt;code&amp;gt;/.well-known/acme-challenge&amp;lt;/code&amp;gt; under the webroot folder of the requested site.&lt;br /&gt;
&lt;br /&gt;
In Nginx, we can define how to process a specific request with the location directive. Be sure to add the following lines to the server block inside Nginx:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
location &#039;/.well-known/acme-challenge&#039; {&lt;br /&gt;
        root /srv/www-sugarlabs/;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get the certificate using the previous config file, we must execute the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/opt/letsencrypt/letsencrypt-auto certonly --config /etc/letsencrypt/config/sugarlabs.org.ini &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All generated keys and issued certificates can be found in &amp;lt;code&amp;gt;/etc/letsencrypt/live/sugarlabs.org/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The same process can be applied for getting certs for other domains: &lt;br /&gt;
(1) create a subdomain.domain.tld config file,&lt;br /&gt;
(2) define the well-know resource and,&lt;br /&gt;
(3) request the certificate.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: We had to comment out our CAA records in the DNS in order to obtain the certificates. CAA records forbids LE to issue certificates for a domain.&lt;br /&gt;
&lt;br /&gt;
== Renewing a Certificate ==&lt;br /&gt;
&lt;br /&gt;
Let’s Encrypt CA issues short lived certificates (90 days). In order to automate the renewal, we everyday automatically execute a script which checks the expiration day for every certificate and requests the renewal 15 days before the expiration day (this value is tweakable). After renewing the cert, the script reload the Nginx config.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
LE_CERTS=&#039;/etc/letsencrypt/live&#039;&lt;br /&gt;
LE_CONFIG_PATH=&#039;/etc/letsencrypt/config&#039;&lt;br /&gt;
LE_BIN=&#039;/opt/letsencrypt/letsencrypt-auto&#039;&lt;br /&gt;
WEB_SERVER=&#039;nginx&#039;&lt;br /&gt;
EXP_LIMIT=15&lt;br /&gt;
&lt;br /&gt;
for config in $(ls $LE_CONFIG_PATH/*.ini); do&lt;br /&gt;
   domain=$(basename &amp;quot;$config&amp;quot; .ini)&lt;br /&gt;
   DATE_NOW=$(date -d &amp;quot;now&amp;quot; +%s)&lt;br /&gt;
   EXP_DATE=$(date -d &amp;quot;`openssl x509 -in $LE_CERTS/$domain/cert.pem -text -noout | grep &amp;quot;Not After&amp;quot; | cut -c 25-`&amp;quot; +%s)&lt;br /&gt;
   EXP_DAYS=$(( (EXP_DATE - $DATE_NOW) / 86400 ))&lt;br /&gt;
   if (( $EXP_DAYS &amp;lt; $EXP_LIMIT )) ; then&lt;br /&gt;
        echo &amp;quot;The certificate for $domain is about to expire soon. Starting renewal...&amp;quot;&lt;br /&gt;
        $LE_BIN certonly --renew-by-default --config $config&lt;br /&gt;
        echo &amp;quot;Reloading $WEB_SERVER&amp;quot;&lt;br /&gt;
        /usr/sbin/service $WEB_SERVER reload&lt;br /&gt;
        echo &amp;quot;Renewal process finished for $domain&amp;quot;&lt;br /&gt;
   else&lt;br /&gt;
        echo &amp;quot;The certificate for $domain is up to date, no need for renewal ($EXP_DAYS days left for renewal).&amp;quot;&lt;br /&gt;
   fi&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sites ==&lt;br /&gt;
&lt;br /&gt;
The sites currently with a LE SSL certificate are:&lt;br /&gt;
&lt;br /&gt;
* [https://www.sugarlabs.org www.sugarlabs.org].&lt;br /&gt;
* [https://nagios.sugarlabs.org nagios.sugarlabs.org].&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
* [[User:scg|Samuel]], scg on #sugar on Freenode&lt;/div&gt;</summary>
		<author><name>Scg</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Sysadmin/Add_virtual_machine&amp;diff=96368</id>
		<title>Sysadmin/Add virtual machine</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Sysadmin/Add_virtual_machine&amp;diff=96368"/>
		<updated>2015-12-07T02:50:08Z</updated>

		<summary type="html">&lt;p&gt;Scg: /* Create new VM on Machine/justice or Machine/freedom */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Create new VM on [[Machine/justice]] or [[Machine/freedom]] ===&lt;br /&gt;
&lt;br /&gt;
This procedure creates a clone of the [[Machine/template-precise|Ubuntu Precise template virtual machine]].&lt;br /&gt;
&lt;br /&gt;
 virt-clone --prompt -o template-precise --file=/var/lib/libvirt/images/boot/FOOBAR-boot.img --file=/dev/justice/FOOBAR-root -n FOOBAR&lt;br /&gt;
 virsh autostart FOOBAR&lt;br /&gt;
 virsh start --console FOOBAR&lt;br /&gt;
&lt;br /&gt;
* Add A and AAAA records for the new host in the sugarlabs.org zone file (See [[Service/Nameservers]]).&lt;br /&gt;
&lt;br /&gt;
* Now login as root from the console (there should be no password)&lt;br /&gt;
&lt;br /&gt;
* setup both IPv4 and IPv6 addresses&lt;br /&gt;
&lt;br /&gt;
 vi /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
* change machine fqdn&lt;br /&gt;
&lt;br /&gt;
 sed -i -e s/template-precise/FOOBAR/g /etc/hosts /etc/hostname /etc/mailname /etc/postfix/main.cf&lt;br /&gt;
&lt;br /&gt;
* activate new IP and hostname&lt;br /&gt;
&lt;br /&gt;
 /etc/init.d/networking restart&lt;br /&gt;
&lt;br /&gt;
* install latest security/stability updates&lt;br /&gt;
&lt;br /&gt;
 aptitude update&lt;br /&gt;
 aptitude full-upgrade&lt;br /&gt;
&lt;br /&gt;
* Find a nice color combo for HOST_COLOR in /etc/zzz_profile.conf&lt;br /&gt;
&lt;br /&gt;
* generate host keys and a key for root&lt;br /&gt;
&lt;br /&gt;
 rm /etc/ssh/ssh_host_*&lt;br /&gt;
 dpkg-reconfigure openssh-server&lt;br /&gt;
 ssh-keygen -N &amp;quot;&amp;quot; -f /root/.ssh/id_rsa -t rsa&lt;br /&gt;
&lt;br /&gt;
* Setup wizbackup on a backup server (See [[Service/backup]])&lt;br /&gt;
&lt;br /&gt;
* Move daily, weekly, monthly cronjobs to a unique timeslot to avoid cpu/net storms&lt;br /&gt;
&lt;br /&gt;
 vi /etc/crontab&lt;br /&gt;
&lt;br /&gt;
* The most important thing: come up with a funny quip for this machine&lt;br /&gt;
&lt;br /&gt;
 vi /etc/motd.tail&lt;br /&gt;
&lt;br /&gt;
* Taa--daah!&lt;br /&gt;
&lt;br /&gt;
 reboot&lt;br /&gt;
&lt;br /&gt;
* Add the machine to &amp;lt;code&amp;gt;/etc/munin/munin.conf&amp;lt;/code&amp;gt; on [[Machine/sunjammer]] for monitoring.&lt;br /&gt;
&lt;br /&gt;
 [housetree.sugarlabs.org]&lt;br /&gt;
        address housetree.sugarlabs.org&lt;br /&gt;
&lt;br /&gt;
See also: [[Sysadmin/Delete virtual machine]], [[Sysadmin/Migrate_virtual_machine]].&lt;/div&gt;</summary>
		<author><name>Scg</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Infrastructure_Team/Contacts&amp;diff=96082</id>
		<title>Infrastructure Team/Contacts</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Infrastructure_Team/Contacts&amp;diff=96082"/>
		<updated>2015-10-06T17:09:11Z</updated>

		<summary type="html">&lt;p&gt;Scg: /* Core admins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{TeamHeader|Infrastructure Team}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
== Team coordinator ==&lt;br /&gt;
{{:Infrastructure Team/Coordinator}}&lt;br /&gt;
&lt;br /&gt;
== Support and administrative requests ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please, do not cc multiple administrative contacts in the same email.&#039;&#039;&#039; If you do not receive an answer within 48 hours, please ping one of us by email or IRC.&lt;br /&gt;
&lt;br /&gt;
;User accounts&lt;br /&gt;
:&amp;lt;accounts AT sugarlabs DOT org&amp;gt;&lt;br /&gt;
:See also [[Service/Account]]&lt;br /&gt;
&lt;br /&gt;
;Sugar Labs web site and wiki&lt;br /&gt;
:&amp;lt;webmaster AT sugarlabs DOT org&amp;gt;&lt;br /&gt;
:See also [[Service/wiki]]&lt;br /&gt;
&lt;br /&gt;
;Git project hosting&lt;br /&gt;
:&amp;lt;gitmaster AT sugarlabs DOT org&amp;gt;&lt;br /&gt;
:See also [[Service/git]]&lt;br /&gt;
&lt;br /&gt;
;Sugar Planet&lt;br /&gt;
:&amp;lt;planetmaster AT sugarlabs DOT org&amp;gt;&lt;br /&gt;
:See also [[Sysadmin/Planet_syndication_request]], [[Service/planet]]&lt;br /&gt;
&lt;br /&gt;
;DNS Management and Domains Registration&lt;br /&gt;
:&amp;lt;hostmaster AT sugarlabs DOT org&amp;gt;&lt;br /&gt;
:See also [[Service/Nameservers]]&lt;br /&gt;
&lt;br /&gt;
;Other requests&lt;br /&gt;
:&amp;lt;sysadmin AT sugarlabs DOT org&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Team Contacts ==&lt;br /&gt;
&lt;br /&gt;
* Infrastructure Team mailing-list: http://lists.sugarlabs.org/listinfo/systems&lt;br /&gt;
* IRC: [http://chat.sugarlabs.org #sugar on FreeNode]&lt;br /&gt;
&lt;br /&gt;
== Services status ==&lt;br /&gt;
&lt;br /&gt;
http://identi.ca/group/sugarlabsstatus&lt;br /&gt;
&lt;br /&gt;
This Identi.ca feed sends updates about the health status of all our&lt;br /&gt;
services and machines.  Subscribe if you want to be notified.&lt;br /&gt;
&lt;br /&gt;
Notifications for planned service outages are also posted ahead of time on our&lt;br /&gt;
&amp;quot;It&#039;s An Education Project&amp;quot; (iaep) list (check the [http://wiki.sugarlabs.org/go/Mailing_Lists#General_Lists Mailing Lists] page).&lt;br /&gt;
&lt;br /&gt;
== Sysadmin Contacts ==&lt;br /&gt;
&lt;br /&gt;
;For problems with a specific service (e.g. [[Service/wiki|this wiki]]): consult the specific [[Service]] page for a list of sysadmin contacts&lt;br /&gt;
;For problems with a server (e.g. [[Machine/sunjammer|sunjammer]]): consult the specific [[Machine]] page for a list of sysadmin contacts&lt;br /&gt;
;For anything else: your friendly sysadmins can be contacted at &#039;&#039;&#039;&amp;lt;sysadmin &#039;&#039;AT&#039;&#039; sugarlabs &#039;&#039;DOT&#039;&#039; org&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Core admins ==&lt;br /&gt;
&lt;br /&gt;
For urgent matters, the core Sugar Labs sysadmins are:&lt;br /&gt;
&lt;br /&gt;
* [[User:Bernie|Bernie Innocenti]], &#039;&#039;&#039;bernie&#039;&#039;&#039; on [http://chat.sugarlabs.org/ #sugar], PGP [http://keys.sugarlabs.org:11371/pks/lookup?op=vindex&amp;amp;search=0x71FF4BAC 71FF4BAC]&lt;br /&gt;
* [[User:Dogi|Stefan Unterhauser]], &#039;&#039;&#039;dogi&#039;&#039;&#039; on [http://chat.sugarlabs.org/ #sugar] or [http://mibbit.com/?channel=%23treehouse&amp;amp;server=irc.oftc.net #treehouse]&lt;br /&gt;
[http://keys.sugarlabs.org:11371/pks/lookup?op=vindex&amp;amp;search=0xE810E9C1 E810E9C1]&lt;br /&gt;
* [[User:Sebastian|Sebastian Silva]], &#039;&#039;&#039;icarito&#039;&#039;&#039; on [http://chat.sugarlabs.org/ #sugar]&lt;br /&gt;
* [[User:Scg|Samuel Cantero]], &#039;&#039;&#039;scg&#039;&#039;&#039; on [http://chat.sugarlabs.org/ #sugar]&lt;br /&gt;
&lt;br /&gt;
For any non-urgent business, preferably use the official administrative contacts instead of contacting any individual system administrator directly.&lt;br /&gt;
&lt;br /&gt;
== We Care (tm) ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Barbeque computer.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Contact]]&lt;/div&gt;</summary>
		<author><name>Scg</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=User:Scg&amp;diff=96081</id>
		<title>User:Scg</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=User:Scg&amp;diff=96081"/>
		<updated>2015-10-06T17:04:42Z</updated>

		<summary type="html">&lt;p&gt;Scg: Created page with &amp;quot;== Personal info == I am a computer engineer and a Linux passionate. Currently here as a volunteer trying to help in this wonderful project.  &amp;#039;&amp;#039;&amp;#039;LinkedIn profile&amp;#039;&amp;#039;&amp;#039;: https://w...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Personal info ==&lt;br /&gt;
I am a computer engineer and a Linux passionate. Currently here as a volunteer trying to help in this wonderful project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;LinkedIn profile&#039;&#039;&#039;: https://www.linkedin.com/in/scantero&lt;br /&gt;
&lt;br /&gt;
== Contact info ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;E-mail&#039;&#039;&#039;: scanterog AT gmail DOT com&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Freenode IRC nickname&#039;&#039;&#039;: scg on #sugar channel&lt;/div&gt;</summary>
		<author><name>Scg</name></author>
	</entry>
</feed>