- wsl2 + ubuntu 24
- simple installation
- simple usage via command line
- full control over configuration
- systemd enabled
- cronjobs enabled
- default remote smtp relay for all mailings
- databases included: mysql (+phpmyadmin), postgresql, oraclesql
- shared php.ini configuration for all versions
- switch php/cli version (globally and host based)
- access via all devices in your local network
- support for different networks
- real ssl certificates for all hosts and all registry.npmjs.orgdevices
- supports reverse proxy configuration
- native linux performance (can handle node_modules and vendor) with wsl2
- php debugging and profiling with xdebug
- we abuse our own public domain as a dns that maps to a local ip in order to prevent setting local hosts AND having the ability to access via smartphones/tablets from the same network
- dns a-records
- vielhuber.dev => 192.168.178.24
- *.vielhuber.dev => 192.168.178.24
- fritzbox (if needed)
- fritz.box > Heimnetz > Netzwerk > Netzwerkeinstellungen > DNS-Rebind-Schutz:
- vielhuber.de
- vielhuber.dev
- *.vielhuber.dev
- restart
- fritz.box > Heimnetz > Netzwerk > Netzwerkeinstellungen > DNS-Rebind-Schutz:
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared jammy main' | sudo tee /etc/apt/sources.list.d/cloudflared.listsudo apt-get updatesudo apt-get install cloudflaredcloudflared tunnel logincloudflared tunnel create TUNNELcloudflared tunnel route dns --overwrite-dns TUNNEL rebuhleiv.xyz// admin interface is on cloudflare.com > Zero Trust > Networks > Tunnelscloudflared tunnel run --url http://localhost:8000 TUNNEL
- run powershell as adminstrator
PowerShell -Command "Set-ExecutionPolicy RemoteSigned -scope Process; iwr -useb https://raw.githubusercontent.com/gerardog/gsudo/master/installgsudo.ps1 | iex"- uncomment
"/mnt/c/Users/David/apps/gsudo/gsudo.exe" -d "echo 127.0.0.1 $PROJECT.vielhuber.dev >> %windir%\System32\drivers\etc\hosts"fromlamp
- not used, because we use firewall.ps1 (see below)
Windows Defender Firewall mit erweiterter SicherheitEingehende Regeln > Neue Regel > Port > TCP > 80, 443
- open PowerShell as admin
- wsl --install
- Windows Store > "Ubuntu"
- available versions: https://blogs.msdn.microsoft.com/commandline/2018/07/09/upgrading-ubuntu/
- we use the plain "Ubuntu" version and upgrade it inplace with
sudo do-release-upgrade
- UNIX username: root (cancel when prompting for a new default username)
- Change password with
passwd: "root" - Wenn nachträglich auf "root" umgestellt werden soll
wsl -u rootecho -e "[user]\ndefault=root" > /etc/wsl.confwsl --shutdownwsl
- Netzlaufwerk "\wsl$\Ubuntu" auf W: mappen und umbenennen: "WSL"
wsl --list --verbosewsl --set-default-version 2wsl --set-version Ubuntu 2wsl --setdefault Ubuntuwsl --list --verbose
- Run PowerShell as admin
wsl --shutdownwsl --listwsl --export "Ubuntu" D:\Ubuntu.tarwsl --import "Ubuntu" D:\ D:\Ubuntu.tar
wsl --update# kernel upgradesudo apt-get update --allow-releaseinfo-changesudo apt-get upgradesudo apt dist-upgradesudo apt autoremovesudo apt cleansudo do-release-upgrade- If this hangs:
sudo apt remove snapd
- If this hangs:
lsb_release -a
mkdir D:\backupwsl --export Ubuntu D:\backup\ubuntu.tarwsl --unregister Ubuntumkdir D:\wslmkdir D:\wsl\ubuntu-latestwsl --import Ubuntu D:\wsl\ubuntu-latest\ D:\backup\ubuntu.tarwsl --setdefault Ubuntu
wsl --import Ubuntu-1 D:\wsl\ubuntu-1\ D:\backup\ubuntu-1.tarwsl --import Ubuntu-2 D:\wsl\ubuntu-2\ D:\backup\ubuntu-2.tar- ...
- https://docs.microsoft.com/en-us/windows/wsl/vhd-size
- Powershell (Admin)
wsl --shutdownGet-AppxPackage -Name "*Ubuntu*" | Select PackageFamilyName- if default:
C:\Users\David\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx - if moved:
D:\wsl\ubuntu-latest\ext4.vhdx
- CMD (Admin)
diskpartSelect vdisk file="D:\wsl\ubuntu-latest\ext4.vhdx"detail vdiskexpand vdisk maximum=416000exit
- WSL
sudo mount -t devtmpfs none /devmount | grep ext4# note sdX (where X = a|b|c)sudo resize2fs /dev/sdc 416000Mdf -h
sudo visudo- comment out
%sudo ALL=(ALL:ALL) ALL %sudo ALL=(ALL:ALL) NOPASSWD:ALL
sudo apt-get install nano curl sshpass zip unzip htop ruby libnotify-bin net-tools pv csh cifs-utils apt-utils software-properties-common iputils-ping gettext sshpass lsof yq
sudo systemctl disable nginxsudo systemctl disable --now nginx
sudo apt-get -y install redis-serversudo systemctl start redis-serversudo systemctl enable redis-serverredis-clisudo systemctl restart redis.serviceredis-cli ping
- Option #1 (with gui in windows)
- Download Docker desktop: https://hub.docker.com/editions/community/docker-ce-desktop-windows/
- Installation: "Install required Windows components for WSL 2"
- Login with account
- Settings > General > Start Docker Desktop when you sign in to your computer: an
- Settings > General > Open Docker Dashboard when Docker Desktop starts: aus
- Settings > General > "Use the WSL 2 based engine"
- Image verkleinern
- PowerShell (Administrator)
docker system df -vdocker builder prune -adocker image prune -f- Docker Desktop beenden
Optimize-VHD -Path "E:\docker\DockerDesktopWSL\disk\docker_data.vhdx" -Mode Full
- Image verschieben
- Docker pausieren
- Umgebungsvariablen bearbeiten > User > Zu PATH
C:\Windows\System32hinzufügen - Docker > Settings > Resources > Disk image location:
E:\docker - Falls er es nicht schluckt:
C:\Users\David\AppData\Local\Docker\wsl\disk\*.vhdxmanuell löschen
- Settings > Resources -> WSL Integration -> "Enable integration with my default WSL distro",
- Test inside WSL
docker versiondocker compose version
- Option #2 (run docker natively inside wsl)
- Install exactly like on
https://docs.docker.com/engine/install/ubuntu/
- Install exactly like on
- download vcxsrv (https://sourceforge.net/projects/vcxsrv/files/latest/download)
- Installation: Full
- Not needed anymore
nano ~/.bashrc# xserverexport DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0export LIBGL_ALWAYS_INDIRECT=1source ~/.bashrc
- XLaunch
- Multiple Windows
- Display number -1
- Start no client
- Disable access control: an
- Zugriff zulassen
- Windows Defender Firwall mit erweiterter Sicherheit > Eingehende Regeln > "VcXsrv windows xserver" 2x rot Doppelklick > Verbindung zulassen
- Autostart
- Aufgabenplanung
- "_VCXSRV"
- Nur ausführen, wenn der Benutzer angemeldet ist
- Trigger: Bei Anmeldung
- Aktion: Programm starten
- "C:\Program Files\VcXsrv\vcxsrv.exe" :0 -multiwindow -ac -clipboard -wgl
- install desktop
- apt-get update
- apt-get install gedit
- gedit
- apt-get install xfce4
- startxfce4
- Applications > Settings > Screensaver > Mode: Disable Screensaver
- change theme
sudo apt install gnome-tweaksgnome-tweaks- Appearance > Applications: HighContrastInverse
- Window Titlebars > Maximize / Minimize
- Fonts > Scaling Factor > 0.75
- Falls es nicht geöffnet wird, WSL neustarten
- fix glitches
- updated nvidia drivers (via "GeForce Experience")
sudo apt updatesudo apt upgradewsl --shutdown
nano /etc/wsl.conf[boot]systemd=true- cmd (admin):
wsl --shutdown systemctl status
nano ~/.bash_profile
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
curl -sSL https://ngrok-agent.s3.amazonaws.com/ngrok.asc \
| sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null \
&& echo "deb https://ngrok-agent.s3.amazonaws.com buster main" \
| sudo tee /etc/apt/sources.list.d/ngrok.list \
&& sudo apt update \
&& sudo apt install ngrok
-
ngrok help -
single domain:
ngrok config add-authtoken AUTH_TOKENngrok http 8080 --url DEV_DOMAIN
-
multiple domains/ports:
ngrok config edit
- tunnels:
api1:
addr: 8080
schemes:
- https
proto: http
api2:
addr: 8931
schemes:
- https
proto: http
-
ngrok start --all -
open the dev domains once and accept the button once
- https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=WSL-Ubuntu&target_version=2.0&target_type=deb_local
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pinsudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600wget https://developer.download.nvidia.com/compute/cuda/12.8.1/local_installers/cuda-repo-wsl-ubuntu-12-8-local_12.8.1-1_amd64.debsudo dpkg -i cuda-repo-wsl-ubuntu-12-8-local_12.8.1-1_amd64.debsudo cp /var/cuda-repo-wsl-ubuntu-12-8-local/cuda-*-keyring.gpg /usr/share/keyrings/sudo apt-get updatesudo apt-get -y install cuda-toolkit-12-8sudo nano ~/.bashrc# cudaexport PATH=/usr/local/cuda/bin${PATH:+:${PATH}}export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}source ~/.bashrcnvidia-sminvcc --version
- install Remote - WSL Installieren
- Erweiterungen > Wolke: Lokale Erweiterungen in WSL - Ubuntu installieren > Alle markieren
- Innerhalb von WSL ausführen:
code .
cd /usr/localrm -rf ./smartgitwget https://downloads.syntevo.com/downloads/smartgit/smartgit-linux-24_1_2.tar.gztar xzf smartgit-linux-*.tar.gzrm smartgit-linux-*.tar.gznano /usr/local/bin/sgit( /usr/local/smartgit/bin/smartgit.sh & ) > /dev/null 2>&1chmod +x /usr/local/bin/sgitsgit- Register existing license: /var/www/lamp/syntevo-non-commercial.lic
- User Name: David Vielhuber
- Email: david@vielhuber.de
- Use SmartGit as SSH client
- Style: Working tree (file oriented)
- Window > Repositories bis Output (alles anklicken/anzeigen)
- Edit > Preferences > Allow modifying pushed commits (e.g. forced-push)
- Edit > Preferences > User Interface > Dark (independent of system)
- Edit > Preferences > User Interface > On start-up: Don't reopen the last used repositories
- Edit > Preferences > User Interface > Built-in Text Editors > Font Size: 9
- Edit > Preferences > Git Config > Fetch and Pull > Rebase local branch onto fetched changes
- Pro Repository: AI Button > ChatGPT API Key hinterlegen
- Repository > Search for Repositories > /var/www
- Manuelles Umbenennen falscher Namen ("www - ...", gtbabel 3x)
- Optional: Alle Repositories: Rechte Maustaste: Mark as favorite (dies erhöht Performance durch Background Refresh)
- Wenn non-commercial Lizenz abläuft:
- https://www.syntevo.com/register-non-commercial/ > register with github
- alternative: rm -rf ~/.config/smartgit/ > download/install/use v21
- Wenn es Probleme mit GTK gibt:
nano ~/.config/smartgit/smartgit.vmoptions,swtver=4932hinzufügen
- Falls Updateprozess innerhalb des Programms scheitert:
- Einfach neue tar.gz downloaden, entzippen (und bestehende Dateien überschreiben)
touch ~/.hushlogin
sudo nano ~/.bashrc
# colorize and show git branch name
alias ls='ls --color'
LS_COLORS='di=1:fi=0:ln=31:pi=5:so=5:bd=5:cd=5:or=31:mi=0:ex=35:*.rpm=90'
export LS_COLORS
parse_git_branch() { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'; }
parse_git_tag() { git describe --exact-match --tags 2> /dev/null | sed -e 's/\(.*\)/[\1]/'; }
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u\[\033[00m\]@\[\033[01;31m\]\h\[\033[00m\]~\[\e[0;36m\]\t\[\033[00m\]~\[\033[01;34m\]\w\[\033[01;31m\]$(parse_git_branch)\[\033[01;33m\]$(parse_git_tag)\[\033[00m\]\$ '
source ~/.bashrc
sudo apt-get install apache2 mysql-serversudo systemctl start apache2sudo systemctl start mysqlsudo systemctl enable apache2sudo systemctl enable mysql- run mysql_secure_installation
- the following steps fixes this error: https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-22-04#step-2-configuring-mysql
sudo mysqlALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';exitsudo mysql_secure_installation- Validate password plugin: n
- mysql-root-Passwort: root
- Remove anonymous users: y
- Disallow root login remotely: n
- Remove test database: y
- Reload privilege tables: y
mysql -u root -pALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;exit
- allow login to root user without sudo
sudo mysql -u rootDROP USER 'root'@'localhost';CREATE USER 'root'@'%' IDENTIFIED BY '';GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;FLUSH PRIVILEGES;EXITmysql -u rootSET PASSWORD FOR root = 'root';EXIT
sudo add-apt-repository ppa:ondrej/phpsudo apt-get update
sudo apt-get install -y php5.6 php5.6-fpm libapache2-mod-php5.6 php5.6-mysql php5.6-cli php5.6-common php5.6-xdebug php5.6-mbstring php5.6-xmlrpc php5.6-gd php5.6-intl php5.6-xml php5.6-mysql php5.6-mcrypt php5.6-zip php5.6-soap php5.6-curl php5.6-bcmath php5.6-xml php5.6-sqlite php5.6-imap php5.6-opcache php5.6-pgsql php5.6-pdo php5.6-gd php5.6-imagicksudo apt-get install -y php7.0 php7.0-fpm libapache2-mod-php7.0 php7.0-mysql php7.0-cli php7.0-common php7.0-xdebug php7.0-mbstring php7.0-xmlrpc php7.0-gd php7.0-intl php7.0-xml php7.0-mysql php7.0-mcrypt php7.0-zip php7.0-soap php7.0-curl php7.0-bcmath php7.0-xml php7.0-sqlite php7.0-imap php7.0-opcache php7.0-pgsql php7.0-pdo php7.0-gd php7.0-imagicksudo apt-get install -y php7.1 php7.1-fpm libapache2-mod-php7.1 php7.1-mysql php7.1-cli php7.1-common php7.1-xdebug php7.1-mbstring php7.1-xmlrpc php7.1-gd php7.1-intl php7.1-xml php7.1-mysql php7.1-mcrypt php7.1-zip php7.1-soap php7.1-curl php7.1-bcmath php7.1-xml php7.1-sqlite php7.1-imap php7.1-opcache php7.1-pgsql php7.1-pdo php7.1-gd php7.1-imagicksudo apt-get install -y php7.2 php7.2-fpm libapache2-mod-php7.2 php7.2-mysql php7.2-cli php7.2-common php7.2-xdebug php7.2-mbstring php7.2-xmlrpc php7.2-gd php7.2-intl php7.2-xml php7.2-mysql php7.2-zip php7.2-soap php7.2-curl php7.2-bcmath php7.2-xml php7.2-sqlite php7.2-imap php7.2-opcache php7.2-pgsql php7.2-pdo php7.2-gd php7.2-imagicksudo apt-get install -y php7.3 php7.3-fpm libapache2-mod-php7.3 php7.3-mysql php7.3-cli php7.3-common php7.3-xdebug php7.3-mbstring php7.3-xmlrpc php7.3-gd php7.3-intl php7.3-xml php7.3-mysql php7.3-zip php7.3-soap php7.3-curl php7.3-bcmath php7.3-xml php7.3-sqlite php7.3-imap php7.3-opcache php7.3-pgsql php7.3-pdo php7.3-gd php7.3-imagicksudo apt-get install -y php7.4 php7.4-fpm libapache2-mod-php7.4 php7.4-mysql php7.4-cli php7.4-common php7.4-xdebug php7.4-mbstring php7.4-xmlrpc php7.4-gd php7.4-intl php7.4-xml php7.4-mysql php7.4-zip php7.4-soap php7.4-curl php7.4-bcmath php7.4-xml php7.4-sqlite php7.4-imap php7.4-opcache php7.4-pgsql php7.4-pdo php7.4-gd php7.4-imagicksudo apt-get install -y php8.0 php8.0-fpm libapache2-mod-php8.0 php8.0-mysql php8.0-cli php8.0-common php8.0-xdebug php8.0-mbstring php8.0-xmlrpc php8.0-gd php8.0-intl php8.0-xml php8.0-mysql php8.0-zip php8.0-soap php8.0-curl php8.0-bcmath php8.0-xml php8.0-sqlite php8.0-imap php8.0-opcache php8.0-pgsql php8.0-pdo php8.0-gd php8.0-imagicksudo apt-get install -y php8.1 php8.1-fpm libapache2-mod-php8.1 php8.1-mysql php8.1-cli php8.1-common php8.1-xdebug php8.1-mbstring php8.1-xmlrpc php8.1-gd php8.1-intl php8.1-xml php8.1-mysql php8.1-zip php8.1-soap php8.1-curl php8.1-bcmath php8.1-xml php8.1-sqlite php8.1-imap php8.1-opcache php8.1-pgsql php8.1-pdo php8.1-gd php8.1-imagicksudo apt-get install -y php8.2 php8.2-fpm libapache2-mod-php8.2 php8.2-mysql php8.2-cli php8.2-common php8.2-xdebug php8.2-mbstring php8.2-xmlrpc php8.2-gd php8.2-intl php8.2-xml php8.2-mysql php8.2-zip php8.2-soap php8.2-curl php8.2-bcmath php8.2-xml php8.2-sqlite php8.2-imap php8.2-opcache php8.2-pgsql php8.2-pdo php8.2-gd php8.2-imagicksudo apt-get install -y php8.3 php8.3-fpm libapache2-mod-php8.3 php8.3-mysql php8.3-cli php8.3-common php8.3-xdebug php8.3-mbstring php8.3-xmlrpc php8.3-gd php8.3-intl php8.3-xml php8.3-mysql php8.3-zip php8.3-soap php8.3-curl php8.3-bcmath php8.3-xml php8.3-sqlite php8.3-imap php8.3-opcache php8.3-pgsql php8.3-pdo php8.3-gd php8.3-imagicksudo apt-get install -y php8.4 php8.4-fpm libapache2-mod-php8.4 php8.4-mysql php8.4-cli php8.4-common php8.4-xdebug php8.4-mbstring php8.4-xmlrpc php8.4-gd php8.4-intl php8.4-xml php8.4-mysql php8.4-zip php8.4-soap php8.4-curl php8.4-bcmath php8.4-xml php8.4-sqlite php8.4-imap php8.4-opcache php8.4-pgsql php8.4-pdo php8.4-gd php8.4-imagicksudo apt-get install -y php8.5 php8.5-fpm libapache2-mod-php8.5 php8.5-mysql php8.5-cli php8.5-common php8.5-xdebug php8.5-mbstring php8.5-xmlrpc php8.5-gd php8.5-intl php8.5-xml php8.5-mysql php8.5-zip php8.5-soap php8.5-curl php8.5-bcmath php8.5-xml php8.5-sqlite php8.5-imap php8.5-pgsql php8.5-pdo php8.5-gd php8.5-imagick- note: extensions must not be uncommented in php.ini but installed on the command line
sudo a2enmod rewritesudo a2enmod sslsudo a2enmod vhost_aliassudo a2enmod authz_groupfilesudo a2enmod headerssudo a2enmod cachesudo a2enmod expiressudo a2enmod actionssudo a2enmod aliassudo a2enmod proxy_fcgisudo a2enmod proxysudo a2enmod proxy_htmlsudo a2enmod proxy_httpsudo a2enmod xml2encsudo systemctl restart apache2
- setup with presets from dbf3d6844b3e6159d6b7
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnfsudo nano /etc/apache2/apache2.confsudo nano /etc/php/X.X/fpm/pool.d/www.conf(important❗)(not needed, see below)sudo nano /etc/php/X.X/apache2/php.ini(not needed, see below)sudo nano /etc/php/X.X/cli/php.ini
sudo a2dissite 000-default.confnano /etc/apache2/sites-available/000-blank.conf
<VirtualHost *:80>
DocumentRoot /var/www
<Directory /var/www>
Options +Indexes
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /var/www
<Directory /var/www>
Options +Indexes
AllowOverride None
Require all granted
</Directory>
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/vielhuber.dev/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/vielhuber.dev/privkey.pem
</VirtualHost>
sudo a2ensite 000-blank.confsudo systemctl reload apache2- test https://foo.vielhuber.dev / http://192.168.0.2
sudo apt install certbot python3-certbot-dns-cloudflarepip install --upgrade pyOpenSSL cryptography certbot certbot-dns-cloudflaremkdir -p ~/.secrets/certbotnano ~/.secrets/certbot/cloudflare.inidns_cloudflare_api_token = YOUR_CLOUDFLARE_API_TOKEN_WITH_EDIT_ZONE_DNS_PERMISSIONSchmod 600 ~/.secrets/certbot/cloudflare.inicertbot certonly --dns-cloudflare --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini -d '*.vielhuber.dev' -d vielhuber.dev --agree-tos --email david@vielhuber.de --dns-cloudflare-propagation-seconds 60 --non-interactivecertbot renew --dry-runsudo mv /etc/cron.d/certbot /etc/cron.d/certbot.disabledexport VISUAL=nano; crontab -e0 12 * * * certbot renew --quiet
sudo apt-get updatesudo apt-get install -y wget apt-transport-https software-properties-commonsource /etc/os-releasewget -q https://packages.microsoft.com/config/ubuntu/$VERSION_ID/packages-microsoft-prod.debsudo dpkg -i packages-microsoft-prod.debrm packages-microsoft-prod.debsudo apt-get updatesudo apt-get install -y powershellpwsh
sudo apt-get install postfix- General type: "Internet Site"
- System mail name: "vielhuber.de"
sudo apt install mailutilssudo dpkg-reconfigure postfix- General type: "Internet Site"
- System mail name: "vielhuber.de"
- Root mail recipient: OK
- Other destinations: OK
- Force synchronous updates: NO
- Local networks: OK
- Mailbox size limit: OK
- Local address extension: OK
- Internet protocols: "ipv4"
sudo nano /etc/postfix/main.cf
myhostname = vielhuber.de
mydestination =
relayhost = [sslout.df.eu]:587
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_use_tls = yes
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
sudo nano /etc/postfix/sasl_passwd[sslout.df.eu]:587 smtp@vielhuber.de:xxx
sudo postmap /etc/postfix/sasl_passwdsudo systemctl restart postfixsudo systemctl restart rsyslogsudo systemctl enable postfixsudo systemctl enable rsyslogecho "Das ist ein Test" | mail -s "Test bestanden" -a "From: smtp@vielhuber.de" david@vielhuber.desudo nano /etc/php/custom.inisendmail_path = "/usr/sbin/sendmail -t -i"
wget https://github.com/mydumper/mydumper/releases/download/v0.21.3-1/mydumper_0.21.3-1.noble_amd64.debsudo dpkg -i mydumper_*.debrm mydumper_*.debmydumper --version
sudo apt-get install ncducd /ncdu --exclude /mnt
nano ~/.bashrc- https://gist.github.com/vielhuber/021453a7e908f9487917835107ad6ce7
source ~/.bashrc- now place
.nvmrc/.phprcwith the version (e.g.12.10.0/8.1) in the folder, where yourpackage.json/composer.jsonlays and.envrcwithvenv(or your environment name)
touch /var/log/php-error.logchmod +x /var/log/php-error.log- in combination with
error_login php.ini logging now works for both php fpm (this is always the case for specific versions) and php as an apache module (this is always the case for general version)
mkdir -p /tmp/xdebug
sudo nano /etc/php/custom.ini
user_ini.filename =
max_execution_time = 4800
max_input_time = 900
post_max_size = 800M
memory_limit = 4096M
upload_max_filesize = 800M
max_input_vars = 100000
max_file_uploads = 5000
realpath_cache_size = 4M
;allow_url_include = On
;allow_url_fopen = On
date.timezone = 'Europe/Berlin'
display_errors = On
error_log = /var/log/php-error.log
;error_reporting = E_ALL & ~E_NOTICE
error_reporting = E_ALL
phar.readonly = 0
upload_tmp_dir = '/tmp'
opcache.enable=1
opcache.enable_cli=0
opcache.memory_consumption=512
opcache.interned_strings_buffer=64
opcache.max_accelerated_files=32531
opcache.save_comments=1
opcache.fast_shutdown=0
opcache.max_file_size=0
; we set this to 1 so that we can set revalidate_freq on a project basis to a higher value
opcache.validate_timestamps=1
opcache.revalidate_freq=2
[xdebug]
; mode (see: https://xdebug.org/docs/all_settings#mode)
; reasonable default
xdebug.mode=debug,profile
; disabled
;xdebug.mode=off
; step debugging
;xdebug.mode=debug
; performance profiling (be aware of load/space)
;xdebug.mode=profile
; trace profiling (record args)
;xdebug.mode=trace
; starting mode
; always (not recommended)
;xdebug.start_with_request=yes
; only when specific get parameters / cookies are set
; (?XDEBUG_TRIGGER=1, ?XDEBUG_PROFILE=1, ?XDEBUG_TRACE=1, ?XDEBUG_SESSION=1)
; this is best in conjunction with Chrome extension "Xdebug helper"
xdebug.start_with_request=trigger
; folder for analyzing profile dumps
xdebug.output_dir="/tmp/xdebug"
; not needed, since it is already in /etc/php/7.4/fpm/conf.d/20-xdebug.ini
;zend_extension=xdebug.so
ln -s /etc/php/custom.ini /etc/php/5.6/apache2/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/7.0/apache2/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/7.1/apache2/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/7.2/apache2/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/7.3/apache2/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/7.4/apache2/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/8.0/apache2/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/8.1/apache2/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/8.2/apache2/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/8.3/apache2/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/8.4/apache2/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/8.5/apache2/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/5.6/fpm/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/7.0/fpm/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/7.1/fpm/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/7.2/fpm/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/7.3/fpm/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/7.4/fpm/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/8.0/fpm/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/8.1/fpm/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/8.2/fpm/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/8.3/fpm/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/8.4/fpm/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/8.5/fpm/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/5.6/cli/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/7.0/cli/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/7.1/cli/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/7.2/cli/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/7.3/cli/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/7.4/cli/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/8.0/cli/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/8.1/cli/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/8.2/cli/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/8.3/cli/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/8.4/cli/conf.d/custom.iniln -s /etc/php/custom.ini /etc/php/8.5/cli/conf.d/custom.ini
- reset
chown -R root:root /var/wwwchmod 00755 /varchmod 00755 /var/wwwfind /var/www -type d -exec chmod 00755 {} \;find /var/www -type f -exec chmod 00644 {} \;
- run php as root
nano /etc/php/5.6/fpm/pool.d/www.confnano /etc/php/7.0/fpm/pool.d/www.confnano /etc/php/7.1/fpm/pool.d/www.confnano /etc/php/7.2/fpm/pool.d/www.confnano /etc/php/7.3/fpm/pool.d/www.confnano /etc/php/7.4/fpm/pool.d/www.confnano /etc/php/8.0/fpm/pool.d/www.confnano /etc/php/8.1/fpm/pool.d/www.confnano /etc/php/8.2/fpm/pool.d/www.confnano /etc/php/8.3/fpm/pool.d/www.confnano /etc/php/8.4/fpm/pool.d/www.confnano /etc/php/8.5/fpm/pool.d/www.conf- be aware: comment out with ";" instead of "#" :)
user = rootgroup = root
- be aware: comment out with ";" instead of "#" :)
nano /etc/init.d/php5.6-fpmnano /etc/init.d/php7.0-fpmnano /etc/init.d/php7.1-fpmnano /etc/init.d/php7.2-fpmnano /etc/init.d/php7.3-fpmnano /etc/init.d/php7.4-fpmnano /etc/init.d/php8.0-fpmnano /etc/init.d/php8.1-fpmnano /etc/init.d/php8.2-fpmnano /etc/init.d/php8.3-fpmnano /etc/init.d/php8.4-fpmnano /etc/init.d/php8.5-fpmDAEMON_ARGS="-R --daemonize --fpm-config $CONFFILE"
sudo systemctl edit php5.6-fpmsudo systemctl edit php7.0-fpmsudo systemctl edit php7.1-fpmsudo systemctl edit php7.2-fpmsudo systemctl edit php7.3-fpmsudo systemctl edit php7.4-fpmsudo systemctl edit php8.0-fpmsudo systemctl edit php8.1-fpmsudo systemctl edit php8.2-fpmsudo systemctl edit php8.3-fpmsudo systemctl edit php8.4-fpmsudo systemctl edit php8.5-fpm- Oberhalb einfügen:
[Service]ExecStart=ExecStart=/usr/sbin/php-fpm5.6 -R --nodaemonize --fpm-config /etc/php/5.6/fpm/php-fpm.conf[Service]ExecStart=ExecStart=/usr/sbin/php-fpm7.0 -R --nodaemonize --fpm-config /etc/php/7.0/fpm/php-fpm.conf[Service]ExecStart=ExecStart=/usr/sbin/php-fpm7.1 -R --nodaemonize --fpm-config /etc/php/7.1/fpm/php-fpm.conf[Service]ExecStart=ExecStart=/usr/sbin/php-fpm7.2 -R --nodaemonize --fpm-config /etc/php/7.2/fpm/php-fpm.conf[Service]ExecStart=ExecStart=/usr/sbin/php-fpm7.3 -R --nodaemonize --fpm-config /etc/php/7.3/fpm/php-fpm.conf[Service]ExecStart=ExecStart=/usr/sbin/php-fpm7.4 -R --nodaemonize --fpm-config /etc/php/7.4/fpm/php-fpm.conf[Service]ExecStart=ExecStart=/usr/sbin/php-fpm8.0 -R --nodaemonize --fpm-config /etc/php/8.0/fpm/php-fpm.conf[Service]ExecStart=ExecStart=/usr/sbin/php-fpm8.1 -R --nodaemonize --fpm-config /etc/php/8.1/fpm/php-fpm.conf[Service]ExecStart=ExecStart=/usr/sbin/php-fpm8.2 -R --nodaemonize --fpm-config /etc/php/8.2/fpm/php-fpm.conf[Service]ExecStart=ExecStart=/usr/sbin/php-fpm8.3 -R --nodaemonize --fpm-config /etc/php/8.3/fpm/php-fpm.conf[Service]ExecStart=ExecStart=/usr/sbin/php-fpm8.4 -R --nodaemonize --fpm-config /etc/php/8.4/fpm/php-fpm.conf[Service]ExecStart=ExecStart=/usr/sbin/php-fpm8.5 -R --nodaemonize --fpm-config /etc/php/8.5/fpm/php-fpm.conf
systemctl restart php5.6-fpmsystemctl restart php7.0-fpmsystemctl restart php7.1-fpmsystemctl restart php7.2-fpmsystemctl restart php7.3-fpmsystemctl restart php7.4-fpmsystemctl restart php8.0-fpmsystemctl restart php8.1-fpmsystemctl restart php8.2-fpmsystemctl restart php8.3-fpmsystemctl restart php8.4-fpmsystemctl restart php8.5-fpmsystemctl enable php5.6-fpmsystemctl enable php7.0-fpmsystemctl enable php7.1-fpmsystemctl enable php7.2-fpmsystemctl enable php7.3-fpmsystemctl enable php7.4-fpmsystemctl enable php8.0-fpmsystemctl enable php8.1-fpmsystemctl enable php8.2-fpmsystemctl enable php8.3-fpmsystemctl enable php8.4-fpmsystemctl enable php8.5-fpm
sudo nano /etc/apache2/apache2.conf- AcceptFilter https none
- AcceptFilter http none
sudo systemctl stop mysqlsudo usermod -d /var/lib/mysql/ mysql
- if fonts are garbled:
sudo fc-cache -f -v
- apache not reachable
- \wsl$\Ubuntu\var\www\lamp\firewall.ps1 anlegen mit Inhalt von microsoft/WSL#4150 (comment)
- Ports in Datei erweitern:
$ports=@(80,443,10000,3000,3009,5000,8080,9090,3306); - Aufgabenplanung
- "_WSL FIREWALL"
- Bei Anmeldung
- Verzögern für 10 Minuten
- Programm starten
- PowerShell.exe -File \wsl$\Ubuntu\var\www\lamp\firewall.ps1
- Mit höchsten Privilegien ausführen
- OBSOLET: etc/hosts: 172.31.142.215 ***.vielhuber.de
- OBSOLET: Oder alternativ bei DF von 192.168.0.2 auf 172.31.142.215 setzen (muss ich später wieder rückgängig machen!)
- OBSOLET: etc/hosts: #127.0.0.1 localhost und #::1 localhost einkommentieren
- php error
mkdir -p /run/php/
- /tmp clean
find /tmp -ctime +2 -exec rm -rf {} +
- DISABLED: run startup scripts
/etc/wsl.conf[boot]command="/var/www/lamp/start.sh >> /var/www/lamp/start.log 2>&1"
- DISABLED: disable PATH import on WSL
- Don't do this, since
code .etc. does not work anymore /etc/wsl.conf[interop]appendWindowsPath=false
- Don't do this, since
- remove zone identifier files
find . -name "*:Zone.Identifier" -type f -delete
- ram overload
- you need a lot of ram on your machine
- create
%UserProfile%\.wslconfig
[wsl2] memory=24GB # choose a reasonable amount of ram (over 10GB), which your local machine has free all the time #swap=16GB # not needed localhostForwarding=true - wsl hangs after a while / vscode hangs
- Docker > Settings > Start Docker Desktop when you log in: aus
- NOT USED: WIN+R > SystemPropertiesAdvanced > Erweitert > Leistung > Einstellungen... > Erweitert > Virtueller Arbeitsspeicher > Ändern... > Dateigröße für alle Laufwerke automatisch verwalten: aus & C: > Benutzerdefinierte Größe: 800 MB - 1024 MB; CMD als Admin: wmic computersystem where name="%computername%" set AutomaticManagedPagefile=false
sudo systemctl enable cron
export VISUAL=nano; crontab -e0 4 * * * source $HOME/.bashrc; /mnt/c/Users/David/OneDrive/DOCS/SCRIPTS/VODAFONE/cron.sh > /mnt/c/Users/David/OneDrive/DOCS/SCRIPTS/VODAFONE/cron.log 2>&1cron.sh
#!/usr/bin/env bash
/root/.nvm/versions/node/v23.5.0/bin/node --env-file=/mnt/c/Users/David/OneDrive/DOCS/SCRIPTS/VODAFONE/.env /mnt/c/Users/David/OneDrive/DOCS/SCRIPTS/VODAFONE/stagehand.jsexport VISUAL=nano; crontab -e0 3 * * 1 source $HOME/.bashrc; /usr/bin/wget "https://vielhuber.dev/wp-content/themes/vielhuber/_bills/sync.php" >/dev/null 2>&1
export VISUAL=nano; crontab -e0 2 * * 0 /mnt/c/Users/David/OneDrive/DOCS/PROJEKTE/FACHLEHRER/BACKUP/script.sh > /mnt/c/Users/David/OneDrive/DOCS/PROJEKTE/FACHLEHRER/BACKUP/script.log
sudo php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"sudo php composer-setup.phpsudo php -r "unlink('composer-setup.php');"sudo mv composer.phar /usr/local/bin/composer- hide sudo message:
sudo nano ~/.bashrc# hide composer sudo messageexport COMPOSER_ALLOW_SUPERUSER=1source ~/.bashrc
composer self-updatecomposer --version# 2composer config --global --auth github-oauth.github.com *TOKEN*(siehe Zugangsdaten)
- nvm
sudo curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash- restart terminal
nvm --versionnvm ls- install/upgrade new/specific node versions
nvm install nodenvm install --ltsnvm install 16.17.0nvm install 14.18.0nvm install 12.10.0nvm install 10.16.3nvm alias default 16.17.0nvm use 16.17.0
- install/upgrade to latest npm version (do this for every installed node version)
nvm install-latest-npm && nvm install --latest-npm
- upgrade lts
nvm uninstall --ltsnvm install --ltsnvm use --lts
- Cache leeren (falls sich package-lock.json ändert:
npm cache verifybzwnpm cache clean -f)
- nativ (obsolet)
- https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -sudo apt-get install -y nodejssudo apt-get install -y build-essential
- prevent permission errors / download errors
- method 1:
npm cache verifynpm cache clean -forcerm -rf node_modulesrm package-lock.json
- method 2 (not working):
nano ~/.npmrc
- method 1:
#registry=http://registry.npmjs.org/
#strict-ssl=false
#unsafe-perm=true
- install ncu
npm install -g npm-check-updates
- login npm
export BROWSER=none && npm login
corepack enablecorepack prepare yarn@stable --activateyarn --version
- install python 3.X
sudo apt-get updatesudo apt-get install python3 python3-pip python3-venvpython3 --versionpip3 --version
- install python 2.X
sudo apt-get install python2python2 --version
- change default version
cd /usr/binsudo rm pythonln -s ./python3 ./python
wget -q -O - https://packages.blackfire.io/gpg.key | sudo dd of=/usr/share/keyrings/blackfire-archive-keyring.ascecho "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/blackfire-archive-keyring.asc] http://packages.blackfire.io/debian any main" | sudo tee /etc/apt/sources.list.d/blackfire.listsudo apt updatesudo apt install blackfiresudo blackfire agent:config --server-id=xxx --server-token=xxx(see blackfire.io)sudo systemctl restart blackfire-agentsudo systemctl enable blackfire-agentsudo apt install blackfire-phpblackfire config --client-id=xxx --client-token=xxx(see blackfire.io)blackfire run ./vendor/bin/phpunit
sudo apt-get install golanggo version
sudo apt-get install gettextmsgfmt --help
npm install --global gulp-cli
sudo add-apt-repository ppa:git-core/ppa -ysudo apt-get updatesudo apt-get install git -ygit --versiongit config --global core.ignorecase falsegit config --global core.filemode falsegit config --global core.autocrlf input# this converts everything to lf on commit, which is ok when using wsl2 (however, there are projects where you want it to be the default value offalse, set that withgit config core.autocrlf false)git config --global core.safecrlf falsegit config --global push.default simplegit config --global user.name "David Vielhuber"git config --global user.email "david@vielhuber.de"git config --global pull.rebase true# this meansgit pulldoes alwaysgit pull --rebase!git config --global core.mergeoptions --no-edit# prevent editor on mergegit config --global init.defaultBranch maingit config set advice.skippedCherryPicks false- further do this (--no-edit does sometimes not work):
sudo nano ~/.bashrc# gitexport GIT_MERGE_AUTOEDIT=no
- node 10 hangs (https://stackoverflow.com/questions/45433130/npm-install-gets-stuck-at-fetchmetadata/72391698#72391698)
sudo nano ~/.gitconfig[url "https://"]insteadOf = git://
- sign commits/tags with ssh key
git config --global gpg.format sshgit config --global user.signingkey ~/.ssh/id_rsa.pubgit config --global commit.gpgsign truegit config --global tag.gpgsign truegit config --global push.gpgsign true- GitHub > Settings > SSH and GPG keys > New SSH key > Key type: Signing Key + id_rsa.pub
- commit hooks
git config --global core.hooksPath ~/git-template/hooks- ai
nano ~/git-template/hooks/prepare-commit-msg- Script von https://vielhuber.de/blog/git-commit-messages-mit-chatgpt/
chmod +x ~/git-template/hooks/prepare-commit-msg
- filesize
nano ~/git-template/hooks/pre-commitchmod +x ~/git-template/hooks/pre-commit
#!/usr/bin/env bash
set -euo pipefail
LIMIT_BYTES=$((100 * 1024 * 1024)) # 100 mb
failed=0
while IFS= read -r -d '' path; do
size_bytes="$(git cat-file -s ":$path" 2>/dev/null || echo 0)"
if (( size_bytes >= LIMIT_BYTES )); then
echo "⛔: '$path' ist $((size_bytes / 1024 / 1024)) MiB (Limit: 100 MiB). git restore --staged \"$path\"" >&2
failed=1
fi
done < <(git diff --cached --diff-filter=AM --name-only -z)
exit "$failed"
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpgecho "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/nullsudo apt updatesudo apt install gh
sudo nano ~/.bashrc# git-filter-repoexport PATH="$PATH:${HOME}/.git-filter-repo"source ~/.bashrcmkdir -p ~/.git-filter-repowget -O ~/.git-filter-repo/git-filter-repo https://raw.githubusercontent.com/newren/git-filter-repo/main/git-filter-repochmod +x ~/.git-filter-repo/git-filter-repo
sudo apt-get install subversionsvn --version
- in this repo we store our ssl certificate, our ssh keys and all current active symlinks
mkdir /var/www/lampcd /var/www/lampgit clone git@bitbucket.org:lamp-xyz-git/lamp.git . --config core.autocrlf=falsechmod +x /var/www/lamp/lampsudo visudo- add
/var/www/lamptoDefaults secure_path
- add
sudo nano ~/.bashrc# lampexport PATH="$PATH:/var/www/lamp"source ~/.bashrc
mkdir ~/.sshcp /var/www/lamp/id_rsa ~/.ssh/id_rsacp /var/www/lamp/id_rsa.pub ~/.ssh/id_rsa.pubcp /var/www/lamp/id_rsa_4096 ~/.ssh/id_rsa_4096cp /var/www/lamp/id_rsa_4096.pub ~/.ssh/id_rsa_4096.pubchmod 600 ~/.ssh/id_rsachmod 600 ~/.ssh/id_rsa.pubchmod 600 ~/.ssh/id_rsa_4096chmod 600 ~/.ssh/id_rsa_4096.pub
mkdir ~/.syncdbcd ~/.syncdbcomposer require vielhuber/syncdbchmod +x vendor/vielhuber/syncdb/src/syncdbln -s /var/www/lamp/syncdb ~/.syncdb/profilessudo nano ~/.bashrc# syncdbexport PATH="$PATH:/root/.syncdb/vendor/vielhuber/syncdb/src"source ~/.bashrc
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'wget -qO- https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo tee /etc/apt/trusted.gpg.d/pgdg.asc &>/dev/nullsudo apt updatesudo apt-get install postgresql postgresql-contrib- sudo nano /etc/postgresql/15/main/postgresql.conf
- listen_addresses = '*'
- port = 5432
- PANIC: could not flush dirty data
- sudo nano /etc/postgresql/15/main/postgresql.conf
- data_sync_retry = on
sudo systemctl start postgresqlsudo systemctl enable postgresqlsudo -u postgres psql\password postgres- root
\qnano ~/.pgpass*:5432:*:postgres:rootchmod 0600 ~/.pgpass- sudo nano /etc/postgresql/15/main/pg_hba.conf
# comment out all other lines and append this
local all postgres md5
local all all md5
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
sudo apt-get install postgresql postgresql-contribpg_lsclusterssudo pg_dropcluster 15 main --stopsudo pg_upgradecluster -v 17 15 main- redo the config settings mentionned above (with folder
/17/)
- sign in https://container-registry.oracle.com and accept TOS
- installation
docker login container-registry.oracle.comdocker pull container-registry.oracle.com/database/enterprise:12.2.0.1docker run -dit -p 1521:1521 --name oracle_db container-registry.oracle.com/database/enterprise:12.2.0.1docker logs -f oracle_db# wait for "Done !" in logsdocker exec -it oracle_db bash -c "source /home/oracle/.bashrc; sqlplus /nolog"connect sys as sysdba;Oradoc_db1alter session set "_ORACLE_SCRIPT"=true;
- create new user (=schema!)
create user root identified by root;GRANT ALL PRIVILEGES TO root;
- start/stop:
- Docker Desktop
- credentials:
- ip: localhost
- port: 1521
- service name: ORCLCDB.localdomain
- username: root
- password: root
- tablespaces
- view:
SELECT tablespace_name, file_name, bytes / 1024/ 1024 MB FROM dba_data_files; - create:
CREATE TABLESPACE DATA1 DATAFILE 'DATA1.dbf' SIZE 10M AUTOEXTEND ON;
- view:
sudo apt-get install ghostscriptghostscript -v
- do this beforehand
- remove old installations
sudo rm -f /usr/local/bin/magick /usr/local/bin/convertsudo rm -rf /usr/local/lib/ImageMagick-* /usr/local/etc/ImageMagick-7apt remove "*imagemagick*" --purge -y && apt autoremove --purge -y
- fix cmake
sudo rm /usr/local/bin/cmakesudo apt-get remove cmakesudo apt-get updatecmake --versionsudo apt-get install cmake
- install opencl headers
sudo apt-get install -y ocl-icd-opencl-dev opencl-headers
- remove old installations
t=$(mktemp) && \
wget 'https://dist.1-2.dev/imei.sh' -qO "$t" && \
bash "$t" && \
rm "$t"
convert -versionsudo nano /usr/local/etc/ImageMagick-7/policy.xml- add/edit
<policy domain="coder" rights="none" pattern="MVG" /><policy domain="coder" rights="read|write" pattern="PDF" /><policy domain="coder" rights="read|write" pattern="LABEL" />
sudo apt updatesudo apt install pdftkpdftk --version
sudo apt-get install libfontconfig1 libxrender1 xfonts-75dpi xfonts-basecd /tmp/mkdir dlcd dlwget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.jammy_amd64.debsudo dpkg -i wkhtmltox_0.12.6.1-2.jammy_amd64.debcd /tmp/rm -rf dlwkhtmltopdf --version- if an error like "Fontconfig warning: FcPattern object weight does not accept value [0.5 15.3)" appears, clear font cache:
sudo fc-cache -f -v
cd /opt/wget https://github.com/coherentgraphics/cpdf-binaries/archive/master.zipunzip master.zipmv cpdf-binaries-master/Linux-Intel-64bit/cpdf /usr/local/bin/cpdfrm -rf cpdf-binaries-masterrm master.zipcpdf --help
sudo apt-get install poppler-utilspdfinfo
sudo apt install tesseract-ocrsudo apt install libtesseract-devsudo apt-get install tesseract-ocr-deutesseract --version
sudo apt-get install libemail-outlook-message-perlmsgconvert --version
sudo apt-get install jpegoptimjpegoptim --version
sudo apt-get updatesudo apt-get install -y cmake autoconf automake libtool nasm make pkg-config git libpng-devcd /tmp/mkdir mozjpegcd mozjpegwget https://github.com/mozilla/mozjpeg/archive/refs/tags/v4.1.1.tar.gztar -xzvf v*.tar.gzcd mozjpeg-*/mkdir build && cd buildsudo cmake -G"Unix Makefiles" ../sudo make installln -s /opt/mozjpeg/bin/jpegtran /usr/bin/mozjpegcd ..cd ..cd ..rm -rf mozjpegmozjpeg --version
sudo apt-get install pngquantpngquant --version
npm install -g svgosvgo --version
sudo apt-get updatesudo apt-get install -y git gcc cmake libpng-dev pkg-configcd /tmp/mkdir gifsiclecd gifsiclewget https://www.lcdf.org/gifsicle/gifsicle-1.93.tar.gztar -xzvf gifsicle*.tar.gzcd gifsicle*/autoreconf -i./configuremakesudo make installcd ..cd ..rm -rf gifsicle/gifsicle --version
sudo apt-get install webpcwebp -versiondwebp -version
sudo apt-get install libimage-exiftool-perlexiftool
mkdir /var/www/phpmyadmincd /var/www/phpmyadmincomposer create-project phpmyadmin/phpmyadmin .lamp add phpmyadmin php8.5cp config.sample.inc.php config.inc.phpnano config.inc.php$cfg['Servers'][$i]['user'] = 'root';$cfg['Servers'][$i]['AllowNoPassword'] = true;$cfg['Servers'][$i]['host'] = 'localhost';$cfg['Servers'][$i]['password'] = 'root';$cfg['Servers'][$i]['auth_type'] = 'config';$cfg['ExecTimeLimit'] = 6000;$cfg['blowfish_secret'] = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';(generate secret with:openssl rand -base64 22)
- https://phpmyadmin.vielhuber.dev
- "Der phpMyAdmin-Konfigurationsspeicher ist nicht vollständig konfiguriert," => Anklicken + Erzeugen
curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo bashsudo apt-get install speedtestspeedtest
ln -s /mnt/c/Windows/Fonts /usr/share/fonts/WindowsFontsfc-cache
npm i @google/clasp -g- https://script.google.com/home/usersettings => enable
npm i -S @types/google-apps-scriptclasp login
sudo apt install httrack webhttrack
gpg --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDBecho 'export rvm_prefix="$HOME"' > /root/.rvmrcecho 'export rvm_path="$HOME/.rvm"' >> /root/.rvmrccurl -sSL https://get.rvm.io | bash -s stablesource ~/.rvm/scripts/rvmrvm install ruby-3.1.2ruby --version
sudo apt-get install zlib1g-devgem install wpscanwpscan --updategem update wpscanwpscan --url https://www.domain.tld
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.pharchmod +x wp-cli.pharsudo mv wp-cli.phar /usr/local/bin/wpsudo nano ~/.bashrc# wp-clialias wp='wp --allow-root'wp --info
cd /tmpwget https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-linux64-gpl-shared.tar.xztar -xf ffmpeg-*-shared.tar.xzcd ffmpeg-*-sharedsudo cp bin/ffmpeg bin/ffprobe /usr/local/bin/sudo cp -r lib/* /usr/local/lib/sudo ldconfigcd ..rm -rf ffmpeg-*-shared*ffmpeg -version
sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dlsudo chmod a+rx /usr/local/bin/youtube-dlyoutube-dl --version
sudo apt-get install inkscape
sudo apt-get install librsvg2-bin
sudo apt-get install xclipecho "foo" | xclip
mkdir whatwebcd whatwebgit clone https://github.com/urbanadventurer/WhatWeb.git .sudo apt install -y ruby ruby-dev ruby-bundler build-essential make libssl-dev zlib1g-dev libyaml-devsudo make install
whatweb \
--user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36" \
-a 3 \
-v \
https://vielhuber.de
- installation
- edit
%UserProfile%\.wslconfignestedVirtualization=true
sudo apt-get install kvmkvm-ok// KVM acceleration can be used
sudo apt install x11-apps -y- if port is in use
- show used ports in powershell:
netsh int ipv4 show excludedportrange protocol=tcp - change port in command below from 50922 to 40922
- show used ports in powershell:
docker run -it --name docker-osx --device /dev/kvm -p 40922:10022 -v /mnt/wslg/.X11-unix:/tmp/.X11-unix -e "DISPLAY=${DISPLAY:-:0.0}" -e GENERATE_UNIQUE=true -e MASTER_PLIST_URL='https://raw.githubusercontent.com/sickcodes/osx-serial-generator/master/config-custom.plist' sickcodes/docker-osx:ventura- Disk Utility > QEMU HARDDISK Media (biggest) > Erase > Name: MyDockyOSX + Scheme: Mac OS Extended (Journaled)
- Reinstall macOS Ventura
- edit
- run
docker start docker-osx
- wsl (deaktiviert)
- Aufgabenplanung
- "_WSL"
- Nur ausführen, wenn der Benutzer angemeldet ist
- Trigger: Bei Anmeldung
- Aktion: Programm starten (C:\Windows\System32\bash.exe -c "")
- services (deaktiviert)
- Aufgabenplanung
- "_LAMP"
- Nur ausführen, wenn der Benutzer angemeldet ist
- Trigger: Bei Anmeldung, verzögern für: 7 Minuten
- Aktion: Programm starten (\wsl$\Ubuntu\var\www\lamp\start.bat)
- https://medium.com/@leandrw/speeding-up-wsl-i-o-up-than-5x-fast-saving-a-lot-of-battery-life-cpu-usage-c3537dd03c74
- Windows-Sicherheit > Viren- & Bedrohungsschutz > Einstellungen für Viren- & Bedrohungsschutz > Ausschlüsse hinzufügen oder entfernen
- Ordner: D:\wsl\ubuntu-latest
- Prozesse: git, node, dpkg, php5.6, php7.0, php7.1, php7.2, php7.3, php7.4, php8.0, php8.1, php8.2, php8.3, php8.4, php8.5, php-fpm5.6, php-fpm7.0, php-fpm7.1, php-fpm7.2, php-fpm7.3, php-fpm7.4, php-fpm8.0, php-fpm8.1, php-fpm8.2, php-fpm8.3, php-fpm8.4, php-fpm8.5, mysql, mysqld, apache2, bash, postgres, wkhtmltopdf
sudo update-alternatives --config phpsudo update-alternatives --set php /usr/bin/php8.1(directly set)- always choose manual mode (so newer installed versions do not get taken automatically)
php -v/usr/bin/php --version/usr/bin/php8.2 --version(call specific cli version)
sudo a2dismod phpY.Ysudo a2enmod phpX.X
- you can setup lamp on multiple clients
- option 1: point the dns record to the current active client (currently used)
- option 2: setup a more dynamic approach like 01.project-name.vielhuber.dev, 02.project-name.vielhuber.dev, ...
- open cmd / ps as admin
wsl.exe --shutdownwsl.exe
lamp start
lamp restart
lamp stop
lamp add project-name# uses default php versionlamp add project-name php8.1# uses specific php versionlamp add project-name php8.1 custom/subfolder/public# uses specific folderlamp add project-name php8.1 custom/subfolder/public --port=3000# uses specific portlamp add project-name php8.1 custom/subfolder/public --alias=rebuhleiv.xyz# sets alias for public usage (e.g. via cloudflare tunnel)
lamp remove project