flexslider dce typo3

How to provide code for the FlexSlider 2 with the TYPO3-DCE-Extension and Viewhelpers

The jQuery FlexSlider demands some very special arrangements for HTML code, so it can transform it into a slide show.  If you want to create your own TYPO3 user interface for it, with the help of the DCE extension you have to change the viewhelpers Armin Vieweg, the developer of the DCE extension is providing. Here are some code snippets:

FlexSlider is asking for the following arrangement for a slide show with thumbnails and caption:

<!-- Place somewhere in the <body> of your page -->
<div class="flexslider">
  <ul class="slides">
    <li data-thumb="slide1-thumb.jpg">
      <img src="slide1.jpg" />
      <p class="flex-caption">Adventurer Cheesecake Brownie</p>
    </li>
    <li data-thumb="slide2-thumb.jpg">
      <img src="slide2.jpg" />
      <p class="flex-caption">Adventurer Cheesecake Brownie</p>
    </li>
    <li data-thumb="slide3-thumb.jpg">
      <img src="slide3.jpg" />
      <p class="flex-caption">Adventurer Cheesecake Brownie</p>
    </li>
    <li data-thumb="slide4-thumb.jpg">
      <img src="slide4.jpg" />
      <p class="flex-caption">Adventurer Cheesecake Brownie</p>
    </li>
  </ul>
</div>


TYPO3 and the DCE extension are providing the following viewhelper inside the DCE template for a pile of images. At which „pic“ is the name of the variable that was assigned for the input field. The alt tag is filled through TYPO3 from the picture files alt-tag assignment in the backend file abstract layer (fal):

<f:for each="{dce:fal(field:'pic', contentObject:contentObject)}" as="fileReference">
<f:image src="{fileReference.uid}" alt="" treatIdAsReference="1" />
</f:for>

„alt“ tag, „description“ and „title“ can also be overwritten directly in the DCE:

DCE images at the TYPO3 backend

The solution is to either use the „title“ tag or the „description“ tag to provide for the images captions and simply double the uri of the images (with the help of the uri viewhelper) for the FlexSlider „data-thumb“ inside the opening <li>. Here is my code for the DCE template file:

<div class="flexslider">
<ul class="slides">
<f:for each="{dce:fal(field:'sliderImg', contentObject:contentObject)}" as="fileReference">	
<li data-thumb="<f:uri.image image="{fileReference}" />">
 <f:image  src="{fileReference.uid}" treatIdAsReference = "1" />
        <div class="flex-caption">
          <f:format.raw>{fileReference.title}</f:format.raw>
        </div>
</li>
</f:for>
</ul>
</div>

I also changed the „flex-caption“ from <p>  into a <div> so I can use headline tags (<h2>, <h3> …) in it, since it is surrouned by a format-raw so the html tags will by parsed and not shown as such.

„fileReference“ is the assigned object name of the image object, so „fileReference.title“ gives you the title of the image and „fileReference.description“ the description and „fileReference.alternative“ the content of the „alt“ field.

Autor: Thomas Hezel

vw

DSGVO und die Automobilindustrie

Als Werbeagentur haben wir uns in den letzten Wochen intensiv mit der Datenschutz Grundverordnung – DSGVO befasst. In diesem Zusammenhang stellte sich für mich die Frage, welche Konsequenzen hat dies auf Fahrzeuge, die permanent Daten über unser Fahrverhalten sammeln. Mein VW aus dem Jahre 2017 blendet ständig Warnsymbole ein und kontrolliert meinen Fahrstil. Angeblich werden auch Daten über das Fahrverhalten an sich gesammelt, also wie wird gebremst und beschleunigt etc. Über einen Sensor an der Front wird erfasst wie frühzeitig ich bei Gefahren reagiere und vieles mehr. Was mein Fahrzeug genau macht, hat mich schon immer interessiert und auch die Frage, wer wann zu diesen Daten Zugang hat und wo diese Daten am Ende landen.

Der Müdigkeitssensor zeigt bei mir immer dann eine angebliche Müdigkeit an, wenn ich entspannt auf der Autobahn fahre und nicht mehr nervös beschleunige oder bremse. Eigentlich der beste und sicherste Zustand für einen Fahrer. Wenn dies aber als Müdigkeit gewertet wird, hat man bei einem Unfall unter Umständen ein Problem, da ein Gutachter behaupten könnte man sei übermüdet gefahren und das Auto hätte dies erkannt.

Solange diese Techniken nicht von einer Norm abgedeckt sind, sind sie sicherlich nicht gerichtsverwertbar. Dennoch hinterlassen sie einen Eindruck und ein Unternehmen könnte – wie auch schon Versicherungen – auf die Idee kommen meine Leasing-Verträge nach meinem bisherigen Fahrverhalten zu gestalten.

Es besteht also vor allem ein Aufklärungsbedarf von Seiten der Hersteller. Und für die Zukunft stellt sich die Frage, wie gehen wir mit den Daten um, da sie essentiell sind für das sukzessive autonome Fahren.

Um ein wenig Licht ins Dunkel zu bringen habe ich folgenden Brief an VW in Wolfsburg geschrieben:

 

Sehr geehrte Damen und Herren,

ich habe bei Ihnen folgendes Fahrzeug für 3 Jahre geleast:

Angebotsnummer:
Vertragsnummer:
Händler:
Modellschlüssel:

Entsprechend der Datenschutzgrundverordnung habe ich das Recht auf Auskunft, welche Daten genau über mich vom Fahrzeug gespeichert werden, zudem wo und wie diese Daten verarbeitet werden. Wer hat wann auf die Daten Zugriff?
Zudem bitte ich Sie mir alle über mich vorhandenen Daten zu übermitteln.
Ich beantrage hiermit ebenfalls, dass Sie mir mitteilen wie ich die Löschung aller Daten vornehmen und das weitere Sammeln unterbinden kann.

Ein wichtiger Aspekt der DSGVO ist die Zweckgebundenheit und die Datensparsamkeit.

Für die Erfüllung des Leasingvertrages sehe ich nur die Speicherung der gefahrenen Kilometer als integraler Bestandteil.
Alle anderen Daten, die das Fahrzeug erhebt, sind nicht relevant für die Durchführung des Vertrages. Ich bitte Sie das Sammeln dieser zusätzlichen Daten komplett einzustellen und alle vorhanden Daten, nach der Übermittlung an mich, auf allen Medien außerhalb und innerhalb des Fahrzeuges zu löschen. Ebenfalls bitte ich Sie das Sammeln aller Daten, außer des Kilometerstandes, einzustellen.

Was die Verkehrssicherheit betrifft können Daten in der jeweiligen Situation erhoben und verarbeitet werden, sollen aber innerhalb einer technisch notwendigen Zeitspanne (ein paar Sekunden, bis spätestens zum Abstellen des Fahrzeuges) wieder gelöscht werden.

Einer Übermittlung, der über mich erhobenen Daten, an Dritte widerspreche ich hiermit explizit.

Ich bitte um umgehende Mitteilung, Zusendung meiner Daten und einer Angabe, wann das Datensammeln in meinem Fahrzeug von Ihnen abgestellt werden kann und wer dafür zuständig ist.

Ich bitte ebenfalls mir mitzuteilen welche Daten Sie über mich außerhalb des Fahrzeuges erhoben haben und wer wann und wie Einsicht hat und auch diese an mich zu übermitteln.

Zusammenfassend bitte ich um folgendes:

a. Auskunft (wo werden wann, welche Daten gesammelt, wer hat Einsicht)
b. Übermittlung meiner Daten
c. Einstellen des Datensammelns
d. Löschung aller bereits gesammelten Daten

Mit freundlichen Grüßen

Thomas Hezel

 

Ich bin nun gespannt wie sich der Konzern oder der Händler zu meiner Anfrage äußert.

 

Ein zweiter Brief an den VW-Händler in Berlin

Dieser wurde am 8.6.2018 beantwortet mit dem Ausdruck einiger Daten (Adresse, Telefonnummer, Email etc.), aber ohne die Daten, die im Fahrzeug gespeichert werden. Dies ist auch verständlich, da ich noch bei keiner Inspektion war, es also keine dirkete Gelegenheit gab die Daten auszulesen.
Es wurde mir bestätigt, dass meine Kontaktdaten aus der Werbedatei gelöscht wurden.
Bezüglich der durch das Fahrzeug gesammelten Daten hat man mich an den Konzern  verwiesen. Bezüglich der Daten in Zusammenhang mit dem Leasing-Vertrag an Volkswagen Finacial Services.

 

Update 28.5.2018 – VW-reagiert mit einer Email (unverschlüsselt) und einem nicht funktionierenden Link

Am 28.05.2018 um 15:38 schrieb VWGS R: WOB, KKM MARKETINGSPERRE <info-datenschutz@volkswagen.de>:
Sehr geehrter Herr Hezel,
vielen Dank für Ihre Anfrage vom 24.05.2018. Damit wir Ihre Anfrage bearbeiten können, benötigen wir zumindest Ihren Vor-und Nachnamen, Ihre Adresse sowie Ihr Geburtsdatum. Bitte ergänzen Sie ebenfalls den Halterschaftszeitraum für Ihr Leasingfahrzeug.
Auf der Internetseite www.datenschutz.volkswagen.de/auskunftsanfrage können Sie uns Ihre Angaben auf elektronischem Weg zusenden.
Freundliche Grüße
[Vorname / Nachnahme des Ansprechpartners — gelöscht]
Volkswagen Group Services GmbH I Standort Wolfsburg I Kaufmännische Dienstleistungen
Volkswagen Kundenbetreuung – Team Datenschutz
Braunschweiger Str. 101
38444 Wolfsburg
05361 – 9 15 XXX
Sitz der Gesellschaft: Wolfsburg
Amtsgericht Braunschweig: HRB 100516
Geschäftsführung: Sebastian Krapoth (Sprecher), Jürgen Klöpffer, Hartmut Rickel
Ein Unternehmen im Volkswagen Konzern | A Volkswagen Group Company

Meine Antwort

Sehr geehrte Damen und Herren,

leider funktioniert der von Ihnen angebotene Link nicht!
Sie sind ebenfalls verpflichtet eine sichere Übertragung (Verschlüsselung) für Emails anzubieten.
Ich habe von Ihnen keinen öffentlichen PGP-Schlüssel.

Mit freundlichen Grüßen
Thomas Hezel

Update 8.6.2018 – VW-reagiert mit einer Email

Sehr geehrter Herr Hezel,

entschuldigen Sie die verzögerte Beantwortung Ihrer Anfrage. Vielen Dank für Ihren Hinweis. Bitte beachten Sie jedoch, dass eine Verschlüsselung in diesem Fall nicht notwendig ist, da keine personenbezogenen Daten übermittelt werden. Wir bedauern, dass Sie die Seite  über den angegebene Link nicht erreichen konnten.  Versuchen Sie es erneut über folgenden Link.

https://www.datenschutz.volkswagen.de/auskunftsanfrage

Sofern es  Ihnen dennoch nicht möglich ist, den angegebenen Link zu öffnen, sind wir Ihnen bei der Dateneingabe gerne behilflich. Sie erreichen uns werktags in der Zeit von 08:00 – 17:00 Uhr unter  05361 – 9 15 0 10. Im Rahmen des zwischen der Volkswagen AG und der Volkswagen Group Services GmbH bestehenden Vertragsverhältnisses wende ich mich mit obenstehendem Anliegen an Sie.

Freundliche Grüße

[Vorname / Nachnahme des Ansprechpartners — gelöscht]
Volkswagen Group Services GmbH I Standort Wolfsburg I Kaufmännische Dienstleistungen
Volkswagen Kundenbetreuung – Team Datenschutz

Danach habe ich online das Formular ausgefüllt, das jetzt funktioniert hat.

Update 27.6.2018 – VW-reagiert mit einer Email

Sehr geehrter Herr Hezel,

in Ihrer Anfrage mit der Vorgangsnummer xxxxx-xxxx-xxxx-xx vom 26. Juni 2018 haben Sie uns Ihr Anliegen auf Auskunft Ihrer personenbezogenen Daten mitgeteilt.

Wir haben die von Ihnen angegebenen Stammdaten nach eingängiger Prüfung nicht bzw. nicht vollständig in unseren Stammdatensystemen identifizieren können. Zu Ihrer eigenen Sicherheit sowie zum Schutze der Rechte Dritter sind daher weitere Identifizierungsmaßnahmen nötig.

Die Identifizierung Betroffener führen wir mithilfe des PostIdent-Services der Deutschen Post AG durch. Im Rahmen der Identifizierung mittels PostIdent haben Sie die Möglichkeit sich entweder in einer Filiale der Deutschen Post oder webbasiert per Videochat zu identifizieren.

  • Um die Identifizierung zu starten, klicken Sie bitte auf folgenden Link oder kopieren Sie den Link in Ihren Browser: [Link von mir gelöscht]

Für eine webbasierte Identifikation per Videochat benötigen Sie ein internetfähiges Endgerät mit einer angeschlossenen Kamera sowie ein gültiges Ausweisdokument. Bitte beachten Sie das beiliegende Informationsblatt zum Ablauf des PostIdent-Verfahrens.

  • Nach dem Öffnen des Links können Sie sich im Online-Portal der Post auch einen Coupon ausdrucken und diesen zusammen mit einem gültigen Ausweisdokument in eine Filiale der Deutschen Post bringen, sofern Sie eine stationäre Identifizierung bevorzugen.

Wir bitten um Ihr Verständnis, dass wir Ihre Anfrage nicht weiter bearbeiten können, bis Ihre Identität eindeutig festgestellt ist.

Im Rahmen des zwischen der Volkswagen AG und der Volkswagen Group Services GmbH bestehenden Vertragsverhältnisses wende ich mich mit obenstehendem Anliegen an Sie.

Freundliche Grüße

[Vorname / Nachnahme des Ansprechpartners — gelöscht]
Volkswagen Group Services GmbH I Standort Wolfsburg I Kaufmännische Dienstleistungen
Volkswagen Kundenbetreuung – Team Datenschutz

Update 24.7.2018 – PostIdent-Service ist abgeschickt

Ich habe mich per PostIdent identifiziert und warte auf eine Antwort

 

… in Kürze hier die Fortsetzung …

 

 

Autor: Thomas Hezel

from TemplaVoila! to Fluidtemplates

TYPO3 – easy change from TemplaVoila! to Fluidtemplates

A small step for a coder – a big step for the upgrading possibilities of your website!

TemplaVoila! is outdated long time ago, but still around in some TYPO3 installations. A shift to Fluidtemplates, in combination with Backend-Layouts, seems to be a big hassle, but is indeed not so complicated since the principles are pretty much the same. In both cases we map a content form a backend column into a certain area of a predefined html-template.

How to do it

a. first step

First we must find out which elements in our main template are mapped with TemplaVoila!, therefor we need the extension (including Static-Info-Tables) still in action, before we disable it. Important is, whether it is an „inner“ or an „outer“ mapping. With „inner“ we just replace the inside of the html element with a viewhelper and a variable. If it is an „outer“ mapping, we have to replace the the whole html-element as such with the viewhelper. Example of an „inner“ mapping:
<div id="myMapID"><f:format.raw>{variableLaterInTypoScript}</f:format.raw></div>

 

templa voila to fuid templates
the path to the mapping – click on (in may case) „ik_TemplaVoila“

 

templa voila to fluid
„Modify DS /TO“
mouse over element mapping
the mapping – mouse over the html-elements shows their ID-number

 

templa voila to fluid mouse over
mouse over shows the ID of the element („#headline“)

Next you write down a list of the names of the columns („pageHeaderHeadline, banner …“) and the corresponding element names and Ids. The columns names you then use to create a backend layout with the same name, numbering from „0“ left to the accordant last number on the right. Check your old columns, because not all of the mapped IDs are coming from a column in the backend, some are replaced by „lib“ or „temp“ TypoScript variables. So just create the same column structure as it was with TemplaVoila! After assigning the backend layout to the root page, the first step is done.

 

b. second step – changes on the main page template

As said before, some of the „markers“ (viewhelpers) are getting their information from a TypoScript variable, like the Menu e.g.

main template fluid
main template fluid

The others are coming from the backend columns.

Now you take your list and replace the html elements on your list, with an viewhelper („<f:format.raw>{yourVariable}</f:format.raw>“). If it is a „inner mapping“ put the viewhelper inside the element.

We also have to delete everything above and including the html body tag. Don’t forget the closing tags at the end!

You have to do these steps very careful, because getting into a wrong element will mess up the whole thing. Work on a copy of the template file!.

 

c. third step – TypoScript in the root of the website

10 = FLUIDTEMPLATE
10 {
     template = FILE
     file = fileadmin/zazu/default/templates/zazu_template.html
     partialRootPath = fileadmin/zazu/default/templates/Partials
     layoutRootPath = fileadmin/zazu/default/templates/Layouts
        variables {
           h1TopSlogan < styles.content.get
           h1TopSlogan.select.where = colPos=0
           rubrikH < styles.content.get
           rubrikH.select.where = colPos=1
           unterNav < lib.field_unternav
           hauptNav < lib.field_hauptnav
           footerNav < lib.field_footernav
        }
  }

The TemplaVoila! TypoScript can be deleted:

 

10 = USER
10.userFunc = tx_templavoila_pi1>main_page

 

d. fourth step – move the content

This is easy to do if you work on a copy (or „Staging“ as it called by the provider Mittwald). After you deactivate the „static-info-tables“ and the „templaVoila!“ Extension, all content will be in the „main column“ now you have to move the content elements into their old order. It is no problem if you can switch between an old implementation and the new one to check what was where. Otherwise you have to find the order by yourself or memory. Anyway with such a step you should always work on a copy!

 

There are probably some extensions doing similar work in a automated process. But who wants to deal with a complicated extension for a small website. In case it is a bigger site of course one should consider to go into something more automated.

Comments and additions are welcome!

 

Autor: Thomas Hezel

DSGVO opt-in for Cookies

DSGVO = Datenschutzgrundverordnung or GDPR = General Data Protection Regulation – TYPO3 and opt-in in Cookies

According to the German hoster Mittwald there is only one TYPO3 extensions that provides a real opt-in for cookies.
Since it looks like an opt-in for cookies will be the final demand by 25th of May 2018, I checked the TYPO3 extension „cookies“ and looked how it behaved under different conditions. You can get the extension here: https://extensions.typo3.org/extension/cookies/

First of all you have to upload it into TYPO3, then add the static template and after that make your settings at the constants panel.

Don’t forget to put your starting page ID in the field „JavaScript Fallback page“ of the constants in the root template. Otherwise you get problems with cHash and the submit is not going through, so you get allways a popup, asking wether you want to sent the formular again. If you have cHash-Problems you can also try to put „$GLOBALS[‚TYPO3_CONF_VARS‘][‚FE‘][‚pageNotFoundOnCHashError‘]“ in the Install Tool Settings on „false“.

After opening your domain in the browser for the first time, there is a dialog window opening at the top of your window (cookie hint).
But checking the cookies in the browser revealed, that Google and others had already set their cookies. So, the setting of cookies via a third party JavaScript is not stopped by the extension. Only the TYPO3-cookie is not set yet.

So this is not a real opt-in!

You can, as described in the extension manual, then use a TYPO3 conditions to unload for example your Google Analytics tracking code. But the cookie that was set at the first load of the page will remain. Of course by setting the browser to block third party cookies and making browser settings to stop tracking will help. But this is then not a real opt-in for a single webpage.

My solution for a real cookie opt-in

The extension sets 2 additional cookies

a. tx_cookies_hidden
b. tx_cookies_disabled

a. This is used to track whether you have already made a choice about cookies, so the dialog will not appear again on the next subpage.
b. If you have chosen to deactivate cookies, this cookie is set to carry  along your choice, while you surf through the website.

TypoScript at the root of the website

page.5 < tt_content.list.20.cookies_main

[globalVar = _COOKIE|tx_cookies_hidden = 1]
page.headerData.1 =TEXT page.headerData.1.value (
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-xxxxxxxx-x"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-xxxxxxxxx-x', {'anonymize_ip': true });
</script>
)
[global]
[globalVar = _COOKIE|tx_cookies_disabled = 1] && [globalVar = _COOKIE|tx_cookies_hidden = 1]
page.headerData.1 >
[global]

Explanation

If the cookie „tx_cookies_hidden“ exists (value „1“), then write the Google tracking code in the header. Meaning the user has clicked on „I agree“, so the cookie „tx_cookies_hidden“ was created.

If the cookie „tx_cookies_hidden“ exists and the cookie „tx_cookies_disabled“ exists, meaning the user has opted for „disable cookies“ (this could happen on the first possibility or later on), then erase what is stored in the page.headerData.1 object.

Now we have one more problem

Clicking on the „I agree“ button doesn’t provoke a reload of the page. As a result no Google tracking code is written in the header since the information only comes to action after a reload. The button „activate cookies“ or „deactivate cookies“ results in a page reload, so we only have the problem with the „I agree“ button. But if the user goes for „I agree“ no tracking code is written and no Google cookie is set before the next reload.

This can be solved with jQuery code for all pages:

//cookies
$('#tx_cookies_hide input').click(
function() {
setTimeout(
function() {
location.reload();
},
500);
});

The delay is needed, so the browser has time to write first the cookies from the extension and to set the „globalVar“ before the reload is activated.

Example where you can see it in action: https://www.implantologie-hopf.de

Addition:

To make the jQuery reload work in the iPhone and iPad world you need to put the cursor to „pointer“ for the „I agree“ button. Seems to be some „Apple-mind-bug“:

CSS:


#tx_cookies_hide input {
cursor: pointer;
}

 

UPDATE:
May 16th 2018 – Version 5.0 of the extension is available and has some changes!

a. name change from cookie „tx_cookies_hide“ to „tx_cookies_accepted“ please mind the „ed“ of „accepted“

b. id name change for the „I agree“ button to #tx_cookies_accept“, please be carefull here wie have no „ed“ but just an „…_accept“!

c. css for iPhone cursor: pointer changes id-selector

d. some action response text is added and can be set on „display: none“, or used

 

a. TS  changes to:


page.5 < tt_content.list.20.cookies_main

[globalVar = _COOKIE|tx_cookies_accepted = 1]
page.headerData.1 =TEXT page.headerData.1.value (
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-xxxxxxxx-x"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-xxxxxxxxx-x', {'anonymize_ip': true });
</script>
)
[global]
[globalVar = _COOKIE|tx_cookies_disabled = 1]
page.headerData.1 >
[global]

 

b. jQuery selector for the reload with the „I agree“ button changes to:

//cookies
$('#tx_cookies_accept input').click(
function() {
setTimeout(
function() {
location.reload();
},
500);
});

 

c. CSS for the iWorld jQuery window reload bug:


