ArchivstaDom mit 10 TByte

Private Medienarchive für das kleine Budget

Egg, 12. Januar 2020: Im heutigen Blog geht es etwas familiär zu und her, denn es gibt einen Einblick in den privaten Bereich. Konkret geht es um ein privates Medienarchiv, welches in den letzten beiden Monaten enstanden ist. Dazu passend gibt es die neue Box ArchivistaDom. Diese neue Medien-Lösung bietet für solide 1190 Franken immerhin 10 TByte Speicherplatz. Und wer lieber noch etwas mehr möchte, für 1490 Franken gibt es das gleiche Gerät mit 14 TByte. In der neuen ArchivistaDom enthalten ist ArchivistaDMS in der Ausbaustufe Rigi, mit der bis zu 30’000 Dateien verwaltet werden können.

Darum braucht und gibt es ArchivistaDom

Vor einigen Jahren war geplant, das private Medienarchiv mit Kodi zu realisieren. Das Interface ist grafisch sehr ansprechend gehalten, die Bedienung ist einfach und der Zugang lässt sich mit Konten regeln. Bald schon musste festgestellt werden, Kodi bietet (von Ordner- bzw. Dateinamen abgesehen) keine Möglichkeiten, die Inhalte zu beschlagworten. Wenn z.B. gewisse Filme nur Kindern zur Verfügung gestellt werden sollen, so mussten dafür eigene Ordner erstellt und zugewiesen werden. Kurz und gut, so schön und schick Kodi aussieht, so unpraktisch ist und bleibt das Handling beim Aufbau eines Medienservers.

Mit der Zeit reifte der Entschluss, dafür ArchivistaDMS zu verwenden. Ende Oktober 2020 war es soweit, die ArchivistaBox verfügte sowohl über einen interen Video- aus auch Audio-Player. Zunächst einmal ging es darum, die privaten DVDs und CDs zu erfassen. Für die DVDs wurde makemkv verwendet, für die Audio-CDs Asunder im Zusammenspiel von gnudb.org.

Erfassen von “Altbeständen”

Makemkv liegt zwar erst in einer Beta vor, doch konnten alle je erworbenen DVDs eingelesen  werden. Wichtig zu erwähnen ist, dass nur Kopien für dne Privatgebrauch erstellt werden dürfen, siehe dazu https://praxistipps.chip.de/kopiergeschuetzte-dvds-legal-kopieren_29960Die erstellten mkv-Dateien sind sehr gross, sie können mit dem nachfolgenden Skript in eine MP4-Datei umgewandelt werden:

