Ich hatte die Anforderung das die Daten in der Nextcloud nach 30 Tagen automatisch gelöscht werden sollen. Dann habe ich mich hingesetzt und ein Bash Skripte geschrieben. Ebenfalls sollten bestimmte User ausgenommen werden. Das habe ich auch mit aufgenommen.
#!/bin/sh
# Script zum löschen der Nextcloud Dateien nach X Tagen
# 0 = 24 Stunden
LOESCHEN_NACH_TAGEN=29
NEXTCLOUD_DATA=/mnt/ncdata
dirs=$(find $NEXTCLOUD_DATA -maxdepth 1 -type d -printf "%f\n" | awk '!match($0,/^(ncdata|Allgemein|appdata_oc65lc0lmz8d|root|files_external|\
Admin|\
8561CAA3-924D-4591-9AB4-2077C4076AD3|\
B8F060D2-A833-4F3D-AD19-4992243E587E|\
F3031267-8C27-4141-8826-6CA337742B67\
)$/)')
echo "\nFolgende Ordner werden gescannt:"
echo $dirs
for d in $dirs; do
if [ -d "$NEXTCLOUD_DATA/$d/files" ]; then
echo "\n\n#############################################################################"
echo "\nPruefe auf Daten im Benutzerordner $NEXTCLOUD_DATA/$d/files - diese Dateien werden gelöscht:"
find $NEXTCLOUD_DATA/$d/files/ -type f -ctime +$LOESCHEN_NACH_TAGEN -delete
find $NEXTCLOUD_DATA/$d/files/ -mindepth 1 -type d -ctime +$LOESCHEN_NACH_TAGEN -delete
echo "\nExplizite Bereinigung und Pruefung des Benutzers $d auf Konsistenz"
sudo -u www-data /usr/bin/php /var/www/nextcloud/occ files:scan --path $d/files
else
echo "\n\n#############################################################################"
echo "\n$d wird uebersprungen, da der Ordner $NEXTCLOUD_DATA/$d/files nicht vorhanden ist"
fi
done
for d in $dirs; do
if [ -d "$NEXTCLOUD_DATA/$d/files_trashbin/files" ]; then
echo "\n\n#############################################################################"
echo "\nPruefe auf Daten im Benutzerordner $NEXTCLOUD_DATA/$d/files - diese Dateien werden gelöscht:"
find $NEXTCLOUD_DATA/$d/files/ -type f -ctime +$LOESCHEN_NACH_TAGEN -delete
find $NEXTCLOUD_DATA/$d/files/ -mindepth 1 -type d -ctime +$LOESCHEN_NACH_TAGEN -delete
echo "\nExplizite Bereinigung und Pruefung des Benutzers $d auf Konsistenz"
sudo -u www-data /usr/bin/php /var/www/nextcloud/occ files:scan --path $d/files
else
echo "\n\n#############################################################################"
echo "\n$d wird uebersprungen, da der Ordner $NEXTCLOUD_DATA/$d/files nicht vorhanden ist"
fi
done
echo "\n\n#############################################################################"
echo "\nFinale Bereinigung und pruefen der Benutzerdaten auf Konsistenz"
sudo -u www-data /usr/bin/php /var/www/nextcloud/occ files:scan --all
sudo -u www-data /usr/bin/php /var/www/nextcloud/occ files:scan-app-data
sudo -u www-data /usr/bin/php /var/www/nextcloud/occ files:cleanup
echo "\nScript abgeschlossen"
Im Anschluss muss noch das Skript ausführbar gemacht werden und in den Crontab eingebunden werden.
Heimdall ist ein Dashboard mit dem du dir all deine Webanwendungen organisieren kannst. Es ist auch möglich eine Suchzeile für Google, Bing und DuckDuckGo einzubinden.
OpenVPN ist eine Opensource VPN Lösung. Diese kannst du dir in daheim installieren und im Anschluss aus der Ferne auf dein Netzwerk zugreifen.
Besonderheiten im LXC Container
OpenVPN in einem LXC Container zu installieren ist nicht ganz so einfach, da man hier am Proxmox Server selber ein par Einstellungen machen muss.
Installation
Erstelle dir als erstes einen neuen LXC Container. Nach dem erstellen installiere zunächst einmal die wichtigsten Updates.
apt-get update && apt-get upgrade -y
Einstellungen tätigen
Wenn die Updates installiert sind fahre den Container herunter, da man am Proxmox Server selber nun ein par zwei Einstellungen tätigen muss.
Schalte dich hierfür per Shell auf deinen Host auf und gib den folgenden Befehl ein. Denke aber daran die richtige Container Nummer anzugeben. 123 steht hier nur als Beispiel.
nano /etc/pve/lxc/123.conf
Füge am Ende der Datei diese zwei Zeilen ein.
lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net dev/net none bind,create=dir
Mit Strg + O speicherst du die Datei und mit Strg + X schließt du den Editor.
Jetzt müssen wir nur noch die Berechtigungen anpassen das machst du mit:
chown 100000:100000 /dev/net/tun
Kontrolliere im Anschluss ob die Berechtigungen auch richtig gesetzt wurden.
ls -l /dev/net/tun
#########Hier müsste nun diese Ausgabe am Bildschirm erscheinen#########
crw-rw-rw- 1 100000 100000 10, 200 Dec 22 13:26 /dev/net/tun
Wenn das passt kannst du den Container wieder starten entweder über die GUI oder per CLI mit
pct start 123
Wechsle nun wieder zur Shell des LXC Containers. Hier gibst du folgenden Befehle ein.
Nun wird das Skript heruntergeladen und ausgeführt.
Im ersten Schritt wird gefragt wie die Server Adresse lautet. Hier gibst du deine Domain oder DynDNS an.
Als zweitest wirst du gefragt mit welchem Protokoll OpenVPN arbeiten soll. Hier kannst du einfach mit Enter zum nächsten Schritt gehen. Es wird automatisch das UDP Protokoll verwendet.
Welcher Port soll OpenVPN verwenden? Dies kannst du in diesem Schritt angeben entweder du Bestätigst mit Enter, dann wird der Port 1194 verwendet oder du gibst einen anderen Port wie zum Beispiel 5987 an.
Der vorletzte Schritt heißt DNS. Hier kannst du auswählen welcher DNS Server verwendet wird. Standardmäßig ist es die Nummer 1.
Nun kannst du noch im letzten Schritt deinen ersten VPN User anlegen. Gib hierfür einfach den Namen ein den du hierfür vergeben möchtest.
Neue User anlegen
Um weitere User anlegen zu können musst du das Skript ausführbar machen. Dies machst du mit
chmod +x ./openvpn-install.sh
Jetzt kannst du das Skript mit diesem Befehl ausführen.
$ mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we'll need the current
password for the root user. If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.
You already have a root password set, so you can safely answer 'n'.
Change the root password? [Y/n] n
... skipping.
By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
... Success!
By default, MySQL comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
- Dropping test database...
ERROR 1008 (HY000) at line 1: Can't drop database 'test'; database doesn't exist
... Failed! Not critical, keep moving...
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MySQL
installation should now be secure.
Thanks for using MySQL!
Schritt 2 – Erhöhe die Sicherheit deines MySQL Servers
mysql -u root -p
create database wordpress;
create user wordpress@localhost identified by 'mein_passwort';
grant all privileges on wordpress.* to wordpress@localhost;
flush privileges;
exit;
Speicher und schließe die Datei, starte dann den Apache und MariaDB-Dienst und ermögliche ihnen, beim Booten zu starten:
sudo systemctl start apache2
sudo systemctl enable apache2
sudo systemctl start mysql
sudo systemctl enable mysql
MariaDB konfigurieren
Sicher zunächst die MariaDB-Installation mit dem folgenden Befehl:
sudo mysql_secure_installation
Beantworten alle Fragen wie unten gezeigt:
Enter current password for root (enter for none):
Set root password? [Y/n]: N
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]: Y
Reload privilege tables now? [Y/n]: Y
Sobald die MariaDB gesichert ist, melde dich bei der MariaDB-Shell an:
sudo mysql
Erstelle dann eine Datenbank und einen Benutzer für Mediawiki:
CREATE DATABASE mediadb;
CREATE USER 'media'@'localhost' IDENTIFIED BY 'password';
Als nächstes erteile dem mediadb alle Privilegien mit dem folgenden Befehl:
GRANT ALL ON mediadb.* TO 'media'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
Als nächstes leere die Privilegien und verlassen Sie die MariaDB-Shell:
FLUSH PRIVILEGES;
EXIT;
Mediawiki installieren
Lade zunächst die neueste Version von Mediawiki von der offiziellen Website herunter:
<VirtualHost *:80>
ServerAdmin admin@example.com
DocumentRoot /var/www/html/mediawiki/
ServerName Hier die IP des Servers eintragen
<Directory /var/www/html/mediawiki/>
Options +FollowSymLinks
AllowOverride All
</Directory>
ErrorLog /var/log/apache2/media-error_log
CustomLog /var/log/apache2/media-access_log common
</VirtualHost>
Speicher die Datei und aktiviere dann die virtuelle Hostdatei und das Apache Umschreibmodul mit dem folgenden Befehl:
sudo a2ensite mediawiki.conf
sudo a2enmod rewrite
Starte schließlich den Apache-Webserver neu, um die Änderungen vorzunehmen:
sudo systemctl restart apache2
Auf Mediawiki zugreifen
Öffne nun den Webbrowser und gebe die IP-Adresse ein. Du wirst auf die folgende Seite weitergeleitet:
Klicken Sie nun auf die Schaltfläche Wiki einrichten. Du solltest die folgende Seite sehen:
Wähle hier deine Wiki-Sprache und klicke auf die Schaltfläche Fortfahren. Du solltest die folgende Seite sehen:
Klicke nun auf die Schaltfläche Fortfahren. Du solltest die folgende Seite sehen:
Gebe nun die Datenbankdaten an und klicke auf die Schaltfläche Fortfahren. Du solltest die folgende Seite sehen:
Wähle nun die Speicher-Engine aus und klicken Sie auf die Schaltfläche Fortfahren. Du solltest die folgende Seite sehen:
Gebe nun deinen Wiki-Sitennamen, deinen Benutzernamen und dein Passwort ein. Klicke dann auf die Schaltfläche Fortfahren. Du solltest die folgende Seite sehen:
Markiere nun alle gewünschten Einstellungen und klicke im Anschluss auf die Schaltfläche Fortfahren. Du solltest die folgende Seite sehen:
Klicke nun auf die Schaltfläche Fortfahren, um die Installation zu starten. Du solltest die folgende Seite sehen:
Klicke nun auf die Schaltfläche Fortfahren. Du solltest die folgende Seite sehen:
Hier musst du die Datei LocalSettings.php herunterladen und in das MediaWiki-Stammverzeichnis legen.
/var/www/html/mediawiki
Öffne nun deinen Webbrowser und gebe die IP-Adresse ein. Du solltest deine MediaWiki-Seite im folgenden Bild sehen:
Weitere Domains hinzufügen
Wenn das Wiki von mehreren IPs/Hostnamen bzw Domains erreicht werden soll muss das noch konfiguriert werden. Öffne dazu mit dem Nanoeditor die Config
sudo sed -i "s/Options Indexes FollowSymLinks/Options FollowSymLinks/" /etc/apache2/apache2.conf
Starte Apache Service
sudo systemctl start apache2.service
Installiere Maria DB
sudo apt install mariadb-server mariadb-client -y
Maria DB Server Konfiguration
sudo mysql_secure_installation
Enter current password for root (enter for none): Just press the Enter
Set root password? [Y/n]: Y
New password: Gebe hier das Root Passwort ein
Re-enter new password: Repeat password
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]: Y
Reload privilege tables now? [Y/n]: Y
In diesem Beitrag zeige ich dir wie du dir dein eigenen Passwortsafe installieren kannst. Ich verwende hierfür Bitwarden_rs da man hier eine schöne Einstellungswebseite hat.