Yourls URL Shorter unter Linux installieren

apt install lamp-server^
mysql
CREATE DATABASE yourls; 
CREATE USER 'yourlsuser'@'localhost' IDENTIFIED BY 'password_here';
GRANT ALL PRIVILEGES ON yourls.* TO 'yourlsuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
apt install git
cd /var/www/
git clone https://github.com/YOURLS/YOURLS.git

mv YOURLS yourls
cd yourls/user
cp config-sample.php config.php

nano config.php
chown -R www-data:www-data /var/www/yourls
chmod -R 775 /var/www/yourls
nano /etc/apache2/apache2.conf

Change the: AllowOverride None to AllowOverride All
a2enmod rewrite
nano /etc/apache2/sites-available/yourls.conf
<VirtualHost *:80>
    ServerName short.domain.com
    DocumentRoot "/var/www/yourls"

    <Directory "/var/www/yourls">
        Require all granted
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>

   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined
   
</VirtualHost>
a2ensite yourls.conf
service apache2 restart 
http://domain.com/admin
chmod 0600 /var/www/yourls/user/config.php
apt install certbot python3-certbot-apache

certbot --apache -m master@domain.com -d cloud.domain.com

Nextcloud – Datenspeicher auf eine Mount Point umziehen

Ich wollte meinen Nextcloud Speicher auf mein NAS umziehen.

Bedeutet die Nextcloud läuft weiterhin auf einer VM nur die Hochgeladenen Dateien sollen auf dem NAS liegen.

Vorbereitungen

Als erstes musst du einen neuen User auf deinem NAS erstellen.

NAS Mounten

Gehe hierfür in den fstab

nano /etc/fstab
//IP-Adresse_vom_NAS/Freigabe_Ordner  /mountpoint_Verzeichniss cifs username=Username_vom_NAS,password=Passwort_vom_NAS,uid=33,gid=33 0 0

Systemlink erstellen

ln -s /Pfad/zum/MountPoint /Pfad/zum/symlink /Pfad/zum/Systemlink

Rechte setzen

chown -R www-data:www-data /Pfad/zum/Systemlink

chmod -R 755 /Pfad/zum/Systemlink

Nextcloud – Daten Automatisch löschen

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.

sudo chmod +x ./Skriptname.sh
sudo crontab -e
0 0 * * * /root/nextcloud_autodelete.sh > /var/log/nextcloud_autodelete_`date +\%Y-\%m-\%d_\%H:\%M:\%S-cron.log`


Heimdall installation unter Linux im Docker

Was ist Heimdall

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.

Installation

Docker

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

apt install docker.io docker-compose -y 

mkdir /heimdall

cd /heimdall

mkdir /heimdall-data

nano docker-compose.yml
version: "2.2"
services:
  heimdall:
    image: linuxserver/heimdall
    container_name: heimdall
    volumes:
      - /heimdall-data:/config
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Berlin
    ports:
      - 80:80
      - 443:443
    restart: unless-stopped
docker-compose up -d


OpenVPN in Proxmox LXC Container installieren

Was ist OpenVPN überhaupt?

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.

wget https://git.io/vpn -O openvpn-install.sh && bash openvpn-install.sh

OpenVPN installieren

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.

./openvpn-install.sh

Quellen

OpenVPN in LXC – Proxmox VE
openvpn-install/openvpn-install.sh at master · Nyr/openvpn-install · GitHub


Mitglieder aus einer AD Gruppe in eine andere AG Gruppe kopieren

Du möchtest alle Mitglieder aus einer AD-Gruppe in eine andere AD-Gruppe schmeißen? Dann füge das Skript einfach in der PowerShell ein.

Dies ist hilfreich wenn man im nachhinein z.B. einen Mailverteiler Gruppe erstellt hast. Hierfür musst du allerdings Admin Berechtigungen in der AD haben.

Quell_Gruppe: Die AD-Gruppe aus der die Mitglieder kopiert werden sollen

Ziel_Gruppe: Die AD-Gruppe in die die Mitglieder kopiert werden

$Quell_Gruppe = "Gruppe1"
$Ziel_Gruppe = "Gruppe2"



$Gruppe = Get-ADGroupMember $Quell_Gruppe | Select sAMAccountName
$Gruppe | ForEach { Add-ADGroupMember $Ziel_Gruppe -Members $_.sAMAccountName}

Anzahl der Bitlocker Keys aus der AD auslesen

Du möchtest die Anzahl der einzelnen Bitlocker Keys eines Clients aus der Ad auslesen. Dafür brauchst du einfach dieses Skript. Es geht einmal über die AD und gibt dir zum Schluss die Anzahl aus.

write-host "get-bitlockercomputer: Start"
$Bitlockerclients = @{}