#!/usr/bin/perl
use strict;
my @folders = <./*>;
foreach my $folder (@folders) {
my @files = <$folder/*.mkv>;
foreach my $in (@files) {
  next if -d $in;
  my $out = $in;
  $out =~ s/\//_/g;
  $out =~ s/^(\.\_)//g;
  $out =~ s/(.mkv)$/.mp4/g;
  my $cmd = "ffmpeg -i \"$in\" -map 0:v -map 0:a ".
    "-disposition:a:0 0 -disposition:a:0 default -c:v libx264 \"$out\"";
  my $res = system($cmd);
  print "$res=>$cmd\n";
 }
}

Wem der “Konsolenansatz” zu kompliziert ist, kann alternativ auch VLC verwenden. Das Erfassen der Audio-CDs ist mit ASunder einfach. CD einlegen, ASunder sucht in der Online-Datenbank gnudb.org nach den passenden Titeln und findet diese meist auch. Sollte dies einmal nicht der Fall sein, so können die Dateien manuell beschlagwortet werden. Die erstellten Dateien können anschliessend in den Office-Ordner von ArchivistaDMS kopiert bzw. automatisiert eingelesen werden.

Inhalte ab dem Internet

Die Tools MediathekView und JDownloader bzw. MP3toCD wurden bereits im letzten Jahr vorgestellt. Um aktuelle Filme aufzuzeichnen, wurde vorliegend der Streaming-Dienst wilmaa.ch verwendet. Damit können Inhalte einiger Hundert Sender aufgezeichnet und auf die lokale Festplatte kopiert werden.

Da bei vielen Privatsendern Spielfilme oft unterbrochen werden, empfiehlt sich LossLessCut, um die Werbung zu entfernen. Daneben gibt es ein weiteres kleines “Problemchen”. Die Dateinahmen bei Wilmaa.ch beginnen mit Datum und enthalten Unterstriche, erst danach erfolgt der Titel der Sendung. Für die Sortierung auf der Festplatte ist dies ideal, für den späteren Import bzw. ein einfaches Suchen weniger. Darum wurde ein zweites Skript erstellt, dass die Dateinamen “veredelt” in die Titelzeile kopiert.

#!/usr/bin/perl
use strict;
use lib qw(/home/cvs/archivista/jobs);
use AVJobs;
my $db = "moviestar";
my $titel = "";
my $subtitle = "";
my $thema = "";
my $dbh = MySQLOpen();
if ($dbh) {
  if (HostIsSlave($dbh)==0) {
    $dbh->do("use $db");
    my $sql = "select MediaName,Laufnummer from $db.archiv ".
      "where Titel is null or Titel=''";
    my $prow = $dbh->selectall_arrayref($sql);
    foreach my $prow1 (@$prow) {
      $titel="";
      $subtitle="";
      $thema="";
      my $genre="";
      my $genre2="";
      my $eigentuemer="";
      my $moviename = $$prow1[0];
      my $lnr = $$prow1[1];
      next if $lnr<=0;
      my @parts = split(/\./,$moviename);
      my $mext = pop @parts;
      my $mbase = join('.',@parts);
      $titel = $mbase;
      if (lc($mext) ne "ogg" && lc($mext) ne "mp3") {
	@parts = split('-',$mbase);
	my $anz = @parts-1;
	while ($anz>0) {
	  if ($parts[$anz]>0) {
	    pop @parts;
	    $anz--;
          } elsif ($parts[$anz] eq "merged") {
	    pop @parts;
	    $anz--;
	  } elsif ($parts[$anz] eq "cut") {
            pop @parts;
	    $anz--;
          } else {
            $anz=0;
          }
        }
	shift @parts if $parts[0]>0;
	shift @parts if $parts[0]>0;
	shift @parts if $parts[0]>0;
	shift @parts if $parts[0]>0;
	$titel = join('-',@parts);
      } else {
	$genre = "Musik";
	$genre2 = "Kinder";
	$eigentuemer = "kinder";
	my ($titel1,$subtitle1,$thema1) = split(' -- ',$titel);
        if ($titel1 ne "" && $subtitle1 ne "" && $thema1 ne "") {
	  $titel=$titel1;
	  $subtitle=$subtitle1;
          $thema=$thema1;
	}
      }
      $titel =~ s/(\_)/ /g;
      $sql = "update $db.archiv set Titel=".$dbh->quote($titel);
      $sql.=",Subtitel=".$dbh->quote($subtitle) if $subtitle ne "";
      $sql.=",Thema=".$dbh->quote($thema) if $thema ne "";
      $sql.=",Genre1=".$dbh->quote($genre) if $genre ne "";
      $sql.=",Genre2=".$dbh->quote($genre2) if $genre2 ne "";
      $sql.=",Eigentuemer=".$dbh->quote($eigentuemer) if $eigentuemer ne "";
      $sql.="  where Laufnummer=$lnr";
      $dbh->do($sql);
      logit("$moviename goes to $titel in $lnr");
    }
  }
}

Das Skript kann entwder zeitgesteuert über einen wiederkehrenden Job gestartet werden oder dann direkt beim Hinzufügen jeder Akte. Das kleine Programm erledigt nebenher noch einige andere Dinge. Insbesondere stellt es sämtliche Audio-Dateien für alle User (Gruppe ‘kinder’) zur Verfügung. Damit kann elegant zu einem weiteren Thema übergeleitet werden, dem Rechte-System.

Medienarchiv mit Rechte-Verwaltung und Beschlagwortung

Im privaten Medienarchiv gibt es aktuell vier Gruppen: Erwachsen, Teenie, Kinder und Gast. Dies deshalb, weil gewisse Filme weder für Teenies noch für Kinder geeignet sind. Die Rechtevergabe in ArchivistaDMS erfolgt über das Feld ‘Eigentuemer’. Selbstverständlich könnte auch eine feinere Rechtevergabe erfolgen (z.B. U6, U10, U14, U18).

Über die letzten zwei Monate wurden einige Tausend Videos erfasst. Viele Sendungen wurden dabei MediathekView entnommen. Wilmaa.ch dagegen wurde primär für Spielfilme verwendet. Um eine bequeme Auswahl zu ermöglichen, gibt es in der moviestar-Datenbank die Felder ‘Genre1’, ‘Genre2’ und ‘Genre3’ (möglich wären bis zu fünf Schlagworte). Damit kann zunächst die Art des Videos (z.B. Spielfilm) festgehalten werden, weiter aber auch, ob es sich um einen Klassiker, einen Thriller oder eine Komödie handelt. Im Unterschied zu anderen Lösungen (eben z.B. zu Kodi) können die Schlagwortfelder beliebig bzw. frei definiert werden.

Zertifikate mit LetsEncrypt

Ebenfalls im Unterschied zu Kodi arbeitet ArchivistaDMS komplett webbasiert. Falls die ArchivistaBox über eine öffentliche IP-Adresse und einen DNS-Namen (z.B. example.com) verfügbar ist, kann mit Certboot passend dazu ein Zertifikat eingerichtet werden:

certbot certonly --standalone --preferred-challenges http -d example.com

Wichtig: Bevor das Zertifikat auf diese Weise eingerichtet wird, muss der Web-Server deaktiviert werden (/etc/init.d/apache2 stop). Bei Erfolg erscheint eine Meldung mit ‘Congrutaltions…’. Das Zertifikat muss in der Apache-Konfiguration aufgenommen werden. Die Datei findet sich unter /etc/apache/sites-availabe/pve.conf (nachfolgend der entscheidende Auszug);

<VirtualHost *:443>
...
SSLCertificateFile /etc/pve/pve-ssl.pem
SSLCertificateKeyFile /etc/pve/pve-ssl.key
...
</VirtualHost>

Dort ist der Verweis auf die Zertifikate einzutragen:

<VirtualHost *:443>
...
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
...
</VirtualHost>

Weiter sind die generierten Schlüssel sind in den destkop-Ordner zu kopieren:

cp -rp /etc/letsencrypt /home/data/archivista/cust/desktop

Nun müsen die Schlüssel korrekt beim Hochfahren aktiviert werden. Dazu werden die folgenden Befehle der Datei desktop.sh in /home/data/archivista/cust/desktop hinzugefügt:

#!/bin/bash
fp="/home/data/archivista/cust/desktop"
cp -rpf $fp/index.htm /usr/share/pve-manager/root
cp -rpf $fp/letsencrypt /etc
cp -pf $fp/pve.conf /etc/apache2/sites-available
/etc/init.d/apache2 restart

Die Datei desktop.sh muss ausführbar sein (chmod a+x desktop.sh), da sie ansonsten beim Neustart nicht ausgeführt werden kann. Wem dies zu kompliziert ist, kann dies auch an einen Profi delegieren. Am Ende dieser Prozedur kann mit einem öffentlichen Zertifikat verschlüsselt auf das Meidenarchiv zugegriffen werden (die Meldung, die Seite sei unsicher, erscheint bei sämtlichen Browsern nicht mehr).

ArchivistaDom mit 10 bis 32 TByte

Das aktuelle Privatarchiv umfasst ca. 5 TByte. In diesem Bereich sind SSD-Festplatten, die üblicherweise mit der ArchivistaBox ausgeliefert werden, aktuell etwas gar teuer. Deshalb wurde die ArchivistaDom konzipiert. Zwar ist die ArchivistaDom etwas grösser (30x40x10 cm), dafür aber können bis zu zwei konventionelle 3.5″-Festplatten mit bis zu 32 TByte verbaut werden.

Erweiterbarkeit bei ArchivistaDom

Die erste Festplatte wird mitgeliefert, für eine zweite Platte besteht ein Hot-Swap-Einschub. Alternativ zum Ausbau kann der Einschaub auch für die Sicherung verwendet werden. 10 TByte reichen in etwa für 5000 Filme in HD-Qualität. Die ArchivistaDom enthält eine Ryzen CPU von AMD, genauso wie hochwertige Festplatten von WesternDigital (Gold-Standard) verbaut werden. Mit einer optionalen Festplatte (14 TB intern und 18 TB HotSwap) können bis zu 32 TByte erreicht werden.

Die ArchivistaDom ist uneingeschränkt in der Lage, 4K-Videos zu bearbeiten bzw. abzuspielen. Dabei stehen sämtliche Applikationen von AVMultimedia und der ArchivistaBox zur Verfügung. Beim Speicher sind zwischen 4 und 64 GByte diverse Ausbaustufen möglich. Im Grundumfang mit 10 TByte kostet die ArchivistaDom 1190.– Franken, mit 14 TByte sind es 1490 Franken (beide Angaben ohne MwSt). Bestehende ArchivistaBox-Kunden können ausgehend von der vorhandenen ArchivistaBox “upgraden”. Die genauen Konditionen werden anhand des Alters der bisherigen Box berechnet.

Die ArchivistaDom wird ausschliesslich in der Schweiz verkauft. Kunden aus anderen Ländern erwerben die ArchivistaBox Rigi Virtualisiert und installieren diese auf einem eigenen Rechner. Bei der Bestellung bitte Medien-Archiv oder ArchivistaDom anmerken. Sie erhalten danach die Eckwerte für den Erwerb einer eigenen passenden Hardware sowie einen Gutschein für zwei Stunden Support, der innert 90 Tagen nach Erwerb der Lösung eingelöst werden kann.

Angemerkt an dieser Stelle darf, dass die ArchivistaBox an sich ja problemlos virtualisiert (Box-in-Box) betrieben werden kann. Bei einem multimedialen Archiv im höheren TByte-Bereich empfiehlt es sich allerdings nicht, dies auch zu tun. Da die ArchivistaBox ganz allgemein extrem “wartungsarm” arbeitet, und darüber hinaus einen ausgewachsener Multimedia-Desktop darstellt, ergibt ein nativer Betrieb in jeder Hinsicht sehr viel mehr Sinn. Die ArchivistaDom kann im Web-Shop bestellt werden.