<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>http://wiki.tisinfra.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ChristianM</id>
	<title>tisentoWiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.tisinfra.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ChristianM"/>
	<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php/Spezial:Beitr%C3%A4ge/ChristianM"/>
	<updated>2026-06-04T23:18:48Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=334</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=334"/>
		<updated>2025-10-29T10:28:04Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: /* Fehlerbehebung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Zugriff==&lt;br /&gt;
Der Docker-Server ist unter der 172.22.0.224 erreichbar.&lt;br /&gt;
&lt;br /&gt;
Der neue Docker-Server wird unter 172.22.0.223 erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
Der Port, Nutzername und auch das Passwort sind im [http://keepass.tisento.com Passbolt] gespeichert.&lt;br /&gt;
&lt;br /&gt;
== Zugriff Dienste ==&lt;br /&gt;
Nachfolgend eine Liste der Dienste die auf dem Docker laufen&lt;br /&gt;
&lt;br /&gt;
* [https://cockpit.tisento.com Cockpit-PROD] &lt;br /&gt;
* [https://cockpit-test.tisento.com Cockpit-TEST]&lt;br /&gt;
* [https://cockpit-dev.tisento.com Cockpit-DEV]&lt;br /&gt;
* [https://monitor.tisento.com UpTime Kuma (Monitor)]&lt;br /&gt;
* [https://portainer.tisento.com Portainer (Docker Verwaltung)]&lt;br /&gt;
* FTP&lt;br /&gt;
* [https://service.tisento.com Ticketsystem / Otobo]&lt;br /&gt;
* NGINX &amp;amp; Certbot (noch nicht als Docker-Container)&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* [https://gitea.tisento.com Git (gitea)] noch nicht installiert&lt;br /&gt;
&lt;br /&gt;
== Neuinstallation ==&lt;br /&gt;
Kopie der &amp;quot;tisento.conf&amp;quot;-Datei in den Ordner: &amp;quot;/etc/ssh/sshd_config.d/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hinzufügen des 9022-Ports zur UFW mit:&lt;br /&gt;
 sudo ufw allow 9022/tcp&lt;br /&gt;
Einschalten der ufw mit&lt;br /&gt;
 sudo ufw enable&lt;br /&gt;
&lt;br /&gt;
=== Installation vom Docker (https://docs.docker.com/engine/install/ubuntu/): ===&lt;br /&gt;
Install using the &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository&lt;br /&gt;
&lt;br /&gt;
Before you install Docker Engine for the first time on a new host machine, you need to set up the Docker &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository. Afterward, you can install and update Docker from the repository.&lt;br /&gt;
&lt;br /&gt;
* Set up Docker&#039;s &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository.&lt;br /&gt;
&lt;br /&gt;
 # Add Docker&#039;s official GPG key:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu/gpg&amp;lt;/nowiki&amp;gt; -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
 &lt;br /&gt;
 # Add the repository to Apt sources:&lt;br /&gt;
 echo \&lt;br /&gt;
 &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu&amp;lt;/nowiki&amp;gt; \&lt;br /&gt;
 $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;${UBUNTU_CODENAME:-$VERSION_CODENAME}&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
* Install the Docker packages.&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
* Verify that the installation is successful by running the &amp;lt;code&amp;gt;hello-world&amp;lt;/code&amp;gt; image:&lt;br /&gt;
&lt;br /&gt;
 sudo docker run hello-world&lt;br /&gt;
&lt;br /&gt;
=== Installation der Sonstigen Softare (s.u.) ===&lt;br /&gt;
via &amp;quot;sudo apt install ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Kopie des Docker-Repos ===&lt;br /&gt;
Kopie des Repos in &amp;quot;/srv/tisento-docker&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Dort muss als erstes &amp;quot;portainer gestartet und wiederhergestellt werden.&lt;br /&gt;
&lt;br /&gt;
Danach wird gitea gestartet und wiederhergestellt. (Damit die repos gezogen werden können)&lt;br /&gt;
&lt;br /&gt;
Danach nach und nach die anderen Services wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
=== Einstellung UFW ===&lt;br /&gt;
 sudo ufw allow 80/tcp&lt;br /&gt;
&lt;br /&gt;
 sudo ufw allow 443/tcp&lt;br /&gt;
&lt;br /&gt;
== Sonstige Software (nicht vollständig, muss überarbeitet werden!) ==&lt;br /&gt;
&lt;br /&gt;
* Docker (s.o.)&lt;br /&gt;
* git&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* cron (Wiederkehrende Aufgaben, bspw. Backups)&lt;br /&gt;
* ncdu (Speicherbelegung)&lt;br /&gt;
* nmon (Monitoring)&lt;br /&gt;
* cifs-utils (Mounting Laufwerke)&lt;br /&gt;
* zip&lt;br /&gt;
* sshpass (sftp transer)&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Docker-Dienste ==&lt;br /&gt;
Die meisten Dienste sind mit ihren Daten und Definitionen unter /var/html/dienst.tisento.com erreichbar.&lt;br /&gt;
&lt;br /&gt;
Dabei sind in dem Ordner /var/html/dienst.tisento.com/.docker die Definitionen der Docker-Container.&lt;br /&gt;
&lt;br /&gt;
In dem Ordner /var/html/dienst.tisento.com/backups sind die jeweiligen Backups der Daten.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F2)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst. &lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/srv/tisento-docker/cockpit-prod/backups gespeichert. Das tägliche Backup wird nach 30 Tagen gelöscht, die monatlichen nach einem Jahr und die jährlichen Backups nie.&lt;br /&gt;
&lt;br /&gt;
EVTL. NOCH MONITOR HINZUFÜGEN DER BACKUP TÄGLICH PRÜFT!&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Mounting der Laufwerke via:&lt;br /&gt;
 sudo mount.cifs -v //172.22.0.245/cockpit/_Daten /srv/tisento-docker/cockpit-prod/html/_Daten/ --verbose -o user=us,password=pw,domain=TISENTOSAN2,vers=2.0,uid=33,gid=33&lt;br /&gt;
Die ID 33 muss ggfs. angepasst werden um&lt;br /&gt;
 id www-data&lt;br /&gt;
damit die Rechte passen.&lt;br /&gt;
&lt;br /&gt;
Es müssen auch die Laufwerke _Cockpit_Daten und _Cockpit_Verwaltung gemounted werden.&lt;br /&gt;
&lt;br /&gt;
Weiter müssen ggfs. einige &amp;quot;.env&amp;quot;-Dateien angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;html/api/connection/.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;.docker/backup/backup.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Siehe die jeweiligen &amp;quot;*.env.example&amp;quot;-Dateien&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach muss das Backup der HTML-Dateien in das Verzeichnis /srv/tisento-docker/cockpit-prod/html kopiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach müssen noch die SQL-Dateien eingespielt werden:&lt;br /&gt;
&lt;br /&gt;
Dazu die SQL-Datei in den Server laden (&amp;quot;root&amp;quot; =&amp;gt; user, &amp;quot;test&amp;quot; ist das Passwort).&lt;br /&gt;
&lt;br /&gt;
Evtl. muss die erste Zeile gelöscht werden:&lt;br /&gt;
 tail -n +2 cockpit-dev_db.sql &amp;gt; cockpit-dev_db2.sql&lt;br /&gt;
&lt;br /&gt;
 sudo docker exec -i cockpit-prod-db-1 mariadb -u root -ptest &amp;lt; cockpit-prod_db.sql&lt;br /&gt;
Danach muss das Root-PW händisch geändert werden (bspw. im PMA)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;WICHTIG:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Daten beim LX DW-Importer müssen auch geändert werden!&#039;&#039;&#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-test.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-test.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Siehe PROD (ohne Mounting)&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-dev.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-dev.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Siehe PROD (ohne Mounting)&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Überwachung der diversen Docker-Container, als auch für diverse Systeme da (z.B. HEALTH, also CPU, RAM, HDD von diversen Servern).&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/monitor.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das /data -Verzeichnis gesichert&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Kopie des /data-Verzeichnisses zurück nach /srv/tisento-docker/monitor/app/data. Es muss evtl. die Datei backup_db.db in kuma.db umbenannt werden&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Verwaltung der verschiedenen Docker-Container notwendig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/portainer.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das data-Verzeichnis gesichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Das data-Verzeichnis muss in /srv/tisento-docker/portainer/data gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Dieses Tool ist für die FTP-Verbindung zu den jeweiligen HTML-Verzeichnissen von [https://cockpit.tisento.com cockpit.tisento.com], [https://cockpit-test.tisento.com cockpit-test.tisento.com] und [https://cockpit-dev.tisento.com cockpit-dev.tisento.com] zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/ftp.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird die pureftpd.passwd Datei als backup gespeichert. Diese beinhaltet die FTP-Verzeichnisse und Server und Passwörter.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die pureftpd.passwd muss in das Verzeichnis /srv/tisento-docker/ftp/.docker/passwd/ lopiert werden.&lt;br /&gt;
&lt;br /&gt;
Es muss in dem docker-compose evtl. die Zeile &amp;quot;PUBLICHOST: &amp;quot;172.22.0.223&amp;quot;&amp;quot; angepasst werden.&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Erstellung und Verwaltung der Tickets zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Fehlerbehebung ====&lt;br /&gt;
Wenn bspw. die Festplatte vom Docker-Server vollgelaufen ist, dann müssen die Dienste einmal neugestartet werden (Portainer -&amp;gt; Connect -&amp;gt; Stacks -&amp;gt; tisento_cloud, Container alle auswählen und &amp;quot;Restart&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann es sein, dass man die Caches mit folgenden Befehlen (im Daemon) löscht (Portainer -&amp;gt; Connect -&amp;gt; Stacks -&amp;gt; tisento_cloud -&amp;gt; tisento_cloud-daemon-1 -&amp;gt;  &amp;quot;&amp;gt;_Console&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Cache::Delete&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Config::Rebuild --cleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Loader::CacheCleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn es in dem DB-Container zu dem Fehler kommt (Prüfen Portainer -&amp;gt; Connect -&amp;gt; Stacks -&amp;gt; tisento_cloud -&amp;gt; tisento_cloud-db-1 -&amp;gt; &amp;quot;Logs&amp;quot;):&lt;br /&gt;
 2025-10-13 10:56:49 0 [ERROR] Could not open mysql.plugin table: &amp;quot;Unknown storage engine &#039;Aria&#039;&amp;quot;. Some plugins may be not loaded&lt;br /&gt;
 2025-10-13 10:56:49 0 [ERROR] Failed to initialize plugins.&lt;br /&gt;
 2025-10-13 10:56:49 0 [ERROR] Aborting&lt;br /&gt;
Dann müssen in dem DB-Container die ARIA-Files gelöscht werden:&lt;br /&gt;
&lt;br /&gt;
Container stoppen (z.B. in Portainer), danach das Volume mounten (mit sudo vorher und direkt in der SSH Verbindung vom Server!):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;docker run --rm -it -v tisento_cloud_mariadb_data:/var/lib/mysql alpine sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und dann die Aria-Files in dem Ordner /var/lib/mysql löschen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cd /var/lib/mysql&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;rm aria_log.*&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach Container starten und testen (Und Logs anschauen, s. oben!)&lt;br /&gt;
&lt;br /&gt;
=== NGINX (noch nicht als Docker-Container) ===&lt;br /&gt;
nginx ist ein Reverse-Proxy, damit die verschiedenen Domains den richtigen Weg zu den Services finden.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /srv/tisento-docker/SERVICENAME/.....&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es werden die verzeichnisse certbot and nginx gebackupped&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die beiden Verzeichnisse müssen in /srv/tisento-docker/nginx/nginx und srv/tisento-docker/nginx/certbot kopiert werden! &lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird einmal am Tag die Liste mit den Regeln abgespeichert.&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Erstellen der einzelnen Richtlinien mit:&lt;br /&gt;
 sudo ufw allow 10021/tcp&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Die Daten befinden sich unter /srv/tisento-docker/gitea/data.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das data-Verzeichnis gesichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Das data-Verzeichnis muss in /srv/tisento-docker/portainer/data gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
=== Recovery (git &amp;amp; wiki) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
In diesem Dienst wird von dem aktuellen Git-Repo ein Backup gemacht, weiter wird auch diese Wiki-Seite gesichert, damit die Daten hiermit wiederhergestellt werden können&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die Daten müssen entpackt werden. Dann dem PDF folgen!&lt;br /&gt;
&lt;br /&gt;
== Backup // Wiederherstellung ==&lt;br /&gt;
Jeder Service hat ein eigenes Backup-System.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden gemeinsam per FTP auf den Server XY übertragen. (TODO)&lt;br /&gt;
&lt;br /&gt;
Dort läuft ein kleiner PHP-Cronjob, der diese Backups in ein anderes Verzeichnis überträgt. (TODO)&lt;br /&gt;
&lt;br /&gt;
Diese Dateien werden für eine Wiederherstellung benötigt!&lt;br /&gt;
&lt;br /&gt;
=== Wiederherstellung ===&lt;br /&gt;
Für die Wiederherstellung werden die Backups vom Server benötigt. Weiter wird diese Anleitung benötigt.&lt;br /&gt;
&lt;br /&gt;
Weiter wird für ein vollständigen Backups  ein neuer Server benötigt, dort müssen folgende Schritte in der Reihenfolge ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Installation s.o. &amp;quot;Neuinstallation&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Außerdem muss der DNS und weitere Weiterleitungen der entsprechenden Domains auf den neuen Server geändert werden!&lt;br /&gt;
&lt;br /&gt;
Es werden auch einige Passwörter gebraucht. Dieses sind in keepass.tisento.com und auch in der Passwort-Datei abgespeichert. Diese kann mit dem üblichen Passwort geöffnet werden (TODO)!&lt;br /&gt;
&lt;br /&gt;
Kopie des git-Repos in dem Verzeichnis /srv/tisento-docker/.&lt;br /&gt;
&lt;br /&gt;
Per SSH Beispielsweise mit dem CMD zum Server kopiert werden:&lt;br /&gt;
 sudo scp -P XXXX /srv/tisento-docker/nginx/backups/daily/backup_nginx_20250620_020000.tar.gz USER@IP:/tmp/nginx.tar.gz&lt;br /&gt;
Entpacken der Dateien mit bspw.:&lt;br /&gt;
 tar -xvzf yourfile.tar.gz -C /path/to/your/special/folder&lt;br /&gt;
Wiederherstellung nginx s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung Portainer s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung gitea s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der restlichen Docker-Services mithilfe der Docker-Compose-Dateien in gitea. Alternativ sind die Docker-Compose-Dateien auch in den Backup gespeichert und wurden im best-case zu &amp;quot;/srv/tisento-docker&amp;quot; zurückgespielt!&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der einzelnen Daten der Services mithilfe der obigen Erklärungen.&lt;br /&gt;
&lt;br /&gt;
== Test der Systeme ==&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP &amp;amp; V-Laufwerk prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Aufruf der Website, schauen, ob alle Monitore noch vorhanden sind.&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Aufruf der Website und schauen, ob zu den Containern eine Verbindung herstgestellt wird.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Hestellung der Verbindung zu Cockpit-Prod,-Test und -Dev.&lt;br /&gt;
&lt;br /&gt;
Testübertragung (bspw. Task) und test davon!&lt;br /&gt;
&lt;br /&gt;
Ansonsten einfach mal die index.html umbenennen!&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Erstellung eines Test-Tickets via Mail an: support@tisento.com &lt;br /&gt;
&lt;br /&gt;
Prüfen, ob dieses Ticket in der GUI auftaucht.&lt;br /&gt;
&lt;br /&gt;
Antworten auf dieses Ticket und schauen, ob die Antwort in dem Mail-Client ankommt.&lt;br /&gt;
&lt;br /&gt;
=== NGINX ===&lt;br /&gt;
&lt;br /&gt;
Aufrufen der diversen Websiten.&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Anmeldung mit dem AD-Nutzern&lt;br /&gt;
&lt;br /&gt;
== Neuen Docker-Dienst anlegen ==&lt;br /&gt;
Hier wird davon ausgegangen, dass es sich um einen Dockerdienst handelt, der auf einem Port wie 80 oder 443 angesprochen werden soll. Wir gehen davon aus, dass das Portmapping &amp;quot;127.0.0.1:10443:443&amp;quot; ist, also der Container den Port 10443 auf das lokale Interface öffnet und mit dem Container-Port 10443 mappt. Weiter gehen wir davon aus, dass der Service über die Subdomain &amp;quot;&#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&amp;quot; über HTTP und HTTPS erreichbar sein soll. HTTP wird auf HTTPS weitergeleitet.&lt;br /&gt;
&lt;br /&gt;
# Erstellung der Sub-Domain &#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&lt;br /&gt;
## [mailto:puetter@tisento.com Torsten] diese Sub-Domain dem Server zuweisen lassen.&lt;br /&gt;
## Für das SSL-Zertifikat muss die Domain öffentlich erreichbar sein!&lt;br /&gt;
# Erstellung der Konfiguration im nginx Service&lt;br /&gt;
## Erstellung einer Datei sub.tisento.com.conf in dem Pfad /var/www/nginx.tisento.com/nginx/...&lt;br /&gt;
## Hinzufügen von dem Inhalt:&amp;lt;blockquote&amp;gt;adasdsa&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
## Prüfung ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neu laden&lt;br /&gt;
## Hinzufügen eines Zertifikates mit dem Befehl:&lt;br /&gt;
### asdasd&lt;br /&gt;
## Hinzufügen der SSL Konfuguration zur Datei (sub.tisento.com.conf)&lt;br /&gt;
## Prüfen ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neuladen&lt;br /&gt;
# Prüfen der Verbindung&lt;br /&gt;
&lt;br /&gt;
== Datev-Relay Einstellungen ==&lt;br /&gt;
&lt;br /&gt;
=== Netzwerk ===&lt;br /&gt;
Hinzufügen:&lt;br /&gt;
 sudo nano /etc/iproute2/rt_tables&lt;br /&gt;
 100 eth0table&lt;br /&gt;
 101 eth1table&lt;br /&gt;
Erstellen:&lt;br /&gt;
 sudo nano /usr/local/sbin/custom-routes.sh&lt;br /&gt;
 ip route add 172.22.0.0/24 dev eth0 src 172.22.0.224 table eth0table&lt;br /&gt;
 ip route add default via 172.22.0.254 dev eth0 table eth0table&lt;br /&gt;
 ip route add 10.10.10.0/24 dev eth1 src 10.10.10.224 table eth1table&lt;br /&gt;
 ip route add default via 10.10.10.254 dev eth1 table eth1table&lt;br /&gt;
 ip rule add from 172.22.0.224/32 table eth0table&lt;br /&gt;
 ip rule add from 10.10.10.224/32 table eth1table&lt;br /&gt;
Ändern der Rechte:&lt;br /&gt;
 sudo chmod +x /usr/local/sbin/custom-routes.sh&lt;br /&gt;
Erstellen&lt;br /&gt;
 sudo nano /etc/systemd/system/custom-routes.service&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Add custom routes to tables&lt;br /&gt;
 After=network-online.target&lt;br /&gt;
 Wants=network-online.target&lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=oneshot&lt;br /&gt;
 ExecStart=/usr/local/sbin/custom-routes.sh&lt;br /&gt;
 RemainAfterExit=yes&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=multi-user.target&lt;br /&gt;
und aktivieren:&lt;br /&gt;
 sudo systemctl enable custom-routes.service&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Anpassung der Netzwerkeinstellungen&lt;br /&gt;
 sudo nano /etc/netplan/50-cloud-init.yaml&lt;br /&gt;
 network:&lt;br /&gt;
&lt;br /&gt;
   version: 2&lt;br /&gt;
&lt;br /&gt;
   ethernets:&lt;br /&gt;
&lt;br /&gt;
     eth0:&lt;br /&gt;
&lt;br /&gt;
       dhcp4: true&lt;br /&gt;
&lt;br /&gt;
       adresses: [172.22.0.224/24]&lt;br /&gt;
&lt;br /&gt;
       gateway4: 172.22.0.254&lt;br /&gt;
&lt;br /&gt;
       nameservers:&lt;br /&gt;
&lt;br /&gt;
         addresses: [172.22.0.210,172.22.0.254]&lt;br /&gt;
&lt;br /&gt;
     eth1:&lt;br /&gt;
&lt;br /&gt;
       dhcp4: false&lt;br /&gt;
&lt;br /&gt;
       addresses: [10.10.10.224/24]&lt;br /&gt;
&lt;br /&gt;
       gateway4:  10.10.10.254&lt;br /&gt;
&lt;br /&gt;
       nameservers:&lt;br /&gt;
&lt;br /&gt;
         addresses: [8.8.8.8, 9.9.9.9]&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=333</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=333"/>
		<updated>2025-10-27T14:35:53Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: /* Fehlerbehebung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Zugriff==&lt;br /&gt;
Der Docker-Server ist unter der 172.22.0.224 erreichbar.&lt;br /&gt;
&lt;br /&gt;
Der neue Docker-Server wird unter 172.22.0.223 erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
Der Port, Nutzername und auch das Passwort sind im [http://keepass.tisento.com Passbolt] gespeichert.&lt;br /&gt;
&lt;br /&gt;
== Zugriff Dienste ==&lt;br /&gt;
Nachfolgend eine Liste der Dienste die auf dem Docker laufen&lt;br /&gt;
&lt;br /&gt;
* [https://cockpit.tisento.com Cockpit-PROD] &lt;br /&gt;
* [https://cockpit-test.tisento.com Cockpit-TEST]&lt;br /&gt;
* [https://cockpit-dev.tisento.com Cockpit-DEV]&lt;br /&gt;
* [https://monitor.tisento.com UpTime Kuma (Monitor)]&lt;br /&gt;
* [https://portainer.tisento.com Portainer (Docker Verwaltung)]&lt;br /&gt;
* FTP&lt;br /&gt;
* [https://service.tisento.com Ticketsystem / Otobo]&lt;br /&gt;
* NGINX &amp;amp; Certbot (noch nicht als Docker-Container)&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* [https://gitea.tisento.com Git (gitea)] noch nicht installiert&lt;br /&gt;
&lt;br /&gt;
== Neuinstallation ==&lt;br /&gt;
Kopie der &amp;quot;tisento.conf&amp;quot;-Datei in den Ordner: &amp;quot;/etc/ssh/sshd_config.d/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hinzufügen des 9022-Ports zur UFW mit:&lt;br /&gt;
 sudo ufw allow 9022/tcp&lt;br /&gt;
Einschalten der ufw mit&lt;br /&gt;
 sudo ufw enable&lt;br /&gt;
&lt;br /&gt;
=== Installation vom Docker (https://docs.docker.com/engine/install/ubuntu/): ===&lt;br /&gt;
Install using the &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository&lt;br /&gt;
&lt;br /&gt;
Before you install Docker Engine for the first time on a new host machine, you need to set up the Docker &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository. Afterward, you can install and update Docker from the repository.&lt;br /&gt;
&lt;br /&gt;
* Set up Docker&#039;s &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository.&lt;br /&gt;
&lt;br /&gt;
 # Add Docker&#039;s official GPG key:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu/gpg&amp;lt;/nowiki&amp;gt; -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
 &lt;br /&gt;
 # Add the repository to Apt sources:&lt;br /&gt;
 echo \&lt;br /&gt;
 &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu&amp;lt;/nowiki&amp;gt; \&lt;br /&gt;
 $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;${UBUNTU_CODENAME:-$VERSION_CODENAME}&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
* Install the Docker packages.&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
* Verify that the installation is successful by running the &amp;lt;code&amp;gt;hello-world&amp;lt;/code&amp;gt; image:&lt;br /&gt;
&lt;br /&gt;
 sudo docker run hello-world&lt;br /&gt;
&lt;br /&gt;
=== Installation der Sonstigen Softare (s.u.) ===&lt;br /&gt;
via &amp;quot;sudo apt install ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Kopie des Docker-Repos ===&lt;br /&gt;
Kopie des Repos in &amp;quot;/srv/tisento-docker&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Dort muss als erstes &amp;quot;portainer gestartet und wiederhergestellt werden.&lt;br /&gt;
&lt;br /&gt;
Danach wird gitea gestartet und wiederhergestellt. (Damit die repos gezogen werden können)&lt;br /&gt;
&lt;br /&gt;
Danach nach und nach die anderen Services wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
=== Einstellung UFW ===&lt;br /&gt;
 sudo ufw allow 80/tcp&lt;br /&gt;
&lt;br /&gt;
 sudo ufw allow 443/tcp&lt;br /&gt;
&lt;br /&gt;
== Sonstige Software (nicht vollständig, muss überarbeitet werden!) ==&lt;br /&gt;
&lt;br /&gt;
* Docker (s.o.)&lt;br /&gt;
* git&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* cron (Wiederkehrende Aufgaben, bspw. Backups)&lt;br /&gt;
* ncdu (Speicherbelegung)&lt;br /&gt;
* nmon (Monitoring)&lt;br /&gt;
* cifs-utils (Mounting Laufwerke)&lt;br /&gt;
* zip&lt;br /&gt;
* sshpass (sftp transer)&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Docker-Dienste ==&lt;br /&gt;
Die meisten Dienste sind mit ihren Daten und Definitionen unter /var/html/dienst.tisento.com erreichbar.&lt;br /&gt;
&lt;br /&gt;
Dabei sind in dem Ordner /var/html/dienst.tisento.com/.docker die Definitionen der Docker-Container.&lt;br /&gt;
&lt;br /&gt;
In dem Ordner /var/html/dienst.tisento.com/backups sind die jeweiligen Backups der Daten.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F2)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst. &lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/srv/tisento-docker/cockpit-prod/backups gespeichert. Das tägliche Backup wird nach 30 Tagen gelöscht, die monatlichen nach einem Jahr und die jährlichen Backups nie.&lt;br /&gt;
&lt;br /&gt;
EVTL. NOCH MONITOR HINZUFÜGEN DER BACKUP TÄGLICH PRÜFT!&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Mounting der Laufwerke via:&lt;br /&gt;
 sudo mount.cifs -v //172.22.0.245/cockpit/_Daten /srv/tisento-docker/cockpit-prod/html/_Daten/ --verbose -o user=us,password=pw,domain=TISENTOSAN2,vers=2.0,uid=33,gid=33&lt;br /&gt;
Die ID 33 muss ggfs. angepasst werden um&lt;br /&gt;
 id www-data&lt;br /&gt;
damit die Rechte passen.&lt;br /&gt;
&lt;br /&gt;
Es müssen auch die Laufwerke _Cockpit_Daten und _Cockpit_Verwaltung gemounted werden.&lt;br /&gt;
&lt;br /&gt;
Weiter müssen ggfs. einige &amp;quot;.env&amp;quot;-Dateien angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;html/api/connection/.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;.docker/backup/backup.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Siehe die jeweiligen &amp;quot;*.env.example&amp;quot;-Dateien&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach muss das Backup der HTML-Dateien in das Verzeichnis /srv/tisento-docker/cockpit-prod/html kopiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach müssen noch die SQL-Dateien eingespielt werden:&lt;br /&gt;
&lt;br /&gt;
Dazu die SQL-Datei in den Server laden (&amp;quot;root&amp;quot; =&amp;gt; user, &amp;quot;test&amp;quot; ist das Passwort).&lt;br /&gt;
&lt;br /&gt;
Evtl. muss die erste Zeile gelöscht werden:&lt;br /&gt;
 tail -n +2 cockpit-dev_db.sql &amp;gt; cockpit-dev_db2.sql&lt;br /&gt;
&lt;br /&gt;
 sudo docker exec -i cockpit-prod-db-1 mariadb -u root -ptest &amp;lt; cockpit-prod_db.sql&lt;br /&gt;
Danach muss das Root-PW händisch geändert werden (bspw. im PMA)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;WICHTIG:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Daten beim LX DW-Importer müssen auch geändert werden!&#039;&#039;&#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-test.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-test.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Siehe PROD (ohne Mounting)&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-dev.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-dev.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Siehe PROD (ohne Mounting)&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Überwachung der diversen Docker-Container, als auch für diverse Systeme da (z.B. HEALTH, also CPU, RAM, HDD von diversen Servern).&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/monitor.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das /data -Verzeichnis gesichert&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Kopie des /data-Verzeichnisses zurück nach /srv/tisento-docker/monitor/app/data. Es muss evtl. die Datei backup_db.db in kuma.db umbenannt werden&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Verwaltung der verschiedenen Docker-Container notwendig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/portainer.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das data-Verzeichnis gesichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Das data-Verzeichnis muss in /srv/tisento-docker/portainer/data gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Dieses Tool ist für die FTP-Verbindung zu den jeweiligen HTML-Verzeichnissen von [https://cockpit.tisento.com cockpit.tisento.com], [https://cockpit-test.tisento.com cockpit-test.tisento.com] und [https://cockpit-dev.tisento.com cockpit-dev.tisento.com] zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/ftp.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird die pureftpd.passwd Datei als backup gespeichert. Diese beinhaltet die FTP-Verzeichnisse und Server und Passwörter.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die pureftpd.passwd muss in das Verzeichnis /srv/tisento-docker/ftp/.docker/passwd/ lopiert werden.&lt;br /&gt;
&lt;br /&gt;
Es muss in dem docker-compose evtl. die Zeile &amp;quot;PUBLICHOST: &amp;quot;172.22.0.223&amp;quot;&amp;quot; angepasst werden.&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Erstellung und Verwaltung der Tickets zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Fehlerbehebung ====&lt;br /&gt;
Wenn bspw. die Festplatte vom Docker-Server vollgelaufen ist, dann müssen die Dienste einmal neugestartet werden.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann es sein, dass man die Caches mit folgenden Befehlen (im Daemon) löscht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Cache::Delete&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Config::Rebuild --cleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Loader::CacheCleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn es in dem DB-Container zu dem Fehler kommt:&lt;br /&gt;
 2025-10-13 10:56:49 0 [ERROR] Could not open mysql.plugin table: &amp;quot;Unknown storage engine &#039;Aria&#039;&amp;quot;. Some plugins may be not loaded&lt;br /&gt;
 2025-10-13 10:56:49 0 [ERROR] Failed to initialize plugins.&lt;br /&gt;
 2025-10-13 10:56:49 0 [ERROR] Aborting&lt;br /&gt;
Dann müssen in dem DB-Container die ARIA-Files gelöscht werden:&lt;br /&gt;
&lt;br /&gt;
Container stoppen, danach das Volume mounten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;docker run --rm -it -v tisento_cloud_mariadb_data:/var/lib/mysql alpine sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und dann die Aria-Files in dem Ordner /var/lib/mysql löschen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cd /var/lib/mysql&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;rm aria_log.*&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach Container starten und testen&lt;br /&gt;
&lt;br /&gt;
=== NGINX (noch nicht als Docker-Container) ===&lt;br /&gt;
nginx ist ein Reverse-Proxy, damit die verschiedenen Domains den richtigen Weg zu den Services finden.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /srv/tisento-docker/SERVICENAME/.....&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es werden die verzeichnisse certbot and nginx gebackupped&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die beiden Verzeichnisse müssen in /srv/tisento-docker/nginx/nginx und srv/tisento-docker/nginx/certbot kopiert werden! &lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird einmal am Tag die Liste mit den Regeln abgespeichert.&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Erstellen der einzelnen Richtlinien mit:&lt;br /&gt;
 sudo ufw allow 10021/tcp&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Die Daten befinden sich unter /srv/tisento-docker/gitea/data.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das data-Verzeichnis gesichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Das data-Verzeichnis muss in /srv/tisento-docker/portainer/data gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
=== Recovery (git &amp;amp; wiki) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
In diesem Dienst wird von dem aktuellen Git-Repo ein Backup gemacht, weiter wird auch diese Wiki-Seite gesichert, damit die Daten hiermit wiederhergestellt werden können&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die Daten müssen entpackt werden. Dann dem PDF folgen!&lt;br /&gt;
&lt;br /&gt;
== Backup // Wiederherstellung ==&lt;br /&gt;
Jeder Service hat ein eigenes Backup-System.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden gemeinsam per FTP auf den Server XY übertragen. (TODO)&lt;br /&gt;
&lt;br /&gt;
Dort läuft ein kleiner PHP-Cronjob, der diese Backups in ein anderes Verzeichnis überträgt. (TODO)&lt;br /&gt;
&lt;br /&gt;
Diese Dateien werden für eine Wiederherstellung benötigt!&lt;br /&gt;
&lt;br /&gt;
=== Wiederherstellung ===&lt;br /&gt;
Für die Wiederherstellung werden die Backups vom Server benötigt. Weiter wird diese Anleitung benötigt.&lt;br /&gt;
&lt;br /&gt;
Weiter wird für ein vollständigen Backups  ein neuer Server benötigt, dort müssen folgende Schritte in der Reihenfolge ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Installation s.o. &amp;quot;Neuinstallation&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Außerdem muss der DNS und weitere Weiterleitungen der entsprechenden Domains auf den neuen Server geändert werden!&lt;br /&gt;
&lt;br /&gt;
Es werden auch einige Passwörter gebraucht. Dieses sind in keepass.tisento.com und auch in der Passwort-Datei abgespeichert. Diese kann mit dem üblichen Passwort geöffnet werden (TODO)!&lt;br /&gt;
&lt;br /&gt;
Kopie des git-Repos in dem Verzeichnis /srv/tisento-docker/.&lt;br /&gt;
&lt;br /&gt;
Per SSH Beispielsweise mit dem CMD zum Server kopiert werden:&lt;br /&gt;
 sudo scp -P XXXX /srv/tisento-docker/nginx/backups/daily/backup_nginx_20250620_020000.tar.gz USER@IP:/tmp/nginx.tar.gz&lt;br /&gt;
Entpacken der Dateien mit bspw.:&lt;br /&gt;
 tar -xvzf yourfile.tar.gz -C /path/to/your/special/folder&lt;br /&gt;
Wiederherstellung nginx s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung Portainer s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung gitea s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der restlichen Docker-Services mithilfe der Docker-Compose-Dateien in gitea. Alternativ sind die Docker-Compose-Dateien auch in den Backup gespeichert und wurden im best-case zu &amp;quot;/srv/tisento-docker&amp;quot; zurückgespielt!&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der einzelnen Daten der Services mithilfe der obigen Erklärungen.&lt;br /&gt;
&lt;br /&gt;
== Test der Systeme ==&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP &amp;amp; V-Laufwerk prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Aufruf der Website, schauen, ob alle Monitore noch vorhanden sind.&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Aufruf der Website und schauen, ob zu den Containern eine Verbindung herstgestellt wird.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Hestellung der Verbindung zu Cockpit-Prod,-Test und -Dev.&lt;br /&gt;
&lt;br /&gt;
Testübertragung (bspw. Task) und test davon!&lt;br /&gt;
&lt;br /&gt;
Ansonsten einfach mal die index.html umbenennen!&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Erstellung eines Test-Tickets via Mail an: support@tisento.com &lt;br /&gt;
&lt;br /&gt;
Prüfen, ob dieses Ticket in der GUI auftaucht.&lt;br /&gt;
&lt;br /&gt;
Antworten auf dieses Ticket und schauen, ob die Antwort in dem Mail-Client ankommt.&lt;br /&gt;
&lt;br /&gt;
=== NGINX ===&lt;br /&gt;
&lt;br /&gt;
Aufrufen der diversen Websiten.&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Anmeldung mit dem AD-Nutzern&lt;br /&gt;
&lt;br /&gt;
== Neuen Docker-Dienst anlegen ==&lt;br /&gt;
Hier wird davon ausgegangen, dass es sich um einen Dockerdienst handelt, der auf einem Port wie 80 oder 443 angesprochen werden soll. Wir gehen davon aus, dass das Portmapping &amp;quot;127.0.0.1:10443:443&amp;quot; ist, also der Container den Port 10443 auf das lokale Interface öffnet und mit dem Container-Port 10443 mappt. Weiter gehen wir davon aus, dass der Service über die Subdomain &amp;quot;&#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&amp;quot; über HTTP und HTTPS erreichbar sein soll. HTTP wird auf HTTPS weitergeleitet.&lt;br /&gt;
&lt;br /&gt;
# Erstellung der Sub-Domain &#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&lt;br /&gt;
## [mailto:puetter@tisento.com Torsten] diese Sub-Domain dem Server zuweisen lassen.&lt;br /&gt;
## Für das SSL-Zertifikat muss die Domain öffentlich erreichbar sein!&lt;br /&gt;
# Erstellung der Konfiguration im nginx Service&lt;br /&gt;
## Erstellung einer Datei sub.tisento.com.conf in dem Pfad /var/www/nginx.tisento.com/nginx/...&lt;br /&gt;
## Hinzufügen von dem Inhalt:&amp;lt;blockquote&amp;gt;adasdsa&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
## Prüfung ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neu laden&lt;br /&gt;
## Hinzufügen eines Zertifikates mit dem Befehl:&lt;br /&gt;
### asdasd&lt;br /&gt;
## Hinzufügen der SSL Konfuguration zur Datei (sub.tisento.com.conf)&lt;br /&gt;
## Prüfen ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neuladen&lt;br /&gt;
# Prüfen der Verbindung&lt;br /&gt;
&lt;br /&gt;
== Datev-Relay Einstellungen ==&lt;br /&gt;
&lt;br /&gt;
=== Netzwerk ===&lt;br /&gt;
Hinzufügen:&lt;br /&gt;
 sudo nano /etc/iproute2/rt_tables&lt;br /&gt;
 100 eth0table&lt;br /&gt;
 101 eth1table&lt;br /&gt;
Erstellen:&lt;br /&gt;
 sudo nano /usr/local/sbin/custom-routes.sh&lt;br /&gt;
 ip route add 172.22.0.0/24 dev eth0 src 172.22.0.224 table eth0table&lt;br /&gt;
 ip route add default via 172.22.0.254 dev eth0 table eth0table&lt;br /&gt;
 ip route add 10.10.10.0/24 dev eth1 src 10.10.10.224 table eth1table&lt;br /&gt;
 ip route add default via 10.10.10.254 dev eth1 table eth1table&lt;br /&gt;
 ip rule add from 172.22.0.224/32 table eth0table&lt;br /&gt;
 ip rule add from 10.10.10.224/32 table eth1table&lt;br /&gt;
Ändern der Rechte:&lt;br /&gt;
 sudo chmod +x /usr/local/sbin/custom-routes.sh&lt;br /&gt;
Erstellen&lt;br /&gt;
 sudo nano /etc/systemd/system/custom-routes.service&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Add custom routes to tables&lt;br /&gt;
 After=network-online.target&lt;br /&gt;
 Wants=network-online.target&lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=oneshot&lt;br /&gt;
 ExecStart=/usr/local/sbin/custom-routes.sh&lt;br /&gt;
 RemainAfterExit=yes&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=multi-user.target&lt;br /&gt;
und aktivieren:&lt;br /&gt;
 sudo systemctl enable custom-routes.service&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Anpassung der Netzwerkeinstellungen&lt;br /&gt;
 sudo nano /etc/netplan/50-cloud-init.yaml&lt;br /&gt;
 network:&lt;br /&gt;
&lt;br /&gt;
   version: 2&lt;br /&gt;
&lt;br /&gt;
   ethernets:&lt;br /&gt;
&lt;br /&gt;
     eth0:&lt;br /&gt;
&lt;br /&gt;
       dhcp4: true&lt;br /&gt;
&lt;br /&gt;
       adresses: [172.22.0.224/24]&lt;br /&gt;
&lt;br /&gt;
       gateway4: 172.22.0.254&lt;br /&gt;
&lt;br /&gt;
       nameservers:&lt;br /&gt;
&lt;br /&gt;
         addresses: [172.22.0.210,172.22.0.254]&lt;br /&gt;
&lt;br /&gt;
     eth1:&lt;br /&gt;
&lt;br /&gt;
       dhcp4: false&lt;br /&gt;
&lt;br /&gt;
       addresses: [10.10.10.224/24]&lt;br /&gt;
&lt;br /&gt;
       gateway4:  10.10.10.254&lt;br /&gt;
&lt;br /&gt;
       nameservers:&lt;br /&gt;
&lt;br /&gt;
         addresses: [8.8.8.8, 9.9.9.9]&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=332</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=332"/>
		<updated>2025-10-13T11:04:13Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: /* Fehlerbehebung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Zugriff==&lt;br /&gt;
Der Docker-Server ist unter der 172.22.0.224 erreichbar.&lt;br /&gt;
&lt;br /&gt;
Der neue Docker-Server wird unter 172.22.0.223 erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
Der Port, Nutzername und auch das Passwort sind im [http://keepass.tisento.com Passbolt] gespeichert.&lt;br /&gt;
&lt;br /&gt;
== Zugriff Dienste ==&lt;br /&gt;
Nachfolgend eine Liste der Dienste die auf dem Docker laufen&lt;br /&gt;
&lt;br /&gt;
* [https://cockpit.tisento.com Cockpit-PROD] &lt;br /&gt;
* [https://cockpit-test.tisento.com Cockpit-TEST]&lt;br /&gt;
* [https://cockpit-dev.tisento.com Cockpit-DEV]&lt;br /&gt;
* [https://monitor.tisento.com UpTime Kuma (Monitor)]&lt;br /&gt;
* [https://portainer.tisento.com Portainer (Docker Verwaltung)]&lt;br /&gt;
* FTP&lt;br /&gt;
* [https://service.tisento.com Ticketsystem / Otobo]&lt;br /&gt;
* NGINX &amp;amp; Certbot (noch nicht als Docker-Container)&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* [https://gitea.tisento.com Git (gitea)] noch nicht installiert&lt;br /&gt;
&lt;br /&gt;
== Neuinstallation ==&lt;br /&gt;
Kopie der &amp;quot;tisento.conf&amp;quot;-Datei in den Ordner: &amp;quot;/etc/ssh/sshd_config.d/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hinzufügen des 9022-Ports zur UFW mit:&lt;br /&gt;
 sudo ufw allow 9022/tcp&lt;br /&gt;
Einschalten der ufw mit&lt;br /&gt;
 sudo ufw enable&lt;br /&gt;
&lt;br /&gt;
=== Installation vom Docker (https://docs.docker.com/engine/install/ubuntu/): ===&lt;br /&gt;
Install using the &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository&lt;br /&gt;
&lt;br /&gt;
Before you install Docker Engine for the first time on a new host machine, you need to set up the Docker &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository. Afterward, you can install and update Docker from the repository.&lt;br /&gt;
&lt;br /&gt;
* Set up Docker&#039;s &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository.&lt;br /&gt;
&lt;br /&gt;
 # Add Docker&#039;s official GPG key:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu/gpg&amp;lt;/nowiki&amp;gt; -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
 &lt;br /&gt;
 # Add the repository to Apt sources:&lt;br /&gt;
 echo \&lt;br /&gt;
 &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu&amp;lt;/nowiki&amp;gt; \&lt;br /&gt;
 $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;${UBUNTU_CODENAME:-$VERSION_CODENAME}&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
* Install the Docker packages.&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
* Verify that the installation is successful by running the &amp;lt;code&amp;gt;hello-world&amp;lt;/code&amp;gt; image:&lt;br /&gt;
&lt;br /&gt;
 sudo docker run hello-world&lt;br /&gt;
&lt;br /&gt;
=== Installation der Sonstigen Softare (s.u.) ===&lt;br /&gt;
via &amp;quot;sudo apt install ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Kopie des Docker-Repos ===&lt;br /&gt;
Kopie des Repos in &amp;quot;/srv/tisento-docker&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Dort muss als erstes &amp;quot;portainer gestartet und wiederhergestellt werden.&lt;br /&gt;
&lt;br /&gt;
Danach wird gitea gestartet und wiederhergestellt. (Damit die repos gezogen werden können)&lt;br /&gt;
&lt;br /&gt;
Danach nach und nach die anderen Services wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
=== Einstellung UFW ===&lt;br /&gt;
 sudo ufw allow 80/tcp&lt;br /&gt;
&lt;br /&gt;
 sudo ufw allow 443/tcp&lt;br /&gt;
&lt;br /&gt;
== Sonstige Software (nicht vollständig, muss überarbeitet werden!) ==&lt;br /&gt;
&lt;br /&gt;
* Docker (s.o.)&lt;br /&gt;
* git&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* cron (Wiederkehrende Aufgaben, bspw. Backups)&lt;br /&gt;
* ncdu (Speicherbelegung)&lt;br /&gt;
* nmon (Monitoring)&lt;br /&gt;
* cifs-utils (Mounting Laufwerke)&lt;br /&gt;
* zip&lt;br /&gt;
* sshpass (sftp transer)&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Docker-Dienste ==&lt;br /&gt;
Die meisten Dienste sind mit ihren Daten und Definitionen unter /var/html/dienst.tisento.com erreichbar.&lt;br /&gt;
&lt;br /&gt;
Dabei sind in dem Ordner /var/html/dienst.tisento.com/.docker die Definitionen der Docker-Container.&lt;br /&gt;
&lt;br /&gt;
In dem Ordner /var/html/dienst.tisento.com/backups sind die jeweiligen Backups der Daten.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F2)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst. &lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/srv/tisento-docker/cockpit-prod/backups gespeichert. Das tägliche Backup wird nach 30 Tagen gelöscht, die monatlichen nach einem Jahr und die jährlichen Backups nie.&lt;br /&gt;
&lt;br /&gt;
EVTL. NOCH MONITOR HINZUFÜGEN DER BACKUP TÄGLICH PRÜFT!&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Mounting der Laufwerke via:&lt;br /&gt;
 sudo mount.cifs -v //172.22.0.245/cockpit/_Daten /srv/tisento-docker/cockpit-prod/html/_Daten/ --verbose -o user=us,password=pw,domain=TISENTOSAN2,vers=2.0,uid=33,gid=33&lt;br /&gt;
Die ID 33 muss ggfs. angepasst werden um&lt;br /&gt;
 id www-data&lt;br /&gt;
damit die Rechte passen.&lt;br /&gt;
&lt;br /&gt;
Es müssen auch die Laufwerke _Cockpit_Daten und _Cockpit_Verwaltung gemounted werden.&lt;br /&gt;
&lt;br /&gt;
Weiter müssen ggfs. einige &amp;quot;.env&amp;quot;-Dateien angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;html/api/connection/.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;.docker/backup/backup.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Siehe die jeweiligen &amp;quot;*.env.example&amp;quot;-Dateien&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach muss das Backup der HTML-Dateien in das Verzeichnis /srv/tisento-docker/cockpit-prod/html kopiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach müssen noch die SQL-Dateien eingespielt werden:&lt;br /&gt;
&lt;br /&gt;
Dazu die SQL-Datei in den Server laden (&amp;quot;root&amp;quot; =&amp;gt; user, &amp;quot;test&amp;quot; ist das Passwort).&lt;br /&gt;
&lt;br /&gt;
Evtl. muss die erste Zeile gelöscht werden:&lt;br /&gt;
 tail -n +2 cockpit-dev_db.sql &amp;gt; cockpit-dev_db2.sql&lt;br /&gt;
&lt;br /&gt;
 sudo docker exec -i cockpit-prod-db-1 mariadb -u root -ptest &amp;lt; cockpit-prod_db.sql&lt;br /&gt;
Danach muss das Root-PW händisch geändert werden (bspw. im PMA)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;WICHTIG:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Daten beim LX DW-Importer müssen auch geändert werden!&#039;&#039;&#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-test.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-test.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Siehe PROD (ohne Mounting)&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-dev.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-dev.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Siehe PROD (ohne Mounting)&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Überwachung der diversen Docker-Container, als auch für diverse Systeme da (z.B. HEALTH, also CPU, RAM, HDD von diversen Servern).&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/monitor.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das /data -Verzeichnis gesichert&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Kopie des /data-Verzeichnisses zurück nach /srv/tisento-docker/monitor/app/data. Es muss evtl. die Datei backup_db.db in kuma.db umbenannt werden&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Verwaltung der verschiedenen Docker-Container notwendig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/portainer.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das data-Verzeichnis gesichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Das data-Verzeichnis muss in /srv/tisento-docker/portainer/data gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Dieses Tool ist für die FTP-Verbindung zu den jeweiligen HTML-Verzeichnissen von [https://cockpit.tisento.com cockpit.tisento.com], [https://cockpit-test.tisento.com cockpit-test.tisento.com] und [https://cockpit-dev.tisento.com cockpit-dev.tisento.com] zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/ftp.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird die pureftpd.passwd Datei als backup gespeichert. Diese beinhaltet die FTP-Verzeichnisse und Server und Passwörter.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die pureftpd.passwd muss in das Verzeichnis /srv/tisento-docker/ftp/.docker/passwd/ lopiert werden.&lt;br /&gt;
&lt;br /&gt;
Es muss in dem docker-compose evtl. die Zeile &amp;quot;PUBLICHOST: &amp;quot;172.22.0.223&amp;quot;&amp;quot; angepasst werden.&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Erstellung und Verwaltung der Tickets zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Fehlerbehebung ====&lt;br /&gt;
Wenn bspw. die Festplatte vom Docker-Server vollgelaufen ist, dann müssen die Dienste einmal neugestartet werden.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann es sein, dass man die Caches mit folgenden Befehlen (im Daemon) löscht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Cache::Delete&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Config::Rebuild --cleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Loader::CacheCleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn es in dem DB-Container zu dem Fehler kommt:&lt;br /&gt;
 2025-10-13 10:56:49 0 [ERROR] Could not open mysql.plugin table: &amp;quot;Unknown storage engine &#039;Aria&#039;&amp;quot;. Some plugins may be not loaded&lt;br /&gt;
 2025-10-13 10:56:49 0 [ERROR] Failed to initialize plugins.&lt;br /&gt;
 2025-10-13 10:56:49 0 [ERROR] Aborting&lt;br /&gt;
Dann müssen in dem DB-Container die ARIA-Files gelöscht werden:&lt;br /&gt;
&lt;br /&gt;
Container stoppen, danach das Volume mounten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;docker run --rm -it -v cloud_mariadb_data:/var/lib/mysql alpine sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und dann die Aria-Files in dem Ordner /var/lib/mysql löschen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cd /var/lib/mysql&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;rm aria_log.*&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach Container starten und testen&lt;br /&gt;
&lt;br /&gt;
=== NGINX (noch nicht als Docker-Container) ===&lt;br /&gt;
nginx ist ein Reverse-Proxy, damit die verschiedenen Domains den richtigen Weg zu den Services finden.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /srv/tisento-docker/SERVICENAME/.....&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es werden die verzeichnisse certbot and nginx gebackupped&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die beiden Verzeichnisse müssen in /srv/tisento-docker/nginx/nginx und srv/tisento-docker/nginx/certbot kopiert werden! &lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird einmal am Tag die Liste mit den Regeln abgespeichert.&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Erstellen der einzelnen Richtlinien mit:&lt;br /&gt;
 sudo ufw allow 10021/tcp&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Die Daten befinden sich unter /srv/tisento-docker/gitea/data.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das data-Verzeichnis gesichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Das data-Verzeichnis muss in /srv/tisento-docker/portainer/data gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
=== Recovery (git &amp;amp; wiki) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
In diesem Dienst wird von dem aktuellen Git-Repo ein Backup gemacht, weiter wird auch diese Wiki-Seite gesichert, damit die Daten hiermit wiederhergestellt werden können&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die Daten müssen entpackt werden. Dann dem PDF folgen!&lt;br /&gt;
&lt;br /&gt;
== Backup // Wiederherstellung ==&lt;br /&gt;
Jeder Service hat ein eigenes Backup-System.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden gemeinsam per FTP auf den Server XY übertragen. (TODO)&lt;br /&gt;
&lt;br /&gt;
Dort läuft ein kleiner PHP-Cronjob, der diese Backups in ein anderes Verzeichnis überträgt. (TODO)&lt;br /&gt;
&lt;br /&gt;
Diese Dateien werden für eine Wiederherstellung benötigt!&lt;br /&gt;
&lt;br /&gt;
=== Wiederherstellung ===&lt;br /&gt;
Für die Wiederherstellung werden die Backups vom Server benötigt. Weiter wird diese Anleitung benötigt.&lt;br /&gt;
&lt;br /&gt;
Weiter wird für ein vollständigen Backups  ein neuer Server benötigt, dort müssen folgende Schritte in der Reihenfolge ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Installation s.o. &amp;quot;Neuinstallation&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Außerdem muss der DNS und weitere Weiterleitungen der entsprechenden Domains auf den neuen Server geändert werden!&lt;br /&gt;
&lt;br /&gt;
Es werden auch einige Passwörter gebraucht. Dieses sind in keepass.tisento.com und auch in der Passwort-Datei abgespeichert. Diese kann mit dem üblichen Passwort geöffnet werden (TODO)!&lt;br /&gt;
&lt;br /&gt;
Kopie des git-Repos in dem Verzeichnis /srv/tisento-docker/.&lt;br /&gt;
&lt;br /&gt;
Per SSH Beispielsweise mit dem CMD zum Server kopiert werden:&lt;br /&gt;
 sudo scp -P XXXX /srv/tisento-docker/nginx/backups/daily/backup_nginx_20250620_020000.tar.gz USER@IP:/tmp/nginx.tar.gz&lt;br /&gt;
Entpacken der Dateien mit bspw.:&lt;br /&gt;
 tar -xvzf yourfile.tar.gz -C /path/to/your/special/folder&lt;br /&gt;
Wiederherstellung nginx s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung Portainer s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung gitea s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der restlichen Docker-Services mithilfe der Docker-Compose-Dateien in gitea. Alternativ sind die Docker-Compose-Dateien auch in den Backup gespeichert und wurden im best-case zu &amp;quot;/srv/tisento-docker&amp;quot; zurückgespielt!&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der einzelnen Daten der Services mithilfe der obigen Erklärungen.&lt;br /&gt;
&lt;br /&gt;
== Test der Systeme ==&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP &amp;amp; V-Laufwerk prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Aufruf der Website, schauen, ob alle Monitore noch vorhanden sind.&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Aufruf der Website und schauen, ob zu den Containern eine Verbindung herstgestellt wird.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Hestellung der Verbindung zu Cockpit-Prod,-Test und -Dev.&lt;br /&gt;
&lt;br /&gt;
Testübertragung (bspw. Task) und test davon!&lt;br /&gt;
&lt;br /&gt;
Ansonsten einfach mal die index.html umbenennen!&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Erstellung eines Test-Tickets via Mail an: support@tisento.com &lt;br /&gt;
&lt;br /&gt;
Prüfen, ob dieses Ticket in der GUI auftaucht.&lt;br /&gt;
&lt;br /&gt;
Antworten auf dieses Ticket und schauen, ob die Antwort in dem Mail-Client ankommt.&lt;br /&gt;
&lt;br /&gt;
=== NGINX ===&lt;br /&gt;
&lt;br /&gt;
Aufrufen der diversen Websiten.&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Anmeldung mit dem AD-Nutzern&lt;br /&gt;
&lt;br /&gt;
== Neuen Docker-Dienst anlegen ==&lt;br /&gt;
Hier wird davon ausgegangen, dass es sich um einen Dockerdienst handelt, der auf einem Port wie 80 oder 443 angesprochen werden soll. Wir gehen davon aus, dass das Portmapping &amp;quot;127.0.0.1:10443:443&amp;quot; ist, also der Container den Port 10443 auf das lokale Interface öffnet und mit dem Container-Port 10443 mappt. Weiter gehen wir davon aus, dass der Service über die Subdomain &amp;quot;&#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&amp;quot; über HTTP und HTTPS erreichbar sein soll. HTTP wird auf HTTPS weitergeleitet.&lt;br /&gt;
&lt;br /&gt;
# Erstellung der Sub-Domain &#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&lt;br /&gt;
## [mailto:puetter@tisento.com Torsten] diese Sub-Domain dem Server zuweisen lassen.&lt;br /&gt;
## Für das SSL-Zertifikat muss die Domain öffentlich erreichbar sein!&lt;br /&gt;
# Erstellung der Konfiguration im nginx Service&lt;br /&gt;
## Erstellung einer Datei sub.tisento.com.conf in dem Pfad /var/www/nginx.tisento.com/nginx/...&lt;br /&gt;
## Hinzufügen von dem Inhalt:&amp;lt;blockquote&amp;gt;adasdsa&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
## Prüfung ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neu laden&lt;br /&gt;
## Hinzufügen eines Zertifikates mit dem Befehl:&lt;br /&gt;
### asdasd&lt;br /&gt;
## Hinzufügen der SSL Konfuguration zur Datei (sub.tisento.com.conf)&lt;br /&gt;
## Prüfen ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neuladen&lt;br /&gt;
# Prüfen der Verbindung&lt;br /&gt;
&lt;br /&gt;
== Datev-Relay Einstellungen ==&lt;br /&gt;
&lt;br /&gt;
=== Netzwerk ===&lt;br /&gt;
Hinzufügen:&lt;br /&gt;
 sudo nano /etc/iproute2/rt_tables&lt;br /&gt;
 100 eth0table&lt;br /&gt;
 101 eth1table&lt;br /&gt;
Erstellen:&lt;br /&gt;
 sudo nano /usr/local/sbin/custom-routes.sh&lt;br /&gt;
 ip route add 172.22.0.0/24 dev eth0 src 172.22.0.224 table eth0table&lt;br /&gt;
 ip route add default via 172.22.0.254 dev eth0 table eth0table&lt;br /&gt;
 ip route add 10.10.10.0/24 dev eth1 src 10.10.10.224 table eth1table&lt;br /&gt;
 ip route add default via 10.10.10.254 dev eth1 table eth1table&lt;br /&gt;
 ip rule add from 172.22.0.224/32 table eth0table&lt;br /&gt;
 ip rule add from 10.10.10.224/32 table eth1table&lt;br /&gt;
Ändern der Rechte:&lt;br /&gt;
 sudo chmod +x /usr/local/sbin/custom-routes.sh&lt;br /&gt;
Erstellen&lt;br /&gt;
 sudo nano /etc/systemd/system/custom-routes.service&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Add custom routes to tables&lt;br /&gt;
 After=network-online.target&lt;br /&gt;
 Wants=network-online.target&lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=oneshot&lt;br /&gt;
 ExecStart=/usr/local/sbin/custom-routes.sh&lt;br /&gt;
 RemainAfterExit=yes&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=multi-user.target&lt;br /&gt;
und aktivieren:&lt;br /&gt;
 sudo systemctl enable custom-routes.service&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Anpassung der Netzwerkeinstellungen&lt;br /&gt;
 sudo nano /etc/netplan/50-cloud-init.yaml&lt;br /&gt;
 network:&lt;br /&gt;
&lt;br /&gt;
   version: 2&lt;br /&gt;
&lt;br /&gt;
   ethernets:&lt;br /&gt;
&lt;br /&gt;
     eth0:&lt;br /&gt;
&lt;br /&gt;
       dhcp4: true&lt;br /&gt;
&lt;br /&gt;
       adresses: [172.22.0.224/24]&lt;br /&gt;
&lt;br /&gt;
       gateway4: 172.22.0.254&lt;br /&gt;
&lt;br /&gt;
       nameservers:&lt;br /&gt;
&lt;br /&gt;
         addresses: [172.22.0.210,172.22.0.254]&lt;br /&gt;
&lt;br /&gt;
     eth1:&lt;br /&gt;
&lt;br /&gt;
       dhcp4: false&lt;br /&gt;
&lt;br /&gt;
       addresses: [10.10.10.224/24]&lt;br /&gt;
&lt;br /&gt;
       gateway4:  10.10.10.254&lt;br /&gt;
&lt;br /&gt;
       nameservers:&lt;br /&gt;
&lt;br /&gt;
         addresses: [8.8.8.8, 9.9.9.9]&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=331</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=331"/>
		<updated>2025-10-08T13:06:09Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: /* Datev-Relay Einstellungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Zugriff==&lt;br /&gt;
Der Docker-Server ist unter der 172.22.0.224 erreichbar.&lt;br /&gt;
&lt;br /&gt;
Der neue Docker-Server wird unter 172.22.0.223 erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
Der Port, Nutzername und auch das Passwort sind im [http://keepass.tisento.com Passbolt] gespeichert.&lt;br /&gt;
&lt;br /&gt;
== Zugriff Dienste ==&lt;br /&gt;
Nachfolgend eine Liste der Dienste die auf dem Docker laufen&lt;br /&gt;
&lt;br /&gt;
* [https://cockpit.tisento.com Cockpit-PROD] &lt;br /&gt;
* [https://cockpit-test.tisento.com Cockpit-TEST]&lt;br /&gt;
* [https://cockpit-dev.tisento.com Cockpit-DEV]&lt;br /&gt;
* [https://monitor.tisento.com UpTime Kuma (Monitor)]&lt;br /&gt;
* [https://portainer.tisento.com Portainer (Docker Verwaltung)]&lt;br /&gt;
* FTP&lt;br /&gt;
* [https://service.tisento.com Ticketsystem / Otobo]&lt;br /&gt;
* NGINX &amp;amp; Certbot (noch nicht als Docker-Container)&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* [https://gitea.tisento.com Git (gitea)] noch nicht installiert&lt;br /&gt;
&lt;br /&gt;
== Neuinstallation ==&lt;br /&gt;
Kopie der &amp;quot;tisento.conf&amp;quot;-Datei in den Ordner: &amp;quot;/etc/ssh/sshd_config.d/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hinzufügen des 9022-Ports zur UFW mit:&lt;br /&gt;
 sudo ufw allow 9022/tcp&lt;br /&gt;
Einschalten der ufw mit&lt;br /&gt;
 sudo ufw enable&lt;br /&gt;
&lt;br /&gt;
=== Installation vom Docker (https://docs.docker.com/engine/install/ubuntu/): ===&lt;br /&gt;
Install using the &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository&lt;br /&gt;
&lt;br /&gt;
Before you install Docker Engine for the first time on a new host machine, you need to set up the Docker &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository. Afterward, you can install and update Docker from the repository.&lt;br /&gt;
&lt;br /&gt;
* Set up Docker&#039;s &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository.&lt;br /&gt;
&lt;br /&gt;
 # Add Docker&#039;s official GPG key:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu/gpg&amp;lt;/nowiki&amp;gt; -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
 &lt;br /&gt;
 # Add the repository to Apt sources:&lt;br /&gt;
 echo \&lt;br /&gt;
 &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu&amp;lt;/nowiki&amp;gt; \&lt;br /&gt;
 $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;${UBUNTU_CODENAME:-$VERSION_CODENAME}&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
* Install the Docker packages.&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
* Verify that the installation is successful by running the &amp;lt;code&amp;gt;hello-world&amp;lt;/code&amp;gt; image:&lt;br /&gt;
&lt;br /&gt;
 sudo docker run hello-world&lt;br /&gt;
&lt;br /&gt;
=== Installation der Sonstigen Softare (s.u.) ===&lt;br /&gt;
via &amp;quot;sudo apt install ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Kopie des Docker-Repos ===&lt;br /&gt;
Kopie des Repos in &amp;quot;/srv/tisento-docker&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Dort muss als erstes &amp;quot;portainer gestartet und wiederhergestellt werden.&lt;br /&gt;
&lt;br /&gt;
Danach wird gitea gestartet und wiederhergestellt. (Damit die repos gezogen werden können)&lt;br /&gt;
&lt;br /&gt;
Danach nach und nach die anderen Services wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
=== Einstellung UFW ===&lt;br /&gt;
 sudo ufw allow 80/tcp&lt;br /&gt;
&lt;br /&gt;
 sudo ufw allow 443/tcp&lt;br /&gt;
&lt;br /&gt;
== Sonstige Software (nicht vollständig, muss überarbeitet werden!) ==&lt;br /&gt;
&lt;br /&gt;
* Docker (s.o.)&lt;br /&gt;
* git&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* cron (Wiederkehrende Aufgaben, bspw. Backups)&lt;br /&gt;
* ncdu (Speicherbelegung)&lt;br /&gt;
* nmon (Monitoring)&lt;br /&gt;
* cifs-utils (Mounting Laufwerke)&lt;br /&gt;
* zip&lt;br /&gt;
* sshpass (sftp transer)&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Docker-Dienste ==&lt;br /&gt;
Die meisten Dienste sind mit ihren Daten und Definitionen unter /var/html/dienst.tisento.com erreichbar.&lt;br /&gt;
&lt;br /&gt;
Dabei sind in dem Ordner /var/html/dienst.tisento.com/.docker die Definitionen der Docker-Container.&lt;br /&gt;
&lt;br /&gt;
In dem Ordner /var/html/dienst.tisento.com/backups sind die jeweiligen Backups der Daten.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F2)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst. &lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/srv/tisento-docker/cockpit-prod/backups gespeichert. Das tägliche Backup wird nach 30 Tagen gelöscht, die monatlichen nach einem Jahr und die jährlichen Backups nie.&lt;br /&gt;
&lt;br /&gt;
EVTL. NOCH MONITOR HINZUFÜGEN DER BACKUP TÄGLICH PRÜFT!&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Mounting der Laufwerke via:&lt;br /&gt;
 sudo mount.cifs -v //172.22.0.245/cockpit/_Daten /srv/tisento-docker/cockpit-prod/html/_Daten/ --verbose -o user=us,password=pw,domain=TISENTOSAN2,vers=2.0,uid=33,gid=33&lt;br /&gt;
Die ID 33 muss ggfs. angepasst werden um&lt;br /&gt;
 id www-data&lt;br /&gt;
damit die Rechte passen.&lt;br /&gt;
&lt;br /&gt;
Es müssen auch die Laufwerke _Cockpit_Daten und _Cockpit_Verwaltung gemounted werden.&lt;br /&gt;
&lt;br /&gt;
Weiter müssen ggfs. einige &amp;quot;.env&amp;quot;-Dateien angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;html/api/connection/.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;.docker/backup/backup.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Siehe die jeweiligen &amp;quot;*.env.example&amp;quot;-Dateien&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach muss das Backup der HTML-Dateien in das Verzeichnis /srv/tisento-docker/cockpit-prod/html kopiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach müssen noch die SQL-Dateien eingespielt werden:&lt;br /&gt;
&lt;br /&gt;
Dazu die SQL-Datei in den Server laden (&amp;quot;root&amp;quot; =&amp;gt; user, &amp;quot;test&amp;quot; ist das Passwort).&lt;br /&gt;
&lt;br /&gt;
Evtl. muss die erste Zeile gelöscht werden:&lt;br /&gt;
 tail -n +2 cockpit-dev_db.sql &amp;gt; cockpit-dev_db2.sql&lt;br /&gt;
&lt;br /&gt;
 sudo docker exec -i cockpit-prod-db-1 mariadb -u root -ptest &amp;lt; cockpit-prod_db.sql&lt;br /&gt;
Danach muss das Root-PW händisch geändert werden (bspw. im PMA)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;WICHTIG:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Daten beim LX DW-Importer müssen auch geändert werden!&#039;&#039;&#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-test.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-test.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Siehe PROD (ohne Mounting)&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-dev.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-dev.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Siehe PROD (ohne Mounting)&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Überwachung der diversen Docker-Container, als auch für diverse Systeme da (z.B. HEALTH, also CPU, RAM, HDD von diversen Servern).&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/monitor.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das /data -Verzeichnis gesichert&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Kopie des /data-Verzeichnisses zurück nach /srv/tisento-docker/monitor/app/data. Es muss evtl. die Datei backup_db.db in kuma.db umbenannt werden&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Verwaltung der verschiedenen Docker-Container notwendig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/portainer.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das data-Verzeichnis gesichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Das data-Verzeichnis muss in /srv/tisento-docker/portainer/data gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Dieses Tool ist für die FTP-Verbindung zu den jeweiligen HTML-Verzeichnissen von [https://cockpit.tisento.com cockpit.tisento.com], [https://cockpit-test.tisento.com cockpit-test.tisento.com] und [https://cockpit-dev.tisento.com cockpit-dev.tisento.com] zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/ftp.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird die pureftpd.passwd Datei als backup gespeichert. Diese beinhaltet die FTP-Verzeichnisse und Server und Passwörter.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die pureftpd.passwd muss in das Verzeichnis /srv/tisento-docker/ftp/.docker/passwd/ lopiert werden.&lt;br /&gt;
&lt;br /&gt;
Es muss in dem docker-compose evtl. die Zeile &amp;quot;PUBLICHOST: &amp;quot;172.22.0.223&amp;quot;&amp;quot; angepasst werden.&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Erstellung und Verwaltung der Tickets zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Fehlerbehebung ====&lt;br /&gt;
Wenn bspw. die Festplatte vom Docker-Server vollgelaufen ist, dann müssen die Dienste einmal neugestartet werden.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann es sein, dass man die Caches mit folgenden Befehlen (im Daemon) löscht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Cache::Delete&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Config::Rebuild --cleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Loader::CacheCleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NGINX (noch nicht als Docker-Container) ===&lt;br /&gt;
nginx ist ein Reverse-Proxy, damit die verschiedenen Domains den richtigen Weg zu den Services finden.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /srv/tisento-docker/SERVICENAME/.....&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es werden die verzeichnisse certbot and nginx gebackupped&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die beiden Verzeichnisse müssen in /srv/tisento-docker/nginx/nginx und srv/tisento-docker/nginx/certbot kopiert werden! &lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird einmal am Tag die Liste mit den Regeln abgespeichert.&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Erstellen der einzelnen Richtlinien mit:&lt;br /&gt;
 sudo ufw allow 10021/tcp&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Die Daten befinden sich unter /srv/tisento-docker/gitea/data.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das data-Verzeichnis gesichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Das data-Verzeichnis muss in /srv/tisento-docker/portainer/data gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
=== Recovery (git &amp;amp; wiki) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
In diesem Dienst wird von dem aktuellen Git-Repo ein Backup gemacht, weiter wird auch diese Wiki-Seite gesichert, damit die Daten hiermit wiederhergestellt werden können&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die Daten müssen entpackt werden. Dann dem PDF folgen!&lt;br /&gt;
&lt;br /&gt;
== Backup // Wiederherstellung ==&lt;br /&gt;
Jeder Service hat ein eigenes Backup-System.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden gemeinsam per FTP auf den Server XY übertragen. (TODO)&lt;br /&gt;
&lt;br /&gt;
Dort läuft ein kleiner PHP-Cronjob, der diese Backups in ein anderes Verzeichnis überträgt. (TODO)&lt;br /&gt;
&lt;br /&gt;
Diese Dateien werden für eine Wiederherstellung benötigt!&lt;br /&gt;
&lt;br /&gt;
=== Wiederherstellung ===&lt;br /&gt;
Für die Wiederherstellung werden die Backups vom Server benötigt. Weiter wird diese Anleitung benötigt.&lt;br /&gt;
&lt;br /&gt;
Weiter wird für ein vollständigen Backups  ein neuer Server benötigt, dort müssen folgende Schritte in der Reihenfolge ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Installation s.o. &amp;quot;Neuinstallation&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Außerdem muss der DNS und weitere Weiterleitungen der entsprechenden Domains auf den neuen Server geändert werden!&lt;br /&gt;
&lt;br /&gt;
Es werden auch einige Passwörter gebraucht. Dieses sind in keepass.tisento.com und auch in der Passwort-Datei abgespeichert. Diese kann mit dem üblichen Passwort geöffnet werden (TODO)!&lt;br /&gt;
&lt;br /&gt;
Kopie des git-Repos in dem Verzeichnis /srv/tisento-docker/.&lt;br /&gt;
&lt;br /&gt;
Per SSH Beispielsweise mit dem CMD zum Server kopiert werden:&lt;br /&gt;
 sudo scp -P XXXX /srv/tisento-docker/nginx/backups/daily/backup_nginx_20250620_020000.tar.gz USER@IP:/tmp/nginx.tar.gz&lt;br /&gt;
Entpacken der Dateien mit bspw.:&lt;br /&gt;
 tar -xvzf yourfile.tar.gz -C /path/to/your/special/folder&lt;br /&gt;
Wiederherstellung nginx s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung Portainer s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung gitea s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der restlichen Docker-Services mithilfe der Docker-Compose-Dateien in gitea. Alternativ sind die Docker-Compose-Dateien auch in den Backup gespeichert und wurden im best-case zu &amp;quot;/srv/tisento-docker&amp;quot; zurückgespielt!&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der einzelnen Daten der Services mithilfe der obigen Erklärungen.&lt;br /&gt;
&lt;br /&gt;
== Test der Systeme ==&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP &amp;amp; V-Laufwerk prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Aufruf der Website, schauen, ob alle Monitore noch vorhanden sind.&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Aufruf der Website und schauen, ob zu den Containern eine Verbindung herstgestellt wird.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Hestellung der Verbindung zu Cockpit-Prod,-Test und -Dev.&lt;br /&gt;
&lt;br /&gt;
Testübertragung (bspw. Task) und test davon!&lt;br /&gt;
&lt;br /&gt;
Ansonsten einfach mal die index.html umbenennen!&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Erstellung eines Test-Tickets via Mail an: support@tisento.com &lt;br /&gt;
&lt;br /&gt;
Prüfen, ob dieses Ticket in der GUI auftaucht.&lt;br /&gt;
&lt;br /&gt;
Antworten auf dieses Ticket und schauen, ob die Antwort in dem Mail-Client ankommt.&lt;br /&gt;
&lt;br /&gt;
=== NGINX ===&lt;br /&gt;
&lt;br /&gt;
Aufrufen der diversen Websiten.&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Anmeldung mit dem AD-Nutzern&lt;br /&gt;
&lt;br /&gt;
== Neuen Docker-Dienst anlegen ==&lt;br /&gt;
Hier wird davon ausgegangen, dass es sich um einen Dockerdienst handelt, der auf einem Port wie 80 oder 443 angesprochen werden soll. Wir gehen davon aus, dass das Portmapping &amp;quot;127.0.0.1:10443:443&amp;quot; ist, also der Container den Port 10443 auf das lokale Interface öffnet und mit dem Container-Port 10443 mappt. Weiter gehen wir davon aus, dass der Service über die Subdomain &amp;quot;&#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&amp;quot; über HTTP und HTTPS erreichbar sein soll. HTTP wird auf HTTPS weitergeleitet.&lt;br /&gt;
&lt;br /&gt;
# Erstellung der Sub-Domain &#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&lt;br /&gt;
## [mailto:puetter@tisento.com Torsten] diese Sub-Domain dem Server zuweisen lassen.&lt;br /&gt;
## Für das SSL-Zertifikat muss die Domain öffentlich erreichbar sein!&lt;br /&gt;
# Erstellung der Konfiguration im nginx Service&lt;br /&gt;
## Erstellung einer Datei sub.tisento.com.conf in dem Pfad /var/www/nginx.tisento.com/nginx/...&lt;br /&gt;
## Hinzufügen von dem Inhalt:&amp;lt;blockquote&amp;gt;adasdsa&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
## Prüfung ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neu laden&lt;br /&gt;
## Hinzufügen eines Zertifikates mit dem Befehl:&lt;br /&gt;
### asdasd&lt;br /&gt;
## Hinzufügen der SSL Konfuguration zur Datei (sub.tisento.com.conf)&lt;br /&gt;
## Prüfen ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neuladen&lt;br /&gt;
# Prüfen der Verbindung&lt;br /&gt;
&lt;br /&gt;
== Datev-Relay Einstellungen ==&lt;br /&gt;
&lt;br /&gt;
=== Netzwerk ===&lt;br /&gt;
Hinzufügen:&lt;br /&gt;
 sudo nano /etc/iproute2/rt_tables&lt;br /&gt;
 100 eth0table&lt;br /&gt;
 101 eth1table&lt;br /&gt;
Erstellen:&lt;br /&gt;
 sudo nano /usr/local/sbin/custom-routes.sh&lt;br /&gt;
 ip route add 172.22.0.0/24 dev eth0 src 172.22.0.224 table eth0table&lt;br /&gt;
 ip route add default via 172.22.0.254 dev eth0 table eth0table&lt;br /&gt;
 ip route add 10.10.10.0/24 dev eth1 src 10.10.10.224 table eth1table&lt;br /&gt;
 ip route add default via 10.10.10.254 dev eth1 table eth1table&lt;br /&gt;
 ip rule add from 172.22.0.224/32 table eth0table&lt;br /&gt;
 ip rule add from 10.10.10.224/32 table eth1table&lt;br /&gt;
Ändern der Rechte:&lt;br /&gt;
 sudo chmod +x /usr/local/sbin/custom-routes.sh&lt;br /&gt;
Erstellen&lt;br /&gt;
 sudo nano /etc/systemd/system/custom-routes.service&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Add custom routes to tables&lt;br /&gt;
 After=network-online.target&lt;br /&gt;
 Wants=network-online.target&lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=oneshot&lt;br /&gt;
 ExecStart=/usr/local/sbin/custom-routes.sh&lt;br /&gt;
 RemainAfterExit=yes&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=multi-user.target&lt;br /&gt;
und aktivieren:&lt;br /&gt;
 sudo systemctl enable custom-routes.service&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Anpassung der Netzwerkeinstellungen&lt;br /&gt;
 sudo nano /etc/netplan/50-cloud-init.yaml&lt;br /&gt;
 network:&lt;br /&gt;
&lt;br /&gt;
   version: 2&lt;br /&gt;
&lt;br /&gt;
   ethernets:&lt;br /&gt;
&lt;br /&gt;
     eth0:&lt;br /&gt;
&lt;br /&gt;
       dhcp4: true&lt;br /&gt;
&lt;br /&gt;
       adresses: [172.22.0.224/24]&lt;br /&gt;
&lt;br /&gt;
       gateway4: 172.22.0.254&lt;br /&gt;
&lt;br /&gt;
       nameservers:&lt;br /&gt;
&lt;br /&gt;
         addresses: [172.22.0.210,172.22.0.254]&lt;br /&gt;
&lt;br /&gt;
     eth1:&lt;br /&gt;
&lt;br /&gt;
       dhcp4: false&lt;br /&gt;
&lt;br /&gt;
       addresses: [10.10.10.224/24]&lt;br /&gt;
&lt;br /&gt;
       gateway4:  10.10.10.254&lt;br /&gt;
&lt;br /&gt;
       nameservers:&lt;br /&gt;
&lt;br /&gt;
         addresses: [8.8.8.8, 9.9.9.9]&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Cockpit&amp;diff=330</id>
		<title>Cockpit</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Cockpit&amp;diff=330"/>
		<updated>2025-09-26T08:58:02Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: /* Problembehebung / Einschränkungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Cockpit...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ToDos ==&lt;br /&gt;
[[Wareneingang - Hochzeit der Geräte]]&lt;br /&gt;
&lt;br /&gt;
== Zugriff ==&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
Das Produktive Cockpit ist über https://cockpit.tisento.com&amp;lt;nowiki/&amp;gt;erreichbar.&lt;br /&gt;
&lt;br /&gt;
Weiter gibt es dazu noch ein Test-Cockpit https://cockpit-test.tisento.com, sowie ein Dev-Cockpit https://cockpit-dev.tisento.com.&lt;br /&gt;
&lt;br /&gt;
=== Neue Nutzer ===&lt;br /&gt;
Zugangsdaten dazu können entweder von [mailto:koester@tisento.com Jochen Köster] oder [mailto:christian.meyer@tisento.com Christian Meyer] erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Die Rechte sind über diverse Managergruppen geregelt, auch diese können von [mailto:koester@tisento.com Jochen Köster] oder [mailto:christian.meyer@tisento.com Christian Meyer] erstellt oder zugewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== Hinzufügen einer Tabelle zur Datenbank ==&lt;br /&gt;
Tabelle auf dem Lexware-Server im LxDataWarehouse hinzufügen.&lt;br /&gt;
&lt;br /&gt;
View in der cockpit_lexware erstellen:&lt;br /&gt;
 CREATE VIEW fk_sepamandat AS&lt;br /&gt;
 SELECT &lt;br /&gt;
 `lID`, `szMandateNr`, `lType`, `lRecurrent`, `lStatus`, `datCreated`, `datValidTo`, `datFirstUse`, `datLastUse`, `datRevokedAt`, `datReception`, `datExpiration`, `lCustomerId`, `datDocumentCreated` &lt;br /&gt;
 FROM cockpit_lxdw.`FK_SEPAMandat` &lt;br /&gt;
 WHERE 1&lt;br /&gt;
&lt;br /&gt;
== Problembehebung / Einschränkungen ==&lt;br /&gt;
Als erstes Prüfen, ob die entsprechenden [https://monitor.tisento.com Monitore] laufen, entsprechend dem Ergebnis handeln:&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;co-orga LX Toolbox&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Bestimmte Tasks (bspw. Erstellung der Lieferscheine aus den Zeiterfassungen) gehen nicht. Cockpit funktioniert davon abgesehen weiterhin.Problembehandliung:&lt;br /&gt;
&lt;br /&gt;
Auf den tisento-erp (172.22.0.219) anmelden. LX Toolbox starten (Service).&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;co-orga LX Toolbox PROD-Token&amp;quot; down oder &amp;quot;co-orga LX Toolbox TEST-Token&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung: ====&lt;br /&gt;
Bestimmte Tasks (bspw. Erstellung der Lieferscheine aus den Zeiterfassungen) gehen nicht. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung: ====&lt;br /&gt;
Wenn einer der beiden Token down ist, dann kann es folgende Gründe und Lösungen geben&lt;br /&gt;
&lt;br /&gt;
# co-orga LX Toolbox down ist down, dann siehe oben&lt;br /&gt;
# Der Supervisor hat nicht das richtige Passwort (wurde evtl. zum Testen auf &amp;quot;&amp;quot; geändert, dann zurück ändern!)&lt;br /&gt;
# Der Supervisor hatte zum Testen ein anderes Paswort, das wurde zurück gesetzt. Jetzt muss der Supervisor sich bei den entsprechenden Firmen in Lexware anmelden, danach sind die Token wieder aktiv.&lt;br /&gt;
# Der Token wurde gelöscht, da bspw. LX Toolbox abgestürzt ist. Bei der [http://172.22.0.219:5000/ LX Toolbox] mit dem Supervisor in der entsprechenden Firma anmelden und einen neuen Zugriffstoken setzen. Dieser ist entweder im [https://monitor.tisento.com Monitor] oder auch im [http://keepass.tisento.com/ Passbolt] zu finden&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Lexware: Fehler nicht gedruckt&amp;quot; down oder Belege können nicht gefunden werden ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Bestimmte Tasks (bspw. Rechnungsversand) gehen nicht. Dokument ist in ELO nicht vorhanden. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung ====&lt;br /&gt;
Es scheint, als wäre in Lexware eine Datei als gedruckt markiert aber nicht gedruckt worden.&lt;br /&gt;
&lt;br /&gt;
Folgendes SQL-Statement ausführen, dann werden die entsprechenden Dokumente angezeigt:&lt;br /&gt;
 SELECT &lt;br /&gt;
     fka.`AuftragsNr`,fka.`AuftragsKennung`, fkk.lID &lt;br /&gt;
 FROM &lt;br /&gt;
     `FK_Auftrag` fka &lt;br /&gt;
 LEFT JOIN &lt;br /&gt;
     FK_AuftragKontakt fkak ON fkak.lAuftragID = fka.SheetNr AND fkak.lID &amp;gt; 20000 &lt;br /&gt;
 LEFT JOIN &lt;br /&gt;
     FK_Kontakt fkk ON fkk.lID = fkak.lKontaktID and fkk.System_created &amp;gt; &#039;2025-01-01&#039; &lt;br /&gt;
 WHERE &lt;br /&gt;
     fka.bStatus_gedruckt = 1 AND &lt;br /&gt;
     fkk.lID is NULL AND&lt;br /&gt;
     Datum_erfassung &amp;gt; &#039;2025-01-01&#039; &lt;br /&gt;
 ORDER BY &lt;br /&gt;
     fka.SheetNr DESC&lt;br /&gt;
Diese Dokumente noch einmal drucken, dann geht der Monitor wieder auf &amp;quot;Up&amp;quot;. Evtl. kann dafür noch eine Task erstellt werden.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;co-orga LX datawarehouse&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Es sind keine aktuellen Lexware-Daten im Cockpit. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung ====&lt;br /&gt;
Auf den tisento-erp (172.22.0.219) anmelden. LX DataWarehouse starten (Service).&lt;br /&gt;
&lt;br /&gt;
=== Docker Container &amp;quot;... down&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Der jeweilige Service funktioniert nicht richtig. Im Monitor schauen welche Gruppe (bspw. Cockpit-TEST, Cockpit-PROD, ELO-TEST, ...) betroffen ist.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung ====&lt;br /&gt;
Einer der Services ist down, dann über [https://portainer.tisento.com Portainer] den entsprechenden Container neustarten. Zugangsdaten sind im [http://keepass.tisento.com/ Passbolt] abgespeichert.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Zebra ...&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Der jeweilige Drucker funktioniert nicht, es können keine Etiketten gedruckt werden. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung ====&lt;br /&gt;
In Meschede oder bei Uli anrufen, dass der jeweile Zebra einmal gestartet wird.&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=329</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=329"/>
		<updated>2025-09-02T14:02:38Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: /* Docker-Relay Einstellungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Zugriff==&lt;br /&gt;
Der Docker-Server ist unter der 172.22.0.224 erreichbar.&lt;br /&gt;
&lt;br /&gt;
Der neue Docker-Server wird unter 172.22.0.223 erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
Der Port, Nutzername und auch das Passwort sind im [http://keepass.tisento.com Passbolt] gespeichert.&lt;br /&gt;
&lt;br /&gt;
== Zugriff Dienste ==&lt;br /&gt;
Nachfolgend eine Liste der Dienste die auf dem Docker laufen&lt;br /&gt;
&lt;br /&gt;
* [https://cockpit.tisento.com Cockpit-PROD] &lt;br /&gt;
* [https://cockpit-test.tisento.com Cockpit-TEST]&lt;br /&gt;
* [https://cockpit-dev.tisento.com Cockpit-DEV]&lt;br /&gt;
* [https://monitor.tisento.com UpTime Kuma (Monitor)]&lt;br /&gt;
* [https://portainer.tisento.com Portainer (Docker Verwaltung)]&lt;br /&gt;
* FTP&lt;br /&gt;
* [https://service.tisento.com Ticketsystem / Otobo]&lt;br /&gt;
* NGINX &amp;amp; Certbot (noch nicht als Docker-Container)&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* [https://gitea.tisento.com Git (gitea)] noch nicht installiert&lt;br /&gt;
&lt;br /&gt;
== Neuinstallation ==&lt;br /&gt;
Kopie der &amp;quot;tisento.conf&amp;quot;-Datei in den Ordner: &amp;quot;/etc/ssh/sshd_config.d/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hinzufügen des 9022-Ports zur UFW mit:&lt;br /&gt;
 sudo ufw allow 9022/tcp&lt;br /&gt;
Einschalten der ufw mit&lt;br /&gt;
 sudo ufw enable&lt;br /&gt;
&lt;br /&gt;
=== Installation vom Docker (https://docs.docker.com/engine/install/ubuntu/): ===&lt;br /&gt;
Install using the &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository&lt;br /&gt;
&lt;br /&gt;
Before you install Docker Engine for the first time on a new host machine, you need to set up the Docker &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository. Afterward, you can install and update Docker from the repository.&lt;br /&gt;
&lt;br /&gt;
* Set up Docker&#039;s &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository.&lt;br /&gt;
&lt;br /&gt;
 # Add Docker&#039;s official GPG key:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu/gpg&amp;lt;/nowiki&amp;gt; -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
 &lt;br /&gt;
 # Add the repository to Apt sources:&lt;br /&gt;
 echo \&lt;br /&gt;
 &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu&amp;lt;/nowiki&amp;gt; \&lt;br /&gt;
 $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;${UBUNTU_CODENAME:-$VERSION_CODENAME}&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
* Install the Docker packages.&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
* Verify that the installation is successful by running the &amp;lt;code&amp;gt;hello-world&amp;lt;/code&amp;gt; image:&lt;br /&gt;
&lt;br /&gt;
 sudo docker run hello-world&lt;br /&gt;
&lt;br /&gt;
=== Installation der Sonstigen Softare (s.u.) ===&lt;br /&gt;
via &amp;quot;sudo apt install ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Kopie des Docker-Repos ===&lt;br /&gt;
Kopie des Repos in &amp;quot;/srv/tisento-docker&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Dort muss als erstes &amp;quot;portainer gestartet und wiederhergestellt werden.&lt;br /&gt;
&lt;br /&gt;
Danach wird gitea gestartet und wiederhergestellt. (Damit die repos gezogen werden können)&lt;br /&gt;
&lt;br /&gt;
Danach nach und nach die anderen Services wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
=== Einstellung UFW ===&lt;br /&gt;
 sudo ufw allow 80/tcp&lt;br /&gt;
&lt;br /&gt;
 sudo ufw allow 443/tcp&lt;br /&gt;
&lt;br /&gt;
== Sonstige Software (nicht vollständig, muss überarbeitet werden!) ==&lt;br /&gt;
&lt;br /&gt;
* Docker (s.o.)&lt;br /&gt;
* git&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* cron (Wiederkehrende Aufgaben, bspw. Backups)&lt;br /&gt;
* ncdu (Speicherbelegung)&lt;br /&gt;
* nmon (Monitoring)&lt;br /&gt;
* cifs-utils (Mounting Laufwerke)&lt;br /&gt;
* zip&lt;br /&gt;
* sshpass (sftp transer)&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Docker-Dienste ==&lt;br /&gt;
Die meisten Dienste sind mit ihren Daten und Definitionen unter /var/html/dienst.tisento.com erreichbar.&lt;br /&gt;
&lt;br /&gt;
Dabei sind in dem Ordner /var/html/dienst.tisento.com/.docker die Definitionen der Docker-Container.&lt;br /&gt;
&lt;br /&gt;
In dem Ordner /var/html/dienst.tisento.com/backups sind die jeweiligen Backups der Daten.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F2)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst. &lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/srv/tisento-docker/cockpit-prod/backups gespeichert. Das tägliche Backup wird nach 30 Tagen gelöscht, die monatlichen nach einem Jahr und die jährlichen Backups nie.&lt;br /&gt;
&lt;br /&gt;
EVTL. NOCH MONITOR HINZUFÜGEN DER BACKUP TÄGLICH PRÜFT!&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Mounting der Laufwerke via:&lt;br /&gt;
 sudo mount.cifs -v //172.22.0.245/cockpit/_Daten /srv/tisento-docker/cockpit-prod/html/_Daten/ --verbose -o user=us,password=pw,domain=TISENTOSAN2,vers=2.0,uid=33,gid=33&lt;br /&gt;
Die ID 33 muss ggfs. angepasst werden um&lt;br /&gt;
 id www-data&lt;br /&gt;
damit die Rechte passen.&lt;br /&gt;
&lt;br /&gt;
Es müssen auch die Laufwerke _Cockpit_Daten und _Cockpit_Verwaltung gemounted werden.&lt;br /&gt;
&lt;br /&gt;
Weiter müssen ggfs. einige &amp;quot;.env&amp;quot;-Dateien angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;html/api/connection/.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;.docker/backup/backup.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Siehe die jeweiligen &amp;quot;*.env.example&amp;quot;-Dateien&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach muss das Backup der HTML-Dateien in das Verzeichnis /srv/tisento-docker/cockpit-prod/html kopiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach müssen noch die SQL-Dateien eingespielt werden:&lt;br /&gt;
&lt;br /&gt;
Dazu die SQL-Datei in den Server laden (&amp;quot;root&amp;quot; =&amp;gt; user, &amp;quot;test&amp;quot; ist das Passwort).&lt;br /&gt;
&lt;br /&gt;
Evtl. muss die erste Zeile gelöscht werden:&lt;br /&gt;
 tail -n +2 cockpit-dev_db.sql &amp;gt; cockpit-dev_db2.sql&lt;br /&gt;
&lt;br /&gt;
 sudo docker exec -i cockpit-prod-db-1 mariadb -u root -ptest &amp;lt; cockpit-prod_db.sql&lt;br /&gt;
Danach muss das Root-PW händisch geändert werden (bspw. im PMA)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;WICHTIG:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Daten beim LX DW-Importer müssen auch geändert werden!&#039;&#039;&#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-test.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-test.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Siehe PROD (ohne Mounting)&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-dev.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-dev.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Siehe PROD (ohne Mounting)&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Überwachung der diversen Docker-Container, als auch für diverse Systeme da (z.B. HEALTH, also CPU, RAM, HDD von diversen Servern).&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/monitor.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das /data -Verzeichnis gesichert&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Kopie des /data-Verzeichnisses zurück nach /srv/tisento-docker/monitor/app/data. Es muss evtl. die Datei backup_db.db in kuma.db umbenannt werden&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Verwaltung der verschiedenen Docker-Container notwendig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/portainer.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das data-Verzeichnis gesichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Das data-Verzeichnis muss in /srv/tisento-docker/portainer/data gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Dieses Tool ist für die FTP-Verbindung zu den jeweiligen HTML-Verzeichnissen von [https://cockpit.tisento.com cockpit.tisento.com], [https://cockpit-test.tisento.com cockpit-test.tisento.com] und [https://cockpit-dev.tisento.com cockpit-dev.tisento.com] zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/ftp.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird die pureftpd.passwd Datei als backup gespeichert. Diese beinhaltet die FTP-Verzeichnisse und Server und Passwörter.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die pureftpd.passwd muss in das Verzeichnis /srv/tisento-docker/ftp/.docker/passwd/ lopiert werden.&lt;br /&gt;
&lt;br /&gt;
Es muss in dem docker-compose evtl. die Zeile &amp;quot;PUBLICHOST: &amp;quot;172.22.0.223&amp;quot;&amp;quot; angepasst werden.&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Erstellung und Verwaltung der Tickets zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Fehlerbehebung ====&lt;br /&gt;
Wenn bspw. die Festplatte vom Docker-Server vollgelaufen ist, dann müssen die Dienste einmal neugestartet werden.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann es sein, dass man die Caches mit folgenden Befehlen (im Daemon) löscht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Cache::Delete&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Config::Rebuild --cleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Loader::CacheCleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NGINX (noch nicht als Docker-Container) ===&lt;br /&gt;
nginx ist ein Reverse-Proxy, damit die verschiedenen Domains den richtigen Weg zu den Services finden.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /srv/tisento-docker/SERVICENAME/.....&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es werden die verzeichnisse certbot and nginx gebackupped&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die beiden Verzeichnisse müssen in /srv/tisento-docker/nginx/nginx und srv/tisento-docker/nginx/certbot kopiert werden! &lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird einmal am Tag die Liste mit den Regeln abgespeichert.&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Erstellen der einzelnen Richtlinien mit:&lt;br /&gt;
 sudo ufw allow 10021/tcp&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Die Daten befinden sich unter /srv/tisento-docker/gitea/data.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das data-Verzeichnis gesichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Das data-Verzeichnis muss in /srv/tisento-docker/portainer/data gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
=== Recovery (git &amp;amp; wiki) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
In diesem Dienst wird von dem aktuellen Git-Repo ein Backup gemacht, weiter wird auch diese Wiki-Seite gesichert, damit die Daten hiermit wiederhergestellt werden können&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die Daten müssen entpackt werden. Dann dem PDF folgen!&lt;br /&gt;
&lt;br /&gt;
== Backup // Wiederherstellung ==&lt;br /&gt;
Jeder Service hat ein eigenes Backup-System.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden gemeinsam per FTP auf den Server XY übertragen. (TODO)&lt;br /&gt;
&lt;br /&gt;
Dort läuft ein kleiner PHP-Cronjob, der diese Backups in ein anderes Verzeichnis überträgt. (TODO)&lt;br /&gt;
&lt;br /&gt;
Diese Dateien werden für eine Wiederherstellung benötigt!&lt;br /&gt;
&lt;br /&gt;
=== Wiederherstellung ===&lt;br /&gt;
Für die Wiederherstellung werden die Backups vom Server benötigt. Weiter wird diese Anleitung benötigt.&lt;br /&gt;
&lt;br /&gt;
Weiter wird für ein vollständigen Backups  ein neuer Server benötigt, dort müssen folgende Schritte in der Reihenfolge ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Installation s.o. &amp;quot;Neuinstallation&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Außerdem muss der DNS und weitere Weiterleitungen der entsprechenden Domains auf den neuen Server geändert werden!&lt;br /&gt;
&lt;br /&gt;
Es werden auch einige Passwörter gebraucht. Dieses sind in keepass.tisento.com und auch in der Passwort-Datei abgespeichert. Diese kann mit dem üblichen Passwort geöffnet werden (TODO)!&lt;br /&gt;
&lt;br /&gt;
Kopie des git-Repos in dem Verzeichnis /srv/tisento-docker/.&lt;br /&gt;
&lt;br /&gt;
Per SSH Beispielsweise mit dem CMD zum Server kopiert werden:&lt;br /&gt;
 sudo scp -P XXXX /srv/tisento-docker/nginx/backups/daily/backup_nginx_20250620_020000.tar.gz USER@IP:/tmp/nginx.tar.gz&lt;br /&gt;
Entpacken der Dateien mit bspw.:&lt;br /&gt;
 tar -xvzf yourfile.tar.gz -C /path/to/your/special/folder&lt;br /&gt;
Wiederherstellung nginx s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung Portainer s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung gitea s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der restlichen Docker-Services mithilfe der Docker-Compose-Dateien in gitea. Alternativ sind die Docker-Compose-Dateien auch in den Backup gespeichert und wurden im best-case zu &amp;quot;/srv/tisento-docker&amp;quot; zurückgespielt!&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der einzelnen Daten der Services mithilfe der obigen Erklärungen.&lt;br /&gt;
&lt;br /&gt;
== Test der Systeme ==&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP &amp;amp; V-Laufwerk prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Aufruf der Website, schauen, ob alle Monitore noch vorhanden sind.&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Aufruf der Website und schauen, ob zu den Containern eine Verbindung herstgestellt wird.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Hestellung der Verbindung zu Cockpit-Prod,-Test und -Dev.&lt;br /&gt;
&lt;br /&gt;
Testübertragung (bspw. Task) und test davon!&lt;br /&gt;
&lt;br /&gt;
Ansonsten einfach mal die index.html umbenennen!&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Erstellung eines Test-Tickets via Mail an: support@tisento.com &lt;br /&gt;
&lt;br /&gt;
Prüfen, ob dieses Ticket in der GUI auftaucht.&lt;br /&gt;
&lt;br /&gt;
Antworten auf dieses Ticket und schauen, ob die Antwort in dem Mail-Client ankommt.&lt;br /&gt;
&lt;br /&gt;
=== NGINX ===&lt;br /&gt;
&lt;br /&gt;
Aufrufen der diversen Websiten.&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Anmeldung mit dem AD-Nutzern&lt;br /&gt;
&lt;br /&gt;
== Neuen Docker-Dienst anlegen ==&lt;br /&gt;
Hier wird davon ausgegangen, dass es sich um einen Dockerdienst handelt, der auf einem Port wie 80 oder 443 angesprochen werden soll. Wir gehen davon aus, dass das Portmapping &amp;quot;127.0.0.1:10443:443&amp;quot; ist, also der Container den Port 10443 auf das lokale Interface öffnet und mit dem Container-Port 10443 mappt. Weiter gehen wir davon aus, dass der Service über die Subdomain &amp;quot;&#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&amp;quot; über HTTP und HTTPS erreichbar sein soll. HTTP wird auf HTTPS weitergeleitet.&lt;br /&gt;
&lt;br /&gt;
# Erstellung der Sub-Domain &#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&lt;br /&gt;
## [mailto:puetter@tisento.com Torsten] diese Sub-Domain dem Server zuweisen lassen.&lt;br /&gt;
## Für das SSL-Zertifikat muss die Domain öffentlich erreichbar sein!&lt;br /&gt;
# Erstellung der Konfiguration im nginx Service&lt;br /&gt;
## Erstellung einer Datei sub.tisento.com.conf in dem Pfad /var/www/nginx.tisento.com/nginx/...&lt;br /&gt;
## Hinzufügen von dem Inhalt:&amp;lt;blockquote&amp;gt;adasdsa&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
## Prüfung ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neu laden&lt;br /&gt;
## Hinzufügen eines Zertifikates mit dem Befehl:&lt;br /&gt;
### asdasd&lt;br /&gt;
## Hinzufügen der SSL Konfuguration zur Datei (sub.tisento.com.conf)&lt;br /&gt;
## Prüfen ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neuladen&lt;br /&gt;
# Prüfen der Verbindung&lt;br /&gt;
&lt;br /&gt;
== Datev-Relay Einstellungen ==&lt;br /&gt;
&lt;br /&gt;
=== Netzwerk ===&lt;br /&gt;
Hinzufügen:&lt;br /&gt;
 sudo nano /etc/iproute2/rt_tables&lt;br /&gt;
 100 eth0table&lt;br /&gt;
 101 eth1table&lt;br /&gt;
Erstellen:&lt;br /&gt;
 sudo nano /usr/local/sbin/custom-routes.sh&lt;br /&gt;
 ip route add 172.22.0.0/24 dev eth0 src 172.22.0.224 table eth0table&lt;br /&gt;
 ip route add default via 172.22.0.254 dev eth0 table eth0table&lt;br /&gt;
 ip route add 10.10.10.0/24 dev eth1 src 10.10.10.224 table eth1table&lt;br /&gt;
 ip route add default via 10.10.10.254 dev eth1 table eth1table&lt;br /&gt;
 ip rule add from 172.22.0.224/32 table eth0table&lt;br /&gt;
 ip rule add from 10.10.10.224/32 table eth1table&lt;br /&gt;
Ändern der Rechte:&lt;br /&gt;
 sudo chmod +x /usr/local/sbin/custom-routes.sh&lt;br /&gt;
Erstellen&lt;br /&gt;
 sudo nano /etc/systemd/system/custom-routes.service&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Add custom routes to tables&lt;br /&gt;
 After=network-online.target&lt;br /&gt;
 Wants=network-online.target&lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=oneshot&lt;br /&gt;
 ExecStart=/usr/local/sbin/custom-routes.sh&lt;br /&gt;
 RemainAfterExit=yes&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=multi-user.target&lt;br /&gt;
und aktivieren:&lt;br /&gt;
 sudo systemctl enable custom-routes.service&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=328</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=328"/>
		<updated>2025-09-02T14:02:22Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: Hinzufügen Einstellungen Datev-Relay&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Zugriff==&lt;br /&gt;
Der Docker-Server ist unter der 172.22.0.224 erreichbar.&lt;br /&gt;
&lt;br /&gt;
Der neue Docker-Server wird unter 172.22.0.223 erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
Der Port, Nutzername und auch das Passwort sind im [http://keepass.tisento.com Passbolt] gespeichert.&lt;br /&gt;
&lt;br /&gt;
== Zugriff Dienste ==&lt;br /&gt;
Nachfolgend eine Liste der Dienste die auf dem Docker laufen&lt;br /&gt;
&lt;br /&gt;
* [https://cockpit.tisento.com Cockpit-PROD] &lt;br /&gt;
* [https://cockpit-test.tisento.com Cockpit-TEST]&lt;br /&gt;
* [https://cockpit-dev.tisento.com Cockpit-DEV]&lt;br /&gt;
* [https://monitor.tisento.com UpTime Kuma (Monitor)]&lt;br /&gt;
* [https://portainer.tisento.com Portainer (Docker Verwaltung)]&lt;br /&gt;
* FTP&lt;br /&gt;
* [https://service.tisento.com Ticketsystem / Otobo]&lt;br /&gt;
* NGINX &amp;amp; Certbot (noch nicht als Docker-Container)&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* [https://gitea.tisento.com Git (gitea)] noch nicht installiert&lt;br /&gt;
&lt;br /&gt;
== Neuinstallation ==&lt;br /&gt;
Kopie der &amp;quot;tisento.conf&amp;quot;-Datei in den Ordner: &amp;quot;/etc/ssh/sshd_config.d/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hinzufügen des 9022-Ports zur UFW mit:&lt;br /&gt;
 sudo ufw allow 9022/tcp&lt;br /&gt;
Einschalten der ufw mit&lt;br /&gt;
 sudo ufw enable&lt;br /&gt;
&lt;br /&gt;
=== Installation vom Docker (https://docs.docker.com/engine/install/ubuntu/): ===&lt;br /&gt;
Install using the &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository&lt;br /&gt;
&lt;br /&gt;
Before you install Docker Engine for the first time on a new host machine, you need to set up the Docker &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository. Afterward, you can install and update Docker from the repository.&lt;br /&gt;
&lt;br /&gt;
* Set up Docker&#039;s &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository.&lt;br /&gt;
&lt;br /&gt;
 # Add Docker&#039;s official GPG key:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu/gpg&amp;lt;/nowiki&amp;gt; -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
 &lt;br /&gt;
 # Add the repository to Apt sources:&lt;br /&gt;
 echo \&lt;br /&gt;
 &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu&amp;lt;/nowiki&amp;gt; \&lt;br /&gt;
 $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;${UBUNTU_CODENAME:-$VERSION_CODENAME}&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
* Install the Docker packages.&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
* Verify that the installation is successful by running the &amp;lt;code&amp;gt;hello-world&amp;lt;/code&amp;gt; image:&lt;br /&gt;
&lt;br /&gt;
 sudo docker run hello-world&lt;br /&gt;
&lt;br /&gt;
=== Installation der Sonstigen Softare (s.u.) ===&lt;br /&gt;
via &amp;quot;sudo apt install ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Kopie des Docker-Repos ===&lt;br /&gt;
Kopie des Repos in &amp;quot;/srv/tisento-docker&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Dort muss als erstes &amp;quot;portainer gestartet und wiederhergestellt werden.&lt;br /&gt;
&lt;br /&gt;
Danach wird gitea gestartet und wiederhergestellt. (Damit die repos gezogen werden können)&lt;br /&gt;
&lt;br /&gt;
Danach nach und nach die anderen Services wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
=== Einstellung UFW ===&lt;br /&gt;
 sudo ufw allow 80/tcp&lt;br /&gt;
&lt;br /&gt;
 sudo ufw allow 443/tcp&lt;br /&gt;
&lt;br /&gt;
== Sonstige Software (nicht vollständig, muss überarbeitet werden!) ==&lt;br /&gt;
&lt;br /&gt;
* Docker (s.o.)&lt;br /&gt;
* git&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* cron (Wiederkehrende Aufgaben, bspw. Backups)&lt;br /&gt;
* ncdu (Speicherbelegung)&lt;br /&gt;
* nmon (Monitoring)&lt;br /&gt;
* cifs-utils (Mounting Laufwerke)&lt;br /&gt;
* zip&lt;br /&gt;
* sshpass (sftp transer)&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Docker-Dienste ==&lt;br /&gt;
Die meisten Dienste sind mit ihren Daten und Definitionen unter /var/html/dienst.tisento.com erreichbar.&lt;br /&gt;
&lt;br /&gt;
Dabei sind in dem Ordner /var/html/dienst.tisento.com/.docker die Definitionen der Docker-Container.&lt;br /&gt;
&lt;br /&gt;
In dem Ordner /var/html/dienst.tisento.com/backups sind die jeweiligen Backups der Daten.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F2)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst. &lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/srv/tisento-docker/cockpit-prod/backups gespeichert. Das tägliche Backup wird nach 30 Tagen gelöscht, die monatlichen nach einem Jahr und die jährlichen Backups nie.&lt;br /&gt;
&lt;br /&gt;
EVTL. NOCH MONITOR HINZUFÜGEN DER BACKUP TÄGLICH PRÜFT!&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Mounting der Laufwerke via:&lt;br /&gt;
 sudo mount.cifs -v //172.22.0.245/cockpit/_Daten /srv/tisento-docker/cockpit-prod/html/_Daten/ --verbose -o user=us,password=pw,domain=TISENTOSAN2,vers=2.0,uid=33,gid=33&lt;br /&gt;
Die ID 33 muss ggfs. angepasst werden um&lt;br /&gt;
 id www-data&lt;br /&gt;
damit die Rechte passen.&lt;br /&gt;
&lt;br /&gt;
Es müssen auch die Laufwerke _Cockpit_Daten und _Cockpit_Verwaltung gemounted werden.&lt;br /&gt;
&lt;br /&gt;
Weiter müssen ggfs. einige &amp;quot;.env&amp;quot;-Dateien angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;html/api/connection/.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;.docker/backup/backup.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Siehe die jeweiligen &amp;quot;*.env.example&amp;quot;-Dateien&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach muss das Backup der HTML-Dateien in das Verzeichnis /srv/tisento-docker/cockpit-prod/html kopiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach müssen noch die SQL-Dateien eingespielt werden:&lt;br /&gt;
&lt;br /&gt;
Dazu die SQL-Datei in den Server laden (&amp;quot;root&amp;quot; =&amp;gt; user, &amp;quot;test&amp;quot; ist das Passwort).&lt;br /&gt;
&lt;br /&gt;
Evtl. muss die erste Zeile gelöscht werden:&lt;br /&gt;
 tail -n +2 cockpit-dev_db.sql &amp;gt; cockpit-dev_db2.sql&lt;br /&gt;
&lt;br /&gt;
 sudo docker exec -i cockpit-prod-db-1 mariadb -u root -ptest &amp;lt; cockpit-prod_db.sql&lt;br /&gt;
Danach muss das Root-PW händisch geändert werden (bspw. im PMA)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;WICHTIG:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Daten beim LX DW-Importer müssen auch geändert werden!&#039;&#039;&#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-test.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-test.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Siehe PROD (ohne Mounting)&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-dev.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-dev.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Siehe PROD (ohne Mounting)&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Überwachung der diversen Docker-Container, als auch für diverse Systeme da (z.B. HEALTH, also CPU, RAM, HDD von diversen Servern).&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/monitor.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das /data -Verzeichnis gesichert&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Kopie des /data-Verzeichnisses zurück nach /srv/tisento-docker/monitor/app/data. Es muss evtl. die Datei backup_db.db in kuma.db umbenannt werden&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Verwaltung der verschiedenen Docker-Container notwendig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/portainer.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das data-Verzeichnis gesichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Das data-Verzeichnis muss in /srv/tisento-docker/portainer/data gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Dieses Tool ist für die FTP-Verbindung zu den jeweiligen HTML-Verzeichnissen von [https://cockpit.tisento.com cockpit.tisento.com], [https://cockpit-test.tisento.com cockpit-test.tisento.com] und [https://cockpit-dev.tisento.com cockpit-dev.tisento.com] zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/ftp.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird die pureftpd.passwd Datei als backup gespeichert. Diese beinhaltet die FTP-Verzeichnisse und Server und Passwörter.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die pureftpd.passwd muss in das Verzeichnis /srv/tisento-docker/ftp/.docker/passwd/ lopiert werden.&lt;br /&gt;
&lt;br /&gt;
Es muss in dem docker-compose evtl. die Zeile &amp;quot;PUBLICHOST: &amp;quot;172.22.0.223&amp;quot;&amp;quot; angepasst werden.&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Erstellung und Verwaltung der Tickets zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Fehlerbehebung ====&lt;br /&gt;
Wenn bspw. die Festplatte vom Docker-Server vollgelaufen ist, dann müssen die Dienste einmal neugestartet werden.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann es sein, dass man die Caches mit folgenden Befehlen (im Daemon) löscht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Cache::Delete&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Config::Rebuild --cleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Loader::CacheCleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NGINX (noch nicht als Docker-Container) ===&lt;br /&gt;
nginx ist ein Reverse-Proxy, damit die verschiedenen Domains den richtigen Weg zu den Services finden.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /srv/tisento-docker/SERVICENAME/.....&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es werden die verzeichnisse certbot and nginx gebackupped&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die beiden Verzeichnisse müssen in /srv/tisento-docker/nginx/nginx und srv/tisento-docker/nginx/certbot kopiert werden! &lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird einmal am Tag die Liste mit den Regeln abgespeichert.&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Erstellen der einzelnen Richtlinien mit:&lt;br /&gt;
 sudo ufw allow 10021/tcp&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Die Daten befinden sich unter /srv/tisento-docker/gitea/data.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das data-Verzeichnis gesichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Das data-Verzeichnis muss in /srv/tisento-docker/portainer/data gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
=== Recovery (git &amp;amp; wiki) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
In diesem Dienst wird von dem aktuellen Git-Repo ein Backup gemacht, weiter wird auch diese Wiki-Seite gesichert, damit die Daten hiermit wiederhergestellt werden können&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die Daten müssen entpackt werden. Dann dem PDF folgen!&lt;br /&gt;
&lt;br /&gt;
== Backup // Wiederherstellung ==&lt;br /&gt;
Jeder Service hat ein eigenes Backup-System.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden gemeinsam per FTP auf den Server XY übertragen. (TODO)&lt;br /&gt;
&lt;br /&gt;
Dort läuft ein kleiner PHP-Cronjob, der diese Backups in ein anderes Verzeichnis überträgt. (TODO)&lt;br /&gt;
&lt;br /&gt;
Diese Dateien werden für eine Wiederherstellung benötigt!&lt;br /&gt;
&lt;br /&gt;
=== Wiederherstellung ===&lt;br /&gt;
Für die Wiederherstellung werden die Backups vom Server benötigt. Weiter wird diese Anleitung benötigt.&lt;br /&gt;
&lt;br /&gt;
Weiter wird für ein vollständigen Backups  ein neuer Server benötigt, dort müssen folgende Schritte in der Reihenfolge ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Installation s.o. &amp;quot;Neuinstallation&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Außerdem muss der DNS und weitere Weiterleitungen der entsprechenden Domains auf den neuen Server geändert werden!&lt;br /&gt;
&lt;br /&gt;
Es werden auch einige Passwörter gebraucht. Dieses sind in keepass.tisento.com und auch in der Passwort-Datei abgespeichert. Diese kann mit dem üblichen Passwort geöffnet werden (TODO)!&lt;br /&gt;
&lt;br /&gt;
Kopie des git-Repos in dem Verzeichnis /srv/tisento-docker/.&lt;br /&gt;
&lt;br /&gt;
Per SSH Beispielsweise mit dem CMD zum Server kopiert werden:&lt;br /&gt;
 sudo scp -P XXXX /srv/tisento-docker/nginx/backups/daily/backup_nginx_20250620_020000.tar.gz USER@IP:/tmp/nginx.tar.gz&lt;br /&gt;
Entpacken der Dateien mit bspw.:&lt;br /&gt;
 tar -xvzf yourfile.tar.gz -C /path/to/your/special/folder&lt;br /&gt;
Wiederherstellung nginx s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung Portainer s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung gitea s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der restlichen Docker-Services mithilfe der Docker-Compose-Dateien in gitea. Alternativ sind die Docker-Compose-Dateien auch in den Backup gespeichert und wurden im best-case zu &amp;quot;/srv/tisento-docker&amp;quot; zurückgespielt!&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der einzelnen Daten der Services mithilfe der obigen Erklärungen.&lt;br /&gt;
&lt;br /&gt;
== Test der Systeme ==&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP &amp;amp; V-Laufwerk prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Aufruf der Website, schauen, ob alle Monitore noch vorhanden sind.&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Aufruf der Website und schauen, ob zu den Containern eine Verbindung herstgestellt wird.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Hestellung der Verbindung zu Cockpit-Prod,-Test und -Dev.&lt;br /&gt;
&lt;br /&gt;
Testübertragung (bspw. Task) und test davon!&lt;br /&gt;
&lt;br /&gt;
Ansonsten einfach mal die index.html umbenennen!&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Erstellung eines Test-Tickets via Mail an: support@tisento.com &lt;br /&gt;
&lt;br /&gt;
Prüfen, ob dieses Ticket in der GUI auftaucht.&lt;br /&gt;
&lt;br /&gt;
Antworten auf dieses Ticket und schauen, ob die Antwort in dem Mail-Client ankommt.&lt;br /&gt;
&lt;br /&gt;
=== NGINX ===&lt;br /&gt;
&lt;br /&gt;
Aufrufen der diversen Websiten.&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Anmeldung mit dem AD-Nutzern&lt;br /&gt;
&lt;br /&gt;
== Neuen Docker-Dienst anlegen ==&lt;br /&gt;
Hier wird davon ausgegangen, dass es sich um einen Dockerdienst handelt, der auf einem Port wie 80 oder 443 angesprochen werden soll. Wir gehen davon aus, dass das Portmapping &amp;quot;127.0.0.1:10443:443&amp;quot; ist, also der Container den Port 10443 auf das lokale Interface öffnet und mit dem Container-Port 10443 mappt. Weiter gehen wir davon aus, dass der Service über die Subdomain &amp;quot;&#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&amp;quot; über HTTP und HTTPS erreichbar sein soll. HTTP wird auf HTTPS weitergeleitet.&lt;br /&gt;
&lt;br /&gt;
# Erstellung der Sub-Domain &#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&lt;br /&gt;
## [mailto:puetter@tisento.com Torsten] diese Sub-Domain dem Server zuweisen lassen.&lt;br /&gt;
## Für das SSL-Zertifikat muss die Domain öffentlich erreichbar sein!&lt;br /&gt;
# Erstellung der Konfiguration im nginx Service&lt;br /&gt;
## Erstellung einer Datei sub.tisento.com.conf in dem Pfad /var/www/nginx.tisento.com/nginx/...&lt;br /&gt;
## Hinzufügen von dem Inhalt:&amp;lt;blockquote&amp;gt;adasdsa&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
## Prüfung ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neu laden&lt;br /&gt;
## Hinzufügen eines Zertifikates mit dem Befehl:&lt;br /&gt;
### asdasd&lt;br /&gt;
## Hinzufügen der SSL Konfuguration zur Datei (sub.tisento.com.conf)&lt;br /&gt;
## Prüfen ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neuladen&lt;br /&gt;
# Prüfen der Verbindung&lt;br /&gt;
&lt;br /&gt;
== Docker-Relay Einstellungen ==&lt;br /&gt;
&lt;br /&gt;
=== Netzwerk ===&lt;br /&gt;
Hinzufügen:&lt;br /&gt;
 sudo nano /etc/iproute2/rt_tables&lt;br /&gt;
 100 eth0table&lt;br /&gt;
 101 eth1table&lt;br /&gt;
Erstellen:&lt;br /&gt;
 sudo nano /usr/local/sbin/custom-routes.sh&lt;br /&gt;
 ip route add 172.22.0.0/24 dev eth0 src 172.22.0.224 table eth0table&lt;br /&gt;
 ip route add default via 172.22.0.254 dev eth0 table eth0table&lt;br /&gt;
 ip route add 10.10.10.0/24 dev eth1 src 10.10.10.224 table eth1table&lt;br /&gt;
 ip route add default via 10.10.10.254 dev eth1 table eth1table&lt;br /&gt;
 ip rule add from 172.22.0.224/32 table eth0table&lt;br /&gt;
 ip rule add from 10.10.10.224/32 table eth1table&lt;br /&gt;
Ändern der Rechte:&lt;br /&gt;
 sudo chmod +x /usr/local/sbin/custom-routes.sh&lt;br /&gt;
Erstellen&lt;br /&gt;
 sudo nano /etc/systemd/system/custom-routes.service&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Add custom routes to tables&lt;br /&gt;
 After=network-online.target&lt;br /&gt;
 Wants=network-online.target&lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=oneshot&lt;br /&gt;
 ExecStart=/usr/local/sbin/custom-routes.sh&lt;br /&gt;
 RemainAfterExit=yes&lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=multi-user.target&lt;br /&gt;
und aktivieren:&lt;br /&gt;
 sudo systemctl enable custom-routes.service&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=327</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=327"/>
		<updated>2025-06-30T16:02:48Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Zugriff==&lt;br /&gt;
Der Docker-Server ist unter der 172.22.0.224 erreichbar.&lt;br /&gt;
&lt;br /&gt;
Der neue Docker-Server wird unter 172.22.0.223 erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
Der Port, Nutzername und auch das Passwort sind im [http://keepass.tisento.com Passbolt] gespeichert.&lt;br /&gt;
&lt;br /&gt;
== Zugriff Dienste ==&lt;br /&gt;
Nachfolgend eine Liste der Dienste die auf dem Docker laufen&lt;br /&gt;
&lt;br /&gt;
* [https://cockpit.tisento.com Cockpit-PROD] &lt;br /&gt;
* [https://cockpit-test.tisento.com Cockpit-TEST]&lt;br /&gt;
* [https://cockpit-dev.tisento.com Cockpit-DEV]&lt;br /&gt;
* [https://monitor.tisento.com UpTime Kuma (Monitor)]&lt;br /&gt;
* [https://portainer.tisento.com Portainer (Docker Verwaltung)]&lt;br /&gt;
* FTP&lt;br /&gt;
* [https://service.tisento.com Ticketsystem / Otobo]&lt;br /&gt;
* NGINX &amp;amp; Certbot (noch nicht als Docker-Container)&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* [https://gitea.tisento.com Git (gitea)] noch nicht installiert&lt;br /&gt;
&lt;br /&gt;
== Neuinstallation ==&lt;br /&gt;
Kopie der &amp;quot;tisento.conf&amp;quot;-Datei in den Ordner: &amp;quot;/etc/ssh/sshd_config.d/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hinzufügen des 9022-Ports zur UFW mit:&lt;br /&gt;
 sudo ufw allow 9022/tcp&lt;br /&gt;
Einschalten der ufw mit&lt;br /&gt;
 sudo ufw enable&lt;br /&gt;
&lt;br /&gt;
=== Installation vom Docker (https://docs.docker.com/engine/install/ubuntu/): ===&lt;br /&gt;
Install using the &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository&lt;br /&gt;
&lt;br /&gt;
Before you install Docker Engine for the first time on a new host machine, you need to set up the Docker &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository. Afterward, you can install and update Docker from the repository.&lt;br /&gt;
&lt;br /&gt;
* Set up Docker&#039;s &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository.&lt;br /&gt;
&lt;br /&gt;
 # Add Docker&#039;s official GPG key:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu/gpg&amp;lt;/nowiki&amp;gt; -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
 &lt;br /&gt;
 # Add the repository to Apt sources:&lt;br /&gt;
 echo \&lt;br /&gt;
 &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu&amp;lt;/nowiki&amp;gt; \&lt;br /&gt;
 $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;${UBUNTU_CODENAME:-$VERSION_CODENAME}&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
* Install the Docker packages.&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
* Verify that the installation is successful by running the &amp;lt;code&amp;gt;hello-world&amp;lt;/code&amp;gt; image:&lt;br /&gt;
&lt;br /&gt;
 sudo docker run hello-world&lt;br /&gt;
&lt;br /&gt;
=== Installation der Sonstigen Softare (s.u.) ===&lt;br /&gt;
via &amp;quot;sudo apt install ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Kopie des Docker-Repos ===&lt;br /&gt;
Kopie des Repos in &amp;quot;/srv/tisento-docker&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Dort muss als erstes &amp;quot;portainer gestartet und wiederhergestellt werden.&lt;br /&gt;
&lt;br /&gt;
Danach wird gitea gestartet und wiederhergestellt. (Damit die repos gezogen werden können)&lt;br /&gt;
&lt;br /&gt;
Danach nach und nach die anderen Services wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
=== Einstellung UFW ===&lt;br /&gt;
 sudo ufw allow 80/tcp&lt;br /&gt;
&lt;br /&gt;
 sudo ufw allow 443/tcp&lt;br /&gt;
&lt;br /&gt;
== Sonstige Software (nicht vollständig, muss überarbeitet werden!) ==&lt;br /&gt;
&lt;br /&gt;
* Docker (s.o.)&lt;br /&gt;
* git&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* cron (Wiederkehrende Aufgaben, bspw. Backups)&lt;br /&gt;
* ncdu (Speicherbelegung)&lt;br /&gt;
* nmon (Monitoring)&lt;br /&gt;
* cifs-utils (Mounting Laufwerke)&lt;br /&gt;
* zip&lt;br /&gt;
* sshpass (sftp transer)&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Docker-Dienste ==&lt;br /&gt;
Die meisten Dienste sind mit ihren Daten und Definitionen unter /var/html/dienst.tisento.com erreichbar.&lt;br /&gt;
&lt;br /&gt;
Dabei sind in dem Ordner /var/html/dienst.tisento.com/.docker die Definitionen der Docker-Container.&lt;br /&gt;
&lt;br /&gt;
In dem Ordner /var/html/dienst.tisento.com/backups sind die jeweiligen Backups der Daten.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F2)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst. &lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/srv/tisento-docker/cockpit-prod/backups gespeichert. Das tägliche Backup wird nach 30 Tagen gelöscht, die monatlichen nach einem Jahr und die jährlichen Backups nie.&lt;br /&gt;
&lt;br /&gt;
EVTL. NOCH MONITOR HINZUFÜGEN DER BACKUP TÄGLICH PRÜFT!&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Mounting der Laufwerke via:&lt;br /&gt;
 sudo mount.cifs -v //172.22.0.245/cockpit/_Daten /srv/tisento-docker/cockpit-prod/html/_Daten/ --verbose -o user=us,password=pw,domain=TISENTOSAN2,vers=2.0,uid=33,gid=33&lt;br /&gt;
Die ID 33 muss ggfs. angepasst werden um&lt;br /&gt;
 id www-data&lt;br /&gt;
damit die Rechte passen.&lt;br /&gt;
&lt;br /&gt;
Es müssen auch die Laufwerke _Cockpit_Daten und _Cockpit_Verwaltung gemounted werden.&lt;br /&gt;
&lt;br /&gt;
Weiter müssen ggfs. einige &amp;quot;.env&amp;quot;-Dateien angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;html/api/connection/.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;.docker/backup/backup.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Siehe die jeweiligen &amp;quot;*.env.example&amp;quot;-Dateien&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach muss das Backup der HTML-Dateien in das Verzeichnis /srv/tisento-docker/cockpit-prod/html kopiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach müssen noch die SQL-Dateien eingespielt werden:&lt;br /&gt;
&lt;br /&gt;
Dazu die SQL-Datei in den Server laden (&amp;quot;root&amp;quot; =&amp;gt; user, &amp;quot;test&amp;quot; ist das Passwort).&lt;br /&gt;
&lt;br /&gt;
Evtl. muss die erste Zeile gelöscht werden:&lt;br /&gt;
 tail -n +2 cockpit-dev_db.sql &amp;gt; cockpit-dev_db2.sql&lt;br /&gt;
&lt;br /&gt;
 sudo docker exec -i cockpit-prod-db-1 mariadb -u root -ptest &amp;lt; cockpit-prod_db.sql&lt;br /&gt;
Danach muss das Root-PW händisch geändert werden (bspw. im PMA)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;WICHTIG:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Daten beim LX DW-Importer müssen auch geändert werden!&#039;&#039;&#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-test.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-test.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Siehe PROD (ohne Mounting)&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-dev.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-dev.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Siehe PROD (ohne Mounting)&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Überwachung der diversen Docker-Container, als auch für diverse Systeme da (z.B. HEALTH, also CPU, RAM, HDD von diversen Servern).&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/monitor.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das /data -Verzeichnis gesichert&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Kopie des /data-Verzeichnisses zurück nach /srv/tisento-docker/monitor/app/data. Es muss evtl. die Datei backup_db.db in kuma.db umbenannt werden&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Verwaltung der verschiedenen Docker-Container notwendig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/portainer.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das data-Verzeichnis gesichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Das data-Verzeichnis muss in /srv/tisento-docker/portainer/data gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Dieses Tool ist für die FTP-Verbindung zu den jeweiligen HTML-Verzeichnissen von [https://cockpit.tisento.com cockpit.tisento.com], [https://cockpit-test.tisento.com cockpit-test.tisento.com] und [https://cockpit-dev.tisento.com cockpit-dev.tisento.com] zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/ftp.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird die pureftpd.passwd Datei als backup gespeichert. Diese beinhaltet die FTP-Verzeichnisse und Server und Passwörter.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die pureftpd.passwd muss in das Verzeichnis /srv/tisento-docker/ftp/.docker/passwd/ lopiert werden.&lt;br /&gt;
&lt;br /&gt;
Es muss in dem docker-compose evtl. die Zeile &amp;quot;PUBLICHOST: &amp;quot;172.22.0.223&amp;quot;&amp;quot; angepasst werden.&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Erstellung und Verwaltung der Tickets zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Fehlerbehebung ====&lt;br /&gt;
Wenn bspw. die Festplatte vom Docker-Server vollgelaufen ist, dann müssen die Dienste einmal neugestartet werden.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann es sein, dass man die Caches mit folgenden Befehlen (im Daemon) löscht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Cache::Delete&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Config::Rebuild --cleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Loader::CacheCleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NGINX (noch nicht als Docker-Container) ===&lt;br /&gt;
nginx ist ein Reverse-Proxy, damit die verschiedenen Domains den richtigen Weg zu den Services finden.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /srv/tisento-docker/SERVICENAME/.....&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es werden die verzeichnisse certbot and nginx gebackupped&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die beiden Verzeichnisse müssen in /srv/tisento-docker/nginx/nginx und srv/tisento-docker/nginx/certbot kopiert werden! &lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird einmal am Tag die Liste mit den Regeln abgespeichert.&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Erstellen der einzelnen Richtlinien mit:&lt;br /&gt;
 sudo ufw allow 10021/tcp&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Die Daten befinden sich unter /srv/tisento-docker/gitea/data.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das data-Verzeichnis gesichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Das data-Verzeichnis muss in /srv/tisento-docker/portainer/data gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
=== Recovery (git &amp;amp; wiki) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
In diesem Dienst wird von dem aktuellen Git-Repo ein Backup gemacht, weiter wird auch diese Wiki-Seite gesichert, damit die Daten hiermit wiederhergestellt werden können&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die Daten müssen entpackt werden. Dann dem PDF folgen!&lt;br /&gt;
&lt;br /&gt;
== Backup // Wiederherstellung ==&lt;br /&gt;
Jeder Service hat ein eigenes Backup-System.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden gemeinsam per FTP auf den Server XY übertragen. (TODO)&lt;br /&gt;
&lt;br /&gt;
Dort läuft ein kleiner PHP-Cronjob, der diese Backups in ein anderes Verzeichnis überträgt. (TODO)&lt;br /&gt;
&lt;br /&gt;
Diese Dateien werden für eine Wiederherstellung benötigt!&lt;br /&gt;
&lt;br /&gt;
=== Wiederherstellung ===&lt;br /&gt;
Für die Wiederherstellung werden die Backups vom Server benötigt. Weiter wird diese Anleitung benötigt.&lt;br /&gt;
&lt;br /&gt;
Weiter wird für ein vollständigen Backups  ein neuer Server benötigt, dort müssen folgende Schritte in der Reihenfolge ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Installation s.o. &amp;quot;Neuinstallation&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Außerdem muss der DNS und weitere Weiterleitungen der entsprechenden Domains auf den neuen Server geändert werden!&lt;br /&gt;
&lt;br /&gt;
Es werden auch einige Passwörter gebraucht. Dieses sind in keepass.tisento.com und auch in der Passwort-Datei abgespeichert. Diese kann mit dem üblichen Passwort geöffnet werden (TODO)!&lt;br /&gt;
&lt;br /&gt;
Kopie des git-Repos in dem Verzeichnis /srv/tisento-docker/.&lt;br /&gt;
&lt;br /&gt;
Per SSH Beispielsweise mit dem CMD zum Server kopiert werden:&lt;br /&gt;
 sudo scp -P XXXX /srv/tisento-docker/nginx/backups/daily/backup_nginx_20250620_020000.tar.gz USER@IP:/tmp/nginx.tar.gz&lt;br /&gt;
Entpacken der Dateien mit bspw.:&lt;br /&gt;
 tar -xvzf yourfile.tar.gz -C /path/to/your/special/folder&lt;br /&gt;
Wiederherstellung nginx s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung Portainer s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung gitea s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der restlichen Docker-Services mithilfe der Docker-Compose-Dateien in gitea. Alternativ sind die Docker-Compose-Dateien auch in den Backup gespeichert und wurden im best-case zu &amp;quot;/srv/tisento-docker&amp;quot; zurückgespielt!&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der einzelnen Daten der Services mithilfe der obigen Erklärungen.&lt;br /&gt;
&lt;br /&gt;
== Test der Systeme ==&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP &amp;amp; V-Laufwerk prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Aufruf der Website, schauen, ob alle Monitore noch vorhanden sind.&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Aufruf der Website und schauen, ob zu den Containern eine Verbindung herstgestellt wird.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Hestellung der Verbindung zu Cockpit-Prod,-Test und -Dev.&lt;br /&gt;
&lt;br /&gt;
Testübertragung (bspw. Task) und test davon!&lt;br /&gt;
&lt;br /&gt;
Ansonsten einfach mal die index.html umbenennen!&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Erstellung eines Test-Tickets via Mail an: support@tisento.com &lt;br /&gt;
&lt;br /&gt;
Prüfen, ob dieses Ticket in der GUI auftaucht.&lt;br /&gt;
&lt;br /&gt;
Antworten auf dieses Ticket und schauen, ob die Antwort in dem Mail-Client ankommt.&lt;br /&gt;
&lt;br /&gt;
=== NGINX ===&lt;br /&gt;
&lt;br /&gt;
Aufrufen der diversen Websiten.&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Anmeldung mit dem AD-Nutzern&lt;br /&gt;
&lt;br /&gt;
== Neuen Docker-Dienst anlegen ==&lt;br /&gt;
Hier wird davon ausgegangen, dass es sich um einen Dockerdienst handelt, der auf einem Port wie 80 oder 443 angesprochen werden soll. Wir gehen davon aus, dass das Portmapping &amp;quot;127.0.0.1:10443:443&amp;quot; ist, also der Container den Port 10443 auf das lokale Interface öffnet und mit dem Container-Port 10443 mappt. Weiter gehen wir davon aus, dass der Service über die Subdomain &amp;quot;&#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&amp;quot; über HTTP und HTTPS erreichbar sein soll. HTTP wird auf HTTPS weitergeleitet.&lt;br /&gt;
&lt;br /&gt;
# Erstellung der Sub-Domain &#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&lt;br /&gt;
## [mailto:puetter@tisento.com Torsten] diese Sub-Domain dem Server zuweisen lassen.&lt;br /&gt;
## Für das SSL-Zertifikat muss die Domain öffentlich erreichbar sein!&lt;br /&gt;
# Erstellung der Konfiguration im nginx Service&lt;br /&gt;
## Erstellung einer Datei sub.tisento.com.conf in dem Pfad /var/www/nginx.tisento.com/nginx/...&lt;br /&gt;
## Hinzufügen von dem Inhalt:&amp;lt;blockquote&amp;gt;adasdsa&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
## Prüfung ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neu laden&lt;br /&gt;
## Hinzufügen eines Zertifikates mit dem Befehl:&lt;br /&gt;
### asdasd&lt;br /&gt;
## Hinzufügen der SSL Konfuguration zur Datei (sub.tisento.com.conf)&lt;br /&gt;
## Prüfen ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neuladen&lt;br /&gt;
# Prüfen der Verbindung&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=326</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=326"/>
		<updated>2025-06-30T15:51:05Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Zugriff==&lt;br /&gt;
Der Docker-Server ist unter der 172.22.0.224 erreichbar.&lt;br /&gt;
&lt;br /&gt;
Der neue Docker-Server wird unter 172.22.0.223 erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
Der Port, Nutzername und auch das Passwort sind im [http://keepass.tisento.com Passbolt] gespeichert.&lt;br /&gt;
&lt;br /&gt;
== Zugriff Dienste ==&lt;br /&gt;
Nachfolgend eine Liste der Dienste die auf dem Docker laufen&lt;br /&gt;
&lt;br /&gt;
* [https://cockpit.tisento.com Cockpit-PROD] &lt;br /&gt;
* [https://cockpit-test.tisento.com Cockpit-TEST]&lt;br /&gt;
* [https://cockpit-dev.tisento.com Cockpit-DEV]&lt;br /&gt;
* [https://monitor.tisento.com UpTime Kuma (Monitor)]&lt;br /&gt;
* [https://portainer.tisento.com Portainer (Docker Verwaltung)]&lt;br /&gt;
* FTP&lt;br /&gt;
* [https://service.tisento.com Ticketsystem / Otobo]&lt;br /&gt;
* NGINX &amp;amp; Certbot (noch nicht als Docker-Container)&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* [https://gitea.tisento.com Git (gitea)] noch nicht installiert&lt;br /&gt;
&lt;br /&gt;
== Neuinstallation ==&lt;br /&gt;
Kopie der &amp;quot;tisento.conf&amp;quot;-Datei in den Ordner: &amp;quot;/etc/ssh/sshd_config.d/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hinzufügen des 9022-Ports zur UFW mit:&lt;br /&gt;
 sudo ufw allow 9022/tcp&lt;br /&gt;
Einschalten der ufw mit&lt;br /&gt;
 sudo ufw enable&lt;br /&gt;
&lt;br /&gt;
=== Installation vom Docker (https://docs.docker.com/engine/install/ubuntu/): ===&lt;br /&gt;
Install using the &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository&lt;br /&gt;
&lt;br /&gt;
Before you install Docker Engine for the first time on a new host machine, you need to set up the Docker &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository. Afterward, you can install and update Docker from the repository.&lt;br /&gt;
&lt;br /&gt;
* Set up Docker&#039;s &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository.&lt;br /&gt;
&lt;br /&gt;
 # Add Docker&#039;s official GPG key:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu/gpg&amp;lt;/nowiki&amp;gt; -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
 &lt;br /&gt;
 # Add the repository to Apt sources:&lt;br /&gt;
 echo \&lt;br /&gt;
 &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu&amp;lt;/nowiki&amp;gt; \&lt;br /&gt;
 $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;${UBUNTU_CODENAME:-$VERSION_CODENAME}&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
* Install the Docker packages.&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
* Verify that the installation is successful by running the &amp;lt;code&amp;gt;hello-world&amp;lt;/code&amp;gt; image:&lt;br /&gt;
&lt;br /&gt;
 sudo docker run hello-world&lt;br /&gt;
&lt;br /&gt;
=== Installation der Sonstigen Softare (s.u.) ===&lt;br /&gt;
via &amp;quot;sudo apt install ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Kopie des Docker-Repos ===&lt;br /&gt;
Kopie des Repos in &amp;quot;/srv/tisento-docker&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Dort muss als erstes &amp;quot;portainer gestartet und wiederhergestellt werden.&lt;br /&gt;
&lt;br /&gt;
Danach wird gitea gestartet und wiederhergestellt. (Damit die repos gezogen werden können)&lt;br /&gt;
&lt;br /&gt;
Danach nach und nach die anderen Services wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
=== Einstellung UFW ===&lt;br /&gt;
 sudo ufw allow 80/tcp&lt;br /&gt;
&lt;br /&gt;
 sudo ufw allow 443/tcp&lt;br /&gt;
&lt;br /&gt;
== Sonstige Software (nicht vollständig, muss überarbeitet werden!) ==&lt;br /&gt;
&lt;br /&gt;
* Docker (s.o.)&lt;br /&gt;
* git&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* cron (Wiederkehrende Aufgaben, bspw. Backups)&lt;br /&gt;
* ncdu (Speicherbelegung)&lt;br /&gt;
* nmon (Monitoring)&lt;br /&gt;
* cifs-utils (Mounting Laufwerke)&lt;br /&gt;
* zip&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Docker-Dienste ==&lt;br /&gt;
Die meisten Dienste sind mit ihren Daten und Definitionen unter /var/html/dienst.tisento.com erreichbar.&lt;br /&gt;
&lt;br /&gt;
Dabei sind in dem Ordner /var/html/dienst.tisento.com/.docker die Definitionen der Docker-Container.&lt;br /&gt;
&lt;br /&gt;
In dem Ordner /var/html/dienst.tisento.com/backups sind die jeweiligen Backups der Daten.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F2)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst. &lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/srv/tisento-docker/cockpit-prod/backups gespeichert. Das tägliche Backup wird nach 30 Tagen gelöscht, die monatlichen nach einem Jahr und die jährlichen Backups nie.&lt;br /&gt;
&lt;br /&gt;
EVTL. NOCH MONITOR HINZUFÜGEN DER BACKUP TÄGLICH PRÜFT!&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Mounting der Laufwerke via:&lt;br /&gt;
 sudo mount.cifs -v //172.22.0.245/cockpit/_Daten /srv/tisento-docker/cockpit-prod/html/_Daten/ --verbose -o user=us,password=pw,domain=TISENTOSAN2,vers=2.0,uid=33,gid=33&lt;br /&gt;
Die ID 33 muss ggfs. angepasst werden um&lt;br /&gt;
 id www-data&lt;br /&gt;
damit die Rechte passen.&lt;br /&gt;
&lt;br /&gt;
Es müssen auch die Laufwerke _Cockpit_Daten und _Cockpit_Verwaltung gemounted werden.&lt;br /&gt;
&lt;br /&gt;
Weiter müssen ggfs. einige &amp;quot;.env&amp;quot;-Dateien angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;html/api/connection/.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;.docker/backup/backup.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Siehe die jeweiligen &amp;quot;*.env.example&amp;quot;-Dateien&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach muss das Backup der HTML-Dateien in das Verzeichnis /srv/tisento-docker/cockpit-prod/html kopiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach müssen noch die SQL-Dateien eingespielt werden:&lt;br /&gt;
&lt;br /&gt;
Dazu die SQL-Datei in den Server laden (&amp;quot;root&amp;quot; =&amp;gt; user, &amp;quot;test&amp;quot; ist das Passwort).&lt;br /&gt;
&lt;br /&gt;
Evtl. muss die erste Zeile gelöscht werden:&lt;br /&gt;
 tail -n +2 cockpit-dev_db.sql &amp;gt; cockpit-dev_db2.sql&lt;br /&gt;
&lt;br /&gt;
 sudo docker exec -i cockpit-prod-db-1 mariadb -u root -ptest &amp;lt; cockpit-prod_db.sql&lt;br /&gt;
Danach muss das Root-PW händisch geändert werden (bspw. im PMA)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;WICHTIG:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Daten beim LX DW-Importer müssen auch geändert werden!&#039;&#039;&#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-test.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-test.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Siehe PROD (ohne Mounting)&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-dev.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-dev.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Siehe PROD (ohne Mounting)&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Überwachung der diversen Docker-Container, als auch für diverse Systeme da (z.B. HEALTH, also CPU, RAM, HDD von diversen Servern).&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/monitor.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das /data -Verzeichnis gesichert&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Kopie des /data-Verzeichnisses zurück nach /srv/tisento-docker/monitor/app/data. Es muss evtl. die Datei backup_db.db in kuma.db umbenannt werden&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Verwaltung der verschiedenen Docker-Container notwendig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/portainer.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das data-Verzeichnis gesichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Das data-Verzeichnis muss in /srv/tisento-docker/portainer/data gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Dieses Tool ist für die FTP-Verbindung zu den jeweiligen HTML-Verzeichnissen von [https://cockpit.tisento.com cockpit.tisento.com], [https://cockpit-test.tisento.com cockpit-test.tisento.com] und [https://cockpit-dev.tisento.com cockpit-dev.tisento.com] zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/ftp.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird die pureftpd.passwd Datei als backup gespeichert. Diese beinhaltet die FTP-Verzeichnisse und Server und Passwörter.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die pureftpd.passwd muss in das Verzeichnis /srv/tisento-docker/ftp/.docker/passwd/ lopiert werden.&lt;br /&gt;
&lt;br /&gt;
Es muss in dem docker-compose evtl. die Zeile &amp;quot;PUBLICHOST: &amp;quot;172.22.0.223&amp;quot;&amp;quot; angepasst werden.&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Erstellung und Verwaltung der Tickets zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Fehlerbehebung ====&lt;br /&gt;
Wenn bspw. die Festplatte vom Docker-Server vollgelaufen ist, dann müssen die Dienste einmal neugestartet werden.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann es sein, dass man die Caches mit folgenden Befehlen (im Daemon) löscht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Cache::Delete&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Config::Rebuild --cleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Loader::CacheCleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NGINX (noch nicht als Docker-Container) ===&lt;br /&gt;
nginx ist ein Reverse-Proxy, damit die verschiedenen Domains den richtigen Weg zu den Services finden.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /srv/tisento-docker/SERVICENAME/.....&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es werden die verzeichnisse certbot and nginx gebackupped&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die beiden Verzeichnisse müssen in /srv/tisento-docker/nginx/nginx und srv/tisento-docker/nginx/certbot kopiert werden! &lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird einmal am Tag die Liste mit den Regeln abgespeichert.&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Erstellen der einzelnen Richtlinien mit:&lt;br /&gt;
 sudo ufw allow 10021/tcp&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Die Daten befinden sich unter /srv/tisento-docker/gitea/data.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das data-Verzeichnis gesichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Das data-Verzeichnis muss in /srv/tisento-docker/portainer/data gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
=== Recovery (git &amp;amp; wiki) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
In diesem Dienst wird von dem aktuellen Git-Repo ein Backup gemacht, weiter wird auch diese Wiki-Seite gesichert, damit die Daten hiermit wiederhergestellt werden können&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die Daten müssen entpackt werden. Dann dem PDF folgen!&lt;br /&gt;
&lt;br /&gt;
== Backup // Wiederherstellung ==&lt;br /&gt;
Jeder Service hat ein eigenes Backup-System.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden gemeinsam per FTP auf den Server XY übertragen. (TODO)&lt;br /&gt;
&lt;br /&gt;
Dort läuft ein kleiner PHP-Cronjob, der diese Backups in ein anderes Verzeichnis überträgt. (TODO)&lt;br /&gt;
&lt;br /&gt;
Diese Dateien werden für eine Wiederherstellung benötigt!&lt;br /&gt;
&lt;br /&gt;
=== Wiederherstellung ===&lt;br /&gt;
Für die Wiederherstellung werden die Backups vom Server benötigt. Weiter wird diese Anleitung benötigt.&lt;br /&gt;
&lt;br /&gt;
Weiter wird für ein vollständigen Backups  ein neuer Server benötigt, dort müssen folgende Schritte in der Reihenfolge ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Installation s.o. &amp;quot;Neuinstallation&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Außerdem muss der DNS und weitere Weiterleitungen der entsprechenden Domains auf den neuen Server geändert werden!&lt;br /&gt;
&lt;br /&gt;
Es werden auch einige Passwörter gebraucht. Dieses sind in keepass.tisento.com und auch in der Passwort-Datei abgespeichert. Diese kann mit dem üblichen Passwort geöffnet werden (TODO)!&lt;br /&gt;
&lt;br /&gt;
Kopie des git-Repos in dem Verzeichnis /srv/tisento-docker/.&lt;br /&gt;
&lt;br /&gt;
Per SSH Beispielsweise mit dem CMD zum Server kopiert werden:&lt;br /&gt;
 sudo scp -P XXXX /srv/tisento-docker/nginx/backups/daily/backup_nginx_20250620_020000.tar.gz USER@IP:/tmp/nginx.tar.gz&lt;br /&gt;
Entpacken der Dateien mit bspw.:&lt;br /&gt;
 tar -xvzf yourfile.tar.gz -C /path/to/your/special/folder&lt;br /&gt;
Wiederherstellung nginx s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung Portainer s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung gitea s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der restlichen Docker-Services mithilfe der Docker-Compose-Dateien in gitea. Alternativ sind die Docker-Compose-Dateien auch in den Backup gespeichert und wurden im best-case zu &amp;quot;/srv/tisento-docker&amp;quot; zurückgespielt!&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der einzelnen Daten der Services mithilfe der obigen Erklärungen.&lt;br /&gt;
&lt;br /&gt;
== Test der Systeme ==&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP &amp;amp; V-Laufwerk prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Aufruf der Website, schauen, ob alle Monitore noch vorhanden sind.&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Aufruf der Website und schauen, ob zu den Containern eine Verbindung herstgestellt wird.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Hestellung der Verbindung zu Cockpit-Prod,-Test und -Dev.&lt;br /&gt;
&lt;br /&gt;
Testübertragung (bspw. Task) und test davon!&lt;br /&gt;
&lt;br /&gt;
Ansonsten einfach mal die index.html umbenennen!&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Erstellung eines Test-Tickets via Mail an: support@tisento.com &lt;br /&gt;
&lt;br /&gt;
Prüfen, ob dieses Ticket in der GUI auftaucht.&lt;br /&gt;
&lt;br /&gt;
Antworten auf dieses Ticket und schauen, ob die Antwort in dem Mail-Client ankommt.&lt;br /&gt;
&lt;br /&gt;
=== NGINX ===&lt;br /&gt;
&lt;br /&gt;
Aufrufen der diversen Websiten.&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Anmeldung mit dem AD-Nutzern&lt;br /&gt;
&lt;br /&gt;
== Neuen Docker-Dienst anlegen ==&lt;br /&gt;
Hier wird davon ausgegangen, dass es sich um einen Dockerdienst handelt, der auf einem Port wie 80 oder 443 angesprochen werden soll. Wir gehen davon aus, dass das Portmapping &amp;quot;127.0.0.1:10443:443&amp;quot; ist, also der Container den Port 10443 auf das lokale Interface öffnet und mit dem Container-Port 10443 mappt. Weiter gehen wir davon aus, dass der Service über die Subdomain &amp;quot;&#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&amp;quot; über HTTP und HTTPS erreichbar sein soll. HTTP wird auf HTTPS weitergeleitet.&lt;br /&gt;
&lt;br /&gt;
# Erstellung der Sub-Domain &#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&lt;br /&gt;
## [mailto:puetter@tisento.com Torsten] diese Sub-Domain dem Server zuweisen lassen.&lt;br /&gt;
## Für das SSL-Zertifikat muss die Domain öffentlich erreichbar sein!&lt;br /&gt;
# Erstellung der Konfiguration im nginx Service&lt;br /&gt;
## Erstellung einer Datei sub.tisento.com.conf in dem Pfad /var/www/nginx.tisento.com/nginx/...&lt;br /&gt;
## Hinzufügen von dem Inhalt:&amp;lt;blockquote&amp;gt;adasdsa&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
## Prüfung ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neu laden&lt;br /&gt;
## Hinzufügen eines Zertifikates mit dem Befehl:&lt;br /&gt;
### asdasd&lt;br /&gt;
## Hinzufügen der SSL Konfuguration zur Datei (sub.tisento.com.conf)&lt;br /&gt;
## Prüfen ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neuladen&lt;br /&gt;
# Prüfen der Verbindung&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=325</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=325"/>
		<updated>2025-06-30T14:31:25Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Zugriff==&lt;br /&gt;
Der Docker-Server ist unter der 172.22.0.224 erreichbar.&lt;br /&gt;
&lt;br /&gt;
Der neue Docker-Server wird unter 172.22.0.223 erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
Der Port, Nutzername und auch das Passwort sind im [http://keepass.tisento.com Passbolt] gespeichert.&lt;br /&gt;
&lt;br /&gt;
== Zugriff Dienste ==&lt;br /&gt;
Nachfolgend eine Liste der Dienste die auf dem Docker laufen&lt;br /&gt;
&lt;br /&gt;
* [https://cockpit.tisento.com Cockpit-PROD] &lt;br /&gt;
* [https://cockpit-test.tisento.com Cockpit-TEST]&lt;br /&gt;
* [https://cockpit-dev.tisento.com Cockpit-DEV]&lt;br /&gt;
* [https://monitor.tisento.com UpTime Kuma (Monitor)]&lt;br /&gt;
* [https://portainer.tisento.com Portainer (Docker Verwaltung)]&lt;br /&gt;
* FTP&lt;br /&gt;
* [https://service.tisento.com Ticketsystem / Otobo]&lt;br /&gt;
* NGINX &amp;amp; Certbot (noch nicht als Docker-Container)&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* [https://gitea.tisento.com Git (gitea)] noch nicht installiert&lt;br /&gt;
&lt;br /&gt;
== Neuinstallation ==&lt;br /&gt;
Kopie der &amp;quot;tisento.conf&amp;quot;-Datei in den Ordner: &amp;quot;/etc/ssh/sshd_config.d/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hinzufügen des 9022-Ports zur UFW mit:&lt;br /&gt;
 sudo ufw allow 9022/tcp&lt;br /&gt;
Einschalten der ufw mit&lt;br /&gt;
 sudo ufw enable&lt;br /&gt;
&lt;br /&gt;
=== Installation vom Docker (https://docs.docker.com/engine/install/ubuntu/): ===&lt;br /&gt;
Install using the &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository&lt;br /&gt;
&lt;br /&gt;
Before you install Docker Engine for the first time on a new host machine, you need to set up the Docker &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository. Afterward, you can install and update Docker from the repository.&lt;br /&gt;
&lt;br /&gt;
* Set up Docker&#039;s &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository.&lt;br /&gt;
&lt;br /&gt;
 # Add Docker&#039;s official GPG key:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu/gpg&amp;lt;/nowiki&amp;gt; -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
 &lt;br /&gt;
 # Add the repository to Apt sources:&lt;br /&gt;
 echo \&lt;br /&gt;
 &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu&amp;lt;/nowiki&amp;gt; \&lt;br /&gt;
 $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;${UBUNTU_CODENAME:-$VERSION_CODENAME}&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
* Install the Docker packages.&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
* Verify that the installation is successful by running the &amp;lt;code&amp;gt;hello-world&amp;lt;/code&amp;gt; image:&lt;br /&gt;
&lt;br /&gt;
 sudo docker run hello-world&lt;br /&gt;
&lt;br /&gt;
=== Installation der Sonstigen Softare (s.u.) ===&lt;br /&gt;
via &amp;quot;sudo apt install ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Kopie des Docker-Repos ===&lt;br /&gt;
Kopie des Repos in &amp;quot;/srv/tisento-docker&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Dort muss als erstes &amp;quot;portainer gestartet und wiederhergestellt werden.&lt;br /&gt;
&lt;br /&gt;
Danach wird gitea gestartet und wiederhergestellt. (Damit die repos gezogen werden können)&lt;br /&gt;
&lt;br /&gt;
Danach nach und nach die anderen Services wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
=== Einstellung UFW ===&lt;br /&gt;
 sudo ufw allow 80/tcp&lt;br /&gt;
&lt;br /&gt;
 sudo ufw allow 443/tcp&lt;br /&gt;
&lt;br /&gt;
== Sonstige Software (nicht vollständig, muss überarbeitet werden!) ==&lt;br /&gt;
&lt;br /&gt;
* Docker (s.o.)&lt;br /&gt;
* git&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* cron (Wiederkehrende Aufgaben, bspw. Backups)&lt;br /&gt;
* ncdu (Speicherbelegung)&lt;br /&gt;
* nmon (Monitoring)&lt;br /&gt;
* cifs-utils (Mounting Laufwerke)&lt;br /&gt;
* zip&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Docker-Dienste ==&lt;br /&gt;
Die meisten Dienste sind mit ihren Daten und Definitionen unter /var/html/dienst.tisento.com erreichbar.&lt;br /&gt;
&lt;br /&gt;
Dabei sind in dem Ordner /var/html/dienst.tisento.com/.docker die Definitionen der Docker-Container.&lt;br /&gt;
&lt;br /&gt;
In dem Ordner /var/html/dienst.tisento.com/backups sind die jeweiligen Backups der Daten.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F2)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst. &lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/srv/tisento-docker/cockpit-prod/backups gespeichert. Das tägliche Backup wird nach 30 Tagen gelöscht, die monatlichen nach einem Jahr und die jährlichen Backups nie.&lt;br /&gt;
&lt;br /&gt;
EVTL. NOCH MONITOR HINZUFÜGEN DER BACKUP TÄGLICH PRÜFT!&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Mounting der Laufwerke via:&lt;br /&gt;
 sudo mount.cifs -v //172.22.0.245/cockpit/_Daten /srv/tisento-docker/cockpit-prod/html/_Daten/ --verbose -o user=us,password=pw,domain=TISENTOSAN2,vers=2.0,uid=33,gid=33&lt;br /&gt;
Die ID 33 muss ggfs. angepasst werden um&lt;br /&gt;
 id www-data&lt;br /&gt;
damit die Rechte passen.&lt;br /&gt;
&lt;br /&gt;
Es müssen auch die Laufwerke _Cockpit_Daten und _Cockpit_Verwaltung gemounted werden.&lt;br /&gt;
&lt;br /&gt;
Weiter müssen ggfs. einige &amp;quot;.env&amp;quot;-Dateien angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;html/api/connection/.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;.docker/backup/backup.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Siehe die jeweiligen &amp;quot;*.env.example&amp;quot;-Dateien&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach muss das Backup der HTML-Dateien in das Verzeichnis /srv/tisento-docker/cockpit-prod/html kopiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach müssen noch die SQL-Dateien eingespielt werden:&lt;br /&gt;
&lt;br /&gt;
Dazu die SQL-Datei in den Server laden (&amp;quot;root&amp;quot; =&amp;gt; user, &amp;quot;test&amp;quot; ist das Passwort).&lt;br /&gt;
&lt;br /&gt;
Evtl. muss die erste Zeile gelöscht werden:&lt;br /&gt;
 tail -n +2 cockpit-dev_db.sql &amp;gt; cockpit-dev_db2.sql&lt;br /&gt;
&lt;br /&gt;
 sudo docker exec -i cockpit-prod-db-1 mariadb -u root -ptest &amp;lt; cockpit-prod_db.sql&lt;br /&gt;
Danach muss das Root-PW händisch geändert werden (bspw. im PMA)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;WICHTIG:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Daten beim LX DW-Importer müssen auch geändert werden!&#039;&#039;&#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-test.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-test.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Siehe PROD (ohne Mounting)&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-dev.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-dev.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Siehe PROD (ohne Mounting)&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Überwachung der diversen Docker-Container, als auch für diverse Systeme da (z.B. HEALTH, also CPU, RAM, HDD von diversen Servern).&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/monitor.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das /data -Verzeichnis gesichert&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Kopie des /data-Verzeichnisses zurück nach /srv/tisento-docker/monitor/app/data. Es muss evtl. die Datei backup_db.db in kuma.db umbenannt werden&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Verwaltung der verschiedenen Docker-Container notwendig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/portainer.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das data-Verzeichnis gesichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Das data-Verzeichnis muss in /srv/tisento-docker/portainer/data gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Dieses Tool ist für die FTP-Verbindung zu den jeweiligen HTML-Verzeichnissen von [https://cockpit.tisento.com cockpit.tisento.com], [https://cockpit-test.tisento.com cockpit-test.tisento.com] und [https://cockpit-dev.tisento.com cockpit-dev.tisento.com] zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/ftp.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird die pureftpd.passwd Datei als backup gespeichert. Diese beinhaltet die FTP-Verzeichnisse und Server und Passwörter.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die pureftpd.passwd muss in das Verzeichnis /srv/tisento-docker/ftp/.docker/passwd/ lopiert werden.&lt;br /&gt;
&lt;br /&gt;
Es muss in dem docker-compose evtl. die Zeile &amp;quot;PUBLICHOST: &amp;quot;172.22.0.223&amp;quot;&amp;quot; angepasst werden.&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Erstellung und Verwaltung der Tickets zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Fehlerbehebung ====&lt;br /&gt;
Wenn bspw. die Festplatte vom Docker-Server vollgelaufen ist, dann müssen die Dienste einmal neugestartet werden.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann es sein, dass man die Caches mit folgenden Befehlen (im Daemon) löscht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Cache::Delete&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Config::Rebuild --cleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Loader::CacheCleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NGINX (noch nicht als Docker-Container) ===&lt;br /&gt;
nginx ist ein Reverse-Proxy, damit die verschiedenen Domains den richtigen Weg zu den Services finden.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /srv/tisento-docker/SERVICENAME/.....&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es werden die verzeichnisse certbot and nginx gebackupped&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die beiden Verzeichnisse müssen in /srv/tisento-docker/nginx/nginx und srv/tisento-docker/nginx/certbot kopiert werden! &lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird einmal am Tag die Liste mit den Regeln abgespeichert.&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Erstellen der einzelnen Richtlinien mit:&lt;br /&gt;
 sudo ufw allow 10021/tcp&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Die Daten befinden sich unter /srv/tisento-docker/gitea/data.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das data-Verzeichnis gesichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Das data-Verzeichnis muss in /srv/tisento-docker/portainer/data gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
== Backup // Wiederherstellung ==&lt;br /&gt;
Jeder Service hat ein eigenes Backup-System.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden gemeinsam per FTP auf den Server XY übertragen. (TODO)&lt;br /&gt;
&lt;br /&gt;
Dort läuft ein kleiner PHP-Cronjob, der diese Backups in ein anderes Verzeichnis überträgt. (TODO)&lt;br /&gt;
&lt;br /&gt;
Diese Dateien werden für eine Wiederherstellung benötigt!&lt;br /&gt;
&lt;br /&gt;
=== Wiederherstellung ===&lt;br /&gt;
Für die Wiederherstellung werden die Backups vom Server benötigt. Weiter wird diese Anleitung benötigt.&lt;br /&gt;
&lt;br /&gt;
Weiter wird für ein vollständigen Backups  ein neuer Server benötigt, dort müssen folgende Schritte in der Reihenfolge ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Installation s.o. &amp;quot;Neuinstallation&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Außerdem muss der DNS und weitere Weiterleitungen der entsprechenden Domains auf den neuen Server geändert werden!&lt;br /&gt;
&lt;br /&gt;
Es werden auch einige Passwörter gebraucht. Dieses sind in keepass.tisento.com und auch in der Passwort-Datei abgespeichert. Diese kann mit dem üblichen Passwort geöffnet werden (TODO)!&lt;br /&gt;
&lt;br /&gt;
Kopie des git-Repos in dem Verzeichnis /srv/tisento-docker/.&lt;br /&gt;
&lt;br /&gt;
Per SSH Beispielsweise mit dem CMD zum Server kopiert werden:&lt;br /&gt;
 sudo scp -P XXXX /srv/tisento-docker/nginx/backups/daily/backup_nginx_20250620_020000.tar.gz USER@IP:/tmp/nginx.tar.gz&lt;br /&gt;
Entpacken der Dateien mit bspw.:&lt;br /&gt;
 tar -xvzf yourfile.tar.gz -C /path/to/your/special/folder&lt;br /&gt;
Wiederherstellung nginx s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung Portainer s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung gitea s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der restlichen Docker-Services mithilfe der Docker-Compose-Dateien in gitea. Alternativ sind die Docker-Compose-Dateien auch in den Backup gespeichert und wurden im best-case zu &amp;quot;/srv/tisento-docker&amp;quot; zurückgespielt!&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der einzelnen Daten der Services mithilfe der obigen Erklärungen.&lt;br /&gt;
&lt;br /&gt;
== Test der Systeme ==&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP &amp;amp; V-Laufwerk prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Aufruf der Website, schauen, ob alle Monitore noch vorhanden sind.&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Aufruf der Website und schauen, ob zu den Containern eine Verbindung herstgestellt wird.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Hestellung der Verbindung zu Cockpit-Prod,-Test und -Dev.&lt;br /&gt;
&lt;br /&gt;
Testübertragung (bspw. Task) und test davon!&lt;br /&gt;
&lt;br /&gt;
Ansonsten einfach mal die index.html umbenennen!&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Erstellung eines Test-Tickets via Mail an: support@tisento.com &lt;br /&gt;
&lt;br /&gt;
Prüfen, ob dieses Ticket in der GUI auftaucht.&lt;br /&gt;
&lt;br /&gt;
Antworten auf dieses Ticket und schauen, ob die Antwort in dem Mail-Client ankommt.&lt;br /&gt;
&lt;br /&gt;
=== NGINX ===&lt;br /&gt;
&lt;br /&gt;
Aufrufen der diversen Websiten.&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Anmeldung mit dem AD-Nutzern&lt;br /&gt;
&lt;br /&gt;
== Neuen Docker-Dienst anlegen ==&lt;br /&gt;
Hier wird davon ausgegangen, dass es sich um einen Dockerdienst handelt, der auf einem Port wie 80 oder 443 angesprochen werden soll. Wir gehen davon aus, dass das Portmapping &amp;quot;127.0.0.1:10443:443&amp;quot; ist, also der Container den Port 10443 auf das lokale Interface öffnet und mit dem Container-Port 10443 mappt. Weiter gehen wir davon aus, dass der Service über die Subdomain &amp;quot;&#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&amp;quot; über HTTP und HTTPS erreichbar sein soll. HTTP wird auf HTTPS weitergeleitet.&lt;br /&gt;
&lt;br /&gt;
# Erstellung der Sub-Domain &#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&lt;br /&gt;
## [mailto:puetter@tisento.com Torsten] diese Sub-Domain dem Server zuweisen lassen.&lt;br /&gt;
## Für das SSL-Zertifikat muss die Domain öffentlich erreichbar sein!&lt;br /&gt;
# Erstellung der Konfiguration im nginx Service&lt;br /&gt;
## Erstellung einer Datei sub.tisento.com.conf in dem Pfad /var/www/nginx.tisento.com/nginx/...&lt;br /&gt;
## Hinzufügen von dem Inhalt:&amp;lt;blockquote&amp;gt;adasdsa&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
## Prüfung ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neu laden&lt;br /&gt;
## Hinzufügen eines Zertifikates mit dem Befehl:&lt;br /&gt;
### asdasd&lt;br /&gt;
## Hinzufügen der SSL Konfuguration zur Datei (sub.tisento.com.conf)&lt;br /&gt;
## Prüfen ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neuladen&lt;br /&gt;
# Prüfen der Verbindung&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=324</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=324"/>
		<updated>2025-06-23T10:25:17Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: /* Wiederherstellung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Zugriff==&lt;br /&gt;
Der Docker-Server ist unter der 172.22.0.224 erreichbar.&lt;br /&gt;
&lt;br /&gt;
Der neue Docker-Server wird unter 172.22.0.223 erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
Der Port, Nutzername und auch das Passwort sind im [http://keepass.tisento.com Passbolt] gespeichert.&lt;br /&gt;
&lt;br /&gt;
== Zugriff Dienste ==&lt;br /&gt;
Nachfolgend eine Liste der Dienste die auf dem Docker laufen&lt;br /&gt;
&lt;br /&gt;
* [https://cockpit.tisento.com Cockpit-PROD] &lt;br /&gt;
* [https://cockpit-test.tisento.com Cockpit-TEST]&lt;br /&gt;
* [https://cockpit-dev.tisento.com Cockpit-DEV]&lt;br /&gt;
* [https://monitor.tisento.com UpTime Kuma (Monitor)]&lt;br /&gt;
* [https://portainer.tisento.com Portainer (Docker Verwaltung)]&lt;br /&gt;
* FTP&lt;br /&gt;
* [https://service.tisento.com Ticketsystem / Otobo]&lt;br /&gt;
* NGINX &amp;amp; Certbot (noch nicht als Docker-Container)&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* [https://gitea.tisento.com Git (gitea)] noch nicht installiert&lt;br /&gt;
&lt;br /&gt;
== Neuinstallation ==&lt;br /&gt;
Kopie der &amp;quot;tisento.conf&amp;quot;-Datei in den Ordner: &amp;quot;/etc/ssh/sshd_config.d/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hinzufügen des 9022-Ports zur UFW mit:&lt;br /&gt;
 sudo ufw allow 9022/tcp&lt;br /&gt;
Einschalten der ufw mit&lt;br /&gt;
 sudo ufw enable&lt;br /&gt;
&lt;br /&gt;
=== Installation vom Docker (https://docs.docker.com/engine/install/ubuntu/): ===&lt;br /&gt;
Install using the &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository&lt;br /&gt;
&lt;br /&gt;
Before you install Docker Engine for the first time on a new host machine, you need to set up the Docker &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository. Afterward, you can install and update Docker from the repository.&lt;br /&gt;
&lt;br /&gt;
* Set up Docker&#039;s &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository.&lt;br /&gt;
&lt;br /&gt;
 # Add Docker&#039;s official GPG key:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu/gpg&amp;lt;/nowiki&amp;gt; -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
 &lt;br /&gt;
 # Add the repository to Apt sources:&lt;br /&gt;
 echo \&lt;br /&gt;
 &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu&amp;lt;/nowiki&amp;gt; \&lt;br /&gt;
 $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;${UBUNTU_CODENAME:-$VERSION_CODENAME}&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
* Install the Docker packages.&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
* Verify that the installation is successful by running the &amp;lt;code&amp;gt;hello-world&amp;lt;/code&amp;gt; image:&lt;br /&gt;
&lt;br /&gt;
 sudo docker run hello-world&lt;br /&gt;
&lt;br /&gt;
=== Installation der Sonstigen Softare (s.u.) ===&lt;br /&gt;
via &amp;quot;sudo apt install ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Kopie des Docker-Repos ===&lt;br /&gt;
Kopie des Repos in &amp;quot;/srv/tisento-docker&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Dort muss als erstes &amp;quot;portainer gestartet und wiederhergestellt werden.&lt;br /&gt;
&lt;br /&gt;
Danach wird gitea gestartet und wiederhergestellt. (Damit die repos gezogen werden können)&lt;br /&gt;
&lt;br /&gt;
Danach nach und nach die anderen Services wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
=== Einstellung UFW ===&lt;br /&gt;
 sudo ufw allow 80/tcp&lt;br /&gt;
&lt;br /&gt;
 sudo ufw allow 443/tcp&lt;br /&gt;
&lt;br /&gt;
== Sonstige Software (nicht vollständig, muss überarbeitet werden!) ==&lt;br /&gt;
&lt;br /&gt;
* Docker (s.o.)&lt;br /&gt;
* git&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* cron (Wiederkehrende Aufgaben, bspw. Backups)&lt;br /&gt;
* ncdu (Speicherbelegung)&lt;br /&gt;
* nmon (Monitoring)&lt;br /&gt;
* cifs-utils (Mounting Laufwerke)&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Docker-Dienste ==&lt;br /&gt;
Die meisten Dienste sind mit ihren Daten und Definitionen unter /var/html/dienst.tisento.com erreichbar.&lt;br /&gt;
&lt;br /&gt;
Dabei sind in dem Ordner /var/html/dienst.tisento.com/.docker die Definitionen der Docker-Container.&lt;br /&gt;
&lt;br /&gt;
In dem Ordner /var/html/dienst.tisento.com/backups sind die jeweiligen Backups der Daten.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F2)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst. &lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/srv/tisento-docker/cockpit-prod/backups gespeichert. Das tägliche Backup wird nach 30 Tagen gelöscht, die monatlichen nach einem Jahr und die jährlichen Backups nie.&lt;br /&gt;
&lt;br /&gt;
EVTL. NOCH MONITOR HINZUFÜGEN DER BACKUP TÄGLICH PRÜFT!&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Mounting der Laufwerke via:&lt;br /&gt;
 sudo mount.cifs -v //172.22.0.245/cockpit/_Daten /srv/tisento-docker/cockpit-prod/html/_Daten/ --verbose -o user=us,password=pw,domain=TISENTOSAN2,vers=2.0,uid=33,gid=33&lt;br /&gt;
Die ID 33 muss ggfs. angepasst werden um&lt;br /&gt;
 id www-data&lt;br /&gt;
damit die Rechte passen.&lt;br /&gt;
&lt;br /&gt;
Es müssen auch die Laufwerke _Cockpit_Daten und _Cockpit_Verwaltung gemounted werden.&lt;br /&gt;
&lt;br /&gt;
Weiter müssen ggfs. einige &amp;quot;.env&amp;quot;-Dateien angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;html/api/connection/.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;.docker/backup/backup.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Siehe die jeweiligen &amp;quot;*.env.example&amp;quot;-Dateien&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach muss das Backup der HTML-Dateien in das Verzeichnis /srv/tisento-docker/cockpit-prod/html kopiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach müssen noch die SQL-Dateien eingespielt werden:&lt;br /&gt;
&lt;br /&gt;
Dazu die SQL-Datei in den Server laden (&amp;quot;root&amp;quot; =&amp;gt; user, &amp;quot;test&amp;quot; ist das Passwort).&lt;br /&gt;
&lt;br /&gt;
Evtl. muss die erste Zeile gelöscht werden:&lt;br /&gt;
 tail -n +2 cockpit-dev_db.sql &amp;gt; cockpit-dev_db2.sql&lt;br /&gt;
&lt;br /&gt;
 sudo docker exec -i cockpit-prod-db-1 mariadb -u root -ptest &amp;lt; cockpit-prod_db.sql&lt;br /&gt;
Danach muss das Root-PW händisch geändert werden (bspw. im PMA)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;WICHTIG:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Daten beim LX DW-Importer müssen auch geändert werden!&#039;&#039;&#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-test.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-test.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Siehe PROD (ohne Mounting)&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-dev.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-dev.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Siehe PROD (ohne Mounting)&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Überwachung der diversen Docker-Container, als auch für diverse Systeme da (z.B. HEALTH, also CPU, RAM, HDD von diversen Servern).&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/monitor.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das /data -Verzeichnis gesichert&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Kopie des /data-Verzeichnisses zurück nach /srv/tisento-docker/monitor/app/data. Es muss evtl. die Datei backup_db.db in kuma.db umbenannt werden&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Verwaltung der verschiedenen Docker-Container notwendig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/portainer.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das data-Verzeichnis gesichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Das data-Verzeichnis muss in /srv/tisento-docker/portainer/data gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Dieses Tool ist für die FTP-Verbindung zu den jeweiligen HTML-Verzeichnissen von [https://cockpit.tisento.com cockpit.tisento.com], [https://cockpit-test.tisento.com cockpit-test.tisento.com] und [https://cockpit-dev.tisento.com cockpit-dev.tisento.com] zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/ftp.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird die pureftpd.passwd Datei als backup gespeichert. Diese beinhaltet die FTP-Verzeichnisse und Server und Passwörter.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die pureftpd.passwd muss in das Verzeichnis /srv/tisento-docker/ftp/.docker/passwd/ lopiert werden.&lt;br /&gt;
&lt;br /&gt;
Es muss in dem docker-compose evtl. die Zeile &amp;quot;PUBLICHOST: &amp;quot;172.22.0.223&amp;quot;&amp;quot; angepasst werden.&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Erstellung und Verwaltung der Tickets zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Fehlerbehebung ====&lt;br /&gt;
Wenn bspw. die Festplatte vom Docker-Server vollgelaufen ist, dann müssen die Dienste einmal neugestartet werden.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann es sein, dass man die Caches mit folgenden Befehlen (im Daemon) löscht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Cache::Delete&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Config::Rebuild --cleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Loader::CacheCleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NGINX (noch nicht als Docker-Container) ===&lt;br /&gt;
nginx ist ein Reverse-Proxy, damit die verschiedenen Domains den richtigen Weg zu den Services finden.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /srv/tisento-docker/SERVICENAME/.....&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es werden die verzeichnisse certbot and nginx gebackupped&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die beiden Verzeichnisse müssen in /srv/tisento-docker/nginx/nginx und srv/tisento-docker/nginx/certbot kopiert werden! &lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird einmal am Tag die Liste mit den Regeln abgespeichert.&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Erstellen der einzelnen Richtlinien mit:&lt;br /&gt;
 sudo ufw allow 10021/tcp&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Die Daten befinden sich unter /srv/tisento-docker/gitea/data.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das data-Verzeichnis gesichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Das data-Verzeichnis muss in /srv/tisento-docker/portainer/data gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
== Backup // Wiederherstellung ==&lt;br /&gt;
Jeder Service hat ein eigenes Backup-System.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden gemeinsam per FTP auf den Server XY übertragen. (TODO)&lt;br /&gt;
&lt;br /&gt;
Dort läuft ein kleiner PHP-Cronjob, der diese Backups in ein anderes Verzeichnis überträgt. (TODO)&lt;br /&gt;
&lt;br /&gt;
Diese Dateien werden für eine Wiederherstellung benötigt!&lt;br /&gt;
&lt;br /&gt;
=== Wiederherstellung ===&lt;br /&gt;
Für die Wiederherstellung werden die Backups vom Server benötigt. Weiter wird diese Anleitung benötigt.&lt;br /&gt;
&lt;br /&gt;
Weiter wird für ein vollständigen Backups  ein neuer Server benötigt, dort müssen folgende Schritte in der Reihenfolge ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Installation s.o. &amp;quot;Neuinstallation&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Außerdem muss der DNS und weitere Weiterleitungen der entsprechenden Domains auf den neuen Server geändert werden!&lt;br /&gt;
&lt;br /&gt;
Es werden auch einige Passwörter gebraucht. Dieses sind in keepass.tisento.com und auch in der Passwort-Datei abgespeichert. Diese kann mit dem üblichen Passwort geöffnet werden (TODO)!&lt;br /&gt;
&lt;br /&gt;
Kopie des git-Repos in dem Verzeichnis /srv/tisento-docker/.&lt;br /&gt;
&lt;br /&gt;
Per SSH Beispielsweise mit dem CMD zum Server kopiert werden:&lt;br /&gt;
 sudo scp -P XXXX /srv/tisento-docker/nginx/backups/daily/backup_nginx_20250620_020000.tar.gz USER@IP:/tmp/nginx.tar.gz&lt;br /&gt;
Entpacken der Dateien mit bspw.:&lt;br /&gt;
 tar -xvzf yourfile.tar.gz -C /path/to/your/special/folder&lt;br /&gt;
Wiederherstellung nginx s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung Portainer s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung gitea s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der restlichen Docker-Services mithilfe der Docker-Compose-Dateien in gitea. Alternativ sind die Docker-Compose-Dateien auch in den Backup gespeichert und wurden im best-case zu &amp;quot;/srv/tisento-docker&amp;quot; zurückgespielt!&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der einzelnen Daten der Services mithilfe der obigen Erklärungen.&lt;br /&gt;
&lt;br /&gt;
== Test der Systeme ==&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP &amp;amp; V-Laufwerk prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Aufruf der Website, schauen, ob alle Monitore noch vorhanden sind.&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Aufruf der Website und schauen, ob zu den Containern eine Verbindung herstgestellt wird.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Hestellung der Verbindung zu Cockpit-Prod,-Test und -Dev.&lt;br /&gt;
&lt;br /&gt;
Testübertragung (bspw. Task) und test davon!&lt;br /&gt;
&lt;br /&gt;
Ansonsten einfach mal die index.html umbenennen!&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Erstellung eines Test-Tickets via Mail an: support@tisento.com &lt;br /&gt;
&lt;br /&gt;
Prüfen, ob dieses Ticket in der GUI auftaucht.&lt;br /&gt;
&lt;br /&gt;
Antworten auf dieses Ticket und schauen, ob die Antwort in dem Mail-Client ankommt.&lt;br /&gt;
&lt;br /&gt;
=== NGINX ===&lt;br /&gt;
&lt;br /&gt;
Aufrufen der diversen Websiten.&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Anmeldung mit dem AD-Nutzern&lt;br /&gt;
&lt;br /&gt;
== Neuen Docker-Dienst anlegen ==&lt;br /&gt;
Hier wird davon ausgegangen, dass es sich um einen Dockerdienst handelt, der auf einem Port wie 80 oder 443 angesprochen werden soll. Wir gehen davon aus, dass das Portmapping &amp;quot;127.0.0.1:10443:443&amp;quot; ist, also der Container den Port 10443 auf das lokale Interface öffnet und mit dem Container-Port 10443 mappt. Weiter gehen wir davon aus, dass der Service über die Subdomain &amp;quot;&#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&amp;quot; über HTTP und HTTPS erreichbar sein soll. HTTP wird auf HTTPS weitergeleitet.&lt;br /&gt;
&lt;br /&gt;
# Erstellung der Sub-Domain &#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&lt;br /&gt;
## [mailto:puetter@tisento.com Torsten] diese Sub-Domain dem Server zuweisen lassen.&lt;br /&gt;
## Für das SSL-Zertifikat muss die Domain öffentlich erreichbar sein!&lt;br /&gt;
# Erstellung der Konfiguration im nginx Service&lt;br /&gt;
## Erstellung einer Datei sub.tisento.com.conf in dem Pfad /var/www/nginx.tisento.com/nginx/...&lt;br /&gt;
## Hinzufügen von dem Inhalt:&amp;lt;blockquote&amp;gt;adasdsa&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
## Prüfung ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neu laden&lt;br /&gt;
## Hinzufügen eines Zertifikates mit dem Befehl:&lt;br /&gt;
### asdasd&lt;br /&gt;
## Hinzufügen der SSL Konfuguration zur Datei (sub.tisento.com.conf)&lt;br /&gt;
## Prüfen ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neuladen&lt;br /&gt;
# Prüfen der Verbindung&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=323</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=323"/>
		<updated>2025-06-20T09:44:51Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: /* Cockpit-PROD (cockpit.tisento.com) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Zugriff==&lt;br /&gt;
Der Docker-Server ist unter der 172.22.0.224 erreichbar.&lt;br /&gt;
&lt;br /&gt;
Der neue Docker-Server wird unter 172.22.0.223 erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
Der Port, Nutzername und auch das Passwort sind im [http://keepass.tisento.com Passbolt] gespeichert.&lt;br /&gt;
&lt;br /&gt;
== Zugriff Dienste ==&lt;br /&gt;
Nachfolgend eine Liste der Dienste die auf dem Docker laufen&lt;br /&gt;
&lt;br /&gt;
* [https://cockpit.tisento.com Cockpit-PROD] &lt;br /&gt;
* [https://cockpit-test.tisento.com Cockpit-TEST]&lt;br /&gt;
* [https://cockpit-dev.tisento.com Cockpit-DEV]&lt;br /&gt;
* [https://monitor.tisento.com UpTime Kuma (Monitor)]&lt;br /&gt;
* [https://portainer.tisento.com Portainer (Docker Verwaltung)]&lt;br /&gt;
* FTP&lt;br /&gt;
* [https://service.tisento.com Ticketsystem / Otobo]&lt;br /&gt;
* NGINX &amp;amp; Certbot (noch nicht als Docker-Container)&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* [https://gitea.tisento.com Git (gitea)] noch nicht installiert&lt;br /&gt;
&lt;br /&gt;
== Neuinstallation ==&lt;br /&gt;
Kopie der &amp;quot;tisento.conf&amp;quot;-Datei in den Ordner: &amp;quot;/etc/ssh/sshd_config.d/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hinzufügen des 9022-Ports zur UFW mit:&lt;br /&gt;
 sudo ufw allow 9022/tcp&lt;br /&gt;
Einschalten der ufw mit&lt;br /&gt;
 sudo ufw enable&lt;br /&gt;
&lt;br /&gt;
=== Installation vom Docker (https://docs.docker.com/engine/install/ubuntu/): ===&lt;br /&gt;
Install using the &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository&lt;br /&gt;
&lt;br /&gt;
Before you install Docker Engine for the first time on a new host machine, you need to set up the Docker &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository. Afterward, you can install and update Docker from the repository.&lt;br /&gt;
&lt;br /&gt;
* Set up Docker&#039;s &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository.&lt;br /&gt;
&lt;br /&gt;
 # Add Docker&#039;s official GPG key:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu/gpg&amp;lt;/nowiki&amp;gt; -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
 &lt;br /&gt;
 # Add the repository to Apt sources:&lt;br /&gt;
 echo \&lt;br /&gt;
 &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu&amp;lt;/nowiki&amp;gt; \&lt;br /&gt;
 $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;${UBUNTU_CODENAME:-$VERSION_CODENAME}&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
* Install the Docker packages.&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
* Verify that the installation is successful by running the &amp;lt;code&amp;gt;hello-world&amp;lt;/code&amp;gt; image:&lt;br /&gt;
&lt;br /&gt;
 sudo docker run hello-world&lt;br /&gt;
&lt;br /&gt;
=== Installation der Sonstigen Softare (s.u.) ===&lt;br /&gt;
via &amp;quot;sudo apt install ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Kopie des Docker-Repos ===&lt;br /&gt;
Kopie des Repos in &amp;quot;/srv/tisento-docker&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Dort muss als erstes &amp;quot;portainer gestartet und wiederhergestellt werden.&lt;br /&gt;
&lt;br /&gt;
Danach wird gitea gestartet und wiederhergestellt. (Damit die repos gezogen werden können)&lt;br /&gt;
&lt;br /&gt;
Danach nach und nach die anderen Services wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
=== Einstellung UFW ===&lt;br /&gt;
 sudo ufw allow 80/tcp&lt;br /&gt;
&lt;br /&gt;
 sudo ufw allow 443/tcp&lt;br /&gt;
&lt;br /&gt;
== Sonstige Software (nicht vollständig, muss überarbeitet werden!) ==&lt;br /&gt;
&lt;br /&gt;
* Docker (s.o.)&lt;br /&gt;
* git&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* cron (Wiederkehrende Aufgaben, bspw. Backups)&lt;br /&gt;
* ncdu (Speicherbelegung)&lt;br /&gt;
* nmon (Monitoring)&lt;br /&gt;
* cifs-utils (Mounting Laufwerke)&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Docker-Dienste ==&lt;br /&gt;
Die meisten Dienste sind mit ihren Daten und Definitionen unter /var/html/dienst.tisento.com erreichbar.&lt;br /&gt;
&lt;br /&gt;
Dabei sind in dem Ordner /var/html/dienst.tisento.com/.docker die Definitionen der Docker-Container.&lt;br /&gt;
&lt;br /&gt;
In dem Ordner /var/html/dienst.tisento.com/backups sind die jeweiligen Backups der Daten.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F2)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst. &lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/srv/tisento-docker/cockpit-prod/backups gespeichert. Das tägliche Backup wird nach 30 Tagen gelöscht, die monatlichen nach einem Jahr und die jährlichen Backups nie.&lt;br /&gt;
&lt;br /&gt;
EVTL. NOCH MONITOR HINZUFÜGEN DER BACKUP TÄGLICH PRÜFT!&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Mounting der Laufwerke via:&lt;br /&gt;
 sudo mount.cifs -v //172.22.0.245/cockpit/_Daten /srv/tisento-docker/cockpit-prod/html/_Daten/ --verbose -o user=us,password=pw,domain=TISENTOSAN2,vers=2.0,uid=33,gid=33&lt;br /&gt;
Die ID 33 muss ggfs. angepasst werden um&lt;br /&gt;
 id www-data&lt;br /&gt;
damit die Rechte passen.&lt;br /&gt;
&lt;br /&gt;
Es müssen auch die Laufwerke _Cockpit_Daten und _Cockpit_Verwaltung gemounted werden.&lt;br /&gt;
&lt;br /&gt;
Weiter müssen ggfs. einige &amp;quot;.env&amp;quot;-Dateien angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;html/api/connection/.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;.docker/backup/backup.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Siehe die jeweiligen &amp;quot;*.env.example&amp;quot;-Dateien&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach muss das Backup der HTML-Dateien in das Verzeichnis /srv/tisento-docker/cockpit-prod/html kopiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach müssen noch die SQL-Dateien eingespielt werden:&lt;br /&gt;
&lt;br /&gt;
Dazu die SQL-Datei in den Server laden (&amp;quot;root&amp;quot; =&amp;gt; user, &amp;quot;test&amp;quot; ist das Passwort).&lt;br /&gt;
&lt;br /&gt;
Evtl. muss die erste Zeile gelöscht werden:&lt;br /&gt;
 tail -n +2 cockpit-dev_db.sql &amp;gt; cockpit-dev_db2.sql&lt;br /&gt;
&lt;br /&gt;
 sudo docker exec -i cockpit-prod-db-1 mariadb -u root -ptest &amp;lt; cockpit-prod_db.sql&lt;br /&gt;
Danach muss das Root-PW händisch geändert werden (bspw. im PMA)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;WICHTIG:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Daten beim LX DW-Importer müssen auch geändert werden!&#039;&#039;&#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-test.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-test.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Siehe PROD (ohne Mounting)&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-dev.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-dev.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Siehe PROD (ohne Mounting)&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Überwachung der diversen Docker-Container, als auch für diverse Systeme da (z.B. HEALTH, also CPU, RAM, HDD von diversen Servern).&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/monitor.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das /data -Verzeichnis gesichert&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Kopie des /data-Verzeichnisses zurück nach /srv/tisento-docker/monitor/app/data. Es muss evtl. die Datei backup_db.db in kuma.db umbenannt werden&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Verwaltung der verschiedenen Docker-Container notwendig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/portainer.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das data-Verzeichnis gesichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Das data-Verzeichnis muss in /srv/tisento-docker/portainer/data gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Dieses Tool ist für die FTP-Verbindung zu den jeweiligen HTML-Verzeichnissen von [https://cockpit.tisento.com cockpit.tisento.com], [https://cockpit-test.tisento.com cockpit-test.tisento.com] und [https://cockpit-dev.tisento.com cockpit-dev.tisento.com] zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/ftp.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird die pureftpd.passwd Datei als backup gespeichert. Diese beinhaltet die FTP-Verzeichnisse und Server und Passwörter.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die pureftpd.passwd muss in das Verzeichnis /srv/tisento-docker/ftp/.docker/passwd/ lopiert werden.&lt;br /&gt;
&lt;br /&gt;
Es muss in dem docker-compose evtl. die Zeile &amp;quot;PUBLICHOST: &amp;quot;172.22.0.223&amp;quot;&amp;quot; angepasst werden.&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Erstellung und Verwaltung der Tickets zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Fehlerbehebung ====&lt;br /&gt;
Wenn bspw. die Festplatte vom Docker-Server vollgelaufen ist, dann müssen die Dienste einmal neugestartet werden.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann es sein, dass man die Caches mit folgenden Befehlen (im Daemon) löscht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Cache::Delete&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Config::Rebuild --cleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Loader::CacheCleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NGINX (noch nicht als Docker-Container) ===&lt;br /&gt;
nginx ist ein Reverse-Proxy, damit die verschiedenen Domains den richtigen Weg zu den Services finden.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /srv/tisento-docker/SERVICENAME/.....&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es werden die verzeichnisse certbot and nginx gebackupped&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die beiden Verzeichnisse müssen in /srv/tisento-docker/nginx/nginx und srv/tisento-docker/nginx/certbot kopiert werden! &lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Die Daten befinden sich unter /srv/tisento-docker/gitea/data.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das data-Verzeichnis gesichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Das data-Verzeichnis muss in /srv/tisento-docker/portainer/data gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
== Backup // Wiederherstellung ==&lt;br /&gt;
Jeder Service hat ein eigenes Backup-System.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden gemeinsam per FTP auf den Server XY übertragen. (TODO)&lt;br /&gt;
&lt;br /&gt;
Dort läuft ein kleiner PHP-Cronjob, der diese Backups in ein anderes Verzeichnis überträgt. (TODO)&lt;br /&gt;
&lt;br /&gt;
Diese Dateien werden für eine Wiederherstellung benötigt!&lt;br /&gt;
&lt;br /&gt;
=== Wiederherstellung ===&lt;br /&gt;
Für die Wiederherstellung werden die Backups vom Server benötigt. Weiter wird diese Anleitung benötigt.&lt;br /&gt;
&lt;br /&gt;
Weiter wird für ein vollständigen Backups  ein neuer Server benötigt, dort müssen folgende Schritte in der Reihenfolge ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Installation s.o. &amp;quot;Neuinstallation&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Außerdem muss der DNS und weitere Weiterleitungen der entsprechenden Domains auf den neuen Server geändert werden!&lt;br /&gt;
&lt;br /&gt;
Es werden auch einige Passwörter gebraucht. Dieses sind in keepass.tisento.com und auch in der Passwort-Datei abgespeichert. Diese kann mit dem üblichen Passwort geöffnet werden (TODO)!&lt;br /&gt;
&lt;br /&gt;
Kopie des git-Repos in dem Verzeichnis /srv/tisento-docker/.&lt;br /&gt;
&lt;br /&gt;
Per SSH Beispielsweise mit dem CMD zum Server kopiert werden:&lt;br /&gt;
 sudo scp -P XXXX /srv/tisento-docker/nginx/backups/daily/backup_nginx_20250620_020000.tar.gz USER@IP:/tmp/nginx.tar.gz&lt;br /&gt;
Entpacken der Dateien mit bspw.:&lt;br /&gt;
 tar -xvzf yourfile.tar.gz -C /path/to/your/special/folder&lt;br /&gt;
Wiederherstellung nginx s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung Portainer s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung gitea s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der restlichen Docker-Services mithilfe der Docker-Compose-Dateien in gitea. Alternativ sind die Docker-Compose-Dateien auch in den Backup gespeichert und wurden im best-case zu &amp;quot;/srv/tisento-docker&amp;quot; zurückgespielt!&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der einzelnen Daten der Services mithilfe der obigen Erklärungen.&lt;br /&gt;
&lt;br /&gt;
== Test der Systeme ==&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP &amp;amp; V-Laufwerk prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Aufruf der Website, schauen, ob alle Monitore noch vorhanden sind.&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Aufruf der Website und schauen, ob zu den Containern eine Verbindung herstgestellt wird.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Hestellung der Verbindung zu Cockpit-Prod,-Test und -Dev.&lt;br /&gt;
&lt;br /&gt;
Testübertragung (bspw. Task) und test davon!&lt;br /&gt;
&lt;br /&gt;
Ansonsten einfach mal die index.html umbenennen!&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Erstellung eines Test-Tickets via Mail an: support@tisento.com &lt;br /&gt;
&lt;br /&gt;
Prüfen, ob dieses Ticket in der GUI auftaucht.&lt;br /&gt;
&lt;br /&gt;
Antworten auf dieses Ticket und schauen, ob die Antwort in dem Mail-Client ankommt.&lt;br /&gt;
&lt;br /&gt;
=== NGINX ===&lt;br /&gt;
&lt;br /&gt;
Aufrufen der diversen Websiten.&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Anmeldung mit dem AD-Nutzern&lt;br /&gt;
&lt;br /&gt;
== Neuen Docker-Dienst anlegen ==&lt;br /&gt;
Hier wird davon ausgegangen, dass es sich um einen Dockerdienst handelt, der auf einem Port wie 80 oder 443 angesprochen werden soll. Wir gehen davon aus, dass das Portmapping &amp;quot;127.0.0.1:10443:443&amp;quot; ist, also der Container den Port 10443 auf das lokale Interface öffnet und mit dem Container-Port 10443 mappt. Weiter gehen wir davon aus, dass der Service über die Subdomain &amp;quot;&#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&amp;quot; über HTTP und HTTPS erreichbar sein soll. HTTP wird auf HTTPS weitergeleitet.&lt;br /&gt;
&lt;br /&gt;
# Erstellung der Sub-Domain &#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&lt;br /&gt;
## [mailto:puetter@tisento.com Torsten] diese Sub-Domain dem Server zuweisen lassen.&lt;br /&gt;
## Für das SSL-Zertifikat muss die Domain öffentlich erreichbar sein!&lt;br /&gt;
# Erstellung der Konfiguration im nginx Service&lt;br /&gt;
## Erstellung einer Datei sub.tisento.com.conf in dem Pfad /var/www/nginx.tisento.com/nginx/...&lt;br /&gt;
## Hinzufügen von dem Inhalt:&amp;lt;blockquote&amp;gt;adasdsa&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
## Prüfung ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neu laden&lt;br /&gt;
## Hinzufügen eines Zertifikates mit dem Befehl:&lt;br /&gt;
### asdasd&lt;br /&gt;
## Hinzufügen der SSL Konfuguration zur Datei (sub.tisento.com.conf)&lt;br /&gt;
## Prüfen ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neuladen&lt;br /&gt;
# Prüfen der Verbindung&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=322</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=322"/>
		<updated>2025-06-20T09:08:00Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: /* Backup // Wiederherstellung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Zugriff==&lt;br /&gt;
Der Docker-Server ist unter der 172.22.0.224 erreichbar.&lt;br /&gt;
&lt;br /&gt;
Der neue Docker-Server wird unter 172.22.0.223 erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
Der Port, Nutzername und auch das Passwort sind im [http://keepass.tisento.com Passbolt] gespeichert.&lt;br /&gt;
&lt;br /&gt;
== Zugriff Dienste ==&lt;br /&gt;
Nachfolgend eine Liste der Dienste die auf dem Docker laufen&lt;br /&gt;
&lt;br /&gt;
* [https://cockpit.tisento.com Cockpit-PROD] &lt;br /&gt;
* [https://cockpit-test.tisento.com Cockpit-TEST]&lt;br /&gt;
* [https://cockpit-dev.tisento.com Cockpit-DEV]&lt;br /&gt;
* [https://monitor.tisento.com UpTime Kuma (Monitor)]&lt;br /&gt;
* [https://portainer.tisento.com Portainer (Docker Verwaltung)]&lt;br /&gt;
* FTP&lt;br /&gt;
* [https://service.tisento.com Ticketsystem / Otobo]&lt;br /&gt;
* NGINX &amp;amp; Certbot (noch nicht als Docker-Container)&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* [https://gitea.tisento.com Git (gitea)] noch nicht installiert&lt;br /&gt;
&lt;br /&gt;
== Neuinstallation ==&lt;br /&gt;
Kopie der &amp;quot;tisento.conf&amp;quot;-Datei in den Ordner: &amp;quot;/etc/ssh/sshd_config.d/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hinzufügen des 9022-Ports zur UFW mit:&lt;br /&gt;
 sudo ufw allow 9022/tcp&lt;br /&gt;
Einschalten der ufw mit&lt;br /&gt;
 sudo ufw enable&lt;br /&gt;
&lt;br /&gt;
=== Installation vom Docker (https://docs.docker.com/engine/install/ubuntu/): ===&lt;br /&gt;
Install using the &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository&lt;br /&gt;
&lt;br /&gt;
Before you install Docker Engine for the first time on a new host machine, you need to set up the Docker &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository. Afterward, you can install and update Docker from the repository.&lt;br /&gt;
&lt;br /&gt;
* Set up Docker&#039;s &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository.&lt;br /&gt;
&lt;br /&gt;
 # Add Docker&#039;s official GPG key:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu/gpg&amp;lt;/nowiki&amp;gt; -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
 &lt;br /&gt;
 # Add the repository to Apt sources:&lt;br /&gt;
 echo \&lt;br /&gt;
 &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu&amp;lt;/nowiki&amp;gt; \&lt;br /&gt;
 $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;${UBUNTU_CODENAME:-$VERSION_CODENAME}&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
* Install the Docker packages.&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
* Verify that the installation is successful by running the &amp;lt;code&amp;gt;hello-world&amp;lt;/code&amp;gt; image:&lt;br /&gt;
&lt;br /&gt;
 sudo docker run hello-world&lt;br /&gt;
&lt;br /&gt;
=== Installation der Sonstigen Softare (s.u.) ===&lt;br /&gt;
via &amp;quot;sudo apt install ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Kopie des Docker-Repos ===&lt;br /&gt;
Kopie des Repos in &amp;quot;/srv/tisento-docker&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Dort muss als erstes &amp;quot;portainer gestartet und wiederhergestellt werden.&lt;br /&gt;
&lt;br /&gt;
Danach wird gitea gestartet und wiederhergestellt. (Damit die repos gezogen werden können)&lt;br /&gt;
&lt;br /&gt;
Danach nach und nach die anderen Services wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
=== Einstellung UFW ===&lt;br /&gt;
 sudo ufw allow 80/tcp&lt;br /&gt;
&lt;br /&gt;
 sudo ufw allow 443/tcp&lt;br /&gt;
&lt;br /&gt;
== Sonstige Software (nicht vollständig, muss überarbeitet werden!) ==&lt;br /&gt;
&lt;br /&gt;
* Docker (s.o.)&lt;br /&gt;
* git&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* cron (Wiederkehrende Aufgaben, bspw. Backups)&lt;br /&gt;
* ncdu (Speicherbelegung)&lt;br /&gt;
* nmon (Monitoring)&lt;br /&gt;
* cifs-utils (Mounting Laufwerke)&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Docker-Dienste ==&lt;br /&gt;
Die meisten Dienste sind mit ihren Daten und Definitionen unter /var/html/dienst.tisento.com erreichbar.&lt;br /&gt;
&lt;br /&gt;
Dabei sind in dem Ordner /var/html/dienst.tisento.com/.docker die Definitionen der Docker-Container.&lt;br /&gt;
&lt;br /&gt;
In dem Ordner /var/html/dienst.tisento.com/backups sind die jeweiligen Backups der Daten.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F2)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst. &lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/srv/tisento-docker/cockpit-prod/backups gespeichert. Das tägliche Backup wird nach 30 Tagen gelöscht, die monatlichen nach einem Jahr und die jährlichen Backups nie.&lt;br /&gt;
&lt;br /&gt;
EVTL. NOCH MONITOR HINZUFÜGEN DER BACKUP TÄGLICH PRÜFT!&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Mounting der Laufwerke via:&lt;br /&gt;
 sudo mount.cifs -v //172.22.0.245/cockpit/_Daten /srv/tisento-docker/cockpit-prod/html/_Daten/ --verbose -o user=us,password=pw,domain=TISENTOSAN2,vers=2.0,uid=33,gid=33&lt;br /&gt;
Die ID 33 muss ggfs. angepasst werden um&lt;br /&gt;
 id www-data&lt;br /&gt;
damit die Rechte passen.&lt;br /&gt;
&lt;br /&gt;
Es müssen auch die Laufwerke _Cockpit_Daten und _Cockpit_Verwaltung gemounted werden.&lt;br /&gt;
&lt;br /&gt;
Weiter müssen ggfs. einige &amp;quot;.env&amp;quot;-Dateien angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;html/api/connection/.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;.docker/backup/backup.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Siehe die jeweiligen &amp;quot;*.env.example&amp;quot;-Dateien&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach muss das Backup der HTML-Dateien in das Verzeichnis /srv/tisento-docker/cockpit-prod/html kopiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach müssen noch die SQL-Dateien eingespielt werden:&lt;br /&gt;
&lt;br /&gt;
Dazu die SQL-Datei in den Server laden (&amp;quot;root&amp;quot; =&amp;gt; user, &amp;quot;test&amp;quot; ist das Passwort).&lt;br /&gt;
&lt;br /&gt;
Evtl. muss die erste Zeile gelöscht werden:&lt;br /&gt;
 tail -n +2 cockpit-dev_db.sql &amp;gt; cockpit-dev_db2.sql&lt;br /&gt;
&lt;br /&gt;
 sudo docker exec -i cockpit-prod-db-1 mariadb -u root -ptest &amp;lt; cockpit-prod_db.sql&lt;br /&gt;
Danach muss das Root-PW händisch geändert werden (bspw. im PMA)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;WICHTIG:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Daten beim LX-Importer müssen auch geändert werden!&#039;&#039;&#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-test.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-test.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-dev.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-dev.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Überwachung der diversen Docker-Container, als auch für diverse Systeme da (z.B. HEALTH, also CPU, RAM, HDD von diversen Servern).&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/monitor.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Verwaltung der verschiedenen Docker-Container notwendig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/portainer.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das data-Verzeichnis gesichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Das data-Verzeichnis muss in /srv/tisento-docker/portainer/data gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Dieses Tool ist für die FTP-Verbindung zu den jeweiligen HTML-Verzeichnissen von [https://cockpit.tisento.com cockpit.tisento.com], [https://cockpit-test.tisento.com cockpit-test.tisento.com] und [https://cockpit-dev.tisento.com cockpit-dev.tisento.com] zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/ftp.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird die pureftpd.passwd Datei als backup gespeichert. Diese beinhaltet die FTP-Verzeichnisse und Server und Passwörter.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die pureftpd.passwd muss in das Verzeichnis /srv/tisento-docker/ftp/.docker/passwd/ lopiert werden.&lt;br /&gt;
&lt;br /&gt;
Es muss in dem docker-compose evtl. die Zeile &amp;quot;PUBLICHOST: &amp;quot;172.22.0.223&amp;quot;&amp;quot; angepasst werden.&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Erstellung und Verwaltung der Tickets zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Fehlerbehebung ====&lt;br /&gt;
Wenn bspw. die Festplatte vom Docker-Server vollgelaufen ist, dann müssen die Dienste einmal neugestartet werden.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann es sein, dass man die Caches mit folgenden Befehlen (im Daemon) löscht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Cache::Delete&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Config::Rebuild --cleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Loader::CacheCleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NGINX (noch nicht als Docker-Container) ===&lt;br /&gt;
nginx ist ein Reverse-Proxy, damit die verschiedenen Domains den richtigen Weg zu den Services finden.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /srv/tisento-docker/SERVICENAME/.....&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es werden die verzeichnisse certbot and nginx gebackupped&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die beiden Verzeichnisse müssen in /srv/tisento-docker/nginx/nginx und srv/tisento-docker/nginx/certbot kopiert werden! &lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Backup // Wiederherstellung ==&lt;br /&gt;
Jeder Service hat ein eigenes Backup-System.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden gemeinsam per FTP auf den Server XY übertragen. (TODO)&lt;br /&gt;
&lt;br /&gt;
Dort läuft ein kleiner PHP-Cronjob, der diese Backups in ein anderes Verzeichnis überträgt. (TODO)&lt;br /&gt;
&lt;br /&gt;
Diese Dateien werden für eine Wiederherstellung benötigt!&lt;br /&gt;
&lt;br /&gt;
=== Wiederherstellung ===&lt;br /&gt;
Für die Wiederherstellung werden die Backups vom Server benötigt. Weiter wird diese Anleitung benötigt.&lt;br /&gt;
&lt;br /&gt;
Weiter wird für ein vollständigen Backups  ein neuer Server benötigt, dort müssen folgende Schritte in der Reihenfolge ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Installation s.o. &amp;quot;Neuinstallation&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Außerdem muss der DNS und weitere Weiterleitungen der entsprechenden Domains auf den neuen Server geändert werden!&lt;br /&gt;
&lt;br /&gt;
Es werden auch einige Passwörter gebraucht. Dieses sind in keepass.tisento.com und auch in der Passwort-Datei abgespeichert. Diese kann mit dem üblichen Passwort geöffnet werden (TODO)!&lt;br /&gt;
&lt;br /&gt;
Kopie des git-Repos in dem Verzeichnis /srv/tisento-docker/.&lt;br /&gt;
&lt;br /&gt;
Per SSH Beispielsweise mit dem CMD zum Server kopiert werden:&lt;br /&gt;
 sudo scp -P XXXX /srv/tisento-docker/nginx/backups/daily/backup_nginx_20250620_020000.tar.gz USER@IP:/tmp/nginx.tar.gz&lt;br /&gt;
Entpacken der Dateien mit bspw.:&lt;br /&gt;
 tar -xvzf yourfile.tar.gz -C /path/to/your/special/folder&lt;br /&gt;
Wiederherstellung nginx s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung Portainer s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung gitea s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der restlichen Docker-Services mithilfe der Docker-Compose-Dateien in gitea. Alternativ sind die Docker-Compose-Dateien auch in den Backup gespeichert und wurden im best-case zu &amp;quot;/srv/tisento-docker&amp;quot; zurückgespielt!&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der einzelnen Daten der Services mithilfe der obigen Erklärungen.&lt;br /&gt;
&lt;br /&gt;
== Test der Systeme ==&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP &amp;amp; V-Laufwerk prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Aufruf der Website, schauen, ob alle Monitore noch vorhanden sind.&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Aufruf der Website und schauen, ob zu den Containern eine Verbindung herstgestellt wird.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Hestellung der Verbindung zu Cockpit-Prod,-Test und -Dev.&lt;br /&gt;
&lt;br /&gt;
Testübertragung (bspw. Task) und test davon!&lt;br /&gt;
&lt;br /&gt;
Ansonsten einfach mal die index.html umbenennen!&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Erstellung eines Test-Tickets via Mail an: support@tisento.com &lt;br /&gt;
&lt;br /&gt;
Prüfen, ob dieses Ticket in der GUI auftaucht.&lt;br /&gt;
&lt;br /&gt;
Antworten auf dieses Ticket und schauen, ob die Antwort in dem Mail-Client ankommt.&lt;br /&gt;
&lt;br /&gt;
=== NGINX ===&lt;br /&gt;
&lt;br /&gt;
Aufrufen der diversen Websiten.&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Anmeldung mit dem AD-Nutzern&lt;br /&gt;
&lt;br /&gt;
== Neuen Docker-Dienst anlegen ==&lt;br /&gt;
Hier wird davon ausgegangen, dass es sich um einen Dockerdienst handelt, der auf einem Port wie 80 oder 443 angesprochen werden soll. Wir gehen davon aus, dass das Portmapping &amp;quot;127.0.0.1:10443:443&amp;quot; ist, also der Container den Port 10443 auf das lokale Interface öffnet und mit dem Container-Port 10443 mappt. Weiter gehen wir davon aus, dass der Service über die Subdomain &amp;quot;&#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&amp;quot; über HTTP und HTTPS erreichbar sein soll. HTTP wird auf HTTPS weitergeleitet.&lt;br /&gt;
&lt;br /&gt;
# Erstellung der Sub-Domain &#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&lt;br /&gt;
## [mailto:puetter@tisento.com Torsten] diese Sub-Domain dem Server zuweisen lassen.&lt;br /&gt;
## Für das SSL-Zertifikat muss die Domain öffentlich erreichbar sein!&lt;br /&gt;
# Erstellung der Konfiguration im nginx Service&lt;br /&gt;
## Erstellung einer Datei sub.tisento.com.conf in dem Pfad /var/www/nginx.tisento.com/nginx/...&lt;br /&gt;
## Hinzufügen von dem Inhalt:&amp;lt;blockquote&amp;gt;adasdsa&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
## Prüfung ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neu laden&lt;br /&gt;
## Hinzufügen eines Zertifikates mit dem Befehl:&lt;br /&gt;
### asdasd&lt;br /&gt;
## Hinzufügen der SSL Konfuguration zur Datei (sub.tisento.com.conf)&lt;br /&gt;
## Prüfen ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neuladen&lt;br /&gt;
# Prüfen der Verbindung&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=321</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=321"/>
		<updated>2025-06-20T08:21:08Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: /* Backup // Wiederherstellung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Zugriff==&lt;br /&gt;
Der Docker-Server ist unter der 172.22.0.224 erreichbar.&lt;br /&gt;
&lt;br /&gt;
Der neue Docker-Server wird unter 172.22.0.223 erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
Der Port, Nutzername und auch das Passwort sind im [http://keepass.tisento.com Passbolt] gespeichert.&lt;br /&gt;
&lt;br /&gt;
== Zugriff Dienste ==&lt;br /&gt;
Nachfolgend eine Liste der Dienste die auf dem Docker laufen&lt;br /&gt;
&lt;br /&gt;
* [https://cockpit.tisento.com Cockpit-PROD] &lt;br /&gt;
* [https://cockpit-test.tisento.com Cockpit-TEST]&lt;br /&gt;
* [https://cockpit-dev.tisento.com Cockpit-DEV]&lt;br /&gt;
* [https://monitor.tisento.com UpTime Kuma (Monitor)]&lt;br /&gt;
* [https://portainer.tisento.com Portainer (Docker Verwaltung)]&lt;br /&gt;
* FTP&lt;br /&gt;
* [https://service.tisento.com Ticketsystem / Otobo]&lt;br /&gt;
* NGINX &amp;amp; Certbot (noch nicht als Docker-Container)&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* [https://gitea.tisento.com Git (gitea)] noch nicht installiert&lt;br /&gt;
&lt;br /&gt;
== Neuinstallation ==&lt;br /&gt;
Kopie der &amp;quot;tisento.conf&amp;quot;-Datei in den Ordner: &amp;quot;/etc/ssh/sshd_config.d/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hinzufügen des 9022-Ports zur UFW mit:&lt;br /&gt;
 sudo ufw allow 9022/tcp&lt;br /&gt;
Einschalten der ufw mit&lt;br /&gt;
 sudo ufw enable&lt;br /&gt;
&lt;br /&gt;
=== Installation vom Docker (https://docs.docker.com/engine/install/ubuntu/): ===&lt;br /&gt;
Install using the &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository&lt;br /&gt;
&lt;br /&gt;
Before you install Docker Engine for the first time on a new host machine, you need to set up the Docker &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository. Afterward, you can install and update Docker from the repository.&lt;br /&gt;
&lt;br /&gt;
* Set up Docker&#039;s &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository.&lt;br /&gt;
&lt;br /&gt;
 # Add Docker&#039;s official GPG key:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu/gpg&amp;lt;/nowiki&amp;gt; -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
 &lt;br /&gt;
 # Add the repository to Apt sources:&lt;br /&gt;
 echo \&lt;br /&gt;
 &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu&amp;lt;/nowiki&amp;gt; \&lt;br /&gt;
 $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;${UBUNTU_CODENAME:-$VERSION_CODENAME}&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
* Install the Docker packages.&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
* Verify that the installation is successful by running the &amp;lt;code&amp;gt;hello-world&amp;lt;/code&amp;gt; image:&lt;br /&gt;
&lt;br /&gt;
 sudo docker run hello-world&lt;br /&gt;
&lt;br /&gt;
=== Installation der Sonstigen Softare (s.u.) ===&lt;br /&gt;
via &amp;quot;sudo apt install ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Kopie des Docker-Repos ===&lt;br /&gt;
Kopie des Repos in &amp;quot;/srv/tisento-docker&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Dort muss als erstes &amp;quot;portainer gestartet und wiederhergestellt werden.&lt;br /&gt;
&lt;br /&gt;
Danach wird gitea gestartet und wiederhergestellt. (Damit die repos gezogen werden können)&lt;br /&gt;
&lt;br /&gt;
Danach nach und nach die anderen Services wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
=== Einstellung UFW ===&lt;br /&gt;
 sudo ufw allow 80/tcp&lt;br /&gt;
&lt;br /&gt;
 sudo ufw allow 443/tcp&lt;br /&gt;
&lt;br /&gt;
== Sonstige Software (nicht vollständig, muss überarbeitet werden!) ==&lt;br /&gt;
&lt;br /&gt;
* Docker (s.o.)&lt;br /&gt;
* git&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* cron (Wiederkehrende Aufgaben, bspw. Backups)&lt;br /&gt;
* ncdu (Speicherbelegung)&lt;br /&gt;
* nmon (Monitoring)&lt;br /&gt;
* cifs-utils (Mounting Laufwerke)&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Docker-Dienste ==&lt;br /&gt;
Die meisten Dienste sind mit ihren Daten und Definitionen unter /var/html/dienst.tisento.com erreichbar.&lt;br /&gt;
&lt;br /&gt;
Dabei sind in dem Ordner /var/html/dienst.tisento.com/.docker die Definitionen der Docker-Container.&lt;br /&gt;
&lt;br /&gt;
In dem Ordner /var/html/dienst.tisento.com/backups sind die jeweiligen Backups der Daten.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F2)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst. &lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/srv/tisento-docker/cockpit-prod/backups gespeichert. Das tägliche Backup wird nach 30 Tagen gelöscht, die monatlichen nach einem Jahr und die jährlichen Backups nie.&lt;br /&gt;
&lt;br /&gt;
EVTL. NOCH MONITOR HINZUFÜGEN DER BACKUP TÄGLICH PRÜFT!&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Mounting der Laufwerke via:&lt;br /&gt;
 sudo mount.cifs -v //172.22.0.245/cockpit/_Daten /srv/tisento-docker/cockpit-prod/html/_Daten/ --verbose -o user=us,password=pw,domain=TISENTOSAN2,vers=2.0,uid=33,gid=33&lt;br /&gt;
Die ID 33 muss ggfs. angepasst werden um&lt;br /&gt;
 id www-data&lt;br /&gt;
damit die Rechte passen.&lt;br /&gt;
&lt;br /&gt;
Es müssen auch die Laufwerke _Cockpit_Daten und _Cockpit_Verwaltung gemounted werden.&lt;br /&gt;
&lt;br /&gt;
Weiter müssen ggfs. einige &amp;quot;.env&amp;quot;-Dateien angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;html/api/connection/.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;.docker/backup/backup.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Siehe die jeweiligen &amp;quot;*.env.example&amp;quot;-Dateien&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach muss das Backup der HTML-Dateien in das Verzeichnis /srv/tisento-docker/cockpit-prod/html kopiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach müssen noch die SQL-Dateien eingespielt werden.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-test.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-test.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-dev.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-dev.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Überwachung der diversen Docker-Container, als auch für diverse Systeme da (z.B. HEALTH, also CPU, RAM, HDD von diversen Servern).&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/monitor.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Verwaltung der verschiedenen Docker-Container notwendig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/portainer.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird das data-Verzeichnis gesichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Das data-Verzeichnis muss in /srv/tisento-docker/portainer/data gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Dieses Tool ist für die FTP-Verbindung zu den jeweiligen HTML-Verzeichnissen von [https://cockpit.tisento.com cockpit.tisento.com], [https://cockpit-test.tisento.com cockpit-test.tisento.com] und [https://cockpit-dev.tisento.com cockpit-dev.tisento.com] zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/ftp.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es wird die pureftpd.passwd Datei als backup gespeichert. Diese beinhaltet die FTP-Verzeichnisse und Server und Passwörter.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die pureftpd.passwd muss in das Verzeichnis /srv/tisento-docker/ftp/.docker/passwd/ lopiert werden&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Erstellung und Verwaltung der Tickets zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Fehlerbehebung ====&lt;br /&gt;
Wenn bspw. die Festplatte vom Docker-Server vollgelaufen ist, dann müssen die Dienste einmal neugestartet werden.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann es sein, dass man die Caches mit folgenden Befehlen (im Daemon) löscht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Cache::Delete&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Config::Rebuild --cleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Loader::CacheCleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NGINX (noch nicht als Docker-Container) ===&lt;br /&gt;
nginx ist ein Reverse-Proxy, damit die verschiedenen Domains den richtigen Weg zu den Services finden.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /srv/tisento-docker/SERVICENAME/.....&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es werden die verzeichnisse certbot and nginx gebackupped&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die beiden Verzeichnisse müssen in /srv/tisento-docker/nginx/nginx und srv/tisento-docker/nginx/certbot kopiert werden! &lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Backup // Wiederherstellung ==&lt;br /&gt;
Jeder Service hat ein eigenes Backup-System.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden gemeinsam per FTP auf den Server XY übertragen. (TODO)&lt;br /&gt;
&lt;br /&gt;
Dort läuft ein kleiner PHP-Cronjob, der diese Backups in ein anderes Verzeichnis überträgt. (TODO)&lt;br /&gt;
&lt;br /&gt;
Diese Dateien werden für eine Wiederherstellung benötigt!&lt;br /&gt;
&lt;br /&gt;
=== Wiederherstellung ===&lt;br /&gt;
Für die Wiederherstellung werden die Backups vom Server benötigt. Weiter wird diese Anleitung benötigt.&lt;br /&gt;
&lt;br /&gt;
Weiter wird für ein vollständigen Backups  ein neuer Server benötigt, dort müssen folgende Schritte in der Reihenfolge ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Installation s.o. &amp;quot;Neuinstallation&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Außerdem muss der DNS und weitere Weiterleitungen der entsprechenden Domains auf den neuen Server geändert werden!&lt;br /&gt;
&lt;br /&gt;
Es werden auch einige Passwörter gebraucht. Dieses sind in keepass.tisento.com und auch in der Passwort-Datei abgespeichert. Diese kann mit dem üblichen Passwort geöffnet werden (TODO)!&lt;br /&gt;
&lt;br /&gt;
Kopie des git-Repos in dem Verzeichnis /srv/tisento-docker/.&lt;br /&gt;
&lt;br /&gt;
Per SSH Beispielsweise mit dem CMD zum Server kopiert werden:&lt;br /&gt;
 sudo scp -P XXXX /srv/tisento-docker/nginx/backups/daily/backup_nginx_20250620_020000.tar.gz USER@IP:/tmp/nginx.tar.gz&lt;br /&gt;
Entpacken der Dateien mit bspw.:&lt;br /&gt;
 tar -xvzf yourfile.tar.gz -C /path/to/your/special/folder&lt;br /&gt;
Wiederherstellung nginx s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung Portainer s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung gitea s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der restlichen Docker-Services mithilfe der Docker-Compose-Dateien in gitea. Alternativ sind die Docker-Compose-Dateien auch in den Backup gespeichert und wurden im best-case zu &amp;quot;/srv/tisento-docker&amp;quot; zurückgespielt!&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der einzelnen Daten der Services mithilfe der obigen Erklärungen.&lt;br /&gt;
&lt;br /&gt;
== Test der Systeme ==&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP &amp;amp; V-Laufwerk prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Aufruf der Website, schauen, ob alle Monitore noch vorhanden sind.&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Aufruf der Website und schauen, ob zu den Containern eine Verbindung herstgestellt wird.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Hestellung der Verbindung zu Cockpit-Prod,-Test und -Dev.&lt;br /&gt;
&lt;br /&gt;
Testübertragung (bspw. Task) und test davon!&lt;br /&gt;
&lt;br /&gt;
Ansonsten einfach mal die index.html umbenennen!&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Erstellung eines Test-Tickets via Mail an: support@tisento.com &lt;br /&gt;
&lt;br /&gt;
Prüfen, ob dieses Ticket in der GUI auftaucht.&lt;br /&gt;
&lt;br /&gt;
Antworten auf dieses Ticket und schauen, ob die Antwort in dem Mail-Client ankommt.&lt;br /&gt;
&lt;br /&gt;
=== NGINX ===&lt;br /&gt;
&lt;br /&gt;
Aufrufen der diversen Websiten.&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Anmeldung mit dem AD-Nutzern&lt;br /&gt;
&lt;br /&gt;
== Neuen Docker-Dienst anlegen ==&lt;br /&gt;
Hier wird davon ausgegangen, dass es sich um einen Dockerdienst handelt, der auf einem Port wie 80 oder 443 angesprochen werden soll. Wir gehen davon aus, dass das Portmapping &amp;quot;127.0.0.1:10443:443&amp;quot; ist, also der Container den Port 10443 auf das lokale Interface öffnet und mit dem Container-Port 10443 mappt. Weiter gehen wir davon aus, dass der Service über die Subdomain &amp;quot;&#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&amp;quot; über HTTP und HTTPS erreichbar sein soll. HTTP wird auf HTTPS weitergeleitet.&lt;br /&gt;
&lt;br /&gt;
# Erstellung der Sub-Domain &#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&lt;br /&gt;
## [mailto:puetter@tisento.com Torsten] diese Sub-Domain dem Server zuweisen lassen.&lt;br /&gt;
## Für das SSL-Zertifikat muss die Domain öffentlich erreichbar sein!&lt;br /&gt;
# Erstellung der Konfiguration im nginx Service&lt;br /&gt;
## Erstellung einer Datei sub.tisento.com.conf in dem Pfad /var/www/nginx.tisento.com/nginx/...&lt;br /&gt;
## Hinzufügen von dem Inhalt:&amp;lt;blockquote&amp;gt;adasdsa&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
## Prüfung ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neu laden&lt;br /&gt;
## Hinzufügen eines Zertifikates mit dem Befehl:&lt;br /&gt;
### asdasd&lt;br /&gt;
## Hinzufügen der SSL Konfuguration zur Datei (sub.tisento.com.conf)&lt;br /&gt;
## Prüfen ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neuladen&lt;br /&gt;
# Prüfen der Verbindung&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=320</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=320"/>
		<updated>2025-06-20T07:44:05Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: /* Wiederherstellung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Zugriff==&lt;br /&gt;
Der Docker-Server ist unter der 172.22.0.224 erreichbar.&lt;br /&gt;
&lt;br /&gt;
Der neue Docker-Server wird unter 172.22.0.223 erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
Der Port, Nutzername und auch das Passwort sind im [http://keepass.tisento.com Passbolt] gespeichert.&lt;br /&gt;
&lt;br /&gt;
== Zugriff Dienste ==&lt;br /&gt;
Nachfolgend eine Liste der Dienste die auf dem Docker laufen&lt;br /&gt;
&lt;br /&gt;
* [https://cockpit.tisento.com Cockpit-PROD] &lt;br /&gt;
* [https://cockpit-test.tisento.com Cockpit-TEST]&lt;br /&gt;
* [https://cockpit-dev.tisento.com Cockpit-DEV]&lt;br /&gt;
* [https://monitor.tisento.com UpTime Kuma (Monitor)]&lt;br /&gt;
* [https://portainer.tisento.com Portainer (Docker Verwaltung)]&lt;br /&gt;
* FTP&lt;br /&gt;
* [https://service.tisento.com Ticketsystem / Otobo]&lt;br /&gt;
* NGINX &amp;amp; Certbot (noch nicht als Docker-Container)&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* [https://gitea.tisento.com Git (gitea)] noch nicht installiert&lt;br /&gt;
&lt;br /&gt;
== Neuinstallation ==&lt;br /&gt;
Kopie der &amp;quot;tisento.conf&amp;quot;-Datei in den Ordner: &amp;quot;/etc/ssh/sshd_config.d/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hinzufügen des 9022-Ports zur UFW mit:&lt;br /&gt;
 sudo ufw allow 9022/tcp&lt;br /&gt;
Einschalten der ufw mit&lt;br /&gt;
 sudo ufw enable&lt;br /&gt;
&lt;br /&gt;
=== Installation vom Docker (https://docs.docker.com/engine/install/ubuntu/): ===&lt;br /&gt;
Install using the &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository&lt;br /&gt;
&lt;br /&gt;
Before you install Docker Engine for the first time on a new host machine, you need to set up the Docker &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository. Afterward, you can install and update Docker from the repository.&lt;br /&gt;
&lt;br /&gt;
* Set up Docker&#039;s &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository.&lt;br /&gt;
&lt;br /&gt;
 # Add Docker&#039;s official GPG key:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu/gpg&amp;lt;/nowiki&amp;gt; -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
 &lt;br /&gt;
 # Add the repository to Apt sources:&lt;br /&gt;
 echo \&lt;br /&gt;
 &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu&amp;lt;/nowiki&amp;gt; \&lt;br /&gt;
 $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;${UBUNTU_CODENAME:-$VERSION_CODENAME}&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
* Install the Docker packages.&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
* Verify that the installation is successful by running the &amp;lt;code&amp;gt;hello-world&amp;lt;/code&amp;gt; image:&lt;br /&gt;
&lt;br /&gt;
 sudo docker run hello-world&lt;br /&gt;
&lt;br /&gt;
=== Installation der Sonstigen Softare (s.u.) ===&lt;br /&gt;
via &amp;quot;sudo apt install ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Kopie des Docker-Repos ===&lt;br /&gt;
Kopie des Repos in &amp;quot;/srv/tisento-docker&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Dort muss als erstes &amp;quot;portainer gestartet und wiederhergestellt werden.&lt;br /&gt;
&lt;br /&gt;
Danach wird gitea gestartet und wiederhergestellt. (Damit die repos gezogen werden können)&lt;br /&gt;
&lt;br /&gt;
Danach nach und nach die anderen Services wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
=== Einstellung UFW ===&lt;br /&gt;
 sudo ufw allow 80/tcp&lt;br /&gt;
&lt;br /&gt;
 sudo ufw allow 443/tcp&lt;br /&gt;
&lt;br /&gt;
== Sonstige Software (nicht vollständig, muss überarbeitet werden!) ==&lt;br /&gt;
&lt;br /&gt;
* Docker (s.o.)&lt;br /&gt;
* git&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* cron (Wiederkehrende Aufgaben, bspw. Backups)&lt;br /&gt;
* ncdu (Speicherbelegung)&lt;br /&gt;
* nmon (Monitoring)&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Docker-Dienste ==&lt;br /&gt;
Die meisten Dienste sind mit ihren Daten und Definitionen unter /var/html/dienst.tisento.com erreichbar.&lt;br /&gt;
&lt;br /&gt;
Dabei sind in dem Ordner /var/html/dienst.tisento.com/.docker die Definitionen der Docker-Container.&lt;br /&gt;
&lt;br /&gt;
In dem Ordner /var/html/dienst.tisento.com/backups sind die jeweiligen Backups der Daten.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F2)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst. &lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit.tisento.com/backups gespeichert. Das tägliche Backup wird nach 30 Tagen gelöscht, die monatlichen nach einem Jahr und die jährlichen Backups nie.&lt;br /&gt;
&lt;br /&gt;
EVTL. NOCH MONITOR HINZUFÜGEN DER BACKUP TÄGLICH PRÜFT!&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Mounting der Laufwerke via:&lt;br /&gt;
 sudo mount.cifs -v //172.22.0.245/cockpit/_Daten /srv/tisento-docker/cockpit-prod/html/_Daten/ --verbose -o user=us,password=pw,domain=TISENTOSAN2,vers=2.0,uid=33,gid=33&lt;br /&gt;
Die ID 33 muss ggfs. angepasst werden um&lt;br /&gt;
 id www-data&lt;br /&gt;
damit die Rechte passen.&lt;br /&gt;
&lt;br /&gt;
Es müssen auch die Laufwerke _Cockpit_Daten und _Cockpit_Verwaltung gemounted werden.&lt;br /&gt;
&lt;br /&gt;
Weiter müssen ggfs. einige &amp;quot;.env&amp;quot;-Dateien angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;html/api/connection/.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;.docker/backup/backup.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Siehe die jeweiligen &amp;quot;*.env.example&amp;quot;-Dateien&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-test.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-test.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-dev.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-dev.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Überwachung der diversen Docker-Container, als auch für diverse Systeme da (z.B. HEALTH, also CPU, RAM, HDD von diversen Servern).&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/monitor.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Verwaltung der verschiedenen Docker-Container notwendig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/portainer.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Dieses Tool ist für die FTP-Verbindung zu den jeweiligen HTML-Verzeichnissen von [https://cockpit.tisento.com cockpit.tisento.com], [https://cockpit-test.tisento.com cockpit-test.tisento.com] und [https://cockpit-dev.tisento.com cockpit-dev.tisento.com] zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/ftp.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Erstellung und Verwaltung der Tickets zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Fehlerbehebung ====&lt;br /&gt;
Wenn bspw. die Festplatte vom Docker-Server vollgelaufen ist, dann müssen die Dienste einmal neugestartet werden.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann es sein, dass man die Caches mit folgenden Befehlen (im Daemon) löscht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Cache::Delete&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Config::Rebuild --cleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Loader::CacheCleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NGINX (noch nicht als Docker-Container) ===&lt;br /&gt;
nginx ist ein Reverse-Proxy, damit die verschiedenen Domains den richtigen Weg zu den Services finden.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /srv/tisento-docker/SERVICENAME/.....&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Es werden die verzeichnisse certbot and nginx gebackupped&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Die beiden Verzeichnisse müssen in /srv/tisento-docker/nginx/nginx und srv/tisento-docker/nginx/certbot kopiert werden! &lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Backup // Wiederherstellung ==&lt;br /&gt;
Jeder Service hat ein eigenes Backup-System.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden gemeinsam per FTP auf den Server XY übertragen. (TODO)&lt;br /&gt;
&lt;br /&gt;
Dort läuft ein kleiner PHP-Cronjob, der diese Backups in ein anderes Verzeichnis überträgt. (TODO)&lt;br /&gt;
&lt;br /&gt;
Diese Dateien werden für eine Wiederherstellung benötigt!&lt;br /&gt;
&lt;br /&gt;
=== Wiederherstellung ===&lt;br /&gt;
Für die Wiederherstellung werden die Backups vom Server benötigt. Weiter wird diese Anleitung benötigt.&lt;br /&gt;
&lt;br /&gt;
Weiter wird für ein vollständigen Backups  ein neuer Server benötigt, dort müssen folgende Schritte in der Reihenfolge ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Installation s.o. &amp;quot;Neuinstallation&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Außerdem muss der DNS und weitere Weiterleitungen der entsprechenden Domains auf den neuen Server geändert werden!&lt;br /&gt;
&lt;br /&gt;
Es werden auch einige Passwörter gebraucht. Dieses sind in keepass.tisento.com und auch in der Passwort-Datei abgespeichert. Diese kann mit dem üblichen Passwort geöffnet werden (TODO)!&lt;br /&gt;
&lt;br /&gt;
Kopie des git-Repos in dem Verzeichnis /srv/tisento-docker/.&lt;br /&gt;
&lt;br /&gt;
Per SSH Beispielsweise mit dem CMD zum Server kopiert werden:&lt;br /&gt;
 sudo scp -P XXXX /srv/tisento-docker/nginx/backups/daily/backup_nginx_20250620_020000.tar.gz USER@IP:/tmp/nginx.tar.gz&lt;br /&gt;
Entpacken der Dateien mit bspw.:&lt;br /&gt;
 tar -xvzf yourfile.tar.gz -C /path/to/your/special/folder&lt;br /&gt;
Wiederherstellung nginx s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung Portainer s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung gitea s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der restlichen Docker-Services mithilfe der Docker-Compose-Dateien in gitea. Alternativ sind die Docker-Compose-Dateien auch in den Backup gespeichert und wurden im best-case zu &amp;quot;/srv/tisento-docker&amp;quot; zurückgespielt!&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der einzelnen Daten der Services mithilfe der obigen Erklärungen.&lt;br /&gt;
&lt;br /&gt;
== Test der Systeme ==&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP &amp;amp; V-Laufwerk prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Aufruf der Website, schauen, ob alle Monitore noch vorhanden sind.&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Aufruf der Website und schauen, ob zu den Containern eine Verbindung herstgestellt wird.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Hestellung der Verbindung zu Cockpit-Prod,-Test und -Dev.&lt;br /&gt;
&lt;br /&gt;
Testübertragung (bspw. Task) und test davon!&lt;br /&gt;
&lt;br /&gt;
Ansonsten einfach mal die index.html umbenennen!&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Erstellung eines Test-Tickets via Mail an: support@tisento.com &lt;br /&gt;
&lt;br /&gt;
Prüfen, ob dieses Ticket in der GUI auftaucht.&lt;br /&gt;
&lt;br /&gt;
Antworten auf dieses Ticket und schauen, ob die Antwort in dem Mail-Client ankommt.&lt;br /&gt;
&lt;br /&gt;
=== NGINX ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Anmeldung mit dem AD-Nutzern&lt;br /&gt;
&lt;br /&gt;
== Neuen Docker-Dienst anlegen ==&lt;br /&gt;
Hier wird davon ausgegangen, dass es sich um einen Dockerdienst handelt, der auf einem Port wie 80 oder 443 angesprochen werden soll. Wir gehen davon aus, dass das Portmapping &amp;quot;127.0.0.1:10443:443&amp;quot; ist, also der Container den Port 10443 auf das lokale Interface öffnet und mit dem Container-Port 10443 mappt. Weiter gehen wir davon aus, dass der Service über die Subdomain &amp;quot;&#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&amp;quot; über HTTP und HTTPS erreichbar sein soll. HTTP wird auf HTTPS weitergeleitet.&lt;br /&gt;
&lt;br /&gt;
# Erstellung der Sub-Domain &#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&lt;br /&gt;
## [mailto:puetter@tisento.com Torsten] diese Sub-Domain dem Server zuweisen lassen.&lt;br /&gt;
## Für das SSL-Zertifikat muss die Domain öffentlich erreichbar sein!&lt;br /&gt;
# Erstellung der Konfiguration im nginx Service&lt;br /&gt;
## Erstellung einer Datei sub.tisento.com.conf in dem Pfad /var/www/nginx.tisento.com/nginx/...&lt;br /&gt;
## Hinzufügen von dem Inhalt:&amp;lt;blockquote&amp;gt;adasdsa&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
## Prüfung ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neu laden&lt;br /&gt;
## Hinzufügen eines Zertifikates mit dem Befehl:&lt;br /&gt;
### asdasd&lt;br /&gt;
## Hinzufügen der SSL Konfuguration zur Datei (sub.tisento.com.conf)&lt;br /&gt;
## Prüfen ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neuladen&lt;br /&gt;
# Prüfen der Verbindung&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=319</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=319"/>
		<updated>2025-06-12T17:48:34Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Zugriff==&lt;br /&gt;
Der Docker-Server ist unter der 172.22.0.224 erreichbar.&lt;br /&gt;
&lt;br /&gt;
Der neue Docker-Server wird unter 172.22.0.223 erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
Der Port, Nutzername und auch das Passwort sind im [http://keepass.tisento.com Passbolt] gespeichert.&lt;br /&gt;
&lt;br /&gt;
== Zugriff Dienste ==&lt;br /&gt;
Nachfolgend eine Liste der Dienste die auf dem Docker laufen&lt;br /&gt;
&lt;br /&gt;
* [https://cockpit.tisento.com Cockpit-PROD] &lt;br /&gt;
* [https://cockpit-test.tisento.com Cockpit-TEST]&lt;br /&gt;
* [https://cockpit-dev.tisento.com Cockpit-DEV]&lt;br /&gt;
* [https://monitor.tisento.com UpTime Kuma (Monitor)]&lt;br /&gt;
* [https://portainer.tisento.com Portainer (Docker Verwaltung)]&lt;br /&gt;
* FTP&lt;br /&gt;
* [https://service.tisento.com Ticketsystem / Otobo]&lt;br /&gt;
* NGINX &amp;amp; Certbot (noch nicht als Docker-Container)&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* [https://gitea.tisento.com Git (gitea)] noch nicht installiert&lt;br /&gt;
&lt;br /&gt;
== Neuinstallation ==&lt;br /&gt;
Kopie der &amp;quot;tisento.conf&amp;quot;-Datei in den Ordner: &amp;quot;/etc/ssh/sshd_config.d/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hinzufügen des 9022-Ports zur UFW mit:&lt;br /&gt;
 sudo ufw allow 9022/tcp&lt;br /&gt;
Einschalten der ufw mit&lt;br /&gt;
 sudo ufw enable&lt;br /&gt;
&lt;br /&gt;
=== Installation vom Docker (https://docs.docker.com/engine/install/ubuntu/): ===&lt;br /&gt;
Install using the &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository&lt;br /&gt;
&lt;br /&gt;
Before you install Docker Engine for the first time on a new host machine, you need to set up the Docker &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository. Afterward, you can install and update Docker from the repository.&lt;br /&gt;
&lt;br /&gt;
* Set up Docker&#039;s &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository.&lt;br /&gt;
&lt;br /&gt;
 # Add Docker&#039;s official GPG key:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu/gpg&amp;lt;/nowiki&amp;gt; -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
 &lt;br /&gt;
 # Add the repository to Apt sources:&lt;br /&gt;
 echo \&lt;br /&gt;
 &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu&amp;lt;/nowiki&amp;gt; \&lt;br /&gt;
 $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;${UBUNTU_CODENAME:-$VERSION_CODENAME}&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
* Install the Docker packages.&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
* Verify that the installation is successful by running the &amp;lt;code&amp;gt;hello-world&amp;lt;/code&amp;gt; image:&lt;br /&gt;
&lt;br /&gt;
 sudo docker run hello-world&lt;br /&gt;
&lt;br /&gt;
=== Installation der Sonstigen Softare (s.u.) ===&lt;br /&gt;
via &amp;quot;sudo apt install ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Kopie des Docker-Repos ===&lt;br /&gt;
Kopie des Repos in &amp;quot;/srv/tisento-docker&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Dort muss als erstes &amp;quot;portainer gestartet und wiederhergestellt werden.&lt;br /&gt;
&lt;br /&gt;
Danach wird gitea gestartet und wiederhergestellt. (Damit die repos gezogen werden können)&lt;br /&gt;
&lt;br /&gt;
Danach nach und nach die anderen Services wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
=== Einstellung UFW ===&lt;br /&gt;
 sudo ufw allow 80/tcp&lt;br /&gt;
&lt;br /&gt;
 sudo ufw allow 443/tcp&lt;br /&gt;
&lt;br /&gt;
== Sonstige Software (nicht vollständig, muss überarbeitet werden!) ==&lt;br /&gt;
&lt;br /&gt;
* Docker (s.o.)&lt;br /&gt;
* git&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* cron (Wiederkehrende Aufgaben, bspw. Backups)&lt;br /&gt;
* ncdu (Speicherbelegung)&lt;br /&gt;
* nmon (Monitoring)&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Docker-Dienste ==&lt;br /&gt;
Die meisten Dienste sind mit ihren Daten und Definitionen unter /var/html/dienst.tisento.com erreichbar.&lt;br /&gt;
&lt;br /&gt;
Dabei sind in dem Ordner /var/html/dienst.tisento.com/.docker die Definitionen der Docker-Container.&lt;br /&gt;
&lt;br /&gt;
In dem Ordner /var/html/dienst.tisento.com/backups sind die jeweiligen Backups der Daten.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F2)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst. &lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit.tisento.com/backups gespeichert. Das tägliche Backup wird nach 30 Tagen gelöscht, die monatlichen nach einem Jahr und die jährlichen Backups nie.&lt;br /&gt;
&lt;br /&gt;
EVTL. NOCH MONITOR HINZUFÜGEN DER BACKUP TÄGLICH PRÜFT!&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Mounting der Laufwerke via:&lt;br /&gt;
 sudo mount.cifs -v //172.22.0.245/cockpit/_Daten /srv/tisento-docker/cockpit-prod/html/_Daten/ --verbose -o user=us,password=pw,domain=TISENTOSAN2,vers=2.0,uid=33,gid=33&lt;br /&gt;
Die ID 33 muss ggfs. angepasst werden um&lt;br /&gt;
 id www-data&lt;br /&gt;
damit die Rechte passen.&lt;br /&gt;
&lt;br /&gt;
Es müssen auch die Laufwerke _Cockpit_Daten und _Cockpit_Verwaltung gemounted werden.&lt;br /&gt;
&lt;br /&gt;
Weiter müssen ggfs. einige &amp;quot;.env&amp;quot;-Dateien angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;html/api/connection/.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;.docker/backup/backup.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Siehe die jeweiligen &amp;quot;*.env.example&amp;quot;-Dateien&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-test.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-test.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-dev.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-dev.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Überwachung der diversen Docker-Container, als auch für diverse Systeme da (z.B. HEALTH, also CPU, RAM, HDD von diversen Servern).&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/monitor.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Verwaltung der verschiedenen Docker-Container notwendig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/portainer.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Dieses Tool ist für die FTP-Verbindung zu den jeweiligen HTML-Verzeichnissen von [https://cockpit.tisento.com cockpit.tisento.com], [https://cockpit-test.tisento.com cockpit-test.tisento.com] und [https://cockpit-dev.tisento.com cockpit-dev.tisento.com] zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/ftp.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Erstellung und Verwaltung der Tickets zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Fehlerbehebung ====&lt;br /&gt;
Wenn bspw. die Festplatte vom Docker-Server vollgelaufen ist, dann müssen die Dienste einmal neugestartet werden.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann es sein, dass man die Caches mit folgenden Befehlen (im Daemon) löscht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Cache::Delete&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Config::Rebuild --cleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Loader::CacheCleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NGINX (noch nicht als Docker-Container) ===&lt;br /&gt;
nginx ist ein Reverse-Proxy, damit die verschiedenen Domains den richtigen Weg zu den Services finden.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Backup // Wiederherstellung ==&lt;br /&gt;
Jeder Service hat ein eigenes Backup-System.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden gemeinsam per FTP auf den Server XY übertragen. (TODO)&lt;br /&gt;
&lt;br /&gt;
Dort läuft ein kleiner PHP-Cronjob, der diese Backups in ein anderes Verzeichnis überträgt. (TODO)&lt;br /&gt;
&lt;br /&gt;
Diese Dateien werden für eine Wiederherstellung benötigt!&lt;br /&gt;
&lt;br /&gt;
=== Wiederherstellung ===&lt;br /&gt;
Für die Wiederherstellung werden die Backups vom Server benötigt. Weiter wird diese Anleitung benötigt.&lt;br /&gt;
&lt;br /&gt;
Weiter wird für ein vollständigen Backups  ein neuer Server benötigt, dort müssen folgende Schritte in der Reihenfolge ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Installation s.o. &amp;quot;Neuinstallation&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Außerdem muss der DNS und weitere Weiterleitungen der entsprechenden Domains auf den neuen Server geändert werden!&lt;br /&gt;
&lt;br /&gt;
Es werden auch einige Passwörter gebraucht. Dieses sind in keepass.tisento.com und auch in der Passwort-Datei abgespeichert. Diese kann mit dem üblichen Passwort geöffnet werden (TODO)!&lt;br /&gt;
&lt;br /&gt;
Kopie des git-Repos in dem Verzeichnis /srv/tisento-docker/.&lt;br /&gt;
&lt;br /&gt;
Kann Beispielsweise mit dem CMD unter Mac direkt zum Server kopiert werden:&lt;br /&gt;
 asdasdasd (TODO)&lt;br /&gt;
Wiederherstellung nginx s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung Portainer s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung gitea s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der restlichen Docker-Services mithilfe der Docker-Compose-Dateien in gitea. Alternativ sind die Docker-Compose-Dateien auch in den Backup gespeichert und wurden im best-case zu &amp;quot;/srv/tisento-docker&amp;quot; zurückgespielt!&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der einzelnen Daten der Services mithilfe der obigen Erklärungen.&lt;br /&gt;
&lt;br /&gt;
== Test der Systeme ==&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP &amp;amp; V-Laufwerk prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Aufruf der Website, schauen, ob alle Monitore noch vorhanden sind.&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Aufruf der Website und schauen, ob zu den Containern eine Verbindung herstgestellt wird.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Hestellung der Verbindung zu Cockpit-Prod,-Test und -Dev.&lt;br /&gt;
&lt;br /&gt;
Testübertragung (bspw. Task) und test davon!&lt;br /&gt;
&lt;br /&gt;
Ansonsten einfach mal die index.html umbenennen!&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Erstellung eines Test-Tickets via Mail an: support@tisento.com &lt;br /&gt;
&lt;br /&gt;
Prüfen, ob dieses Ticket in der GUI auftaucht.&lt;br /&gt;
&lt;br /&gt;
Antworten auf dieses Ticket und schauen, ob die Antwort in dem Mail-Client ankommt.&lt;br /&gt;
&lt;br /&gt;
=== NGINX ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Anmeldung mit dem AD-Nutzern&lt;br /&gt;
&lt;br /&gt;
== Neuen Docker-Dienst anlegen ==&lt;br /&gt;
Hier wird davon ausgegangen, dass es sich um einen Dockerdienst handelt, der auf einem Port wie 80 oder 443 angesprochen werden soll. Wir gehen davon aus, dass das Portmapping &amp;quot;127.0.0.1:10443:443&amp;quot; ist, also der Container den Port 10443 auf das lokale Interface öffnet und mit dem Container-Port 10443 mappt. Weiter gehen wir davon aus, dass der Service über die Subdomain &amp;quot;&#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&amp;quot; über HTTP und HTTPS erreichbar sein soll. HTTP wird auf HTTPS weitergeleitet.&lt;br /&gt;
&lt;br /&gt;
# Erstellung der Sub-Domain &#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&lt;br /&gt;
## [mailto:puetter@tisento.com Torsten] diese Sub-Domain dem Server zuweisen lassen.&lt;br /&gt;
## Für das SSL-Zertifikat muss die Domain öffentlich erreichbar sein!&lt;br /&gt;
# Erstellung der Konfiguration im nginx Service&lt;br /&gt;
## Erstellung einer Datei sub.tisento.com.conf in dem Pfad /var/www/nginx.tisento.com/nginx/...&lt;br /&gt;
## Hinzufügen von dem Inhalt:&amp;lt;blockquote&amp;gt;adasdsa&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
## Prüfung ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neu laden&lt;br /&gt;
## Hinzufügen eines Zertifikates mit dem Befehl:&lt;br /&gt;
### asdasd&lt;br /&gt;
## Hinzufügen der SSL Konfuguration zur Datei (sub.tisento.com.conf)&lt;br /&gt;
## Prüfen ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neuladen&lt;br /&gt;
# Prüfen der Verbindung&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=318</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=318"/>
		<updated>2025-06-12T17:42:46Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Zugriff==&lt;br /&gt;
Der Docker-Server ist unter der 172.22.0.224 erreichbar.&lt;br /&gt;
&lt;br /&gt;
Der neue Docker-Server wird unter 172.22.0.223 erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
Der Port, Nutzername und auch das Passwort sind im [http://keepass.tisento.com Passbolt] gespeichert.&lt;br /&gt;
&lt;br /&gt;
== Zugriff Dienste ==&lt;br /&gt;
Nachfolgend eine Liste der Dienste die auf dem Docker laufen&lt;br /&gt;
&lt;br /&gt;
* [https://cockpit.tisento.com Cockpit-PROD] &lt;br /&gt;
* [https://cockpit-test.tisento.com Cockpit-TEST]&lt;br /&gt;
* [https://cockpit-dev.tisento.com Cockpit-DEV]&lt;br /&gt;
* [https://monitor.tisento.com UpTime Kuma (Monitor)]&lt;br /&gt;
* [https://portainer.tisento.com Portainer (Docker Verwaltung)]&lt;br /&gt;
* FTP&lt;br /&gt;
* [https://service.tisento.com Ticketsystem / Otobo]&lt;br /&gt;
* NGINX &amp;amp; Certbot (noch nicht als Docker-Container)&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* [https://gitea.tisento.com Git (gitea)] noch nicht installiert&lt;br /&gt;
&lt;br /&gt;
== Neuinstallation ==&lt;br /&gt;
Kopie der &amp;quot;tisento.conf&amp;quot;-Datei in den Ordner: &amp;quot;/etc/ssh/sshd_config.d/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hinzufügen des 9022-Ports zur UFW mit:&lt;br /&gt;
 sudo ufw allow 9022/tcp&lt;br /&gt;
Einschalten der ufw mit&lt;br /&gt;
 sudo ufw enable&lt;br /&gt;
&lt;br /&gt;
=== Installation vom Docker (https://docs.docker.com/engine/install/ubuntu/): ===&lt;br /&gt;
Install using the &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository&lt;br /&gt;
&lt;br /&gt;
Before you install Docker Engine for the first time on a new host machine, you need to set up the Docker &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository. Afterward, you can install and update Docker from the repository.&lt;br /&gt;
&lt;br /&gt;
* Set up Docker&#039;s &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository.&lt;br /&gt;
&lt;br /&gt;
 # Add Docker&#039;s official GPG key:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu/gpg&amp;lt;/nowiki&amp;gt; -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
 &lt;br /&gt;
 # Add the repository to Apt sources:&lt;br /&gt;
 echo \&lt;br /&gt;
 &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu&amp;lt;/nowiki&amp;gt; \&lt;br /&gt;
 $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;${UBUNTU_CODENAME:-$VERSION_CODENAME}&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
* Install the Docker packages.&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
* Verify that the installation is successful by running the &amp;lt;code&amp;gt;hello-world&amp;lt;/code&amp;gt; image:&lt;br /&gt;
&lt;br /&gt;
 sudo docker run hello-world&lt;br /&gt;
&lt;br /&gt;
=== Installation der Sonstigen Softare (s.u.) ===&lt;br /&gt;
via &amp;quot;sudo apt install ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Kopie des Docker-Repos ===&lt;br /&gt;
Kopie des Repos in &amp;quot;/srv/tisento-docker&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Dort muss als erstes &amp;quot;portainer gestartet und wiederhergestellt werden.&lt;br /&gt;
&lt;br /&gt;
Danach wird gitea gestartet und wiederhergestellt. (Damit die repos gezogen werden können)&lt;br /&gt;
&lt;br /&gt;
Danach nach und nach die anderen Services wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
=== Einstellung UFW ===&lt;br /&gt;
 sudo ufw allow 80/tcp&lt;br /&gt;
&lt;br /&gt;
 sudo ufw allow 443/tcp&lt;br /&gt;
&lt;br /&gt;
== Sonstige Software (nicht vollständig, muss überarbeitet werden!) ==&lt;br /&gt;
&lt;br /&gt;
* Docker (s.o.)&lt;br /&gt;
* git&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* cron (Wiederkehrende Aufgaben, bspw. Backups)&lt;br /&gt;
* ncdu (Speicherbelegung)&lt;br /&gt;
* nmon (Monitoring)&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Docker-Dienste ==&lt;br /&gt;
Die meisten Dienste sind mit ihren Daten und Definitionen unter /var/html/dienst.tisento.com erreichbar.&lt;br /&gt;
&lt;br /&gt;
Dabei sind in dem Ordner /var/html/dienst.tisento.com/.docker die Definitionen der Docker-Container.&lt;br /&gt;
&lt;br /&gt;
In dem Ordner /var/html/dienst.tisento.com/backups sind die jeweiligen Backups der Daten.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F2)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst. &lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit.tisento.com/backups gespeichert. Das tägliche Backup wird nach 30 Tagen gelöscht, die monatlichen nach einem Jahr und die jährlichen Backups nie.&lt;br /&gt;
&lt;br /&gt;
EVTL. NOCH MONITOR HINZUFÜGEN DER BACKUP TÄGLICH PRÜFT!&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Mounting der Laufwerke via:&lt;br /&gt;
 sudo mount.cifs -v //172.22.0.245/cockpit/_Daten /srv/tisento-docker/cockpit-prod/html/_Daten/ --verbose -o user=us,password=pw,domain=TISENTOSAN2,vers=2.0,uid=33,gid=33&lt;br /&gt;
Die ID 33 muss ggfs. angepasst werden um&lt;br /&gt;
 id www-data&lt;br /&gt;
damit die Rechte passen.&lt;br /&gt;
&lt;br /&gt;
Es müssen auch die Laufwerke _Cockpit_Daten und _Cockpit_Verwaltung gemounted werden.&lt;br /&gt;
&lt;br /&gt;
Weiter müssen ggfs. einige &amp;quot;.env&amp;quot;-Dateien angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;html/api/connection/.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;.docker/backup/backup.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Siehe die jeweiligen &amp;quot;*.env.example&amp;quot;-Dateien&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-test.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-test.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-dev.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-dev.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Überwachung der diversen Docker-Container, als auch für diverse Systeme da (z.B. HEALTH, also CPU, RAM, HDD von diversen Servern).&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/monitor.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Verwaltung der verschiedenen Docker-Container notwendig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/portainer.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Dieses Tool ist für die FTP-Verbindung zu den jeweiligen HTML-Verzeichnissen von [https://cockpit.tisento.com cockpit.tisento.com], [https://cockpit-test.tisento.com cockpit-test.tisento.com] und [https://cockpit-dev.tisento.com cockpit-dev.tisento.com] zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/ftp.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Erstellung und Verwaltung der Tickets zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Fehlerbehebung ====&lt;br /&gt;
Wenn bspw. die Festplatte vom Docker-Server vollgelaufen ist, dann müssen die Dienste einmal neugestartet werden.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann es sein, dass man die Caches mit folgenden Befehlen (im Daemon) löscht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Cache::Delete&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Config::Rebuild --cleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Loader::CacheCleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NGINX (noch nicht als Docker-Container) ===&lt;br /&gt;
nginx ist ein Reverse-Proxy, damit die verschiedenen Domains den richtigen Weg zu den Services finden.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Backup // Wiederherstellung ==&lt;br /&gt;
Jeder Service hat ein eigenes Backup-System.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden gemeinsam per FTP auf den Server XY übertragen. (TODO)&lt;br /&gt;
&lt;br /&gt;
Dort läuft ein kleiner PHP-Cronjob, der diese Backups in ein anderes Verzeichnis überträgt. (TODO)&lt;br /&gt;
&lt;br /&gt;
Diese Dateien werden für eine Wiederherstellung benötigt!&lt;br /&gt;
&lt;br /&gt;
=== Wiederherstellung ===&lt;br /&gt;
Für die Wiederherstellung werden die Backups vom Server benötigt. Weiter wird diese Anleitung benötigt.&lt;br /&gt;
&lt;br /&gt;
Weiter wird für ein vollständigen Backups  ein neuer Server benötigt, dort müssen folgende Schritte in der Reihenfolge ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Installation s.o. &amp;quot;Neuinstallation&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Außerdem muss der DNS und weitere Weiterleitungen der entsprechenden Domains auf den neuen Server geändert werden!&lt;br /&gt;
&lt;br /&gt;
Kopie des git-Repos in dem Verzeichnis /srv/tisento-docker/.&lt;br /&gt;
&lt;br /&gt;
Kann Beispielsweise mit dem CMD unter Mac direkt zum Server kopiert werden:&lt;br /&gt;
 asdasdasd (TODO)&lt;br /&gt;
Wiederherstellung nginx s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung Portainer s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung gitea s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der restlichen Docker-Services mithilfe der Docker-Compose-Dateien in gitea. Alternativ sind die Docker-Compose-Dateien auch in den Backup gespeichert und wurden im best-case zu &amp;quot;/srv/tisento-docker&amp;quot; zurückgespielt!&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der einzelnen Daten der Services mithilfe der obigen Erklärungen.&lt;br /&gt;
&lt;br /&gt;
== Test der Systeme ==&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP &amp;amp; V-Laufwerk prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Aufruf der Website, schauen, ob alle Monitore noch vorhanden sind.&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Aufruf der Website und schauen, ob zu den Containern eine Verbindung herstgestellt wird.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Hestellung der Verbindung zu Cockpit-Prod,-Test und -Dev.&lt;br /&gt;
&lt;br /&gt;
Testübertragung (bspw. Task) und test davon!&lt;br /&gt;
&lt;br /&gt;
Ansonsten einfach mal die index.html umbenennen!&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Erstellung eines Test-Tickets via Mail an: support@tisento.com &lt;br /&gt;
&lt;br /&gt;
Prüfen, ob dieses Ticket in der GUI auftaucht.&lt;br /&gt;
&lt;br /&gt;
Antworten auf dieses Ticket und schauen, ob die Antwort in dem Mail-Client ankommt.&lt;br /&gt;
&lt;br /&gt;
=== NGINX ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Anmeldung mit dem AD-Nutzern&lt;br /&gt;
&lt;br /&gt;
== Neuen Docker-Dienst anlegen ==&lt;br /&gt;
Hier wird davon ausgegangen, dass es sich um einen Dockerdienst handelt, der auf einem Port wie 80 oder 443 angesprochen werden soll. Wir gehen davon aus, dass das Portmapping &amp;quot;127.0.0.1:10443:443&amp;quot; ist, also der Container den Port 10443 auf das lokale Interface öffnet und mit dem Container-Port 10443 mappt. Weiter gehen wir davon aus, dass der Service über die Subdomain &amp;quot;&#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&amp;quot; über HTTP und HTTPS erreichbar sein soll. HTTP wird auf HTTPS weitergeleitet.&lt;br /&gt;
&lt;br /&gt;
# Erstellung der Sub-Domain &#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&lt;br /&gt;
## [mailto:puetter@tisento.com Torsten] diese Sub-Domain dem Server zuweisen lassen.&lt;br /&gt;
## Für das SSL-Zertifikat muss die Domain öffentlich erreichbar sein!&lt;br /&gt;
# Erstellung der Konfiguration im nginx Service&lt;br /&gt;
## Erstellung einer Datei sub.tisento.com.conf in dem Pfad /var/www/nginx.tisento.com/nginx/...&lt;br /&gt;
## Hinzufügen von dem Inhalt:&amp;lt;blockquote&amp;gt;adasdsa&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
## Prüfung ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neu laden&lt;br /&gt;
## Hinzufügen eines Zertifikates mit dem Befehl:&lt;br /&gt;
### asdasd&lt;br /&gt;
## Hinzufügen der SSL Konfuguration zur Datei (sub.tisento.com.conf)&lt;br /&gt;
## Prüfen ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neuladen&lt;br /&gt;
# Prüfen der Verbindung&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=317</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=317"/>
		<updated>2025-06-12T17:12:05Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Zugriff==&lt;br /&gt;
Der Docker-Server ist unter der 172.22.0.224 erreichbar.&lt;br /&gt;
&lt;br /&gt;
Der neue Docker-Server wird unter 172.22.0.223 erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
Der Port, Nutzername und auch das Passwort sind im [http://keepass.tisento.com Passbolt] gespeichert.&lt;br /&gt;
&lt;br /&gt;
== Zugriff Dienste ==&lt;br /&gt;
Nachfolgend eine Liste der Dienste die auf dem Docker laufen&lt;br /&gt;
&lt;br /&gt;
* [https://cockpit.tisento.com Cockpit-PROD] &lt;br /&gt;
* [https://cockpit-test.tisento.com Cockpit-TEST]&lt;br /&gt;
* [https://cockpit-dev.tisento.com Cockpit-DEV]&lt;br /&gt;
* [https://monitor.tisento.com UpTime Kuma (Monitor)]&lt;br /&gt;
* [https://portainer.tisento.com Portainer (Docker Verwaltung)]&lt;br /&gt;
* FTP&lt;br /&gt;
* [https://service.tisento.com Ticketsystem / Otobo]&lt;br /&gt;
* NGINX &amp;amp; Certbot (noch nicht als Docker-Container)&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* [https://gitea.tisento.com Git (gitea)] noch nicht installiert&lt;br /&gt;
&lt;br /&gt;
== Neuinstallation ==&lt;br /&gt;
Kopie der &amp;quot;tisento.conf&amp;quot;-Datei in den Ordner: &amp;quot;/etc/ssh/sshd_config.d/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hinzufügen des 9022-Ports zur UFW mit:&lt;br /&gt;
 sudo ufw allow 9022/tcp&lt;br /&gt;
Einschalten der ufw mit&lt;br /&gt;
 sudo ufw enable&lt;br /&gt;
&lt;br /&gt;
=== Installation vom Docker (https://docs.docker.com/engine/install/ubuntu/): ===&lt;br /&gt;
Install using the &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository&lt;br /&gt;
&lt;br /&gt;
Before you install Docker Engine for the first time on a new host machine, you need to set up the Docker &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository. Afterward, you can install and update Docker from the repository.&lt;br /&gt;
&lt;br /&gt;
* Set up Docker&#039;s &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository.&lt;br /&gt;
&lt;br /&gt;
 # Add Docker&#039;s official GPG key:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu/gpg&amp;lt;/nowiki&amp;gt; -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
 &lt;br /&gt;
 # Add the repository to Apt sources:&lt;br /&gt;
 echo \&lt;br /&gt;
 &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu&amp;lt;/nowiki&amp;gt; \&lt;br /&gt;
 $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;${UBUNTU_CODENAME:-$VERSION_CODENAME}&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
* Install the Docker packages.&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
* Verify that the installation is successful by running the &amp;lt;code&amp;gt;hello-world&amp;lt;/code&amp;gt; image:&lt;br /&gt;
&lt;br /&gt;
 sudo docker run hello-world&lt;br /&gt;
&lt;br /&gt;
=== Installation der Sonstigen Softare (s.u.) ===&lt;br /&gt;
via &amp;quot;sudo apt install ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Kopie des Docker-Repos ===&lt;br /&gt;
Kopie des Repos in &amp;quot;/srv/tisento-docker&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Dort muss als erstes &amp;quot;portainer gestartet und wiederhergestellt werden.&lt;br /&gt;
&lt;br /&gt;
Danach wird gitea gestartet und wiederhergestellt. (Damit die repos gezogen werden können)&lt;br /&gt;
&lt;br /&gt;
Danach nach und nach die anderen Services wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
=== Einstellung UFW ===&lt;br /&gt;
 sudo ufw allow 80/tcp&lt;br /&gt;
&lt;br /&gt;
 sudo ufw allow 443/tcp&lt;br /&gt;
&lt;br /&gt;
== Sonstige Software (nicht vollständig, muss überarbeitet werden!) ==&lt;br /&gt;
&lt;br /&gt;
* Docker (s.o.)&lt;br /&gt;
* git&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* cron (Wiederkehrende Aufgaben, bspw. Backups)&lt;br /&gt;
* ncdu (Speicherbelegung)&lt;br /&gt;
* nmon (Monitoring)&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Docker-Dienste ==&lt;br /&gt;
Die meisten Dienste sind mit ihren Daten und Definitionen unter /var/html/dienst.tisento.com erreichbar.&lt;br /&gt;
&lt;br /&gt;
Dabei sind in dem Ordner /var/html/dienst.tisento.com/.docker die Definitionen der Docker-Container.&lt;br /&gt;
&lt;br /&gt;
In dem Ordner /var/html/dienst.tisento.com/backups sind die jeweiligen Backups der Daten.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F2)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst. &lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit.tisento.com/backups gespeichert. Das tägliche Backup wird nach 30 Tagen gelöscht, die monatlichen nach einem Jahr und die jährlichen Backups nie.&lt;br /&gt;
&lt;br /&gt;
EVTL. NOCH MONITOR HINZUFÜGEN DER BACKUP TÄGLICH PRÜFT!&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Mounting der Laufwerke via:&lt;br /&gt;
 sudo mount.cifs -v //172.22.0.245/cockpit/_Daten /srv/tisento-docker/cockpit-prod/html/_Daten/ --verbose -o user=us,password=pw,domain=TISENTOSAN2,vers=2.0,uid=33,gid=33&lt;br /&gt;
Die ID 33 muss ggfs. angepasst werden um&lt;br /&gt;
 id www-data&lt;br /&gt;
damit die Rechte passen.&lt;br /&gt;
&lt;br /&gt;
Es müssen auch die Laufwerke _Cockpit_Daten und _Cockpit_Verwaltung gemounted werden.&lt;br /&gt;
&lt;br /&gt;
Weiter müssen ggfs. einige &amp;quot;.env&amp;quot;-Dateien angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;html/api/connection/.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;.docker/backup/backup.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Siehe die jeweiligen &amp;quot;*.env.example&amp;quot;-Dateien&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-test.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-test.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-dev.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-dev.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Überwachung der diversen Docker-Container, als auch für diverse Systeme da (z.B. HEALTH, also CPU, RAM, HDD von diversen Servern).&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/monitor.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Verwaltung der verschiedenen Docker-Container notwendig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/portainer.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Dieses Tool ist für die FTP-Verbindung zu den jeweiligen HTML-Verzeichnissen von [https://cockpit.tisento.com cockpit.tisento.com], [https://cockpit-test.tisento.com cockpit-test.tisento.com] und [https://cockpit-dev.tisento.com cockpit-dev.tisento.com] zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/ftp.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Erstellung und Verwaltung der Tickets zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Fehlerbehebung ====&lt;br /&gt;
Wenn bspw. die Festplatte vom Docker-Server vollgelaufen ist, dann müssen die Dienste einmal neugestartet werden.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann es sein, dass man die Caches mit folgenden Befehlen (im Daemon) löscht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Cache::Delete&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Config::Rebuild --cleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Loader::CacheCleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NGINX (noch nicht als Docker-Container) ===&lt;br /&gt;
nginx ist ein Reverse-Proxy, damit die verschiedenen Domains den richtigen Weg zu den Services finden.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Backup // Wiederherstellung ==&lt;br /&gt;
Jeder Service hat ein eigenes Backup-System.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden gemeinsam per FTP auf den Server XY übertragen. (TODO)&lt;br /&gt;
&lt;br /&gt;
Dort läuft ein kleiner PHP-Cronjob, der diese Backups in ein anderes Verzeichnis überträgt. (TODO)&lt;br /&gt;
&lt;br /&gt;
Diese Dateien werden für eine Wiederherstellung benötigt!&lt;br /&gt;
&lt;br /&gt;
=== Wiederherstellung ===&lt;br /&gt;
Für die Wiederherstellung werden die Backups vom Server benötigt. Weiter wird diese Anleitung benötigt.&lt;br /&gt;
&lt;br /&gt;
Weiter wird für ein vollständigen Backups  ein neuer Server benötigt, dort müssen folgende Schritte in der Reihenfolge ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Installation s.o. &amp;quot;Neuinstallation&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Kopie des git-Repos in dem Verzeichnis /srv/tisento-docker/.&lt;br /&gt;
&lt;br /&gt;
Kann Beispielsweise mit dem CMD unter Mac direkt zum Server kopiert werden:&lt;br /&gt;
 asdasdasd (TODO)&lt;br /&gt;
Wiederherstellung nginx s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung Portainer s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung gitea s.o.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der restlichen Docker-Services mithilfe der Docker-Compose-Dateien in gitea. Alternativ sind die Docker-Compose-Dateien auch in den Backup gespeichert und wurden im best-case zu &amp;quot;/srv/tisento-docker&amp;quot; zurückgespielt!&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der einzelnen Daten der Services mithilfe der obigen Erklärungen.&lt;br /&gt;
&lt;br /&gt;
== Test der Systeme ==&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP &amp;amp; V-Laufwerk prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Aufruf der Website, schauen, ob alle Monitore noch vorhanden sind.&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Aufruf der Website und schauen, ob zu den Containern eine Verbindung herstgestellt wird.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Hestellung der Verbindung zu Cockpit-Prod,-Test und -Dev.&lt;br /&gt;
&lt;br /&gt;
Testübertragung (bspw. Task) und test davon!&lt;br /&gt;
&lt;br /&gt;
Ansonsten einfach mal die index.html umbenennen!&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Erstellung eines Test-Tickets via Mail an: support@tisento.com &lt;br /&gt;
&lt;br /&gt;
Prüfen, ob dieses Ticket in der GUI auftaucht.&lt;br /&gt;
&lt;br /&gt;
Antworten auf dieses Ticket und schauen, ob die Antwort in dem Mail-Client ankommt.&lt;br /&gt;
&lt;br /&gt;
=== NGINX ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Anmeldung mit dem AD-Nutzern&lt;br /&gt;
&lt;br /&gt;
== Neuen Docker-Dienst anlegen ==&lt;br /&gt;
Hier wird davon ausgegangen, dass es sich um einen Dockerdienst handelt, der auf einem Port wie 80 oder 443 angesprochen werden soll. Wir gehen davon aus, dass das Portmapping &amp;quot;127.0.0.1:10443:443&amp;quot; ist, also der Container den Port 10443 auf das lokale Interface öffnet und mit dem Container-Port 10443 mappt. Weiter gehen wir davon aus, dass der Service über die Subdomain &amp;quot;&#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&amp;quot; über HTTP und HTTPS erreichbar sein soll. HTTP wird auf HTTPS weitergeleitet.&lt;br /&gt;
&lt;br /&gt;
# Erstellung der Sub-Domain &#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&lt;br /&gt;
## [mailto:puetter@tisento.com Torsten] diese Sub-Domain dem Server zuweisen lassen.&lt;br /&gt;
## Für das SSL-Zertifikat muss die Domain öffentlich erreichbar sein!&lt;br /&gt;
# Erstellung der Konfiguration im nginx Service&lt;br /&gt;
## Erstellung einer Datei sub.tisento.com.conf in dem Pfad /var/www/nginx.tisento.com/nginx/...&lt;br /&gt;
## Hinzufügen von dem Inhalt:&amp;lt;blockquote&amp;gt;adasdsa&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
## Prüfung ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neu laden&lt;br /&gt;
## Hinzufügen eines Zertifikates mit dem Befehl:&lt;br /&gt;
### asdasd&lt;br /&gt;
## Hinzufügen der SSL Konfuguration zur Datei (sub.tisento.com.conf)&lt;br /&gt;
## Prüfen ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neuladen&lt;br /&gt;
# Prüfen der Verbindung&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=316</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=316"/>
		<updated>2025-06-12T11:33:37Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Zugriff==&lt;br /&gt;
Der Docker-Server ist unter der 172.22.0.224 erreichbar.&lt;br /&gt;
&lt;br /&gt;
Der neue Docker-Server wird unter 172.22.0.223 erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
Der Port, Nutzername und auch das Passwort sind im [http://keepass.tisento.com Passbolt] gespeichert.&lt;br /&gt;
&lt;br /&gt;
== Zugriff Dienste ==&lt;br /&gt;
Nachfolgend eine Liste der Dienste die auf dem Docker laufen&lt;br /&gt;
&lt;br /&gt;
* [https://cockpit.tisento.com Cockpit-PROD] &lt;br /&gt;
* [https://cockpit-test.tisento.com Cockpit-TEST]&lt;br /&gt;
* [https://cockpit-dev.tisento.com Cockpit-DEV]&lt;br /&gt;
* [https://monitor.tisento.com UpTime Kuma (Monitor)]&lt;br /&gt;
* [https://portainer.tisento.com Portainer (Docker Verwaltung)]&lt;br /&gt;
* FTP&lt;br /&gt;
* [https://service.tisento.com Ticketsystem / Otobo]&lt;br /&gt;
* NGINX &amp;amp; Certbot (noch nicht als Docker-Container)&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* [https://gitea.tisento.com Git (gitea)] noch nicht installiert&lt;br /&gt;
&lt;br /&gt;
== Neuinstallation ==&lt;br /&gt;
Kopie der &amp;quot;tisento.conf&amp;quot;-Datei in den Ordner: &amp;quot;/etc/ssh/sshd_config.d/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hinzufügen des 9022-Ports zur UFW mit:&lt;br /&gt;
 sudo ufw allow 9022/tcp&lt;br /&gt;
Einschalten der ufw mit&lt;br /&gt;
 sudo ufw enable&lt;br /&gt;
&lt;br /&gt;
=== Installation vom Docker (https://docs.docker.com/engine/install/ubuntu/): ===&lt;br /&gt;
Install using the &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository&lt;br /&gt;
&lt;br /&gt;
Before you install Docker Engine for the first time on a new host machine, you need to set up the Docker &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository. Afterward, you can install and update Docker from the repository.&lt;br /&gt;
&lt;br /&gt;
* Set up Docker&#039;s &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository.&lt;br /&gt;
&lt;br /&gt;
 # Add Docker&#039;s official GPG key:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu/gpg&amp;lt;/nowiki&amp;gt; -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
 &lt;br /&gt;
 # Add the repository to Apt sources:&lt;br /&gt;
 echo \&lt;br /&gt;
 &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu&amp;lt;/nowiki&amp;gt; \&lt;br /&gt;
 $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;${UBUNTU_CODENAME:-$VERSION_CODENAME}&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
* Install the Docker packages.&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
* Verify that the installation is successful by running the &amp;lt;code&amp;gt;hello-world&amp;lt;/code&amp;gt; image:&lt;br /&gt;
&lt;br /&gt;
 sudo docker run hello-world&lt;br /&gt;
&lt;br /&gt;
=== Installation der Sonstigen Softare (s.u.) ===&lt;br /&gt;
via &amp;quot;sudo apt install ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Kopie des Docker-Repos ===&lt;br /&gt;
Kopie des Repos in &amp;quot;/srv/tisento-docker&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Dort muss als erstes &amp;quot;portainer gestartet und wiederhergestellt werden.&lt;br /&gt;
&lt;br /&gt;
Danach wird gitea gestartet und wiederhergestellt. (Damit die repos gezogen werden können)&lt;br /&gt;
&lt;br /&gt;
Danach nach und nach die anderen Services wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
=== Einstellung UFW ===&lt;br /&gt;
 sudo ufw allow 80/tcp&lt;br /&gt;
&lt;br /&gt;
 sudo ufw allow 443/tcp&lt;br /&gt;
&lt;br /&gt;
== Sonstige Software (nicht vollständig, muss überarbeitet werden!) ==&lt;br /&gt;
&lt;br /&gt;
* Docker (s.o.)&lt;br /&gt;
* git&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* cron (Wiederkehrende Aufgaben, bspw. Backups)&lt;br /&gt;
* ncdu (Speicherbelegung)&lt;br /&gt;
* nmon (Monitoring)&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Docker-Dienste ==&lt;br /&gt;
Die meisten Dienste sind mit ihren Daten und Definitionen unter /var/html/dienst.tisento.com erreichbar.&lt;br /&gt;
&lt;br /&gt;
Dabei sind in dem Ordner /var/html/dienst.tisento.com/.docker die Definitionen der Docker-Container.&lt;br /&gt;
&lt;br /&gt;
In dem Ordner /var/html/dienst.tisento.com/backups sind die jeweiligen Backups der Daten.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F2)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst. &lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit.tisento.com/backups gespeichert. Das tägliche Backup wird nach 30 Tagen gelöscht, die monatlichen nach einem Jahr und die jährlichen Backups nie.&lt;br /&gt;
&lt;br /&gt;
EVTL. NOCH MONITOR HINZUFÜGEN DER BACKUP TÄGLICH PRÜFT!&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Mounting der Laufwerke via:&lt;br /&gt;
 sudo mount.cifs -v //172.22.0.245/cockpit/_Daten /srv/tisento-docker/cockpit-prod/html/_Daten/ --verbose -o user=us,password=pw,domain=TISENTOSAN2,vers=2.0,uid=33,gid=33&lt;br /&gt;
Die ID 33 muss ggfs. angepasst werden um&lt;br /&gt;
 id www-data&lt;br /&gt;
damit die Rechte passen.&lt;br /&gt;
&lt;br /&gt;
Es müssen auch die Laufwerke _Cockpit_Daten und _Cockpit_Verwaltung gemounted werden.&lt;br /&gt;
&lt;br /&gt;
Weiter müssen ggfs. einige &amp;quot;.env&amp;quot;-Dateien angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;html/api/connection/.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;.docker/backup/backup.env&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Siehe die jeweiligen &amp;quot;*.env.example&amp;quot;-Dateien&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-test.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-test.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-dev.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-dev.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Überwachung der diversen Docker-Container, als auch für diverse Systeme da (z.B. HEALTH, also CPU, RAM, HDD von diversen Servern).&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/monitor.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Verwaltung der verschiedenen Docker-Container notwendig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/portainer.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Dieses Tool ist für die FTP-Verbindung zu den jeweiligen HTML-Verzeichnissen von [https://cockpit.tisento.com cockpit.tisento.com], [https://cockpit-test.tisento.com cockpit-test.tisento.com] und [https://cockpit-dev.tisento.com cockpit-dev.tisento.com] zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/ftp.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Erstellung und Verwaltung der Tickets zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Fehlerbehebung ====&lt;br /&gt;
Wenn bspw. die Festplatte vom Docker-Server vollgelaufen ist, dann müssen die Dienste einmal neugestartet werden.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann es sein, dass man die Caches mit folgenden Befehlen (im Daemon) löscht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Cache::Delete&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Config::Rebuild --cleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Loader::CacheCleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NGINX (noch nicht als Docker-Container) ===&lt;br /&gt;
nginx ist ein Reverse-Proxy, damit die verschiedenen Domains den richtigen Weg zu den Services finden.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Backups ==&lt;br /&gt;
Jeder Service hat ein eigenes Backup-System.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden gemeinsam per FTP auf den Server XY übertragen.&lt;br /&gt;
&lt;br /&gt;
Dort läuft ein kleiner PHP-Cronjob, der diese Backups in ein anderes Verzeichnis überträgt.&lt;br /&gt;
&lt;br /&gt;
Diese Dateien werden für eine Wiederherstellung benötigt!&lt;br /&gt;
&lt;br /&gt;
Für den Start des vollständigen Backups wird ein neuer Server benötigt, dort müssen folgende Schritte in der Reihenfolge ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Installation von Docker&lt;br /&gt;
&lt;br /&gt;
Erstellung des nginx Docker-Service&lt;br /&gt;
&lt;br /&gt;
Erstellung des Portainer Docker-Service&lt;br /&gt;
&lt;br /&gt;
Erstellung des gitea-Docker-Service mit Portainer.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung von gitea mithilfe der obigen Erklärung.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der restlichen Docker-Services mithilfe der Docker-Compose-Dateien in gitea. Alternativ sind die Docker-Compose-Dateien auch in den Backup gespeichert!&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der einzelnen Daten der Services mithilfe der obigen Erklärungen.&lt;br /&gt;
&lt;br /&gt;
== Test der Systeme ==&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP &amp;amp; V-Laufwerk prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Aufruf der Website, schauen, ob alle Monitore noch vorhanden sind.&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Aufruf der Website und schauen, ob zu den Containern eine Verbindung herstgestellt wird.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Hestellung der Verbindung zu Cockpit-Prod,-Test und -Dev.&lt;br /&gt;
&lt;br /&gt;
Testübertragung (bspw. Task) und test davon!&lt;br /&gt;
&lt;br /&gt;
Ansonsten einfach mal die index.html umbenennen!&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Erstellung eines Test-Tickets via Mail an: support@tisento.com &lt;br /&gt;
&lt;br /&gt;
Prüfen, ob dieses Ticket in der GUI auftaucht.&lt;br /&gt;
&lt;br /&gt;
Antworten auf dieses Ticket und schauen, ob die Antwort in dem Mail-Client ankommt.&lt;br /&gt;
&lt;br /&gt;
=== NGINX ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Anmeldung mit dem AD-Nutzern&lt;br /&gt;
&lt;br /&gt;
== Neuen Docker-Dienst anlegen ==&lt;br /&gt;
Hier wird davon ausgegangen, dass es sich um einen Dockerdienst handelt, der auf einem Port wie 80 oder 443 angesprochen werden soll. Wir gehen davon aus, dass das Portmapping &amp;quot;127.0.0.1:10443:443&amp;quot; ist, also der Container den Port 10443 auf das lokale Interface öffnet und mit dem Container-Port 10443 mappt. Weiter gehen wir davon aus, dass der Service über die Subdomain &amp;quot;&#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&amp;quot; über HTTP und HTTPS erreichbar sein soll. HTTP wird auf HTTPS weitergeleitet.&lt;br /&gt;
&lt;br /&gt;
# Erstellung der Sub-Domain &#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&lt;br /&gt;
## [mailto:puetter@tisento.com Torsten] diese Sub-Domain dem Server zuweisen lassen.&lt;br /&gt;
## Für das SSL-Zertifikat muss die Domain öffentlich erreichbar sein!&lt;br /&gt;
# Erstellung der Konfiguration im nginx Service&lt;br /&gt;
## Erstellung einer Datei sub.tisento.com.conf in dem Pfad /var/www/nginx.tisento.com/nginx/...&lt;br /&gt;
## Hinzufügen von dem Inhalt:&amp;lt;blockquote&amp;gt;adasdsa&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
## Prüfung ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neu laden&lt;br /&gt;
## Hinzufügen eines Zertifikates mit dem Befehl:&lt;br /&gt;
### asdasd&lt;br /&gt;
## Hinzufügen der SSL Konfuguration zur Datei (sub.tisento.com.conf)&lt;br /&gt;
## Prüfen ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neuladen&lt;br /&gt;
# Prüfen der Verbindung&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=315</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=315"/>
		<updated>2025-06-12T09:38:44Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: Tests hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Zugriff==&lt;br /&gt;
Der Docker-Server ist unter der 172.22.0.224 erreichbar.&lt;br /&gt;
&lt;br /&gt;
Der neue Docker-Server wird unter 172.22.0.223 erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
Der Port, Nutzername und auch das Passwort sind im [http://keepass.tisento.com Passbolt] gespeichert.&lt;br /&gt;
&lt;br /&gt;
== Zugriff Dienste ==&lt;br /&gt;
Nachfolgend eine Liste der Dienste die auf dem Docker laufen&lt;br /&gt;
&lt;br /&gt;
* [https://cockpit.tisento.com Cockpit-PROD] &lt;br /&gt;
* [https://cockpit-test.tisento.com Cockpit-TEST]&lt;br /&gt;
* [https://cockpit-dev.tisento.com Cockpit-DEV]&lt;br /&gt;
* [https://monitor.tisento.com UpTime Kuma (Monitor)]&lt;br /&gt;
* [https://portainer.tisento.com Portainer (Docker Verwaltung)]&lt;br /&gt;
* FTP&lt;br /&gt;
* [https://service.tisento.com Ticketsystem / Otobo]&lt;br /&gt;
* NGINX &amp;amp; Certbot (noch nicht als Docker-Container)&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* [https://gitea.tisento.com Git (gitea)] noch nicht installiert&lt;br /&gt;
&lt;br /&gt;
== Neuinstallation ==&lt;br /&gt;
Kopie der &amp;quot;tisento.conf&amp;quot;-Datei in den Ordner: &amp;quot;/etc/ssh/sshd_config.d/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hinzufügen des 9022-Ports zur UFW mit:&lt;br /&gt;
 sudo ufw allow 9022/tcp&lt;br /&gt;
Einschalten der ufw mit&lt;br /&gt;
 sudo ufw enable&lt;br /&gt;
&lt;br /&gt;
=== Installation vom Docker (https://docs.docker.com/engine/install/ubuntu/): ===&lt;br /&gt;
Install using the &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository&lt;br /&gt;
&lt;br /&gt;
Before you install Docker Engine for the first time on a new host machine, you need to set up the Docker &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository. Afterward, you can install and update Docker from the repository.&lt;br /&gt;
&lt;br /&gt;
* Set up Docker&#039;s &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository.&lt;br /&gt;
&lt;br /&gt;
 # Add Docker&#039;s official GPG key:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu/gpg&amp;lt;/nowiki&amp;gt; -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
 &lt;br /&gt;
 # Add the repository to Apt sources:&lt;br /&gt;
 echo \&lt;br /&gt;
 &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu&amp;lt;/nowiki&amp;gt; \&lt;br /&gt;
 $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;${UBUNTU_CODENAME:-$VERSION_CODENAME}&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
* Install the Docker packages.&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
* Verify that the installation is successful by running the &amp;lt;code&amp;gt;hello-world&amp;lt;/code&amp;gt; image:&lt;br /&gt;
&lt;br /&gt;
 sudo docker run hello-world&lt;br /&gt;
&lt;br /&gt;
=== Installation der Sonstigen Softare (s.u.) ===&lt;br /&gt;
via &amp;quot;sudo apt install ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Kopie des Docker-Repos ===&lt;br /&gt;
Kopie des Repos in &amp;quot;/srv/tisento-docker&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Dort muss als erstes &amp;quot;portainer gestartet und wiederhergestellt werden.&lt;br /&gt;
&lt;br /&gt;
Danach wird gitea gestartet und wiederhergestellt. (Damit die repos gezogen werden können)&lt;br /&gt;
&lt;br /&gt;
Danach nach und nach die anderen Services wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
=== Einstellung UFW ===&lt;br /&gt;
 sudo ufw allow 80/tcp&lt;br /&gt;
&lt;br /&gt;
 sudo ufw allow 443/tcp&lt;br /&gt;
&lt;br /&gt;
== Sonstige Software (nicht vollständig, muss überarbeitet werden!) ==&lt;br /&gt;
&lt;br /&gt;
* Docker (s.o.)&lt;br /&gt;
* git&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* cron (Wiederkehrende Aufgaben, bspw. Backups)&lt;br /&gt;
* ncdu (Speicherbelegung)&lt;br /&gt;
* nmon (Monitoring)&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Docker-Dienste ==&lt;br /&gt;
Die meisten Dienste sind mit ihren Daten und Definitionen unter /var/html/dienst.tisento.com erreichbar.&lt;br /&gt;
&lt;br /&gt;
Dabei sind in dem Ordner /var/html/dienst.tisento.com/.docker die Definitionen der Docker-Container.&lt;br /&gt;
&lt;br /&gt;
In dem Ordner /var/html/dienst.tisento.com/backups sind die jeweiligen Backups der Daten.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F2)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst. &lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit.tisento.com/backups gespeichert. Das tägliche Backup wird nach 30 Tagen gelöscht, die monatlichen nach einem Jahr und die jährlichen Backups nie.&lt;br /&gt;
&lt;br /&gt;
EVTL. NOCH MONITOR HINZUFÜGEN DER BACKUP TÄGLICH PRÜFT!&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Mounting der Laufwerke via:&lt;br /&gt;
 sudo mount.cifs -v //172.22.0.245/cockpit/_Daten /srv/tisento-docker/cockpit-prod/html/_Daten/ --verbose -o user=us,password=pw,domain=TISENTOSAN2,vers=2.0,uid=33,gid=33&lt;br /&gt;
Die ID 33 muss ggfs. angepasst werden um&lt;br /&gt;
 id www-data&lt;br /&gt;
damit die Rechte passen.&lt;br /&gt;
&lt;br /&gt;
Es müssen auch die Laufwerke _Cockpit_Daten und _Cockpit_Verwaltung gemounted werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-test.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-test.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-dev.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-dev.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Überwachung der diversen Docker-Container, als auch für diverse Systeme da (z.B. HEALTH, also CPU, RAM, HDD von diversen Servern).&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/monitor.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Verwaltung der verschiedenen Docker-Container notwendig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/portainer.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Dieses Tool ist für die FTP-Verbindung zu den jeweiligen HTML-Verzeichnissen von [https://cockpit.tisento.com cockpit.tisento.com], [https://cockpit-test.tisento.com cockpit-test.tisento.com] und [https://cockpit-dev.tisento.com cockpit-dev.tisento.com] zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/ftp.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Erstellung und Verwaltung der Tickets zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Fehlerbehebung ====&lt;br /&gt;
Wenn bspw. die Festplatte vom Docker-Server vollgelaufen ist, dann müssen die Dienste einmal neugestartet werden.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann es sein, dass man die Caches mit folgenden Befehlen (im Daemon) löscht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Cache::Delete&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Config::Rebuild --cleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Loader::CacheCleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NGINX (noch nicht als Docker-Container) ===&lt;br /&gt;
nginx ist ein Reverse-Proxy, damit die verschiedenen Domains den richtigen Weg zu den Services finden.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Backups ==&lt;br /&gt;
Jeder Service hat ein eigenes Backup-System.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden gemeinsam per FTP auf den Server XY übertragen.&lt;br /&gt;
&lt;br /&gt;
Dort läuft ein kleiner PHP-Cronjob, der diese Backups in ein anderes Verzeichnis überträgt.&lt;br /&gt;
&lt;br /&gt;
Diese Dateien werden für eine Wiederherstellung benötigt!&lt;br /&gt;
&lt;br /&gt;
Für den Start des vollständigen Backups wird ein neuer Server benötigt, dort müssen folgende Schritte in der Reihenfolge ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Installation von Docker&lt;br /&gt;
&lt;br /&gt;
Erstellung des nginx Docker-Service&lt;br /&gt;
&lt;br /&gt;
Erstellung des Portainer Docker-Service&lt;br /&gt;
&lt;br /&gt;
Erstellung des gitea-Docker-Service mit Portainer.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung von gitea mithilfe der obigen Erklärung.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der restlichen Docker-Services mithilfe der Docker-Compose-Dateien in gitea. Alternativ sind die Docker-Compose-Dateien auch in den Backup gespeichert!&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der einzelnen Daten der Services mithilfe der obigen Erklärungen.&lt;br /&gt;
&lt;br /&gt;
== Test der Systeme ==&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP &amp;amp; V-Laufwerk prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Erstellung einer Zeiterfassung.&lt;br /&gt;
&lt;br /&gt;
Erstellung eines Auftragsscheines =&amp;gt; per FTP prüfen, ob dieser erstellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Aufruf der Website, schauen, ob alle Monitore noch vorhanden sind.&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Aufruf der Website und schauen, ob zu den Containern eine Verbindung herstgestellt wird.&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Hestellung der Verbindung zu Cockpit-Prod,-Test und -Dev.&lt;br /&gt;
&lt;br /&gt;
Testübertragung (bspw. Task) und test davon!&lt;br /&gt;
&lt;br /&gt;
Ansonsten einfach mal die index.html umbenennen!&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Erstellung eines Test-Tickets via Mail an: support@tisento.com &lt;br /&gt;
&lt;br /&gt;
Prüfen, ob dieses Ticket in der GUI auftaucht.&lt;br /&gt;
&lt;br /&gt;
Antworten auf dieses Ticket und schauen, ob die Antwort in dem Mail-Client ankommt.&lt;br /&gt;
&lt;br /&gt;
=== NGINX ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Anmeldung mit dem AD-Nutzern&lt;br /&gt;
&lt;br /&gt;
== Neuen Docker-Dienst anlegen ==&lt;br /&gt;
Hier wird davon ausgegangen, dass es sich um einen Dockerdienst handelt, der auf einem Port wie 80 oder 443 angesprochen werden soll. Wir gehen davon aus, dass das Portmapping &amp;quot;127.0.0.1:10443:443&amp;quot; ist, also der Container den Port 10443 auf das lokale Interface öffnet und mit dem Container-Port 10443 mappt. Weiter gehen wir davon aus, dass der Service über die Subdomain &amp;quot;&#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&amp;quot; über HTTP und HTTPS erreichbar sein soll. HTTP wird auf HTTPS weitergeleitet.&lt;br /&gt;
&lt;br /&gt;
# Erstellung der Sub-Domain &#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&lt;br /&gt;
## [mailto:puetter@tisento.com Torsten] diese Sub-Domain dem Server zuweisen lassen.&lt;br /&gt;
## Für das SSL-Zertifikat muss die Domain öffentlich erreichbar sein!&lt;br /&gt;
# Erstellung der Konfiguration im nginx Service&lt;br /&gt;
## Erstellung einer Datei sub.tisento.com.conf in dem Pfad /var/www/nginx.tisento.com/nginx/...&lt;br /&gt;
## Hinzufügen von dem Inhalt:&amp;lt;blockquote&amp;gt;adasdsa&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
## Prüfung ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neu laden&lt;br /&gt;
## Hinzufügen eines Zertifikates mit dem Befehl:&lt;br /&gt;
### asdasd&lt;br /&gt;
## Hinzufügen der SSL Konfuguration zur Datei (sub.tisento.com.conf)&lt;br /&gt;
## Prüfen ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neuladen&lt;br /&gt;
# Prüfen der Verbindung&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Cockpit&amp;diff=314</id>
		<title>Cockpit</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Cockpit&amp;diff=314"/>
		<updated>2025-06-04T14:08:02Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Cockpit...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ToDos ==&lt;br /&gt;
[[Wareneingang - Hochzeit der Geräte]]&lt;br /&gt;
&lt;br /&gt;
== Zugriff ==&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
Das Produktive Cockpit ist über https://cockpit.tisento.com&amp;lt;nowiki/&amp;gt;erreichbar.&lt;br /&gt;
&lt;br /&gt;
Weiter gibt es dazu noch ein Test-Cockpit https://cockpit-test.tisento.com, sowie ein Dev-Cockpit https://cockpit-dev.tisento.com.&lt;br /&gt;
&lt;br /&gt;
=== Neue Nutzer ===&lt;br /&gt;
Zugangsdaten dazu können entweder von [mailto:koester@tisento.com Jochen Köster] oder [mailto:christian.meyer@tisento.com Christian Meyer] erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Die Rechte sind über diverse Managergruppen geregelt, auch diese können von [mailto:koester@tisento.com Jochen Köster] oder [mailto:christian.meyer@tisento.com Christian Meyer] erstellt oder zugewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== Problembehebung / Einschränkungen ==&lt;br /&gt;
Als erstes Prüfen, ob die entsprechenden [https://monitor.tisento.com Monitore] laufen, entsprechend dem Ergebnis handeln:&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;co-orga LX Toolbox&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Bestimmte Tasks (bspw. Erstellung der Lieferscheine aus den Zeiterfassungen) gehen nicht. Cockpit funktioniert davon abgesehen weiterhin.Problembehandliung:&lt;br /&gt;
&lt;br /&gt;
Auf den tisento-erp (172.22.0.219) anmelden. LX Toolbox starten (Service).&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;co-orga LX Toolbox PROD-Token&amp;quot; down oder &amp;quot;co-orga LX Toolbox TEST-Token&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung: ====&lt;br /&gt;
Bestimmte Tasks (bspw. Erstellung der Lieferscheine aus den Zeiterfassungen) gehen nicht. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung: ====&lt;br /&gt;
Wenn einer der beiden Token down ist, dann kann es folgende Gründe und Lösungen geben&lt;br /&gt;
&lt;br /&gt;
# co-orga LX Toolbox down ist down, dann siehe oben&lt;br /&gt;
# Der Supervisor hat nicht das richtige Passwort (wurde evtl. zum Testen auf &amp;quot;&amp;quot; geändert, dann zurück ändern!)&lt;br /&gt;
# Der Supervisor hatte zum Testen ein anderes Paswort, das wurde zurück gesetzt. Jetzt muss der Supervisor sich bei den entsprechenden Firmen in Lexware anmelden, danach sind die Token wieder aktiv.&lt;br /&gt;
# Der Token wurde gelöscht, da bspw. LX Toolbox abgestürzt ist. Bei der [http://172.22.0.219:5000/ LX Toolbox] mit dem Supervisor in der entsprechenden Firma anmelden und einen neuen Zugriffstoken setzen. Dieser ist entweder im [https://monitor.tisento.com Monitor] oder auch im [http://keepass.tisento.com/ Passbolt] zu finden&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Lexware: Fehler nicht gedruckt&amp;quot; down oder Belege können nicht gefunden werden ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Bestimmte Tasks (bspw. Rechnungsversand) gehen nicht. Dokument ist in ELO nicht vorhanden. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung ====&lt;br /&gt;
Es scheint, als wäre in Lexware eine Datei als gedruckt markiert aber nicht gedruckt worden.&lt;br /&gt;
&lt;br /&gt;
Folgendes SQL-Statement ausführen, dann werden die entsprechenden Dokumente angezeigt:&lt;br /&gt;
 SELECT &lt;br /&gt;
     fka.`AuftragsNr`,fka.`AuftragsKennung`, fkk.lID &lt;br /&gt;
 FROM &lt;br /&gt;
     `FK_Auftrag` fka &lt;br /&gt;
 LEFT JOIN &lt;br /&gt;
     FK_AuftragKontakt fkak ON fkak.lAuftragID = fka.SheetNr AND fkak.lID &amp;gt; 20000 &lt;br /&gt;
 LEFT JOIN &lt;br /&gt;
     FK_Kontakt fkk ON fkk.lID = fkak.lKontaktID and fkk.System_created &amp;gt; &#039;2025-01-01&#039; &lt;br /&gt;
 WHERE &lt;br /&gt;
     fka.bStatus_gedruckt = 1 AND &lt;br /&gt;
     fkk.lID is NULL AND&lt;br /&gt;
     Datum_erfassung &amp;gt; &#039;2025-01-01&#039; &lt;br /&gt;
 ORDER BY &lt;br /&gt;
     fka.SheetNr DESC&lt;br /&gt;
Diese Dokumente noch einmal drucken, dann geht der Monitor wieder auf &amp;quot;Up&amp;quot;. Evtl. kann dafür noch eine Task erstellt werden.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;co-orga LX datawarehouse&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Es sind keine aktuellen Lexware-Daten im Cockpit. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung ====&lt;br /&gt;
Auf den tisento-erp (172.22.0.219) anmelden. LX DataWarehouse starten (Service).&lt;br /&gt;
&lt;br /&gt;
=== Docker Container &amp;quot;... down&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Der jeweilige Service funktioniert nicht richtig. Im Monitor schauen welche Gruppe (bspw. Cockpit-TEST, Cockpit-PROD, ELO-TEST, ...) betroffen ist.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung ====&lt;br /&gt;
Einer der Services ist down, dann über [https://portainer.tisento.com Portainer] den entsprechenden Container neustarten. Zugangsdaten sind im [http://keepass.tisento.com/ Passbolt] abgespeichert.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Zebra ...&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Der jeweilige Drucker funktioniert nicht, es können keine Etiketten gedruckt werden. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung ====&lt;br /&gt;
In Meschede oder bei Uli anrufen, dass der jeweile Zebra einmal gestartet wird.&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Wareneingang_-_Hochzeit_der_Ger%C3%A4te&amp;diff=313</id>
		<title>Wareneingang - Hochzeit der Geräte</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Wareneingang_-_Hochzeit_der_Ger%C3%A4te&amp;diff=313"/>
		<updated>2025-06-04T12:35:07Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: init&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Nach dem die (LANCOM!) Geräte über den Massenimport in das Cockpit eingetragen worden sind, sind vier Schritte notwendig, um den Wareneingang abzuschließen.&lt;br /&gt;
&lt;br /&gt;
Alle diese Schritte werden über Tasks koordiniert.&lt;br /&gt;
&lt;br /&gt;
=== Import Lizenzdateien Lexware ===&lt;br /&gt;
Die Lizenzdatei muss unter: &amp;quot;Q:\_Cockpit_Daten\Customer\tisento\Import\Lizenzen\Lancom&amp;quot; abgelegt werden.&lt;br /&gt;
&lt;br /&gt;
Dann kann diese über den Task eingelesen werden.&lt;br /&gt;
&lt;br /&gt;
Die Lizenzen werden dann in  &amp;quot;cockpit_config&amp;quot;-&amp;gt; &amp;quot;task_lancom_warranty&amp;quot; importiert.&lt;br /&gt;
&lt;br /&gt;
=== Hochzeit &amp;amp; Wareneingang ===&lt;br /&gt;
In diesem Task wird geprüft, ob genügend Lizenzen für die Geräte zur Verfügung stehen.&lt;br /&gt;
&lt;br /&gt;
Wenn dem so ist, dann werden die Geräte verbunden und das &amp;quot;moved_to&amp;quot; aus der &amp;quot;device&amp;quot;-Tabelle wird entfernt. Die Lizenten werden unter &amp;quot;cockpit_config&amp;quot;-&amp;gt; &amp;quot;task_lancom_warranty&amp;quot; verknüpft&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Gleichzeitig wird eine Datei erzeugt in dem Ordner:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Q:\_Cockpit_Daten\Customer\tisento\Export\Wareneingang\Lexware&amp;quot;, diese muss über den Wareneingang in Lexware importiert werden. Achtung: Anpassung der Menge bei den Positionen die nicht eingelesen werden!&lt;br /&gt;
&lt;br /&gt;
=== Export Bulk Keys Lancom ===&lt;br /&gt;
Eine weitere Datei wird in dem Ordner erzeugt:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Q:\_Cockpit_Daten\Customer\tisento\Export\Bulk\Lancom&amp;quot;, diese Datei muss https://www.lancom-systems.de/service-support/registrierungen/geraete-optionen-bulk auf der LANCOM-Seite hochgeladen werden. Achtung: Kopie der E-Mail-Adresse aus der Datei und einfügen auf der Website.&lt;br /&gt;
&lt;br /&gt;
Beim Erzeugen des Bulks wird die Tabelle &amp;quot;cockpit_config&amp;quot;-&amp;gt; &amp;quot;task_lancom_warranty&amp;quot; angepasst.&lt;br /&gt;
&lt;br /&gt;
=== Import Bulk Quittung Lancom ===&lt;br /&gt;
Die Quittung wird üblicherweise an Lizenzen@tisento.com geschickt (Jochen hat Zugriff). Diese Quittung muss in &amp;quot;Q:\_Cockpit_Daten\Customer\tisento\Import\Quittungen\Lancom&amp;quot; abgelegt und importiert werden.&lt;br /&gt;
&lt;br /&gt;
Danach werden die Daten in &amp;quot;cockpit_config&amp;quot;-&amp;gt; &amp;quot;task_lancom_warranty&amp;quot; angepasst&lt;br /&gt;
&lt;br /&gt;
Achtung:&lt;br /&gt;
&lt;br /&gt;
Nach diesen Schritten müssen die jeweiligen Dateien in das Archiv übertragen werden!&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Cockpit&amp;diff=312</id>
		<title>Cockpit</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Cockpit&amp;diff=312"/>
		<updated>2025-06-04T12:34:54Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: /* ToDos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Cockpit...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ToDos ==&lt;br /&gt;
[[Wareneingang - Hochzeit der Geräte]]&lt;br /&gt;
&lt;br /&gt;
== Zugriff ==&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
Das Produktive Cockpit ist über https://cockpit.tisento.com&amp;lt;nowiki/&amp;gt;erreichbar.&lt;br /&gt;
&lt;br /&gt;
Weiter gibt es dazu noch ein Test-Cockpit https://cockpit-test.tisento.com, sowie ein Dev-Cockpit https://cockpit-dev.tisento.com.&lt;br /&gt;
&lt;br /&gt;
=== Neue Nutzer ===&lt;br /&gt;
Zugangsdaten dazu können entweder von [mailto:koester@tisento.com Jochen Köster] oder [mailto:christian.meyer@tisento.com Christian Meyer] erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Die Rechte sind über diverse Managergruppen geregelt, auch diese können von [mailto:koester@tisento.com Jochen Köster] oder [mailto:christian.meyer@tisento.com Christian Meyer] erstellt oder zugewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== Problembehebung / Einschränkungen ==&lt;br /&gt;
Als erstes Prüfen, ob die entsprechenden [https://monitor.tisento.com Monitore] laufen, entsprechend dem Ergebnis handeln:&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;co-orga LX Toolbox&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Bestimmte Tasks (bspw. Erstellung der Lieferscheine aus den Zeiterfassungen) gehen nicht. Cockpit funktioniert davon abgesehen weiterhin.Problembehandliung:&lt;br /&gt;
&lt;br /&gt;
Auf den tisento-erp (172.22.0.219) anmelden. LX Toolbox starten (Service).&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;co-orga LX Toolbox PROD-Token&amp;quot; down oder &amp;quot;co-orga LX Toolbox TEST-Token&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung: ====&lt;br /&gt;
Bestimmte Tasks (bspw. Erstellung der Lieferscheine aus den Zeiterfassungen) gehen nicht. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung: ====&lt;br /&gt;
Wenn einer der beiden Token down ist, dann kann es folgende Gründe und Lösungen geben&lt;br /&gt;
&lt;br /&gt;
# co-orga LX Toolbox down ist down, dann siehe oben&lt;br /&gt;
# Der Supervisor hat nicht das richtige Passwort (wurde evtl. zum Testen auf &amp;quot;&amp;quot; geändert, dann zurück ändern!)&lt;br /&gt;
# Der Supervisor hatte zum Testen ein anderes Paswort, das wurde zurück gesetzt. Jetzt muss der Supervisor sich bei den entsprechenden Firmen in Lexware anmelden, danach sind die Token wieder aktiv.&lt;br /&gt;
# Der Token wurde gelöscht, da bspw. LX Toolbox abgestürzt ist. Bei der [http://172.22.0.219:5000/ LX Toolbox] mit dem Supervisor in der entsprechenden Firma anmelden und einen neuen Zugriffstoken setzen. Dieser ist entweder im [https://monitor.tisento.com Monitor] oder auch im [http://keepass.tisento.com/ Passbolt] zu finden&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Lexware: Fehler nicht gedruckt&amp;quot; down oder Belege können nicht gefunden werden ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Bestimmte Tasks (bspw. Rechnungsversand) gehen nicht. Dokument ist in ELO nicht vorhanden. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung ====&lt;br /&gt;
Es scheint, als wäre in Lexware eine Datei als gedruckt markiert aber nicht gedruckt worden.&lt;br /&gt;
&lt;br /&gt;
Folgendes SQL-Statement ausführen, dann werden die entsprechenden Dokumente angezeigt:&lt;br /&gt;
 SELECT &lt;br /&gt;
     fka.`AuftragsNr`,fka.`AuftragsKennung`, fkk.lID &lt;br /&gt;
 FROM &lt;br /&gt;
     `FK_Auftrag` fka &lt;br /&gt;
 LEFT JOIN &lt;br /&gt;
     FK_AuftragKontakt fkak ON fkak.lAuftragID = fka.SheetNr ANDfkak.lID &amp;gt; 20000 &lt;br /&gt;
 LEFT JOIN &lt;br /&gt;
     FK_Kontakt fkk ON fkk.lID = fkak.lKontaktID and fkk.System_created &amp;gt; &#039;2025-01-01&#039; &lt;br /&gt;
 WHERE &lt;br /&gt;
     fka.bStatus_gedruckt = 1 AND &lt;br /&gt;
     fkk.lID is NULL AND&lt;br /&gt;
     Datum_erfassung &amp;gt; &#039;2025-01-01&#039; &lt;br /&gt;
 ORDER BY &lt;br /&gt;
     fka.SheetNr DESC&lt;br /&gt;
Diese Dokumente noch einmal drucken, dann geht der Monitor wieder auf &amp;quot;Up&amp;quot;. Evtl. kann dafür noch eine Task erstellt werden.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;co-orga LX datawarehouse&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Es sind keine aktuellen Lexware-Daten im Cockpit. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung ====&lt;br /&gt;
Auf den tisento-erp (172.22.0.219) anmelden. LX DataWarehouse starten (Service).&lt;br /&gt;
&lt;br /&gt;
=== Docker Container &amp;quot;... down&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Der jeweilige Service funktioniert nicht richtig. Im Monitor schauen welche Gruppe (bspw. Cockpit-TEST, Cockpit-PROD, ELO-TEST, ...) betroffen ist.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung ====&lt;br /&gt;
Einer der Services ist down, dann über [https://portainer.tisento.com Portainer] den entsprechenden Container neustarten. Zugangsdaten sind im [http://keepass.tisento.com/ Passbolt] abgespeichert.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Zebra ...&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Der jeweilige Drucker funktioniert nicht, es können keine Etiketten gedruckt werden. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung ====&lt;br /&gt;
In Meschede oder bei Uli anrufen, dass der jeweile Zebra einmal gestartet wird.&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Cockpit&amp;diff=311</id>
		<title>Cockpit</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Cockpit&amp;diff=311"/>
		<updated>2025-06-04T12:17:54Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Cockpit...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ToDos ==&lt;br /&gt;
[[Wareneingang / Hochzeit der Geräte]]&lt;br /&gt;
&lt;br /&gt;
== Zugriff ==&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
Das Produktive Cockpit ist über https://cockpit.tisento.com&amp;lt;nowiki/&amp;gt;erreichbar.&lt;br /&gt;
&lt;br /&gt;
Weiter gibt es dazu noch ein Test-Cockpit https://cockpit-test.tisento.com, sowie ein Dev-Cockpit https://cockpit-dev.tisento.com.&lt;br /&gt;
&lt;br /&gt;
=== Neue Nutzer ===&lt;br /&gt;
Zugangsdaten dazu können entweder von [mailto:koester@tisento.com Jochen Köster] oder [mailto:christian.meyer@tisento.com Christian Meyer] erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Die Rechte sind über diverse Managergruppen geregelt, auch diese können von [mailto:koester@tisento.com Jochen Köster] oder [mailto:christian.meyer@tisento.com Christian Meyer] erstellt oder zugewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== Problembehebung / Einschränkungen ==&lt;br /&gt;
Als erstes Prüfen, ob die entsprechenden [https://monitor.tisento.com Monitore] laufen, entsprechend dem Ergebnis handeln:&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;co-orga LX Toolbox&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Bestimmte Tasks (bspw. Erstellung der Lieferscheine aus den Zeiterfassungen) gehen nicht. Cockpit funktioniert davon abgesehen weiterhin.Problembehandliung:&lt;br /&gt;
&lt;br /&gt;
Auf den tisento-erp (172.22.0.219) anmelden. LX Toolbox starten (Service).&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;co-orga LX Toolbox PROD-Token&amp;quot; down oder &amp;quot;co-orga LX Toolbox TEST-Token&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung: ====&lt;br /&gt;
Bestimmte Tasks (bspw. Erstellung der Lieferscheine aus den Zeiterfassungen) gehen nicht. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung: ====&lt;br /&gt;
Wenn einer der beiden Token down ist, dann kann es folgende Gründe und Lösungen geben&lt;br /&gt;
&lt;br /&gt;
# co-orga LX Toolbox down ist down, dann siehe oben&lt;br /&gt;
# Der Supervisor hat nicht das richtige Passwort (wurde evtl. zum Testen auf &amp;quot;&amp;quot; geändert, dann zurück ändern!)&lt;br /&gt;
# Der Supervisor hatte zum Testen ein anderes Paswort, das wurde zurück gesetzt. Jetzt muss der Supervisor sich bei den entsprechenden Firmen in Lexware anmelden, danach sind die Token wieder aktiv.&lt;br /&gt;
# Der Token wurde gelöscht, da bspw. LX Toolbox abgestürzt ist. Bei der [http://172.22.0.219:5000/ LX Toolbox] mit dem Supervisor in der entsprechenden Firma anmelden und einen neuen Zugriffstoken setzen. Dieser ist entweder im [https://monitor.tisento.com Monitor] oder auch im [http://keepass.tisento.com/ Passbolt] zu finden&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Lexware: Fehler nicht gedruckt&amp;quot; down oder Belege können nicht gefunden werden ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Bestimmte Tasks (bspw. Rechnungsversand) gehen nicht. Dokument ist in ELO nicht vorhanden. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung ====&lt;br /&gt;
Es scheint, als wäre in Lexware eine Datei als gedruckt markiert aber nicht gedruckt worden.&lt;br /&gt;
&lt;br /&gt;
Folgendes SQL-Statement ausführen, dann werden die entsprechenden Dokumente angezeigt:&lt;br /&gt;
 SELECT &lt;br /&gt;
     fka.`AuftragsNr`,fka.`AuftragsKennung`, fkk.lID &lt;br /&gt;
 FROM &lt;br /&gt;
     `FK_Auftrag` fka &lt;br /&gt;
 LEFT JOIN &lt;br /&gt;
     FK_AuftragKontakt fkak ON fkak.lAuftragID = fka.SheetNr ANDfkak.lID &amp;gt; 20000 &lt;br /&gt;
 LEFT JOIN &lt;br /&gt;
     FK_Kontakt fkk ON fkk.lID = fkak.lKontaktID and fkk.System_created &amp;gt; &#039;2025-01-01&#039; &lt;br /&gt;
 WHERE &lt;br /&gt;
     fka.bStatus_gedruckt = 1 AND &lt;br /&gt;
     fkk.lID is NULL AND&lt;br /&gt;
     Datum_erfassung &amp;gt; &#039;2025-01-01&#039; &lt;br /&gt;
 ORDER BY &lt;br /&gt;
     fka.SheetNr DESC&lt;br /&gt;
Diese Dokumente noch einmal drucken, dann geht der Monitor wieder auf &amp;quot;Up&amp;quot;. Evtl. kann dafür noch eine Task erstellt werden.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;co-orga LX datawarehouse&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Es sind keine aktuellen Lexware-Daten im Cockpit. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung ====&lt;br /&gt;
Auf den tisento-erp (172.22.0.219) anmelden. LX DataWarehouse starten (Service).&lt;br /&gt;
&lt;br /&gt;
=== Docker Container &amp;quot;... down&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Der jeweilige Service funktioniert nicht richtig. Im Monitor schauen welche Gruppe (bspw. Cockpit-TEST, Cockpit-PROD, ELO-TEST, ...) betroffen ist.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung ====&lt;br /&gt;
Einer der Services ist down, dann über [https://portainer.tisento.com Portainer] den entsprechenden Container neustarten. Zugangsdaten sind im [http://keepass.tisento.com/ Passbolt] abgespeichert.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Zebra ...&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Der jeweilige Drucker funktioniert nicht, es können keine Etiketten gedruckt werden. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung ====&lt;br /&gt;
In Meschede oder bei Uli anrufen, dass der jeweile Zebra einmal gestartet wird.&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=310</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=310"/>
		<updated>2025-05-12T12:05:21Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: /* Zugriff Dienste */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Zugriff==&lt;br /&gt;
Der Docker-Server ist unter der 172.22.0.224 erreichbar.&lt;br /&gt;
&lt;br /&gt;
Der neue Docker-Server wird unter 172.22.0.223 erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
Der Port, Nutzername und auch das Passwort sind im [http://keepass.tisento.com Passbolt] gespeichert.&lt;br /&gt;
&lt;br /&gt;
== Zugriff Dienste ==&lt;br /&gt;
Nachfolgend eine Liste der Dienste die auf dem Docker laufen&lt;br /&gt;
&lt;br /&gt;
* [https://cockpit.tisento.com Cockpit-PROD] &lt;br /&gt;
* [https://cockpit-test.tisento.com Cockpit-TEST]&lt;br /&gt;
* [https://cockpit-dev.tisento.com Cockpit-DEV]&lt;br /&gt;
* [https://monitor.tisento.com UpTime Kuma (Monitor)]&lt;br /&gt;
* [https://portainer.tisento.com Portainer (Docker Verwaltung)]&lt;br /&gt;
* FTP&lt;br /&gt;
* [https://service.tisento.com Ticketsystem / Otobo]&lt;br /&gt;
* NGINX &amp;amp; Certbot (noch nicht als Docker-Container)&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* [https://gitea.tisento.com Git (gitea)] noch nicht installiert&lt;br /&gt;
&lt;br /&gt;
== Neuinstallation ==&lt;br /&gt;
Kopie der &amp;quot;tisento.conf&amp;quot;-Datei in den Ordner: &amp;quot;/etc/ssh/sshd_config.d/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hinzufügen des 9022-Ports zur UFW mit:&lt;br /&gt;
 sudo ufw allow 9022/tcp&lt;br /&gt;
Einschalten der ufw mit&lt;br /&gt;
 sudo ufw enable&lt;br /&gt;
&lt;br /&gt;
=== Installation vom Docker (https://docs.docker.com/engine/install/ubuntu/): ===&lt;br /&gt;
Install using the &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository&lt;br /&gt;
&lt;br /&gt;
Before you install Docker Engine for the first time on a new host machine, you need to set up the Docker &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository. Afterward, you can install and update Docker from the repository.&lt;br /&gt;
&lt;br /&gt;
* Set up Docker&#039;s &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; repository.&lt;br /&gt;
&lt;br /&gt;
 # Add Docker&#039;s official GPG key:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu/gpg&amp;lt;/nowiki&amp;gt; -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
 &lt;br /&gt;
 # Add the repository to Apt sources:&lt;br /&gt;
 echo \&lt;br /&gt;
 &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] &amp;lt;nowiki&amp;gt;https://download.docker.com/linux/ubuntu&amp;lt;/nowiki&amp;gt; \&lt;br /&gt;
 $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;${UBUNTU_CODENAME:-$VERSION_CODENAME}&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
* Install the Docker packages.&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
* Verify that the installation is successful by running the &amp;lt;code&amp;gt;hello-world&amp;lt;/code&amp;gt; image:&lt;br /&gt;
&lt;br /&gt;
 sudo docker run hello-world&lt;br /&gt;
&lt;br /&gt;
=== Installation der Sonstigen Softare (s.u.) ===&lt;br /&gt;
via &amp;quot;sudo apt install ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Kopie des Docker-Repos ===&lt;br /&gt;
Kopie des Repos in &amp;quot;/srv/tisento-docker&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Dort muss als erstes &amp;quot;portainer gestartet und wiederhergestellt werden.&lt;br /&gt;
&lt;br /&gt;
Danach wird gitea gestartet und wiederhergestellt. (Damit die repos gezogen werden können)&lt;br /&gt;
&lt;br /&gt;
Danach nach und nach die anderen Services wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
=== Einstellung UFW ===&lt;br /&gt;
 sudo ufw allow 80/tcp&lt;br /&gt;
&lt;br /&gt;
 sudo ufw allow 443/tcp&lt;br /&gt;
&lt;br /&gt;
== Sonstige Software (nicht vollständig, muss überarbeitet werden!) ==&lt;br /&gt;
&lt;br /&gt;
* Docker (s.o.)&lt;br /&gt;
* git&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* cron (Wiederkehrende Aufgaben, bspw. Backups)&lt;br /&gt;
* ncdu (Speicherbelegung)&lt;br /&gt;
* nmon (Monitoring)&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Docker-Dienste ==&lt;br /&gt;
Die meisten Dienste sind mit ihren Daten und Definitionen unter /var/html/dienst.tisento.com erreichbar.&lt;br /&gt;
&lt;br /&gt;
Dabei sind in dem Ordner /var/html/dienst.tisento.com/.docker die Definitionen der Docker-Container.&lt;br /&gt;
&lt;br /&gt;
In dem Ordner /var/html/dienst.tisento.com/backups sind die jeweiligen Backups der Daten.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F2)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst. &lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit.tisento.com/backups gespeichert. Das tägliche Backup wird nach 30 Tagen gelöscht, die monatlichen nach einem Jahr und die jährlichen Backups nie.&lt;br /&gt;
&lt;br /&gt;
EVTL. NOCH MONITOR HINZUFÜGEN DER BACKUP TÄGLICH PRÜFT!&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Mounting der Laufwerke via:&lt;br /&gt;
 sudo mount.cifs -v //172.22.0.245/cockpit/_Daten /srv/tisento-docker/cockpit-prod/html/_Daten/ --verbose -o user=us,password=pw,domain=TISENTOSAN2,vers=2.0,uid=33,gid=33&lt;br /&gt;
Die ID 33 muss ggfs. angepasst werden um&lt;br /&gt;
 id www-data&lt;br /&gt;
damit die Rechte passen.&lt;br /&gt;
&lt;br /&gt;
Es müssen auch die Laufwerke _Cockpit_Daten und _Cockpit_Verwaltung gemounted werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-test.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-test.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-dev.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-dev.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Überwachung der diversen Docker-Container, als auch für diverse Systeme da (z.B. HEALTH, also CPU, RAM, HDD von diversen Servern).&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/monitor.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Verwaltung der verschiedenen Docker-Container notwendig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/portainer.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Dieses Tool ist für die FTP-Verbindung zu den jeweiligen HTML-Verzeichnissen von [https://cockpit.tisento.com cockpit.tisento.com], [https://cockpit-test.tisento.com cockpit-test.tisento.com] und [https://cockpit-dev.tisento.com cockpit-dev.tisento.com] zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/ftp.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Erstellung und Verwaltung der Tickets zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Fehlerbehebung ====&lt;br /&gt;
Wenn bspw. die Festplatte vom Docker-Server vollgelaufen ist, dann müssen die Dienste einmal neugestartet werden.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann es sein, dass man die Caches mit folgenden Befehlen (im Daemon) löscht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Cache::Delete&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Config::Rebuild --cleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Loader::CacheCleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NGINX (noch nicht als Docker-Container) ===&lt;br /&gt;
nginx ist ein Reverse-Proxy, damit die verschiedenen Domains den richtigen Weg zu den Services finden.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Backups ==&lt;br /&gt;
Jeder Service hat ein eigenes Backup-System.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden gemeinsam per FTP auf den Server XY übertragen.&lt;br /&gt;
&lt;br /&gt;
Dort läuft ein kleiner PHP-Cronjob, der diese Backups in ein anderes Verzeichnis überträgt.&lt;br /&gt;
&lt;br /&gt;
Diese Dateien werden für eine Wiederherstellung benötigt!&lt;br /&gt;
&lt;br /&gt;
Für den Start des vollständigen Backups wird ein neuer Server benötigt, dort müssen folgende Schritte in der Reihenfolge ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Installation von Docker&lt;br /&gt;
&lt;br /&gt;
Erstellung des nginx Docker-Service&lt;br /&gt;
&lt;br /&gt;
Erstellung des Portainer Docker-Service&lt;br /&gt;
&lt;br /&gt;
Erstellung des gitea-Docker-Service mit Portainer.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung von gitea mithilfe der obigen Erklärung.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der restlichen Docker-Services mithilfe der Docker-Compose-Dateien in gitea. Alternativ sind die Docker-Compose-Dateien auch in den Backup gespeichert!&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der einzelnen Daten der Services mithilfe der obigen Erklärungen.&lt;br /&gt;
&lt;br /&gt;
== Neuen Docker-Dienst anlegen ==&lt;br /&gt;
Hier wird davon ausgegangen, dass es sich um einen Dockerdienst handelt, der auf einem Port wie 80 oder 443 angesprochen werden soll. Wir gehen davon aus, dass das Portmapping &amp;quot;127.0.0.1:10443:443&amp;quot; ist, also der Container den Port 10443 auf das lokale Interface öffnet und mit dem Container-Port 10443 mappt. Weiter gehen wir davon aus, dass der Service über die Subdomain &amp;quot;&#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&amp;quot; über HTTP und HTTPS erreichbar sein soll. HTTP wird auf HTTPS weitergeleitet.&lt;br /&gt;
&lt;br /&gt;
# Erstellung der Sub-Domain &#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&lt;br /&gt;
## [mailto:puetter@tisento.com Torsten] diese Sub-Domain dem Server zuweisen lassen.&lt;br /&gt;
## Für das SSL-Zertifikat muss die Domain öffentlich erreichbar sein!&lt;br /&gt;
# Erstellung der Konfiguration im nginx Service&lt;br /&gt;
## Erstellung einer Datei sub.tisento.com.conf in dem Pfad /var/www/nginx.tisento.com/nginx/...&lt;br /&gt;
## Hinzufügen von dem Inhalt:&amp;lt;blockquote&amp;gt;adasdsa&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
## Prüfung ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neu laden&lt;br /&gt;
## Hinzufügen eines Zertifikates mit dem Befehl:&lt;br /&gt;
### asdasd&lt;br /&gt;
## Hinzufügen der SSL Konfuguration zur Datei (sub.tisento.com.conf)&lt;br /&gt;
## Prüfen ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neuladen&lt;br /&gt;
# Prüfen der Verbindung&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=309</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=309"/>
		<updated>2025-05-07T19:40:08Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: Anpassung mounting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Zugriff==&lt;br /&gt;
Der Docker-Server ist unter der 172.22.0.224 erreichbar.&lt;br /&gt;
&lt;br /&gt;
Der neue Docker-Server wird unter 172.22.0.223 erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
Der Port, Nutzername und auch das Passwort sind im [http://keepass.tisento.com Passbolt] gespeichert.&lt;br /&gt;
&lt;br /&gt;
== Zugriff Dienste ==&lt;br /&gt;
Nachfolgend eine Liste der Dienste die auf dem Docker laufen&lt;br /&gt;
&lt;br /&gt;
* [https://cockpit.tisento.com Cockpit-PROD] &lt;br /&gt;
* [https://cockpit-test.tisento.com Cockpit-TEST]&lt;br /&gt;
* [https://cockpit-dev.tisento.com Cockpit-DEV]&lt;br /&gt;
* [https://monitor.tisento.com UpTime Kuma (Monitor)]&lt;br /&gt;
* [https://portainer.tisento.com Portainer (Docker Verwaltung)]&lt;br /&gt;
* FTP&lt;br /&gt;
* [https://service.tisento.com Ticketsystem / Otobo]&lt;br /&gt;
* NGINX &amp;amp; Certbot (noch nicht als Docker-Container)&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* [https://gitea.tisento.com Git (gitea)] noch nicht installiert&lt;br /&gt;
&lt;br /&gt;
== Sonstige Software (nicht vollständig, muss überarbeitet werden!) ==&lt;br /&gt;
&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* cron (Wiederkehrende Aufgaben, bspw. Backups)&lt;br /&gt;
* ncdu (Speicherbelegung)&lt;br /&gt;
* nmon (Monitoring)&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Docker-Dienste ==&lt;br /&gt;
Die meisten Dienste sind mit ihren Daten und Definitionen unter /var/html/dienst.tisento.com erreichbar.&lt;br /&gt;
&lt;br /&gt;
Dabei sind in dem Ordner /var/html/dienst.tisento.com/.docker die Definitionen der Docker-Container.&lt;br /&gt;
&lt;br /&gt;
In dem Ordner /var/html/dienst.tisento.com/backups sind die jeweiligen Backups der Daten.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F2)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst. &lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit.tisento.com/backups gespeichert. Das tägliche Backup wird nach 30 Tagen gelöscht, die monatlichen nach einem Jahr und die jährlichen Backups nie.&lt;br /&gt;
&lt;br /&gt;
EVTL. NOCH MONITOR HINZUFÜGEN DER BACKUP TÄGLICH PRÜFT!&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Mounting der Laufwerke via:&lt;br /&gt;
 sudo mount.cifs -v //172.22.0.245/cockpit/_Daten /srv/tisento-docker/cockpit-prod/html/_Daten/ --verbose -o user=us,password=pw,domain=TISENTOSAN2,vers=2.0,uid=33,gid=33&lt;br /&gt;
Die ID 33 muss ggfs. angepasst werden um&lt;br /&gt;
 id www-data&lt;br /&gt;
damit die Rechte passen.&lt;br /&gt;
&lt;br /&gt;
Es müssen auch die Laufwerke _Cockpit_Daten und _Cockpit_Verwaltung gemounted werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-test.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-test.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-dev.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-dev.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Überwachung der diversen Docker-Container, als auch für diverse Systeme da (z.B. HEALTH, also CPU, RAM, HDD von diversen Servern).&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/monitor.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Verwaltung der verschiedenen Docker-Container notwendig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/portainer.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Dieses Tool ist für die FTP-Verbindung zu den jeweiligen HTML-Verzeichnissen von [https://cockpit.tisento.com cockpit.tisento.com], [https://cockpit-test.tisento.com cockpit-test.tisento.com] und [https://cockpit-dev.tisento.com cockpit-dev.tisento.com] zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/ftp.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Erstellung und Verwaltung der Tickets zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Fehlerbehebung ====&lt;br /&gt;
Wenn bspw. die Festplatte vom Docker-Server vollgelaufen ist, dann müssen die Dienste einmal neugestartet werden.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann es sein, dass man die Caches mit folgenden Befehlen (im Daemon) löscht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Cache::Delete&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Config::Rebuild --cleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Loader::CacheCleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NGINX (noch nicht als Docker-Container) ===&lt;br /&gt;
nginx ist ein Reverse-Proxy, damit die verschiedenen Domains den richtigen Weg zu den Services finden.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Backups ==&lt;br /&gt;
Jeder Service hat ein eigenes Backup-System.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden gemeinsam per FTP auf den Server XY übertragen.&lt;br /&gt;
&lt;br /&gt;
Dort läuft ein kleiner PHP-Cronjob, der diese Backups in ein anderes Verzeichnis überträgt.&lt;br /&gt;
&lt;br /&gt;
Diese Dateien werden für eine Wiederherstellung benötigt!&lt;br /&gt;
&lt;br /&gt;
Für den Start des vollständigen Backups wird ein neuer Server benötigt, dort müssen folgende Schritte in der Reihenfolge ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Installation von Docker&lt;br /&gt;
&lt;br /&gt;
Erstellung des nginx Docker-Service&lt;br /&gt;
&lt;br /&gt;
Erstellung des Portainer Docker-Service&lt;br /&gt;
&lt;br /&gt;
Erstellung des gitea-Docker-Service mit Portainer.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung von gitea mithilfe der obigen Erklärung.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der restlichen Docker-Services mithilfe der Docker-Compose-Dateien in gitea. Alternativ sind die Docker-Compose-Dateien auch in den Backup gespeichert!&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der einzelnen Daten der Services mithilfe der obigen Erklärungen.&lt;br /&gt;
&lt;br /&gt;
== Neuen Docker-Dienst anlegen ==&lt;br /&gt;
Hier wird davon ausgegangen, dass es sich um einen Dockerdienst handelt, der auf einem Port wie 80 oder 443 angesprochen werden soll. Wir gehen davon aus, dass das Portmapping &amp;quot;127.0.0.1:10443:443&amp;quot; ist, also der Container den Port 10443 auf das lokale Interface öffnet und mit dem Container-Port 10443 mappt. Weiter gehen wir davon aus, dass der Service über die Subdomain &amp;quot;&#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&amp;quot; über HTTP und HTTPS erreichbar sein soll. HTTP wird auf HTTPS weitergeleitet.&lt;br /&gt;
&lt;br /&gt;
# Erstellung der Sub-Domain &#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&lt;br /&gt;
## [mailto:puetter@tisento.com Torsten] diese Sub-Domain dem Server zuweisen lassen.&lt;br /&gt;
## Für das SSL-Zertifikat muss die Domain öffentlich erreichbar sein!&lt;br /&gt;
# Erstellung der Konfiguration im nginx Service&lt;br /&gt;
## Erstellung einer Datei sub.tisento.com.conf in dem Pfad /var/www/nginx.tisento.com/nginx/...&lt;br /&gt;
## Hinzufügen von dem Inhalt:&amp;lt;blockquote&amp;gt;adasdsa&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
## Prüfung ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neu laden&lt;br /&gt;
## Hinzufügen eines Zertifikates mit dem Befehl:&lt;br /&gt;
### asdasd&lt;br /&gt;
## Hinzufügen der SSL Konfuguration zur Datei (sub.tisento.com.conf)&lt;br /&gt;
## Prüfen ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neuladen&lt;br /&gt;
# Prüfen der Verbindung&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=308</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=308"/>
		<updated>2025-05-07T09:35:43Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Zugriff==&lt;br /&gt;
Der Docker-Server ist unter der 172.22.0.224 erreichbar.&lt;br /&gt;
&lt;br /&gt;
Der neue Docker-Server wird unter 172.22.0.223 erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
Der Port, Nutzername und auch das Passwort sind im [http://keepass.tisento.com Passbolt] gespeichert.&lt;br /&gt;
&lt;br /&gt;
== Zugriff Dienste ==&lt;br /&gt;
Nachfolgend eine Liste der Dienste die auf dem Docker laufen&lt;br /&gt;
&lt;br /&gt;
* [https://cockpit.tisento.com Cockpit-PROD] &lt;br /&gt;
* [https://cockpit-test.tisento.com Cockpit-TEST]&lt;br /&gt;
* [https://cockpit-dev.tisento.com Cockpit-DEV]&lt;br /&gt;
* [https://monitor.tisento.com UpTime Kuma (Monitor)]&lt;br /&gt;
* [https://portainer.tisento.com Portainer (Docker Verwaltung)]&lt;br /&gt;
* FTP&lt;br /&gt;
* [https://service.tisento.com Ticketsystem / Otobo]&lt;br /&gt;
* NGINX &amp;amp; Certbot (noch nicht als Docker-Container)&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* [https://gitea.tisento.com Git (gitea)] noch nicht installiert&lt;br /&gt;
&lt;br /&gt;
== Sonstige Software (nicht vollständig, muss überarbeitet werden!) ==&lt;br /&gt;
&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* cron (Wiederkehrende Aufgaben, bspw. Backups)&lt;br /&gt;
* ncdu (Speicherbelegung)&lt;br /&gt;
* nmon (Monitoring)&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Docker-Dienste ==&lt;br /&gt;
Die meisten Dienste sind mit ihren Daten und Definitionen unter /var/html/dienst.tisento.com erreichbar.&lt;br /&gt;
&lt;br /&gt;
Dabei sind in dem Ordner /var/html/dienst.tisento.com/.docker die Definitionen der Docker-Container.&lt;br /&gt;
&lt;br /&gt;
In dem Ordner /var/html/dienst.tisento.com/backups sind die jeweiligen Backups der Daten.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F2)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst. &lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit.tisento.com/backups gespeichert. Das tägliche Backup wird nach 30 Tagen gelöscht, die monatlichen nach einem Jahr und die jährlichen Backups nie.&lt;br /&gt;
&lt;br /&gt;
EVTL. NOCH MONITOR HINZUFÜGEN DER BACKUP TÄGLICH PRÜFT!&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-test.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-test.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-dev.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-dev.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Überwachung der diversen Docker-Container, als auch für diverse Systeme da (z.B. HEALTH, also CPU, RAM, HDD von diversen Servern).&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/monitor.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Verwaltung der verschiedenen Docker-Container notwendig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/portainer.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Dieses Tool ist für die FTP-Verbindung zu den jeweiligen HTML-Verzeichnissen von [https://cockpit.tisento.com cockpit.tisento.com], [https://cockpit-test.tisento.com cockpit-test.tisento.com] und [https://cockpit-dev.tisento.com cockpit-dev.tisento.com] zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/ftp.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Erstellung und Verwaltung der Tickets zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Fehlerbehebung ====&lt;br /&gt;
Wenn bspw. die Festplatte vom Docker-Server vollgelaufen ist, dann müssen die Dienste einmal neugestartet werden.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann es sein, dass man die Caches mit folgenden Befehlen (im Daemon) löscht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Cache::Delete&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Config::Rebuild --cleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bin/otobo.Console.pl Maint::Loader::CacheCleanup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NGINX (noch nicht als Docker-Container) ===&lt;br /&gt;
nginx ist ein Reverse-Proxy, damit die verschiedenen Domains den richtigen Weg zu den Services finden.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Backups ==&lt;br /&gt;
Jeder Service hat ein eigenes Backup-System.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden gemeinsam per FTP auf den Server XY übertragen.&lt;br /&gt;
&lt;br /&gt;
Dort läuft ein kleiner PHP-Cronjob, der diese Backups in ein anderes Verzeichnis überträgt.&lt;br /&gt;
&lt;br /&gt;
Diese Dateien werden für eine Wiederherstellung benötigt!&lt;br /&gt;
&lt;br /&gt;
Für den Start des vollständigen Backups wird ein neuer Server benötigt, dort müssen folgende Schritte in der Reihenfolge ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Installation von Docker&lt;br /&gt;
&lt;br /&gt;
Erstellung des nginx Docker-Service&lt;br /&gt;
&lt;br /&gt;
Erstellung des Portainer Docker-Service&lt;br /&gt;
&lt;br /&gt;
Erstellung des gitea-Docker-Service mit Portainer.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung von gitea mithilfe der obigen Erklärung.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der restlichen Docker-Services mithilfe der Docker-Compose-Dateien in gitea. Alternativ sind die Docker-Compose-Dateien auch in den Backup gespeichert!&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der einzelnen Daten der Services mithilfe der obigen Erklärungen.&lt;br /&gt;
&lt;br /&gt;
== Neuen Docker-Dienst anlegen ==&lt;br /&gt;
Hier wird davon ausgegangen, dass es sich um einen Dockerdienst handelt, der auf einem Port wie 80 oder 443 angesprochen werden soll. Wir gehen davon aus, dass das Portmapping &amp;quot;127.0.0.1:10443:443&amp;quot; ist, also der Container den Port 10443 auf das lokale Interface öffnet und mit dem Container-Port 10443 mappt. Weiter gehen wir davon aus, dass der Service über die Subdomain &amp;quot;&#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&amp;quot; über HTTP und HTTPS erreichbar sein soll. HTTP wird auf HTTPS weitergeleitet.&lt;br /&gt;
&lt;br /&gt;
# Erstellung der Sub-Domain &#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&lt;br /&gt;
## [mailto:puetter@tisento.com Torsten] diese Sub-Domain dem Server zuweisen lassen.&lt;br /&gt;
## Für das SSL-Zertifikat muss die Domain öffentlich erreichbar sein!&lt;br /&gt;
# Erstellung der Konfiguration im nginx Service&lt;br /&gt;
## Erstellung einer Datei sub.tisento.com.conf in dem Pfad /var/www/nginx.tisento.com/nginx/...&lt;br /&gt;
## Hinzufügen von dem Inhalt:&amp;lt;blockquote&amp;gt;adasdsa&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
## Prüfung ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neu laden&lt;br /&gt;
## Hinzufügen eines Zertifikates mit dem Befehl:&lt;br /&gt;
### asdasd&lt;br /&gt;
## Hinzufügen der SSL Konfuguration zur Datei (sub.tisento.com.conf)&lt;br /&gt;
## Prüfen ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neuladen&lt;br /&gt;
# Prüfen der Verbindung&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=307</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=307"/>
		<updated>2025-05-07T08:43:52Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Zugriff==&lt;br /&gt;
Der Docker-Server ist unter der 172.22.0.224 erreichbar.&lt;br /&gt;
&lt;br /&gt;
Der neue Docker-Server wird unter 172.22.0.223 erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
Der Port, Nutzername und auch das Passwort sind im [http://keepass.tisento.com Passbolt] gespeichert.&lt;br /&gt;
&lt;br /&gt;
== Zugriff Dienste ==&lt;br /&gt;
Nachfolgend eine Liste der Dienste die auf dem Docker laufen&lt;br /&gt;
&lt;br /&gt;
* [https://cockpit.tisento.com Cockpit-PROD] &lt;br /&gt;
* [https://cockpit-test.tisento.com Cockpit-TEST]&lt;br /&gt;
* [https://cockpit-dev.tisento.com Cockpit-DEV]&lt;br /&gt;
* [https://monitor.tisento.com UpTime Kuma (Monitor)]&lt;br /&gt;
* [https://portainer.tisento.com Portainer (Docker Verwaltung)]&lt;br /&gt;
* FTP&lt;br /&gt;
* [https://service.tisento.com Ticketsystem / Otobo]&lt;br /&gt;
* NGINX &amp;amp; Certbot (noch nicht als Docker-Container)&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* [https://gitea.tisento.com Git (gitea)] noch nicht installiert&lt;br /&gt;
&lt;br /&gt;
== Sonstige Software (nicht vollständig, muss überarbeitet werden!) ==&lt;br /&gt;
&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* cron (Wiederkehrende Aufgaben, bspw. Backups)&lt;br /&gt;
* ncdu (Speicherbelegung)&lt;br /&gt;
* nmon (Monitoring)&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Docker-Dienste ==&lt;br /&gt;
Die meisten Dienste sind mit ihren Daten und Definitionen unter /var/html/dienst.tisento.com erreichbar.&lt;br /&gt;
&lt;br /&gt;
Dabei sind in dem Ordner /var/html/dienst.tisento.com/.docker die Definitionen der Docker-Container.&lt;br /&gt;
&lt;br /&gt;
In dem Ordner /var/html/dienst.tisento.com/backups sind die jeweiligen Backups der Daten.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F2)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst. &lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit.tisento.com/backups gespeichert. Das tägliche Backup wird nach 30 Tagen gelöscht, die monatlichen nach einem Jahr und die jährlichen Backups nie.&lt;br /&gt;
&lt;br /&gt;
EVTL. NOCH MONITOR HINZUFÜGEN DER BACKUP TÄGLICH PRÜFT!&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-test.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-test.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-dev.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-dev.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Überwachung der diversen Docker-Container, als auch für diverse Systeme da (z.B. HEALTH, also CPU, RAM, HDD von diversen Servern).&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/monitor.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Verwaltung der verschiedenen Docker-Container notwendig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/portainer.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Dieses Tool ist für die FTP-Verbindung zu den jeweiligen HTML-Verzeichnissen von [https://cockpit.tisento.com cockpit.tisento.com], [https://cockpit-test.tisento.com cockpit-test.tisento.com] und [https://cockpit-dev.tisento.com cockpit-dev.tisento.com] zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/ftp.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Erstellung und Verwaltung der Tickets zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== NGINX (noch nicht als Docker-Container) ===&lt;br /&gt;
nginx ist ein Reverse-Proxy, damit die verschiedenen Domains den richtigen Weg zu den Services finden.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) ([https://gitea.tisento.com gitea.tisento.com]) ===&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Backups ==&lt;br /&gt;
Jeder Service hat ein eigenes Backup-System.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden gemeinsam per FTP auf den Server XY übertragen.&lt;br /&gt;
&lt;br /&gt;
Dort läuft ein kleiner PHP-Cronjob, der diese Backups in ein anderes Verzeichnis überträgt.&lt;br /&gt;
&lt;br /&gt;
Diese Dateien werden für eine Wiederherstellung benötigt!&lt;br /&gt;
&lt;br /&gt;
Für den Start des vollständigen Backups wird ein neuer Server benötigt, dort müssen folgende Schritte in der Reihenfolge ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Installation von Docker&lt;br /&gt;
&lt;br /&gt;
Erstellung des nginx Docker-Service&lt;br /&gt;
&lt;br /&gt;
Erstellung des Portainer Docker-Service&lt;br /&gt;
&lt;br /&gt;
Erstellung des gitea-Docker-Service mit Portainer.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung von gitea mithilfe der obigen Erklärung.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der restlichen Docker-Services mithilfe der Docker-Compose-Dateien in gitea. Alternativ sind die Docker-Compose-Dateien auch in den Backup gespeichert!&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der einzelnen Daten der Services mithilfe der obigen Erklärungen.&lt;br /&gt;
&lt;br /&gt;
== Neuen Docker-Dienst anlegen ==&lt;br /&gt;
Hier wird davon ausgegangen, dass es sich um einen Dockerdienst handelt, der auf einem Port wie 80 oder 443 angesprochen werden soll. Wir gehen davon aus, dass das Portmapping &amp;quot;127.0.0.1:10443:443&amp;quot; ist, also der Container den Port 10443 auf das lokale Interface öffnet und mit dem Container-Port 10443 mappt. Weiter gehen wir davon aus, dass der Service über die Subdomain &amp;quot;&#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&amp;quot; über HTTP und HTTPS erreichbar sein soll. HTTP wird auf HTTPS weitergeleitet.&lt;br /&gt;
&lt;br /&gt;
# Erstellung der Sub-Domain &#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&lt;br /&gt;
## [mailto:puetter@tisento.com Torsten] diese Sub-Domain dem Server zuweisen lassen.&lt;br /&gt;
## Für das SSL-Zertifikat muss die Domain öffentlich erreichbar sein!&lt;br /&gt;
# Erstellung der Konfiguration im nginx Service&lt;br /&gt;
## Erstellung einer Datei sub.tisento.com.conf in dem Pfad /var/www/nginx.tisento.com/nginx/...&lt;br /&gt;
## Hinzufügen von dem Inhalt:&amp;lt;blockquote&amp;gt;adasdsa&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
## Prüfung ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neu laden&lt;br /&gt;
## Hinzufügen eines Zertifikates mit dem Befehl:&lt;br /&gt;
### asdasd&lt;br /&gt;
## Hinzufügen der SSL Konfuguration zur Datei (sub.tisento.com.conf)&lt;br /&gt;
## Prüfen ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neuladen&lt;br /&gt;
# Prüfen der Verbindung&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=306</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=306"/>
		<updated>2025-04-16T16:22:58Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: Start Erläuterung Backups&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Zugriff==&lt;br /&gt;
Der Docker-Server ist unter der 172.22.0.224 erreichbar.&lt;br /&gt;
&lt;br /&gt;
Der neue Docker-Server wird unter 172.22.0.223 erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
Der Port, Nutzername und auch das Passwort sind im [http://keepass.tisento.com Passbolt] gespeichert.&lt;br /&gt;
&lt;br /&gt;
== Zugriff Dienste ==&lt;br /&gt;
Nachfolgend eine Liste der Dienste die auf dem Docker laufen&lt;br /&gt;
&lt;br /&gt;
* [https://cockpit.tisento.com Cockpit-PROD] &lt;br /&gt;
* [https://cockpit-test.tisento.com Cockpit-TEST]&lt;br /&gt;
* [https://cockpit-dev.tisento.com Cockpit-DEV]&lt;br /&gt;
* [https://monitor.tisento.com UpTime Kuma (Monitor)]&lt;br /&gt;
* [https://portainer.tisento.com Portainer (Docker Verwaltung)]&lt;br /&gt;
* FTP&lt;br /&gt;
* [https://service.tisento.com Ticketsystem / Otobo]&lt;br /&gt;
* NGINX &amp;amp; Certbot (noch nicht als Docker-Container)&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* Git (gitea) noch nicht installiert&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Docker-Dienste ==&lt;br /&gt;
Die meisten Dienste sind mit ihren Daten und Definitionen unter /var/html/dienst.tisento.com erreichbar.&lt;br /&gt;
&lt;br /&gt;
Dabei sind in dem Ordner /var/html/dienst.tisento.com/.docker die Definitionen der Docker-Container.&lt;br /&gt;
&lt;br /&gt;
In dem Ordner /var/html/dienst.tisento.com/backups sind die jeweiligen Backups der Daten.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F2)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst. &lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit.tisento.com/backups gespeichert. Das tägliche Backup wird nach 30 Tagen gelöscht, die monatlichen nach einem Jahr und die jährlichen Backups nie.&lt;br /&gt;
&lt;br /&gt;
EVTL. NOCH MONITOR HINZUFÜGEN DER BACKUP TÄGLICH PRÜFT!&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-test.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-test.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-dev.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-dev.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Überwachung der diversen Docker-Container, als auch für diverse Systeme da (z.B. HEALTH, also CPU, RAM, HDD von diversen Servern).&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/monitor.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Verwaltung der verschiedenen Docker-Container notwendig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/portainer.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Dieses Tool ist für die FTP-Verbindung zu den jeweiligen HTML-Verzeichnissen von [https://cockpit.tisento.com cockpit.tisento.com], [https://cockpit-test.tisento.com cockpit-test.tisento.com] und [https://cockpit-dev.tisento.com cockpit-dev.tisento.com] zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/ftp.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Erstellung und Verwaltung der Tickets zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== NGINX (noch nicht als Docker-Container) ===&lt;br /&gt;
nginx ist ein Reverse-Proxy, damit die verschiedenen Domains den richtigen Weg zu den Services finden.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) noch nicht installiert ===&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Backups ==&lt;br /&gt;
Jeder Service hat ein eigenes Backup-System.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden gemeinsam per FTP auf den Server XY übertragen.&lt;br /&gt;
&lt;br /&gt;
Dort läuft ein kleiner PHP-Cronjob, der diese Backups in ein anderes Verzeichnis überträgt.&lt;br /&gt;
&lt;br /&gt;
Diese Dateien werden für eine Wiederherstellung benötigt!&lt;br /&gt;
&lt;br /&gt;
Für den Start des vollständigen Backups wird ein neuer Server benötigt, dort müssen folgende Schritte in der Reihenfolge ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Installation von Docker&lt;br /&gt;
&lt;br /&gt;
Erstellung des nginx Docker-Service&lt;br /&gt;
&lt;br /&gt;
Erstellung des Portainer Docker-Service&lt;br /&gt;
&lt;br /&gt;
Erstellung des gitea-Docker-Service mit Portainer.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung von gitea mithilfe der obigen Erklärung.&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der restlichen Docker-Services mithilfe der Docker-Compose-Dateien in gitea. Alternativ sind die Docker-Compose-Dateien auch in den Backup gespeichert!&lt;br /&gt;
&lt;br /&gt;
Wiederherstellung der einzelnen Daten der Services mithilfe der obigen Erklärungen.&lt;br /&gt;
&lt;br /&gt;
== Neuen Docker-Dienst anlegen ==&lt;br /&gt;
Hier wird davon ausgegangen, dass es sich um einen Dockerdienst handelt, der auf einem Port wie 80 oder 443 angesprochen werden soll. Wir gehen davon aus, dass das Portmapping &amp;quot;127.0.0.1:10443:443&amp;quot; ist, also der Container den Port 10443 auf das lokale Interface öffnet und mit dem Container-Port 10443 mappt. Weiter gehen wir davon aus, dass der Service über die Subdomain &amp;quot;&#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&amp;quot; über HTTP und HTTPS erreichbar sein soll. HTTP wird auf HTTPS weitergeleitet.&lt;br /&gt;
&lt;br /&gt;
# Erstellung der Sub-Domain &#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&lt;br /&gt;
## [mailto:puetter@tisento.com Torsten] diese Sub-Domain dem Server zuweisen lassen.&lt;br /&gt;
## Für das SSL-Zertifikat muss die Domain öffentlich erreichbar sein!&lt;br /&gt;
# Erstellung der Konfiguration im nginx Service&lt;br /&gt;
## Erstellung einer Datei sub.tisento.com.conf in dem Pfad /var/www/nginx.tisento.com/nginx/...&lt;br /&gt;
## Hinzufügen von dem Inhalt:&amp;lt;blockquote&amp;gt;adasdsa&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
## Prüfung ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neu laden&lt;br /&gt;
## Hinzufügen eines Zertifikates mit dem Befehl:&lt;br /&gt;
### asdasd&lt;br /&gt;
## Hinzufügen der SSL Konfuguration zur Datei (sub.tisento.com.conf)&lt;br /&gt;
## Prüfen ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neuladen&lt;br /&gt;
# Prüfen der Verbindung&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=305</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=305"/>
		<updated>2025-04-16T15:22:24Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Zugriff==&lt;br /&gt;
Der Docker-Server ist unter der 172.22.0.224 erreichbar.&lt;br /&gt;
&lt;br /&gt;
Der neue Docker-Server wird unter 172.22.0.223 erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
Der Port, Nutzername und auch das Passwort sind im [http://keepass.tisento.com Passbolt] gespeichert.&lt;br /&gt;
&lt;br /&gt;
== Zugriff Dienste ==&lt;br /&gt;
Nachfolgend eine Liste der Dienste die auf dem Docker laufen&lt;br /&gt;
&lt;br /&gt;
* [https://cockpit.tisento.com Cockpit-PROD] &lt;br /&gt;
* [https://cockpit-test.tisento.com Cockpit-TEST]&lt;br /&gt;
* [https://cockpit-dev.tisento.com Cockpit-DEV]&lt;br /&gt;
* [https://monitor.tisento.com UpTime Kuma (Monitor)]&lt;br /&gt;
* [https://portainer.tisento.com Portainer (Docker Verwaltung)]&lt;br /&gt;
* FTP&lt;br /&gt;
* [https://service.tisento.com Ticketsystem / Otobo]&lt;br /&gt;
* NGINX &amp;amp; Certbot (noch nicht als Docker-Container)&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* Git (gitea) noch nicht installiert&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Docker-Dienste ==&lt;br /&gt;
Die meisten Dienste sind mit ihren Daten und Definitionen unter /var/html/dienst.tisento.com erreichbar.&lt;br /&gt;
&lt;br /&gt;
Dabei sind in dem Ordner /var/html/dienst.tisento.com/.docker die Definitionen der Docker-Container.&lt;br /&gt;
&lt;br /&gt;
In dem Ordner /var/html/dienst.tisento.com/backups sind die jeweiligen Backups der Daten.&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ([https://cockpit.tisento.com cockpit.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F2)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst. &lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit.tisento.com/backups gespeichert. Das tägliche Backup wird nach 30 Tagen gelöscht, die monatlichen nach einem Jahr und die jährlichen Backups nie.&lt;br /&gt;
&lt;br /&gt;
EVTL. NOCH MONITOR HINZUFÜGEN DER BACKUP TÄGLICH PRÜFT!&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ([https://cockpit-test.tisento.com cockpit-test.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-test.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-test.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ([https://cockpit-dev.tisento.com cockpit-dev.tisento.com]) ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
Die Daten befinden sich unter /var/html/cockpit-dev.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-dev.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma / Monitor ([https://monitor.tisento.com monitor.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Überwachung der diversen Docker-Container, als auch für diverse Systeme da (z.B. HEALTH, also CPU, RAM, HDD von diversen Servern).&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/monitor.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Portainer ([https://portainer.tisento.com portainer.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Verwaltung der verschiedenen Docker-Container notwendig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/portainer.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Dieses Tool ist für die FTP-Verbindung zu den jeweiligen HTML-Verzeichnissen von [https://cockpit.tisento.com cockpit.tisento.com], [https://cockpit-test.tisento.com cockpit-test.tisento.com] und [https://cockpit-dev.tisento.com cockpit-dev.tisento.com] zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/ftp.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ([https://service.tisento.com service.tisento.com]) ===&lt;br /&gt;
Dieses Tool ist für die Erstellung und Verwaltung der Tickets zuständig.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== NGINX (noch nicht als Docker-Container) ===&lt;br /&gt;
nginx ist ein Reverse-Proxy, damit die verschiedenen Domains den richtigen Weg zu den Services finden.&lt;br /&gt;
&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) noch nicht installiert ===&lt;br /&gt;
Die Daten befinden sich unter /var/html/TODO.tisento.com.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Backups ==&lt;br /&gt;
Jeder Service hat ein eigenes Backup-System.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden gemeinsam per FTP auf den Server XY übertragen.&lt;br /&gt;
&lt;br /&gt;
Dort läuft ein kleiner PHP-Cronjob, der diese Backups in ein anderes Verzeichnis überträgt.&lt;br /&gt;
&lt;br /&gt;
Diese Dateien werden für eine Wiederherstellung benötigt!&lt;br /&gt;
&lt;br /&gt;
== Neuen Docker-Dienst anlegen ==&lt;br /&gt;
Hier wird davon ausgegangen, dass es sich um einen Dockerdienst handelt, der auf einem Port wie 80 oder 443 angesprochen werden soll. Wir gehen davon aus, dass das Portmapping &amp;quot;127.0.0.1:10443:443&amp;quot; ist, also der Container den Port 10443 auf das lokale Interface öffnet und mit dem Container-Port 10443 mappt. Weiter gehen wir davon aus, dass der Service über die Subdomain &amp;quot;&#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&amp;quot; über HTTP und HTTPS erreichbar sein soll. HTTP wird auf HTTPS weitergeleitet.&lt;br /&gt;
&lt;br /&gt;
# Erstellung der Sub-Domain &#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&lt;br /&gt;
## [mailto:puetter@tisento.com Torsten] diese Sub-Domain dem Server zuweisen lassen.&lt;br /&gt;
## Für das SSL-Zertifikat muss die Domain öffentlich erreichbar sein!&lt;br /&gt;
# Erstellung der Konfiguration im nginx Service&lt;br /&gt;
## Erstellung einer Datei sub.tisento.com.conf in dem Pfad /var/www/nginx.tisento.com/nginx/...&lt;br /&gt;
## Hinzufügen von dem Inhalt:&amp;lt;blockquote&amp;gt;adasdsa&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
## Prüfung ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neu laden&lt;br /&gt;
## Hinzufügen eines Zertifikates mit dem Befehl:&lt;br /&gt;
### asdasd&lt;br /&gt;
## Hinzufügen der SSL Konfuguration zur Datei (sub.tisento.com.conf)&lt;br /&gt;
## Prüfen ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neuladen&lt;br /&gt;
# Prüfen der Verbindung&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Cockpit&amp;diff=304</id>
		<title>Cockpit</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Cockpit&amp;diff=304"/>
		<updated>2025-04-16T12:42:39Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: format&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Cockpit...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zugriff ==&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
Das Produktive Cockpit ist über https://cockpit.tisento.com&amp;lt;nowiki/&amp;gt;erreichbar.&lt;br /&gt;
&lt;br /&gt;
Weiter gibt es dazu noch ein Test-Cockpit https://cockpit-test.tisento.com, sowie ein Dev-Cockpit https://cockpit-dev.tisento.com.&lt;br /&gt;
&lt;br /&gt;
=== Neue Nutzer ===&lt;br /&gt;
Zugangsdaten dazu können entweder von [mailto:koester@tisento.com Jochen Köster] oder [mailto:christian.meyer@tisento.com Christian Meyer] erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Die Rechte sind über diverse Managergruppen geregelt, auch diese können von [mailto:koester@tisento.com Jochen Köster] oder [mailto:christian.meyer@tisento.com Christian Meyer] erstellt oder zugewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== Problembehebung / Einschränkungen ==&lt;br /&gt;
Als erstes Prüfen, ob die entsprechenden [https://monitor.tisento.com Monitore] laufen, entsprechend dem Ergebnis handeln:&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;co-orga LX Toolbox&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Bestimmte Tasks (bspw. Erstellung der Lieferscheine aus den Zeiterfassungen) gehen nicht. Cockpit funktioniert davon abgesehen weiterhin.Problembehandliung:&lt;br /&gt;
&lt;br /&gt;
Auf den tisento-erp (172.22.0.219) anmelden. LX Toolbox starten (Service).&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;co-orga LX Toolbox PROD-Token&amp;quot; down oder &amp;quot;co-orga LX Toolbox TEST-Token&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung: ====&lt;br /&gt;
Bestimmte Tasks (bspw. Erstellung der Lieferscheine aus den Zeiterfassungen) gehen nicht. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung: ====&lt;br /&gt;
Wenn einer der beiden Token down ist, dann kann es folgende Gründe und Lösungen geben&lt;br /&gt;
&lt;br /&gt;
# co-orga LX Toolbox down ist down, dann siehe oben&lt;br /&gt;
# Der Supervisor hat nicht das richtige Passwort (wurde evtl. zum Testen auf &amp;quot;&amp;quot; geändert, dann zurück ändern!)&lt;br /&gt;
# Der Supervisor hatte zum Testen ein anderes Paswort, das wurde zurück gesetzt. Jetzt muss der Supervisor sich bei den entsprechenden Firmen in Lexware anmelden, danach sind die Token wieder aktiv.&lt;br /&gt;
# Der Token wurde gelöscht, da bspw. LX Toolbox abgestürzt ist. Bei der [http://172.22.0.219:5000/ LX Toolbox] mit dem Supervisor in der entsprechenden Firma anmelden und einen neuen Zugriffstoken setzen. Dieser ist entweder im [https://monitor.tisento.com Monitor] oder auch im [http://keepass.tisento.com/ Passbolt] zu finden&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Lexware: Fehler nicht gedruckt&amp;quot; down oder Belege können nicht gefunden werden ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Bestimmte Tasks (bspw. Rechnungsversand) gehen nicht. Dokument ist in ELO nicht vorhanden. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung ====&lt;br /&gt;
Es scheint, als wäre in Lexware eine Datei als gedruckt markiert aber nicht gedruckt worden.&lt;br /&gt;
&lt;br /&gt;
Folgendes SQL-Statement ausführen, dann werden die entsprechenden Dokumente angezeigt:&lt;br /&gt;
 SELECT &lt;br /&gt;
     fka.`AuftragsNr`,fka.`AuftragsKennung`, fkk.lID &lt;br /&gt;
 FROM &lt;br /&gt;
     `FK_Auftrag` fka &lt;br /&gt;
 LEFT JOIN &lt;br /&gt;
     FK_AuftragKontakt fkak ON fkak.lAuftragID = fka.SheetNr ANDfkak.lID &amp;gt; 20000 &lt;br /&gt;
 LEFT JOIN &lt;br /&gt;
     FK_Kontakt fkk ON fkk.lID = fkak.lKontaktID and fkk.System_created &amp;gt; &#039;2025-01-01&#039; &lt;br /&gt;
 WHERE &lt;br /&gt;
     fka.bStatus_gedruckt = 1 AND &lt;br /&gt;
     fkk.lID is NULL AND&lt;br /&gt;
     Datum_erfassung &amp;gt; &#039;2025-01-01&#039; &lt;br /&gt;
 ORDER BY &lt;br /&gt;
     fka.SheetNr DESC&lt;br /&gt;
Diese Dokumente noch einmal drucken, dann geht der Monitor wieder auf &amp;quot;Up&amp;quot;. Evtl. kann dafür noch eine Task erstellt werden.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;co-orga LX datawarehouse&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Es sind keine aktuellen Lexware-Daten im Cockpit. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung ====&lt;br /&gt;
Auf den tisento-erp (172.22.0.219) anmelden. LX DataWarehouse starten (Service).&lt;br /&gt;
&lt;br /&gt;
=== Docker Container &amp;quot;... down&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Der jeweilige Service funktioniert nicht richtig. Im Monitor schauen welche Gruppe (bspw. Cockpit-TEST, Cockpit-PROD, ELO-TEST, ...) betroffen ist.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung ====&lt;br /&gt;
Einer der Services ist down, dann über [https://portainer.tisento.com Portainer] den entsprechenden Container neustarten. Zugangsdaten sind im [http://keepass.tisento.com/ Passbolt] abgespeichert.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Zebra ...&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Der jeweilige Drucker funktioniert nicht, es können keine Etiketten gedruckt werden. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung ====&lt;br /&gt;
In Meschede oder bei Uli anrufen, dass der jeweile Zebra einmal gestartet wird.&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=303</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=303"/>
		<updated>2025-04-16T11:52:51Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Zugriff==&lt;br /&gt;
Der Docker-Server ist unter der 172.22.0.224 erreichbar.&lt;br /&gt;
&lt;br /&gt;
Der neue Docker-Server wird unter 172.22.0.223 erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
Der Port, Nutzername und auch das Passwort sind im [http://keepass.tisento.com Passbolt] gespeichert.&lt;br /&gt;
&lt;br /&gt;
== Zugriff Dienste ==&lt;br /&gt;
Nachfolgend eine Liste der Dienste die auf dem Docker laufen&lt;br /&gt;
&lt;br /&gt;
* [https://cockpit.tisento.com Cockpit-PROD] &lt;br /&gt;
* [https://cockpit-test.tisento.com Cockpit-TEST]&lt;br /&gt;
* [https://cockpit-dev.tisento.com Cockpit-DEV]&lt;br /&gt;
* [https://monitor.tisento.com UpTime Kuma (Monitor)]&lt;br /&gt;
* [https://portainer.tisento.com Portainer (Docker Verwaltung)]&lt;br /&gt;
* FTP&lt;br /&gt;
* [https://service.tisento.com Ticketsystem / Otobo]&lt;br /&gt;
* NGINX &amp;amp; Certbot (noch nicht als Docker-Container)&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* Git (gitea) noch nicht installiert&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Docker-Dienste ==&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F2)&lt;br /&gt;
* Backup&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst. &lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit.tisento.com/backups gespeichert. Das tägliche Backup wird nach 30 Tagen gelöscht, die monatlichen nach einem Jahr und die jährlichen Backups nie.&lt;br /&gt;
&lt;br /&gt;
EVTL. NOCH MONITOR HINZUFÜGEN DER BACKUP TÄGLICH PRÜFT!&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-test.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-dev.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma (Monitor) ===&lt;br /&gt;
Dieses Tool ist für die Überwachung der diversen Docker-Container, als auch für diverse Systeme da (z.B. HEALTH, also CPU, RAM, HDD von diversen Servern).&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Portainer ===&lt;br /&gt;
Dieses Tool ist für die Verwaltung der verschiedenen Docker-Container notwendig.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Dieses Tool ist für die FTP-Verbindung zu den jeweiligen HTML-Verzeichnissen von [https://cockpit.tisento.com cockpit.tisento.com], [https://cockpit-test.tisento.com cockpit-test.tisento.com] und [https://cockpit-dev.tisento.com cockpit-dev.tisento.com] zuständig.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ===&lt;br /&gt;
 Dieses Tool ist für die Erstellung und Verwaltung der Tickets zuständig.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== NGINX (noch nicht als Docker-Container) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) noch nicht installiert ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Backups ==&lt;br /&gt;
Jeder Service hat ein eigenes Backup-System.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden gemeinsam per FTP auf den Server XY übertragen.&lt;br /&gt;
&lt;br /&gt;
Dort läuft ein kleiner PHP-Cronjob, der diese Backups in ein anderes Verzeichnis überträgt.&lt;br /&gt;
&lt;br /&gt;
Diese Dateien werden für eine Wiederherstellung benötigt!&lt;br /&gt;
&lt;br /&gt;
== Neuen Docker-Dienst anlegen ==&lt;br /&gt;
Hier wird davon ausgegangen, dass es sich um einen Dockerdienst handelt, der auf einem Port wie 80 oder 443 angesprochen werden soll. Wir gehen davon aus, dass das Portmapping &amp;quot;127.0.0.1:10443:443&amp;quot; ist, also der Container den Port 10443 auf das lokale Interface öffnet und mit dem Container-Port 10443 mappt. Weiter gehen wir davon aus, dass der Service über die Subdomain &amp;quot;&#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&amp;quot; über HTTP und HTTPS erreichbar sein soll. HTTP wird auf HTTPS weitergeleitet.&lt;br /&gt;
&lt;br /&gt;
# Erstellung der Sub-Domain &#039;&#039;&#039;sub.tisento.com&#039;&#039;&#039;&lt;br /&gt;
## [mailto:puetter@tisento.com Torsten] diese Sub-Domain dem Server zuweisen lassen.&lt;br /&gt;
## Für das SSL-Zertifikat muss die Domain öffentlich erreichbar sein!&lt;br /&gt;
# Erstellung der Konfiguration im nginx Service&lt;br /&gt;
## Erstellung einer Datei sub.tisento.com.conf in dem Pfad /var/www/nginx.tisento.com/nginx/...&lt;br /&gt;
## Hinzufügen von dem Inhalt:&amp;lt;blockquote&amp;gt;adasdsa&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
## Prüfung ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neu laden&lt;br /&gt;
## Hinzufügen eines Zertifikates mit dem Befehl:&lt;br /&gt;
### asdasd&lt;br /&gt;
## Hinzufügen der SSL Konfuguration zur Datei (sub.tisento.com.conf)&lt;br /&gt;
## Prüfen ob die Konfiguration korrekt ist (optional)&lt;br /&gt;
## nginx neuladen&lt;br /&gt;
# Prüfen der Verbindung&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=302</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=302"/>
		<updated>2025-04-15T18:20:49Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Zugriff==&lt;br /&gt;
Der Docker-Server ist unter der 172.22.0.224 erreichbar.&lt;br /&gt;
&lt;br /&gt;
Der neue Docker-Server wird unter 172.22.0.223 erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
Der Port, Nutzername und auch das Passwort sind im [http://keepass.tisento.com Passbolt] gespeichert.&lt;br /&gt;
&lt;br /&gt;
== Zugriff Dienste ==&lt;br /&gt;
Nachfolgend eine Liste der Dienste die auf dem Docker laufen&lt;br /&gt;
&lt;br /&gt;
* [https://cockpit.tisento.com Cockpit-PROD] &lt;br /&gt;
* [https://cockpit-test.tisento.com Cockpit-TEST]&lt;br /&gt;
* [https://cockpit-dev.tisento.com Cockpit-DEV]&lt;br /&gt;
* [https://monitor.tisento.com UpTime Kuma (Monitor)]&lt;br /&gt;
* [https://portainer.tisento.com Portainer (Docker Verwaltung)]&lt;br /&gt;
* FTP&lt;br /&gt;
* [https://service.tisento.com Ticketsystem / Otobo]&lt;br /&gt;
* NGINX (noch nicht als Docker-Container)&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* Git (gitea) noch nicht installiert&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Docker-Dienste ==&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F2)&lt;br /&gt;
* Backup&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst. &lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit.tisento.com/backups gespeichert. Das tägliche Backup wird nach 30 Tagen gelöscht, die monatlichen nach einem Jahr und die jährlichen Backups nie.&lt;br /&gt;
&lt;br /&gt;
EVTL. NOCH MONITOR HINZUFÜGEN DER BACKUP TÄGLICH PRÜFT!&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-test.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-dev.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma (Monitor) ===&lt;br /&gt;
Dieses Tool ist für die Überwachung der diversen Docker-Container, als auch für diverse Systeme da (z.B. HEALTH, also CPU, RAM, HDD von diversen Servern).&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Portainer ===&lt;br /&gt;
Dieses Tool ist für die Verwaltung der verschiedenen Docker-Container notwendig.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Dieses Tool ist für die FTP-Verbindung zu den jeweiligen HTML-Verzeichnissen von [https://cockpit.tisento.com cockpit.tisento.com], [https://cockpit-test.tisento.com cockpit-test.tisento.com] und [https://cockpit-dev.tisento.com cockpit-dev.tisento.com] zuständig.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ===&lt;br /&gt;
Dieses Tool ist für die Erstellung und Verwaltung der Tickets zuständig.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== NGINX (noch nicht als Docker-Container) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) noch nicht installiert ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Backups ==&lt;br /&gt;
Jeder Service hat ein eigenes Backup-System.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden gemeinsam per FTP auf den Server XY übertragen.&lt;br /&gt;
&lt;br /&gt;
Dort läuft ein kleiner PHP-Cronjob, der diese Backups in ein anderes Verzeichnis überträgt.&lt;br /&gt;
&lt;br /&gt;
Diese Dateien werden für eine Wiederherstellung benötigt!&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=301</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=301"/>
		<updated>2025-04-15T18:03:57Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Zugriff==&lt;br /&gt;
Der Docker-Server ist unter der 172.22.0.224 erreichbar.&lt;br /&gt;
&lt;br /&gt;
Der neue Docker-Server wird unter 172.22.0.223 erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
Der Port, Nutzername und auch das Passwort sind im [http://keepass.tisento.com Passbolt] gespeichert.&lt;br /&gt;
&lt;br /&gt;
== Zugriff Dienste ==&lt;br /&gt;
Nachfolgend eine Liste der Dienste die auf dem Docker laufen&lt;br /&gt;
&lt;br /&gt;
* [https://cockpit.tisento.com Cockpit-PROD] &lt;br /&gt;
* [https://cockpit-test.tisento.com Cockpit-TEST]&lt;br /&gt;
* [https://cockpit-dev.tisento.com Cockpit-DEV]&lt;br /&gt;
* [https://monitor.tisento.com UpTime Kuma (Monitor)]&lt;br /&gt;
* [https://portainer.tisento.com Portainer (Docker Verwaltung)]&lt;br /&gt;
* FTP&lt;br /&gt;
* [https://service.tisento.com Ticketsystem / Otobo]&lt;br /&gt;
* NGINX (noch nicht als Docker-Container)&lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
* Git (gitea) noch nicht installiert&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Docker-Dienste ==&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F2)&lt;br /&gt;
* Backup&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst. &lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit.tisento.com/backups gespeichert. Das tägliche Backup wird nach 30 Tagen gelöscht, die monatlichen nach einem Jahr und die jährlichen Backups nie.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-test.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-dev.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma (Monitor) ===&lt;br /&gt;
Dieses Tool ist für die Überwachung der diversen Docker-Container, als auch für diverse Systeme da (z.B. HEALTH, also CPU, RAM, HDD von diversen Servern).&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Portainer ===&lt;br /&gt;
Dieses Tool ist für die Verwaltung der verschiedenen Docker-Container notwendig.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Dieses Tool ist für die FTP-Verbindung zu den jeweiligen HTML-Verzeichnissen von [https://cockpit.tisento.com cockpit.tisento.com], [https://cockpit-test.tisento.com cockpit-test.tisento.com] und [https://cockpit-dev.tisento.com cockpit-dev.tisento.com] zuständig.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ===&lt;br /&gt;
Dieses Tool ist für die Erstellung und Verwaltung der Tickets zuständig.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== NGINX (noch nicht als Docker-Container) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== UFW (Firewall) ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Git (gitea) noch nicht installiert ===&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=300</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Docker&amp;diff=300"/>
		<updated>2025-04-15T18:01:13Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: Init&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Zugriff==&lt;br /&gt;
Der Docker-Server ist unter der 172.22.0.224 erreichbar.&lt;br /&gt;
&lt;br /&gt;
Der neue Docker-Server wird unter 172.22.0.223 erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
Der Port, Nutzername und auch das Passwort sind im [http://keepass.tisento.com Passbolt] gespeichert.&lt;br /&gt;
&lt;br /&gt;
== Zugriff Dienste ==&lt;br /&gt;
Nachfolgend eine Liste der Dienste die auf dem Docker laufen&lt;br /&gt;
&lt;br /&gt;
* [https://cockpit.tisento.com Cockpit-PROD] &lt;br /&gt;
* [https://cockpit-test.tisento.com Cockpit-TEST]&lt;br /&gt;
* [https://cockpit-dev.tisento.com Cockpit-DEV]&lt;br /&gt;
* [https://monitor.tisento.com UpTime Kuma (Monitor)]&lt;br /&gt;
* [https://portainer.tisento.com Portainer (Docker Verwaltung)]&lt;br /&gt;
* FTP&lt;br /&gt;
* [https://service.tisento.com Ticketsystem / Otobo]&lt;br /&gt;
* NGINX &lt;br /&gt;
* UFW (Firewall)&lt;br /&gt;
&lt;br /&gt;
== Beschreibung der Docker-Dienste ==&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-PROD ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F2)&lt;br /&gt;
* Backup&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst. &lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit.tisento.com/backups gespeichert. Das tägliche Backup wird nach 30 Tagen gelöscht, die monatlichen nach einem Jahr und die jährlichen Backups nie.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-TEST ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-test.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== Cockpit-DEV ===&lt;br /&gt;
Cockpit-PROD besteht aus:&lt;br /&gt;
&lt;br /&gt;
* Apache Dienste&lt;br /&gt;
* MariaDB&lt;br /&gt;
* PHPMyAdmin&lt;br /&gt;
* LXConnector (Direktverbindung zu Lexware F902)&lt;br /&gt;
* Backup&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
Der Backup-Service erstellt jeden Tag ein Backup der MariaDB und des HTML-Verzeichnisses vom Apache-Dienst.&lt;br /&gt;
&lt;br /&gt;
Diese Backups werden auf dem Server unter &amp;quot;/var/www/cockpit-dev.tisento.com/backups gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
Nicht notwendig&lt;br /&gt;
&lt;br /&gt;
=== UpTime Kuma (Monitor) ===&lt;br /&gt;
Dieses Tool ist für die Überwachung der diversen Docker-Container, als auch für diverse Systeme da (z.B. HEALTH, also CPU, RAM, HDD von diversen Servern).&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Portainer ===&lt;br /&gt;
Dieses Tool ist für die Verwaltung der verschiedenen Docker-Container notwendig.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== FTP ===&lt;br /&gt;
Dieses Tool ist für die FTP-Verbindung zu den jeweiligen HTML-Verzeichnissen von [https://cockpit.tisento.com cockpit.tisento.com], [https://cockpit-test.tisento.com cockpit-test.tisento.com] und [https://cockpit-dev.tisento.com cockpit-dev.tisento.com] zuständig.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== Ticketsystem / Otobo ===&lt;br /&gt;
Dieses Tool ist für die Erstellung und Verwaltung der Tickets zuständig.&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==== Wiederherstellung ====&lt;br /&gt;
TODO&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Hauptseite&amp;diff=299</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Hauptseite&amp;diff=299"/>
		<updated>2025-04-15T17:38:57Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Willkommen im Wiki Bereich der tisento GmbH&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[NetzwerkThemen|Netzwerk Themen]]&lt;br /&gt;
&lt;br /&gt;
[[TKAnlagen|Telekommunikationssysteme]]&lt;br /&gt;
&lt;br /&gt;
[[Carrier Themen]]&lt;br /&gt;
&lt;br /&gt;
[[Server Themen]]&lt;br /&gt;
&lt;br /&gt;
[[Client Themen]]&lt;br /&gt;
&lt;br /&gt;
[[Cockpit|Cockpit Themen]]&lt;br /&gt;
&lt;br /&gt;
[[Docker|Docker Themen]]&lt;br /&gt;
&lt;br /&gt;
Hilfe zur Benutzung und Konfiguration der Wiki-Software findest du im [[mediawikiwiki:Special:MyLanguage/Help:Contents|Benutzerhandbuch]].&lt;br /&gt;
== Starthilfen ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Liste der Konfigurationsvariablen]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki-FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailingliste neuer MediaWiki-Versionen]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Übersetze MediaWiki für deine Sprache]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Erfahre, wie du Spam auf deinem Wiki bekämpfen kannst]&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Cockpit&amp;diff=298</id>
		<title>Cockpit</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Cockpit&amp;diff=298"/>
		<updated>2025-04-15T17:37:57Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: Ergänzen von Zugang und Nutzer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Cockpit...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zugriff ==&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
Das Produktive Cockpit ist über https://cockpit.tisento.com&amp;lt;nowiki/&amp;gt;erreichbar.&lt;br /&gt;
&lt;br /&gt;
Weiter gibt es dazu noch ein Test-Cockpit https://cockpit-test.tisento.com, sowie ein Dev-Cockpit https://cockpit-dev.tisento.com.&lt;br /&gt;
&lt;br /&gt;
=== Neue Nutzer ===&lt;br /&gt;
Zugangsdaten dazu können entweder von [mailto:koester@tisento.com Jochen Köster] oder [mailto:christian.meyer@tisento.com Christian Meyer] erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Die Rechte sind über diverse Managergruppen geregelt, auch diese können von [mailto:koester@tisento.com Jochen Köster] oder [mailto:christian.meyer@tisento.com Christian Meyer] erstellt oder zugewiesen werden.&lt;br /&gt;
&lt;br /&gt;
== Problembehebung / Einschränkungen ==&lt;br /&gt;
Als erstes Prüfen, ob die entsprechenden [https://monitor.tisento.com Monitore] laufen, entsprechend dem Ergebnis handeln:&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;co-orga LX Toolbox&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Bestimmte Tasks (bspw. Erstellung der Lieferscheine aus den Zeiterfassungen) gehen nicht. Cockpit funktioniert davon abgesehen weiterhin.Problembehandliung:&lt;br /&gt;
&lt;br /&gt;
Auf den tisento-erp (172.22.0.219) anmelden. LX Toolbox starten (Service).&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;co-orga LX Toolbox PROD-Token&amp;quot; down oder &amp;quot;co-orga LX Toolbox TEST-Token&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung: ====&lt;br /&gt;
Bestimmte Tasks (bspw. Erstellung der Lieferscheine aus den Zeiterfassungen) gehen nicht. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung: ====&lt;br /&gt;
Wenn einer der beiden Token down ist, dann kann es folgende Gründe und Lösungen geben&lt;br /&gt;
&lt;br /&gt;
# co-orga LX Toolbox down ist down, dann siehe oben&lt;br /&gt;
# Der Supervisor hat nicht das richtige Passwort (wurde evtl. zum Testen auf &amp;quot;&amp;quot; geändert, dann zurück ändern!)&lt;br /&gt;
# Der Supervisor hatte zum Testen ein anderes Paswort, das wurde zurück gesetzt. Jetzt muss der Supervisor sich bei den entsprechenden Firmen in Lexware anmelden, danach sind die Token wieder aktiv.&lt;br /&gt;
# Der Token wurde gelöscht, da bspw. LX Toolbox abgestürzt ist. Bei der [http://172.22.0.219:5000/ LX Toolbox] mit dem Supervisor in der entsprechenden Firma anmelden und einen neuen Zugriffstoken setzen. Dieser ist entweder im [https://monitor.tisento.com Monitor] oder auch im [http://keepass.tisento.com/ Passbolt] zu finden&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Lexware: Fehler nicht gedruckt&amp;quot; down oder Belege können nicht gefunden werden ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Bestimmte Tasks (bspw. Rechnungsversand) gehen nicht. Dokument ist in ELO nicht vorhanden. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung ====&lt;br /&gt;
Es scheint, als wäre in Lexware eine Datei als gedruckt markiert aber nicht gedruckt worden.&lt;br /&gt;
&lt;br /&gt;
Folgendes SQL-Statement ausführen, dann werden die entsprechenden Dokumente angezeigt:&lt;br /&gt;
 SELECT fka.`AuftragsNr`,fka.`AuftragsKennung`, fkk.lID FROM `FK_Auftrag` fka LEFT JOIN FK_AuftragKontakt fkak ON fkak.lAuftragID = fka.SheetNr ANDfkak.lID &amp;gt; 20000 LEFT JOIN FK_Kontakt fkk ON fkk.lID = fkak.lKontaktID and fkk.System_created &amp;gt; &#039;2025-01-01&#039; WHERE fka.bStatus_gedruckt = 1 AND fkk.lID is NULL ANDDatum_erfassung &amp;gt; &#039;2025-01-01&#039; ORDER BY fka.SheetNr DESC&lt;br /&gt;
Diese Dokumente noch einmal drucken, dann geht der Monitor wieder auf &amp;quot;Up&amp;quot;. Evtl. kann dafür noch eine Task erstellt werden.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;co-orga LX datawarehouse&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Es sind keine aktuellen Lexware-Daten im Cockpit. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung ====&lt;br /&gt;
Auf den tisento-erp (172.22.0.219) anmelden. LX DataWarehouse starten (Service).&lt;br /&gt;
&lt;br /&gt;
=== Docker Container &amp;quot;... down&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Der jeweilige Service funktioniert nicht richtig. Im Monitor schauen welche Gruppe (bspw. Cockpit-TEST, Cockpit-PROD, ELO-TEST, ...) betroffen ist.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung ====&lt;br /&gt;
Einer der Services ist down, dann über [https://portainer.tisento.com Portainer] den entsprechenden Container neustarten. Zugangsdaten sind im [http://keepass.tisento.com/ Passbolt] abgespeichert.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Zebra ...&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Der jeweilige Drucker funktioniert nicht, es können keine Etiketten gedruckt werden. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung ====&lt;br /&gt;
In Meschede oder bei Uli anrufen, dass der jeweile Zebra einmal gestartet wird.&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Cockpit&amp;diff=297</id>
		<title>Cockpit</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Cockpit&amp;diff=297"/>
		<updated>2025-04-15T17:33:52Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;https://cockpit.tisento.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Problembehebung / Einschränkungen ==&lt;br /&gt;
Als erstes Prüfen, ob die entsprechenden [https://monitor.tisento.com Monitore] laufen, entsprechend dem Ergebnis handeln:&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;co-orga LX Toolbox&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Bestimmte Tasks (bspw. Erstellung der Lieferscheine aus den Zeiterfassungen) gehen nicht. Cockpit funktioniert davon abgesehen weiterhin.Problembehandliung:&lt;br /&gt;
&lt;br /&gt;
Auf den tisento-erp (172.22.0.219) anmelden. LX Toolbox starten (Service).&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;co-orga LX Toolbox PROD-Token&amp;quot; down oder &amp;quot;co-orga LX Toolbox TEST-Token&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung: ====&lt;br /&gt;
Bestimmte Tasks (bspw. Erstellung der Lieferscheine aus den Zeiterfassungen) gehen nicht. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung: ====&lt;br /&gt;
Wenn einer der beiden Token down ist, dann kann es folgende Gründe und Lösungen geben&lt;br /&gt;
&lt;br /&gt;
# co-orga LX Toolbox down ist down, dann siehe oben&lt;br /&gt;
# Der Supervisor hat nicht das richtige Passwort (wurde evtl. zum Testen auf &amp;quot;&amp;quot; geändert, dann zurück ändern!)&lt;br /&gt;
# Der Supervisor hatte zum Testen ein anderes Paswort, das wurde zurück gesetzt. Jetzt muss der Supervisor sich bei den entsprechenden Firmen in Lexware anmelden, danach sind die Token wieder aktiv.&lt;br /&gt;
# Der Token wurde gelöscht, da bspw. LX Toolbox abgestürzt ist. Bei der [http://172.22.0.219:5000/ LX Toolbox] mit dem Supervisor in der entsprechenden Firma anmelden und einen neuen Zugriffstoken setzen. Dieser ist entweder im [https://monitor.tisento.com Monitor] oder auch im [http://keepass.tisento.com/ Passbolt] zu finden&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Lexware: Fehler nicht gedruckt&amp;quot; down oder Belege können nicht gefunden werden ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Bestimmte Tasks (bspw. Rechnungsversand) gehen nicht. Dokument ist in ELO nicht vorhanden. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung ====&lt;br /&gt;
Es scheint, als wäre in Lexware eine Datei als gedruckt markiert aber nicht gedruckt worden.&lt;br /&gt;
&lt;br /&gt;
Folgendes SQL-Statement ausführen, dann werden die entsprechenden Dokumente angezeigt:&lt;br /&gt;
 SELECT fka.`AuftragsNr`,fka.`AuftragsKennung`, fkk.lID FROM `FK_Auftrag` fka LEFT JOIN FK_AuftragKontakt fkak ON fkak.lAuftragID = fka.SheetNr ANDfkak.lID &amp;gt; 20000 LEFT JOIN FK_Kontakt fkk ON fkk.lID = fkak.lKontaktID and fkk.System_created &amp;gt; &#039;2025-01-01&#039; WHERE fka.bStatus_gedruckt = 1 AND fkk.lID is NULL ANDDatum_erfassung &amp;gt; &#039;2025-01-01&#039; ORDER BY fka.SheetNr DESC&lt;br /&gt;
Diese Dokumente noch einmal drucken, dann geht der Monitor wieder auf &amp;quot;Up&amp;quot;. Evtl. kann dafür noch eine Task erstellt werden.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;co-orga LX datawarehouse&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Es sind keine aktuellen Lexware-Daten im Cockpit. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung ====&lt;br /&gt;
Auf den tisento-erp (172.22.0.219) anmelden. LX DataWarehouse starten (Service).&lt;br /&gt;
&lt;br /&gt;
=== Docker Container &amp;quot;... down&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Der jeweilige Service funktioniert nicht richtig. Im Monitor schauen welche Gruppe (bspw. Cockpit-TEST, Cockpit-PROD, ELO-TEST, ...) betroffen ist.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung ====&lt;br /&gt;
Einer der Services ist down, dann über [https://portainer.tisento.com Portainer] den entsprechenden Container neustarten. Zugangsdaten sind im [http://keepass.tisento.com/ Passbolt] abgespeichert.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Zebra ...&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung ====&lt;br /&gt;
Der jeweilige Drucker funktioniert nicht, es können keine Etiketten gedruckt werden. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung ====&lt;br /&gt;
In Meschede oder bei Uli anrufen, dass der jeweile Zebra einmal gestartet wird.&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Hauptseite&amp;diff=296</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Hauptseite&amp;diff=296"/>
		<updated>2025-04-15T17:30:38Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: Hinzufügen von Cockpit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Willkommen im Wiki Bereich der tisento GmbH&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[NetzwerkThemen|Netzwerk Themen]]&lt;br /&gt;
&lt;br /&gt;
[[TKAnlagen|Telekommunikationssysteme]]&lt;br /&gt;
&lt;br /&gt;
[[Carrier Themen]]&lt;br /&gt;
&lt;br /&gt;
[[Server Themen]]&lt;br /&gt;
&lt;br /&gt;
[[Client Themen]]&lt;br /&gt;
&lt;br /&gt;
[[Cockpit|Cockpit Themen]]&lt;br /&gt;
&lt;br /&gt;
Hilfe zur Benutzung und Konfiguration der Wiki-Software findest du im [[mediawikiwiki:Special:MyLanguage/Help:Contents|Benutzerhandbuch]].&lt;br /&gt;
== Starthilfen ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Liste der Konfigurationsvariablen]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki-FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailingliste neuer MediaWiki-Versionen]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Übersetze MediaWiki für deine Sprache]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Erfahre, wie du Spam auf deinem Wiki bekämpfen kannst]&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
	<entry>
		<id>http://wiki.tisinfra.de/index.php?title=Cockpit&amp;diff=295</id>
		<title>Cockpit</title>
		<link rel="alternate" type="text/html" href="http://wiki.tisinfra.de/index.php?title=Cockpit&amp;diff=295"/>
		<updated>2025-04-15T17:30:04Z</updated>

		<summary type="html">&lt;p&gt;ChristianM: Hinzufügen von Problem behandlungen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;https://cockpit.tisento.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Problembehebung / Einschränkungen ==&lt;br /&gt;
Als erstes Prüfen, ob die entsprechenden [https://monitor.tisento.com Monitore] laufen, entsprechend dem Ergebnis handeln:&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;co-orga LX Toolbox&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung: ====&lt;br /&gt;
Bestimmte Tasks (bspw. Erstellung der Lieferscheine aus den Zeiterfassungen) gehen nicht. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandliung: ====&lt;br /&gt;
Auf den tisento-erp (172.22.0.219) anmelden. LX Toolbox starten (Service).&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;co-orga LX Toolbox PROD-Token&amp;quot; down oder &amp;quot;co-orga LX Toolbox TEST-Token&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung: ====&lt;br /&gt;
Bestimmte Tasks (bspw. Erstellung der Lieferscheine aus den Zeiterfassungen) gehen nicht. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung: ====&lt;br /&gt;
Wenn einer der beiden Token down ist, dann kann es folgende Gründe und Lösungen geben&lt;br /&gt;
&lt;br /&gt;
# co-orga LX Toolbox down ist down, dann siehe oben&lt;br /&gt;
# Der Supervisor hat nicht das richtige Passwort (wurde evtl. zum Testen auf &amp;quot;&amp;quot; geändert, dann zurück ändern!)&lt;br /&gt;
# Der Supervisor hatte zum Testen ein anderes Paswort, das wurde zurück gesetzt. Jetzt muss der Supervisor sich bei den entsprechenden Firmen in Lexware anmelden, danach sind die Token wieder aktiv.&lt;br /&gt;
# Der Token wurde gelöscht, da bspw. LX Toolbox abgestürzt ist. Bei der [http://172.22.0.219:5000/ LX Toolbox] mit dem Supervisor in der entsprechenden Firma anmelden und einen neuen Zugriffstoken setzen. Dieser ist entweder im [https://monitor.tisento.com Monitor] oder auch im [http://keepass.tisento.com/ Passbolt] zu finden&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Lexware: Fehler nicht gedruckt&amp;quot; down oder Belege können nicht gefunden werden ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung: ====&lt;br /&gt;
Bestimmte Tasks (bspw. Rechnungsversand) gehen nicht. Dokument ist in ELO nicht vorhanden. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung: ====&lt;br /&gt;
Es scheint, als wäre in Lexware eine Datei als gedruckt markiert aber nicht gedruckt worden.&lt;br /&gt;
&lt;br /&gt;
Folgendes SQL-Statement ausführen, dann werden die entsprechenden Dokumente angezeigt:&lt;br /&gt;
 SELECT fka.`AuftragsNr`,fka.`AuftragsKennung`, fkk.lID FROM `FK_Auftrag` fka LEFT JOIN FK_AuftragKontakt fkak ON fkak.lAuftragID = fka.SheetNr ANDfkak.lID &amp;gt; 20000 LEFT JOIN FK_Kontakt fkk ON fkk.lID = fkak.lKontaktID and fkk.System_created &amp;gt; &#039;2025-01-01&#039; WHERE fka.bStatus_gedruckt = 1 AND fkk.lID is NULL ANDDatum_erfassung &amp;gt; &#039;2025-01-01&#039; ORDER BY fka.SheetNr DESC&lt;br /&gt;
Diese Dokumente noch einmal drucken, dann geht der Monitor wieder auf &amp;quot;Up&amp;quot;. Evtl. kann dafür noch eine Task erstellt werden.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;co-orga LX datawarehouse&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung: ====&lt;br /&gt;
Es sind keine aktuellen Lexware-Daten im Cockpit. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung: ====&lt;br /&gt;
Auf den tisento-erp (172.22.0.219) anmelden. LX DataWarehouse starten (Service).&lt;br /&gt;
&lt;br /&gt;
=== Docker Container &amp;quot;... down&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung: ====&lt;br /&gt;
Der jeweilige Service funktioniert nicht richtig. Im Monitor schauen welche Gruppe (bspw. Cockpit-TEST, Cockpit-PROD, ELO-TEST, ...) betroffen ist.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung: ====&lt;br /&gt;
Einer der Services ist down, dann über [https://portainer.tisento.com Portainer] den entsprechenden Container neustarten. Zugangsdaten sind im [http://keepass.tisento.com/ Passbolt] abgespeichert.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Zebra ...&amp;quot; down ===&lt;br /&gt;
&lt;br /&gt;
==== Einschränkung: ====&lt;br /&gt;
Der jeweilige Drucker funktioniert nicht, es können keine Etiketten gedruckt werden. Cockpit funktioniert davon abgesehen weiterhin.&lt;br /&gt;
&lt;br /&gt;
==== Problembehandlung: ====&lt;br /&gt;
In Meschede oder bei Uli anrufen, dass der jeweile Zebra einmal gestartet wird.&lt;/div&gt;</summary>
		<author><name>ChristianM</name></author>
	</entry>
</feed>