#tx_cookies_accept input {
cursor: pointer;
}

d. CSS:

#tx_cookies .typo3-messages {
  display: none;
  }

 

Update 20th May 2018 – Extension Cookies Verson 5.0.1 is available

The author of the extension (Sven Burkert) has reacted, sent me an email and made some changes:

If the domain is „www.abc.de“ the cookies from Google are having the domain name „.abc.de“. Before the PHP-script didn’t delete in this case the Google cookies. With version 5.0.1  this cookies will also be deleted.

Sven Burkert also noted, that if you are not loading the JavaScript of the extension, clicking on the „I agree“ button will not trigger a reload of the web-page. In some cases – if you are not looking for an opt-in – it is desirable to avoid a reload.

 

For all other cases my little JavaScript will do the reload.

 

 

 

Self-Made fast Linux Fileserver – Part 2 Software

0. Table of Contents – Part 2 Softwae

  1. Basic Thoughts for the Server Software
  2. Start with the AMI-BIOS
  3. The BIOS of the Adaptec-RAID-Controllers
  4. Install Ubuntu Server
  5. Configure the RAID-Controller and the RAID
  6. Samba Server Data Exchange with the „smb-protocol“
  7. Security Measures for Samba and SSH
  8. Realise a sFTP-Server with the openSSH Server /partly
  9. Change the Nework from DHCP to fixed IP addresses, LAN trunking
  10. Send Status Mails
  11. Unsolved Problems
  12. Final Thoughts

I. Basic Thoughts for the Server Software

The fileserver should be fast, simple and secure.

Therefor products like windows server are out of question and in the end there is only Linux what you can use. With Linux you have the choice between different distributions (Wikipedia Linux Distributionen) and within the distributions there are different „flavours“ to meet the demands or the „taste“ of specific user groups.
Linux basicly labeles the core of the operating system and the distributions add the rest of the software that builds on top of the core. The German „Linux-Bible“ was written by Michael Kofler („The Kofler“) and is easy to understand: Linux – Das umfassende Handbuch

Remark: As a politically mature citizen we don’t order from Amazon, rather from a local book shop or from a smaller online dealer.

The best Linux distribution for somebody who is not dealing on an every day bases with Linux ist the Ubuntu distribution from the Southafrican company Canonical. It is very well documented and has many online support groups. There is a also a very simple update mechanism and a German community to help you, if you run into problems: https://ubuntuusers.de/
The backdraft about Ubuntu is, that nobody knows exactly what is going on behind closed doors at Canonical. As it is open-source there is of course the posibility to check the whole code – what some Linux heros do – but Canonical didn’t make themselfs friends, when they started to submit data to Amazon on the desktop version of Ubuntu. If you want to get rid of the Amazon search you will find a How-To here: (How to get rid of the Amazon search in Ubuntu / de.)

Bei Open-Source-Software muss in der Regel alles was dazukommt ebenfalls wieder Open-Source sein. Dies ist manchmal sehr schwierig, wenn man z. B. einen Druckertreiber eines speziellen Druckers verwenden will, der z. B. von HP kommt. Verwendet man das „main-Package“ kommt man aber in der Regel ohne Erweiterungen klar, es sei denn, man hat ganz spezielle Grafikkarten oder ähnliches installiert. Beim Server ist es sowieso einfacher da man sich um Grafik, Drucker und Monitore keine Sorgen machen muss. Es ist zwar manchmal nicht schlecht mit Tastatur, Maus und Monitor direkt am Server zu arbeiten, aber dafür reichen die billigsten Standardgeräte aus, da man sie sowieso nur ganz selten braucht.

Es gibt bei Linux zwei wichtige Hauptfamilien, die jeweils auch eigene Software-Pakete auf eigenen Plattformen anbieten: einmal die Debian-Familie, zu der auch Ubuntu gehört (Debian-GNU/Linux-Derivat) mit dem DEB Packetmanager und die Fedora-Red Hat-SUSE Familie mit dem RPM Package Manager. Das Installieren von Software funktioniert jeweils mit etwas anderen Befehlen: „dnf“, „yum“, „zypper“ bei RPM und „apt-get“ bei Debian/Ubuntu.

Da meine Lebenszeit beschränkt ist und ich nicht die freie Zeit habe mich in etwas speziellere Linux-Distributionen einzuarbeiten (obwohl ich es natürlich gerne täte) habe ich mich für Ubuntu-Server entschieden.

Ubuntu Server

Es gibt Long-Term-Support LTS Versionen, die über fünf Jahre von Ubuntu eine Updategarantie bekommen. Dann gibt es neuere Versionen, die noch teileweise im Entwicklungsstadium sind. Für einen Server eignet sich eine LTS-Version, nur falls man Spam-Filter verwendet sollten diese natürlich immer am Puls der Zeit sein. Die LTS-Versionen werden mit dem Jahr und dem Monat der ersten Veröffentlichung bezeichnet. Bei mir ist dies Ubuntu 16.10 LTS mit dem Beinahmen „Yakkety Yak“.

Der Server bekommt folgende Hauptprogramme bzw. Dienste:

a. SSH-Server (verschlüsselte Fernwartung/Installation incl. secure-FTP)
b. Samba-Fileserver (Dateiaustausch)
c. Mail-Server (minimal, nur um Warnmeldungen zu senden)

Standardanforderungen an die Hardware für einen Ubuntu Server
1 GHz Prozessor
512 MB Arbeitsspeicher
1 GB Festplatte

Was hat unser Server an technischer Ausstattung
(siehe Hardware Teil)
Supermicro Mainboard mit 1,9 GHz, 6 Kernen und 12 Threads
integrierter Grafikprozessor
32 GB Arbeitsspeicher
120 GB SSD-Festplatte für das System
48 TB SATA-Festplatten für Daten am Raid-Controller im PCIe 3.0 Steckplatz

2 x 10 Gb/s LAN
1 x IPMI LAN
USB 3.0 und 2.0
VAG Port für einen Monitor

BIOS 128 Mb SPI Flash mit AMI BIOS
UEFI 2.4

Beim AMI-BIOS gibt es Legancy-, UEFI- und DUAL-Boot-Mode.
Für UEFI gibt es eine UEFI-Shell in der man direkt ins System mit Befehlen eingreifen kann. (Dies ist aber auch ein Sicherheitsrisiko.)

EFI (UEFI = Weiterentwicklung von Windows) ist ein neues BIOS-System, das es erlaubt mehr als 2 TByte auf einer Festplatte zu verwalten und die Festplatten mit einer modernen GUID Partition Table (GPT) zu versehen. (Bei Windows ab Version 8 im Einsatz, beim Mac schon längere Zeit.) Da Linux GPT von Hause aus schon lange kann, kann man auch mit dem BIOS arbeiten. Zeitgemäßer ist jedoch UEFI, das aber eine 64-Bit-Version von Linux braucht und bei Ubuntu ab 12.10 in vollem Umgang funktioniert.

Das Mainboard ist laut Supermicro Internetseite für den Betrieb mit Ubuntu 14.10 LTS und 15.10 geeignet und getestet. Ob es mit 16.10 LTS läuft muss man also selbst testen. Bei mir hat es funktioniert.

II. Start mit dem AMI-BIOS

Ein Windows-Keyboard (mit Funktionstasten) und einen Monitor mit VGA-Kabel braucht man um direkt am Server zu arbeiten.

Schaltet man den Server ein, so meldet sich zuerst das AMI-BIOS des Mainboards und im Laufe des Startprozesse auch das BIOS des Raid-Controllers. Beide Prozesse kann man anhalten, um im jeweiligen System Einstellungen vorzunehmen.

Anhalten AMI-BIOS: F11 oder DELETE
Anhalten Raid-Controller BIOS: CTRL+A

BIOS Supermicro
BIOS Supermicro – schon mal ein gute Zeichen …

Raid-Controller BIOS

An Anfang des AMI-BIOS-Starts startet zuerst das Raid-Controller-BIOS. Hier noch mit einer RAID-50-Einstellung, die ich getestet habe. Man kann von hier aus ein ganzes Raid-System einrichten. Weiter unten dazu mehr. Will man Einstellungen vornehmen muss man „Ctrl-a“ drücken.

BIOS-Start anhalten

Wenn das AMI-BIOS startet, hat man ein paar Sekunden Zeit, alles zu lesen und noch rechtzeitig die F11-Taste zu drücken, damit man zu den Einstellungen kommt.

AMI-BIOS

Den RAID-Controller lassen wir momentan wie er ist und widmen uns dem AMI-BIOS des Mainboards.

AMI-BIOS

AMI-BIOS Startauswahl.

Im Startmenü hat man mehrere Möglichkeiten. Wichtig ist: „Enter Setup„, man erreicht den Eintrag mit den Pfeiltasten auf der Tastatur und mit „Enter“. Die Maus funktioniert hier nicht, falls man eine solche angeschlossen hat!

BIOS Main Setup

BIOS Main Setup ist die Startseite, von hier aus gelangt man in die anderen Menüs. Man sieht hier ob die Uhrzeit über das LAN richtig ankommt (Zeitserver im Router) und ob der RAM-Speicher in vollem Umfang erkannt wurde (unten links).

Unsere erste Aufgabe ist es dem BIOS mitzuteilen, dass wir für das System eine SSD verwenden. Dies geschieht unter „Advanced“.

BIOS Advanced

BIOS „Advanced“. Unter „SATA Configuration“ verbirgt sich natürlich das Festplattenmenü.

SATA-Konfiguration BIOS

SATA-Konfiguration im BIOS. Unter „SATA Port 0 / SATA Device Type ist noch [Hard Disk Drive] eingestellt. Mit den Pfeiltasten und „Enter“ kommen wir zum Menü und können auf SSD/Solid State Drive umstellen.

BIOS SSD einstellen

Im AMI-BIOS SSD einstellen. Beim Verlassen des BIOS muss das Ganze dann gespeichert werden!

Zweite Aufgabe im BIOS: IPMI einrichten

Intelligent Platform Management Interface (IPMI) ist eine Schnittstelle, über die man den Rechner überwachen und warten kann. Es gibt Daten zur Temperatur, zum Speicher, zu den Lüftern und alles Mögliche, was sich so auf dem Mainboard tut. Dafür gibt es eine eigene IPMI-LAN-Buchse über die man einfach ein LAN-Kabel auf den Switch legt. Um den Zugang zu erleichtern sollte man, genauso wie beim normalen Server-LAN auch IPMI eine feste IP-Adresse geben. Dies macht man im Router und trägt die gewählte Adresse dann hier ein. Es funktioniert aber auch mit einer dynamischen automatischen Zuweisung über DHCP.

IPMI IP-Adresse einstellen

IPMI IP-Adresse einstellen. Dazu braucht man noch einen „user name“ und ein „password“.

IPMI Default Passwort und User-Name Einstellungen sind: ADMIN und ADMIN.
Die sollten natürlich später auf alle Fälle ausgetauscht werden. Der Passwortwechsel funktioniert über das IPMI-Menü, nicht hier im BIOS.

 

Achtung:
Wenn man innerhalb des IPMI-Tools das Passwort unter „Configuration-Users“ für eine Benutzer ändert und das Passwort zu lang ist (> 20 Byte) dann wird es zwar angenommen und auch mit „Passwort geändert“ quittiert, nur kommt man dann beim Einloggen nicht mehr in das IPMI-Menü. Die Lösung darin besteht, das Passwort mit dem Linux-Programm „ipmitool“ wieder zu ändern. Passwort Probleme bei komplizierten SMPT-Mail-Passwörtern gibt es mit IPMI auch wenn man später die Mail-Benachrichtung einrichtet (siehe weiter unten).

Mit dem „ipmitool“ kann man das Passwort für den IPMI-Zugang ändern. Alternativ kann man IPMI auch ganz abstellen, wenn der Server mal läuft.
Zum ändern des Passwortes bei IPMI und zu Sicherheitsaspekten bei IPMI gibt es gute Beiträge von Thomas Krenn.

BIOS-Setup mit einem Passwort sichern

Wer einen Tor-Exit-Node betreibt und deshalb, wenn er im Urlaub ist, immer Besuch von der NSA bekommt, der kann auch das ganze BIOS mit einem Passwort absichern.

ACHTUNG:
Der Server sollte nach einem Problem wieder alleine starten können und nicht an einer Passworteingabe hängen bleiben.

Hier kann man auch die Einstellungen zu „Secure Boot“ vornehmen: siehe weiter unten bei UEFI. Ich habe „Secure Boot“ auf „disabled“ gelassen.

BIOS absichern

BIOS mit einem Passwort absichern.

Von AMI-BIOS auf UEFI umstellen

Das „U“ bei UEFI steht für „unified“. Windows hat das EFI-System weiterentwickelt um die Sicherheitskomponente „Secure Boot“. Dies bedeutet, dass der Kernel nur startet, wenn auf dem Mainboard die entsprechenden Schlüssel hinterlegt sind. Damit kann man verhindern, dass schon beim booten Spionage- und Schadsoftware geladen wird. Leider haben die Boards in der Regel nur den Windows-Schlüssel hinterlegt. Die Distributionen müssen diesen bei Microsoft kaufen, damit sie ihn verwenden dürfen. Deshalb wird bei Linux diese Funktion meist nicht genutzt, obwohl Ubuntu den Windows-Schlüssel wohl gekauft hat und mit dem Windows-Schlüssel den Linux-Kernel starten kann.

UEFI

Hier ist noch ein „DUAL-Boot-Mode“ eingestellt, was bedeutet, dass zuerst versucht wird im „EFI-Modus“ zu booten und falls dies misslingt versucht es der Treiber im „BIOS-Modus“.

Umschalten auf UEFI

Umschalten auf UEFI, damit Ubuntu auch tatsächlich den EFI-Modus anwendet.

UEFI Boot Mode

UEFI Boot Mode

UEFI Schell

EFI-Schell für ganz spezielle Einstellungen, falls diese nötig sind. Sie erscheint auch, wenn es irgendwo hakt oder etwas nicht ganz stimmt, automatisch. Hier hat der „EFI-BOOT“ nicht funktioniert, da er noch gar nicht eingerichtet war.

Einen Überblick über die möglichen Befehle gibt es unter „help“ oder im Netz: EFI-Shell-Befehle

III. Das BIOS des Adaptec-Raid-Controllers

Zu erreichen über „CTRL+a“ beim Raid-Controller-BIOS-Start, innerhalb des normalen BIOS-Starts.

Laut Hersteller sollte das BIOS jedoch nicht zur Verwaltung des RAID-Controllers benutzt werden, sondern der maxView-Storage-Manger, eine spezielle Software für diesen Controller. Dazu weiter unten mehr, hier aber trotzdem das RAID-Controller-BIOS:

Raid-Controller BIOS

RAID-Controller-BIOS

Raid-Controller Bios Array

RAID-Controller-Bios. Hier mein schon angelegter RAID 50 Test-Array. Darunter sieht man links das „Create-Array-Menü“.

Einzelne Festplatten Controller

Einzelne Festplatten im RAID-Controller-BIOS und ihre Steckplätze. (Achtung: Die Bezeichnung der Kabelbuchsen (CNx) in der Bedienungsanleitung (welche Buchse ist wo auf dem Mainboard) ist falsch. Das kann man z. B. testen, indem man einzelne Platten abzieht oder mithilfe des maxView-Storage-Managers. Eine korrigierte Zeichnung findet man in „Teil 1– Hardware“, am Anfang.)

Über das RAID-Controller-BIOS kann man ein komplettes RAID anlegen, indem man einen Array bildet und den RAID-Level wählt. Alternativ – die einzig richtige Herangehensweise laut Hersteller – macht man dies über den maxView-Storage-Manager, einer Software, die auf dem Server installiert werden muss und die über LAN dann das komplette RAID verwaltet.

Alte Systemsoftware beim RAID-Controller

Bei mir war das Problem, dass im BIOS plötzlich Bezeichnungen waren wie „BOX00 :02“ oder „EXP0 : phy0“ oder einzelne Festplattenplätze „CNX : DEV XX“ doppelt vorkamen. Es wurden „Backplane-Anschlüsse“ und „Expander-Anschlüsse“ angezeigt, die es nicht gab. Alle meine Festplatten sind direkt und nicht über eine Backplane angeschlossen.
Der Servershop-Bayern hatte, als ich um Rat fragte, gleich die Vermutung, dass die Systemsoftware des RAID-Controllers wahrscheinlich veraltet war und deshalb falsche Dinge anzeigte. Nachdem ich den maxView-Storage-Manager installiert hatte und darüber die Systemsoftware des RAID-Controllers aktualisiert hatte, war das Problem behoben und die Anzeige sah so aus, wie oben auf dem Bild.
Eine zweite Falle ist die Anleitung zur Aktualisierung der Systemsoftware in der Bedienungsanleitung und auf der Homepage von Adaptec bzw. Microsemi. Angeblich muss man sich bei Microsemi einen Support-Account anlegen, dann dort im Support die neue Software herunterladen und installieren. Nach mehreren Stunden hatte ich dort aber trotz Anmeldung immer noch keine Seite mit einem Download gefunden.

Der Support hat mir dann den Link zum Firmware-Update des RAID-Controllers geschickt, aber mit dem maxView-Storage-Manager geht es noch einfacher und zwar auf Knopfdruck. Weiter unten mehr zu dieser Verwaltungssoftware für das RAID.

 

Achtung:
Die „CNX-Bezeichnungen“ beziehen sich immer auf eine Buchse (mini SAS HD connector x 4) auf dem RAID-Controller, in die ein Vierfach-Kabel kommt, das sich zu den Festplatten hin in vier einzelne Kabeln aufspaltet. Die Lage auf der Zeichnung in der Bedienungsanleitung, wie oben schon erwähnt, ist falsch. Im maxView-Storage-Manager werden aber auch die Festplattenseriennummern angezeigt und man kann ziemlich einfach herausfinden wo z. B. Buchse CN0 oder CN4 ist. Danach sollte man die Kabel mit einem Schild ebenfalls beschriften, damit man später noch weiß, was wohin gehört.

 

mini SAS x 4 Connector-Kabel

mini SAS x 4 HD Connector-Kabel

Hier kommt noch eine sehr nützliche Seite im Raid-Controller-BIOS, nämlich die Temperaturkontrolle des Flash-Backup-Moduls und dessen Stromversorgung. Das Backup-Module ist bei mir unterhalb des Netzteils verschraubt, also außerhalb jeglicher Hitzeansammlungen.

Temperatur Radi-Controller

Temperatur Flash-Backup-Modul

BIOS Raid-Controller speichern

BIOS-RAID-Controller, falls man Änderungen vorgenommen hat, speichern nicht vergessen!

IV. Ubuntu-Server installieren

Vorarbeiten

Folgende Vorarbeiten sind erledigt:

  • SSD Platte angemeldet
  • IPMI funktioniert und wir können von der Ferne schon die Kerndaten des Mainboards sehen
  • BIOS ist auf UEFI umgestellt
  • Secure Boot ist aus

Was liegt zu diesem Zeitpunkt noch im Argen?

  • die Lüfter pumpen, da sie ständig unter die Mindestdrehzahl des Mainboards gehen
    Lösung: ipmitool, ein Linux-Programm
  • die Systemsoftware des RAID-Controllers ist veraltet, das BIOS zeigt falsche Werte an
    Lösung: maxView-Storage-Manager

Ubuntu-Server installieren Vorgehen

Auf der Seite von Ubuntu kann man die aktuelle Server-Long-Term-Version herunterladen. Achten Sie darauf, dass Sie die LTS-Version aussuchen. Es gibt auch spezielle Versionen z. B. für ARM-Chips. Bei mir war es die „Ubuntu Server 16.04.1 LTS“.

Man bekommt eine iso-Datei, die nun auf einen USB-Stick, in einer ganz bestimmte Formatierung (startfähig), kopiert werden muss. Unter Linux ist dies einfach, aber wir gehen hier davon aus, dass Sie vielleicht noch keinen Linux-Desktop-Rechner eingerichtet haben. Die Vorgehensweise beim Mac ist etwas komplizierter, klappt aber dank „Terminal“ auch. Später habe ich festgestellt, dass es am Mac jedoch Probleme mit der Verifizierung geben kann.

Linux startfähiges USB-Stick-ISO-Image am Mac erstellen

  1. Teminal am Mac öffnen
  2. folgendes eingeben:
    hdiutil convert -format UDRW -o linuxServer.img /PFAD/Ubuntu.iso
  3. und dann nach einem Leerzeichen, die ISO-Datei von Ubuntu mit der Maus dahinter ziehen, damit schreibt das Terminal automatisch den Pfad der Datei ins Terminal – „linuxServer.img“ ist die Zieldatei, sie landet automatisch in Ihrem Heimatverzeichnis auf dem Mac, also das Verzeichnis das so heißt wie der User (macht man ein Finder-Fenster auf, dann ist es links in der Liste unter dem Benutzernamen zu finden)
  4. Nach erfolgter Kovertierung manuell das „.dmg“ am Dateinamen entfernen, so dass sie wirklich „linuxServer.img“ heißt und auf den Schreibtisch ziehen
  5. dem USB-Stick geben wir einen eindeutigen Namen z. B. „LINUX-SERV“
  6. im Terminal finden wir heraus, wie der Mac den USB-Stick intern bezeichnet, bzw. seinen Einhängepunkt
  7. im Terminal geben wir ein:
    diskutil list
  8. anhand der Größe, der Angabe „DOS_FAT_32“ und anhand des Namens finden wir den Einhängepunkt des USB-Sticks – bei mir „/dev/disk3/“
  9. nun geben Sie im Terminal den folgenden Befehl ein mit Ihrer Nummer ACHTUNG alle Daten auf dem USB-Stick werden gelöscht und sind Sie wirklich sicher, dass es die Nummer des USB-Sticks ist? Lieber zweimal prüfen! Fragezeichen in folgendem Befehl mit Nummer ersetzen:
    diskutil unmountDisk /dev/disk?
  10. nun kommt das Überspielen des linuxServer-Images auf den Stick:
    sudo dd if=/Users/thomas/Desktop/linuxServer.img of=/dev/rdisk3 bs=1m
    nach „if=“ einfach wieder die linuxServer.img-Datei mit der Maus hinziehen – rdisk? muss Ihre Nummer erhalten, die Sie weiter oben ermittelt haben
  11. man muss das Admin-User-Passwort eingeben, dann dauert es eine ganze Weile bis im Terminal die Übertragung bestätigt wird und ein Popup-Fenster erscheint mit dem man den USB-Stick auswirft – „Auswerfen“ klicken!
  12. USB-Stick abziehen

Wem das alles zu kompliziert ist, der kann es auch einfacher haben mit dem Mac-Programm Unetbootin oder unter Windows oder am einfachsten am Linux-Desktop mit dem startup-disk-creator.

