<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.5.2">Jekyll</generator><link href="www.marcsi.ch/feed.xml" rel="self" type="application/atom+xml" /><link href="www.marcsi.ch/" rel="alternate" type="text/html" /><updated>2024-08-24T05:12:27-05:00</updated><id>www.marcsi.ch/</id><title type="html">marcsi.ch</title><subtitle>blog, projects, games and my thoughts
</subtitle><entry><title type="html">Gitlab Webhook in PHP</title><link href="www.marcsi.ch/migrated/2013/06/10/gitlab-webhook-in-php.html" rel="alternate" type="text/html" title="Gitlab Webhook in PHP" /><published>2013-06-10T00:00:00-05:00</published><updated>2013-06-10T00:00:00-05:00</updated><id>www.marcsi.ch/migrated/2013/06/10/gitlab-webhook-in-php</id><content type="html" xml:base="www.marcsi.ch/migrated/2013/06/10/gitlab-webhook-in-php.html">&lt;p&gt;I started using Gitlab a while ago, and wanted to use the Webhook feature to automatically update the website I was working on when the master branch was updated.&lt;/p&gt;

&lt;p&gt;I looked for an easy solution on the internet, but didn’t find anything that worked out of the box. Finally I came up with this code, that worked for me.&lt;/p&gt;

&lt;p&gt;The following php file, can be added like http://domain.ch/webhooks/webhook.php?key=someKey to the Webhook section in Gitlab. The key can be anything. It just makes sure that if someone accidentally opens the webpage it won’t trigger an update. It also checks the IP of the client that connects. So the IP of the gitlab server has to be added. The script logs everything into a file: webhook.log. After a check, if the update was to the master branch, it executes a shell script.&lt;/p&gt;

&lt;div class=&quot;language-php highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;cp&quot;&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;//error_reporting(E_ALL);
&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;$key&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'someKey'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;$ip&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;xxx.xxx.xxx.xxx&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;nb&quot;&gt;file_put_contents&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'/var/www/webhook.log'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'Request on '&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;date&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;F j, Y, g:i a&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;' from '&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$_SERVER&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'REMOTE_ADDR'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;PHP_EOL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;FILE_APPEND&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$_GET&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'key'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$key&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;no permission 1&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;file_put_contents&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'/var/www/webhook.log'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'wrong key'&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;PHP_EOL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;FILE_APPEND&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;exit&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$_SERVER&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'REMOTE_ADDR'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$ip&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;no permission 2&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;file_put_contents&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'/var/www/webhook.log'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'ip not permitted'&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;PHP_EOL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;FILE_APPEND&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;exit&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;nv&quot;&gt;$json&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;file_get_contents&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'php://input'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;//file_put_contents('/var/www/webhook.log', PHP_EOL . $json, FILE_APPEND);
&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$jsarr&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;json_decode&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$json&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;//file_put_contents('/var/www/webhook.log', PHP_EOL . print_r($jsarr,true), FILE_APPEND);
&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$branch&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$jsarr&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;ref&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;file_put_contents&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'/var/www/webhook.log'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'Branch= '&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$branch&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;PHP_EOL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;FILE_APPEND&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;// Pushed to master?
&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$branch&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'refs/heads/master'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;exec&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;/var/www/webhook.sh&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;cp&quot;&gt;?&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;The shell script is in my case only a few lines. It executes the git pull command and writes it into the logfile.&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c&quot;&gt;#!/bin/sh&lt;/span&gt;

&lt;span class=&quot;nb&quot;&gt;cd&lt;/span&gt; /var/www/someWebsite
git pull &amp;gt;&amp;gt; /var/www/webhook.log
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Make sure that the file is executable, and git is already set up properly in the directory. It has to be set up with the user that executes the script. For me that is www-data.&lt;/p&gt;</content><author><name></name></author><category term="git" /><category term="gitlab" /><category term="php" /><category term="script" /><category term="webhook" /><summary type="html">I started using Gitlab a while ago, and wanted to use the Webhook feature to automatically update the website I was working on when the master branch was updated.</summary></entry><entry><title type="html">Cross compile for Raspbian on Ubuntu (Eclipse)</title><link href="www.marcsi.ch/migrated/2013/06/08/crosscompile-for-raspbian-on-ubuntu.html" rel="alternate" type="text/html" title="Cross compile for Raspbian on Ubuntu (Eclipse)" /><published>2013-06-08T00:00:00-05:00</published><updated>2013-06-08T00:00:00-05:00</updated><id>www.marcsi.ch/migrated/2013/06/08/crosscompile-for-raspbian-on-ubuntu</id><content type="html" xml:base="www.marcsi.ch/migrated/2013/06/08/crosscompile-for-raspbian-on-ubuntu.html">&lt;p&gt;For a project I’m working on, I’m developing a C++ application on the Raspberry Pi (Raspbian “wheezy”). I started working directly on the Rasppi but soon enough the compilation took really long to the point it wasn’t comfortable for me any more. So I decided to try to cross compile on my virtual Ubuntu on my computer. At the end this worked out pretty great, and I’m happy with the solution. I’m using Eclipse CDT as the IDE, which I’m not entirely happy about.&lt;/p&gt;

