<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
	<title>Leonard Schwier</title>
	<link>https://leonardschwier.com/journal/</link>
	<description>Recent content in Home on Leonard Schwier</description>
	<generator>Hugo -- gohugo.io</generator>
	<language>en-us</language>
	<lastBuildDate>Fri, 07 Feb 2025 07:07:07 +0100</lastBuildDate>
    
        <atom:link href="https://leonardschwier.com/journal/index.xml" rel="self" type="application/rss+xml" />
	
	
	<item>
		<title>My home server</title>
		<link>https://leonardschwier.com/journal/posts/my-home-server/</link>
		<pubDate>Fri, 07 Feb 2025 07:07:07 +0100</pubDate>
		
		<guid>https://leonardschwier.com/journal/posts/my-home-server/</guid>
		<description>&lt;h1 id=&#34;introduction&#34;&gt;Introduction&lt;/h1&gt;
&lt;p&gt;I use a &lt;a href=&#34;https://www.raspberrypi.com/products/raspberry-pi-5/&#34;&gt;Raspberry Pi 5&lt;/a&gt; with 8GB RAM as my home server.&lt;/p&gt;
&lt;p&gt;The server uses &lt;a href=&#34;https://www.openmediavault.org/&#34;&gt;openmediavault&lt;/a&gt; (based on Debian Linux) as the operating system, hosts multiple deployed &lt;a href=&#34;https://www.docker.com/resources/what-container/&#34;&gt;Docker containers&lt;/a&gt;, and runs some custom scripts. I connect to my local network with my home server via &lt;a href=&#34;https://www.wireguard.com/&#34;&gt;WireGuard&lt;/a&gt; and use &lt;a href=&#34;https://tailscale.com/blog/how-tailscale-works&#34;&gt;tailscale&lt;/a&gt; for key exchange and coordination.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m amazed by the selection of open-source projects out there and try to &lt;a href=&#34;https://github.com/schwier-xyz&#34;&gt;contribute even more&lt;/a&gt; in the future.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why do I have a home server?&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;It is &lt;strong&gt;fun to learn&lt;/strong&gt; more about technology and try out new things&lt;/li&gt;
&lt;li&gt;It provides a &lt;strong&gt;privacy-friendly&lt;/strong&gt; alternative to some other services&lt;/li&gt;
&lt;li&gt;It can be &lt;strong&gt;economically attractive&lt;/strong&gt; if you have a lot of data (at least my business case is positive 😉)&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;deployed-services&#34;&gt;Deployed services&lt;/h2&gt;
&lt;p&gt;Beyond using my home server as a network-attached storage (NAS), I deployed the following services.&lt;/p&gt;
&lt;h3 id=&#34;photo-management&#34;&gt;Photo management&lt;/h3&gt;
&lt;h4 id=&#34;1-immichhttpsgithubcomimmich-appimmich&#34;&gt;1. &lt;a href=&#34;https://github.com/immich-app/immich&#34;&gt;Immich&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Photo management solution&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;document-management&#34;&gt;Document management&lt;/h3&gt;
&lt;h4 id=&#34;2-paperless-ngxhttpsgithubcompaperless-ngxpaperless-ngx&#34;&gt;2. &lt;a href=&#34;https://github.com/paperless-ngx/paperless-ngx&#34;&gt;Paperless-ngx&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Searchable document management system &amp;amp; archive&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;infrastructure&#34;&gt;Infrastructure&lt;/h3&gt;
&lt;h4 id=&#34;3-apache-web-serverhttpsgithubcomapachehttpd-with-mysql-databasehttpsgithubcommysqlmysql-server&#34;&gt;3. &lt;a href=&#34;https://github.com/apache/httpd&#34;&gt;Apache web server&lt;/a&gt; with &lt;a href=&#34;https://github.com/mysql/mysql-server&#34;&gt;MySQL database&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Server to run custom &lt;a href=&#34;https://github.com/php/php-src&#34;&gt;PHP&lt;/a&gt; scripts (e.g., daily birthday reminder, advanced calendar reminder)&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;4-syncthinghttpsgithubcomsyncthingsyncthing&#34;&gt;4. &lt;a href=&#34;https://github.com/syncthing/syncthing&#34;&gt;Syncthing&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Continuous peer-to-peer file synchronization&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;5-giteahttpsgithubcomgo-giteagitea&#34;&gt;5. &lt;a href=&#34;https://github.com/go-gitea/gitea&#34;&gt;Gitea&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Local &lt;a href=&#34;https://en.wikipedia.org/wiki/Git&#34;&gt;git&lt;/a&gt; version control server&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;6-pi-holehttpsgithubcompi-holepi-hole&#34;&gt;6. &lt;a href=&#34;https://github.com/pi-hole/pi-hole&#34;&gt;Pi-hole&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Network-wide DNS blocking&lt;/li&gt;
&lt;li&gt;I use &lt;a href=&#34;https://www.quad9.net/&#34;&gt;Quad9&lt;/a&gt; as upstream DNS provider&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;custom-scripts&#34;&gt;Custom scripts&lt;/h3&gt;
&lt;p&gt;I also run some custom scripts outside of the Docker containers.&lt;/p&gt;
&lt;h4 id=&#34;7-python-scripts&#34;&gt;7. Python scripts&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;A collection of custom scripts to back up my contacts (CardDav server), calendars (CalDav server), and MySQL databases.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;further-hardware-details&#34;&gt;Further hardware details&lt;/h1&gt;
&lt;p&gt;I have a &lt;a href=&#34;https://www.amazon.de/dp/B08PC5ZYB1&#34;&gt;2TB solid-state drive (SSD)&lt;/a&gt; &lt;a href=&#34;https://www.amazon.de/dp/B07F7WDZGT&#34;&gt;connected&lt;/a&gt; to the Raspberry Pi and use the official &lt;a href=&#34;https://www.raspberrypi.com/products/27w-power-supply/&#34;&gt;Raspberry Pi 27W USB-C Power Supply&lt;/a&gt;. The data of all deployed services and custom scripts is stored on the SSD.&lt;/p&gt;
&lt;p&gt;The SSD is encrypted with the &lt;a href=&#34;https://en.wikipedia.org/wiki/Linux_Unified_Key_Setup&#34;&gt;Linux Unified Key Setup (LUKS)&lt;/a&gt; to protect it against data loss resulting from theft.&lt;/p&gt;
&lt;p&gt;The Raspberry Pi has a &lt;a href=&#34;https://www.thingiverse.com/thing:6490529&#34;&gt;3D-printed case&lt;/a&gt; which has enough space for the SSD as well.&lt;/p&gt;
&lt;p&gt;










