[{"content":"A working monitoring setup is a must-have for a proper home lab. In this blog article as well as the video, I explain the basics regarding a monitoring system based on Grafana, Prometheus and MQTT.\n(German YouTube video)\nThis installation is just an example and is not production ready!\nInstall Grafana I recommend referring to the official Documentation. The basic steps are shown below.\nInstall dependencies sudo apt install -y apt-transport-httpssudo apt install -y software-properties-common wgetAdd GPG key wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -Add apt source echo \u0026#34;deb https://packages.grafana.com/enterprise/deb stable main\u0026#34; | sudo tee -a /etc/apt/sources.list.d/grafana.listInstall Grafana sudo apt update sudo apt install grafana-enterpriseEnable the service sudo systemctl enable --now grafana-server Build Grafana MQTT datasource from source This step isn\u0026rsquo;t necessary any more as the MQTT datasource is now officially available\u0026quot;\nThe original build process is outlined in a GitHub Issue.\nInstall Go wget -O -https://raw.githubusercontent.com/mauleyzaola/scripts/master/go/go.install.sh | shsource ~/.bashrcInstall Mage sudo apt install gitgit clone https://github.com/magefile/magecd magego run bootstrap.goInstall Node.js curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -sudo apt install -y nodejsEnable Yarn sudo corepack enableModify the Grafana plugin configuration. sudo nano /etc/grafana/grafana.iniModify these variables:\nplugins = /var/lib/grafana/plugins allow_loading_unsigned_plugins = grafana-mqtt-datasourceCreate plugin directory mkdir /var/lib/grafana/pluginsBuild MQTT datasource cd /var/lib/grafana/pluginsgit clone https://github.com/grafana/mqtt-datasource.gitcd mqtt-datasourceyarn add @grafana/toolkityarn buildyarn installRestart Grafana sudo systemctl restart grafana-server Install and configure Mosquitto Install Mosquitto sudo apt install mosquittoConfigure Mosquitto Create the configuration file sudo nano /etc/mosquitto/conf.d/mosquitto.confInsert the configuration:\nlistener 1883 0.0.0.0 log_dest syslog log_dest stdout log_dest topic log_type error log_type warning log_type notice log_type information connection_messages true log_timestamp true allow_anonymous false password_file /etc/mosquitto/pwfileCreate the password file sudo nano /etc/mosquitto/pwfileAdd users to this file in the \u0026lt;username\u0026gt;:\u0026lt;password\u0026gt; scheme.\nHash the password file sudo mosquitto_passwd -U /etc/mosquitto/pwfileStart the Mosquitto service sudo systemctl enable --now mosquitto Install and configure Prometheus Create a service account I recommend using an unprivileged service account for Prometheus.\nsudo adduser prometheussudo su - prometheusDownload and extract Prometheus wget https://github.com/prometheus/prometheus/releases/download/v2.36.0/prometheus-2.36.0.linux-amd64.tar.gztar -xzvf prometheus-2.36.0.linux-amd64.tar.gzmv prometheus-2.36.0.linux-amd64/ prometheus/Create the Prometheus service The following commands have to be executed as an admin.\nsudo nano /etc/systemd/system/prometheus.service[Unit] Description=Prometheus Server After=network-online.target [Service] User=prometheus Restart=on-failure ExecStart=/home/prometheus/prometheus/prometheus \\ --config.file=/home/prometheus/prometheus/prometheus.yml \\ --storage.tsdb.path=/home/prometheus/prometheus/data [Install] WantedBy=multi-user.targetStart the Prometheus service sudo systemctl enable --now prometheus Install the Node Exporter I recommend using a service account here, too. The process of creating one is the same as for Prometheus.\nDownload and extract the Node Exporter wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gztar -xzvf node_exporter-1.3.1.linux-amd64.tar.gzmv node_exporter-1.3.1.linux-amd64/ node_exporter/Create the Node Exporter service sudo nano /etc/systemd/system/node-exporter.service[Unit] Description=Node Exporter Wants=network-online.target After=network-online.target [Service] User=prometheus ExecStart=/home/prometheus/node_exporter/node_exporter [Install] WantedBy=default.targetStart the Node Exporter Service sudo systemctl enable --now node node-exporterAdd the Node Exporter to Prometheus The config file is located in the prometheus folder in the home directory of the Prometheus service account.\nnano prometheus.yamlThis configuration has to be added to the job configuration section of the configuration:\n- job_name: \u0026#39;node_exporter\u0026#39; static_configs: - targets: [\u0026#39;localhost:9100\u0026#39;]Restart the Prometheus service sudo systemctl restart prometheus Done!\n","permalink":"https://loens2.com/en/posts/monitoring/","summary":"The accompanying description of the commands used in the YouTube video about open source monitoring.","title":"Monitoring"},{"content":" (German YouTube video showcasing the process)\nFor lazy people (inofficial script):\nbash \u0026lt;(curl -s https://pterodactyl-installer.se)Installing the panel Official documentation: https://pterodactyl.io/project/introduction.html\nInstall dependencies sudo apt update -ysudo apt install ca-certificates apt-transport-https software-properties-common gnupg curl -ywget -qO - https://packages.sury.org/php/apt.gpg | sudo apt-key add -curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpgecho \u0026#34;deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main\u0026#34; | sudo tee /etc/apt/sources.list.d/redis.listsudo apt update -y \u0026amp;\u0026amp; sudo apt upgrade -yapt -y install php8.1 php8.1-{cli,gd,mysql,pdo,mbstring,tokenizer,bcmath,xml,fpm,curl,zip} mariadb-server redis-server nginx tar unzip gitcurl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composerInstall the panel mkdir -p /var/www/pterodactylcd /var/www/pterodactylcurl -Lo panel.tar.gz https://github.com/pterodactyl/panel/releases/latest/download/panel.tar.gztar -xzvf panel.tar.gzchmod -R 755 storage/* bootstrap/cache/sudo mariadbConfigure MariaDB CREATE USER \u0026#39;pterodactyl\u0026#39;@\u0026#39;localhost\u0026#39; IDENTIFIED BY \u0026#39;PASSWORT\u0026#39;;CREATE DATABASE panel;GRANT ALL PRIVILEGES ON panel.* TO \u0026#39;pterodactyl\u0026#39;@\u0026#39;localhost\u0026#39; WITH GRANT OPTION;exitConfigure the panel cp .env.example .envTRUSTED_PROXIES=\u0026#39;\u0026lt;ip_reverse_proxy\u0026gt;\u0026#39;composer install --no-dev --optimize-autoloaderphp artisan key:generatephp artisan p:environment:setupphp artisan p:environment:databasephp artisan p:environment:mailphp artisan migrate --seedphp artisan p:user:makeThese commands make changes to the .env file. With key:generate, a encrytion key is added which is used to encrypt the panel\u0026rsquo;s data. Be sure to back this file up (e.g. store it in a password manager) to prevent data loss.\nModify the file permissions The pterodactyl files have to be owned by the www-data user and group.\nCreate cronjob A cronjob has to be created in order for scheduled tasks (e.g. updates) to work.\nEdit the crontab:\ncrontab -eIn the editor, add the following cronjob to the end of the file:\n* * * * * php /var/www/pterodactyl/artisan schedule:run \u0026gt;\u0026gt; /dev/null 2\u0026gt;\u0026amp;1Create a systemd service For the queue worker of the panel, a systemd service has to be created.\nnano /etc/systemd/system/pteroq.service[Unit] Description=Pterodactyl Queue Worker After=redis-server.service [Service] User=www-data Group=www-data Restart=always ExecStart=/usr/bin/php /var/www/pterodactyl/artisan queue:work -queue=high,standard,low --sleep=3 --tries=3 StartLimitInterval=180 StartLimitBurst=30 RestartSec=5s [Install] WantedBy=multi-user.targetStart the services systemctl enable --now redis-server systemctl enable --now pteroq.serviceCreate an NGINX configuration This configuration is an example without TLS. You should always use TLS in a production environment. This can be achieved with the use of a reverse proxy.\nDisable default site rm /etc/nginx/sites-enabled/defaultCreate a site for Pterodactyl nano /etc/nginx/sites-available/pterodactyl.confserver { listen 80; server_name example.com; root /var/www/pterodactyl/public; index index.html index.htm index.php; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } access_log off; error_log /var/log/nginx/pterodactyl.app-error.log error; # allow larger file uploads and longer script runtimes client_max_body_size 100m; client_body_timeout 120s; sendfile off; location ~ \\.php$ { fastcgi_split_path_info ^(.+\\.php)(/.+)$; fastcgi_pass unix:/run/php/php8.3-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param PHP_VALUE \u0026#34;upload_max_filesize = 100M \\n post_max_size=100M\u0026#34;; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param HTTP_PROXY \u0026#34;\u0026#34;; fastcgi_intercept_errors off; fastcgi_buffer_size 16k; fastcgi_buffers 4 16k; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; } location ~ /\\.ht { deny all; } }Link the available site to the enabled sites directory ln -s /etc/nginx/sites-available/pterodactyl.conf /etc/nginx/sites-enabled/pterodactyl.confRestart NGINX systemctl restart nginx Install Wings Install Docker Docker kann entweder schnell über den folgenden Befehl installiert werden, aber sollte in Produktivumgebungen nach den Vorgaben in der offiziellen Docker-Dokumentation installiert werden.\nDocker can be installed with the quick installation command shown below. This method is not recommended for production use, and you should refer to the official Docker installation documentation.\ncurl -sSL https://get.docker.com/ | CHANNEL=stable bashEnable Docker service systemctl enable --now dockerEnable swap checks (optional, recommended) Starting with kernel version 5.8, this configuration is the default; thus this section can be skipped. This example uses GRUB. The same configuration to the kernel commandline applies to other bootloaders e.g. systemd-boot.\nnano /etc/default/grubModify the variable GRUB_CMDLINE_LINUX_DEFAULT:\nGRUB_CMDLINE_LINUX_DEFAULT=\u0026#34;swapaccount=1\u0026#34;Download and install Wings Create a directory for Wings mkdir -p /etc/pterodactylDownload the Wings executable curl -L -o /usr/local/bin/wings \u0026#34;https://github.com/pterodactyl/wings/releases/latest/download/wings_linux_$([[ \u0026#34;$(uname -m)\u0026#34; == \u0026#34;x86_64\u0026#34; ]] \u0026amp;\u0026amp; echo \u0026#34;amd64\u0026#34; || echo \u0026#34;arm64\u0026#34;)\u0026#34;Add execution permissions to the executable chmod u+x /usr/local/bin/wingsConfigure Wings There are two ways of configuring Wings:\nAutomatic configuration via the command shown in the Pterodactyl web ui Manually through the config file at /etc/pterodactyl/config.yml Create and start Wings service Create service nano /etc/systemd/system/wings.serviceInsert service configuration:\n[Unit] Description=Pterodactyl Wings Daemon After=docker.service Requires=docker.service PartOf=docker.service [Service] User=root WorkingDirectory=/etc/pterodactyl LimitNOFILE=4096 PIDFile=/var/run/wings/daemon.pid ExecStart=/usr/local/bin/wings Restart=on-failure StartLimitInterval=180 StartLimitBurst=30 RestartSec=5s [Install] WantedBy=multi-user.targetStart the service systemctl enable --now wings Done! Now the installation and configuration of the Pterodactyl Panel \u0026amp; Wings should be finished.\n","permalink":"https://loens2.com/en/posts/pterodactyl-panel-wings/","summary":"Collection of Commands from the YouTube video about Pterodactyl.","title":"Pterodactyl Panel \u0026 Wings"},{"content":"Privacy Policy 1. Privacy at a Glance General Information The following information provides a simple overview of what happens to your personal data when you visit this website. Personal data refers to any information that can be used to identify you personally. For detailed information on data protection, please refer to our Privacy Policy listed below this text.\nData Collection on This Website Who Is Responsible for Data Collection on This Website? Data processing on this website is carried out by the website operator. You can find the operator’s contact information in the “Information on the Data Controller” section of this Privacy Policy.\nHow do we collect your data? Your data is collected, on the one hand, when you provide it to us. This may include, for example, data that you enter into a contact form.\nOther data is collected automatically or with your consent when you visit the website via our IT systems. This primarily consists of technical data (e.g., internet browser, operating system, or time of page view). This data is collected automatically as soon as you access this website.\nHow do we use your data? Some of the data is collected to ensure the website functions properly. Other data may be used to analyze your user behavior. If contracts can be concluded or initiated through the website, the data provided will also be used to process contract offers, orders, or other order inquiries.\nWhat rights do you have regarding your data? You have the right at any time to receive, free of charge, information about the origin, recipients, and purpose of your stored personal data. You also have the right to request the correction or deletion of this data. If you have given consent to data processing, you may revoke this consent at any time with future effect. In addition, you have the right, under certain circumstances, to request the restriction of the processing of your personal data. Furthermore, you have the right to file a complaint with the competent supervisory authority.\nYou may contact us at any time regarding this matter or any other questions about data protection.\n2. General Information and Mandatory Disclosures Data Protection The operators of this website take the protection of your personal data very seriously. We treat your personal data confidentially and in accordance with statutory data protection regulations as well as this Privacy Policy.\nWhen you use this website, various types of personal data are collected. Personal data is data that can be used to personally identify you. This privacy policy explains what data we collect and how we use it. It also explains how and for what purpose this is done.\nPlease note that data transmission over the Internet (e.g., when communicating via email) may involve security vulnerabilities. It is not possible to completely protect data from access by third parties.\nInformation on the Data Controller The data controller for data processing on this website is:\nExample Company Sample Road 10 90210 Sample City\nPhone: +49 (0) 123 44 55 66 Email: info@beispielfirma.de\nThe controller is the natural or legal person who, alone or jointly with others, determines the purposes and means of processing personal data (e.g., names, email addresses, etc.) .\nRetention Period Unless a more specific retention period is stated in this Privacy Policy, we will retain your personal data until the purpose for which it was processed no longer applies. If you submit a valid request for erasure or revoke your consent to data processing, your data will be erased, provided we have no other legally permissible grounds for storing your personal data (e.g., retention periods under tax or commercial law); in the latter case, the data will be deleted once these grounds no longer apply.\nGeneral Information on the Legal Bases for Data Processing on This Website If you have consented to the data processing, we process your personal data on the pursuant to Art. 6(1)(a) GDPR or Art. 9(2)(a) GDPR, provided that special categories of data are processed in accordance with Art. 9(1) GDPR. In the event of explicit consent to the transfer of personal data to third countries, data processing is also based on Article 49(1)(a) of the GDPR. If you have consented to the storage of cookies or to access to information on your device (e.g., via device fingerprinting), data processing is additionally based on Section 25(1) of the TDDDG. Consent may be revoked at any time. If your data is necessary for the performance of a contract or for the implementation of precontractual measures, we process your data on the basis of Article 6(1)(b) of the GDPR. Furthermore, we process your data if it necessary to comply with a legal obligation, on the basis of Article 6(1)(c) of the GDPR. Data processing may also take place on the basis of our legitimate interest pursuant to Article 6(1)(f) GDPR. Information regarding the applicable legal bases in each individual case is provided in the following sections of this Privacy Policy.\nNotice Regarding Data Transfers to Third Countries That Are Not Safe Under Data Protection Law and Transfers to U.S. Companies That Are Not DPF-Certified Among other things, we use tools from companies based in third countries that do not provide adequate data protection as well as U.S. tools whose providers are not certified under the EU-U.S. Data Privacy Framework (DPF) . When these tools are active, your personal data may be transferred to these countries and processed there. Please note that in third countries that are not considered safe under data protection law, a level of data protection comparable to that of the EU cannot be guaranteed.\nPlease note that the United States, as a safe third country, generally maintains a level of data protection comparable to that of the EU. Accordingly, data transfers to the United States are permitted if the recipient holds certification under the “EU-US Data Privacy Framework” (DPF) or has appropriate additional safeguards in place. Information regarding transfers to third countries, including the data recipients, can be found in this Privacy Policy.\nRecipients of Personal Data As part of our business operations, we collaborate with various external parties. In some cases, this requires the transfer of personal data to these external parties. We only disclose personal data to external parties if this is necessary for the performance of a contract, if we are legally obligated to do so (e.g., disclosure of data to tax authorities), if we have a legitimate interest in the disclosure pursuant to Art. 6(1)(f) of the GDPR, or if another legal basis permits the disclosure of data. When using data processors, we disclose our customers’ personal data only on the basis of a valid data processing agreement. In the case of joint processing, a joint processing agreement is concluded.\nWithdrawal of Your Consent to Data Processing Many data processing operations are only possible with your explicit consent. You may withdraw consent that has already been given at any time. The lawfulness of the data processing carried out prior to the withdrawal remains unaffected by the withdrawal.\nRight to Object to Data Collection in Specific Cases and to Direct Marketing (Art. 21 GDPR) IF DATA PROCESSING IS BASED ON ART. 6(1)(e) OR (f) OF THE GDPR , YOU HAVE THE RIGHT AT ANY TIME, FOR REASONS RELATING TO YOUR PARTICULAR SITUATION, TO OBJECT TO THE PROCESSING OF YOUR PERSONAL DATA ; THIS ALSO APPLIES TO PROFILING BASED ON THESE PROVISIONS. THE SPECIFIC LEGAL BASIS ON WHICH PROCESSING IS BASED CAN BE FOUND IN THIS PRIVACY POLICY. IF YOU OBJECT, WE WILL NO LONGER PROCESS YOUR PERSONAL DATA, UNLESS WE CAN DEMONSTRATE COMPELLING LEGITIMATE GROUNDS FOR THE PROCESSING that outweigh your interests, rights, and freedoms, or the processing serves to assert, exercise, or defend LEGAL CLAIMS (OBJECTION PURSUANT TO ART. 21(1) OF THE GDPR).\nIF YOUR PERSONAL DATA IS PROCESSED FOR DIRECT MARKETING PURPOSES, YOU HAVE THE RIGHT TO OBJECT AT ANY TIME TO THE PROCESSING OF YOUR for the purposes of such marketing; this also applies to profiling, to the extent that it is related to such direct marketing . IF YOU OBJECT, YOUR PERSONAL DATA WILL NO LONGER BE USED FOR THE PURPOSES OF DIRECT MARKETING (OBJECTION PURSUANT TO ART. 21(2) OF THE GDPR).\nRight to File a Complaint with the Competent Supervisory Authority In the event of violations of the GDPR, data subjects have the right to file a complaint with a supervisory authority, in particular in the Member State of their habitual residence, their place of work, or the location of the alleged infringement. The right to lodge a complaint is without prejudice to other administrative or judicial remedies.\nRight to Data Portability You have the right to have data that we process automatically based on your consent or in fulfillment of a contract provided to you or to a third party in a commonly used, machine-readable format . If you request the direct transfer of the data to another controller, this will only take place to the extent that it is technically feasible.\nAccess, Rectification, and Erasure Within the scope of applicable legal provisions, you have the right at any time to receive, free of charge, information about your stored personal data, its origin and recipients, and the purpose of the data processing, and, where applicable, a right to have this data corrected or erased. For this and for any other questions regarding personal data, you may contact us at any time.\nRight to Restriction of Processing You have the right to request the restriction of the processing of your personal data. You may contact us at any time regarding this matter. The right to restriction of processing applies in the following cases:\nIf you dispute the accuracy of your personal data stored by us, we generally need time to verify this. For the duration of the verification, you have the right to request that the processing of your personal data be restricted. If the processing of your personal data was or is unlawful, you may request the restriction of data processing instead of erasure. If we no longer need your personal data, but you need it to exercise, defend, or assert legal claims, you have the right to request restriction of the processing of your personal data instead of erasure. If you have lodged an objection pursuant to Art. 21(1) of the GDPR, a balancing of your interests against ours must be carried out. As long as it is not yet clear whose interests prevail, you have the right to request the restriction of the processing of your personal data. If you have restricted the processing of your personal data, this data—apart from its storage—may be processed only with your consent or for the purpose of asserting, exercising, or defending legal claims, or to protect the rights of another natural or legal person, or for reasons of a substantial public interest of the European Union or a Member State.\nSSL or TLS Encryption For security reasons and to protect the transmission of confidential content, such as orders or inquiries that you send to us as the site operator, this site uses SSL or TLS encryption. You can recognize an encrypted connection by the fact that the browser’s address bar changes from “http://” to “https://” and by the lock icon in your browser’s address bar.\nWhen SSL or TLS encryption is enabled, the data you transmit to us cannot be read by third parties.\n3. Data Collection on This Website Server Log Files The website provider automatically collects and stores information in so-called server log files, which your browser automatically transmits to us. These include:\nBrowser type and browser version Operating system used Referrer URL Hostname of the accessing computer Time of the server request IP address This data is not combined with other data sources.\nThis data is collected on the basis of Art. 6(1)(f) of the GDPR. The website operator has a legitimate interest in the technically error-free display and optimization of its website— for this purpose, the server log files must be collected.\nInquiries via Email, Phone, or Fax If you contact us via email, phone, or fax, your inquiry—including all personal data contained therein (name, inquiry)—will be stored and processed by us for the purpose of processing your request. We do not disclose this data without your consent.\nThe processing of this data is based on Article 6(1)(b) of the GDPR, provided that your inquiry is related to the performance of a contract or is necessary for the implementation of pre-contractual measures . In all other cases, the processing is based on our legitimate interest in the effective handling of inquiries directed to us (Article 6(1)(f) of the GDPR) or on your consent (Art. 6(1)(a) GDPR), provided that such consent was requested; consent may be withdrawn at any time.\nThe data you send us via contact requests will remain with us until you request that we delete it, withdraw your consent to its storage, or the purpose for storing the data no longer applies (e.g., once your request has been processed). Mandatory legal provisions— in particular statutory retention periods—remain unaffected.\n4. Social Media Facebook Elements of the Facebook social network are integrated into this website. The provider of this service is Meta Platforms Ireland Limited, Merrion Road, Dublin 4, D04 X2K5, Ireland. However, according to Facebook, the collected data is also transferred to the U.S. and other third countries.\nAn overview of Facebook’s social media elements can be found here: https://developers.facebook.com/docs/plugins/?locale=de_DE.\nWhen the social media element is active, a direct connection is established between your device and the Facebook server. This informs Facebook that you have visited this website using your IP address. If you click the Facebook “Like” button while logged into your Facebook account, you can link the content of this website to your Facebook profile. This allows Facebook to associate your visit to this website with your user account. Please note that, as the provider of these pages, we have no knowledge of the content of the data transmitted or its use by Facebook. For more information, please see Facebook’s Privacy Policy at: https://de-de.facebook.com/privacy/explanation.\nUse of this service is based on your consent pursuant to Art. 6(1)(a) GDPR and § 25(1) TDDDG. You may revoke your consent at any time.\nTo the extent that personal data is collected on our website using the tool described here and forwarded to Facebook, we and Meta Platforms Ireland Limited, Merrion Road, Dublin 4, Dublin, D04 X2K5, Ireland, are jointly responsible for this data processing (Article 26 of the GDPR). The joint responsibility is limited exclusively to the collection of the data and its transfer to Facebook. The processing carried out by Facebook after the transfer is not part of the joint responsibility. The obligations we share have been set forth in a joint processing agreement. The text of the agreement can be found at: https://www.facebook.com/legal/controller_addendum.\nAccording to this agreement, we are responsible for providing the privacy notice when using the Facebook tool and for ensuring the tool is implemented on our website in a manner that complies with data protection laws. Facebook is responsible for the data security of its products. Data subject rights (e.g., requests for access) regarding the data processed by Facebook can be exercised directly with Facebook. If you exercise your data subject rights with us, we are obligated to forward these requests to Facebook. Data transfers to the U.S. are based on the EU Commission’s Standard Contractual Clauses.\nDetails can be found here: https://www.facebook.com/legal/EU_data_transfer_addendum, https://de-de.facebook.com/help/566994660333381, and https://www.facebook.com/policy.php.\nThe company is certified under the “EU-US Data Privacy Framework” (DPF). The DPF is an agreement between the European Union and the United States designed to ensure compliance with European data protection standards when data is processed in the United States. Every company certified under the DPF commits to adhering to these data protection standards. For more information on this, please contact the provider at the following link: https://www.dataprivacyframework.gov/participant/4452.\nX (formerly Twitter) This website incorporates features of the X (formerly Twitter) service. These features are provided by the parent company X Corp., 1355 Market Street, Suite 900, San Francisco, CA 94103, USA. The branch office Twitter International Unlimited Company, One Cumberland Place, Fenian Street, Dublin 2, D02 AX07, Ireland, is responsible for data processing regarding individuals residing outside the U.S.\nWhen the social media element is active, a direct connection is established between your device and the X server. As a result, X (formerly Twitter) receives information that you have visited this website. By using X (formerly Twitter) and the “Retweet” or “Repost” function, the websites you visit are linked to your X (formerly Twitter) account and disclosed to other users . Please note that, as the provider of these pages, we have no knowledge of the content of the transmitted data or its use by X (formerly Twitter). For more information can be found in X’s (formerly Twitter’s) privacy policy at: https://x.com/de/privacy.\nUse of this service is based on your consent pursuant to Art. 6(1)(a) GDPR and § 25(1) of the TDDDG. You may withdraw your consent at any time.\nData transfers to the United States are based on the EU Commission’s Standard Contractual Clauses. Details can be found here: https://gdpr.x.com/en/controller-to-controller-transfers.html.\nYou can change your privacy settings on X (formerly Twitter) in your account settings at https://x.com/settings/account.\nThe company is certified under the “EU-US Data Privacy Framework” (DPF). The DPF is an agreement between the European Union and the U.S. designed to ensure compliance European data protection standards in data processing in the U.S. Every company certified under the DPF commits to complying with these data protection standards. For more information, please visit the provider’s website at the following link: https://www.dataprivacyframework.gov/participant/2710.\nInstagram Features of the Instagram service are integrated into this website. These features are provided by Meta Platforms Ireland Limited, Merrion Road, Dublin 4, D04 X2K5, Ireland.\nWhen the social media element is active, a direct connection is established between your device and the Instagram server. As a result, Instagram receives information about your visit to this website.\nIf you are logged into your Instagram account, you can link the content of this website to your Instagram profile by clicking the Instagram button. This allows Instagram to associate your visit to this website with your user account. Please note that, as the provider of these pages, we have no have any knowledge of the content of the transmitted data or its use by Instagram.\nUse of this service is based on your consent pursuant to Art. 6(1)(a) GDPR and § 25(1) TDDDG. You may revoke your consent at any time.\nTo the extent that personal data is collected on our website using the tool described here and forwarded to Facebook or Instagram, we and Meta Platforms Ireland Limited, Merrion Road, Dublin 4, Dublin, D04 X2K5, Ireland, are jointly responsible for this data processing (Article 26 of the GDPR). This joint responsibility is limited exclusively to the collection of the data and its transfer to Facebook or Instagram. The processing carried out by Facebook or Instagram following the transfer is not part of the joint responsibility. The obligations incumbent upon us jointly have been set forth in a joint processing agreement . The text of the agreement can be found at: https://www.facebook.com/legal/controller_addendum. According to this agreement, we are responsible for providing the privacy notice when using the Facebook or Instagram tools and for the data protection-compliant implementation of the tools on our website. Facebook is responsible for the data security of the Facebook and Instagram products. Data subject rights (e.g., requests for access) regarding data processed by Facebook or Instagram can be exercised directly with Facebook. If you exercise your data subject rights with us, we are obligated to forward these requests to Facebook.\nData transfers to the U.S. are based on the EU Commission’s Standard Contractual Clauses. Details can be found here: https://www.facebook.com/legal/EU_data_transfer_addendum, https://privacycenter.instagram.com/policy/, and https://de-de.facebook.com/help/566994660333381.\nFor more information on this, please see Instagram’s Privacy Policy: https://privacycenter.instagram.com/policy/.\nThe company is certified under the “EU-US Data Privacy Framework” (DPF). The DPF is an agreement between the European Union and the United States designed to ensure compliance with European data protection standards when data is processed in the United States. Every company certified under the DPF commits to complying with these data protection standards. For more information, please visit the provider’s website at the following link: https://www.dataprivacyframework.gov/participant/4452.\nTumblr This website uses buttons and other elements from the Tumblr service. The provider is Tumblr, Inc., 35 East 21st St, 10th Floor, New York, NY 10010, USA.\nWhen the social media element is active, a direct connection is established between your device and the Tumblr server. As a result, Tumblr receives information that you have visited this website.\nThe Tumblr buttons allow you to share a post or page on Tumblr or to follow the provider on Tumblr. When you visit one of our websites that features a Tumblr button, your browser establishes a direct connection to Tumblr’s servers. We have no control over the scope of the data that Tumblr collects and transmits using this plugin. As of now, the user’s IP address and the URL of the respective website are transmitted.\nUse of this service is based on your consent pursuant to Art. 6(1)(a) GDPR and § 25(1) TDDDG. You may revoke your consent at any time.\nFurther information on this can be found in Tumblr’s privacy policy at: https://www.tumblr.com/privacy/de.\nPinterest On this website, we use elements of the social network Pinterest, which is operated by Pinterest Europe Ltd., Palmerston House, 2nd Floor, Fenian Street, Dublin 2, Ireland.\nWhen you visit a page that contains such an element, your browser establishes a direct connection to Pinterest’s servers. This social media element transmits log data to Pinterest’s server in the United States. This log data may include your IP address, the addresses of the websites you have visited that also contain Pinterest features, the type and settings of your browser, the date and time of the request, how you use Pinterest, and cookies.\nUse of this service is based on your consent pursuant to Art. 6(1)(a) GDPR and § 25(1) of the German Telemedia Act (TDDDG). You may revoke your consent at any time.\nFor more information on the purpose, scope, and further processing and use of the data by Pinterest, as well as your rights in this regard and options for protecting your privacy, please refer to Pinterest’s privacy policy: https://policy.pinterest.com/de/privacy-policy.\nThe company is certified under the “EU-US Data Privacy Framework” (DPF). The DPF is an agreement between the European Union and the United States designed to ensure compliance with European data protection standards for data processing in the United States. Every company certified under the DPF commits to complying with these data protection standards. Further information on this is available from the provider at the following link: https://www.dataprivacyframework.gov/participant/4203.\n5. Plugins and Tools YouTube with Enhanced Privacy Protection This website embeds videos from YouTube. The website is operated by Google Ireland Limited (“Google”), Gordon House, Barrow Street, Dublin 4, Ireland.\nWhen you visit one of the pages on this website that includes a YouTube video, a connection is established with YouTube’s servers. In the process, the YouTube server is informed which of our pages you have visited. If you are logged into your YouTube account, you allow YouTube to associate your browsing behavior directly with your personal profile. You can prevent this by logging out of your YouTube account.\nWe use YouTube in enhanced privacy mode. According to YouTube, videos played in enhanced privacy mode are not used to personalize the YouTube viewing experience . Ads displayed in enhanced privacy mode are also not personalized. No cookies are set in enhanced privacy mode. Instead, so-called local storage elements are stored in the user’s browser; similar to cookies, these contain personal data and can be used for recognition purposes. Details on enhanced privacy mode can be found here: https://support.google.com/youtube/answer/171780.\nIn some cases, after a YouTube video is activated, additional data processing operations may be triggered over which we have no control.\nThe use of YouTube is in the interest of presenting our online offerings in an appealing manner. This constitutes a legitimate interest within the meaning of Art. 6(1)(f) GDPR. If consent has been requested, processing is carried out exclusively on the basis of Article 6(1)(a) of the GDPR and Section 25(1) of the TDDDG, insofar as the consent covers the storage of cookies or access to information on the user’s device (e.g., device fingerprinting) within the meaning of the TDDDG. The consent may be revoked at any time.\nFor more information about data protection on YouTube, please see their Privacy Policy at: https://policies.google.com/privacy?hl=de.\nThe company is certified under the “EU-U.S. Data Privacy Framework” (DPF). The DPF is an agreement between the European Union and the United States designed to ensure compliance with European data protection standards for data processing in the United States. Every company certified under the DPF commits to complying with these data protection standards. For more information on this, please contact the provider at the following link: https://www.dataprivacyframework.gov/participant/5780.\nSource: https://www.e-recht24.de\n","permalink":"https://loens2.com/en/privacy-policy/","summary":"\u003ch1 id=\"privacy-policy\"\u003ePrivacy Policy\u003c/h1\u003e\n\u003ch2 id=\"1-privacy-at-a-glance\"\u003e1. Privacy at a Glance\u003c/h2\u003e\n\u003ch3 id=\"general-information\"\u003eGeneral Information\u003c/h3\u003e\n\u003cp\u003eThe following information provides a simple overview of what happens to your personal data\nwhen you visit this website. Personal data refers to any information that can be used to\nidentify you personally. For detailed information on data protection, please refer to\nour Privacy Policy listed below this text.\u003c/p\u003e\n\u003ch3 id=\"data-collection-on-this-website\"\u003eData Collection on This Website\u003c/h3\u003e\n\u003ch4 id=\"who-is-responsible-for-data-collection-on-this-website\"\u003eWho Is Responsible for Data Collection on This Website?\u003c/h4\u003e\n\u003cp\u003eData processing on this website is carried out by the website operator. You can find the operator’s contact information\nin the “Information on the Data Controller” section of this Privacy Policy.\u003c/p\u003e","title":""},{"content":"Hi. I\u0026rsquo;m Leo.\nSkills I\u0026rsquo;m an electrical engineer and a software developer. My favorite languages are Rust and Go. Other programming languages I use (but don\u0026rsquo;t like as much) are:\nKotlin C++ C Java Lua TypeScript Javascript Pascal ST (Structured Text, basically Pascal; IEC 61131) This isn\u0026rsquo;t an exhaustive list.\nHobbys I have a variety of hobbys reaching from very manual stuff to automating everything in my life.\nOne of my biggest hobbys is my home lab. It currently consists of a few servers running my “essentials” at home. Through my home lab, I got into cybersecurity, and I’m planning to do my master’s degree in IT/OT security.\nI love home automation, and I’m actively trying to improve my home energy usage with the help of Home Assistant, EVCC and V2H.\nI also like repairing stuff. Right to Repair is king, and we should never let that be taken away from us.\nI’m also a bit of a car guy, though only with EVs.\n","permalink":"https://loens2.com/en/about/","summary":"\u003cp\u003eHi. I\u0026rsquo;m Leo.\u003c/p\u003e\n\u003ch2 id=\"skills\"\u003eSkills\u003c/h2\u003e\n\u003cp\u003eI\u0026rsquo;m an electrical engineer and a software developer. \u003cbr\u003e\nMy favorite languages are Rust and Go. \u003cbr\u003e\nOther programming languages I use (but don\u0026rsquo;t like as much) are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin\u003c/li\u003e\n\u003cli\u003eC++\u003c/li\u003e\n\u003cli\u003eC\u003c/li\u003e\n\u003cli\u003eJava\u003c/li\u003e\n\u003cli\u003eLua\u003c/li\u003e\n\u003cli\u003eTypeScript\u003c/li\u003e\n\u003cli\u003eJavascript\u003c/li\u003e\n\u003cli\u003ePascal\u003c/li\u003e\n\u003cli\u003eST (Structured Text, basically Pascal; IEC 61131)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis isn\u0026rsquo;t an exhaustive list.\u003c/p\u003e\n\u003ch2 id=\"hobbys\"\u003eHobbys\u003c/h2\u003e\n\u003cp\u003eI have a variety of hobbys reaching from very manual stuff to automating everything in my life.\u003c/p\u003e\n\u003cp\u003eOne of my biggest hobbys is my home lab. It currently consists of a few servers running my “essentials” at home.\nThrough my home lab, I got into cybersecurity, and I’m planning to do my master’s degree in IT/OT security.\u003c/p\u003e","title":"About"}]