<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Raspberry-Pi on Suraj's Homelab</title><link>https://homelab.surajdhakre.xyz/tags/raspberry-pi/</link><description>Recent content in Raspberry-Pi on Suraj's Homelab</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sat, 01 Nov 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://homelab.surajdhakre.xyz/tags/raspberry-pi/index.xml" rel="self" type="application/rss+xml"/><item><title>Setting Up Joplin Server on Raspberry Pi</title><link>https://homelab.surajdhakre.xyz/blog/setting-up-joplin-server-on-raspberry-pi/</link><pubDate>Sat, 01 Nov 2025 00:00:00 +0000</pubDate><guid>https://homelab.surajdhakre.xyz/blog/setting-up-joplin-server-on-raspberry-pi/</guid><description>&lt;h2 id="why-self-host-joplin"&gt;Why self-host Joplin?&lt;/h2&gt;
&lt;p&gt;Joplin Cloud costs money, and I don&amp;rsquo;t love my notes sitting on someone else&amp;rsquo;s server. The Pi was already running 24/7 anyway, so spinning up a sync server was a natural fit. Total cost: ₹0/month.&lt;/p&gt;
&lt;p&gt;The alternatives I considered:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Option&lt;/th&gt;
 &lt;th&gt;Why I skipped it&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Joplin Cloud&lt;/td&gt;
 &lt;td&gt;Paid, data on third-party servers&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Nextcloud sync&lt;/td&gt;
 &lt;td&gt;Too heavy for a 2GB Pi just for notes&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Dropbox/OneDrive&lt;/td&gt;
 &lt;td&gt;Works but sync conflicts are painful&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Self-hosted Joplin Server&lt;/td&gt;
 &lt;td&gt;✅ Free, fast, full control&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="stack"&gt;Stack&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Joplin Server&lt;/strong&gt; — the official sync backend (Docker)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PostgreSQL 15&lt;/strong&gt; — note storage and metadata (Docker)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;nginx&lt;/strong&gt; — reverse proxy with SSL termination&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bash script&lt;/strong&gt; — automated daily &lt;code&gt;pg_dump&lt;/code&gt; backups&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tailscale&lt;/strong&gt; — remote access from anywhere&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Raspberry Pi 4B running headless Raspberry Pi OS (64-bit)&lt;/li&gt;
&lt;li&gt;Docker and Docker Compose installed&lt;/li&gt;
&lt;li&gt;A domain or local hostname for nginx (e.g., &lt;code&gt;joplin.home.lan&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="step-1--docker-compose-setup"&gt;Step 1 — Docker Compose setup&lt;/h2&gt;
&lt;p&gt;Create a working directory:&lt;/p&gt;</description></item></channel></rss>