&lt;figure class=&#34;&#34;&gt;

    &lt;div&gt;
        &lt;img loading=&#34;lazy&#34; alt=&#34;Raspberry Pi case&#34; src=&#34; /journal/img/RaspberryPi_case.jpeg&#34;&gt;
    &lt;/div&gt;

    
    &lt;div class=&#34;caption-container&#34;&gt;
        &lt;figcaption&gt; Raspberry Pi case &lt;/figcaption&gt;
    &lt;/div&gt;
    
&lt;/figure&gt;











&lt;figure class=&#34;&#34;&gt;

    &lt;div&gt;
        &lt;img loading=&#34;lazy&#34; alt=&#34;Home Server&#34; src=&#34; /journal/img/Homeserver.jpeg&#34;&gt;
    &lt;/div&gt;

    
    &lt;div class=&#34;caption-container&#34;&gt;
        &lt;figcaption&gt; Home server &lt;/figcaption&gt;
    &lt;/div&gt;
    
&lt;/figure&gt;&lt;/p&gt;
&lt;h1 id=&#34;backups&#34;&gt;Backups&lt;/h1&gt;
&lt;p&gt;openmediavault creates regular backups of the entire operating system partition to the SSD using the &lt;a href=&#34;https://wiki.omv-extras.org/&#34;&gt;openmediavault-backup plugin&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Furthermore, the &lt;a href=&#34;https://wiki.omv-extras.org/&#34;&gt;openmediavault-borgbackup&lt;/a&gt; plugin creates regular &lt;em&gt;encrypted&lt;/em&gt; backups (see more information &lt;a href=&#34;https://github.com/borgbackup/borg&#34;&gt;here&lt;/a&gt;) to a &lt;a href=&#34;https://www.hetzner.com/de/storage/storage-box/&#34;&gt;Hetzner Storage Box&lt;/a&gt;.&lt;/p&gt;
</description>
	</item>
	
	<item>
		<title>My tech setup</title>
		<link>https://leonardschwier.com/journal/posts/my-tech-setup/</link>
		<pubDate>Fri, 07 Feb 2025 07:07:07 +0100</pubDate>
		
		<guid>https://leonardschwier.com/journal/posts/my-tech-setup/</guid>
		<description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;My tech setup aims at creating the right balance between &lt;strong&gt;privacy&lt;/strong&gt;, &lt;strong&gt;security&lt;/strong&gt;, &lt;strong&gt;long-term accessibility&lt;/strong&gt;, and &lt;strong&gt;convenience&lt;/strong&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;TL;DR I use Linux on my laptop and run a home server which hosts many open-source services.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;1-hardware&#34;&gt;1. Hardware&lt;/h2&gt;