$RootNC = ([ADSI]"LDAP://RootDSE").rootDomainNamingContext
$objSearcher = [adsisearcher]([ADSI]"GC://$RootNC")
$objSearcher.PageSize = 1000   
$objSearcher.filter = "(objectclass=msFVE-RecoveryInformation)"
$objSearcher.SearchScope = "subtree"
$objSearcher.PropertiesToLoad.Clear() | Out-Null   

write-host "get-bitlockercomputer: Search for Recovery Information"
[long]$volumes=0
$objSearcher.findall() | % {
	$volumes++
  	$computer = [ADSI](([adsi]($_.path)).parent) 
	$computerdn = $computer.distinguishedname[0]
	Write-Progress -Activity "Adding Computer $computerdn" -status $volumes
	
	If ($Bitlockerclients.item($computerdn)) {
		$Bitlockerclients.item($computerdn)++
	}
	Else {
		$Bitlockerclients.item($computerdn)=[int]1
	}
}
[long]$totalcomputer = $Bitlockerclients.count
# Find all Computers
write-host " Search for all Computers to generate list"
$objSearcher.filter = "(objectclass=Computer)"
$objSearcher.PropertiesToLoad.Add(“Name”) | Out-Null
$objSearcher.PropertiesToLoad.Add(“distinguishedname”) | Out-Null
$objSearcher.PropertiesToLoad.Add(“dNSHostName”) | Out-Null

[long]$matchcount = 0 
$objSearcher.findall() | % {
	Write-Progress -Activity ("Matching Computer " +$_.properties.name) -status $matchcount -percentcomplete ($matchcount/$totalcomputer*100)
	$result = "" | select computername,dNSHostName,distinguishedname,bitlockervolumes
	if ($_.properties.name) {$result.computername = $_.properties.name[0]}
	if ($_.properties.dnshostname) { $result.dNSHostName = $_.properties.dnshostname[0]}
	$result.distinguishedname = $_.properties.distinguishedname[0]
  	If ($Bitlockerclients.item($_.properties.distinguishedname[0])) {
		$result.bitlockervolumes = $Bitlockerclients.item($_.properties.distinguishedname[0])
		$matchcount++
	}
	else {
		$result.bitlockervolumes = $null
	}
	$result    
}
write-host "get-bitlockercomputer: End"

Quelle:

Get-BitlockerReport (msxfaq.de)

Raspberry Pi Image Sicherung

Du möchtest ein Image deines Raspberry Pis im laufenden Betrieb machen. Dann verwende folgende Befehle.

Sichern

Ermittle die Bezeichnung deiner SD-Karte

sudo fdisk -l

Erstelle das Image mit folgendem Befehl

sudo dd if=/dev/mmcblk0 of=/"Zielverzeichniss"/pibackup.img

Mit Datum:
sudo dd if=/dev/mmcblk0 of=/"Zielverzeichniss"/pibackup`date-l`.img

Mit Uhrzeit:
sudo dd if=/dev/mmcblk0 of=/"Zielverzeichniss"/pibackup`date +%H%M%S`.img

Wiederherstellen

sudo dd if=/"Quellverzeichnis"/pibackup.img of=/dev/"Name_der_SD-Karte"

Windows 10 Domain User automatisch anmelden

Du möchtest das ein Domain User an einem Client automatisch angemeldet wird. Dies ist leider nicht mehr so einfach über die Windows Boardmittel möglich und muss mittlerweile über die Registry gesetzt werden.

Registry öffnen

[Windows-Taste] + [r] regedit – eingeben und bestätigen

Folgendem Schlüssel wechseln

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

Parameter anpassen

DefaultUserName  Username Bsp.: it-hense.de\Autologon
DefaultPassword  Passwort Bsp.: Passwort123!
DefaultDomainName Domäne Bsp.: it-hense.de
AutoAdminLogon  auf Wert 1 setzen

Fertig

Nun sollte nach einem Systemreboot der Angelegte Benutzer automatisch anmelden.


PowerShell Befehle

Auslesen ob Computer in einer Domäne ist

Mit diesem Befehl gibt dir die Konsole den Domänen Namen zurück

Get-WmiObject -Class Win32_ComputerSystem | Select-Object Domain

Mit diesem gibt dir die Konsole nur ein true für ja der Computer ist in einer Domäne und false für nein ich bin in einer Workgroup

(Get-WmiObject -Class Win32_ComputerSystem).PartOfDomain

Auslesen wer auf einen Ordner Berechtigt ist.

(Get-Acl C:\Windows).Access

User aus einer AD Gruppe auslesen

Get-ADGroupMember -Identity AD-Gruppe | select name

Bild in Bas64 Convertieren

[convert]::ToBase64String((Get-Content D:\Images\image1.jpg -Encoding byte))


WordPress Cookie Plugin von Real Cookie Banner