<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[clemensot.to]]></title><description><![CDATA[Blog by Clemens Otto]]></description><link>https://clemensot.to/blog/</link><image><url>https://clemensot.to/blog/favicon.png</url><title>clemensot.to</title><link>https://clemensot.to/blog/</link></image><generator>Ghost 5.10</generator><lastBuildDate>Thu, 23 Apr 2026 15:04:54 GMT</lastBuildDate><atom:link href="https://clemensot.to/blog/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[(Gnosis-) Safe mit gleicher Contract-Adresse auf verschiedenen EVM Blockchain Netzwerken generieren]]></title><description><![CDATA[<p></p><p>Die Transaktion zur Erstellung des ersten Safe ausf&#xFC;hren (zb &#xFC;ber das safe.global UI). Anschlie&#xDF;end wird aus der vorherigen Transaktion die Empf&#xE4;ngeradresse &#xA0;sowie die Hex-Daten der Transaktion kopiert. Danach erfolgt auf der neuen EVM Chain eine Transaktion an die zuvor kopierte Empf&</p>]]></description><link>https://clemensot.to/blog/gnosis-safe-mit-selber-adresse-auf-verschiedenen-evm-blockchains/</link><guid isPermaLink="false">64ba77d0ee9d2f06514ea867</guid><dc:creator><![CDATA[Clemens Otto]]></dc:creator><pubDate>Fri, 21 Jul 2023 12:27:33 GMT</pubDate><media:content url="https://clemensot.to/blog/content/images/2023/07/safe.png" medium="image"/><content:encoded><![CDATA[<img src="https://clemensot.to/blog/content/images/2023/07/safe.png" alt="(Gnosis-) Safe mit gleicher Contract-Adresse auf verschiedenen EVM Blockchain Netzwerken generieren"><p></p><p>Die Transaktion zur Erstellung des ersten Safe ausf&#xFC;hren (zb &#xFC;ber das safe.global UI). Anschlie&#xDF;end wird aus der vorherigen Transaktion die Empf&#xE4;ngeradresse &#xA0;sowie die Hex-Daten der Transaktion kopiert. Danach erfolgt auf der neuen EVM Chain eine Transaktion an die zuvor kopierte Empf&#xE4;ngeradresse mit den identischen Hex-Daten um einen neuen Safe mit der gleichen Contract-Adresse zu generieren.</p><p></p><p>Schritt f&#xFC;r Schritt:</p><ul><li>Transaktion zur Erstelllung des ersten Safe generieren</li></ul><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://etherscan.io/tx/0xe79bd28ad7cc1f4f3b6807d467a59e2a2c410bb669bd073d0f4c86a572eeb87b"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Ethereum Transaction Hash (Txhash) Details | Etherscan</div><div class="kg-bookmark-description">Ethereum (ETH) detailed transaction info for txhash 0xe79bd28ad7cc1f4f3b6807d467a59e2a2c410bb669bd073d0f4c86a572eeb87b. The transaction status, block confirmation, gas fee, Ether (ETH), and token transfer are shown.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://etherscan.io/images/favicon3.ico" alt="(Gnosis-) Safe mit gleicher Contract-Adresse auf verschiedenen EVM Blockchain Netzwerken generieren"><span class="kg-bookmark-author">Ethereum (ETH) Blockchain Explorer</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://etherscan.io/images/brandassets/etherscan-logo-r.jpg" alt="(Gnosis-) Safe mit gleicher Contract-Adresse auf verschiedenen EVM Blockchain Netzwerken generieren"></div></a></figure><p></p><ul><li>Empf&#xE4;nger Adresse kopieren</li></ul><figure class="kg-card kg-image-card"><img src="https://clemensot.to/blog/content/images/2023/07/image-1.png" class="kg-image" alt="(Gnosis-) Safe mit gleicher Contract-Adresse auf verschiedenen EVM Blockchain Netzwerken generieren" loading="lazy" width="1896" height="212" srcset="https://clemensot.to/blog/content/images/size/w600/2023/07/image-1.png 600w, https://clemensot.to/blog/content/images/size/w1000/2023/07/image-1.png 1000w, https://clemensot.to/blog/content/images/size/w1600/2023/07/image-1.png 1600w, https://clemensot.to/blog/content/images/2023/07/image-1.png 1896w" sizes="(min-width: 720px) 720px"></figure><p></p><ul><li>Hex Daten der Transaktion kopieren (Etherscan - Input Data - View Input as: Original)</li></ul><figure class="kg-card kg-image-card"><img src="https://clemensot.to/blog/content/images/2023/07/image.png" class="kg-image" alt="(Gnosis-) Safe mit gleicher Contract-Adresse auf verschiedenen EVM Blockchain Netzwerken generieren" loading="lazy" width="2000" height="529" srcset="https://clemensot.to/blog/content/images/size/w600/2023/07/image.png 600w, https://clemensot.to/blog/content/images/size/w1000/2023/07/image.png 1000w, https://clemensot.to/blog/content/images/size/w1600/2023/07/image.png 1600w, https://clemensot.to/blog/content/images/size/w2400/2023/07/image.png 2400w" sizes="(min-width: 720px) 720px"></figure><p></p><ul><li>Auf das andere EVM-Blockchain-Netzwerk wechseln<br></li><li>Eine neue Transaktion an die kopierte Empf&#xE4;nger Adresse mit den gleichen HEX-Daten senden (In Metamask das anzeigen der Hexdaten aktivieren)</li></ul><figure class="kg-card kg-image-card"><img src="https://clemensot.to/blog/content/images/2023/07/image-2.png" class="kg-image" alt="(Gnosis-) Safe mit gleicher Contract-Adresse auf verschiedenen EVM Blockchain Netzwerken generieren" loading="lazy" width="690" height="714" srcset="https://clemensot.to/blog/content/images/size/w600/2023/07/image-2.png 600w, https://clemensot.to/blog/content/images/2023/07/image-2.png 690w"></figure><p></p><p>Links:</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://safe.global/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Safe &#x2013; Previously Gnosis Safe &#x2013; Crypto wallet, web3 account abstraction developer stack</div><div class="kg-bookmark-description">Safe is the most trusted platform to manage digital assets on Ethereum</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://safe.global/images/favicon/apple-touch-icon.png" alt="(Gnosis-) Safe mit gleicher Contract-Adresse auf verschiedenen EVM Blockchain Netzwerken generieren"><span class="kg-bookmark-author">Safe</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://safe.global/images/og-image.png" alt="(Gnosis-) Safe mit gleicher Contract-Adresse auf verschiedenen EVM Blockchain Netzwerken generieren"></div></a></figure><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://dev.to/carlomigueldy/deploy-the-same-gnosis-safe-address-in-multiple-networks-4md4"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Deploy the same Gnosis Safe Address in Multiple Networks</div><div class="kg-bookmark-description">Overview This is a straightforward guide and just shares how you can exactly deploy the...</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://res.cloudinary.com/practicaldev/image/fetch/s--t7tVouP9--/c_limit,f_png,fl_progressive,q_80,w_192/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/devlogo-pwa-512.png" alt="(Gnosis-) Safe mit gleicher Contract-Adresse auf verschiedenen EVM Blockchain Netzwerken generieren"><span class="kg-bookmark-author">DEV Community</span><span class="kg-bookmark-publisher">Carlo Miguel Dy</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://dev.to/social_previews/article/1358827.png" alt="(Gnosis-) Safe mit gleicher Contract-Adresse auf verschiedenen EVM Blockchain Netzwerken generieren"></div></a></figure>]]></content:encoded></item><item><title><![CDATA[Simple SSH Hardening - SSH Zugriff absichern]]></title><description><![CDATA[<p></p><p>SSH-Konfiguration anpassen: &quot;/etc/ssh/sshd_config&quot;</p><!--kg-card-begin: markdown--><blockquote>
<p>nano /etc/ssh/sshd_config</p>
</blockquote>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><pre><code> AuthenticationMethods publickey
 PasswordAuthentication no
 ChallengeResponseAuthentication no
 PermitRootLogin no
 PermitEmptyPasswords no