&lt;p&gt;I use a &lt;a href=&#34;https://www.lenovo.com/us/en/p/laptops/thinkpad/thinkpadt/thinkpad-t14-gen-4-(14-inch-intel)/len101t0057&#34;&gt;&lt;strong&gt;Lenovo T14 Gen 4&lt;/strong&gt;&lt;/a&gt; with a 2880x1800 (16:10) display.











&lt;figure class=&#34;&#34;&gt;

    &lt;div&gt;
        &lt;img loading=&#34;lazy&#34; alt=&#34;Technical specifications of my Lenovo ThinkPad&#34; src=&#34; /journal/img/ThinkPad_Specs.png&#34;&gt;
    &lt;/div&gt;

    
    &lt;div class=&#34;caption-container&#34;&gt;
        &lt;figcaption&gt; Technical specifications of my Lenovo ThinkPad &lt;/figcaption&gt;
    &lt;/div&gt;
    
&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;Also, I run a Raspberry Pi as &lt;a href=&#34;https://leonardschwier.com/journal/posts/my-home-server/&#34;&gt;&lt;strong&gt;my home server&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;My router runs &lt;a href=&#34;https://openwrt.org/&#34;&gt;&lt;strong&gt;OpenWrt&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I use the &lt;a href=&#34;https://www.yubico.com/products/yubikey-5-overview/&#34;&gt;&lt;strong&gt;YubiKey&lt;/strong&gt;&lt;/a&gt; for &lt;strong&gt;two-factor authentication&lt;/strong&gt; and (sometimes) a &lt;a href=&#34;https://www.amazon.de/-/en/gp/product/B07GBXMBQF/&#34;&gt;&lt;strong&gt;travel router&lt;/strong&gt;&lt;/a&gt; with a &lt;strong&gt;virtual private network (VPN)&lt;/strong&gt; when I&amp;rsquo;m travelling.&lt;/p&gt;
&lt;h2 id=&#34;2-operating-system&#34;&gt;2. Operating system&lt;/h2&gt;
&lt;p&gt;I use &lt;a href=&#34;https://www.debian.org/intro/why_debian&#34;&gt;&lt;strong&gt;Debian 12&lt;/strong&gt;&lt;/a&gt; as the operating system on my Lenovo ThinkPad. Debian is a &lt;a href=&#34;https://en.wikipedia.org/wiki/Linux&#34;&gt;Linux distribution&lt;/a&gt;. There are many different distributions available but Debian is a good fit for me, mainly given its stability and maturity (e.g., availability of documentation).&lt;/p&gt;
&lt;p&gt;I have been a Mac OS user for 20 years but decided to fully transition to Linux in January 2024. Over 10 years ago, I experienced Linux for the first time with &lt;em&gt;Raspberry OS&lt;/em&gt; (fka &lt;em&gt;Raspian&lt;/em&gt;). In November 2022, I started evaluating whether I want to fully move to Linux. Eventually, in January 2024, I sold my &lt;em&gt;MacBook Air M1&lt;/em&gt; and &lt;em&gt;iPad Pro&lt;/em&gt; and ventured fully into the Linux ecosystem.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why Linux?&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Curiosity&lt;/strong&gt; about getting more into the &lt;strong&gt;machine room of an operating system&lt;/strong&gt; (i.e., having the freedom &amp;amp; understanding to configure even more things)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Strong respect&lt;/strong&gt; for the outstanding work the &lt;strong&gt;open-source community&lt;/strong&gt; is doing and the urge to experience it from within (and support where I can)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interest&lt;/strong&gt; to have more &lt;strong&gt;control&lt;/strong&gt; about the privacy of the operating system&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;3-software&#34;&gt;3. Software&lt;/h2&gt;
&lt;p&gt;I use &lt;strong&gt;apt&lt;/strong&gt; (default for Debian) and also &lt;strong&gt;flatpak&lt;/strong&gt; as &lt;strong&gt;package managers&lt;/strong&gt;. For flatpak, I use the &lt;a href=&#34;htps://flathub.org&#34;&gt;flathub&lt;/a&gt; repository.&lt;/p&gt;
&lt;p&gt;The following commands install most of my essential applications and tools.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo apt install chromium thunderbird vlc wireguard audacity calibre baobab filezilla fuse nmap gimp libreoffice openvpn opensnitch yt-dlp gnome-shell-extension-appindicator borgbackup curl r-base-core evolution-ews plank rclone python3-pip python3-full ssh cmake rsync heif-gdk-pixbuf sshfs syncthing npm php php-dom php-mbstring fprintd libpam-fprintd
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo apt install flatpak gnome-software-plugin-flatpak

sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

flatpak install com.vscodium.codium com.bitwarden.desktop com.slack.Slack com.spotify.Client com.todoist.Todoist com.yubico.yubioath info.portfolio_performance.PortfolioPerformance net.ankiweb.Anki org.cryptomator.Cryptomator org.mozilla.firefox org.standardnotes.standardnotes org.zotero.Zotero md.obsidian.Obsidian org.signal.Signal io.github.shiftey.Desktop
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In addition, I use &lt;a href=&#34;https://posit.co/download/rstudio-desktop/&#34;&gt;&lt;strong&gt;RStudio&lt;/strong&gt;&lt;/a&gt; and install some helpful packages to run specific R libraries (e.g., tidyverse).&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo apt install libssl-dev libcurl4-openssl-dev unixodbc-dev libxml2-dev libmariadb-dev libfontconfig1-dev libharfbuzz-dev libfribidi-dev libfreetype6-dev libpng-dev libtiff5-dev libjpeg-dev
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;I use the following &lt;strong&gt;web browser extensions&lt;/strong&gt; for Firefox and Chromium:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Decentraleyes&lt;/li&gt;
&lt;li&gt;HTTPS Everywhere&lt;/li&gt;
&lt;li&gt;Privacy Badger&lt;/li&gt;
&lt;li&gt;uBlock Origin&lt;/li&gt;
&lt;li&gt;Bitwarden&lt;/li&gt;
&lt;li&gt;Rapid Journal Check &lt;em&gt;(Chromium-only)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;JSON Formatter &lt;em&gt;(Chromium-only)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Google Docs Offline &lt;em&gt;(Chromium-only)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I use &lt;a href=&#34;https://duckduckgo.com&#34;&gt;&lt;strong&gt;DuckDuckGo&lt;/strong&gt;&lt;/a&gt; as &lt;strong&gt;search engine&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;For continuous &lt;strong&gt;peer-to-peer file synchronization&lt;/strong&gt; between my Thinkpad, smartphone and home server, I use &lt;a href=&#34;https://github.com/syncthing/syncthing&#34;&gt;&lt;strong&gt;Syncthing&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I use &lt;a href=&#34;https://github.com/borgbackup/borg&#34;&gt;&lt;strong&gt;borg&lt;/strong&gt;&lt;/a&gt; with the &lt;a href=&#34;https://github.com/borgbase/vorta&#34;&gt;&lt;strong&gt;Vorta&lt;/strong&gt; user interface&lt;/a&gt; for &lt;strong&gt;backups&lt;/strong&gt; to a &lt;a href=&#34;https://www.hetzner.com/de/storage/storage-box/&#34;&gt;Hetzner Storage Box&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can find &lt;strong&gt;further commands&lt;/strong&gt; to set up my Linux machine &lt;a href=&#34;https://github.com/LeonardSchwier/linux-configuration&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;4-services--supporting-infrastructure&#34;&gt;4. Services &amp;amp; supporting infrastructure&lt;/h2&gt;
&lt;p&gt;I use two &lt;strong&gt;custom domains&lt;/strong&gt; for my &lt;strong&gt;e-mail addresses&lt;/strong&gt; to remain provider agnostic (e.g., leonardschwier.com). At the moment, I use &lt;a href=&#34;https://mailbox.org&#34;&gt;Mailbox.org&lt;/a&gt; as my e-mail provider.&lt;/p&gt;
&lt;p&gt;Furthermore, I use a &lt;strong&gt;different e-mail address and password&lt;/strong&gt; (&amp;ndash;&amp;gt; search for &amp;ldquo;plus addressing&amp;rdquo;) for each service I sign up for.&lt;/p&gt;
&lt;p&gt;I run multiple &lt;strong&gt;custom scripts&lt;/strong&gt; and &lt;strong&gt;services&lt;/strong&gt; to make my life easier (e.g., &lt;a href=&#34;https://github.com/LeonardSchwier/url-shortener&#34;&gt;an &lt;strong&gt;URL shortener&lt;/strong&gt;&lt;/a&gt;, an advanced &lt;strong&gt;calendar reminder&lt;/strong&gt;, a self-built &lt;strong&gt;blog &amp;amp; newsletter&lt;/strong&gt; system).&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://leonardschwier.com/journal/posts/my-home-server/&#34;&gt;&lt;strong&gt;My home server&lt;/strong&gt;&lt;/a&gt; hosts many open-source services.&lt;/p&gt;
</description>
	</item>
	
	</channel>
</rss>