Eine Suche im Netz ergibt etliche Anleitungen z. B. die für den Mac von timSchropp, auf die ich mich beziehe.

Linux startfähiges USB-Stick-ISO-Image am Ubuntu-Desktop erstellen

Als erstes kann man beim Installieren des Ubuntu-Servers den USB-Stick auf Konsistenz mit einer Prüfziffer analysieren. Leider schlug dies bei mir nach der Mac-Prozedur fehl. Es gab eine Inkonsistenz bei einer Datei. Der Stick hatte trotzdem soweit funktioniert, dennoch habe ich mit dem Ubuntu-Desktop-Rechner einen neuen Stick erstellt. Eine Anleitung findet man auf der Ubuntu-Internetseite unter create-a-usb-stick-on-ubuntu.

Ubuntu-Server auf dem neuen Server installieren

USB-Stick in die Buchse und den Server neu starten.

Es kommen diverse Abfragen, nach Land, Uhrzeit, Tastatur etc.

Netzwerk einrichten

Dann eine Abfrage nach der Netzwerkverbindung. Ich habe erst mal alles mit DHCP automatisch einrichten lassen und den 10GBASE-T-Netzwerkadapter gewählt. Um Duplex und dergleichen kümmere ich mich später. Wenn der Switch nur Gigabit hat, macht es unter Umständen auch Sinn 10GBASE-T ganz zu deaktivieren, da dessen Prozessor ganz schön warm wird (momentan das heißeste Bauteil auf dem Mainboard), also Strom in sinnlose Hitze verwandelt. Auf der anderen Seite kann man beim 10 GB Anschluss sicher sein, dass er bei 1 GB auch das Maximum was möglich ist liefert.

 

Netzwerk einrichten

Netzwerk einrichten

Festplatte partitionieren

Hier gab es einen ordentlichen Knoten, der sich lange einer Lösung verweigert hat:

Man sucht sich zuerst die komplette SSD aus und wählt „Manuell„. Alles was „Geführt“ heißt, bedeutet nicht „geführt“, sondern automatisch ohne Einflussnahme!

Partionierung Linux

Partionierung der Festplatte Linux-Ubuntu-Server

ganze SSD verwenden

ganze SSD verwenden

Das Mainboard haben wir auf UEFI gestellt. Die SSD-ist bereit komplett überschrieben zu werden, da sie nur das Linux-System aufnehmen soll und sonst weiter nichts. Das Home-Verzeichnis wird im Großen und Ganzen wahrscheinlich nicht benutzt werden, da alle Daten auf das RAID gehen. Man kann die SSD, wenn man sie vorher benutzt hat, mit dem Terminal am Mac komplett von allen Partionen befreien, um sicher zu gehen, dass nicht mehrere EFIs angelegt werden, aber es geht auch ohne.

Dennoch kommt am Anfang eine Meldung, ob man wirklich mit EFI fortfahren will, da es anscheinend noch andere Betriebssysteme auf der SSD gibt. Diese gibt es nicht, also ruhig mit „Ja“ beantworten und mit EFI fortfahren und der Erstellung einer leeren Partionstabelle für die ganze SSD fortfahren.

 

UEFI

UEFI und angeblich schon vorhandene Betriebssysteme, die es gar nicht gibt.

UEFI Ubuntu und xls

UEFI Ubuntu und xfs

Partionen für den Ubuntu-Server

  1. EFI-Partion mit 200 MB
  2. Swap-Partion mit 34 GB (2 GB mehr als der Arbeitsspeicher, Swap ist die Auslagerungspartion für den Arbeitsspeicher, falls er zu voll wird)
  3. System-Partion gemountet an ROOT: / – Größe 30 GB mit dem Dateisystem xfs ??? (es würden auch 20 GB reichen)
  4. Home-Partion gemountet an /home – Größe 50 GB mit dem Dateisystem xfs
  5. Rest als FREIER SPEICHER, falls man später irgendwo noch etwas braucht

Erst mal ist mir aufgefallen, dass automatisch immer vor der ersten Partion ein freier Speicherblock von 1 MB automatisch eingebaut wird. Das muss so sein, eine Erklärung gibt es unter: Ubuntu-Partionierung leerer Block mit 1 MB

Das ging soweit alles ganz gut, doch als ich den Server starten wollte landete ich immer bei der „grub-Bash“ mit dem Eingabe-Prompt: „grub>“.

grub Schell

grub-bash

Nach zweimaliger Eingabe von „exit“ landet man bei der „EFI-Bash“. Der Grub-Loader hatte also irgend ein Problem mit dem Laden des Kernel.

Beim Ubuntu-Desktop hatte ich ähnliche Angaben gemacht und da ging es, als ich ihn zum Testen auf dem Server installiert hatte. Mein erster Versuch war eine automatische Partionierung mit „Geführt – ganze Festplatte verwenden“ und siehe da es ging. Gab man in der Grub-Bash „ls“ ein und versuchte mit „ls“ wiederum den Inhalt der gelisteten Partionen anzuzeigen kam: „Dateisystem kann nicht gelesen werden“. Also habe ich meine manuelle Partionierung nochmals durchgeführt, aber dem System das Dateisystem „ext4“ mitgegeben und siehe da es ging plötzlich. Home habe ich auf „xfs“ gelassen.

Achtung:
Das Dateisystem „xfs“ geht nicht für die Systemdateien und GRUB bei Ubuntu-Server 10.16, es muss für das System z. B. „ext4″ gewählt werden!
Das hängt vielleicht damit zusammen, dass „xfs“ keinen Platz für einen Boot-Sektor lässt, den es bei EFI aber eigentlich gar nicht braucht? Hat jemand eine schlaue Erklärung?
(Stand Oktober 2016)

 

Sicherheitsupdates

Sicherheitsupdates Ubuntu

Sicherheitsupdates Ubuntu

Sicherheitsupdates sollen automatisch installiert werden, andere Aktualisierungen macht man lieber manuell, damit sie nicht das System lahmlegen.

Software Pakete jetzt zusammen mit dem Ubuntu-System installieren

Ubuntu Server Software

Ubuntu-Server Software-Sammlungen installieren

Man braucht die „standard system utilities“, „OpenSSH server“ und „Samba File server“. Alles andere kann man später installieren, da man z. B. nicht einen vollen Mail-Server braucht um Mails bei Systemproblemen zu verschicken etc.

OpenSSH braucht man für die Fernwartung und der Samba-File-Server bildet den Kern unseres Fileservers.

Ubuntu stellt die Pakete zusammen und löst auch Abhängigkeiten auf, die zwischen Paketen bestehen, so dass immer alles gut zusammenpasst.

Ubuntu-Installation fertig

Ubuntu fertig installiert

Ubuntu fertig installiert

Nach einigen Minuten ist Ubuntu-Server fertig installiert. Wer die Abläufe nochmals im Detail nachlesen will findet Hilfe und Anleitungen auf der Ubuntu-Internetseite. Leider gab es keine Hinweise zum meinen Problemen mit dem Dateisystem „xfs“, das sich hauptsächlich für große Datenmengen eignet, aber von einigen Distributionen, auch so wie ich es vorhatte, generell eingesetzt wird.

Der kleine Hinweis am Bildschirm erinnert daran, dass man beim Neustart noch den USB-Stick abziehen sollte, da man sonst zwangsläufig wieder im Installationsmodus landet. Der Server startet neu und wenn man Glück hat bleibt der Startvorgang nicht an der Grub-Bash hängen, sondern fängt an etliche Dateien zu laden, bis er schließlich bei einem charmanten Eingabepromt in der Bash endet.

Ende gut alles gut!
Nicht ganz das Ende, aber jetzt geht es weiter in der Welt von LINUX.

Von nun an kann man alles über SSH, bequem vom Schreibtisch aus weiter installieren und einstellen. Ich benutze dazu das Terminal am Mac.

Einloggen mit SSH am Server

Am Mac öffnet man das Terminal und gibt folgendes ein, falls man am gleichen Router wie der Server hängt:

SSH username@servername

oder

SSH username@IP-address

Danach wird man noch aufgefordert sein Passwort anzugeben, jetzt wird man verbunden. Beim ersten Mal wird der Fingerprint noch angegeben, d. h. der Sicherheitsschlüssel und man muss bestätigen, dass man dem Schlüssel vertraut und sich mit dem Server verbinden will.

Nachdem ich den Ubuntu-Server nochmals ganz neu eingerichtet habe (Versuch die RAID-Controller-Treiber einzurichten) musste ich am Mac erst den alten Sicherheitsschlüssel löschen, da der Mac bei zwei unterschiedlichen Schlüsseln vom Server mit dem selben Namen, eine „Man-in-the-middle-Attack“ vermutete.

Die ganze Software auf den neuesten Stand

Bevor man weitere Einstellungen vornimmt kann man die ganze Software einmal abgleichen und dann auf den neuesten Stand bringen. Das „-y“ sorgt dafür, dass Rückfragen (z. B. ob Abhängigkeiten mit aktualisiert werden sollen) automatisch mit „Ja“ beantwortet werden:

sudo apt-get update && sudo apt-get upgrade -y

Manchmal müssen bei einem Upgrade auch zusätzliche Pakete installiert werden, dies macht die obige Zeile nicht. Es kommt die Meldung: „Die folgenden Pakete sind zurückgehalten worden“. Will man beim Upgrade auch neue zusätzliche Pakete landen, dann braucht es diesen Befehl:

sudo apt update && sudo apt full-upgrade

Ein aufgeschobenes Problem behandlen: Die pumpenden Lüfter

Pumpender Lüfter WarnlampeDie rote Warnlampe Item 51/LED 8 : Dauerleuchten = Überhitzung, Blinken = PWR/PWM-Fehler oder Lüfterausfall. Bei mir hat sie geblinkt.

PWM Lüfter und PWR
PWM ist die Pulsweitenmodulation des Lüfters, ein Steuersignal des Mainboards gibt ein 25 kHz Signal an die Lüfterelektronik um den Lauf zu steuern. PWR steht denke ich für engl. „Pulse Width Regulation“ des Mainboards.

Wie wir im „Teil 1 – Hardware“ festgestellt haben, pumpen die zwei noctua-Lüfter. Sie fallen langsam auf eine niedrige Geschwindigkeit ab und das Mainboard steuert sofort dagegen, indem es die beiden 15 cm-Lüfter wieder auf ihre Maximalumdrehungszahl hochfährt. Dies liegt daran, dass das Mainboard von kleinen Lärmlüftern ausgeht, die direkt auf die Kühlkörper geschraubt sind und mindestens mit 700 U/Min. drehen sollen. Stellt das System fest, dass die Lüfter unter diesen Wert (Threshold) abfallen, werden sie künstlich wieder hochgefahren. Der Lösungsversuch des Problems besteht darin im System den „Threshold“ für die Lüfter zu ändern:

ipmitool installieren und gegebenenfalls die Kernelmodule laden

sudo apt install ipmitool

versucht man nun ipmitool zu starten mit
ipmitool sensor
kommt
Could not open device at /dev/ipmi0 or /dev/ipmi/0 or /dev/ipmidev/0: No such file or directory

Manchmal müssen erst noch entsprechende Kernelmodule dauerhaft eingeschaltet werden:
sudo modprobe ipmi_devintf
sudo modprobe ipmi_msghandler
sudo modprobe ipmi_poweroff
sudo modprobe ipmi_si
sudo modprobe ipmi_watchdog

(Details zu den IPMI-Modulen gibt es hier.)

Sollen diese immer beim Start geladen werden, dann muss man sie in /etc/modules Zeile für Zeile eintragen. Habe ich aber nicht gemacht, da sie trotzdem geladen wurden. Geladene Kernelmodule kann man anzeigen lassen mit:

sudo lsmod

Weiter mit dem ipmitool-Programm:

sudo ipmitool sensor

Das Ziel sind die folgenden Einstellungen für die großen noctua-Lüfter. Zu finden sind die Drehzahlen auf der noctua Homepage beim jeweiligen Lüftermodell.

sens|aktuell |Maß| Status| LNR | LCR | LNC | UNC | UC | UNR |
FAN1|400.000 |RPM| ok |100.000|200.000|300.000|1300.000|1400.000|1500.000
FAN2|300.000 |RPM| nc |100.000|200.000|300.000|1300.000|1400.000|1500.000

Die Abkürzungen bedeuten:

Lower Non-Recoverable = LNR
Lower Critical = LC
Lower Non-Critical = LNC

Upper Non-Crititical = UNC
Upper Critical = UC
Upper Non-Recoverable = UNR

Die weiteren Abkürzungen sind:
cr = critical
nc = non-critical
nr = non-recoverable
ok = ok
ns = not specified

Zum Ändern der Werte gibt man folgendes einmal für „lower“ und einmal für „upper“ ein:

ipmitool sensor thresh "*sensor name*" lower *lnr* *lcr* *lnc*
sudo ipmitool sensor thresh "FAN2" lower "100" "200" "300"

ipmitool sensor thresh "*sensor name*" upper *unc* *ucr* *unr*

Die Sternchen UND die Abkürzungen müssen natürlich ersetzt werden.

Eine sehr gute ipmitool-Anleitung gibt es im freenas-Forum.
Oder hier bei Thomas Krenn für die Thresholds und generell zum ipmitool.

Achtung:
Innerhalb des IPMI-Zugangs auf das Board muss im dortigen Menü unter: „Configuration – Fan Mode“, folgende Auswahl getroffen werden: „Set Fan to Optimal Speed„.

Problem:
Bei meinem Board ist es so, dass die neuen Thresholds zwar gespeichert werden (im SDR-sensor-data-record -> siehe Link Thomas Krenn/Thresholds) und auch beim Neutstart wieder da sind, dass aber die Lüfter manchmal sehr lange brauchen (ein paar Stunden) bis sie sich einpendeln oder ich muss den Server neu starten (Strom weg und 30 Sekunden warten, setzt IPMI zurück) und hoffen, dass sie danach tatsächlich nicht mehr pumpen. Dafür habe ich noch keine Lösung und auch keine Hilfe/Idee von Supermicro bekommen.

Eine interessante Anmerkung von Thomas Krenn ist, dass manche Supermicro-Boards nur Lüfterwerte im Abstand von 135 U/Min erlauben. Das wäre dann:

sudo ipmitool sensor thresh "FAN1" lower "135" "270" "405"
sudo ipmitool sensor thresh "FAN2" lower "135" "270" "405"

Aber auch das hat bei mir keine Lösung gebracht.

Was momentan hilft, ist einfach den Server so oft neu zu starten (wirklich Strom weg und 30 Sekunden warten), bis es dann funktioniert und die Lüfter stabil mit 300-400 U/Min. laufen.

Die Spezifikation zu IPMI gibt es bei Intel als PDF und sie sagt, dass natürlich nur vom Hersteller vorgesehene Werte eingestellt werden können.

SuperDoctor5 von Supermicro

SuperDoctor5 ist ein Programm des Mainboardherstellers Supermicro, das ebenfalls die ganzen Sensoren überwacht und graphisch darstellt. Man kann es auch remote über das Netz aufrufen und es gibt die Möglichkeit Emails zu verschicken, falls Fehler auftreten.

https://www.supermicro.com/products/nfo/sms_sd5.cfmsudo

Ich habe es nicht installiert, da es sich mit IPMI doppelt und bei meinem Testlauf keinen Zusatznutzen brachte.

 

V. Den RAID-Controller und das RAID einrichten

Erst mal schauen, was am Server so alles vorhanden ist an Festplatten und siehe da, das RAID funktioniert von Anfang an:

blkid -o list

Man bekommt eine ausführliche Liste aller „gemounteten“ und auch der „nicht-gemounteten“ Festplatten und Partionen. Auch das RAID wird angezeigt und kann auch gemountet werden. Inhalte können geschrieben werden etc.

Auf meinem Mainboard sind damit anscheinend Treiber vorhanden, die den RAID-Controller steuern können. Adaptec gibt zwar an, dass es besser wäre, die Adaptec-Treiber zu verwenden, aber momentan liegen noch keine Treiber für die erste Update-Version von Ubuntu 16.04 LTS also Ubuntu 16.04.1 vor. Will man originale adaptec-Treiber installieren, begibt man sich auf eine große, steinige Reise mit tiefen Gräben und schwarzen Löchern:

Es gibt zwei Möglichkeiten, einmal direkt mit dem Ubuntu-Betriebssystem installieren und einmal danach am schon bestehenden Ubuntu-System.

Adaptec-RAID-Controller-Treiber für Linux 16.04 installieren

Auf der Seite start.adaptec.com gibt man die Bezeichnung des RAID-Controllers ein, bei mir ist dies: Adaptec RAID 81605ZQ.

Manchmal gerät man dann in die Produktregistrierung und manchmal wird man weitergeleitet zur Betriebssystemauswahl. Das neueste was momentan (Okt. 2016) geboten wird ist Ubuntu 14. Wenn man dort klickt kommt man zu „Ubuntu 14.04 LTS Downloads“ und findet dort den Treiber: AACRAID Drivers v1.2.1-52011 for Linux.

Klickt man wiederum auf den Treiberlink sieht man Details und siehe da unter Beschreibung steht: Ubuntu 14.04.4 and 16.04. Der Treiber passt also zu Ubuntu 14.04.04 und zum ersten Release von Ubuntu 16.04 aber nicht zu Ubuntu 16.04.1.

TIP:
Immer über www.adaptec.com gehen, nach der Weiterleitung unten rechts in der Textspalte auf „Microsemi Adaptec Support“ klicken, dann über die Produktauswahl weiter. Alles andere führt in die Untiefen einer recht konfusen Internetseite von Microsemi.

Wenn es den neuen Treiber gibt, geht das Vorgehen am schon bestehenden Ubuntu-System so:

Das Treiberarchiv (tgz mit 150 MB) lädt man herunter und entpackt den passenden Ordner für ubuntu_16.04.1. Darin befinden sich nun Ordner für PowerPCs (Apple) „ppc64le“ und normale „x64“, als „tgz“ und als „deb“. Wir brauchen nur die „deb-Datei„, die man auf einen USB-Stick kopiert.

(Im tgz-Archiv verbergen sich die Dateien für einen Installation während man Ubuntu-Server installiert, zusammen mit einer README.txt-Anleitung. Dieses brauchen wir aber jetzt nicht.)

Das Shell-Kommando, das wir anwenden ist „dpkg“.
Debian Package „dpkg“ installiert einzelne „.deb-Packete“ / -i = install

Eigentliche Installation des Treibers für den RAID-Controller auf ein bestehendes System

Den Ubuntu Packet-Index aktuallisieren:

sudo apt-get update

Falls sie noch fehlen, entsprechende Entpackungstools laden:

sudo apt-get install build-essential

Den USB-Stick einstecken und dann schauen wo er ist, das geht wieder mit „blkid“:

blkid -o list

Den USB-Stick mit dem Treiber darauf mounten (bei mir /dev/sdc1):

sudo mount /dev/sdc1/ /media

Treiber installieren:

sudo dpkg -i /media/aacraid-1.2.1-52011-Ubuntu16.04-x86_64.deb

Bei mir schlägt es fehl, da das Installationsprogramm versucht in „4.4.0-21-generic“ zu installieren, aber der neue Kernel bei der Ubuntu-Version 16.04.1 heißt schon „4.4.0.31“!
Es gibt damit schlichtweg keinen Ordner mit der Bezeichnung „4.4.0-21-generic“.

Es soll in ein paar Monaten den aktuellen Treiber geben (Stand Oktober 2016).

Installation des Treibers für den RAID-Controller zeitgleich mit dem Ubuntu-System

Man kann den Treiber auch schon zusammen mit dem Ubuntu-OS-System installieren (beide zur selben Zeit), aber hier ist ein ähnliches Problem, folgt man der Anleitung, die im Archiv
„aacraid-1.2.1-52011-Ubuntu_16.04-Boot-x86_64.tgz“ mitgeliefert wird, dann kann man zwar den richtigen Kernel-Ordner-Namen angeben, bekommt am Ende aber ein „invalid module format aacraid.ko“.

Achtung:
Es kommt wirklich darauf an, dass man genau die richtige Version verwendet! Laut Hotline von adaptec in ein paar Monaten erhältlich.

 

maxView Storage Manager zur RAID-Verwaltung installieren

Der maxView Storage Manager ist ein schönes graphisches Programm, das bei Desktops direkt auf dem System perfekt funktioniert. Man kann RAIDs einrichten, Sensoren überwachen und sich eine Email schicken lassen, falls eine Störung auftritt.

Bei einem Server wird die Sache schwieriger. Es gibt verschiedene Möglichkeiten:

  1. BIOS des RAID-Controllers zur Verwaltung nutzen
  2. Mit einem bootfähigen USB-Stick, auf dem ein System plus maxView Storage Manager und das Kommandozeilenprogramm ARCCONF drauf ist, kurzfristig arbeiten.
  3. Command-Line-Utility ARCCONF und adaptec Event Monitor im Hintergrund, der Meldungen absetzt.
  4. Auf dem Ubuntu-Server maxView Storage Manager installieren (mit einem Apache Tomcat – CIM Server) und dann aus der Ferne über das Netzwerk mit einem Browser zugreifen.

zu:

  1. Das BIOS ist nicht schlecht und für fast alle Aufgaben geeignet, Email-Benachrichtigung geht nicht, Systemupdate ist auch nicht möglich.
  2. Da man nur vom USB-Stick bootet und ein Minisystem hat, hat man keinen Internetzugang und kann z. B. keine Systemaktualisierungsdatei herunterladen. Die Menüs scheinen gekürzt im Gegensatz zur Vollversion. Email-Benachrichtigung geht nicht, da der USB-Stick ja wieder weg kommt.
  3. Die Command-Line-Utility ARCCONF ist, soweit ich das sehen konnte, nicht gerade übersichtlich, hat aber alle nötigen Befehle.
  4. Fernwartung mit maxView und CIM-Server-Installation auf dem Server, der die Überwachung weiterleitet. Aufwendig und noch ein Serverprozess der läuft (Ist der sicher? – Wie ist der CIM-Server eingerichtet?), aber das Übersichtlichste, wenn mal eine Platte ausfällt und man einen Überblick braucht, was wo zu tun ist. In der Angst bei einem Festplattenausfall seine Daten zu verlieren macht man schnell mal einen Fehler, deshalb ist es wichtig ein einfaches und übersichtliches Programm zu haben.

 

1. Einstellungen und RAID anlegen im BIOS

Während des Startvorgangs „CTRL+a“ drücken, dann kommt man ins RAID-Controller BIOS. Das geht komfortabler als man denkt.

2. Einstellungen und RAID anlegen vom bootfähigen USB-Stick mit maxView

