<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Lxc on zefanjas.de - Open Source &amp; Education</title>
    <link>https://zefanjas.de/tags/lxc/</link>
    <description>Recent content in Lxc on zefanjas.de - Open Source &amp; Education</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>de-DE</language>
    <lastBuildDate>Fri, 03 Apr 2020 07:25:21 +0000</lastBuildDate><atom:link href="https://zefanjas.de/tags/lxc/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Wekan – eine Open Source Trello Alternative</title>
      <link>https://zefanjas.de/wekan-open-source-trello-alternative/</link>
      <pubDate>Fri, 03 Apr 2020 07:25:21 +0000</pubDate>
      
      <guid>https://zefanjas.de/wekan-open-source-trello-alternative/</guid>
      <description>&lt;p&gt;In den letzten Wochen habe ich eine Software ausprobiert, die schon lange auf meiner Liste stand: &lt;a href=&#34;https://wekan.github.io/&#34;&gt;Wekan&lt;/a&gt;. Wekan ist eine Open Source Alternative für Trello, einer &lt;a href=&#34;https://de.wikipedia.org/wiki/Kanban-Tafel&#34;&gt;Kanban-Software&lt;/a&gt;. Mit ihr lassen sich mit der Kanban-Methode Projekte oder Abläufe managen. Manche verwenden es auch als Aufgabenmanagementsystem. Es gibt verschiedene Open Source Alternativen zu Trello – Wekan ist eine, die dem Original am nächsten kommt. Ich möchte heute zeigen, wie man Wekan installiert und einrichtet.&lt;/p&gt;