&lt;p&gt;Most information about setting this up I found on the blog post from &lt;a href=&quot;http://hertaville.com/2012/09/28/development-environment-raspberry-pi-cross-compiler/&quot;&gt;Hartaville&lt;/a&gt;. There are a few differences though. There is a step that makes the process a lot easier, and this isn’t mentioned in the blog itself, but only in the comments. So here I list the important broad steps:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Download and Install Eclipse Juno&lt;/li&gt;
  &lt;li&gt;Download Cross Compiling Toolchain ( &lt;a href=&quot;https://github.com/raspberrypi/tools&quot;&gt;https://github.com/raspberrypi/tools&lt;/a&gt; )
    &lt;ul&gt;
      &lt;li&gt;I put it into /home/shin/raspberrypi&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Creating new Project in Eclipse:
    &lt;ol&gt;
      &lt;li&gt;File -&amp;gt; New -&amp;gt; C++ Project&lt;/li&gt;
      &lt;li&gt;choose “Cross GCC” as the Toolchain. &amp;lt;- This is the one step that is different&lt;/li&gt;
      &lt;li&gt;Rest is normal, until to the “Cross GCC Command” page
        &lt;ul&gt;
          &lt;li&gt;Cross compiler prefix: prefix: arm-linux-gnueabihf-&lt;/li&gt;
          &lt;li&gt;Cross compiler path: /home/shin/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;These steps should make sure that Eclipse will configure itself (include paths etc.&lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This should be enough to cross compile a basic project. For my project I also needed to use &lt;strong&gt;libraries&lt;/strong&gt; that aren’t available in the cross toolchain. The next steps is how I made it compile with these libraries included.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Download &amp;amp; Compile &amp;amp; Install the libraries on the Raspberry Pi&lt;/li&gt;
  &lt;li&gt;Find the library files. (usually in /usr/lib/ or usr/local/lib)
    &lt;ul&gt;
      &lt;li&gt;copy to the workstation:  /home/shin/raspberrypi/tools/usr/lib&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Find the include files (usually in /usr/inculde or usr/local/include)
    &lt;ul&gt;
      &lt;li&gt;copy to the workstation: /home/shin/raspberrypi/tools/usr/include&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Configure Eclipse: Project -&amp;gt; Properties -&amp;gt; C/C++ Build -&amp;gt; Settings
    &lt;ul&gt;
      &lt;li&gt;Cross G++ Compiler
        &lt;ul&gt;
          &lt;li&gt;Includes: -I: /home/shin/raspberrypi/usr/include&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;Cross G++ Linker
        &lt;ul&gt;
          &lt;li&gt;Libraries:
            &lt;ul&gt;
              &lt;li&gt;-l: thrift, wiringPi, boost_thread, pthread, gloox&lt;/li&gt;
              &lt;li&gt;-L: /home/shin/raspberrypi/usr/lib&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In my project these options worked nice. I ran into the problem that the libraries itself needed &lt;strong&gt;other libraries&lt;/strong&gt; included. In my case these were libcrypto, libssl and libz. With the following steps I included those:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Find the libraries on the Raspberry Pi
    &lt;ul&gt;
      &lt;li&gt;In my case, they were in usr/lib/arm-linux-gnuebihf/&lt;/li&gt;
      &lt;li&gt;copy to the workstation: /home/shin/raspberrypi/tools/usr/wl&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Configure Eclipse: Project -&amp;gt; Properties -&amp;gt; C/C++ Build -&amp;gt; Settings
    &lt;ul&gt;
      &lt;li&gt;Cross G++ Linker
        &lt;ul&gt;
          &lt;li&gt;Miscellaneous:
            &lt;ul&gt;
              &lt;li&gt;Linker flags: -Wl,-rpath-link,/home/shin/raspberrypi/usr/wl&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Well, this worked for me anyway. I also set-up Remote Debugging. Just follow instructions the instructions in the blog post from &lt;a href=&quot;http://hertaville.com/2013/01/11/remote-debugging/&quot;&gt;Hartaville&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Edit: corrected the path of the cross-compiler. Thanks reader in the comments&lt;/em&gt;&lt;/p&gt;</content><author><name></name></author><category term="Eclipse" /><category term="Guide" /><category term="How-To" /><category term="Instructions" /><category term="Raspberry Pi" /><category term="Tutorial" /><category term="ubuntu" /><summary type="html">For a project I’m working on, I’m developing a C++ application on the Raspberry Pi (Raspbian “wheezy”). I started working directly on the Rasppi but soon enough the compilation took really long to the point it wasn’t comfortable for me any more. So I decided to try to cross compile on my virtual Ubuntu on my computer. At the end this worked out pretty great, and I’m happy with the solution. I’m using Eclipse CDT as the IDE, which I’m not entirely happy about.</summary></entry><entry><title type="html">Debian VPS</title><link href="www.marcsi.ch/migrated/2013/05/04/debian-vps.html" rel="alternate" type="text/html" title="Debian VPS" /><published>2013-05-04T00:00:00-05:00</published><updated>2013-05-04T00:00:00-05:00</updated><id>www.marcsi.ch/migrated/2013/05/04/debian-vps</id><content type="html" xml:base="www.marcsi.ch/migrated/2013/05/04/debian-vps.html">&lt;p&gt;A Virtual private server (VPS) is a server that does not directly exist as a single computer, but is emulated on a computer together with other virtual servers. This means that they are usually cheaper because they share the resources with other servers. The good thing about this is that you (the admin) have (almost) complete access to the server. You can install whatever OS you like and have complete root access, which enables you to change almost everything. In contrast to a hosting arrangement, where you only can host websites.&lt;/p&gt;

&lt;p&gt;The reason why I am renting one is so I can play around with it :) It is wonderful fun. During the last couple of months I have set up multiple services on it, which I briefly describe now:&lt;/p&gt;

&lt;h1 id=&quot;webserver&quot;&gt;Webserver&lt;/h1&gt;

&lt;p&gt;As a web server I have set up nginx with php-fpm. I decided for nginx because I wanted to be able to provide proxys to other websites.&lt;/p&gt;

&lt;p&gt;Currently I’m running:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;marcsi.ch (this website)
    &lt;ul&gt;
      &lt;li&gt;with subdomains for services I use
        &lt;ul&gt;
          &lt;li&gt;gitlab (code management)&lt;/li&gt;
          &lt;li&gt;rutorrent (BitTorrent seedbox webinterface)&lt;/li&gt;
          &lt;li&gt;tools (stats about the websites)&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;a private website for my fathers wine club&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;gitlab--git&quot;&gt;Gitlab – Git&lt;/h1&gt;

&lt;p&gt;I needed to set up something so I could manage the source code for my various projects. With this combination I have a wonderful setup which gives me the ability to version control all my code I write, without having to worry about policies of the various free services that offer the same.&lt;/p&gt;

&lt;h1 id=&quot;openvpn&quot;&gt;OpenVPN&lt;/h1&gt;

&lt;p&gt;I use openVPN regularly for various reasons. Mostly for anonymity. The openVPN server I set up is not because of that though. It is because now and then want to watch Swiss television (football mostly), which is no problem through the internet (Wilmaa, Zattoo, or srf.ch). The problem is that this is only possible if you are sitting in Switzerland. By using a openVPN connection to my VPS located in Zurich, I watch the streams via the Server and therefore use a Swiss IP, which makes me look like I watch directly from Switzerland.&lt;/p&gt;

&lt;h1 id=&quot;xmpp-server&quot;&gt;XMPP Server&lt;/h1&gt;

&lt;p&gt;For one project I am working on, I need a good way of sending messages around. I decided for XMPP, because it is widely used. Instant Messenger services like Google Talk use the same system. Therefore I set up a Prosody server. It is running, but not really used at this moment.&lt;/p&gt;

&lt;h1 id=&quot;dns-server--dynamic-dns&quot;&gt;DNS Server – dynamic DNS&lt;/h1&gt;

&lt;p&gt;For a couple of projects I needed dDNS. There are a lot of services out there that offer this. But the way I am, I wanted to set up my own system. Therefore I set up bind9 as a nameserver. And after a bit of research I am able to update the DNS entrys automatically (nsupdate), from a remote location. My raspberry-pi at home has now a domain name (i.e. xxx.dyn.marcsi.ch), through which I can always reach the device, even if the IP changes now and then.&lt;/p&gt;

&lt;h1 id=&quot;backup&quot;&gt;Backup&lt;/h1&gt;

&lt;p&gt;Like most VPS providers, mine is providing a backup FTP server, on which I can upload backups. These are encrypted. The decryption keys are safely stored somewhere I wont tell you. So when all data is lost, I will be able to restore most of it. These backups are made daily.&lt;/p&gt;

&lt;h1 id=&quot;awstats&quot;&gt;awstats&lt;/h1&gt;

&lt;p&gt;This is nothing big. It’s just a statistics program, and displays the usage statistics of the Web server in a human readable format on a webpage. I am able to view these stats in my tools section (private)&lt;/p&gt;

&lt;h1 id=&quot;rtorrent--irrsi--autodl--rutorrent&quot;&gt;rtorrent – irrsi – autodl – rutorrent&lt;/h1&gt;

&lt;p&gt;I have also setup a seedbox for all the torrents I want to help seeding. This helps me seeding rare torrents 24/7. If I ever want to distribute large files, this will be the way to go. The rutorrent interface provides me with a wonderful way of adding/deleting/changing things.&lt;/p&gt;

&lt;h1 id=&quot;psybnc&quot;&gt;psyBNC&lt;/h1&gt;

&lt;p&gt;I use this Bouncer, for all the places I now and then visit on IRC.&lt;/p&gt;

&lt;p&gt;I’m sure I forgot things. Maybe I will update this post, or just make another post on a later date.&lt;/p&gt;

&lt;p&gt;cheers&lt;/p&gt;</content><author><name></name></author><category term="awsstats" /><category term="backup" /><category term="ddns" /><category term="dns" /><category term="dyn dns" /><category term="git" /><category term="gitlab" /><category term="irc" /><category term="nginx" /><category term="openvpn" /><category term="psyBNC" /><category term="rtorrent" /><category term="rutorrent" /><category term="server" /><category term="vps" /><category term="xmpp" /><summary type="html">A Virtual private server (VPS) is a server that does not directly exist as a single computer, but is emulated on a computer together with other virtual servers. This means that they are usually cheaper because they share the resources with other servers. The good thing about this is that you (the admin) have (almost) complete access to the server. You can install whatever OS you like and have complete root access, which enables you to change almost everything. In contrast to a hosting arrangement, where you only can host websites.</summary></entry><entry><title type="html">Hello World!</title><link href="www.marcsi.ch/migrated/2013/04/11/hello-world.html" rel="alternate" type="text/html" title="Hello World!" /><published>2013-04-11T00:00:00-05:00</published><updated>2013-04-11T00:00:00-05:00</updated><id>www.marcsi.ch/migrated/2013/04/11/hello-world</id><content type="html" xml:base="www.marcsi.ch/migrated/2013/04/11/hello-world.html">&lt;p&gt;Once again, I’m upgrading my personal website. I think the last version was online for about least 3 years. I don’t really remember. It wasn’t really used anyway. I decided to change the website because I needed a place to post information about one of my projects. And since I was setting up my VPS again, it seemed like the right moment. The decision for the environment fell on WordPress. Mainly because I don’t really care what kind of CMS I use. I just needed a blog/CMS kind of thing, that would make it easy to put information up. WordPress has a big user base and therefore offers a lot of support, plugins and themes. Exactly what is needed if you don’t want to think about this kind of stuff.&lt;/p&gt;

&lt;p&gt;I will be using this website for everything I need it to. That means, information about my projects that I want to share with friends, family and the internet. And also the old stuff that was on the older version of this website. In reality this is only the Tetris java applet and the m4Curling java game. I actually plan to finish the latter at some point.&lt;/p&gt;

&lt;p&gt;Will I post blog posts? I’m not planning to. That is not what this WordPress installation is for. But that said, I may use this environment here, as an output for ramblings of mine. I distinctively remember a couple of times I just wanted to write something down, and now I have the chance and the tools to do it. That doesn’t mean I will though. Writing is really not my strong suit. I did a couple of posts on a blog on blogger.com (I think). I may migrate these posts on this website on a later date.&lt;/p&gt;

&lt;p&gt;Also I will make a post in the near future (maybe today), about the VPS this website is running on, and explain why and for what I use it.&lt;/p&gt;

&lt;p&gt;cheers&lt;/p&gt;</content><author><name></name></author><category term="blog" /><category term="cms" /><category term="vps" /><category term="website" /><category term="wordpress" /><summary type="html">Once again, I’m upgrading my personal website. I think the last version was online for about least 3 years. I don’t really remember. It wasn’t really used anyway. I decided to change the website because I needed a place to post information about one of my projects. And since I was setting up my VPS again, it seemed like the right moment. The decision for the environment fell on WordPress. Mainly because I don’t really care what kind of CMS I use. I just needed a blog/CMS kind of thing, that would make it easy to put information up. WordPress has a big user base and therefore offers a lot of support, plugins and themes. Exactly what is needed if you don’t want to think about this kind of stuff.</summary></entry></feed>