Unter www.adaptec.com wählt man in der rechten Spalte, rechts unten „Microsemi Adaptec Support“, dann klickt man sich über sein Produkt durch, bis man bei den Downloads ist, dort auf „Storage Manager Downloads“ dann kommt man auf bootable USB-Image.

Dieses Image herunterladen und als bootfähigen USB-Stick brennen. Hier versagt leider der oben erwähnte „Linux-create-boot-image-Agent“ des Ubuntu-Desktop-Systems, da er sich nur um Ubuntu-iso-Dateien bemüht und diese hier schnöde ignoriert. Es kommt also der nächste Agent zum Einsatz (die Mac-Terminal-Nummer – siehe weiter oben – hat wieder nicht funktioniert):

Diesmal ein Fedora-Programm für Windows. Man lädt den Fedore-USB-Creator herunter und installiert ihn auf einem Windows-Rechner (Fedora würde natürlich auch gehen.) Man muss das Programm mit einem „Rechtsklick“ starten, damit es mit Administratorrechen läuft! Dann brennt man damit das iso-Image auf den Stick.

Will man die Boot-Sequenz im BIOS des Ubuntu-Servers umstellen, muss man darauf achten, dass man von „EFI“ auf „DUAL“ umschaltet und dort den USB-Stick nach vorne holt, denn auf „EFI“ lädt der bootfähige USB-Stick natürlich nicht. Einmal neu starten und schon ist man in einem schönen Live-System und kann mit Firefox, nachdem man ihn als „Standard-Browser“ (wichtig!) ausgewählt hat, mit dem Benutzer „root“ und dem Passwort „root“ alle Einstellungen am RAID vornehmen.

Wie man von da aus eine Datei zum RAID-Controller-Systemupdate lädt, habe ich aber nicht herausgefunden, ich denke mal, dass es schlicht weg nicht geht, da dieses System weder über Internet verfügt noch andere USB-Sticks einbinden kann.

Da der Stick nach getaner Tat wieder weg kommt, kann man ihn natürlich auch nicht das System überwachen lassen, der Email-Versand bei Fehlern fällt also auch weg.

3. Commandline-Tool auch mit CIM-Server

Das Paket „Adaptec Event Monitor“ kommt zusammen mit dem Command-Line-Tool ARCCONF. Da das Commanline-Tool ebenfalls einen CIM-Server einrichtet, kann man sich die Mühe sparen und gleich zum graphischen maxView-Storage-Manager wechseln.

4. maxView Storage Manager mit CIM-Server und Fernwartung

Den Storage-Manager gibt es wieder auf der Adaptec Internetseite unter maxView Storage Manager. Man bekommt ein Archiv mit dem Manager und dem Commandline-Tool. Im Ordner des Managers gibt es verschiedene Dateien für Linux 64 bit und meinem Prozessor gilt die „xxx.deb-Datei“.

Die Datei auf den Server laden und dann installieren (die „X“ stehen für verschiedene Versionen, je nachdem wie die Datei zum aktuellen Zeitpunkt heißt):

dpkg-i StorMan-X.XX-XXXX_amd64.deb

Entgegen den Behauptungen der Bedienungsanleitung kann man nicht „nur den Dämon ohne die graphische Oberfläche“ anwählen. Stattdessen kommt am Schluss eine Fehlermeldung, dass das Desktop-Symbol nicht platziert werden konnte, da es keinen Desktop gibt.

Folge Angaben kann man während der Installation machen:

CIM Server HTTP Port: [default: 5988] – ich habe 5988 angegeben am Ende ist es aber doch 8443 geworden, warum auch immer. Dies kann man aber später bei Bedarf anpassen. (Beim CIM-Server handelt es sich um ein Apache-Tomcat -Modul).

Tip:
Am Router sollte man dafür sorgen, dass die ganzen Ports, die intern genutzt werden, vom Internet aus geschlossen sind, höchstens man möchte von unterwegs das RAID steuern (Z. B. den Alarm ausschalten, damit die Nachbarn wieder schlafen können nach einem Festplattenausfall, denn der RAID-Controller produziert bei Problemen eine lautes Pfeifen.).

LocalHost Mode: [default: No] – hier muss auf alle Fälle „No“ stehen, sonst geht die Fernwartung nicht und der Storage Manager erwartet das RAID auf dem eigenen Rechner (localhost).

maxView Storage Manager

maxView Storage Manager – bei mir ist es die „Network Connection“

Fernzugriff auf den Server mit dem maxView Storage Manager

Entgegen der Aussagen in der Bedienungsanleitung braucht man auf dem entferneten Rechner (Network Connection) den Storage Manager nicht installieren. Dieses wohl nur, wenn man dort auch ein RAID zum kontrollieren hat. Es reicht ein normaler Browser mit der folgenden Adresse:

https://[IP-Adresse des Servers]:8443/maxview/manager/login.xhtml

Die Zugangsdaten sind die Linux Zugangsdaten des Admin-Users.

Hier kommt gleich das nächste Problem:
Der maxView-Storage-Manager läuft in einem Mode, in dem man nur sehen kann ohne dass man etwas einstellen kann. Um an das Menü zu kommen, in dem man den Standardmodus auch für normale Nutzer freischaltet, braucht man aber Adminrechte (sudo – gibt es in dieser Umgebung nicht). Deshalb muss man bei Ubuntu einmal Root freischalten, dann mit Root und dem Root-Passwort sich bei maxView anmelden, den Standardmodus auch für normale Benutzer freischalten (System-System Settings), Root wieder in Ubuntu löschen und sich dann als normaler Ubuntu-Admin bei maxView wieder anmelden. Ein schöner Rundtrip.

Als erstes habe ich dann die Systemsoftware des RAID-Controllers auf den neuesten Stand gebracht.

Danach sollte der RAID-Controller laufen und man Zugang zu den Einstellungen über den maxView-Storage-Manager haben.

Geschafft!

Ein RAID einrichten

Welchen RAID-Level, warum und wieso, dazu findet man jede Menge Literatur. Hier geht es um die konkrete Ausführung mit dem 81605ZQ-RAID-Controller von Adaptec.

Die oberste Ebene ist der Server, danach kommt der Controller und unter der Controller-Ebene braucht man jetzt ein „Logical Device“ also die logische Ebene die angesprochen wird.

  • Server
  • Controller
  • logical device, dies ist mein RAID
  • physical devices mit: 4 Connectors und an jedem Connector hängen 4 Festplatten

Ich habe RAID 6 genommen, da ich schon in der Testphase einen Festplattenausfall hatte und bei RAID 6 gleich 2 Platten auf einmal ausfallen können. Rein theoretisch müssten es somit 42 TB nutzbarer Speicher sein während man bei RAID 5 auf theoretische 45 TB kommt.

Da eine einzelne Platte aber in Wirklichkeit nur 2,729 TB hat kommt man auf folgende Werte:

44,67 TB gesamt
41,88 TB RAID 5
39,09 TB RAID 6 (maxView gibt an 39,059 TB)

Man klickt also auf „Controller“ und fügt ein „Logical Device“ hinzu. Dann wählt man „manuell“.

Hier noch ein paar Einstellungen die ich gewählt habe:

stripe size: 128 KByte (die Vorgabe 256 KB schien mir zu groß, trotz vieler Video-Dateien)
write cache: „enable write back“
read cache: „enable“

Was bedeutet das alles?

  • stirpe size = kleinster zu beschreibender Platz, also auch eine kleinere Datei braucht diesen Platz – die Festplatten haben Blöcke mit 512 KB, es passen also in jeden Block bei mir 4 x 128KB Daten-Stripes
  • write back = das RAID packt beim Schreiben alles in den Puffer und meldet an das Betriebssystem – alles geschrieben – schreibt aber erst später. Ist sehr schnell, aber nur mit Pufferbatterie zu empfehlen.
  • write through = erst wenn tatsächlich geschrieben ist, wird auch „geschrieben“ gemeldet. Ist der größte Bremser bei Tests.
  • read ahead = liest immer gleich schon mal auf Verdacht die Daten der Nachbarblöcke
  • adaptive read ahead = nur wenn zwei Nachbarblöcke gelesen werden, liest der Controller auch weitere Blöcke auf Verdacht schon mal in den Puffer
  • no read ahead

Detailwissen dazu findet man beim Tecchannel oder bei tom’s hardware.

Tip
Bevor man die Einrichtung abschließt ist es sinnvoll die Seriennummern der Festplatten aufzuschreiben und zu schauen, welche Platte laut maxView genau wo angebaut ist, so dass man bei Ausfällen nicht versehentlich die falsche Platte wechselt. Bei mir war in der Bedienungsanleitung die Connectorbezeichnung (Stecker für jeweils 4 Festplatten) falsch, dies kann schnell zu großen Verwechslungen führen!

 

Jetzt hat man also eine „nackte RAID-Festplatte“ mit 39,059 Millionen Megabyte oder mit 39 Tausend Gigabyte

Das hört sich sehr viel an, wenn man aber bedenkt, dass die dreitägigen Dreharbeiten für einen fünfminütigen Imagefilm, im normalen HD-Format, also nicht 4K oder dergleichen, mit allen Postproduktionsdateien ca. 1 Terabyte ausmachen, dann sind das gerade mal 39 Imagefilme die man mit diesem RAID produzieren kann. Also so eine Art „Berliner Flughafen“, der ja auch, falls er mal fertig werden wird, schon viel zu klein sein wird.

 

Das RAID-System partionieren und ein Datensystem einrichten

Erst mal schauen, was wir so alles haben:

blkid -o list

Das RAID ist bei mir auf „/dev/sda“ unmounted zu finden.

Jetzt können wir es mit „parted“ partionieren:

parted /dev/sda
(parted) print

Wir sind jetzt innerhalb von (parted) und bekommen mit „print“ den Zustand:
Wir haben 39060 GiB (1 GiB = 2 hoch 30 Byte) zur Verfügung und die Sektorengröße beträgt 512 Bytes (also nicht wie bei SSDs 4 KByte-Sektoren).

Dann eine GUID-Partionstabelle GPT anlegen, denn wir wollen uns nicht mehr mit MBR-Beschränkungen plagen. „mklabel“ löscht alle Daten, da wir noch keine haben, kein Problem:

(parted) mklabel gpt

Wir haben es zwar mit Festplattensektoren mit 512 Bytes zu tun, wollen uns aber trotzdem an einem Vielfachen von 4 kByte ausrichten, also in dem Fall ein Vielfaches von 1 MiB (Mega-Byte zur Basis von 2). Deshalb stellen wir erst einmal parted auf MiB um und rechnen ab jetzt in MiB.
Am Anfang einer Festplatte wird immer 1 MiB freigelassen, das bezieht sich zwar nur auf Systemfestplatten, kann aber nicht schaden und wir haben ja genügend MiBs zur Verfügung. Dann schaut man, dass die Sektoren genau aneinander grenzen, und zwar genau mit den 1 MiB-Grenzen. Die eine hört bei 38.000.001 Mega-Byte (zur Basis 2) auf und der nächste Sektor beginnt bei 38.000.02 Mega-Byte (zur Basis 2).

(parted) unit MiB
(parted) print

Unser RAID hat laut print-Ausgabe: /dev/sda 39 997 430 MiB.

Für die erste Partion lassen wir am Anfang 1 MiB frei und dann geht es so weit nach hinten, dass wir am Ende genau 38 TB also 38.000.000 MiB Platz in der ersten Partion haben, die wir „partionP1“ nennen.
Die zweite Zahl muss um 1 höher sein als die 38 000 000, da uns am Anfang ja 1 MiB fehlt:

(parted) mkpart partionP1 1MiB 38000001MiB

Die nächste Partion beginnt dann genau über der ersten Partion ( 380 … 02) und ganz am Ende habe ich nochmals 1 MiB Platz gelassen (Gesamt-MiB-Zahl minus 1), wer weiß für was es gut ist. Die zweite Partion habe ich „partionPS“ genannt, das sie später verschlüsselt wird:

(parted) mkpart partionPS 38000002MiB 1997427MiB
(parted) print
Nummer Anfang Ende Größe Dateisystem Name Flags
1 1,00MiB 38000001MiB 38000000MiB partionP1
2 38000002MiB 39997429MiB 1997427MiB partionPS
(parted) quit
Informationen: Möglicherweise müssen Sie /etc/fstab anpassen.

Parted ist ein freundliches Programm und sagt beim Abmelden, dass man /etc/fstab anpassen muss, damit das RAID beim Server-Start auch automatisch eingebunden wird. Doch erst einmal brauchen wir ein Dateisystem für beide Partionen. Dazu dient der Befehl „mkfs“.

Für den großen Speicher unserer ersten Partion, der auch viele Video-Dateien aufnehmen soll eignet sich am besten das xfs-Dateisystem, das seit Ubuntu 16.04 auch direkt vom Kernel unterstützt wird:

sudo mkfs.xfs /dev/sda1

Ausgabe:

meta-data=/dev/sda1 isize=512 agcount=37, agsize=268435455 blks
...............= sectsz=512 attr=2, projid32bit=1
...............= crc=1 finobt=1, sparse=0
data........= bsize=4096 blocks=9728000000, imaxpct=5
...............= sunit=0 swidth=0 blks
naming........ =version 2 bsize=4096 ascii-ci=0 ftype=1
log........... =Internes Protokoll bsize=4096 blocks=521728, version=2
...............= sectsz=512 sunit=0 blks, lazy-count=1
realtime.......=keine extsz=4096 blocks=0, rtextents=0

Bei jedem Mountvorgang wird das Dateisystem bei xfs überprüft. Um es manuell zu überprüfen, muss man es „umount-en“ (der Befehl ist immer ohne „n“ nach dem „u“ also „umount“) und dann mit „xfs_check“ überprüfen und gegebenenfalls mit „xfs_repair“ versuchen zu reparieren.

Die erste Partion unseres RAIDs mounten:
-t bedeutet Type und der ist „xfs“
Als Mountpunkt nehmen wir das Verzeichnis /srv, das Daten von Systemdiensten enthalten soll (FTP, SMB etc.):

sudo mount -t xfs /dev/sda1 /srv

prüfen:

df -h

ergibt in der letzten Zeile, der gemounteten Dateisysteme:

/dev/sda1 37T 34M 37T 1% /srv

Mountpunkte und Verzeichnisse

  • /srv = „Service“, nehmen wir für unseren Samba-Server, dort einen Unterordner für den Fileserver: „/srv/fServer“
  • /mnt = hier hängen wir die verschlüsselte Partion unseres RAIDs ein
  • /var = hier liegen Dateien von E-Mail-Server, der Nachrichten bei Störungen verschickt

Verschlüsselung LUKS auf die Partion /dev/sda2 anwenden

Da wir eine sehr große Partion haben und eine kleine (knapp 2 TB) wollen wir die kleine Partion verschlüsseln. Schließlich hat man immer irgendwelche Daten, die man nicht die nächsten 100 Jahre bei der NSA, bei Prism, bei den Russen, Chinesen oder gar bei Google wiederfinden möchte.

Eine sehr ausführliche Anleitung zur recht „machtvollen“ Verschlüsselung von „LUKS“ findet man im Linux-Magazin 08/2005.

Das Projekt „LUKS“ ist dabei eine Weiterentwicklung von „Cryptsetup“.

Es sind verschiedene Schritte durchzuführen:

a. „cryptsetup“ mit „luksFormat“ und verschiedenen Variablen

-c bestimmt den Algorithmus („aes-cbc-essiv“ soll sehr gut sein)
-y bestimmt, dass die Passphrase zweimal eingegeben werden muss, am besten vorher schon einen schönen Satz ausdenken, den man sich auch merken kann
-s die Länge des Verschlüsselungsschlüssels, 128 oder 256

sudo cryptsetup -c aes-cbc-essiv:sha256 -y -s 256 luksFormat /dev/sda2

b. Mit „luksOpen“ einen virtuellen Namen und ein mapping erstellen

Dann weist man mit „luksOpen“ dem virtuellen verschlüsselten Laufwerk einen Namen zu (mapping). Hier als Beispiel: „meinLukusOrdner“. Dieser wird mit dem realen Laufwerk „/dev/sda2“ verknüpft. Dabei muss man muss die Passphrase angeben.

sudo cryptsetup luksOpen /dev/sda2 meinLukusOrdner

c. Dateisystem für das verschlüsselte Laufwerk erstellen

Nun ist das verschlüsselte virtuelle Laufwerk unter „/dev/mapper/meinLukusOrdner“ zu finden und braucht noch ein Dateisystem („xfs“). Danach bekommt man etliche Ausgaben:

sudo mkfs.xfs /dev/mapper/meinLukusOrdner

meta-data=/dev/mapper/meinLukusOrdner isize=512 agcount=4, agsize=127835200 blks
.........= sectsz=512 attr=2, projid32bit=1
.........= crc=1 finobt=1, sparse=0
data.....= bsize=4096 blocks=511340800, imaxpct=5
.........= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =Internes Protokoll bsize=4096 blocks=249678, version=2
.........= sectsz=512 sunit=0 blks, lazy-count=1
realtime =keine extsz=4096 blocks=0, rtextents=0

d. mounten

Jetzt kann man das neue virtuelle, verschlüsselte Laufwerk mounten.
In meinem Beispiel an „/mnt“ :

sudo mount /dev/mapper/meinLukusOrdner /mnt

e. wieder verschließen, nicht nur „umount“

Das Ganze wieder verschließen, erst „umount“ und dann „luksClose“, das das Verzeichnis wirklich wieder abschließt! Ansonsten kann man ohne Passphrase wieder mounten.

sudo umount /mnt
sudo cryptsetup luksClose meinLukusOrdner

f. So bekommt man das verschlüsselte Laufwerk wieder aktiviert

sudo cryptsetup luksOpen /dev/sda2 meinLukusOrdner
Geben Sie die Passphrase für »/dev/sda2« ein:
sudo mount /dev/mapper/meinLukusOrdner /mnt

Fertig!

Man kann das Passwort auch in einer Datei liefern oder mehrere Passwörter hinzufügen, so dass mehrere Menschen mit unterschiedlichen Passwörtern auf das Verzeichnis zugreifen können. Ist ein Passwort kompromittiert, so kann man es löschen und durch ein neues ersetzen. Es gehen bis zu 8 Passwörter.

Neues Passwort hinzufügen:

cryptsetup luksAddKey /dev/sda2

Passwort löschen, wobei am Ende der Slot steht in dem der Key sich befindet, hier die „0“:

cryptsetup luksDelKey /dev/sda2 0

Crypto Metainformationen gibt es mit „luksDump“, hier werden auch die „Key-Slots“ angezeigt, nur welcher welcher ist kann man hier auch nicht sagen. Eigentlich sollte bei jeder Passwort-Eingabe auch dessen „Key-Slot“ (also seine Platznummer, um das Passwort zu identifizieren, da man es ja nicht lesen kann) angezeigt werden, aber vielleicht geschieht dies erst, wenn man mehr als nur ein Schlüsselwort hat.

cryptsetup luksDump /dev/sda2

Mehr im Linux-Magazin 08/2005 zur LUKS-Verschlüsselung.
Wie sicher welche Verschlüsselungstechnik ist zeigt das Linux-Magazin 10/2006.

Bei meinem Fileserver muss ich natürlich immer die Partion aufschließen und nach dem Benutzen wieder verschließen. Da dort aber nur wirklich persönliche Dinge gespeichert werden, ist dies nicht problematisch. Dass bei einem automatischen Server-Neustart in Abwesenheit, die private Partion zu bleibt ist auch zu verkraften.

Der normale Bereich (/dev/sda1 und das Linux-System) wird ja ebenfalls nach außen durch Passwörter geschützt, ist also nicht direkt zugänglich nur eben nicht verschlüsselt.

Beim Systemstart die Laufwerke einbinden mit /etc/fstab

Die Datei fstab sorgt dafür, dass Laufwerke gleich zu Beginn des Serverstarts auch gemountet werden. Für die systemrelevanten Laufwerke ist dies selbstverständlich und wird bei der Einrichtung berücksichtigt, für unser RAID müssen wir das händisch nachtragen:

Bevor wir beginnen brauchen wir die internen Bezeichnungsnummern (UUID) der Partionen bzw. Festplatten:

blkid

liefert

/dev/sda1: UUID="xxxxxxxx-xxxxxxxxx-xxxxxxxx" TYPE="xfs" PARTLABEL="RaidpartionZazu" PARTUUID="yyyyyyy-yyyyyyyy-yyyyy-yyyyyyy"

fstab öffnen mit vim

sudo vim /etc/fstab

dann die /dev/sda1 mit ihrer UUID angeben den gewünschten Einhängepunkt und ein paar Optionen / die Zwischenräume sind Tabulatoren:

UUID=xxxxxxxx-xxxxxxxxx-xxxxxxxx /srv/fServer xfs defaults 0 0

zur Erklärung:

  • Spalte 1 = UUID-Nummer der Partion /dev/sda1
  • Spalte 2 = Einhängepunkt
  • Spalte 3 = Dateisystem
  • Spalte 4 = Optionen für den Zugriff auf den Datenträger (hier „defaults“)
  • Spalte 5 = wird von Linux ignoriert deshalb „0“
  • Spalte 6 = in welcher Reihenfolge beim Systemstart zu überprüfen / Systempartion bekommt „1“ alle anderen „0“

Mit „ESC“ raus aus dem Schreibmodus und mit „:qw“ speichern, dann „reboot“.

Die verschlüsselte Partion beim Systemstart einbinden?

Dies bedeutet, dass bei jedem Systemstart, direkt am Terminal des Servers die Passphrase angegeben werden muss, ansonsten bootet das Server-System nicht.
Das ist eher lästig, da man immer einen Bildschirm und eine Tastatur am Server haben muss. Wer das dennoch will findet eine gute Anleitung zum Einbinden einer verschlüsselten Partion in der Linux-Community.

Achtung:
Hier muss mit den „gemappten Namen“ gearbeitet werden die UUID hat bei mir nicht funktioniert, bzw. der Server hat in den Notmodus gebootet. Man braucht zwei Einträge, einmal in die „/etc/crypttab“ und einmal in die „/etc/fstab„:

sudo vim /etc/crypttab
meinLukusOrdner /dev/sda2 none luks,check=xfs

sudo vim /etc/fstab
/dev/mapper/meinLukusOrdner /mnt auto defaults 1 1

Danach kommt beim Serverstart eine Aufforderung zur Eingabe der Passphrase. Anschließend wird die Partion gemountet.

 

VI. Samba Server Datenaustausch mit dem „smb-Protokoll“