&lt;h2 id=&#34;installation&#34;&gt;Installation&lt;/h2&gt;
&lt;p&gt;Wekan kann man auf verschiedene Art und Weise installieren (manuell, Docker, snap, …). Wir werden es heute in einem LXD Container (Ubuntu 18.04) einrichten (&lt;a href=&#34;https://zefanjas.de/tag/lxd/&#34;&gt;LXD Container&lt;/a&gt; waren hier schon mehrmals Thema im Blog). Als erstes erstellen wir einen Container für Wekan:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ lxc launch ubuntu:b wekan
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Nachdem der Container erstellt und gestartet ist, loggen wir uns im Container ein:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ lxc exec wekan bash
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Wir werden Wekan als Snap installieren. In den Ubuntu LXD Container ist snapd schon installiert. Wir können also direkt Wekan installieren mit&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ snap install wekan
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Nun legen wir die Haupt-URL und den Port für Wekan fest:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ snap set wekan root-url=&amp;#34;http://wekan.example.com&amp;#34;
$ snap set wekan port=&amp;#34;80&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Optional kann man noch einstellen, das Updates automatisch installiert werden:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ snap set core refresh.schedule=02:00-04:00
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Fertig 🙂&lt;/p&gt;
&lt;h2 id=&#34;einrichtung&#34;&gt;Einrichtung&lt;/h2&gt;
&lt;p&gt;Nun können wir unter der IP unseres LXD Containers Wekan aufrufen. Wenn man LXD nicht lokal, sondern auf einem Server betreibt, kann es unter Umständen hilfreich sein eine &lt;a href=&#34;https://zefanjas.de/netzwerkbruecke-fuer-lxd-container-einrichten/&#34;&gt;Netzwerkbrücke für den Container&lt;/a&gt; einzurichten. Alternativ kann man auch Nginx als Reverse Proxy verwenden. Hinweise zur Einrichtung findet man im &lt;a href=&#34;https://github.com/wekan/wekan/wiki/Nginx-Webserver-Config&#34;&gt;Wiki von Wekan&lt;/a&gt;.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; class=&#34;aligncenter wp-image-2956 size-full&#34; src=&#34;https://zefanjas.de/wp-content/uploads/2020/04/Auswahl_394-1.png&#34; alt=&#34;Wekan Login&#34; width=&#34;356&#34; height=&#34;411&#34; srcset=&#34;https://zefanjas.de/wp-content/uploads/2020/04/Auswahl_394-1.png 356w, https://zefanjas.de/wp-content/uploads/2020/04/Auswahl_394-1-260x300.png 260w, https://zefanjas.de/wp-content/uploads/2020/04/Auswahl_394-1-234x270.png 234w&#34; sizes=&#34;(max-width: 356px) 100vw, 356px&#34; /&gt; 
&lt;p&gt;&lt;strong&gt;Hinweis:&lt;/strong&gt; Der erste Benutzer, den wir einrichten, ist Administrator für Wekan.&lt;/p&gt;
&lt;p&gt;Wir klicken als auf Registrieren und legen einen neuen Benutzer an.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; class=&#34;aligncenter size-full wp-image-2955&#34; src=&#34;https://zefanjas.de/wp-content/uploads/2020/04/Auswahl_395.png&#34; alt=&#34;Wekan Registrieren&#34; width=&#34;344&#34; height=&#34;467&#34; srcset=&#34;https://zefanjas.de/wp-content/uploads/2020/04/Auswahl_395.png 344w, https://zefanjas.de/wp-content/uploads/2020/04/Auswahl_395-221x300.png 221w, https://zefanjas.de/wp-content/uploads/2020/04/Auswahl_395-199x270.png 199w&#34; sizes=&#34;(max-width: 344px) 100vw, 344px&#34; /&gt; 
&lt;p&gt;Wenn wir nun auf &lt;strong&gt;Registrieren&lt;/strong&gt; klicken, erscheint eine Fehlermeldung („Internal Server Error“). Das liegt daran, weil wir noch keinen EMail-Server eingerichtet haben.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; class=&#34;aligncenter size-full wp-image-2954&#34; src=&#34;https://zefanjas.de/wp-content/uploads/2020/04/Auswahl_396.png&#34; alt=&#34;Wekan Error&#34; width=&#34;348&#34; height=&#34;108&#34; srcset=&#34;https://zefanjas.de/wp-content/uploads/2020/04/Auswahl_396.png 348w, https://zefanjas.de/wp-content/uploads/2020/04/Auswahl_396-300x93.png 300w&#34; sizes=&#34;(max-width: 348px) 100vw, 348px&#34; /&gt; 
&lt;p&gt;Wekan funktioniert aber auch ohne einen EMail-Server, deswegen öffnen wir einfach wieder unsere Hauptseite (wekan.example.com bzw. die IP des Containers) und können uns mit den eben angelegten Benutzer anmelden.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; class=&#34;aligncenter wp-image-2957 size-full&#34; src=&#34;https://zefanjas.de/wp-content/uploads/2020/04/Auswahl_398.png&#34; alt=&#34;wekan open source&#34; width=&#34;922&#34; height=&#34;251&#34; srcset=&#34;https://zefanjas.de/wp-content/uploads/2020/04/Auswahl_398.png 922w, https://zefanjas.de/wp-content/uploads/2020/04/Auswahl_398-300x82.png 300w, https://zefanjas.de/wp-content/uploads/2020/04/Auswahl_398-768x209.png 768w, https://zefanjas.de/wp-content/uploads/2020/04/Auswahl_398-604x164.png 604w&#34; sizes=&#34;(max-width: 922px) 100vw, 922px&#34; /&gt; 
&lt;p&gt;Nun können wir neue Boards in diesen neue Listen und Karten erstellen. Die Funktionsweise ist dem von Trello sehr ähnlich.&lt;/p&gt;
&lt;h2 id=&#34;fazit&#34;&gt;Fazit&lt;/h2&gt;
&lt;p&gt;Wer nach einer Open Source Alternative für Trello sucht, die man selber hosten kann, findet in Wekan einen guten Ersatz. Ich habe bisher oft Trello verwendet. Mit Wekan habe ich endlich einen Ersatz gefunden, der so ziemlich ein 1:1 Ersatz für Trello ist.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Netzwerkbrücke für LXD Container einrichten</title>
      <link>https://zefanjas.de/netzwerkbruecke-fuer-lxd-container-einrichten/</link>
      <pubDate>Thu, 07 Feb 2019 14:05:12 +0000</pubDate>
      
      <guid>https://zefanjas.de/netzwerkbruecke-fuer-lxd-container-einrichten/</guid>
      <description>&lt;p&gt;Die meisten unserer Webanwendungen laufen in LXD Containern. Nicht ohne Grund ist LXD für mich eines der &lt;a href=&#34;https://zefanjas.de/5-gruende-warum-wir-lxd-verwenden/&#34;&gt;wichtigsten Features&lt;/a&gt; von Ubuntu Server. Es gibt viele Wege um von außen auf eine Webanwendung in einem LXD Container zuzugreifen. So kann man z.B. einen Reverse Proxy nehmen und darüber die Zugriff auf die Container regeln (&lt;a href=&#34;https://zefanjas.de/wie-man-mehrere-webseiten-mit-nginx-und-haproxy-mit-lxd-hosten-kann/&#34;&gt;hier hatte ich schon mal davon berichtet&lt;/a&gt;). Eine andere Möglichkeit ist die Einrichtung einer Netzwerkbrücke, sodass sich die Container im gleichen Netz wie der Containerhost (Ubuntu Server) befinden. In diesem Artikel möchte ich kurz beschreiben, wie man eine Netzwerkbrücke für LXD Container einrichtet.&lt;/p&gt;
&lt;h2 id=&#34;netzwerkbrücke-für-lxd-container&#34;&gt;Netzwerkbrücke für LXD Container&lt;/h2&gt;
&lt;p&gt;Um eine Netzwerkbrücke unter Ubuntu einzurichten, muss man die &lt;em&gt;bridge-utils&lt;/em&gt; installieren:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ apt install bridge-utils
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Danach kann man die Netzwerkbrücke einrichten.&lt;/p&gt;
&lt;h3 id=&#34;bis-ubuntu-1604&#34;&gt;bis Ubuntu 16.04&lt;/h3&gt;
&lt;p&gt;Bis Ubuntu 16.04 nutzt Ubuntu &lt;em&gt;ifupdown&lt;/em&gt; um Einstellungen für die Netzwerkverbindungen festzulegen. Die Konfiguration nimmt man in den Dateien unter &lt;strong&gt;/etc/network/&lt;/strong&gt; vor. Eine einfache Netzwerkbrücke, um die Container in das Host-Netzwerk zu bekommen, könnte so aussehen:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The main Bridge
auto br0
iface br0 inet dhcp
    bridge-ifaces enp4s0
    bridge-ports enp4s0
    up ip link set enp4s0 up

# The primary network interface
iface enp4s0 inet manual
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Hier bekommt die Brücke ihre Adresse vom DHCP-Server mitgeteilt. Die reale Netzwerkkarte &lt;em&gt;enp4s0&lt;/em&gt; wird in den manuellen Modus gesetzt und der Brücke zugewiesen.&lt;/p&gt;
&lt;h3 id=&#34;ab-ubuntu-1804&#34;&gt;ab Ubuntu 18.04&lt;/h3&gt;
&lt;p&gt;Ab Ubuntu 18.04 wird &lt;a href=&#34;https://netplan.io/&#34;&gt;Netplan&lt;/a&gt; für die Konfiguration der Netzwerkverbindungen verwendet. Die Konfigurationsdateien befinden sich unter &lt;strong&gt;/etc/netplan/&lt;/strong&gt;. Eine Definition für die Brücke könnte folgendermaßen aussehen:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ cat /etc/netplan/50-cloud-init.yaml
# This file is generated from information provided by
# the datasource.  Changes to it will not persist across an instance.
# To disable cloud-init&amp;#39;s network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        enp3s0:
            dhcp4: no
    version: 2
    bridges:
        br0:
            dhcp4: no
            addresses:
            - 10.10.10.5/24
            gateway4: 10.10.10.254
            nameservers:
                addresses:
                - 10.10.10.254
            interfaces:
            - enp3s0
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Im oberen Teil konfiguriert man die reale Netzwerkkarte (&lt;em&gt;enp3s0&lt;/em&gt;) und weißt ihr keine Adresse zu. Danach folgt die Definition der Netzwerkbrücke. Sie wird wie eine statische Netzwerkverbindung eingerichtet und enthält zusätzlich den Punkt &lt;em&gt;interfaces&lt;/em&gt;. Dort legt man fest, welche reale Netzwerkkarte „überbrückt“ werden soll. &lt;a href=&#34;https://netplan.io/examples#configuring-network-bridges&#34;&gt;Weitere (komplexere) Beispiele&lt;/a&gt; zu Netzwerkbrücken gibt es auf der offiziellen Website.&lt;/p&gt;
&lt;p&gt;Nun werden mit dem folgenden Befehl die Änderungen an den Netzwerkeinstellungen angewendet:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ netplan apply  --debug
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;netzwerkbrücke-zuweisen&#34;&gt;Netzwerkbrücke zuweisen&lt;/h2&gt;
&lt;p&gt;Hat man die Netzwerkbrücke fertig eingerichtet und bekommt sie auch die richtige IP-Adresse, muss man dem LXD Container noch mitteilen, dass er seine IP-Adresse über die Netzwerkbrücke beziehen soll. Das erledigt man mit folgendem Befehl:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ lxc config device add containername eth0 nic nictype=bridged parent=br0 name=eth0
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Mit &lt;em&gt;name=eth0&lt;/em&gt; legt man fest, unter welchen Namen man die Netzwerkkarte im Container findet. Nun kann man im Container &lt;em&gt;eth0&lt;/em&gt; nach Belieben konfigurieren. Ab sofort sollte der Container eine IP-Adresse aus dem Host-Netzwerk bekommen.&lt;/p&gt;
&lt;h2 id=&#34;fazit&#34;&gt;Fazit&lt;/h2&gt;
&lt;p&gt;Eine einfache Netzwerkbrücke lässt sich schnell einrichten und man kann sie ohne Probleme einem Container zuweisen. Andere Benutzer im Netzwerk können so ohne die Einrichtungen eines Reverse-Proxys auf eine Webanwendung zugreifen. Auch komplexere Szenarien sind denkbar (VLANs, mehrere Brücken, um die Container in verschiedene Netz zu bekommen etc.), doch das würde den Rahmen dieses kurzen Artikels sprengen.&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>
