Other articles

  1. Installing Cockpit on Raspbian

    Cockpit

    Cockpit

    I was playing a bit with with a Raspberry Pi B and raspbian and I wanted to install Cockpit on my pi. Sadly, we can't use the provided debian repository since they do not provide packages for our Pi's processor architecture.

    So we do it ourselves.


    First thing, we need to install node. If you already have a current node installation, you don't need to do that.

    Starting with node, we download the latest node source code and unpack it wget https://nodejs.org/dist/v5.9.1/node-v5.9.1.tar.gz && tar -xzf node-v5.9.1.tar.gz. We now can just cd in there (cd node-v5.9.1) and build and install it (./configure && make && sudo make install). This will take quite some time. This might even take a few hours. After the configure step, you can make > makelog & and then disown in order to leave that session alone and even close it. But don't forget to sudo make install once it's done.


    Now on to building Cockpit itself.

    First we need to install all the build dependencies:

    sudo apt-get install autoconf intltool libglib2.0-dev libsystemd-journal-dev libjson-glib-dev libpolkit-agent-1-dev libkrb5-dev libssh-dev libpam-dev libkeyutils-dev glib-networking
    

    After we've installed all the build dependencies, we can download the sources of the latest release from github. In my case, this was 0.99.

    wget https://github.com/cockpit-project/cockpit/archive/0.99.zip && unzip 0.99.zip
    

    After we cd-ed into the source directory, we can, more or less, follow the building instructions.

    Create and switch to the build directory and run autogen.sh. I had to disable pcp because I wasn't able to find the header files in the raspbian repository. We also disable documentation creation.

    mkdir build
    cd build
    ../autogen.sh --disable-pcp --disable-doc
    

    And once this step is done, we compile it, install it and copy some authorization files.

    make
    sudo make install
    sudo cp ../src/bridge/cockpit.pam.insecure /etc/pam.d/cockpit
    sudo sh -c "cat ../src/bridge/sshd-reauthorize.pam >> /etc/pam.d/sshd"
    

    And we're basically done. Start cockpit with sudo systemctl start cockpit.socket and enable it to run on boot with sudo systemctl enable cockpit.socket.

    You're now good to go to access cockpit on port 9090 or integrate it in your cockpit landscape.


  2. Installing Rocket Chat with own MongoDB instance on a Raspberry Pi B

    I was tasked with installing Rocket.Chat on a raspberry pi. Currently I have a PiB and a Pi3 that are not tasked with anything. Since I expect myself having other plans for the Pi3, I chose to try installing Rocket.Chat on the PiB.


    First we start with installing raspbian on our pi. The light edition should do it. Do not forget to resize the root partition (using fdisk or parted) if you're using the light edition since it is not so easy to do from inside the raspbian system.

    But let's say we have a fresh raspbian installation and start from there.


    First we have to install all dependencies. Those are Node.js, MongoDB and graphicsmagick. Graphigsmagick we will install through the repository while we will build node, to get the latest and greatest version, ourselves.

    Starting with node, we download the latest node source code and unpack it wget https://nodejs.org/dist/v5.9.1/node-v5.9.1.tar.gz && tar -xzf node-v5.9.1.tar.gz. We now can just cd in there (cd node-v5.9.1) and build and install it (./configure && make && sudo make install). This will take quite some time. This might even take a few hours. After the configure step, you can make > makelog & and then disown in order to leave that session alone and even close it. But don't forget to sudo make install once it's done.

    In the meantime, if we have multiple terminal sessions or another ssh session, we can start installing the other stuff. graphicsmagick we can install with sudo apt-get install graphicsmagick. No problem there.

    MongoDB is a little bit more complex. They do not supply packages for our system, so we need to compile it ourselves as well. But this needs much more memory than our Pi has, so we need to add some swap memory as well.

    I had a spare 1GB usb stick lying around so I formatted this drive to swap (with gparted), plugged it into my Pi and enabled it for swapping with sudo swapon /dev/sda1. With more than 1Gb of swap, we are good to go (from what I've seen, the build process peaks at about 800MB of memory).

    Now we need to install scons with sudo apt-get install scons. We download and extract the latest source release from the mongodb download page (in my case, this was 3.2.4) with wget https://fastdl.mongodb.org/src/mongodb-src-r3.2.4.tar.gz && tar -xzf mongodb-src-r3.2.4.tar.gz The build process is not so hard, it just takes time. Once we cd ed into the source folder, we can start building the database server with scons. For me, this took slightly less than 30 hours so putting this one in the background as well and then going for a long walk, then a sleep, and then for a long walk again, might be good idea.

    After this is done, we install MongoDB with sudo scons install. This will, again, take a some time.

    If you've put all the stuff in the background, you can, once in a while, log in and check with top, whether your Pi is still doing something.


    I tried building MongoDB myself, before opting for the packages provided. During this exercise, I learned something, that makes me a bit wary.

    MongoDB's build process does not work with the source from github. The configure process fails with a source archive from github while the one from the download page, which should be identical, fails. This is quite an issue. Also, I couldn't find a MongoDB bugtracker linked anywhere from github or the MongoDB homepage. This leads me to believe that MongoDB is not really interested in the open source community and fostering an open infrastructure. Rocket.Chat is built upon MongoDB but I won't be using MongoDB for any of my projects.


links

social

Theme based on notmyidea