smb ist ein Protokoll zum Datenaustausch, das bisher hauptsächlich auf Windows eingesetzt wurde. Ziel ist es ein entferntes Verzeichnis wie eine am Computer angeschlossene Festplatte zu behandeln.
Der Mac und Linux konnten zwar bisher auch mit smb kommunizieren, haben aber noch ihre eigenen Protokolle. Für den Mac ist es das AFP-Apple Filing Protocol und für Linux das klassische Unix-Protokoll NFS-Network File System. Apple setzt seit einiger Zeit ebenfalls vermehrt auf das smb-Protokoll, so dass dies momentan die beste Austauschplattform für alle Systeme bietet.

Samba besteht aus zwei Prozessen, einmal der nmbd-Prozess für die interne Verwaltung, Namensverwaltung und das Browsing um zu schauen, welche zugänglichen Verzeichnisse im Netz sind und den smbd-Prozess, der die Schnittstelle für Clients bereitstellt.

Samba-Server Config-Datei

Die zentrale Verwaltungsdatei für den smb-Server liegt unter:

/etc/samba/smb.conf

Zuerst kopieren wir die Datei, damit man immer nachschauen, was im Original für Standardwerte enthalten waren. Die „Archiv-Datei“ heißt dann cmb.conf.orig

sudo cp smb.conf smb.conf.orig

Samba-Server Passwörter und User-Level-Sicherheit

Samba hat verschiedene Sicherheitskonzepte. Bei kleineren Installationen wird in der Regel „User-Level-Sicherheit“ implementiert:

Wichtig:
Wenn Anwender A auf Rechner A Daten vom Samba-Server S abrufen will, dann muss er sowohl auf Rechner A als auch auf Samba-Server S mit dem gleichen Namen und Passwort registriert sein. Darüber hinaus müssen beide Rechner zur selben Arbeitsgruppe gehören! Nur dann kann man ohne Passworteingabe zugreifen.

Stimmen die Passwörter zwischen Samba und lokalem Rechner nicht überein erscheint jedes Mal eine Dialogbox mit der Samba-Username und Samba-Passwort Aufforderung.

Nur ein registrierter Linux-User kann den Linux-Samba-Server nutzen! Deshalb ist es sinnvoll für User die mit dem Linux-Server sonst nichts zu tun haben den Linux-Account mit „lock = -l“ zu sperren:

passwd -l [userName]

Samba verwaltet seine Passwörter separat, weshalb sie auch verschieden sein können von den Linux-User-Passwörtern. Beide zu synchronisieren ist mit Hilfe von „pam password change“ möglich und auch in der Konfigurationsdatei von Samba schon vorgesehen. Dabei wird bei jedem Ändern des Samba-Passwortes auch das Linux-Passwort geändert. Dies geht aber nur, wenn man auch als eigener Benutzer angemeldet ist, also nicht von Root! Deshalb ist bei einer kleinen Umgebung mit wenigen Nutzern es sicher ausreichend, wenn man dies von Hand erledigt, also Samba-Passwort ändern und Linux-User-Passwort ändern, so dass man immer nur ein Passwort hat für beide Prozesse. Um die Synchronisation auszuschalten schreibt man in der smb.con:

unix password sync = no

In unserem Fall ist eine Synchronisation sowieso nicht notwendig, da der Ubuntu-Linux-Server-User nichts mit Samba zu tun hat, sondern nur den Server verwaltet. Für Samba werden eigene User angelegt, die den Server aber nicht verwalten können.

Samba einrichten

Eine gute Beschreibung gibt es auch von Michael Kofler: Linux – Das umfassende Handbuch, eine schlechte Beschreibung liefert leider: Praxisbuch Ubuntu Server 14.04 LTS von Charly Kühnast und Daniel van Soest, hier wird das Thema nur gestreift.

Samba-User anlegen

Wir erstellen eine Minimaleinrichtung (kiss = keep it simple stupid), es gibt zwei User, die damit automatisch auch eine Gruppe besitzen mit demselben Namen. Der eine User heißt „angestellter“ der andere „chef“. Beide haben keinen Zugang zum Server direkt, da sie ohne Passwörter angelegt werden.

sudo useradd angestellter
sudo useradd chef

Beide bekommen auch kein Homeverzeichnis ansonsten: „useradd -m chef“

Auf dem Ubuntu-Server sind somit folgende User angelegt:

  • Root = deaktiviert (immer bei Ubuntu)
  • XXXXX = Ihr User mit dem Sie den Server verwalten, hat vollen Linux-Zugang und kann über „sudo“ sich wie „root“ verhalten
  • chef = Sie selbst, wird für Samba benutzt, kein Linux-Zugang
  • angestellter = sonstiger Samba-Nutzer, kein Linux-Zugang

Damit haben Sie eine klare Trennung zwischen Server-Verwaltung und Samba-Nutzung.

Nun bekommen die beiden User ein Samba-Passwort:

sudo smbpasswd -a angestellter
sudo smbpasswd -a chef

Alle vorhandenen User anzeigen:
Will man sich anzeigen lassen, was für User es auf dem System gibt, dann schaut man z. B. mit dem Programm vim in die Datei /etc/passwd.

Zuordnung zwischen lokalem Rechner Benutzernamen und Linux-(Samba)-Benutzernamen

Will man nicht jedes Mal, wenn man auf den Samba-Server zugreift, ein Passwort eingeben oder auch nicht das Passwort z. B. beim Mac im Schlüsselbund speichern, dann müssen die Passwörter auf dem lokalen Rechner, an dem man arbeitet und das Samba-Passwort übereinstimmen. Die Nutzernamen können aber mit Hilfe einer Datei zugeordnet werden. Heißt mein Account auf meinem Windows- oder Mac-Rechner „Thomas Hezel“ und mein Samba-Account „chef“, dann wird er zugeordnet, indem man die folgende Zeile in die Datei „smbusers“ schreibt. Hierfür kann man wieder „vim“ benutzen. Die smbusers-Datei hat bei meiner Ubuntu-Installation jedoch noch gar nicht existiert.

# /etc/samba/smbusers
chef = "Thomas Hezel"

ACHTUNG GEFAHR
Wenn jemand in dieser Datei „root“ einem entfernten Benutzer zuordnet oder Ihren Verwaltungsaccount sich selbst, dann besteht eine große Sicherheitslücke, deshalb die Datei „smbusers“ sorgsam ausfüllen und ihr entsprechende Rechte geben, so dass nur Root schreiben darf.

chmod 644 /etc/samba/smbusers

In der Samba-Einstellungsdatei „smb.conf“ muss dann noch die Zuordnungsdatei registriert werden:

# /etc/samba/smb.conf
[global]

username map = /etc/samba/smbusers

Ordner anlegen und Rechte einstellen

Wir erstellen auf unserem Dateisystem jeweils einen Ordner für die Firma mit dem Namen „Firma“ und einen zu dem nur der Chef Zugang hat „Chef“.

Anmerkung:
Zu Usern zugehörige Ordner werden, wie bei TYPO3, mit großem Anfangsbuchstagen geschrieben.

Der Ort ist natürlich die große Partion auf unserm RAID 6: /dev/sda1

Dieses mounten und dann die Ordner erstellen, diesen Ordner die jeweilige Gruppe zuordnen (Ordner „Chef“ bekommt die Gruppe „chef“) und die Rechte auf 770 stellen, also Owner und Group dürfen lesen, schreiben und ausführen, der Rest hat keine Rechte „0“.

Ordner „Firma“ bekommt die Gruppe „angestellter“ und die Rechte 770.

Der verschlüsselte Bereich auf /dev/sda2 bekommt einen Ordner mit dem Namen „Sicher“, dieser bekommt die Rechte 770 und den Owner „chef“.

Dann fügen wir noch den „chef“ zur Gruppe „angestellter“ hinzu, so dass der Chef auch den Ordner für die Angestellten nutzen kann.

sudo usermod -aG angestellter chef

Und unser Linux-Administrator soll ja auch in die Ordner reinschauen können, also kommt dieser sowohl zur Gruppe „chef“ als auch zu Gruppe „angestellter“:

sudo usermod -aG angestellter xxx-linux-admin
sudo usermod -aG chef chef xxx-linux-admin

Achtung Gruppe-User Verwirrung:
Wenn man einen User Hans anlegt, dann entsteht automatisch auch die Gruppe Hans. Somit ist es möglich, dass User Lisa sich der Gruppe Hans anschließt und dann die Rechte bekommt, die für die Gruppe Hans eingestellt sind.

Wer ist nun in welcher Gruppe?
Diese Frage beantwortet ein Blick in die „group-Datei“:

sudo vim /etc/group

Zentrale Einstellungsdatei für den Samba-Server unter /etc/samba/smb.conf

Unter Linux gilt die Unix-Regel: „Alles ist eine Datei.“
Also sind auch alle Einstellungen, die man macht, in Dateien hinterlegt. In diesem Fall in „smb.conf“.
Zum Bearbeiten benutzt man einen Linux-Editor, also ein Programm, das Textdateien bearbeiten kann. Die bekanntesten sind „vim“ und „nano“. Ich benutze meist „vim“.

Die wichtigsten Kommandos bei „vim“ sind:

  • a = man kommt in den insert-Schreibmodus
  • esc-Taste = man kommt aus dem Schreibmodus heraus
  • :/ Suchbegriff = suchen
  • :q = quit ohne speichern (falls man Veränderungen gemacht hat, diese aber nicht speichern will heißt der Befehl „:q!“)
  • :wq = write and quit (also speichern und schließen)

Wenn man die obigen Kommandos beherrscht, hat man quasi schon einen Linux-Bachelor-Abschluss.
Eine sehr gute und „persönliche“ – man fühlt sich wie damals in der Grundschule –  Einführung in Linux gibt „Eli the Computer Guy“ in seinen Videos.

/etc/samba/smb.conf bearbeiten

Falls wir Unfug machen, erstellen wir erst mal eine Kopie der Datei, auf die wir in der Not zurückgreifen können:

sudo cp smb.conf smb.conf.orig

Einstellungsdatei smb.conf öffnen:

sudo vim smb.conf

Einstellungen vornehmen

workgroup = ZAZU
server string = [default]

wins support = yes
#wins support = yes, bedeutet ich agiere als wins-Server

# wins server =
#auskommentiert, da dies bedeutet ein Client zu sein, der Server aber schon ein wins-Server ist

dns proxy = yes
#samba soll auf DNS-Einträge vom Router zurückgreifen

unix password sync = no
#kein Abgleich zwischen Linux und Samba Passwörtern

map to guest = never
#keine Gäste zulassen

usershare allow guests = no
#nein Gäste sollen keine Verzeichnisse erstellen können

unter Share Definition:

[Firma]
valid users = @angestellter,@chef
path = /srv/smb/Firma
writeable = yes
public = no
guest ok = no
force group = +angestellter
create mask = 0660
directory mask = 0770
[Chef]
valid users = @chef
path = /srv/smb/Chef
writeable = yes
public =  no
guest ok = no
force group = +chef
create mask = 0660
directory mask = 0770
[Secure]
valid users = @chef
path = /mnt/Secure
writeable = yes
public =  no
guest ok = no<
force group = +chef
create mask = 0660
directory mask = 0770

public = no / bedeutet, dass man nur als registrierter Nutzer zugreifen kann
guest ok = no / keine Gäste, im Grunde dasselbe wie Public
force group = +chef / neue Dateien bekommen die Gruppe Chef
create mask = 0660 / neue Dateien bekommen die Rechte 660, lesen und schreiben für den Owner und die Gruppe
directory mask = 0770 / neue Ordner bekommen die Rechte 770, lesen, schreiben und ausführen für den Owner und die Gruppe

ACHTUNG
Unbedingt bei „force group“ auf das „+“ achten, ohne das Plus bedeutet es, dass jeder Zugriff, als ein Zugriff von dieser Gruppe gewertet wird. Dies ist ein Sicherheitsproblem!

Dann mit „ESC“ raus aus dem Schreibmodus und mit „:wq“ speichern.

Habe ich alles Richtig gemacht?
Prüfen mit
/etc/smb/ testparm

Es kommt bei mir:
WARNING: The "syslog" option is deprecated

Diese kann man auskommentieren.
syslog = 0 bedeutet eigentlich, dass nur Fehler protokolliert werden nicht Warnungen etc.

Jetzt muss der Samba-Service neu gestartet werden, damit die Änderungen eingelesen werden:

service samba reload

Änderungen, damit Samba als wins-server auftritt

Bei mir geht nach der festen Vergabe von IP-Adressen das Browsing nicht mehr, d. h. ich sehe nicht mehr auf meinen Clients automatisch die smb-Freigaben, sondern muss mich immer per Kommando mit dem Server verbinden (Mac: „Mit Server verbinden …“). Mehr zu Browsing-List-Fähigkeiten gibt es bei Linux-Praxis, der folgende Korrekturen vorschlägt, die bei mir aber auch nichts genutzt haben. Wichtg ist wohl, dass es einen „guest account“ gibt, da das Browsing über diesen abgewickelt wird:

#neu Samba als localer wins-server, braucht guest account
wins server = xxx.xxx.xxx.xx #ist dies die eigene ip-Adresse?
guest account = nobody
local master = yes
preferred master = yes
os level = 65
map to guest = bad user

Einen Papierkorb einrichten

Normalerweise sind bei Samba gelöschte Dateien einfach gelöscht. Es gibt nicht die Papierkorbfunktion. Ubuntu-Users gibt eine Anleitung, wie man dies jedoch mit Hilfe eines versteckten Ordners, „.recylcebin“ realisieren kann. Der Ordner muss dann von Zeit zu Zeit manuell gelöscht werden. Er wird bei der ersten Löschung automatisch eingerichtet. Die Angaben kommen in den allgemeinen Bereich, damit sie für alle Shares gelten:

# Ein Papierkorb wird eingerichtet:
vfs object = recycle
# Der Pfad zum Papierkorb relativ zur Freigabe (".recyclebin" ist Default).
recycle:repository = .recyclebin
# Im Papierkorb bleiben Pfad-Angaben erhalten.
recycle:keeptree = Yes
# Beim Verschieben wird der Zeitstempel angepasst.
recycle:touch = Yes
# Gleichnamige Dateien werden nicht überschrieben.
recycle:versions = Yes
# Keine Begrenzung der Dateigröße.
recycle:maxsize = 0

Die Einstellung gilt, wenn sie über den Shares steht, für alle Shares. In jedem Share entsteht der Ordner „.recyclebin“ und in diesem Ordner werden die Original-Ordner wieder hergestellt in denen die Datei lag, die gelöscht wurde. Liegt die gelöschte Datei in Ordner B und dieser in Ordner A so sind die beiden Ordner A+B und die Datei auch im „.recyclebin“ vorhanden.

Nur man darf das Löschen nicht vergessen, sonst frißt der Papierkorb irgendwann sehr viel Platz.

Zugriff auf den Samba-Server

Wichtig ist, dass auf dem entfernten Rechner die richtige „WORKGROUP“ eingestellt wird (anscheinend schreibt man die immer in Großbuchstaben). Voreingestellt ist meist „WORKGROUP“, das müssen wir in unserem Fall auf dem entfernten Rechner in „ZAZU“ ändern!

Beim Mac ist dies unter:
Systemeinstellungen–Netzwerk–Ethernet–Weitere Optionen–WINS

Dann kann man darunter noch die IP-Adresse unseres WINS-Servers (Samba-Servers) eintragen.

Zugriff von einem Mac aus

Falls der Server nicht unter den Festplatten im Findermenü links erscheint (was manchmal mit DHCP automatisch klappt), kann man im Finder-Menü über:

Gehe zu – Mit Server verbinden …

entweder auf „Durchsuchen“ gehen oder oben „smb://[IP-Adresse-Server / oder Servernamen]“ eine Verbindung herstellen. Da die Passwörter und Namen des entfernten Rechners bei mir nicht übereinstimmen muss man diese jetzt angeben. Gegebenenfalls kann man die Zugangsdaten jetzt auch im Schlüsselbund des Macs speichern. Danach öffnet sich ein Fenster mit dem ausgewählten Ordner des Samba-Servers.

Manchmal findet der Mac den vorhandenen Samba-Server auch von alleine und bietet ihn unter „Freigaben“ oder „Netzwerk“ im Findermenü direkt an. Das Einloggen bleibt aber das Gleiche. Will man nicht das Passwort im Schlüsselbund speichern und sich direkt einloggen, so müssen die Benutzernamen vom Mac und vom Samba-Server „gemappt“ werden (siehe oben) und die Passwörter müssen identisch sein.

Zugriff vom Ubuntu-Desktop

Auf das Aktenschranksymbol links klicken, „Mit Server verbinden“ auswählen „smb://[IP-Adresse-Server]“ eingeben und einloggen.

Zugriff von Windows 7 aus

Man muss den alten Internet-Explorer herauskramen und dort in der Pfadleiste eingeben:

\\[server-name oder ip-adresse]

Hier sind die „Rückstriche/Backslashes“ wichtig, die man über „AltGr+ß“ erreicht.

Dann öffnet sich ein Fenster und man kann sich mit Samba-User-Namen und Passwort verbinden. Es erschienen alle „Freigaben“ und man kann diejenigen für die der Name und das Passwort gilt anklicken und dann nutzten.

Bei mir war noch unter „Computer-Rechtsklick-Erweiterte Systemeinstellungen-Computername-Netzwerk-ID-Ändern …“ die Standard „WORKGROUP“ eingestellt, die ich auf „ZAZU“ geändert habe.

Zum Schluss Samba-Server absichern

(siehe dazu auch nächstes Kapitel)

Auf alle Fälle sollte die Firewall auf dem Router zu sein (TCP Ports: 135, 139, 445 und UDP-Ports 137, 138 und 445), damit man gegenüber dem Internet abgesichert ist. Samba ist für den Betrieb im Internet nicht geeignet!

Innerhalb des eigenen Netzwerks kann man noch den Zugang auf bestimmte Rechner oder IP-Adressen beschränken:

# /etc/samba/smb.cnf
[gobal]
bind interfaces only = yes
interfaces = [IP-Adresse],[IP-Adresse]
hosts allow = RechnerA RechnerB
map to guest = never

 

VII. Sicherheitsmaßnahmen für Samba und SSH

fail2ban für den Samba-Server – Kampf gegen Verschlüsselungserpressung

Man kann fail2ban, das im nächsten Abschnitt (openSSH) beschrieben wird, auch benutzen um bestimmte Dateien oder Dateiänderungen innerhalb von Samba zu unterbinden. Der User wird einfach ausgeloggt, bevor er länger Zeit hat um z. B. ein Verzeichnis zu verschlüsseln, damit der Besitzer später erpresst werden kann („Locky“).

Heise Security hat ein Ablauf entwickelt mit dem man fail2ban für Samba einsetzen kann. Eine gute Liste von Dateinamen und Endungen, die von Locky-Erpressern benutzt werden gibt es bei univention. Wie man die Portokollierung bei Samba auf Dateien bezieht findet man in Martin’s Blog.

Manche Dateien (samba.conf einmal unter „/etc/fail2ban/filter.d/“ und einmal unter „/etc/fail2ban/jail.d/“) muss man auch mit sudo touch anlegen, das ist bei Heise nicht sehr gut beschrieben. Die Logdateien landen im /var/log/syslog.

Achtung:
Bei meiner Konfiguration (siehe unter fail2ban und ssh) benutze ich „jail.local“ anstelle von „jail.conf“!

openSSH-Server absichern

SSH bietet direkten Zugang zum Server und dies auch aus dem Internet, vorausgesetzt im Router hat die Firewall den entsprechenden Port offen. Hat jemand Zugang zu SSH, dann hat er auch Zugang zum gesamten Server. Dies muss man verhindern.

Alles was auf dem Server passiert wird in den Log-Dateien vermerkt, also auch Angriffsversuche:

sudo vim /var/log/auth.log

Folgende Maßnahmen kann man treffen:

  • den Port ändern
  • root aussperren
  • alle Passwörter verschlüsselt?
  • nach zu vielen Fehlversuchen eine Zwangspause einlegen mit fail2ban
  • Sicherheitskonzept erhöhen mit Schlüsseln und Passwort

a. Den SSH-Port ändern

SSH-läuft standardmäßig auf Port 22, ändert man diesen z. B. auf Port 666, dann muss der Angreifer erst einen Portscan machen, bevor er überhaupt an den SSH-Server kommt. Nicht unmöglich, aber eine Hürde für automatisierte Angriffe:

sudo vim /etc/ssh/sshd_config
Port 666

Ganz oben den alten Eintrag auskommentieren und den neuen einfügen.

b. Root aus SSH aussperren

Sollte Root aktiviert sein (bei Ubuntu ausgeschaltet), dann muss ein Angreifer nur das Passwort von Root erraten, deshalb Root am Besten gleich für SSH deaktivieren. Der Defaultwert ist „prohibit-passwort“, was bedeutet Root darf nur mit einem Schlüssel aber nicht mit einem Passwort zugreifen. Ändern in sshd_config:

PermitRootLogin no
# zum speichern
ESC-Taste
:wq

c. Alle Benutzerpasswörter müssen verschlüsselt gespeichert sein

Die Datei in der man das sieht ist: /etc/shadow

Hier sollten für alle User, die ein Passwort besitzen, zwischen den ersten beiden Doppelpunkten eine lange Zeichenketten sein. Bei System-Accounts ist es ein Stern oder eine Ausrufezeichen. Falls es Benutzer gibt, die ein Passwort haben aber keine Verschlüsselungskette sollten Sie ihnen sofort ein Passwort geben:

sudo password [Name]

d. Fail2Ban oder Pause nach zu vielen Versuchen bei ssh

Das Programm kann alle möglichen Netzwerkdienste überwachen und erstellt Firewall-Regeln, nachdem es zu viele Fehlversuche entdeckt hat.

sudo apt-get update
sudo apt-get install fail2ban

Die Eistellungsdatei finden wir in: „/etc/fail2ban/“ – dort ist es die Datei: „jail.conf
Diese Datei kopieren wir als jail.local, die dann den Vorrang hat. So erhalten wir die alte Datei mit den Default-Werten, falls wir wieder zurück müssen und etwas schief gelaufen ist.

sudo cd /etc/fail2ban
sudo cp jail.conf jail.local

Nun ändern wir die jail.local-Datei:

enable = true einfügen:

[sshd]
port = ssh
logpath = %(sshd_log)s
enable = true

Die Werte am Anfang der Datei sagen aus, dass 10 Minuten gesperrt wird, wer innerhalb von 10 Minuten 5 Fehlversuche gestartet hat. Dies Werte kann man global oder nur durch Eintrag im [sshd-Block] ändern:

# "bantime" is the number of seconds that a host is banned.
bantime = 600

# A host is banned if it has generated „maxretry“ during the last „findtime“
# seconds.
findtime = 600

# „maxretry“ is the number of failures before a host get banned.
maxretry = 5

Dann alles speichern und den Prozess starten:

sudo systemctl restart fail2ban
sudo systemctl enable fail2ban

