Projekt

Allgemein

Profil

Aktionen

Aufgabe #1163

offen

Tatsächliche Migration der StuRa Cloud

Von MichaelLeopold vor etwa 2 Jahren hinzugefügt. Vor fast 2 Jahren aktualisiert.

Status:
Feedback
Priorität:
Normal
Kategorie:
Instanz MediaWiki
Beginn:
24.03.2022
Abgabedatum:
% erledigt:

0%

Geschätzter Aufwand:

Beschreibung

Hier soll der Tatsächliche Weg beschrieben sein wie wir letztendlich die alte Owncloud (Version 9.1.2.5) des Stura auf eine Nextcloud (Version 23) migriert haben.

Maßgeblich Beteiligite: heinemann@ vater@ mlp@

Dieses Ticket ist aufbauend zu weiteren Tickets vom Bereich Administration Rechentechnik. Im Zweifel lohnt da auch ein Blick hinein, da dort die Historie ablesbar ist welche Festellungen wir bei verschiedenen Versuchen tätigen konnten.

Ticketlinks:
https://pro.stura.htw-dresden.de/issues/949
https://pro.stura.htw-dresden.de/issues/1104

Wikilinks:
https://wiki.stura.htw-dresden.de/index.php/Srs16#Aktualisierung_8.0.3_zu_8.2.1

Verwendete Guides Links:
https://www.howtoforge.com/tutorial/owncloud_9-installation-on-debian_8/

Aktionen #1

Von MichaelLeopold vor etwa 2 Jahren aktualisiert

Wir haben dafür maßgeblich eine eigene Proxmox Kiste genutzt, da da wir im Laufe unserer Versuche zu migrieren festgestellt haben, dass unsere Platten im Ceph zu langsam waren. Daher nutzen wir lokalen Speicher mit ausreichen Kapazität, um die kompletten Daten auf einem Gerät zu haben. Im Zweifel ist doppelt so viel besser, um mit einer Kopie arbeiten zu können.


Aufgesetze Geräte, um die Migration durchzuführen:

- Alle Geräte worden unter einem [[https://www.proxmox.com/de/] Proxmox System Version 7.1-10] aufgesetzt.

- Darunter eine alte VM mit Debian 8, da es kein funktionierendes Image für LXC bereit gestellt gab. Man musste Allerdings so weit runter von der Debian Version, da dort noch php5 Standard war.

- Ein Debian 10 und ein Debian 11 LXC um ab einem bestimmten Migrationsschrit die Inhalte von der alten VM auf ein neueren LXC mit höherer Debian Version zu verschieben.



Wichtige Dateien, um eine Migration speziell bei Owncloud/Nextcloud durchführen zu können:

Das Verzeichnis mit den vorhandenen Daten der Cloud: /path/to/cloud/datadirectory
--> In unserem Fall auf der srs1337 unter /mnt/zroot/jails/owncloud_1/media bzw. eigentlich unter /mnt/zroot/data/owncloud/media ,da damals dieses Verzeichnis so konfiguriert worden ist, sodass es erst beim Start der Owncloud Jail (FreeNAS) das Verzeichnis eingehangen wird.
--> Hier speziell nochmal hervorgehoben die owncloud.db Diese enthält die eigentliche Datenbank.

Die Configurationsdatei der Cloud: /path/to/cloud/config/config.php
--> In unserem Fall auf der srs1337 unter /mnt/zroot/jails/owncloud_1/config/config.php
Hinweis: An dieser Stelle sei erwähnt, dass wirklich nur die config.php nötig war. Restliche versteckte Dateien wie bspw. .htaccess war nicht relevant
__________________________________________________________________

Konfiguration der VM mit debian8 als Startsystem

Die Configuration wurde maßgeblich aus dem StuRa Wiki übernommen
https://wiki.stura.htw-dresden.de/index.php/Diskussion:Server/srs16#Installation_von_ownCloud_9.1_oder_Nextcloud_10

Installations Wizard

Hier sei nur kurz gesagt, dass wir Englisch mit US und Eastern Time genommen haben.
Ein Problem sind die Spiegel Mirror. Da funktionieren kaum noch welche, also haben wir den Standard genommen.

Pakete und Dienste der VM - Die eigentliche Konfiguration

Hier als Abriss sei erwähnt das einige wichtige Sachen nicht gelich von Haus aus funktionieren. wie z.B. SSH, Rpository Keys etc. Deshalb sind wir so vorgegangen wie nachfolgend Beschrieben bei der Konfiguration. Zu beginn haben wir einige Schritte in der Proxmox eigenen Web Console getätig bis wir per SSH verbinden konnten.

Man wird in der Webconsole standardmäßig mit dem User angemeldet, den man beim Installationswizard erstellt. Wir haben " administration " als User gewählt. Dieser wird später kurz relevant, da wir uns mit diesem per SSH später einwählen werden.

su root + Passwort Eingabe.
- ( Ja ist essentiell, da man sonst nichts ausführen kann. )

apt-get update && apt-get upgrade -y
-HINWEIS: Zu Debian 8 Zeiten hatte der " apt Befehl " noch keinen Link zu " apt-get Befehl " d.h. Hier wurde bewusst apt-get verwendet. Auch später für Installationen von Paketen relevant

- "The following packages kept back" 
linux-image-amd64 

apt-get upgrade linux-image-amd64
- läuft durch

nano /etc/apt/sources.list
- Es müssen zusätzlich die drei Repositories von Jessie in die sources.list hinzugefügt werden, da diese nicht existieren. Nachfolgend stehen die gewünschten Repositories.

deb http://deb.debian.org/debian jessie main
deb http://deb.debian.org/debian jessie contrib
deb http://deb.debian.org/debian jessie non-free

Vollständige sources.list

deb http://security.debian.org/ jessie/updates main
deb-src http://security.debian.org/ jessie/updates main

deb http://deb.debian.org/debian jessie main
deb http://deb.debian.org/debian jessie contrib
deb http://deb.debian.org/debian jessie non-free

apt-get update && apt-get upgrade -y && apt-get autoremove -y
- Sollte jetzt durchlaufen.

Entweder apt-get install openssh-server -y oder apt -y --force-yes install openssh-server
- Installlieren um SSH Verbindung herstellen zu können

Entweder apt-get install tmux -y oder apt -y --force-yes install tmux
- Installlieren um besser und mit Sessions arbeiten zu können.

ip a
- IP notieren für den Wechsel weg von der Webconsole zu einer auf dem Gerät

reboot

Hinweis: Hier ist der Moment wo wir von der WebConsole gewechselt sind zu einer auf unserem Gerät, da das Arbeiten so angenehmer war z.B. durch Copy&Paste

Anmeldung per SSH auf der Debian8 VM:

ssh administration@ < Hier die notierte IP-Adresse >
Passwort eingeben

su root
Passwort eingeben

tmux ls
- Keine Sessions 
tmux 

apt-get update

E: The method driver /usr/lib/apt/methods/https could not be found.
N: Is the package apt-transport-https installed?

Hinweis: Wir wollen jetzt eigentlich direkt das owncloud Paket herunterladen, um dann mit Owncloud zu beginnen. Allerdings wird er beim wgetn von Owncloud sich daran stören, dass das Zertifikat fehlt Deshalb fügen wir den kurz manuell hinzu.
Es wäre hier auch möglich gewesen ein "apt-get install owncloud" mit passendem Repository auszuführen. Diese hatte jedoch in der Vergangenheit nicht funktioniert.

apt-get install apt-transport-https -y --force-yes

sed -i '/^mozilla\/DST_Root_CA_X3.crt$/ s/^/!/' /etc/ca-certificates.conf

update-ca-certificates

- Jetzt können wir Owncloud herunterladen

Dafür bin ich zu einem Guide Gewechselt, der mit maginalen Änderungen gut funktionierte. Ich baue diese Änderungen hier im Ticket direkt mit ein verlinke dennoch den Guide.
https://www.howtoforge.com/tutorial/owncloud_9-installation-on-debian_8/

Aktionen #2

Von MichaelLeopold vor etwa 2 Jahren aktualisiert

Aktionen #3

Von MichaelLeopold vor etwa 2 Jahren aktualisiert

Aktionen #4

Von MichaelLeopold vor etwa 2 Jahren aktualisiert

Aktionen #5

Von MichaelLeopold vor etwa 2 Jahren aktualisiert

Aktionen #6

Von MichaelLeopold vor etwa 2 Jahren aktualisiert

Ab hier geht es mit kleinen Anpassungen nach folgendem Guide weiter https://www.howtoforge.com/tutorial/owncloud_9-installation-on-debian_8/

Hinweis: Die alte Owncloud Instanz nutzte nur SQL Lite weshalb nach Guide beispielsweise mariadb rausfliegt und statessen sqlite gebraucht wird

Hinweis: Dies ist eine gesamtauflistung aller später benötigter Pakete. Eingie davon befinden sich nicht direkt am Anfang vom Guide!

apt-get install -y apache2 libapache2-mod-php5 php5-json php5-gd php5-sqlite php5-curl php5-intl php5-mcrypt php5-imagick bzip2 zip rsync sudo

cd /var/www/
- Wir wechseln gleich mal ins richtige Verzeichnis wo die Cloud später liegen soll.

wget https://download.owncloud.org/community/owncloud-9.1.2.tar.bz2

wget https://download.owncloud.org/community/owncloud-9.1.2.tar.bz2.sha256

sha256sum -c owncloud-9.1.2.tar.bz2.sha256

tar xjvf owncloud-9.1.2.tar.bz2

rm -rf html
-Der Form halber

Hinweis: Der nachfolgende Befehl wird auf der Maschine ausgeführt, wohin die Daten der alten Cloud migriert werden sollen. Er dauert gemäß der Menge an Daten, Plattenngeschwindigkeit, Netzwerkanbindung recht lang.

rsync -avzP -e "ssh -p 1005" root@141.56.51.121:/mnt/zroot/data/owncloud/media /var/www/SYNC-DATA-2022-03-25/

Hier sei nochmals erwähnt, dass die Jail der alten srs1337 wo Owncloud als Plugin lief den daten Ordner von Owncloud automatisch eingehangen bekommen hat. Im gestoppten Zustand der Jail konnte man sich demnach nur die Daten aus einem anderem Pfad ( dem der eingehängt wird) synchronisieren. Deshalb weicht der rsync Befehl hier etwas von der aus Ticket 1104 ab. Diese Befehl ist der eigentlich richtige.

In der Zwischenzeit:

-Bearbeite die Apache Configuration. Füge den Owncloud Ordner hinzu.

nano /etc/apache2/sites-available/000-default.conf

Vollständige 000-default.conf

<VirtualHost *:80>
        ServerName < SET IP HERE >

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/owncloud

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

<Directory /var/www/owncloud/>
  Options +FollowSymlinks
  AllowOverride All

 <IfModule mod_dav.c>
  Dav off
 </IfModule>

 SetEnv HOME /var/www/owncloud
 SetEnv HTTP_HOME /var/www/owncloud

</Directory>

-Erstelle ein Skript, dass alle Permissions (Rechte) der Dateien und Unterordner sowie den Ordner "owncloud" selbst richtig setzt. Aktuell gehört das meiste root. www-data User benötigen wir allerdings.
Im späteren Verlauf werden wir auch ein Skript benötigen, dass diese Aufgabe für den Ordner "nextcloud" erledigt. Also erstellen wir gleich das Skript für beide Ordner.

nano oc-permissions.sh

#!/bin/bash
ocpath='/var/www/owncloud'
htuser='www-data'
htgroup='www-data'
rootuser='root'

printf "Creating possible missing Directories\n" 
mkdir -p $ocpath/data
mkdir -p $ocpath/assets

printf "chmod Files and Directories\n" 
find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640
find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750

printf "chown Directories\n" 
chown -R ${rootuser}:${htgroup} ${ocpath}/
chown -R ${htuser}:${htgroup} ${ocpath}/apps/
chown -R ${htuser}:${htgroup} ${ocpath}/config/
chown -R ${htuser}:${htgroup} ${ocpath}/data/
chown -R ${htuser}:${htgroup} ${ocpath}/themes/
chown -R ${htuser}:${htgroup} ${ocpath}/assets/

chmod +x ${ocpath}/occ

printf "chmod/chown .htaccess\n" 
if [ -f ${ocpath}/.htaccess ]
 then
  chmod 0644 ${ocpath}/.htaccess
  chown ${rootuser}:${htgroup} ${ocpath}/.htaccess
fi
if [ -f ${ocpath}/data/.htaccess ]
 then
  chmod 0644 ${ocpath}/data/.htaccess
  chown ${rootuser}:${htgroup} ${ocpath}/data/.htaccess
fi

chmod u+x oc-permissions.sh

nano nc-permissions.sh

#!/bin/bash
ocpath='/var/www/nextcloud'
htuser='www-data'
htgroup='www-data'
rootuser='root'

printf "Creating possible missing Directories\n" 
mkdir -p $ocpath/data
mkdir -p $ocpath/assets

printf "chmod Files and Directories\n" 
find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640
find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750

printf "chown Directories\n" 
chown -R ${rootuser}:${htgroup} ${ocpath}/
chown -R ${htuser}:${htgroup} ${ocpath}/apps/
chown -R ${htuser}:${htgroup} ${ocpath}/config/
chown -R ${htuser}:${htgroup} ${ocpath}/data/
chown -R ${htuser}:${htgroup} ${ocpath}/themes/
chown -R ${htuser}:${htgroup} ${ocpath}/assets/

chmod +x ${ocpath}/occ

printf "chmod/chown .htaccess\n" 
if [ -f ${ocpath}/.htaccess ]
 then
  chmod 0644 ${ocpath}/.htaccess
  chown ${rootuser}:${htgroup} ${ocpath}/.htaccess
fi
if [ -f ${ocpath}/data/.htaccess ]
 then
  chmod 0644 ${ocpath}/data/.htaccess
  chown ${rootuser}:${htgroup} ${ocpath}/data/.htaccess
fi

chmod u+x nc-permissions.sh

Mit ls -al können wir kontrollieren, ob alle Rechte richtig gesetzt worden sind und diese beiden Skripte ausführbar sind.

Jetzt können wir noch einige Apache Module aktivieren bzw. kontrollieren ob diese laufen.

a2enmod rewrite headers env dir mime

systemctl restart apache2
- Restart apache Web Server

  • Ab jetzt müsste die Owncloud in der Version 9.1.2 vorliegen und erreichbar sein.* Von hier an geht es mit dem migrieren los.
Aktionen #7

Von MichaelLeopold vor etwa 2 Jahren aktualisiert

Hinweis: Während der Migration soll vor und nach jedem Upgrade die owncloud.db und die config.php Datei in /opt/copies/ zwischengespeichert werden, um im Falle eines Problems auf Zwischenstände zurück greifen zu können.

Dabei ist folgende Bennenung vorgeschrieben:

owncloud.db_9.1.2.5_before_upgrade
owncloud.db_9.1.2.5_after_upgrade

config.php_9.1.2.5_before_upgrade
config.php_9.1.2.5_after_upgrade

Aktionen #8

Von MichaelLeopold vor etwa 2 Jahren aktualisiert

cp -R /var/www/SYNC-DATA-2022-03-25/media/ /var/www/owncloud/data

ls -al /var/www/owncloud/data/

Hinweis: Wir benötigen auch die config Datei der alten Jail
/var/www/SYNC-CONFIG-2022-03-25# rsync -avzP -e "ssh -p 1005" :/mnt/zroot/jails/owncloud_1/usr/pbi/owncloud-amd64/www/owncloud/config /var/www/SYNC-CONFIG-2022-03-25

cp config.php ../../owncloud/config/config.php.old

Wir haben die Config aus der alten jail so angepasst, dass nur die nötigsten sachen enthalten sind + wichitge inhalte der alten instanz sowie der neuen kombiniert

Vollständige config.php

<?php                                                                                                                                                                                                              │
$CONFIG = array (                                                                                                                                                                                                  │
  'instanceid' => '523761d2d3697',                                                                                                                                                                                 │
  'passwordsalt' => '3a4c7c66041ef654e13cadfdc08fbc',                                                                                                                                                              │
  'trusted_domains' =>                                                                                                                                                                                             │
  array (                                                                                                                                                                                                          │
    0 => '141.56.50.58',                                                                                                                                                                                           │
  ),                                                                                                                                                                                                               │
  'datadirectory' => '/var/www/owncloud/data',                                                                                                                                                                     │
  'overwrite.cli.url' => 'http://141.56.50.58',                                                                                                                                                                    │
  'dbtype' => 'sqlite3',                                                                                                                                                                                           │
  'version' => '9.1.2.5',                                                                                                                                                                                          │
  'installed' => true,                                                                                                                                                                                             │
  'maintenance' => false,                                                                                                                                                                                          │
);                                                                                                                                                                                                                 │
                                                                                                                                                                                                                   │
/*                                                                                                                                                                                                                 │
    1 => 'cloud.stura.htw-dresden.de',                                                                                                                                                                             │
    2 => 'cloud.htw.stura-dresden.de',                                                                                                                                                                             │
    3 => 'www.cloud.htw.stura-dresden.de',                                                                                                                                                                         │
    4 => 'www.owncloud.stura-dresden.de',                                                                                                                                                                          │
    5 => 'owncloud.stura-dresden.de',                                                                                                                                                                              │
                                                                                                                                                                                                                   │
                                                                                                                                                                                                                   │
  'mail_from_address' => 'files',                                                                                                                                                                                  │
  'mail_smtpmode' => 'sendmail',                                                                                                                                                                                   │
  'mail_domain' => 'stura.htw-dresden.de',                                                                                                                                                                         │
  'secret' => 'C3B9gadxFaOEmLzxUusA7ry.BnFSfehu3x0WYwAbfuUb7t0q',                                                                                                                                                  │
  'trashbin_retention_obligation' => 'auto',                                                                                                                                                                       │
  'mail_smtphost' => 'mail.stura.htw-dresden.de',                                                                                                                                                                  │
  'mail_smtpport' => '25',                                                                                                                                                                                         │
*/ 

systemctl restart apache2
./oc-permissions.sh

jetzt kann man sich testweise mit einem alten user in die cloud einloggen und schauen ob alle user da sind

Wir haben den User "files" genutzt und das Passwort ist nach Schema gesetzt gewesen.

Login hat geklappt und User sind alle vorhanden.

service apache2 stop

Ab hier müssen wir die Owncloud 9 zu nextcloud 10 wehseln dafür haben wir einen guide benutz dieser ist hier verlinkt:

https://bscable.info/migrate-from-owncloud-9-1-1-to-nextcloud-10-0-2/

Aktionen #9

Von MichaelLeopold vor etwa 2 Jahren aktualisiert

Weiter nach guide: https://bscable.info/migrate-from-owncloud-9-1-1-to-nextcloud-10-0-2/

https://help.nextcloud.com/t/migrating-from-owncloud-to-nextcloud/551
- lesen

wget https://download.nextcloud.com/server/releases/latest-10.zip

mv data nextcloud/
mv config.php nextcloud/config

Hinweis: Unbedingt den Pfad auch in der Config anpassen und zu nextcloud umschreiben

<?php                                                                                                                                                                                                              │
$CONFIG = array (                                                                                                                                                                                                  │
  'instanceid' => '523761d2d3697',                                                                                                                                                                                 │
  'passwordsalt' => '3a4c7c66041ef654e13cadfdc08fbc',                                                                                                                                                              │
  'trusted_domains' =>                                                                                                                                                                                             │
  array (                                                                                                                                                                                                          │
    0 => '141.56.50.58',                                                                                                                                                                                           │
  ),                                                                                                                                                                                                               │
  'datadirectory' => '/var/www/nextcloud/data',                                                                                                                                                                     │
  'overwrite.cli.url' => 'http://141.56.50.58',                                                                                                                                                                    │
  'dbtype' => 'sqlite3',                                                                                                                                                                                           │
  'version' => '9.1.2.5',                                                                                                                                                                                          │
  'installed' => true,                                                                                                                                                                                             │
  'maintenance' => false,                                                                                                                                                                                          │
);                                                                                                                                                                                                                 │
                                                                                                                                                                                                                   │
/*                                                                                                                                                                                                                 │
    1 => 'cloud.stura.htw-dresden.de',                                                                                                                                                                             │
    2 => 'cloud.htw.stura-dresden.de',                                                                                                                                                                             │
    3 => 'www.cloud.htw.stura-dresden.de',                                                                                                                                                                         │
    4 => 'www.owncloud.stura-dresden.de',                                                                                                                                                                          │
    5 => 'owncloud.stura-dresden.de',                                                                                                                                                                              │
                                                                                                                                                                                                                   │
                                                                                                                                                                                                                   │
  'mail_from_address' => 'files',                                                                                                                                                                                  │
  'mail_smtpmode' => 'sendmail',                                                                                                                                                                                   │
  'mail_domain' => 'stura.htw-dresden.de',                                                                                                                                                                         │
  'secret' => 'C3B9gadxFaOEmLzxUusA7ry.BnFSfehu3x0WYwAbfuUb7t0q',                                                                                                                                                  │
  'trashbin_retention_obligation' => 'auto',                                                                                                                                                                       │
  'mail_smtphost' => 'mail.stura.htw-dresden.de',                                                                                                                                                                  │
  'mail_smtpport' => '25',                                                                                                                                                                                         │
*/ 

./nc-permissions.sh

sudo -u www-data php /var/www//occ upgrade

Hinweis: Unbedingt den Pfad auch in der Apache Config anpassen und von owncloud zu nextcloud umschreiben

<VirtualHost *:80>
        ServerName 141.56.50.58

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/nextcloud

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

<Directory /var/www/nextcloud/>
  Options +FollowSymlinks
  AllowOverride All

 <IfModule mod_dav.c>
  Dav off
 </IfModule>

 SetEnv HOME /var/www/nextcloud
 SetEnv HTTP_HOME /var/www/nextcloud

</Directory>

Copieren der owncloud.db ( von der nextcloud 10 latest ) und ebenso copieren der config.php

Ab hier werden sich die letzten Schritte mehrfach wiederholen. Für je eine Version Nextcloud 11, Nextcloud 12 , 13 ... einmal alles durchführen.

bei Abweichungen wie z.B: Debian upgrade und php5 zu php7 dokumentieren wir weiter.

Aktionen #10

Von GoeranHeinemann vor etwa 2 Jahren aktualisiert

Wir haben die Upgrades bis Version 13 durchgeführt - da kommt zuerst eine Warnung, dass in Zukunft PHP Version 7 verwendet werden soll.

apt-get update
apt-get upgrade
apt-get dist-upgrade
apt-get autoremove

apt-mark showhold
cp /etc/apt/sources.list /etc/apt/sources.list_backup_jessie

sed -i 's/jessie/stretch/g' /etc/apt/sources.list

nano /etc/apt/sources.list
- einfach mal kontrollieren

apt-get update
apt-get upgrade
apt-get dist-upgrade
apt-get autoremove

reboot

Aktionen #11

Von MichaelLeopold vor etwa 2 Jahren aktualisiert

sudo apt -y install lsb-release apt-transport-https ca-certificates

sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg

echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list deb https://packages.sury.org/php/ stretch main

rm -rf assets/

Aktionen #12

Von MichaelLeopold vor fast 2 Jahren aktualisiert

  • Kategorie wurde auf Instanz MediaWiki gesetzt
  • Status wurde von Neu zu Feedback geändert
  • Zugewiesen an wurde auf Bereich Administration Rechentechnik gesetzt

Es fehlt noch ie Dokumentation!

Aktionen

Auch abrufbar als: Atom PDF