</code></pre>
<!--kg-card-end: markdown--><p>Standard-Port (22) &#xE4;ndern</p><pre><code>#Port 22
Port 99999</code></pre>]]></description><link>https://clemensot.to/blog/simple-ssh-hardening-server-zugriff-absichern/</link><guid isPermaLink="false">63835af9bd8b7c799baac062</guid><dc:creator><![CDATA[Clemens Otto]]></dc:creator><pubDate>Sun, 27 Nov 2022 12:53:49 GMT</pubDate><content:encoded><![CDATA[<p></p><p>SSH-Konfiguration anpassen: &quot;/etc/ssh/sshd_config&quot;</p><!--kg-card-begin: markdown--><blockquote>
<p>nano /etc/ssh/sshd_config</p>
</blockquote>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><pre><code> AuthenticationMethods publickey
 PasswordAuthentication no
 ChallengeResponseAuthentication no
 PermitRootLogin no
 PermitEmptyPasswords no
</code></pre>
<!--kg-card-end: markdown--><p>Standard-Port (22) &#xE4;ndern</p><pre><code>#Port 22
Port 99999</code></pre>]]></content:encoded></item><item><title><![CDATA[Wordpess – Owner & Permissions (Eigentümer, Dateien/Ordner-Berechtigungen)]]></title><description><![CDATA[<p>Vor der Installation</p><pre><code>chown www-data:www-data  -R * # webserver ownership</code></pre><pre><code>find . -type d -exec chmod 755 {} \;
# Change directory permissions rwxr-xr-x</code></pre><pre><code>find . -type f -exec chmod 644 {} \;
# Change file permissions rw-r--r--</code></pre><p>Nach der Installation</p><pre><code>chown &lt;username&gt;:&lt;username&gt;  -R * # Let your useraccount be owner
chown www-data:www-data wp-content # Let</code></pre>]]></description><link>https://clemensot.to/blog/wordpess-owner-permissions-eigentumer-dateien-ordner-berechtigungen/</link><guid isPermaLink="false">6327585fbd8b7c799baac046</guid><category><![CDATA[tech]]></category><dc:creator><![CDATA[Clemens Otto]]></dc:creator><pubDate>Sun, 18 Sep 2022 17:42:12 GMT</pubDate><content:encoded><![CDATA[<p>Vor der Installation</p><pre><code>chown www-data:www-data  -R * # webserver ownership</code></pre><pre><code>find . -type d -exec chmod 755 {} \;
# Change directory permissions rwxr-xr-x</code></pre><pre><code>find . -type f -exec chmod 644 {} \;
# Change file permissions rw-r--r--</code></pre><p>Nach der Installation</p><pre><code>chown &lt;username&gt;:&lt;username&gt;  -R * # Let your useraccount be owner
chown www-data:www-data wp-content # Let webserver be owner of wp-content</code></pre>]]></content:encoded></item><item><title><![CDATA[Verschiedene Node Versionen verwenden (Upgrade/Downgrade)]]></title><description><![CDATA[<p><em>F&#xFC;r Unix/MacOS</em></p><p><strong>Derzeitige Version &#xFC;berpr&#xFC;fen:</strong></p><p>Node:</p><pre><code>node -v</code></pre><p>NPM:</p><pre><code>npm -v</code></pre><p><strong>Node Versions-Management-Tool <a href="https://www.npmjs.com/package/n">n</a> installieren:</strong></p><pre><code>sudo npm install -g n</code></pre><p><strong>Node Version &#xE4;ndern</strong></p><p>Wechsel zu spezifischer Version:</p><pre><code>sudo n 11.15.0</code></pre><p>Wechsel zu aktuellen stabilen Version:</p><pre><code>sudo n stable</code></pre><p><em>Restart des Terminals</em></p>]]></description><link>https://clemensot.to/blog/verschiedene-node-versionen-verwenden-upgrade-downgrade/</link><guid isPermaLink="false">6327581abd8b7c799baac03b</guid><dc:creator><![CDATA[Clemens Otto]]></dc:creator><pubDate>Sun, 18 Sep 2022 17:41:08 GMT</pubDate><content:encoded><![CDATA[<p><em>F&#xFC;r Unix/MacOS</em></p><p><strong>Derzeitige Version &#xFC;berpr&#xFC;fen:</strong></p><p>Node:</p><pre><code>node -v</code></pre><p>NPM:</p><pre><code>npm -v</code></pre><p><strong>Node Versions-Management-Tool <a href="https://www.npmjs.com/package/n">n</a> installieren:</strong></p><pre><code>sudo npm install -g n</code></pre><p><strong>Node Version &#xE4;ndern</strong></p><p>Wechsel zu spezifischer Version:</p><pre><code>sudo n 11.15.0</code></pre><p>Wechsel zu aktuellen stabilen Version:</p><pre><code>sudo n stable</code></pre><p><em>Restart des Terminals bei Problemen empfohlen.</em></p><p><em>Windows:</em></p><p><a href="https://github.com/coreybutler/nvm-windows">nvm-windows</a></p>]]></content:encoded></item><item><title><![CDATA[Flask mit nginx und uWSGI bereitstellen]]></title><description><![CDATA[<p>Installieren:<br>nginx<br>python-virtualenv<br>build-essential<br>python-dev<br>python</p><pre><code>sudo apt-get install python-virtualenv build-essential python python-dev</code></pre><pre><code>sudo mkdir /var/www/demoapp

cd /var/www/demoapp
virtualenv venv
. venv/bin/activate</code></pre><p>flask installieren:</p><pre><code>pip install flask</code></pre><p>uwsgi installieren:</p><pre><code>pip install uwsgi</code></pre><h2 id="nginx-config">nginx config:</h2><pre><code>server {
    listen      80; #443
    server_name myapp.com;
    charset     utf-8;
    client_</code></pre>]]></description><link>https://clemensot.to/blog/flask-mit-nginx-und-uwsgi-bereitstellen/</link><guid isPermaLink="false">632757d4bd8b7c799baac030</guid><category><![CDATA[tech]]></category><dc:creator><![CDATA[Clemens Otto]]></dc:creator><pubDate>Sun, 18 Sep 2022 17:39:56 GMT</pubDate><content:encoded><![CDATA[<p>Installieren:<br>nginx<br>python-virtualenv<br>build-essential<br>python-dev<br>python</p><pre><code>sudo apt-get install python-virtualenv build-essential python python-dev</code></pre><pre><code>sudo mkdir /var/www/demoapp

cd /var/www/demoapp
virtualenv venv
. venv/bin/activate</code></pre><p>flask installieren:</p><pre><code>pip install flask</code></pre><p>uwsgi installieren:</p><pre><code>pip install uwsgi</code></pre><h2 id="nginx-config">nginx config:</h2><pre><code>server {
    listen      80; #443
    server_name myapp.com;
    charset     utf-8;
    client_max_body_size 75M;

    location / { try_files $uri @myapp; }
    location @myapp {
        include uwsgi_params;
        uwsgi_pass unix:/var/www/demoapp/demoapp_uwsgi.sock;
    }
   #alternnative locatio
    location / {
        include uwsgi_params;
        uwsgi_pass unix:/var/www/demoapp/demoapp_uwsgi.sock;
    }
}</code></pre><pre><code>nginx -t
service nginx reload</code></pre><h2 id="uwsgi-config">uWSGI config:</h2><p>/var/www/demoapp/demoapp_uwsgi.ini:</p><pre><code>[uwsgi]
#application&apos;s base folder
base = /var/www/demoapp

#python module to import, start/setup file
app = myapp
module = %(app)

home = %(base)/venv
pythonpath = %(base)

#socket file&apos;s location
socket = /var/www/demoapp/%n.sock

#permissions for the socket file
chmod-socket    = 666
# security
#chmod-socket    = 644

#the variable that holds a flask application inside the module
callable = app

#location of log files
logto = /var/log/uwsgi/%n.log</code></pre><h2 id="uwsgi-emperor">uWSGI Emperor</h2><p>/etc/init/uwsgi.conf</p><pre><code>description &quot;uWSGI&quot;
start on runlevel [2345]
stop on runlevel [06]
respawn

env UWSGI=/var/www/demoapp/venv/bin/uwsgi
env LOGTO=/var/log/uwsgi/emperor.log

exec $UWSGI --master --emperor /etc/uwsgi/vassals --die-on-term --uid www-data --gid www-data --logto $LOGTO</code></pre><p>config dateien nach vassals verlinken &#x2013;&gt; <strong>/etc/uwsgi/vassals</strong></p><pre><code>sudo mkdir /etc/uwsgi &amp;&amp; sudo mkdir /etc/uwsgi/vassals
sudo ln -s /var/www/demoapp/demoapp_uwsgi.ini /etc/uwsgi/vassals</code></pre><h2 id="uwsgi-starten">uWSGI starten:</h2><pre><code>sudo start uwsgi</code></pre><p>Statische Dateien:</p><pre><code>location /static {
    root /var/www/demoapp/;
}</code></pre><p><a href="https://vladikk.com/2013/09/12/serving-flask-with-nginx-on-ubuntu/">https://vladikk.com/2013/09/12/serving-flask-with-nginx-on-ubuntu/</a></p><p><a href="https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-uwsgi-and-nginx-on-ubuntu-16-04">https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-uwsgi-and-nginx-on-ubuntu-16-04</a></p>]]></content:encoded></item><item><title><![CDATA[WordPress Beiträge auf einer externen Seite anzeigen]]></title><description><![CDATA[<pre><code>&lt;?php
// Include
include(&apos;/path/to/wordpress/wp-load.php&apos;);

// Get the last 5 published posts
// Returns posts as arrays instead of get_posts&apos; objects
$recent_posts = wp_get_recent_posts(array(
	&apos;numberposts&apos; =&gt; 5,
	&apos;post_type&apos; =&gt; &apos;post&apos;,
	&apos;post_status&</code></pre>]]></description><link>https://clemensot.to/blog/wordpress-beitrage-auf-einer-externen-seite-anzeigen/</link><guid isPermaLink="false">6327578bbd8b7c799baac021</guid><category><![CDATA[tech]]></category><dc:creator><![CDATA[Clemens Otto]]></dc:creator><pubDate>Sun, 18 Sep 2022 17:38:49 GMT</pubDate><content:encoded><![CDATA[<pre><code>&lt;?php
// Include
include(&apos;/path/to/wordpress/wp-load.php&apos;);

// Get the last 5 published posts
// Returns posts as arrays instead of get_posts&apos; objects
$recent_posts = wp_get_recent_posts(array(
	&apos;numberposts&apos; =&gt; 5,
	&apos;post_type&apos; =&gt; &apos;post&apos;,
	&apos;post_status&apos; =&gt; &apos;publish&apos;
));
	
// Do something with them

foreach($recent_posts as $post) {
	echo &apos;&lt;a target=&quot;_blank&quot; href=&quot;&apos;, get_permalink($post[&apos;ID&apos;]), &apos;&quot;&gt;&apos;, $post[&apos;post_title&apos;], &apos;&lt;/a&gt;&lt;br&gt;&apos;;
}


?&gt;</code></pre><p>Anpassungen:</p><p>&#x201E;numberposts&#x201C; &#x2013;&gt; Anzahl der anzuzeigenden Beitr&#xE4;ge</p><p>&#x201E;post_type&#x201C; =&gt; &#x201A;post&#x2018; &#x2013;&gt; Nur Beitr&#xE4;ge anzeigen</p><p>&#x201E;post_status&#x201C; =&gt; &#x201E;publish&#x201C; &#x2013;&gt; Nur ver&#xF6;ffentlichte Beitr&#xE4;ge anzeigen (Keine Entw&#xFC;rfe!)</p><p>Quelle: <a href="https://davidwalsh.name/wordpress-recent-posts">https://davidwalsh.name/wordpress-recent-posts</a></p>]]></content:encoded></item><item><title><![CDATA[WordPress über Kommandozeile/SSH installieren]]></title><description><![CDATA[<p>In das gew&#xFC;nschte Verzeichnis wechseln.</p><pre><code>wget https://wordpress.org/latest.tar.gz</code></pre><p></p><pre><code>tar -xzvf latest.tar.gz</code></pre><p>WordPress wird mit wget heruntergeladen und im Verzeichnis &#x201E;wordpress&#x201C; entpackt.</p>]]></description><link>https://clemensot.to/blog/wordpress-uber-kommandozeile-ssh-installieren/</link><guid isPermaLink="false">6327562cbd8b7c799baabffd</guid><category><![CDATA[tech]]></category><dc:creator><![CDATA[Clemens Otto]]></dc:creator><pubDate>Sun, 18 Sep 2022 17:33:58 GMT</pubDate><content:encoded><![CDATA[<p>In das gew&#xFC;nschte Verzeichnis wechseln.</p><pre><code>wget https://wordpress.org/latest.tar.gz</code></pre><p></p><pre><code>tar -xzvf latest.tar.gz</code></pre><p>WordPress wird mit wget heruntergeladen und im Verzeichnis &#x201E;wordpress&#x201C; entpackt.</p>]]></content:encoded></item><item><title><![CDATA[Dynamische vHosts mit Nginx Webserver (Wildcard Subdomains)]]></title><description><![CDATA[<!--kg-card-begin: markdown--><pre><code>server {
     listen 80;
     server_name *.domain.com;
     return 301 https://$host$request_uri;
     }
 server {
    listen 443 ssl http2;
    ssl on;
    server_name ~^(?&lt;subdomain&gt;[^.]+).domain.com;
 
    keepalive_timeout 300;
 
    # Letsencrypt
    ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;</code></pre>]]></description><link>https://clemensot.to/blog/dynamische-vhosts-mit-nginx-webserver-wildcard-subdomains/</link><guid isPermaLink="false">63275586bd8b7c799baabfe2</guid><category><![CDATA[tech]]></category><dc:creator><![CDATA[Clemens Otto]]></dc:creator><pubDate>Sun, 18 Sep 2022 17:31:38 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><pre><code>server {
     listen 80;
     server_name *.domain.com;
     return 301 https://$host$request_uri;
     }
 server {
    listen 443 ssl http2;
    ssl on;
    server_name ~^(?&lt;subdomain&gt;[^.]+).domain.com;
 
    keepalive_timeout 300;
 
    # Letsencrypt
    ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;
    # Cipher
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers &quot;EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH&quot;;
    ssl_dhparam /etc/ssl/private/dhparam.pem;
    ssl_ecdh_curve secp384r1;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
 
    # OSCP
    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 5s;
    ssl_trusted_certificate /etc/letsencrypt/live/domain.com/chain.pem;
   
    # Header
    add_header Strict-Transport-Security max-age=63072000; # HSTS
    add_header X-Frame-Options SAMEORIGIN;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection &quot;1; mode=block&quot;;
 
    # Document-Root
    root /var/www/domain.com/$subdomain/public;
   
    index index.php index.html index.htm;
 
    location / {
        try_files $uri $uri/ =404;
    }
 
    # FastCGI
    fastcgi_param HTTPS on;
    location ~ \.php$ {
        try_files  $uri  =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param HTTPS on;
        fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
        fastcgi_intercept_errors on;
    }
 
} 
</code></pre>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Nginx Reverse Proxy zu Azure Web App (Eigener Domain-Name)]]></title><description><![CDATA[<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://clemensot.to/blog/content/images/2022/09/reverse-proxy-flow.jpg" class="kg-image" alt="Nginx Reverse Proxy To Azure Web App (Source: https://www.cloudflare.com/learning/cdn/glossary/reverse-proxy/)" loading="lazy" width="1912" height="931" srcset="https://clemensot.to/blog/content/images/size/w600/2022/09/reverse-proxy-flow.jpg 600w, https://clemensot.to/blog/content/images/size/w1000/2022/09/reverse-proxy-flow.jpg 1000w, https://clemensot.to/blog/content/images/size/w1600/2022/09/reverse-proxy-flow.jpg 1600w, https://clemensot.to/blog/content/images/2022/09/reverse-proxy-flow.jpg 1912w" sizes="(min-width: 720px) 720px"><figcaption>Nginx Reverse Proxy To Azure Web App (Source: https://www.cloudflare.com/learning/cdn/glossary/reverse-proxy/)</figcaption></figure><h3 id="problem">Problem:</h3><p>Eigene Domain-Namen bei Azure Web Apps sind nicht kostenlos m&#xF6;glich. Durch einen Nginx Reverse Proxy von einem externem Server/Anbieter zu Azure Cloud kann man das Problem umgehen.</p><h3 id="l%C3%B6sung">L&#xF6;sung:</h3>]]></description><link>https://clemensot.to/blog/nginx-reverse-proxy-zu-azure-web-app-eigener-domain-name/</link><guid isPermaLink="false">632754b1bd8b7c799baabfd4</guid><category><![CDATA[tech]]></category><dc:creator><![CDATA[Clemens Otto]]></dc:creator><pubDate>Sun, 18 Sep 2022 17:26:43 GMT</pubDate><content:encoded><![CDATA[<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://clemensot.to/blog/content/images/2022/09/reverse-proxy-flow.jpg" class="kg-image" alt="Nginx Reverse Proxy To Azure Web App (Source: https://www.cloudflare.com/learning/cdn/glossary/reverse-proxy/)" loading="lazy" width="1912" height="931" srcset="https://clemensot.to/blog/content/images/size/w600/2022/09/reverse-proxy-flow.jpg 600w, https://clemensot.to/blog/content/images/size/w1000/2022/09/reverse-proxy-flow.jpg 1000w, https://clemensot.to/blog/content/images/size/w1600/2022/09/reverse-proxy-flow.jpg 1600w, https://clemensot.to/blog/content/images/2022/09/reverse-proxy-flow.jpg 1912w" sizes="(min-width: 720px) 720px"><figcaption>Nginx Reverse Proxy To Azure Web App (Source: https://www.cloudflare.com/learning/cdn/glossary/reverse-proxy/)</figcaption></figure><h3 id="problem">Problem:</h3><p>Eigene Domain-Namen bei Azure Web Apps sind nicht kostenlos m&#xF6;glich. Durch einen Nginx Reverse Proxy von einem externem Server/Anbieter zu Azure Cloud kann man das Problem umgehen.</p><h3 id="l%C3%B6sung">L&#xF6;sung:</h3><p>Eigene Domain auf Server mit nginx (inklusive Letsencrypt, kostenlose SSL-Zertifikate)<br>&#x2014;&gt;<br>nginx reverse proxy<br>&#x2014;&gt;<br>Azure Web App (zb. ASP.NET)</p><p>https://domain.com &#x2013;&gt; proxy &#x2013;&gt; webappname.azurewebsites.net</p><h2 id="nginx-config-reverse-proxy-zu-azure-web-app">Nginx Config (Reverse Proxy zu Azure Web App)</h2><pre><code>server {
     listen 80;
     server_name domain.com www.domain.com;
     
     location /.well-known/acme-challenge { 
     default_type &quot;text/plain&quot;;
     root /var/www/letsencrypt;
     } 
     location / {
     return 301 https://$server_name$request_uri;
     }
 }

upstream app_webappname {                           
     server webappname.azurewebsites.net:443; 
 }
 server {
     listen 443 ssl http2;
     ssl on;
     server_name www.domain.com domain.com;
     keepalive_timeout 300;
     
     # letsencrypt
     ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
     ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;
     
     # Cipher
     ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on;
     ssl_ciphers &quot;EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH&quot;;
     ssl_dhparam /etc/ssl/private/dhparam.pem; ssl_ecdh_curve secp384r1;
     ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m;
     
     # OSCP
     ssl_stapling on; ssl_stapling_verify on;
     resolver 8.8.8.8 8.8.4.4 valid=300s;
     resolver_timeout 5s;
     ssl_trusted_certificate /etc/letsencrypt/live/domain.com/chain.pem;

     # proxy to upstream
     location / { proxy_set_header X-Real-IP $remote_addr;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_set_header Host webappname.azurewebsites.net;
     proxy_set_header X-Forwarded-Proto $scheme;
     #proxy_set_header X-NginX-Proxy true;
     proxy_ssl_session_reuse off;
     proxy_pass https://app_webappname/;
     proxy_redirect off;
     }
 }</code></pre><h3 id="azure-web-app-einstellungen">Azure Web App Einstellungen</h3><p><strong>Networking &#x2013;&gt; Access Restrictions</strong><br>Nur Traffic von Reverse Proxy Server zulassen.<br>Neue Regel (Add rule) &#x2013;&gt; allow IP (IP vom nginx proxy Server)</p><p><strong>TLS/SSL settings &#x2013;&gt; Bindings</strong><br>HTTPS Only &#x2013;&gt; auf &#x201E;On&#x201C;</p><p>Quellen und weitere Informationen:<br><a href="https://withouttheloop.com/articles/2017-07-23-nginx-letsencrypt-azure-web-app/">https://withouttheloop.com/articles/2017-07-23-nginx-letsencrypt-azure-web-app/</a><br><a href="https://www.cloudflare.com/learning/cdn/glossary/reverse-proxy/">https://www.cloudflare.com/learning/cdn/glossary/reverse-proxy/</a><br><a href="https://www.nginx.com/resources/glossary/reverse-proxy-server/">https://www.nginx.com/resources/glossary/reverse-proxy-server/</a><br><a href="https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/">https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/</a><br><a href="https://mohitgoyal.co/2018/06/02/load-balance-azure-web-apps-using-nginx-server/">https://mohitgoyal.co/2018/06/02/load-balance-azure-web-apps-using-nginx-server/</a></p>]]></content:encoded></item><item><title><![CDATA[Dynamische vHosts mit apache2 Webserver (Wildcard)]]></title><description><![CDATA[<p></p><h2 id="modul-%E2%80%9Evhostalias%E2%80%9C-aktivieren">Modul &#x201E;vhost_alias&#x201C; aktivieren</h2><p>&#x2013;&gt; vhost_alias.load<br>/etc/apache2/mods-enabled<br>/etc/apache2/mods-available</p><pre><code>apache2ctl -M</code></pre><p>nach vhost_alias.load suchen und wenn nicht aktiviert mit a2enmod aktivieren</p><pre><code>sudo a2enmod vhost_alias
</code></pre><p>danach neu starten</p><pre><code>service apache2 restart</code></pre><h2 id="dynamischen-vhost-konfigurieren">dynamischen vHost konfigurieren</h2><pre><code>&lt;VirtualHost *:80&gt;
    	ServerAlias *.example.</code></pre>]]></description><link>https://clemensot.to/blog/dynamische-vhosts-mit-apache2-webserver-wildcard/</link><guid isPermaLink="false">632753f6bd8b7c799baabfc5</guid><category><![CDATA[tech]]></category><dc:creator><![CDATA[Clemens Otto]]></dc:creator><pubDate>Sun, 18 Sep 2022 17:25:01 GMT</pubDate><content:encoded><![CDATA[<p></p><h2 id="modul-%E2%80%9Evhostalias%E2%80%9C-aktivieren">Modul &#x201E;vhost_alias&#x201C; aktivieren</h2><p>&#x2013;&gt; vhost_alias.load<br>/etc/apache2/mods-enabled<br>/etc/apache2/mods-available</p><pre><code>apache2ctl -M</code></pre><p>nach vhost_alias.load suchen und wenn nicht aktiviert mit a2enmod aktivieren</p><pre><code>sudo a2enmod vhost_alias
</code></pre><p>danach neu starten</p><pre><code>service apache2 restart</code></pre><h2 id="dynamischen-vhost-konfigurieren">dynamischen vHost konfigurieren</h2><pre><code>&lt;VirtualHost *:80&gt;
    	ServerAlias *.example.com
    	VirtualDocumentRoot /var/www/example.com/subdomain/%1/public/
	ServerAdmin mail@example.com
	&lt;Directory /var/www/example.com/subdomain/*/&gt;
		Options -Indexes +FollowSymLinks +MultiViews
		AllowOverride All
		Order allow,deny
		allow from all
	&lt;/Directory&gt;
  ErrorLog ${APACHE_LOG_DIR}/error.log
	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn
&lt;/VirtualHost&gt;</code></pre><p>Source:</p><p><a href="https://httpd.apache.org/docs/2.4/mod/mod_vhost_alias.html">https://httpd.apache.org/docs/2.4/mod/mod_vhost_alias.html</a></p><p><a href="https://www.chris-shaw.com/blog/using-wildcards-in-virtual-hosts-on-apache">https://www.chris-shaw.com/blog/using-wildcards-in-virtual-hosts-on-apache</a></p>]]></content:encoded></item><item><title><![CDATA[Letsencrypt Wildcard SSL-Zertifikate mit Cloudflare-DNS-Challenge und dynamischen Nginx-vHosts (Debian 8/ Jessie)]]></title><description><![CDATA[<p>&#xDC;berblick:</p><ul><li>certbot-auto</li><li>dns-cloudflare plugin</li><li>CloudFlare API</li><li>nginx dynamische vhosts</li></ul><h3 id="schritt-1-%E2%80%93-certbot-deinstallierenwenn-installiert-certbot-deinstallieren"><br><strong>Schritt 1 &#x2013; certbot deinstallieren</strong><br>Wenn installiert, certbot deinstallieren</h3><pre><code>sudo apt-get remove certbot</code></pre><h3 id="schritt-2-%E2%80%93-certbot-auto-installieren-httpscertbotefforg"><strong>Schritt 2 &#x2013; certbot-auto installieren</strong> (https://certbot.eff.org/)</h3><p><a href="https://certbot.eff.org/lets-encrypt/debianjessie-nginx">https://certbot.eff.org/lets-encrypt/debianjessie-nginx</a></p><pre><code>cd /root
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto</code></pre>]]></description><link>https://clemensot.to/blog/letsencrypt-wildcard-ssl-zertifikate-mit-cloudflare-dns-challenge-und-dynamischen-nginx-vhosts-debian-8-jessie/</link><guid isPermaLink="false">6327506ebd8b7c799baabfb7</guid><category><![CDATA[tech]]></category><dc:creator><![CDATA[Clemens Otto]]></dc:creator><pubDate>Sun, 18 Sep 2022 17:18:25 GMT</pubDate><content:encoded><![CDATA[<p>&#xDC;berblick:</p><ul><li>certbot-auto</li><li>dns-cloudflare plugin</li><li>CloudFlare API</li><li>nginx dynamische vhosts</li></ul><h3 id="schritt-1-%E2%80%93-certbot-deinstallierenwenn-installiert-certbot-deinstallieren"><br><strong>Schritt 1 &#x2013; certbot deinstallieren</strong><br>Wenn installiert, certbot deinstallieren</h3><pre><code>sudo apt-get remove certbot</code></pre><h3 id="schritt-2-%E2%80%93-certbot-auto-installieren-httpscertbotefforg"><strong>Schritt 2 &#x2013; certbot-auto installieren</strong> (https://certbot.eff.org/)</h3><p><a href="https://certbot.eff.org/lets-encrypt/debianjessie-nginx">https://certbot.eff.org/lets-encrypt/debianjessie-nginx</a></p><pre><code>cd /root
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto</code></pre><h3 id="schritt-3-%E2%80%93-certbot-plugin-installieren-certbot-dns-cloudflare"><strong>Schritt 3 &#x2013; certbot plugin installieren </strong>(<code>certbot-dns-cloudflare</code>)</h3><p>Details:<a href="https://devops.stackexchange.com/questions/3757/how-to-install-certbot-plugins"> https://devops.stackexchange.com/questions/3757/how-to-install-certbot-plugins</a></p><p>Plugins checken:<br></p><pre><code>./certbot-auto plugins</code></pre><p>Zu certbot-auto Installationsort wechseln und mit pip Plugin installieren</p><pre><code>cd /opt/eff.org/certbot/venv
source bin/activate
pip install certbot-dns-cloudflare
deactivate</code></pre><p>Plugins erneut kontrollieren:<br></p><pre><code>./certbot-auto plugins</code></pre><pre><code>- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* apache
Description: Apache Web Server plugin - Beta
Interfaces: IAuthenticator, IInstaller, IPlugin
Entry point: apache = certbot_apache.entrypoint:ENTRYPOINT

* dns-cloudflare
Description: Obtain certificates using a DNS TXT record (if you are using Cloudflare for DNS).
.... 

* nginx
Description: Nginx Web Server plugin
Interfaces: IAuthenticator, IInstaller, IPlugin
Entry point: nginx = certbot_nginx.configurator:NginxConfigurator

* standalone
Description: Spin up a temporary webserver
Interfaces: IAuthenticator, IPlugin
Entry point: standalone = certbot.plugins.standalone:Authenticator

* webroot
Description: Place files in webroot directory
Interfaces: IAuthenticator, IPlugin
Entry point: webroot = certbot.plugins.webroot:Authenticator
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -</code></pre><h3 id="schritt-4-%E2%80%93-cloudflare-api-zugangsdaten"><strong>Schritt 4 &#x2013; Cloudflare API Zugangsdaten</strong></h3><p>Details:<a href="https://bjornjohansen.no/wildcard-certificate-letsencrypt-cloudflare">https://bjornjohansen.no/wildcard-certificate-letsencrypt-cloudflare</a></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://clemensot.to/blog/content/images/2022/09/cloudflare-view-api-key.webp" class="kg-image" alt loading="lazy" width="739" height="201" srcset="https://clemensot.to/blog/content/images/size/w600/2022/09/cloudflare-view-api-key.webp 600w, https://clemensot.to/blog/content/images/2022/09/cloudflare-view-api-key.webp 739w" sizes="(min-width: 720px) 720px"><figcaption>Cloudflare -&gt; My Profile/ Mein Profil -&gt; API Keys -&gt; Global API Key</figcaption></figure><p>Datei erstellen mit API Key:</p><p>dns_cloudflare_email = &quot;youremail@example.com&quot;<br>dns_cloudflare_api_key = &quot;4jg3252352sfsdffghfjghfjg6252522352cbcab4&quot;</p><p>zb /root/.secrets/cloudflare.ini</p><p>Berechtigungen:</p><pre><code>$ sudo chmod 0700 /root/.secrets/
$ sudo chmod 0400 /root/.secrets/cloudflare.ini
</code></pre><h3 id="schritt-5-%E2%80%93-zertifikat-anlegen"><strong>Schritt 5 &#x2013; Zertifikat anlegen</strong></h3><pre><code>cd /root
./certbot-auto certonly --dns-cloudflare --dns-cloudflare-credentials /root/.secrets/cloudflare.ini -d *.example.com --preferred-challenges dns-01</code></pre><h3 id="schritt-5-%E2%80%93-nginx-vhosts-dynamisch"><strong>Schritt 5 &#x2013; nginx vHosts (dynamisch)</strong></h3><p>Ordnerstruktur f&#xFC;r <strong>*.example.com</strong></p><p>/var/www/example.com/subdomain/*/public</p><pre><code>server {
    listen 80;
    #listen [::]:80;
    server_name *.example.com;
    return 301 https://$host$request_uri;
    }

server {
    listen 443 ssl http2;
    ssl on;
    #listen [::]:443 ssl spdy;
    server_name ~^(?&lt;subdomain&gt;[^.]+).example.com;


    # Letsencrypt
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    # Cipher
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers &quot;EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH&quot;;
    ssl_dhparam /etc/ssl/private/dhparam.pem;
    ssl_ecdh_curve secp384r1;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    #OSCP
    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 5s;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;

    #Document-Root
    root /var/www/example.com/subdomain/$subdomain/public;
    index index.html index.htm index.php;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        try_files  $uri  =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param HTTPS on;
        fastcgi_param SCRIPT_FILENAME 
        $document_root/$fastcgi_script_name;
        fastcgi_intercept_errors on;
    }</code></pre>]]></content:encoded></item><item><title><![CDATA[Google Pixel 4 & Pixel 4 XL]]></title><description><![CDATA[Alle Informationen zum neuen Google-Smartphone: Pixel 4 & Pixel 4 XL - Verkaufsstart / Release in Österreich, Preise, Features und technische Daten!]]></description><link>https://clemensot.to/blog/google-pixel4-pixel4-xl-smartphone-verkaufsstart-in-osterreich/</link><guid isPermaLink="false">630179cc3f1abb7a2d4ae376</guid><dc:creator><![CDATA[Clemens Otto]]></dc:creator><pubDate>Tue, 15 Oct 2019 12:00:00 GMT</pubDate><media:content url="https://clemensot.to/blog/content/images/2022/09/pixel4.jpg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://clemensot.to/blog/content/images/2022/09/pixel4.jpg" alt="Google Pixel 4 &amp; Pixel 4 XL"><p>Das neue Google-Smartphone &quot;&quot;Pixel 4&quot;&quot; wurde am 15. Oktober 2019 vorgestellt und ist derzeit das aktuellste Model der bekannten Pixel-Reihe von Google. <em>#madebygoogle</em></p>
<p><strong>Inhalt:</strong></p>
<ul>
<li><a href #verkaufsstart""><strong>Verkaufsstart / Release</strong> in &#xD6;sterreich</a></li>
<li><a href #preise""><strong>Preise</strong> in &#xD6;sterreich</a></li>
<li><a href #features"">Die besten <strong>Features</strong></a></li>
<li><a href #daten""><strong>Technische Daten</strong></a></li>
</ul>
<hr>  
<p><br>  </p>
<h4 id verkaufsstartinsterreich"">Verkaufsstart in &#xD6;sterreich</h4>
<p id verkaufsstart""></p>  
<p>Der genaue Verkaufsstart bzw. das genaue Ver&#xF6;ffentlichungsdatum (Release Date) f&#xFC;r das Google Pixel 4 und Pixel 4 XL Smartphone in &#xC3;&#x2013;sterreich ist derzeit noch nicht bekannt. Es ist aber davon auszugehen, dass es im November zum Kauf in &#xD6;sterreich erh&#xC3;&#xA4;ltlich sein wird.</p>
<p>Derzeit ist es in folgenden L&#xE4;ndern ab 24. Oktober erh&#xE4;ltlich: Australien, Deutschland, Frankreich, Irland, Italien, Japan, Kanada, Singapur, Spanien, Taiwan, USA, Vereinigtes K&#xF6;nigreich<br>
<br><a target="_blank" href="https://support.google.com/store/answer/2462844?hl=de"><small>Ger&#xE4;teverf&#xFC;gbarkeit<br>
</small></a></p>
<hr>  
<p><br>  </p>
<h4 id verkaufspreiseinsterreich"">Verkaufspreise in &#xD6;sterreich</h4>
<p id preise""></p>  
<p>Die Preise f&#xFC;r das Google Pixel in &#xD6;sterreich werden &#xE4;hnlich wie in Deutschland ausfallen:</p>
<p>Preise: <strong>Google Pixel 4</strong> (5,7 Zoll)</p>
<ul>
<li>64 GB Version: 749 &#xE2;&#x201A;&#xAC;</li>
<li>128 GB Version: 849 &#xE2;&#x201A;&#xAC;</li>
</ul>
<p>Preise: <strong>Google Pixel 4 XL</strong> (6,3 Zoll)</p>
<ul>
<li>64 GB Version: 899 &#x20AC;</li>
<li>128 GB Version: 999 &#x20AC;</li>
</ul>
<p>Erwerben kann man das Google Pixel Online im <a href https: madeby.google.com intl de_de phone "">Google Store</a>, bei anderen Online-H&#xE4;ndlern und im lokalen Einzelhandel. Google arbeitet diesmal auch vermehrt mit Mobilfunkanbietern zusammen!</p>
<hr>  
<p><br>  </p>
<h4 id topfeatures"">Top-Features</h4>
<p id features""></p>  
<p><img 4 10 2019 src content images google-pixel-4-spez.jpg"" alt="Google Pixel 4 &amp; Pixel 4 XL" google pixel features""></p>
<ul>
<li><strong>OLED-Display mit 90 Hertz</strong></li>
<li><strong>Gesichtserkennung (kein Fingerabdrucksensor)</strong></li>
<li><strong>Dual-Kamera</strong></li>
<li><strong>Motion Sense</strong></li>
</ul>
<hr>  
<p><br>  </p>
<h4 id technischedatenpixel4pixel4xl"">Technische Daten (Pixel 4 / Pixel 4 XL)</h4>
<p id daten""></p>  
<p><img 10 2019 src content images google-pixel-4-spezifikationen.jpg"" alt="Google Pixel 4 &amp; Pixel 4 XL" technische daten - google pixel 4""></p>
<ul>
<li>Bildschirm/Display Pixel 4: <strong>Pixel 4: 5,7 Zoll, FHD+-Aufl&#xF6;sung, Pixeldichte 440 ppi, HDR, Bildwiederholfrequenz 90 Hertz</strong></li>
<li>Bildschirm/Display Pixel 4 XL: <strong>6,3 Zoll, QHD+-Aufl&#xF6;sung, 537 ppi HDR, Bildwiederholfrequenz 90 Hertz</strong></li>
<li>Kameras: <strong>12 Megapixel (MP) Dual-Pixel und 16 MP Telephoto</strong></li>
<li>Prozessor: <strong>Qualcomm Snapdragon 855 / Pixel Neural Core</strong></li>
<li>Arbeitsspeicher: <strong>6 GB RAM</strong></li>
<li>Speicher <strong>64 oder 128 GB</strong></li>
<li>Soundsystem <strong>Stereo</strong></li>
<li>Security-System <strong>Titan M Security Modul</strong></li>
<li>Betriebssystem: <strong>Android 10.0</strong></li>
<li>Akku: <strong>Pixel 4 mit 2.800 Milliamperestunden (mAh), Pixel 4 XL mit 3.700 mAh</strong></li>
<li><strong>IP68</strong></li>
<li><p>Farben: <strong>Just Black, Clearly White, and Oh So Orange</strong></p></li>
<li><p>Anschl&#xFC;sse: <strong>USB Typ-C</strong></p></li>
</ul><!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Uber Alternative für Wien - Taxi Apps]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Heute am Mittwoch, 25.04.2018, musste Uber den Betrieb in Wien, aufgrund einer einstweiligen Verf&#xFC;gung des Handelsgerichts Wien, einstellen.</p>
<p>Laut Handelsgericht verst&#xF6;&#xDF;t Uber gegen die im Mietwagengesetz festgelegte R&#xFC;ckkehrpflicht. Uber-Fahrer m&#xFC;ssten nach jeder Fahrt wieder zur Betriebsst&#xE4;tte zur&</p>]]></description><link>https://clemensot.to/blog/uber-alternative-fur-wien-taxi-apps/</link><guid isPermaLink="false">630179cc3f1abb7a2d4ae375</guid><category><![CDATA[uber]]></category><category><![CDATA[taxi]]></category><dc:creator><![CDATA[Clemens Otto]]></dc:creator><pubDate>Wed, 25 Apr 2018 19:49:00 GMT</pubDate><media:content url="https://clemensot.to/blog/content/images/2022/09/uber-wien-25-04-2018.jpg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://clemensot.to/blog/content/images/2022/09/uber-wien-25-04-2018.jpg" alt="Uber Alternative f&#xFC;r Wien - Taxi Apps"><p>Heute am Mittwoch, 25.04.2018, musste Uber den Betrieb in Wien, aufgrund einer einstweiligen Verf&#xFC;gung des Handelsgerichts Wien, einstellen.</p>
<p>Laut Handelsgericht verst&#xF6;&#xDF;t Uber gegen die im Mietwagengesetz festgelegte R&#xFC;ckkehrpflicht. Uber-Fahrer m&#xFC;ssten nach jeder Fahrt wieder zur Betriebsst&#xE4;tte zur&#xFC;ckkehren. Bei Missachtung der einstweiligen Verf&#xFC;gung fallen bis zu 100.000 Euro Strafe an.</p>
<p><em>Update 27.04.2018</em>
<br>Seit heute Abend hat Uber den Betrieb in Wien wieder aufgenommen! </p>
<h5 id alternativeapps"">Alternative Apps</h5>
<p>Solange Uber seinen Dienst nicht anbieten kann, gibt es einige alternative Apps mit &#xC3;&#xA4;hnlich/gleichen Funktionen.</p>
<p><strong>Taxify</strong> 
<br>Die Taxify-App bietet sehr &#xE4;hnliche Funktionen wie Uber. Einige Uber-Fahrer werden au&#xDF;erdem zu dieser App wechseln um weiter f&#xFC;r Ihre Kunden fahren zu k&#xF6;nnen.<br> --&gt; <strong><a rel nofollow"" href https: invite.taxify.eu zvwwa"">Download Taxify-App</a></strong></p>
<p><strong>myTaxi</strong>
<br>&#xC3;&#x153;ber myTaxi kann man per App ein Taxi bestellen. <br> --&gt; <strong><a rel nofollow"" href https: de.mytaxi.com download.html"">Download myTaxi-App</a></strong></p>
<p><strong>Holmi</strong>
<br>Vermittlungsplattform f&#xFC;r Taxis und Mietw&#xC3;&#xA4;gen. Derzeit allerdings noch <em>nicht</em> in Wien verf&#xFC;gbar. <br>
--&gt; <strong><a rel nofollow"" href https: holmi.at "">Holmi-App</a></strong></p>
<p><br> <br>
<br> <br>
Kontakt: <a href https: twitter.com clemensvienna"">@clemensvienna</a></p><!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Google Pixel & Pixel XL]]></title><description><![CDATA[Alle Informationen zum neuen Smartphone von Google: Pixel - Verkaufsstart / Release in Österreich, Preise, Top Features und die wichtigsten techn. Daten!]]></description><link>https://clemensot.to/blog/google-pixel-pixel-xl-smartphone-verkaufsstart-in-osterreich/</link><guid isPermaLink="false">630179cc3f1abb7a2d4ae371</guid><category><![CDATA[Google]]></category><category><![CDATA[Google Pixel]]></category><category><![CDATA[Android App]]></category><category><![CDATA[Smartphone]]></category><dc:creator><![CDATA[Clemens Otto]]></dc:creator><pubDate>Fri, 21 Oct 2016 17:44:29 GMT</pubDate><media:content url="https://clemensot.to/blog/content/images/2016/10/google-pixel-pixel-xl-black.jpg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://clemensot.to/blog/content/images/2016/10/google-pixel-pixel-xl-black.jpg" alt="Google Pixel &amp; Pixel XL"><p><img src="https://clemensot.to/blog/content/images/2016/10/Google-Pixel-black.jpg" alt="Google Pixel &amp; Pixel XL" loading="lazy"></p>
<p>Das neue Google-Smartphone &quot;Pixel&quot; wurde am 4. Oktober vorgestellt und ersetzt die bekannte Nexus-Reihe von Google. Es ist das erste Smartphone, das von Google komplett selbst entworfen bzw. entwickelt wurde (<em>#madebygoogle</em>).</p>
<p><strong>Inhalt:</strong></p>
<ul>
<li><a href="#verkaufsstart"><strong>Verkaufsstart / Release</strong> in &#xD6;sterreich</a></li>
<li><a href="#preise"><strong>Preise</strong> in &#xD6;sterreich</a></li>
<li><a href="#features">Die besten <strong>Features</strong></a></li>
<li><a href="#daten"><strong>Technische Daten</strong></a><br>
<br></li>
</ul>
<h4 id="verkaufsstartinsterreich">Verkaufsstart in &#xD6;sterreich</h4>
<p id="verkaufsstart"></p>
Der genaue Verkaufsstart bzw. das genaue Ver&#xF6;ffentlichungsdatum (Release Date) f&#xFC;r das Google Pixel Smartphone in &#xD6;sterreich ist derzeit noch nicht bekannt. **Wenn Du &#xFC;ber den Verkaufsstart informiert werden m&#xF6;chtest, kannst Du dich unten in die exklusive E-Mail-Liste eintragen!** Es ist aber davon auszugehen, dass es im November zum Kauf in &#xD6;sterreich erh&#xE4;ltlich sein wird. (Wenn Du nicht mehr solange warten kannst, dann kannst du die <a rel="nofollow" target="_blank" href="https://www.amazon.de/gp/bestsellers/ce-de/3468301/ref=as_li_ss_tl?ie=UTF8&amp;linkCode=ll2&amp;tag=cob-utf8-21&amp;linkId=3fd4cfd33f924186bae69bad1ead894b">Smartphone Bestseller 2016</a> durchst&#xF6;bern.)
<hr>
==*Exklusive E-Mail-Benachrichtigung zum Verkaufsstart!*== <br>
&gt;Wenn Du &#xFC;ber den Verkaufsstart informiert werden m&#xF6;chtest, kannst Du dich in meine exklusive E-Mail-Liste eintragen und ich werde dich so schnell wie m&#xF6;glich informieren!
<form action="https://newsletter.everything24.net/subscribe" method="POST" accept-charset="utf-8">
	<label for="email">Email</label><br>
	<input type="text" placeholder="E-Mail" name="email" id="email">
	<br>
	<input type="hidden" name="list" value="5xWWv763ynxllDalDCqkLnaA">
	<input type="submit" name="submit" id="submit">
</form>
<a target="_blank" href="https://clemensotto.com/signup/google-pixel-news/"><small>Link zum Anmeldungsformular (Formular wird bei AMP nicht angezeigt!)</small></a>
`Wichtig: Wir achten Ihre Privatsph&#xE4;re!`
<hr>
<br>
####Verkaufspreise in &#xD6;sterreich
<p id="preise"></p>
Die Preise f&#xFC;r das Google Pixel in &#xD6;sterreich werden &#xE4;hnlich wie in Deutschland ausfallen:
<p>Preise: <strong>Google Pixel</strong> (5 Zoll)</p>
<ul>
<li>32 GB Version: 759 &#x20AC;</li>
<li>128 GB Version: 869 &#x20AC;</li>
</ul>
<p>Preise: <strong>Google Pixel XL</strong> (5,5 Zoll)</p>
<ul>
<li>32 GB Version: 899 &#x20AC;</li>
<li>128 GB Version: 1.009 &#x20AC;</li>
</ul>
<p>Erwerben kann man das Google Pixel Online im <a href="https://madeby.google.com/intl/de_de/phone/">Google Store</a>, bei anderen Online-H&#xE4;ndlern und im lokalen Einzelhandel. Google arbeitet diesmal auch vermehrt mit Mobilfunkanbietern zusammen!</p>
<br>
####Top-Features
<p id="features"></p>
![Black &amp; White - Google Pixel](/content/images/2016/10/google-pixel-black-white.png)
<ul>
<li><strong>Google Assistant:</strong></li>
<li><strong>Exzellente Kamera:</strong> 12,3 MP, 1,55 &#x3BC;m gro&#xDF;e Pixel, f/2.0 Blende</li>
<li><strong>Unbegrenzter Speicher</strong> f&#xFC;r Fotos und Videos</li>
<li><strong>Daydream VR:</strong> Virtuelle Realit&#xE4;t</li>
<li><strong>Care by Google:</strong> 24/7 Live-Support Unterst&#xFC;tzung durch Google-Experten</li>
</ul>
<br>
####Technische Daten (Pixel / Pixel XL)
<p id="daten"></p>
![Technische Daten - Google Pixel](/content/images/2016/10/tech-specs-hero-cropped-2x.png)
<ul>
<li>Design: <strong>Aluminiumgeh&#xE4;use aus einem Guss</strong></li>
<li>Display: <strong>5 Zoll (441ppi) FHD AMOLED / 5,5 Zoll (534 ppi) QHD-AMOLED</strong></li>
<li>Glas: <strong>2.5D Corning&#xAE; Gorilla&#xAE; Glass 4</strong></li>
<li>Akku: <strong>2.770 mAh / 3.450 mAh</strong></li>
<li>Gespr&#xE4;chszeit &#xFC;ber 3G/WCDMA: <strong>bis zu 26 Stunden / bis zu 32 Stunden</strong></li>
<li>Surfen mit WLAN oder LTE: <strong>bis zu 13 Stunden / bis zu 14 Stunden</strong></li>
<li>Schnelles Aufladen: <strong>Nur 15 Minuten laden und der Akku h&#xE4;lt bis zu 7 Stunden lang</strong></li>
<li>Arbeitsspeicher: <strong>4 GB RAM</strong></li>
<li>Speicher <strong>32 oder 128 GB</strong></li>
<li>Prozessor: <strong>Qualcomm&#xAE; Snapdragon&#x2122; 821<br>
2,15 Ghz + 1,6 Ghz, 64 Bit Quad-Core</strong></li>
<li>Anschl&#xFC;sse: <strong>USB Typ-C, 3,5-mm-Kopfh&#xF6;reranschluss</strong></li>
<li>Nano-SIM</li>
<li>Betriebssystem: Android 7.1 Nougat</li>
</ul>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Pokémon Go Download & spielen in Österreich - Guide]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p><img src="https://clemensot.to/blog/content/images/2016/07/pokemon-go-169.jpg" alt="Pokemon Go - &#xD6;sterreich: Downloaden und spielen vor Release" loading="lazy"></p>
<p><mark><strong>Update: 16. Juli 2016 - 12:00 Uhr</strong></mark></p>
<h3 id="updatepokemongooffiziellverfgbar">Update: Pokemon Go offiziell verf&#xFC;gbar</h3>
<p>Pokemon Go ist seit heute, 16. Juli 2016, offiziell in &#xD6;sterreich gestartet!</p>
<p><a target="_blank" rel="nofollow" href="https://play.google.com/store/apps/details?id=com.nianticlabs.pokemongo"><strong>ANDROID: Pokemon Go im Google Play Store</strong></a></p>
<p><a target="_blank" rel="nofollow" href="https://itunes.apple.com/at/app/pokemon-go/id1094591345"><strong>IOS: Pokemon Go im App Store</strong></a></p>
<h3 id="sterreichstartverschoben">&#xD6;sterreich Start verschoben</h3>
<p>Aufgrund der hohen Nachfrage hat</p>]]></description><link>https://clemensot.to/blog/pokemon-go-download-spielen-oesterreich/</link><guid isPermaLink="false">630179cc3f1abb7a2d4ae370</guid><category><![CDATA[Pokemon Go]]></category><category><![CDATA[Android App]]></category><category><![CDATA[iOS App]]></category><category><![CDATA[Apps]]></category><dc:creator><![CDATA[Clemens Otto]]></dc:creator><pubDate>Thu, 14 Jul 2016 12:32:01 GMT</pubDate><media:content url="https://clemensot.to/blog/content/images/2016/07/pokemon-go.jpg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://clemensot.to/blog/content/images/2016/07/pokemon-go.jpg" alt="Pok&#xE9;mon Go Download &amp; spielen in &#xD6;sterreich - Guide"><p><img src="https://clemensot.to/blog/content/images/2016/07/pokemon-go-169.jpg" alt="Pok&#xE9;mon Go Download &amp; spielen in &#xD6;sterreich - Guide" loading="lazy"></p>
<p><mark><strong>Update: 16. Juli 2016 - 12:00 Uhr</strong></mark></p>
<h3 id="updatepokemongooffiziellverfgbar">Update: Pokemon Go offiziell verf&#xFC;gbar</h3>
<p>Pokemon Go ist seit heute, 16. Juli 2016, offiziell in &#xD6;sterreich gestartet!</p>
<p><a target="_blank" rel="nofollow" href="https://play.google.com/store/apps/details?id=com.nianticlabs.pokemongo"><strong>ANDROID: Pokemon Go im Google Play Store</strong></a></p>
<p><a target="_blank" rel="nofollow" href="https://itunes.apple.com/at/app/pokemon-go/id1094591345"><strong>IOS: Pokemon Go im App Store</strong></a></p>
<h3 id="sterreichstartverschoben">&#xD6;sterreich Start verschoben</h3>
<p>Aufgrund der hohen Nachfrage hat Niantic den Europastart leicht verschoben. Um das beliebte Spiel schon vorab in &#xD6;sterreich spielen zu k&#xF6;nnen, wird im Folgenden erkl&#xE4;rt, wie man auf seinem Android Ger&#xE4;t oder auf dem iPhone <strong>Pokemon Go</strong> jetzt schon downloaden kann!</p>
<p><a href="#android">Anleitung f&#xFC;r Android Ger&#xE4;te</a></p>
<p><a href="#iphone">Anleitung f&#xFC;r Apple iPhone</a></p>
<h3 id="downloadfrandroid">Download f&#xFC;r Android</h3>
<p id="android">
Wer ein Android-Ger&#xE4;t besitzt und jetzt schon Pokemon Go spielen m&#xF6;chte, der kann die App sehr einfach &#xFC;ber eine externe Quelle installieren.
</p>
#####Schritt 1: Die APK f&#xFC;r Pokemon Go downloaden
<p>Auf APKMirror wird Pokemon Go als APK zum Download angeboten:<br>
<a href="http://www.apkmirror.com/apk/niantic-inc/pokemon-go/pokemon-go-0-29-2-release/pokemon-go-0-29-2-android-apk-download/" target="_blank"><strong>HIER DOWNLOADEN</strong></a></p>
<p><a rel="nofollow" href="http://www.apkmirror.com/apk/niantic-inc/pokemon-go/" target="_blank">Zur Pokemon Go &#xDC;bersicht auf APKMirror</a><br>
<mark>Der Download &#xFC;ber APKMirror ist signiert und dadurch sicher! (This APK is signed by Niantic, Inc. and upgrades your existing app.<br>
)</mark></p>
<p>Sobald Pokemon Go im &#xF6;sterreichischen Google Play Store verf&#xFC;gbar ist, kann man Pokemon Go auch einfach &#xFC;ber diesen <a href="https://play.google.com/store/apps/details?id=com.nianticlabs.pokemongo"><strong>Link</strong></a> downloaden.</p>
<h5 id="schritt2installationausunbekanntenquellenerlauben">Schritt 2: Installation aus unbekannten Quellen erlauben</h5>
<p>Um eine APP bzw. APK aus anderen Quellen, als dem Google Play Store zu installieren, muss dies in den Einstellungen aktiviert werden.<br>
<img src="https://clemensot.to/blog/content/images/2016/07/apk-unbekannter-herkunift-installieren.jpg" alt="Pok&#xE9;mon Go Download &amp; spielen in &#xD6;sterreich - Guide" loading="lazy"></p>
<h5 id="schritt3pokemongoapkinstallieren">Schritt 3: Pokemon Go APK installieren</h5>
<p>Nach dem Download der APK kann diese einfach installiert werden.<br>
Unter <strong>Downloads</strong> die Pokemon Go App ausw&#xE4;hlen und installieren.</p>
<h5 id="schritt4pokemongovorreleaseamandroidgertinsterreichspielen">Schritt 4: Pokemon Go vor Release am Android-Ger&#xE4;t in &#xD6;sterreich spielen</h5>
<p>Wenn alle Schritte erfolgreich gemeistert wurden, steht dem <strong>Spielen von Pokemon Go auf Android in &#xD6;sterreich vor dem offiziellen Release</strong> nichts mehr im Weg!</p>
<p><br><br></p>
<h3 id="downloadfriphone">Download f&#xFC;r iPhone</h3>
<p id="iphone">
Wer ein iPhone besitzt und jetzt schon Pokemon Go spielen m&#xF6;chte, der kann die App downloaden, indem ein neuer Apple-Account f&#xFC;r einen unterst&#xFC;tzten Markt erstellt wird.
</p><h5 id="schritt1neuenappleaccountappleiderstellenamerikanischeroderdeutschermarkt">Schritt 1: Neuen Apple-Account(AppleID) erstellen (amerikanischer oder deutscher Markt)</h5>
<p>Einen neuen Apple Acount anlegen, in einem Markt in dem Pokemon Go schon verf&#xFC;gbar ist(zB. USA, Deutschland).</p>
<h5 id="schritt2mitdemneuenaccountimappstoreeinloggen">Schritt 2: Mit dem neuen Account im App Store einloggen</h5>
<p>Nach der Erstellung mit dem neuen Account im App Store einloggen.</p>
<h5 id="schritt3pokemongoimappstoredownloaden">Schritt 3: Pokemon Go im AppStore downloaden</h5>
<p><strong>Im App Store nach &quot;Pokemon Go&quot; suchen</strong> oder &#xFC;ber folgende Links downloaden:</p>
<p><a href="https://itunes.apple.com/de/app/pokemon-go/id1094591345"><strong>Pokemon Go - DE</strong></a></p>
<p><a href="https://itunes.apple.com/us/app/pokemon-go/id1094591345"><strong>Pokemon Go - US</strong></a></p>
<h5 id="schritt4entfernungdesneuenkontos">Schritt 4: Entfernung des neuen Kontos</h5>
<p>Nach dem Download das neue Konto wieder entfernen und mit dem alten Account einloggen. Pokemon Go bleibt erhalten!</p>
<h5 id="schritt5pokemongovorreleaseamiphoneinsterreichspielen">Schritt 5: Pokemon Go vor Release am iPhone in &#xD6;sterreich spielen</h5>
<p>Wenn alle Schritte erfolgreich gemeistert wurden, steht dem <strong>Spielen von Pokemon Go am iPhone in &#xD6;sterreich vor dem offiziellen Release</strong> nichts mehr im Weg!</p>
<!--kg-card-end: markdown-->]]></content:encoded></item></channel></rss>