Zustand kontrollieren:

sudo fail2ban-client status sshd

Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 0
|- Total banned: 0
`- Banned IP list:

Eine sehr gute, erweiterte Anleitung zu fail2ban und openSSh, finden Sie bei DigitalOcean.

e. SSH mit Schlüsseln plus Passwort betreiben

Anleitungen finden sich im Internet und im Kofler-Linux-Buch. Da ich unterschiedliche Rechner nutze, um mich einzuloggen, müsste ich immer den Schlüssel dabei haben und auf dem jeweiligen Rechner installiern. Das ist mir zu umständlich.

 

VIII. sFTP-Server mit openSSH-Server realisieren / teilweise

Man kann mit dem Administrator und seinem Passwort ganz normal z. B. über das Programm „Transmit“ und der Einstellung „sFTP“ auf den kompletten Server zugreifen. Schön wäre es jedoch, dass man den Zugang auf einzelne Verzeichnisse beschränken könnte, um einzelnen Usern so einen eingeschränkten Zugang zu ermöglichen. Damit hätte man eine sichere SSH-sFTP-Kommunikation und könnte sich die Einrichtung eines FTP-Servers sparen, denn mehr Server bedeutet ja auch immer mehr Zugänge und mehr Zugänge bedeutet weniger Sicherheit.

Aber will man Samba und sFTP kombinieren, dann macht es Sinn, dass die Ordner außerhalb von „/home“ liegen, nur scheint das nicht zu gehen:

Der Versuch einen Ordner der außerhalb von „/home“ liegt als „chroot“ (Gefängnis aus dem der eingeloogte sFTP-User nicht herraus kommt, um auf dem Server Unheil zu stiften) zu benutzen, um dort mit sFTP Inhalte abzulegen, hat nicht funktioniert. Anscheinend ist bei Ubuntu 16.10 hier irgendwo eine Sperre eingebaut (vielleicht appAmor).

Hier mein Vorgehen, falls noch jemand Tips hat, bin ich dankbar für Anregungen!

Eine Anleitung für einen sFTP-Zugang mit chroot innerhalb von Home findet man z. B. bei „dann rate mal“ oder ausführlicher bei KaiRaven.

Sicherheitshalber die sshd_config duplizieren und das Original sichern und der Datei „sshd_config“ nur Schreibrechte für Root geben:

sudo cp sshd_config sshd_config.original
sudo chmod 640 /etc/ssh/sshd_config

Dann in der „sshd_config“ die Änderungen vornehmen:

sudo vim /etc/ssh/sshd_config

Subsystem auskommentieren und neue Subsystemzeile einfügen:

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

Jetzt das „ChrootDirectory“ für den Nutzer einrichten:

#weiter sftp Einrichten zazu kunden
Match User kunden
ChrootDirectory /srv/Kunden
ForceCommand internal-sftp
AllowTcpForwarding no
PermitTunnel no
X11Forwarding no

Damit ist dieser Teil in der „sshd_config“ fertig. Wir legen, falls nicht vorhanden, den User „kunden“ an.

sudo adduser kunden

Verhindern, dass der User einen Shell-Zugang bekommt. Ein Shellzugang ist laut „man sshd_config“ bei sFTP nicht nötig:

sudo usermod -s /bin/false kunden

Im Ordner „srv/Kunden“ muss es „/srv/Kunden/home/“ und „/srv/Kunden/home/kunden/“ geben. Sie müssen alle „root“ gehören und kein anderer darf Schreibzugriff haben. Das Manual sagt:

man sshd_config

"ChrootDirecotry
Specifies the pathname of a directory to chroot(2) to after authentication. At session startup sshd(8) checks that all components of the pathname are root-owned directories which
are not writable by any other user or group. After the chroot, sshd(8) changes the working directory to the user's home directory."

Das müsste bedeuten, dass nachdem man „ge-chroot-ed“ ist, das „chroot-dirctory“ der neue Wurzelpunkt ist und von da an leitet chroot in das „home-directory“ (innerhalb des „chroot-directory“ für den User.

Folglich muss in der /etc/passwd-Datei folgendes stehen:

test:x:1004:1008:,,,:/home/kunden:/bin/false

Siehe zum chroot-außerhalb von home auch den Artikel bei serverFault.

Jetzt den ssh-Server neu starten:

sudo /etc/init.d/ssh restart

Das funktioniert bei mir NICHT!

Solange ich mein „chroot-directory“ untehalb von „/home“ habe, also das reguläre Home-Verzeichnis des Users, geht alles prima und er kommt auch nicht aus seinem Home-Verzeichnis raus, also chroot funktioniert. Wenn aber mein Chroot-Ordner außerhalb von Home liegt geht das Ganze nicht.

Ideen? Anregungen?

IX. Netzwerk von DHCP auf feste IP-Adresse umstellen, LAN-Leitungen bündeln

Feste IP-Adressen für die Schnittstellen

Hat man mehr als einen Netzwerkadapter, dann kann man feststellen welche Controller es gibt. In der Regel sind die Intel-Controller am schnellsten:

lspci | grep -i net

Bei meinem Mainboard heißen die 10 Gb-Schnittstellen „rename 4“ und „rename5“ (macht Ubuntu beim Systemstart), deshalb habe ich sie zuerst umbenannt. Vorher müssen sie aber heruntergefahren werden:

sudo ip link set rename5 down
sudo ip link set rename5 name zehnGb1
sudo ip link set zehnGb1 up

Kommt man zu der momentan aktiven Schnittstelle unterbricht man natürlich die SSH-Sitzung und muss am Server direkt den Namen ändern und die Schnittstelle wieder hochfahren.

ACHTUNG:
Wie ich festgestellt habe hält dieses Umbenennen nur bis zum nächsten Neustart. Will man es permanent haben, so muss man händisch eine udev-Regel erstellen. Hier gibt es zudem Neuerungen seit Ubuntu 15.10. Es scheint, dass die Datei „/etc/udev/rules.d/70-persitent-net.rules“ nicht mehr automatisch erzeugt wird. Deshalb halten wir die Sache simpel und leben mit „rename4“ und „rename5“. Näheres zu „udev“ und den Regeln gibt es bei ask-ubuntu-networking und bei wiki-ubuntu-users.

Einzelne LAN-Adapter (das Mainboard hat 2 x 10 Gb/s) bündeln

Ändern der Schnittstelleneinstellungen in der /etc/network/interfaces-Datei
mit dem Zusammenlegen zweier Schnittstellen für maximalen Datendurchsatz (bonding/Bündelung).

Eine Anleitung gibt es auch bei help.ubuntu.com, bei wiki.ubuntuusers.de oder im „Praxishandbuch Ubuntu Server 14.04 LTS“ von C. Kühnast und D. van Soest. Diesmal ist die Beschreibung im Praxishanbuch Server sogar richtig ausführlich.

Um „rename4“ und „rename5“ zu kombinieren benutzen wir das „IEEE 802.3ad-LACP-NIC-bonding-Protokoll“ (NIC-bonding = network-interface-card-Bündelung). Es ist das am einfachsten zu etablierende und das einzige, das der Mac versteht. Außerdem entscheidet es selbstständig, wie es den höchsten Datendurchsatz bekommt und fällt beim Ausfall einer Schnittstelle automatisch auf die andere Schnittstelle zurück.

sudo vim /etc/networks/interfaces
#rename4 ist manuell und ein "Slave" zu "bond0"
auto rename4
iface rename4 inet manual
bond-master bond0

#rename5 ist daseblbe damit ein 2-Link-Bond.
auto rename5
iface rename5 inet manual
bond-master bond0

# bond0 ist eine „gebondete“ Schnittstelle und kann
#wie jede andere Schnittstelle benutzt werden
# bond0 hat eine statische IP-Adresse
auto bond0
iface bond0 inet static
address xxx.xxx.xxx.10
gateway xxx.xxx.xxx.1
netmask 255.255.255.0
# bond0 benutzt das IEEE 802.3ad LACP
#bonding protocol (wie der Mac z. B. auch)
bond-mode 4
bond-miimon 100
bond-lacp-rate 1
bond-slaves rename4 rename5

Alles speichern und Service neu starten:
sudo service networking restart

Man kann dann schauen, wir der Zustand der Schnittstellen ist mit:

sudo ip address show

oder den Zustand des Bondings ausführlich darstellen:

sudo cat /proc/net/bonding/bond0

Wie der Bond die Pakete verteilt

Es gibt dafür verschiedene Möglichkeiten. Es werden entweder die MAC-Adressen benuzt oder zusätzlich die IP-Adressen. Die Bonding-Dokumentation gibt es bei www.kernel.org und sie hat dazu einige Angaben.

Die Voreinstellung „layer2“ verteilt den ganzen Verkehr auf einen Slave. Es gibt für Linux dann noch „layer2+3“ die für die Berechnung der Pakete auch Layer 3 Informationen (IP-Adressen) benutzt. Wenn ich das richtig verstehe leitet „layer2“ immer alles über eine Leitung (Slave), weshalb man über folgende Einstellung „layer2+3“ setzten sollte:

xmit_hash_policy layer2+3

Beim Switch (siehe weiter unten) kann man ebenfalls verschiedene Methoden einstellen. Was hier aber wirklich den besten Durchsatz bringt habe ich noch nicht getestet.

Momentan habe ich „Source/Destination MAC, Ethertype, Incoming Port“, was nur eine 1:10 Verteilung für die zwei LAN-Leitungen ergibt, also im Grunde geht alles über eine Leitung. Bezüglich xmit_hash_policy habe ich noch nichts gesetzt, also alles auf default.

Test folgt.

Jetzt sollten wir aber zuerst den Switch einrichten.

Einen HP-Switch für Bonding einrichten

IP-Adressen im Switch einrichten

Ich habe einen Switch von der Firma HP genommen mit 24 Anschlüssen. Er muss managed/verwaltet sein. Ein Switch hat eine eigene Intelligenz und kann zwei Geräte im Heimnetz direkt (Layer 2) miteinander verbinden, ohne dass das Signal über den Router (Speedport/fritz.box etc.) gehen muss. Am Anfang verbindet man den Switch am Besten erst gar nicht mit dem Router, da man ihm zuerst die Adresse des Routers mitteilen muss. Und dafür muss man an die Einstellungsebene.

Um an die Einstellungsebene des Switches zu gelangen nur den Switch mit einem Rechner verbinden. Dann auf dem Rechner das Adressfeld des Switches einstellen. Beim Mac geht das ganz einfach:

Systemeinstellungen-Netzwerk (IP-Adresse nach HP-Swich-Bedienungsanleitung)

  1. Oben eine neue „Umgebung“ wählen oder eine alte „Umgebung“ bearbeiten.
  2. IP-Adresse: 192.168.1.12
  3. Teilnetzmaske: 255.255.255.0
  4. Router: 192.168.1.1

Dann „Anwenden“ drücken. Wenn die alte Mac-Netzwerkumgebung nicht überschrieben ist, können wir sie mit einem Klick später wieder herstellen. Wir brauchen diese Einstellung am Mac nur um einmal in den Switch zu kommen.

Jetzt in den Switch unter der HP-Vorgaben-IP-Adresse: 192.168.1.12, mit einem Browser einloggen. User ist „admin“, Passwort ist leer.

Dann hier die IP-Adresse des eigenen Routers eingeben und die IP-Adresse unter der sich der Switch am Router immer anmelden soll. Alles speichern und den Switch neu starten. Jetzt am Rechner, mit dem wir uns eingeloggt haben (bei mir war es, wie oben beschrieben, ein Mac), wieder den alten Zustand herstellen. Einfach wieder die alte Umgebung auswählen. Jetzt ist der Switch auf den eigenen Router eingestellt und man erreicht ihn unter seiner neuen IP-Adresse.

Bonding am Switch für den Server einrichten

Auf den Menüpunkt „Trunks“ gehen, dann auf „Configuration“ dann „TRK1“ markieren und auf „Edit“.

 

switch-einrichten

Auf einem HP-Switch bonding einrichten. „Static Mode“ auf „Disabled“!

„Static Mode“ muss man unbedingt auf „Disabled“ stellen, sonst ist es kein IEEE 802.3ad-LACP und passt nicht zu dem was wir auf dem Server eingerichtet haben und der Mac versteht es dann auch nicht. Dann noch aus der Port List die zwei Ports auswählen, in die später die zwei LAN-Kabel des Servers kommen und fertig.

Man sollte dann am Switch noch die Zeit einstellen, das Passwort ändern etc.

Und später noch das Bonding für den Mac einrichten. Das ist dann TRK2, mit den gleichen Werten wie für die Serveranschlüsse, bis auf die Ports in die die zwei LAN-Kabel es Mac kommen.

 

Bonding am MAC einrichten

Das Bonding am Server haben wir ja schon eingerichtet, das macht aber alles nur Sinn, wenn es auf der anderen Seite auch einen Rechner gibt, der ebenfalls auf zwei LAN-Leitungen gleichzeitig feuern und empfangen kann.

Am Mac versteckt sich das „Bonding“ oder „Truncking“ wieder im Dialog:
Systemeinstellungen-Netzwerk

Dann oben „Ethernet“ auswählen und nun links unten am kleine Rädchen das Menü aufklappen und „Virtuelle Anschlüsse verwalten …“ wählen. Hier die beiden Ethernet-Anschlüsse auswählen und mit „Anwenden“ die Einstellung abschließen.

Jetzt zurück zum Switch und dort das Bonding für den Mac – wie oben beschrieben – einrichten!

Fertig.

Letzte Kontrolle am Server

Hat man den Server neu gestartet und mit „ip address show“ sind die LAN-Ports immer noch auf „down“ so kann man sie nochmals nach „up“ schieben und den Netzwerkprozess nochmals neu starten.

sudo ip link set zehnGb0 up
sudo ip link set zehnGb1 up
sudo service networking restart

Jetzt sollte man ein Funktionierendes Bond haben.

sudo cat /pro/net/bonding/bond0

DNS Probleme Router und statische IP-Adresse

Nach der Vergabe einer statischen IP-Adresse können die Router, da sie nicht mehr DHCP anwenden meist den Namen des Servers nicht mehr automatisch in eine IP-Adresse umwandeln (localhost DNS) Abhilfe schafft beim MAC eine Änderung in der /etc/hosts-Datei. Im Terminal, direkt am Mac, im normalen Fenster ohne SSH-Einwahl:

sudo vim /etc/hosts

Dann unten erst die IP-Adresse des Servers eintragen und dahinter seinen Namen. Jetzt klappt das Einloggen in SSH wieder mit „user@servernamen„. Es kommt aber am Anfang eine Meldung, dass SSH diesen Servernamen mit der IP-Adresse so nicht kennt. SSH lässt aber ein Login trotzdem zu.

 

Wie schnell ist das Netzwerk, mit zwei gebündelten Mulitplex 1 Gb/s-LAN-Schnittstellen?

Mein Testordner hatte 10 GB und ca. 2.500 Dateien.

Wie schnell ist der Server und das RAID?

Vom Verzeichnis „/home“, das auf der Samsung-SSD liegt zum RAID 6 mit dem Adaptec Controller und zurück waren es folgende Werte:

SSD zu RAID 6 – 14,5 Sekunden = 690 MB/s Schreibgeschwindigkeit für das RAID
RAID 6 zur SSD – 13 Sekunden = 769 MB/s Lesegeschwindigkeit für das RAID

Wie schnell ist das Netzwerk?

Vom MacPro wurde derselbe Ordner einmal über das Netzwerk auf das RAID 6 geschrieben und einmal anders herum:

MacPro –> Netzwerk –> RAID 6 – 2 Minuten 41 Sekunden
RAID 6 –> Netzwerk –> MacPro – 2 Minuten 44 Sekunden

In Bytes und Bits

Eine Gigabit-LAN-Leitung sollte 1 Gigabit pro Sekunde machen. Da wir uns bei Leitungen auf der Hardwareseite befinden, die in Herz getacktet sind, ist damit ein Wert zur Basis 10 gemeint, also: 109 = 1.000.000.000 bit.
Auf der Software Datenseite rechnet man aber im dualen System also zur Basis 2 dies meint: 1 Gigabit = 230 = 1.073.741.824 bit.

Der Leitungsdurchsatz ist damit 109/230 = 0,93132 Gibit/s – zur Basis 2

Die kleinste adressierbare Adresse hat in der Computrtechnik 8 bit, weshalb man auf Softwareseite wiederum mit Bytes statt mit bits rechnet.

1 Gigabyte sind 8 Gigabit

Damit ist der theoretische Leitngsdruchsatz: 0,93132 Gibit/s geteilt durch 8 = 0,116415 GiByte/s oder 116,415 MiByte/s  (das zusätzliche „i“ steht für zur Basis 2).

Unser Testdatei hatte 10 GiByte (zur Basis 2).
2’40“ sind 160 Sekunden. Also 10 GiByte geteilt durch 160 Sekunden = 0,0625 GiByte/s oder 62,5 MiByte.

Eine einfache LAN-Leitung macht theoretisch 116,415 MiByte/s das sie gedoppelt ist müsste sie also theoretisch 232,83 MiByte/s machen.

Den tatsächlichen Durchsatz 62,5 MiByte/s geteilt durch den theoretischen von 232,83 MiByte/s macht 26,84%, das ist nicht greade üppig.
Es ist aber schwer nachvollziehbar, wo das Ganze, jenseits von normalen Protokollverlsuten und Overhead, hängt oder einen Engpass hat.

Es könnte der Mac-Client sein, der Switch oder die Serverkonfiguration. Hier gibt es noch Testbedarf. Ich freue mich auch über Anregungen und Tips!

 

X. Verschicken von Statusmeldungen per Mail

Einrichten eines Mail-Servers, so dass man Statusnachrichten durch Ubuntu verschicken kann

Die Ventilatoren pumpen, der 10 GB-LAN-Controller wird zu heiß, fail2ban hat jemandem ausgeschlossen, es gibt viele Stellen, an denen einzelne Servermodule Nachrichten verschicken können. Doch ohne Mail-Server gibt es keinen Punkt an dem die Nachrichten abgeschickt werden können.

Mit dem Programm „postfix“ kann man einen Minimal-Mailserver einrichten, der genau das macht, nämlich Statusmeldungen an eine vorgegebene Emailadresse verschicken.

sudo apt-get update
apt-get -fym install postfix

postfix einrichten

Email-Server Postfix nur für Systemnachrichten

Man wählt „Nur lokal“, damit wird ein minimales System installiert, das aber alle Mails nur lokal vorhält und auch nur lokale Mails akzeptiert. Diese könnten mit dem Programm „Mutt“ auch gelesen werden, was aber natürlich zu umständlich ist. Deshalb gibt es noch Zusätze.

Als Domainabsender kann eine beliebige Doamain-Adresse gewält werden, z. B. mein.datengrab.de

postfix-einrichten Doamain

Einen Domainnamen zuteilen.

Mails an Root nach außen weiterleiten

Um die Mails an Root nach außen zu leiten, muss die Konfiguration geändert werden, da es momentan auf „local“ begrenzt ist.

In der Datei „/etc/aliases“ trägt man die Zielmailadresse ein und für den Postmaster, der auch bestehen muss, ebenfalls:

sudo vim /etc/aliases
postmaster: meineNormaleEmail@meinNormalerAccount.de
root: meineNormaleEmail@meinNormalerAccount.de
ESC
:wq

Dem Mailprogramm mitteilen, dass es Änderungen gibt und diese auch übernommen werden!
sudo newaliases

Nun muss die Datei „/etc/postfix.main.cf“ angepasst werden:

Beim relayhost (Zielhost) müssen die eckigen Klammern bleiben! Bei meinem Provider muss vor den Domainnamen noch der Zusatz „mail.“ (mail.DOMAIN.de), dann musste ich die 587 angeben für eine verschlüsselte Verbindung und die nächste Zeile mit „smtp_tls_security_level = may“

sudo vim /etc/postfix.main.cf

myhostname = meinServer
mydestination = meinServer, localhost.localdomain, localhost

relayhost = [mail.meinNormalerEmailAccount.de]:587
smtp_tls_security_level = may

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl-passwd
smtp_always_send_ehlo = yes
smtp_sasl_security_options = noanonymous
#default_transport = error
#relay_transport = error

Um die Verbindung zu meinem Provider zu ermöglichen muss noch „SMPT-Submission“ eingerichtet werden, das den Versand über Port 587 ermöglicht.

Auskommentieren aufheben/Rauten # entfernen
in:
/etc/postfix/master.cf

sudo vim /etc/postfix/master.cf
submission inet n - - - - smtpd
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_relay_restriction=permit_sasl_authenticated,reject

Speichern und Service neu starten. Siehe unten.

Dann habe ich noch die libsasl2-modules installiert. Ob das nötig ist weiß ich nicht, es gab aber einen Hinweis im Netz.

sudo apt-get install libsasl2-modules-sql

Als nächstes müssen die Zugangsdaten über für den Server, über den die Emails versendet werden sollen eingegeben werden. Dafür müssen wir im Ordner „sasl“ eine „sasl-passwd“-Datei anlegen. Bei meinem Provider muss wieder „mail.“ vor den Domainnamen. (Der Ordner „sasl“ scheint neu zu sein früher lag die Datei „sasl-passwd“ direkt in „/etc/postifix“.)

/etc/postfix/sasl

sudo touch sasl-passwd
sudo vim sasl-passwd
mail.meinNormalerEmailAccount.de loginname:passwort
#ESC-Taste drücken
:wq

Aktualisieren der Datenbank mit den neuen Angaben. Es wird mit „postmap“ eine „.db“ Datei kreiert, die man genauso wie die ursprüngliche Datei gegen fremden Zugriff schützen sollte, da sie beide das Mailpasswort unverschlüsselt enthalten.

sudo postmap /etc/postfix/sasl/sasl-passwd
sudo chmod 0600 /etc/postfix/saslasl-passwd /etc/postfix/saslsasl-passwd.db

Momentan wird über einen externen Server eine Email mit dem Absender root@meinDatengrab.de versendet. Damit stimmen Absender-Account und Absenderadresse nicht überein und werden von den meisten Spamfiltern nicht durchgelassen. Deshalb muss jetzt noch die Absenderadresse mit der Adresse des eigentlichen Versandservers angeglichen werden.

sudo vim /etc/postfix/main.cf

canonical_maps = hash:/etc/postfix/canonical

Dann in der Canonical Datei:

sudo vim /etc/postfix/canonical
root myEmail@myForeingServer.de

Aktualisieren („postmap“) der Datenbank mit den neuen Angaben:

sudo postmap /etc/postfix/canonical

„postmap“ kreiert jedes Mal eine neue Datei mit der Endung „.db“ im selben Ordner.

Postfix neu starten:

sudo service postfix restart

oder

sudo /etc/init.d/postfix reload

Ich beziehe mich hier wieder auf den „Kofler“, aber es gibt auch direkt bei Postfix gute Angaben zur Konfiguration.

Mailversand testen

Am Eingabeprompt von SSH muss man zu „telnet“ wechseln:

telnet localhost 25
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail ESMTP Postfix
helo localhost
250 mail
mail from:testing@example.com
250 Ok
rcpt to:root
250 Ok
data
354 End data with <CR><LF>.<CR><LF>
Suject: Test von Thomas
Der Mailtext, der versendet werden soll.
.
250 Ok: queued as B58E141D33
quit

Achtung der Punkt am Ende muss alleine in einer Zeile stehen und gehört dazu! Er bedeutet Data-Ende.

Falls es Problem gibt kann man Postfix neu konfigurieren.
Aber Achtung es werden zuvor auskommentierte Angaben in „main.cf“ unten wieder neu eingefügt.

dpkg-reconfigure postfix

IPMI-Statuswarnungen aktivieren und über einen externen Mail-Server direkt verschicken

Im Gegensatz zu Linux braucht IPMI keinen zusätzlichen Mailserver. Wählt man sich über den IPMI-LAN-Kanal am Mainboard ein, so kann man dort Email-Server-Daten hinterlegen, damit bei Problemen eine Statusmail verschickt werden kann. Im Gegensatz zum Einrichten mit Postfix (für die Satusmails die vom Linux-System kommen), gibt es bei IPMI eine Testmailfunktion, was die Sache wesentlich einfacher macht.

 

IPMI Mails settings

Status Mails von IPMI verschicken – Achtung mit den Sonderzeichen im Passwort hier gibt es Beschränkungen!

Die Mails werden über einen externen Provider verschickt – in der Regel Ihr normaler Email-Account. Die Daten sind die gleichen, wie sie auch in Email-Programmen eingegeben werden müssen.

Achtung:
Bei mir ging es nicht, ohne dass ein klar ersichtlicher Grund vorlag. Mein Provider ist dann für mich die Logdateien durchgegangen und konnte erkennen, dass das Passwort immer abgelehnt wurde. (Es war Gott sei Dank nicht die Telekom oder sonst ein Verein mit grauenhafter Telefonhotline, sondern snafu in Berlin.) Das Passwort stimmte, nur hatte es ein paar Sonderzeichen z. B. ein „=“. Das führte wohl dazu, dass IPMI das Passwort geändert oder einzelne Zeichen ignoriert hat. Nachdem ich das Passwort vom Gleichheitszeichen befreit hatte, ging es plötzlich. Vielleicht lag es auch an der Passwortlänge, die bei IPMI auf 20 Bit beschränkt ist (siehe weiter oben unter IPMI).
Das sind Fehler, bei denen man endlos suchen kann! Danke an snafu und der Hotline, bei der ein Fachmann am Telefon sitzt und auch sofort den Hörer abnimmt – ohne Telefonvertröstungsanlage – boh ey!

Nachdem der Mailzugang bei einem externen Provider eingerichtet ist, kann man unter „Configuration – Alerts“ die gewünschten Benachrichtigungen einrichten.

 

IPMI Alerts

IPMI Benachrichtigungen einrichten. Die Destination-IP-Adressen-Nullen können ignoriert werden.

Hier kann man den Event einrichten und dann die Email-Adresse angeben. Klickt man im Menü zusätzlich auf „Help“, dann erscheinen rechtes Erklärungen. Die Destination-IP kann auf Null gelassen werden. Das Ganze speichern und dann per Knopfdruck: „Send Test Alert“, Testmail verschicken.

 

IPMI Test Mail

Test Mail um zu prüfen, ob alles funktioniert.

Email-Nachrichten über den Zustand des RAIDs verschicken

maxView-Storage-Manager verwaltet und erstellt nicht nur RAIDs sondern das Programm kann auch Statusmeldungen per Email verschicken. Man muss links die Ebene unterhalb von „Enterprise View“ auswählen, das ist der Name des Servers, und dann unter „System“ – „System Settings“ die Einstellungen vornehmen.

Hier ist der zweite Reiter: „SMPT“, in den die Daten für den Zugang zu einem externen Mailserver kommen.

maxView Statusmails verschicken

maxView Statusmails verschicken – einrichten von SMPT – Achtung es muss mit der IP-Adresse gearbeitet werden, nicht mit dem Namen!

Für den Server muss eine IP-Adresse ausgewählt werden, da es hier nicht unbedingt einen Zugang zu einem DNS-Server gibt. (Bei mir hat es nur mit der IP-Adresse funktioniert.)

Für „From Email“ am besten die eigene Mail eintragen, die auch auf dem Mailserver angemeldet ist, damit es nicht zu Spam-Verwechslungen kommt.

In einem zweiten Fenster kann man dann die Art der Statusmeldungen und die dazugehörigen Email-Adressen anlegen:

maxView Statusmails

Einer Email-Adresse die jeweiligen Meldungen zustellen.

Von hier aus kann man wiederumg Testmails verschicken.
Den Reiter Agent, der sich auf interne Meldungen bezieht, die man auch an Ubuntu schicken kann und den Reiter „Web Server“, der einen Port angibt, habe ich in den Voreinstellungen gelassen.

Anhand der zugestellten Testmail sieht es bei mir so aus, als ob das Programm Postfix für den Versand zum externen Server benutzen würde, da die angegebene „Event Source“ die Postfix-Serveradresse ist.

Tip:
Unter „Agent“ kann man auch den Tonalarm einstellen und nach dem Auslösen wieder abstellen!

 

XI. ungelöste Probleme

  1. Die Lüfter pumpen nach wie vor manchmal nach einem Neustart des Servers. Manchmal funktionieren sie aber auch normal. Supermicro hat dazu keinen Rat, außer dass man kleine laute Lüfter nehmen soll, die mit über 700 U/Min. drehen und dass nach 30 Sekunden ohne Strom IPMI zurückgesetzt wird. Für das Mainboard, mit der riesigen Heatpipe, könnte ich auf die Lüfter ganz verzichten, aber der Raid-Controller und vor allem der Controller für das 10 GB-LAN entwickeln doch ein wenig Wärme (siehe den Hardware Teil).
  2. Bei smb funktioniert die Browsing Funktion nicht. Wer ist hier der WINS-Server? Man muss sich am Mac immer mit „Mit Server verbinden …“ einwählen. Normalerweise müsste das System selbstständig die vorhandenen Freigaben erkennen. Seit ich von DHCP auf feste IP-Adressen umgestellt habe geht dies nicht mehr. Alle Hinweise aus dem Netz habe bisher keinen Erfolg gebracht.
  3. Mein Router erkennt seit ich feste IP-Adressen habe auch den Servernamen nicht mehr. Hier half ein händischer Eintrag in „/hosts“ am Client-Mac. Wie man am Router die DNS-Einträge verwaltet habe ich nicht herausbekommen.
  4. sFTP und „chroot“ geht nur wenn das „chroot-Verzeichnis“ innerhalb von „/home“ liegt. Wenn es außerhalb von „/home“ liegt geht es mit dem Linux-SSH-Server nicht. Als Ersatz, habe ich jetzt für unsere Hauptfiliale im Schwarzwald einen VPN-Kanal eingerichtet und ganz auf FTP verzichtet.

 

XII. Abschließende Betrachtungen

Misst man das Ergebnis an den Vorgaben, so war das Projekt erfolgreich.
Die Lärmentwicklung ist so minimal, dass sie weit unter dem Rauschen der leisen Bleibtreustraße in Berlin liegt und auch unter dem Rauschen der Heizung im Winter, ganz zu schweigen von normalen NAS-Servern, die man sich neben den Schreibtisch stellen kann. Der Lüfter im Netzteil dreht extrem langsam und die beiden anderen Lüfter liegen momentan bei 300-400 U/Min. Der Stromverbrauch des gesamten Systems reicht zwischen 40 Watt im Ruhezustand und 110 bis 130 Watt bei Volllast. Die Geschwindigkeit des Serves und des RAIDs sind perfekt, mit ca. 14 Sekunden für 10 GB und 2.500 Dateien (lesen 769 MB/s und schreiben 690 MB/s). Die Geschwindigkeit über das gebündelte LAN mit 2 Minuten 40 Sekunden für 10 GB ist ebenfalls akzeptabel. Der längliche Quader hängt als schönes Objekt in unserem 4K-Video-Postproduktionsbüro und ist ordentlich schwer, dazu noch fest mit der Wand verbunden, so dass er nicht so einfach von potentiellen Einbrechern mitgenommen werden kann. Der Kamineffekt, mit der aufsteigenden warmen Luft innerhalb des Quaders, funktioniert perfekt.
Was die Software betrifft, so ist dies natürlich ein Objekt stetiger Optimierungen und Aktualisierungen. Dadurch, dass die beiden Systeme, Betriebssystem und Raid-Controller mit den Daten, komplett getrennt sind, sehe ich hier eine gewisse Beständigkeit für den Datenteil, der von Eingriffen in Ubuntu nicht tangiert wird. Den Gesamtpreis habe ich noch nicht ausgerechnet, aber er liegt für 39 TB effektiven Speicherplatz (RAID 6 – zwei Festplatten können ausfallen) und den oben angegebenen Geschwindigkeiten, unter 5.000 Euro.

In manchen Anleitungen wird am Anfang ein Zeitumfang angegeben. Für mich kann ich sagen, für das stückweise Entwickeln, sowohl auf Hardware- als auch auf Softwareseite, sind einige Monate ins Land gegangen. Meine Freundin fand es sehr amüsant, dass ich an manchen Tagen jeweils zweimal zum Baumarkt und zweimal zu Conrad-Electronic gefahren bin. Ein Prototyp hat so seine Tücken, gerade dann wenn man nicht nur Bauteile zusammensteckt, sondern ein eigenes Konzept hat, für das man das eine oder andere Bauteil anpassen oder auch herstellen muss.
Serverbau, als die Gestaltung schöner Objekte, die keinen Lärm erzeugen und mit wenig Strom auskommen, hat meiner Ansicht nach in Zeiten von Home- oder Büro-Clouds eine Zukunft. Nicht jeder möchte seine Daten zum Auswerten nach Amerika schicken und dann über Windows 10 jeglichen Zugriff protokollieren und verwerten lassen.
Insgesamt habe ich eine Menge gelernt, vor allem über Linux und das Funktionieren von Computern an sich. Über Anregungen und Optimierungsvorschläge würde ich mich freuen!

 

News-Latest with the TYPO3 Extension „news“ respectively „tx_news“

Who has used the TYPO3 extension tt_news in the last decade, certainly has built some pages with a news-latest preview. After upgrading to TYPO3 8.6 and the new fluid-based extension „news“ it is getting more difficult to realize this feature, since there is no comprehensive instruction in the online manual.The German speaking reader will find a verbal exchange (including scolding) in the TYPO3-forum, that even the developer of the extension couldn’t settle or calm down and the outcome was not a proper manual. Link:  tx_news: Latest Ansicht- Wie? The argument of the developer is, that there is no sense in having „news-latest“, since it is the same like „news-list“ with less items. But the tricky point is, how to implement a new template that will reduce the listed items to the demands of a preview.Since I usually have my news-preview („news-latest“) in the footer of the webpage, the next question was, how to display news with TypoScript and without the news-plugin-module. And then how to choose a different template for this implementation.My examples are in TYPO3 8.6 and with news version 5.3.2:

a. Structure of the Templates

We have 3 levels: Layouts, Templates and Partials.
Inside the templates  is the function, that renders the partials – the final „news-elements“.

The folder structure from the extension is as follows:

Templates->News->List.html
Partials->List->Item.html

The Partial „Item.html“ consist of: date, headline, teaser, text … basically the news-message or news-element.
The Template „List.html“ is including/referring the partials (our news) and renders them.

So what we need to do is to built a new partial-html-file out of  „Item.html“, that we call „ItemLatest.html“, and where we put our DIVs and classes. And second, inside the Template „List.html“ a decision „if-it-is-latest“ then use the partial-file „ItemLatest.html“.

Aside:
The word „template“ is often used with different meanings. In a structure sense it is a part of the following:
Layout = the outer part of a webpage, like header and footer, that never changes
Template = the part that is inside the Layout and can change for different webpages
Partial = you can have multiple partials on one single webpage inside a Template

And the word is used also for a file, that includes the setup and code for each of the above structure elements:
Layout-Template-File
Template-Template-File
Partial-Template-File

b. Copy the Template-Files which comes with the extension

If you want to avoid that your changes of the Template-Files getting overwritten with every update you must copy them into the fileadmin. I use the same folder structure in the fileadmin as TYPO3 regulates for every extension. This makes things easier, since I always know what is where. See also my other blog post: Folder Structure in TYPO3.

The original files are here: typo3conf->ext->news->Resources->Private->Layouts or Partials or Templates

I copy the content to:
fileadmin->Resources->Private->Layouts->NewsLayouts->(here I have what was is in the Layouts-Folder of the extension, not the folder Layouts itself)
fileadmin->Resources->Private->Templates->NewsTemplates->
fileadmin->Resources->Private->Partials->NewsPartials->

To connect to the new template-files you need some TypoScript in your root-TypoScript-setup:
plugin.tx_news {
view {
templateRootPaths >
templateRootPaths {
0 = EXT:news/Resources/Private/Templates/
1 = fileadmin/Resources/Private/Templates/NewsTemplates/
}
partialRootPaths >
partialRootPaths {
0 = EXT:news/Resources/Private/Partials/
1 = fileadmin/Resources/Private/Partials/NewsPartials/
}
layoutRootPaths >
layoutRootPaths {
0 = EXT:news/Resources/Private/Layouts/
1 = fileadmin/Resources/Private/Layouts/NewsLayouts/
}
}
}

c. Changes in the copied Layouts, Templates and Partials

First we duplicate the file: fileadmin->Resources->Private->Partials->NewsPartials->Item.html and make the copy „ItemLatest.html„.
This is your new Partials-File that defines the news in the latest-view. Here you make your changes for DIVs and classes or just delete stuff you don’t need.

Second, you have to put a „if-then“ construction into the Template-File that calls the partials so it knows when to use which partial.

fileadmin->Resources->Private->Templates->NewsTemplates->News->List.html

You have to do it at two places in the code of List.html:

This part is deleted:

<f:for each="{news}" as="newsItem" iteration="iterator">
<f:render partial="List/Item" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
</f:for>

And replaced with this:

<f:for each="{news}" as="newsItem" iteration="iterator">
<f:if condition="{settings.templateLayout} == 9">
<f:then>
<f:render partial="List/ItemLatest" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
</f:then>
<f:else>
<f:render partial="List/Item" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
</f:else>
</f:if>
</f:for>

This part is deleted:

<f:for each="{paginatedNews}" as="newsItem" iteration="iterator">
<f:render partial="List/Item" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
</f:for>

And replaced with this:

<f:for each="{paginatedNews}" as="newsItem" iteration="iterator">
<f:if condition="{settings.templateLayout} == 9">
<f:then>
<f:render partial="List/ItemLatest" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
</f:then>
<f:else>
<f:render partial="List/Item" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
</f:else>
</f:if>
</f:for>

As you can see we created a if-condition in the code, that asks for an argument „settings.templateLayout == 9″ and then goes for the partial: partial=“List/ItemLatest“. Now we have to add a „setting.templateLayout = 9“ to our news element. (The number you can choose, doesn’t have to be „9“.)

d. Creating a news-element with TypoScript

The basic code comes again – with some small changes – from the news extensions documentation:

lib.news = USER
lib.news {
  userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
  extensionName = News
  pluginName = Pi1
  vendorName = GeorgRinger
  switchableControllerActions {
        News {
          1 = list
        }
  }
  settings < plugin.tx_news.settings
  settings {
        //categories = 49
        limit = 2
        detailPid = 11
        overrideFlexformSettingsIfEmpty := addToList(detailPid)
        startingpoint = 18
        templateLayout = 9
  }
}

We put the whole code in a „lib-variable“, so we can use it later in our FLUIDTEMPLATE for the whole webpage.

The last line creates the setting: „templateLayout =9“.

As we can see with „1 = list“, it is a list-template – in List.html we created before the if-condition.

„limit =2“ gives us maximum 2 news, „detailPid“ is the ID of the page with the single-news-view, „startingpoint =18“ is the news storage folder where our news are stored.

The setup of the FLUIDTEMPLATE for the webpage could look something like this:

(You will find many blogs dealing with FLUIDTEMPLATES.)

page.10 = FLUIDTEMPLATE
page.10 {
     template = FILE
     template.file = fileadmin/Resources/Private/Templates/mainTemplate.html
     partialRootPath = fileadmin/Resources/Private/Partials
     layoutRootPath = fileadmin/Resources/Private/Layouts
        variables {
           dceCont < styles.content.get
           txNews < lib.news
           rootlineNav < temp.rootlineNav
           socialNet < temp.socialNet
           metaNav < temp.metaNav
        }
}
 

And then in your template for the whole webpage – so it is displayed in the footer:

<article class="footerNews"><h2 class="outline">The News from tt_news 2 Items</h2><f:format.raw>{txNews}</f:format.raw></article>

 

e. What to do if you want to use a regular news-plugin element

If we want to put the latest news somewhere in the normal content, we must tell the news-content-plugin that it has the setting number 9. Therefore we must give number „9“ a name in the root-page of your TYPO3-page-tree: /right-click on the root page/ edit->Resources->Page TSConfig:

tx_news.templateLayouts {
9 = ItemLatest
}

Now you can select ItemLatest in your news-plugin:

Plugin->Plugin Options->Template->Template Layout

different templates in the news-plugin

Since I have all my TypoScript code in a file, to put TS directly in the root-page is not so flexible, while going from one to the next webpage. If someone has a solution how to do it with simple TS, please leave a note in the comment section.

 

Additional information, added later on

In my TYPO3 master installation and basic layout for all websites, there is, in combination with Dynamic Content Elements, the need to add for every content element – including news – some wrapper-classes and sourrounding DIVs. This code must be inside the template-template-file, since it should not be repeated with every single news-element. In the footer latest-news though this DIVs and classes are disturbing, so there is an additional if-condition that has to go into the template-template-file.

fileadmin->Resources->Private->Templates->NewsTemplates->News->List.html


<f:if condition="{news}">
<f:then>
<f:comment>The wrapper-class only for not-latest</f:comment>
<f:if condition="{settings.templateLayout} != 9">
<div class="news-list-container wrapper clearfix">
<div class="center">
</f:if>
<div class="news-list-all">

A second possiblity would be to call a different list-template (List2.html). Maybe the developer of the news extension can help with this topic, or some easy calling of different templates in combination with different partials.
 
 
If you have any improvements, please leave a comment!

 

Dieser Artikel ist  in Englisch, nicht um Ihnen das Leben schwer zu machen, sondern um den Autoren weltweit etwas zurückzugeben, die mir auch tagtäglich mit ihren Artikeln helfen!

Autor: Thomas Hezel

DCE pass on – how to reuse DCEs in TYPO3

The zazu-TYPO3-concept

Here at zazudesign in Berlin DCEs or Dynamic Content Elements got the main extension, that we use in combination with TYPO3. Since the basic structure of the extension TemplaVoila! was outdated, there was only the not so flexible concept of backend layouts to replace it.

Dynamic Content Elements makes it finally possible to code your own little backend modules, so the later user can easily change content, without interfering with the basic structure of a webpage.

In short: make a template, put variables at the places where the content should be placed and then use TYPO3s internal skills to create backend forms, to fill the variables with content – that’s it. Of course going into detail, there is much more behind it and much more it can do – a key word is here view-helpers.

In times of responsive web development this little modules need their own little intelligence, basically a clear CSS driven behaviour for different screen seizes.  So a developer has to create the input fields, the templates with variables and view-helpers and a bunch of CCS instructions. In other words you have to put a good amount of time and effort in it. In consequence one must find a way to pass on the DCEs from one TYPO3 installation to another. Better not one DCE, but your little collection, that you developed over time and you are ready to reuse in your basic setup, as an easy and proven installation to start from.

Structure makes work faster especially with a content management system

The folders

If you want to find your slider pictures or your TypoScript text files always at the same place, it is essential to use the same folder structure in all your TYPO3 installation. For the zazu-concept I basically took the structure and rules of the TYPO3 extension development and used it in the fileadmin. So experienced developers will already know where to find what:

 

  • fileadmin
    • Configuration
      • TypoScript
        • root.ts
        • news.ts
        • contact.ts
    • Resources
      • Private
        • Layouts
          • main-layout.html
        • Partials
        • Templates
      • Public
        • Downloads
        • Ext
          • Fotorama-4.6.
        • Fonts
        • Icons
        • Images
        • JavaScript
        • Styles
          • all.css
          • normalize.min.css
There are some rules about nomenclature:

a. folders always have a upper case letter at the beginning
b. files always have a lower case letter at the beginning
c. files that you want to be indexed by google (e.g. pictures) use hyphens (e.g. me-myself-and-i.jpg)

There is a big exception in this rules, „fileadmin“ itself and it’s surrounding folders are lower case.

Inside the folders you can have more folders e.g. inside Partials could be a folder with the „Powermail-Partials“, that you take along, and point to it, instead of the partials, what come with the extension and get overwritten with every update. In the Ext-folder I put everything (JavaScript, CSS, unique icons) that comes with jQuery extensions like Fotorama, just to make updates easier. Not so consistent is TYPO3 with singular and plural that gives me confusion from time to time. Usually it is plural like „Layouts“ but with „JavaScript“ it is singular for some reason. If you want to be stringent in your system go for plural.

Inside the „fileadmin“ folder there are two folders that are created by TYPO3, that is „_processed_“ and „_temp_“, if they are missing the install tool will give a warning and will help you to create them.

The folder „uploads“, that is on the same level as „fileadmin“, is also created by TYPO3 and hosts for example icons that you use inside a TYPO3 extension, so this folder also have to come along to your next website.

Steps to do, from a master project to at a new project

  1. create a master installation that has only placeholder content with all your DCEs
  2. update your master installation and all your extensions
  3. empty all caches, go through „Important Actions“ in install tool
  4. download your „fileadmin“ and „uploads“ folders
  5. make a database dump
  6. install TYPO3 on the new webspace for your new project
  7. install your standard extensions (in my case: dce, realurl, powermail, news, sourceopt, metaseo)
  8. overwrite the „fileadmin“ and „uploads“ folders with your folders from the master project
  9. run install tool „Important Actions“
  10. if you stay on the same TYPO3 level and extensions versions , you can import the complete database dump from your master installation
  11. run install tool „Important Actions“ again
  12. do a „DB check“ (button left side bottom in TYPO3)

A clean installation

TYPO3 was going lately through a lot of changes, so sometimes you don’t want to take along some old stuff (wrong relations m:n, NOT Null problems) in your database and prefer to start with a clean setup. In this case you can just use phpMyAdmin to export only the DCE related tables of the database from your master installation and import it in your new project, instead of importing a complete database dump.

The database tables that contain the DCE-information
Export only the DCE-tables
  • open phpMyAdmin (in most cases in the control center of your webspace provider)
  • go to „Export“, choose the option „custom or options“ („angepasst-zeige alle möglichen Optionen an“)
  • mark the tables „tx_dce_domain_model_dce“ and „tx_dce_domain_model_dcefield“
  • if you want you can save your choise as a pattern („Vorlage“)
  • export the tables to a file xxx.sql
DCE export with phpMyAdmin
Import the file
  • go to your new projects database inside phpMyAdmin
  • delete the tables „tx_dce_domain_model_dce“ and „tx_dce_domain_model_dcefield“
  • click „import“ and import your little database dump with the to tables you want to import
  • go to the TYPO3 backend, now you should see all your DCEs in the DCE-menu
What you miss

Now you miss your complete page-tree, that you have to create again, with all sys-folders for news, powermail, backend templates and so on. You also have to adjust your TypoScript to the new page ids and storage folder ids.

What I allways forget

Don’t forget to add the static templates to the root of your page-tree. If you see funny yellow stripes instead of a DCE-output then you didn’t include some static templates. (DCE doesn’t have a own static template but seems to be affected by the others.)

The new template „content element (fluid_syled_content)“ didn’t cover all backend functions of the DCE but I think the developer of DCE, Armin Vieweg, fixed it with one of the last updates (dce 1.4.2). Worst case you can run it together with ccs_styled_content.

CSS and DCE: how to connect specific CSS-blocks to a specific DCE

As mentioned above it is essential that each DCE gets its responsive CSS. The basic concept is to check the size of your browser screen with media queries.

In the template file of the DCE I put a „div“ outside the whole DCE-template and give it a class=“dxx“ with „xx“ for the DCE number of my collection.  2 columns divs start with „2“, 3 columns divs start with „3“.

Then I make my media queries for each DCE!

This seems to be a lot of checking but I couldn’t find any speed difference against having the media queries only ones in the whole CSS-file. Now each CSS instruction starts with „.dxx“ and therefore gives the DCE it’s unique behaviour.

If a DCE should have some different features on a specific page you should add a page count to the body-element (with TypoScript) of your web page and put it at the beginning: #page3 .d22 {background-color: pink;}

Now the CSS can travel directly (copy and paste) with it’s corresponding DCE and be reused in every setup!

Example CSS-code for the DCE with the class=“d22″:

/*DCE 22 - 2 columns text plus image*/
/*======= 320-NO Query === mobile first ======= border 5  = 310 ===*/
.d22 {
margin-bottom: 2em;
}
.d22 img {
width: 100%;
height: auto;
}
.d22 .colLeft {
margin-bottom: 2em;
}
/*======= 480 ========= MEDIA QUERIES ======= border  6 = 460 ===*/
@media only screen and (min-width: 480px) {
}
/*======= 760========= MEDIA QUERIES ======== border 16 = 728 ===*/
@media only screen and (min-width: 760px) {
.d22 .colRight {
float: left;
width: 45.74175824175824%; /*333px/728px*/
}
.d22 .colRight {
margin-left: 8.516483516483516%; /*62px/728px*/
}
}
/*======= 960 ======== MEDIA QUERIES ======== border 22 = 916 ===*/
@media only screen and (min-width: 960px) {
}
/*======= 1254 ======= MEDIA QUERIES ======== border 28 = 1198 ==*/
@media only screen and (min-width: 1254px) {
}
/*======= 2512 ======= MEDIA QUERIES ==== border 151-45 = 2396 ==*/
@media only screen and (min-width: 2512px) {
}
/*END-DCE 22*/

Avoiding to many server requests

At the end I clean up the code from all empty media queries and put it through a minimizer programme. After that I put all CSS (jQurey extensions, normalizer, my-css) together in one file. With TypoScript I enable then compression.

That’s it!

 

Outlook

Armin Vieweg is the developer of the DCEs. As a lonely hero it’s a lot of work to follow all updates of TYPO3 and keep the extension running with the newest TYPO3 versions. So, please don’t forget to donate!

Additional features I would like to have

One concept for the future could be to have the CSS handled directly by the DCE extension. So like the „template-tab“ you also have a „css-tab“ in the backend. DCE could than put all single CSS-parts together in one file that goes in a folder of your choice – even remove empty media queries and minimize the file.  You could then put it in a all-css-file by hand and include that one in your page setup.

The database export of the DCE tables and the import could be handled inside DCE, instead of using phpMyAdmin. „Export all DCE tables to a sql-file“ and „Import DCE tables from a sql-file“ – option: „add to existing DCEs“ and „overwrite existing DCEs“.

May be even exporting single DCE-database-entries and import them – this could be the beginning of a DCE-share-platform with uploaded screen-shots, sql-files and corresponding CSS.

Will see what Armin will comment on this 🙂

 

Dieser Artikel ist  in Englisch, nicht um Ihnen das Leben schwer zu machen, sondern um den Autoren weltweit etwas zurückzugeben, die mir auch tagtäglich mit ihren Artikeln helfen!

 

Autor:

HP-Netzwerk-Switch und Drucker Probleme

Bei den meisten Netzwerkdruckern wird bei der Einrichtung empfohlen das „Line Printer Daemon Protocol – LPD“ zu verwenden. Das Protokoll wurde ursprünglich für UNIX entwickelt und wird deshalb vor allem für den MAC empfohlen, da dieser auf einer UNIX-Plattform aufbaut. Bei der Einrichtung meines Canon Netzwerkdruckers wurden allerdings die Spooling-Dienste, also die Ausgabe der Druckdateien blockiert. Das reine Einrichten des Druckertreibers hat allerdings funktioniert. Nach langem Suchen und auch einigen Versuchen beim HP-Support, haben wir herausgefunden, dass es am Switch lag, der das „LPD-Protokoll“ blockiert hat. (Das IPP Internet Printing Protocol hat funktioniert.)

Das Problem liegt in den DoS-Attack-Einstellungen, die ziemlich mißverständlich sind.

ACHTUNG:

Die Storm Control ist zwar aus, aber die Auto DoS Features sind immer noch an, obwohl es nicht den Anschein hat!

Invalid TCP Flags Attack ist der Bösewicht, der das Ganze blockiert!

Bild oben: So funktioniert das LPD-Protocol nicht!

 

So funktioniert das LPD-Printing-Protocol auch beim HP-Switch:

 

So funktioniert das LPD-Line-Printer-Daemon-Protocol auch mit dem HP-Switch

 

Autor:

Kameratest Sony FS7 versus Sony FS5

Die Frage, die sich uns stellte war, kann man eine Sony PXW-FS5 als zweite Kamera neben einer Sony PXW-FS7 benutzen? Bei Interviews wäre es gut mit einer Kamera die Großaufnahme zu machen, und mit der zweiten Kamera eine totalere Einstellung.

Die Antwort ist schlicht und einfach: NEIN

Zu den Details:

Die FS7 wird von uns in der Regel im S-Log3 Modus, mit folgendem Codec betrieben:
XAVC-I-Mod.: HD 50p VBR, max. Bitr. 185 Mbit/s, MPEG-4 H.264/AVC
Dies ist ein „Intra-Codec“ d. h. es wird nur innerhalb eines einzelnen Bildes komprimiert, nicht aber über mehrere Bilder hinweg (Long-Gop).

Die FS5 bietet etwas ähnliches wie S-Log3, es nennt sich hier Modus 8 und ist wahrscheinlich eher so etwas wie ein „Picture Style“.
Als Codec kann man wählen zwischen einem 4K-Codec mit  100 Mbit/s und einem HD-Codec mit 50 Mbit/s. Beim 4K-Codec kommt man nur auf 25 Vollbilder pro Sekunde, was zu etwas ruckeligen Bewegungen führen kann, beim HD-Codec schafft man 50 Vollbilder pro Sekunde:

XAVC QFHD (3.840 x 2.160) bei 29,97p, 25p, 23,98p, 100 Mbit/s/60 Mbit/s

XAVC HD (1.920 x 1.080) bei 59,94p, 50p, 50 Mbit/s/35 Mbit/s

Die Erwartung war, dass der 4K-Codec heruntergerechnet auf HD, durch die Bitrate von 100 Mbit/s eine bessere Bildqualität ergibt, als der HD-Codec mit lediglich 50 Mbit/s, die dafür etwas ruckeligeren Bewegungen würde man dafür in Kauf nehmen. Beide Codecs der FS5 sind Long-Gop-Codecs, d. h. sie komprimieren nicht nur innerhalb eines einzelnen Bildes, sondern  über mehrere Bilder hinweg. Dabei wird nicht immer ein ganzes Bild gespeichert, sondern nur die Teile eines Bildes, die sich zum vorangegangenen Bild hin unterscheiden. Nach einer gewissen Anzahl von Bildern kommt dann wieder eine ganzes Vollbild.

Sony FS5 mit eingeschränkten Möglichkeiten.

Ergebnis

Das Ergebnis war dann doch ziemlich ernüchternd. Auf dem folgenden Foto haben beide Kameras die gleiche Blende und benutzen das gleiche Objektiv von Canon (24-70 mm  f 2.8 Zoom):

Sony FS5 versus Sony FS7 Auflösungsvergleich: links die FS5 mit dem erhöhten Rauschen, rechts die FS7. Bitte auf das Bild KLICKEN um den Unterschied besser zu sehen!

Wenn man das Bild auf seine Orginalgröße vergrößert, sieht man das starke Griseln im Hintergrund und auch ein starkes Rauschen in den Schwarztönen, obwohl sie schon auf dem Wavemonitor ganz unten liegen, also zum vollen Schwarz hin tendieren müssten.

Erstaunlicherweise hatte auch die 4K-Aufnahme, auf HD verkleinert, den selben Effekt und war nicht von der HD-50 Mbit/s-Aufnahme der FS5 zu unterscheiden. Das FS7-Bild auf der rechten Seite sieht dagegen sauber und glatt aus. Hier spielen die 185 Mbit/s und die Intra-Frame-Kodiereung, zusammen mit dem echten S-Log3, ihre ganze Stärke aus.

Für ein normales TV-Interview kann man die FS5 sicherlich als zweite Kamera neben der FS7 benutzen. Wir sind aber meist in Afrika unterwegs, mit dunkelhäutigen Menschen in der grellen Sonne oder vor extremen hellen Hintergründen, da wird es nicht nur mit einer Beta-Cam sondern auch mit der FS5 sehr problematisch. Zudem werden unsere Filme auch bei Veranstaltungen gezeigt, d. h. auf großen Bildschirmen, wo dann das Rauschen der FS5 extrem unangenehm auffallen würde.

Mein Fazit

Lieber etwas mehr Geld ausgeben und mit zwei Sony FS7 reisen, zumal der Preisunterschied im Einkauf der Kameras, mit 6.000 Euro für das Gehäuse der FS5 und 7.500 Euro für das Gehäuse der FS7 nicht so groß ist. Die FS5 ist bei dieser Qualität auch einfach viel zu teuer.

Autor: Thomas Hezel

 

 

 

 

 

 

 

Dreharbeiten, filmen in Ghana

Montag Morgen, an einem kalten Tag im Januar, die Botschaft Ghanas, am Ende der Schönhauser Allee in Berlin, ist zum Bersten voll. Ghana scheint ein beliebtes Land zu sein. Allerdings warten die meisten Anwesenden am Schlater für Passangelegenheiten und nur wenige am Visaschalter. Nach Angaben der englischsprachigen Dame brauchen wir für die Dreharbeiten in Ghana lediglich eine Presseakkreditierung und die normalen Online-Visa. Ich bekomme nach einiger Wartezeit ein kopiertes Formular für die Presseakkreditierung.

Die Presseakkreditierung über die Botschaft einzuleiten dauert, so wie es aussieht, allerdings eher Wochen als Tage. Alle Visa für das Drehteam können aber nur mit der Vorlage der Presseakkreditierung beantragt werden.

Im Internet finde ich einen sogenannten „Fixer“ in Accra:

Sulley Lansah
+233 545067569
+233 302767198
sule223@gmail.com

Er reagiert auf meine Mail innerhalb von einer Stunde und versichert mir, dass bei Vorlage aller Unterlagen, er eine Akkredietierung beim Ministerium für Information innerhalb eines Arbeitstages beantragen kann. Ich bekomme von ihm eine pdf-Vorlage zur Presseakkreditierung zugeschickt, die sich geringfürgig von der unterscheidet, die mir die Botschaft mitgegeben hat. Da ich schon mit der Vorlage der Botschaft begonnen habe benutze ich diese. Für jedes Mitglied des Filmteams muss ein Formular ausgefüllt und unterzeichnet werden. Zudem will er gescannte Passbilder und auf einem offiziellen Briefpapier der Filmproduktion eine genaue Angabe über die geplanten Dreharbeiten plus eine Equipmentliste mit den Seriennummern aller Geräte. Angeblich sind die Seriennummern wichtig, um bei Diebstahl oder Verlust nachweisen zu können welches Gerät gestohlen wurde.

Da ich schon die Einladung unseres Drehortes in Ghana (Universität von Ghana) habe, lege ich auch diese bei.

Die Formulare für die Akkreditierung habe ich als PDF in Indesign hinterlegt und dann ausgefüllt und die Unterschriften gescannt darunter gepackt.

PRESSEAKKREDITIERUNG

  • Passbilder gescannt
  • Brief auf offiziellem Papier der Filmproduktion mit genauen Angaben über die geplanten Dreharbeiten
  • ausgefülltes und von jedem Mitglied des Drehteams ausgefülltes Formular (bei der Botschaft erhältlich)
  • Equipmentliste mit Seriennummern und genauer Gerätebezeichung plus Wert der Geräte
  • (Einladungsschreiben des Drehortes in Ghana)
  • Kosten 90 USD pro Person (Januar 2016)

Auf der Seite der deutschen Botschaft in Accra findet man ebenfalls Angaben zur Presseakkreditierung und zu Dreharbeiten in Ghana:

http://www.accra.diplo.de/Vertretung/accra/de/07_20Kultur/Hinweise_20f_C3_BCr_20Journalisten/seite__journalisteninfo.html

Hier wird noch darauf hingewiesen, dass es trotz erfolgreicher schriftlicher Akkreditierung erforderlich ist, nach Ankuft in Accra, direkt beim Informationsminister persönlich vorzusprechen, um so die Akkreditierung abzuschließen. Dafür sollte man vorab einen Termin beim Ministerium buchen.
Diesen Schritt erledigt für uns Suley, da er dort wohl bekannt ist und seine Kunden das persönliche Vorsprechen erspart.

Für die Drehgenehmigungen vor Ort, schreibt mir Suley, dass er auch diesbezüglich behilflich sein kann. Falls Drehorte noch gesucht werden, könne er auch welche vorschlagen. Da wir lediglich an der Universität drehen, regelt dies jedoch die Fakultät für uns. Aber auch dies funktioniert „afrikanisch“, also mit sehr viel Respekt vor der Universitätsobrigkeit und klappt erst in letzter Minute.

Visum für Ghana, besser vor Ort bezahlen!

 

2-SCHRITTE-VISA:
ON-LINE-BEANTRAGUNG UND OFF-LINE-VERVOLLSTÄNDIGUNG

ONLINE

Jeder Visumantrag für Ghana beginnt auf der Online-Plattform der Botschaft. Man kann den Antrag auch beginnen und sich dann mit der Antragsnummer später wieder einloggen und weitermachen.

Es empfiehlt sich die Anweisungen sehr genau durchzulesen und zu beachten. Besonders amüsant sind die Angaben für die hochzuladenden quadratischen Fotos (Achtung kein biometrisches Passbild). Die Botschaft möchte einen neutralen Hintergrund und gibt dann das Speicherformt vor, die Pixelgröße, den Farbraum, die Kompressionsstärke etc. Wer sich mit Photoshop gut auskennt, für den ist dies sicher kein Problem (jpg mit weniger als 20:1 Kompression, sRGB, Pixelgröße etc.), für alle Anderen empfiehlt die Botschaft sich doch lieber gleich an einen professionellen Fotografen zu wenden und warnt, dass bei Fotos mit falschen technischen Spezifikationen der Antrag abgelehnt wird.

Zu beachten ist auch, dass nach zwei Einladungs-/Ansprechpartnern in Ghana gefragt wird, die jeweils mit einer Ausweiskopie ihre Identität bestätigen müssen. Ich habe zwei Universtitätsprofessoren angegeben, jedoch ohne Ausweiskopie. Dieses Vorgehen hat funktioniert, da es sich um Personen einer Institution und nicht um Privatpersonen handelte.

Scannen und hochladen muss man Folgendes:

  • Foto
  • Einladungsschreiben aus Ghana
  • Bestätigung/Beschreibung ausgestellt von der Filmproduktion auf offiziellem Papier (hier immer reinschreiben, dass die Firma alle Kosten für Unterkunft, Verpflegung und Transport übernimmt)
  • Flugplan/Tickets
  • Kopie Pass
  • (Bei mir noch Bescheinigung des deutschen Auftraggebers.)

OFF-LINE

Nach erfolgreichem Abschluß des Online-Antrages druckt man diesen aus und geht mit den ganzen Unterlagen (die zuvor schon hochgeladen wurden, plus dem Pass) zur Botschaft.

Nun gibt man den Antrag ab und kann, je nachdem was man beantragt hat, beim Schnell-Visum angeblich nach 3 Tagen und beim Normal-Visum in 1-2 Wochen mit einer abschließenden Bearbeitung rechnen. Man bekommt – manchmal aber nicht immer – eine Email oder eine SMS, die einem zur Abholung des Passes auffordert. Ansonsten kann man den Bearbeitungsstand auch online einsehen.

ACHTUNG

Auf der Online-Plattform steht, dass die Bezahlung für die Visumgebühr nur auf das Konto der Botschaft Ghanas bei der Deutschen Bank erfolgen kann. DIES IST FALSCH! Alle professionellen Visaagenten bezahlen bar am Schalter bei der Botschaft in Berlin. Bis meine Banküberweisung im Visasystem sichtbar war, dauerte es eine Woche, obwohl das Geld laut Aussage der Deutschen Bank schon am selben Tag auf dem Konto der Botschaft eingetroffen war.

Mein Schnellvisa für 100 Euro, das eigentlich innerhalb von 3 Tagen hätte ausgestellt werden sollen, wurde so erst nach einer Woche bearbeitet. Bei meiner persönlichen Nachfrage bei der Botschaft sagte die Bearbeiterin, dass sie das Geld noch nicht im System sehen würde und mein Antrag deshalb auch nicht bearbeitet würde. Ich war schon kurz davor doppelt zu bezahlen, als es dann, einen Tag vor Abreise, doch noch klappte.

ZOLL

Ghana gehört NICHT zur ATA-Carnet-Gruppe und erfordert deshalb besondere Zollformularitäten bei der Einreise mit einer professionellen Filmausrüstung.

Im Grunde funktioiert dies in Afrika eigentlich immer gleich:
Entweder man hinterlegt eine Sicherheit (in der Regel 20% des geschätzten/wahren Equipmentwertes), die man zwar zurückfordern kann, aber in der Regel nie wieder sieht oder man findet jemandem, der für die vollständige Wiederausfuhr des Equipments bürgt. Ein sogenannter „Custom Bond“ wird meist von Speditionen gegen eine Gebühr ausgestellt.
Die Alternative ist stundenlanges Verhandeln bei der Einreise mit einem Zöllner (bei mir waren es meist resolute Damen, unterstützt von mehreren Gehilfen),  um den Preis für die sogenannte „Hinterlegung“, die man jedoch nie wieder sieht, auszuhandeln. Das begann dann z.B. in Tanzania bei 20.000 bis 30.000 USD und endete nach 3 Stunden bei 2.000 USD, die ein schnell herbeigerufener Jugendfreund der Zöllnerin, der zufüllig eine Spedition betreibt, als „Bond-Gebühr“ ohne Quittung in seine Tasche steckte.

In Ghana erledigte die „Bond-Formalitäten“ Suley gegen eine Gebühr von 200 USD für zwei Filmausrüstungen, die an zwei verschieden Tagen ins Land kamen und mit einem Wert von 6.000 USD und 9.000 USD als Gebrauchtgeräte angegeben waren (ungefähr 15% des tatsächlichen Wertes).

Bei der Einreise am Flughafen in Accra geht man nach dem Gepäckband durch zwei Reihen von Zolltischen, an denen die Koffer kontrolliert werden. Ich war schon an allen Tischen vorbei, als am Ende die „übliche“ resolute Dame meinen Alukoffer entdeckte und mich zu sich an den Aufsehertisch beorderte. Sie legte zusammen mit ihren Gehilfen dann auch sofort los und als sie das Wort „Filmausrüstung“ hörte ,verlangte sie nach der Kaution oder einem „Custom-Bond“. Suley wollte mich zwar abholen, wartete aber draußen. Ich gab einem der Zöllner die Telefonnummer, worauf er Suley anrief und ihm durch die Eingangskontrolle half. Suley hatte die entsprechenden Papiere, die er schon beim Zoll am Nachmittag abgestempelt hatte. Es musste noch ein Formular ausgefüllt werden, dann war ich durch und erfolgreich in Ghana eingereist.

Als der Kameramann zusammen mit dem Tonmeister mit der zweiten Ausrüstung einreisten, waren alle Zolltische leer und weit und breit keine Zöllner zu sehen. Allerdings war es Sonntagnachmittag.

KOSTEN

  • Presseakkreditierung (über den Fixer) pro Person 90 USD
  • Schnell-Visa pro Person 100 €
  • Zoll („Custom Bond“) 200 USD
  • Gage Fixer 400 USD
  • Minibus mit Fahrer über den Fixer pro Tag 120 USD

Ich habe dem Fixer Sulley Lansah gleich bei meiner Ankuft die komplette Summe, auch für das Team und den Minius vorab ausbezahlt. Das war ein kleines Waagnis, aber es hat mit gutem Vertrauen funktioniert.

 

Auch die schönste Reise beginnt mit den Formalien auf der Botschaft. Afrikanische Botschaften lieben Papier – viel Papier – und am besten mit schönen buten Stempeln.

 

Accra hat auch schöne Seiten, nur ging es hier um Entwicklungsprojekte, die natürlich genau dort ansetzen, wo es eben nicht ganz so schön ist. (Björn Geldermann – Ton, Peter Armin Petrides – Kamera, Ghana 2016 – für zazudesign – die Schwarzwald Werbeagentur in Berlin)

 

Autor: