<rss
      xmlns:atom="http://www.w3.org/2005/Atom"
      xmlns:media="http://search.yahoo.com/mrss/"
      xmlns:content="http://purl.org/rss/1.0/modules/content/"
      xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
      xmlns:dc="http://purl.org/dc/elements/1.1/"
      version="2.0"
    >
      <channel>
        <title><![CDATA[Sebastix]]></title>
        <description><![CDATA[Building and maintaining the FOSS nostr-php library supported by OpenSats https://github.com/nostrver-se/nostr-php | Follow my contributions on https://nostrver.se | Creative / fullstack webdeveloper from 🇳🇱 | #PHP #Drupal #Javascript #Vuejs #InteractionDesign | Really cares about #FOSS #Privacy #Selfhosting #DigitalWellbeing | Hobbies #Cycling #HondaCivic #Circuit]]></description>
        <link>https://sebastix.npub.pro/tag/posse/</link>
        <atom:link href="https://sebastix.npub.pro/tag/posse/rss/" rel="self" type="application/rss+xml"/>
        <itunes:new-feed-url>https://sebastix.npub.pro/tag/posse/rss/</itunes:new-feed-url>
        <itunes:author><![CDATA[Sebastix]]></itunes:author>
        <itunes:subtitle><![CDATA[Building and maintaining the FOSS nostr-php library supported by OpenSats https://github.com/nostrver-se/nostr-php | Follow my contributions on https://nostrver.se | Creative / fullstack webdeveloper from 🇳🇱 | #PHP #Drupal #Javascript #Vuejs #InteractionDesign | Really cares about #FOSS #Privacy #Selfhosting #DigitalWellbeing | Hobbies #Cycling #HondaCivic #Circuit]]></itunes:subtitle>
        <itunes:type>episodic</itunes:type>
        <itunes:owner>
          <itunes:name><![CDATA[Sebastix]]></itunes:name>
          <itunes:email><![CDATA[Sebastix]]></itunes:email>
        </itunes:owner>
            
      <pubDate>Thu, 11 Jul 2024 15:26:57 GMT</pubDate>
      <lastBuildDate>Thu, 11 Jul 2024 15:26:57 GMT</lastBuildDate>
      
      <itunes:image href="https://nostr.build/i/33d5d33cd958fa7b6c7c573fffee190c2bc479c4e7d202ee30661d75f2cf7c5a.jpg" />
      <image>
        <title><![CDATA[Sebastix]]></title>
        <link>https://sebastix.npub.pro/tag/posse/</link>
        <url>https://nostr.build/i/33d5d33cd958fa7b6c7c573fffee190c2bc479c4e7d202ee30661d75f2cf7c5a.jpg</url>
      </image>
      <item>
      <title><![CDATA[I'm posting weekly updates on…]]></title>
      <description><![CDATA[I'm posting weekly updates on what I've worked on for @Nostr-PHP and other Nostr stuff at  
This website is still a pretty basic Drupal powered one, but it uses some modules I'm building for crossposting notes and long-form content.

I just posted this 
which is…]]></description>
             <itunes:subtitle><![CDATA[I'm posting weekly updates on what I've worked on for @Nostr-PHP and other Nostr stuff at  
This website is still a pretty basic Drupal powered one, but it uses some modules I'm building for crossposting notes and long-form content.

I just posted this 
which is…]]></itunes:subtitle>
      <pubDate>Thu, 11 Jul 2024 15:26:57 GMT</pubDate>
      <link>https://sebastix.npub.pro/post/note1f02xj2vscgl58wdlyjs40ncz8z08wrfphnsjt3zpxzam0j07jx5qx56flg/</link>
      <comments>https://sebastix.npub.pro/post/note1f02xj2vscgl58wdlyjs40ncz8z08wrfphnsjt3zpxzam0j07jx5qx56flg/</comments>
      <guid isPermaLink="false">note1f02xj2vscgl58wdlyjs40ncz8z08wrfphnsjt3zpxzam0j07jx5qx56flg</guid>
      <category>nostrphp</category>
      
        <media:content url="https://shares.sebastix.dev/NEu46HZr.png" medium="image"/>
        <enclosure 
          url="https://shares.sebastix.dev/NEu46HZr.png" length="0" 
          type="image/png" 
        />
      <noteId>note1f02xj2vscgl58wdlyjs40ncz8z08wrfphnsjt3zpxzam0j07jx5qx56flg</noteId>
      <npub>npub1qe3e5wrvnsgpggtkytxteaqfprz0rgxr8c3l34kk3a9t7e2l3acslezefe</npub>
      <dc:creator><![CDATA[Sebastix]]></dc:creator>
      <content:encoded><![CDATA[<p>I'm posting weekly updates on what I've worked on for <a href="https://njump.me/npub1phpdev2d38u5hzs4jrsh360mevh0rjctu9669quy97wu23u8sqdqpfha0j">Nostr-PHP</a> and other Nostr stuff at <np-embed url="https://nostrver.se"><a href="https://nostrver.se">https://nostrver.se</a></np-embed> <br>This website is still a pretty basic Drupal powered one, but it uses some modules I'm building for crossposting notes and long-form content.<br><br>I just posted this <np-embed nostr="naddr1qvzqqqr4gupzqrwzmjc5mz0efw9pty8p0r5lhjew789shct452pcgtuac4rc0qq6qyvhwumn8ghj7mn0wd68ytnnv43xzum5d9uzuer9wchsqxthv4jkktfjxukh2uryv96x2ueddehhxarj94cxsuqkgu8s7"><a href="https://njump.me/naddr1qvzqqqr4gupzqrwzmjc5mz0efw9pty8p0r5lhjew789shct452pcgtuac4rc0qq6qyvhwumn8ghj7mn0wd68ytnnv43xzum5d9uzuer9wchsqxthv4jkktfjxukh2uryv96x2ueddehhxarj94cxsuqkgu8s7">nostr:naddr1qvzqqqr4gupzqrwzmjc5mz0efw9pty8p0r5lhjew789shct452pcgtuac4rc0qq6qyvhwumn8ghj7mn0wd68ytnnv43xzum5d9uzuer9wchsqxthv4jkktfjxukh2uryv96x2ueddehhxarj94cxsuqkgu8s7</a></np-embed><br>which is also displayed on <np-embed url="https://nostrver.se/blog/week-27-updates-nostr-php"><a href="https://nostrver.se/blog/week-27-updates-nostr-php">https://nostrver.se/blog/week-27-updates-nostr-php</a></np-embed><br><br>This is how it currently looks like in the cms/admin UI of Drupal:<br><a href="https://shares.sebastix.dev/NEu46HZr.png" class="vbx-media" target="_blank"><img class="venobox" src="https://shares.sebastix.dev/NEu46HZr.png"></a><br><br>I'm also working on a feature to have multiple Nostr keypairs (users) configured so you can choose which user should broadcast the event to Nostr.<br><a href="https://shares.sebastix.dev/3sW7sE13.gif" class="vbx-media" target="_blank"><img class="venobox" src="https://shares.sebastix.dev/3sW7sE13.gif"></a><br><br><a href='/tag/nostrphp/'>#NostrPHP</a> <a href='/tag/php/'>#PHP</a> <a href='/tag/drupal/'>#Drupal</a> <a href='/tag/posse/'>#POSSE</a></p>
]]></content:encoded>
      <itunes:author><![CDATA[Sebastix]]></itunes:author>
      <itunes:summary><![CDATA[<p>I'm posting weekly updates on what I've worked on for <a href="https://njump.me/npub1phpdev2d38u5hzs4jrsh360mevh0rjctu9669quy97wu23u8sqdqpfha0j">Nostr-PHP</a> and other Nostr stuff at <np-embed url="https://nostrver.se"><a href="https://nostrver.se">https://nostrver.se</a></np-embed> <br>This website is still a pretty basic Drupal powered one, but it uses some modules I'm building for crossposting notes and long-form content.<br><br>I just posted this <np-embed nostr="naddr1qvzqqqr4gupzqrwzmjc5mz0efw9pty8p0r5lhjew789shct452pcgtuac4rc0qq6qyvhwumn8ghj7mn0wd68ytnnv43xzum5d9uzuer9wchsqxthv4jkktfjxukh2uryv96x2ueddehhxarj94cxsuqkgu8s7"><a href="https://njump.me/naddr1qvzqqqr4gupzqrwzmjc5mz0efw9pty8p0r5lhjew789shct452pcgtuac4rc0qq6qyvhwumn8ghj7mn0wd68ytnnv43xzum5d9uzuer9wchsqxthv4jkktfjxukh2uryv96x2ueddehhxarj94cxsuqkgu8s7">nostr:naddr1qvzqqqr4gupzqrwzmjc5mz0efw9pty8p0r5lhjew789shct452pcgtuac4rc0qq6qyvhwumn8ghj7mn0wd68ytnnv43xzum5d9uzuer9wchsqxthv4jkktfjxukh2uryv96x2ueddehhxarj94cxsuqkgu8s7</a></np-embed><br>which is also displayed on <np-embed url="https://nostrver.se/blog/week-27-updates-nostr-php"><a href="https://nostrver.se/blog/week-27-updates-nostr-php">https://nostrver.se/blog/week-27-updates-nostr-php</a></np-embed><br><br>This is how it currently looks like in the cms/admin UI of Drupal:<br><a href="https://shares.sebastix.dev/NEu46HZr.png" class="vbx-media" target="_blank"><img class="venobox" src="https://shares.sebastix.dev/NEu46HZr.png"></a><br><br>I'm also working on a feature to have multiple Nostr keypairs (users) configured so you can choose which user should broadcast the event to Nostr.<br><a href="https://shares.sebastix.dev/3sW7sE13.gif" class="vbx-media" target="_blank"><img class="venobox" src="https://shares.sebastix.dev/3sW7sE13.gif"></a><br><br><a href='/tag/nostrphp/'>#NostrPHP</a> <a href='/tag/php/'>#PHP</a> <a href='/tag/drupal/'>#Drupal</a> <a href='/tag/posse/'>#POSSE</a></p>
]]></itunes:summary>
      <itunes:image href="https://shares.sebastix.dev/NEu46HZr.png"/>
      </item>
      
      <item>
      <title><![CDATA[Work in progress #Drupal #POSSE #NostrPHP]]></title>
      <description><![CDATA[Work in progress #Drupal #POSSE #NostrPHP

naddr1qvzqqqr4gupzq2fpv7zl0vjp5m4mkr6c70hcs265fkh68asvefnx42z9cy4xx6nsqy88wumn8ghj7mn0wvhxcmmv9uq3jamnwvaz7tmwdaehgu3wwdjkyctnw35hstnyv4mz7qq0wajk26edxg6z6atsv3shgetngnffm4…]]></description>
             <itunes:subtitle><![CDATA[Work in progress #Drupal #POSSE #NostrPHP

naddr1qvzqqqr4gupzq2fpv7zl0vjp5m4mkr6c70hcs265fkh68asvefnx42z9cy4xx6nsqy88wumn8ghj7mn0wvhxcmmv9uq3jamnwvaz7tmwdaehgu3wwdjkyctnw35hstnyv4mz7qq0wajk26edxg6z6atsv3shgetngnffm4…]]></itunes:subtitle>
      <pubDate>Thu, 27 Jun 2024 15:12:33 GMT</pubDate>
      <link>https://sebastix.npub.pro/post/note13aea3k89fvwynd3d453m7hp20dytlqzj37gv70pnay677uvp2russ8xq24/</link>
      <comments>https://sebastix.npub.pro/post/note13aea3k89fvwynd3d453m7hp20dytlqzj37gv70pnay677uvp2russ8xq24/</comments>
      <guid isPermaLink="false">note13aea3k89fvwynd3d453m7hp20dytlqzj37gv70pnay677uvp2russ8xq24</guid>
      <category>drupal</category>
      
      <noteId>note13aea3k89fvwynd3d453m7hp20dytlqzj37gv70pnay677uvp2russ8xq24</noteId>
      <npub>npub1qe3e5wrvnsgpggtkytxteaqfprz0rgxr8c3l34kk3a9t7e2l3acslezefe</npub>
      <dc:creator><![CDATA[Sebastix]]></dc:creator>
      <content:encoded><![CDATA[<p>Work in progress <a href='/tag/drupal/'>#Drupal</a> <a href='/tag/posse/'>#POSSE</a> <a href='/tag/nostrphp/'>#NostrPHP</a><br><br>naddr1qvzqqqr4gupzq2fpv7zl0vjp5m4mkr6c70hcs265fkh68asvefnx42z9cy4xx6nsqy88wumn8ghj7mn0wvhxcmmv9uq3jamnwvaz7tmwdaehgu3wwdjkyctnw35hstnyv4mz7qq0wajk26edxg6z6atsv3shgetngnffm4</p>
]]></content:encoded>
      <itunes:author><![CDATA[Sebastix]]></itunes:author>
      <itunes:summary><![CDATA[<p>Work in progress <a href='/tag/drupal/'>#Drupal</a> <a href='/tag/posse/'>#POSSE</a> <a href='/tag/nostrphp/'>#NostrPHP</a><br><br>naddr1qvzqqqr4gupzq2fpv7zl0vjp5m4mkr6c70hcs265fkh68asvefnx42z9cy4xx6nsqy88wumn8ghj7mn0wvhxcmmv9uq3jamnwvaz7tmwdaehgu3wwdjkyctnw35hstnyv4mz7qq0wajk26edxg6z6atsv3shgetngnffm4</p>
]]></itunes:summary>
      
      </item>
      
      <item>
      <title><![CDATA[My view on Drupal’s new…]]></title>
      <description><![CDATA[My view on Drupal’s new Starshot initiative & POSSE 👀 



I would like to propose some features which serve the purpose of Drupal of being an open web champion.

#Nostr #Fediverse #BlueSky #POSSE #FreedomTech #Drupal…]]></description>
             <itunes:subtitle><![CDATA[My view on Drupal’s new Starshot initiative & POSSE 👀 



I would like to propose some features which serve the purpose of Drupal of being an open web champion.

#Nostr #Fediverse #BlueSky #POSSE #FreedomTech #Drupal…]]></itunes:subtitle>
      <pubDate>Wed, 05 Jun 2024 11:52:06 GMT</pubDate>
      <link>https://sebastix.npub.pro/post/note1s2hm7v7dw0n0qzwwvej5k5p23dfgtxnue9mrykcm8a4dtgn9yhlqkvjzxw/</link>
      <comments>https://sebastix.npub.pro/post/note1s2hm7v7dw0n0qzwwvej5k5p23dfgtxnue9mrykcm8a4dtgn9yhlqkvjzxw/</comments>
      <guid isPermaLink="false">note1s2hm7v7dw0n0qzwwvej5k5p23dfgtxnue9mrykcm8a4dtgn9yhlqkvjzxw</guid>
      <category>nostr</category>
      
      <noteId>note1s2hm7v7dw0n0qzwwvej5k5p23dfgtxnue9mrykcm8a4dtgn9yhlqkvjzxw</noteId>
      <npub>npub1qe3e5wrvnsgpggtkytxteaqfprz0rgxr8c3l34kk3a9t7e2l3acslezefe</npub>
      <dc:creator><![CDATA[Sebastix]]></dc:creator>
      <content:encoded><![CDATA[<p>My view on Drupal’s new Starshot initiative &amp; POSSE 👀 <br><br><np-embed url="https://sebastix.nl/blog/drupal-starshot-initiative-posse/"><a href="https://sebastix.nl/blog/drupal-starshot-initiative-posse/">https://sebastix.nl/blog/drupal-starshot-initiative-posse/</a></np-embed><br><br>I would like to propose some features which serve the purpose of Drupal of being an open web champion.<br><br><a href='/tag/nostr/'>#Nostr</a> <a href='/tag/fediverse/'>#Fediverse</a> <a href='/tag/bluesky/'>#BlueSky</a> <a href='/tag/posse/'>#POSSE</a> <a href='/tag/freedomtech/'>#FreedomTech</a> <a href='/tag/drupal/'>#Drupal</a> </p>
]]></content:encoded>
      <itunes:author><![CDATA[Sebastix]]></itunes:author>
      <itunes:summary><![CDATA[<p>My view on Drupal’s new Starshot initiative &amp; POSSE 👀 <br><br><np-embed url="https://sebastix.nl/blog/drupal-starshot-initiative-posse/"><a href="https://sebastix.nl/blog/drupal-starshot-initiative-posse/">https://sebastix.nl/blog/drupal-starshot-initiative-posse/</a></np-embed><br><br>I would like to propose some features which serve the purpose of Drupal of being an open web champion.<br><br><a href='/tag/nostr/'>#Nostr</a> <a href='/tag/fediverse/'>#Fediverse</a> <a href='/tag/bluesky/'>#BlueSky</a> <a href='/tag/posse/'>#POSSE</a> <a href='/tag/freedomtech/'>#FreedomTech</a> <a href='/tag/drupal/'>#Drupal</a> </p>
]]></itunes:summary>
      
      </item>
      
      <item>
      <title><![CDATA[Nostr integration for CCHS.social (Drupal powered website)]]></title>
      <description><![CDATA[]]></description>
             <itunes:subtitle><![CDATA[]]></itunes:subtitle>
      <pubDate>Thu, 21 Dec 2023 13:38:49 GMT</pubDate>
      <link>https://sebastix.npub.pro/post/y9nowxryohcs5udqwzy4g/</link>
      <comments>https://sebastix.npub.pro/post/y9nowxryohcs5udqwzy4g/</comments>
      <guid isPermaLink="false">naddr1qq24jwtwdam4sujedayxxue4w4z8za66ty6ywq3qqe3e5wrvnsgpggtkytxteaqfprz0rgxr8c3l34kk3a9t7e2l3acsxpqqqp65wwxjxnq</guid>
      <category>drupal</category>
      
        <media:content url="https://sebastix.nl/blog/video/nostr-cchs-drupal-cms.mp4" medium="video"/>
        <enclosure 
          url="https://sebastix.nl/blog/video/nostr-cchs-drupal-cms.mp4" length="0" 
          type="video/mp4" 
        />
      <noteId>naddr1qq24jwtwdam4sujedayxxue4w4z8za66ty6ywq3qqe3e5wrvnsgpggtkytxteaqfprz0rgxr8c3l34kk3a9t7e2l3acsxpqqqp65wwxjxnq</noteId>
      <npub>npub1qe3e5wrvnsgpggtkytxteaqfprz0rgxr8c3l34kk3a9t7e2l3acslezefe</npub>
      <dc:creator><![CDATA[Sebastix]]></dc:creator>
      <content:encoded><![CDATA[<p>In this blog I will explain how I'm using two Drupal contrib modules to integrate some Nostr features. 1) Setup an internet identifier for a Nostr account and 2) publish a text note.</p>
<p>View this short video I recorded to show what I'm explaining in this blog.</p>
<video controls="">
    <source src="https://sebastix.nl/blog/video/nostr-cchs-drupal-cms.mp4" type="video/mp4">
</video>

<p><a href="https://sebastix.nl/blog/video/nostr-cchs-drupal-cms.mp4">Open video</a></p>
<h2>What is cchs.social?</h2>
<p>Inspired by Hacker News style websites I started to build a link aggregation website with Instagram profiles about Honda cars and owners. People started to create profiles for their cars and this reflects the period where everyone was creating introduction topics on petrolhead forums before everyone moved to the big social media platforms. The long term goal is to create an online community platform for Honda petrolheads similar to forums in the past. To build a digital place where you can share, learn, discuss and consume the best Honda content from the real world. </p>
<h2>Nostr integration</h2>
<p>Download and install Nostr internet identifier NIP-05 module:</p>
<pre><code>composer require drupal/nostr_id_nip05
drush en nostr_id_nip05
</code></pre>
<p>Go to <code>/admin/config/system/nostr-id-nip05</code> and follow the instructions how to configure your identification.</p>
<p><img src="https://yakihonne.s3.ap-east-1.amazonaws.com/06639a386c9c1014217622ccbcf40908c4f1a0c33e23f8d6d68f4abf655f8f71/files/1703165846402-YAKIHONNES3.png" alt="image"></p>
<p>If you're stuck on a CORS error, make sure to enforce the following CORS policy on your webserver for the <code>.well-known/nostr.json</code> file. Here is an example how I've done this in Nginx:</p>
<pre><code>server {
    server_name cchs.social
    location /.well-known {        
        if ($request_method = 'GET') {
            add_header 'Access-Control-Allow-Origin' '*';
        }
    }
}
</code></pre>
<p>With an Apache webserver, you can add this snippet to the <code>.htaccess</code> file:</p>
<pre><code>&lt;FilesMatch "^(\.(?!well-known).*"&gt;
    Header set Access-Control-Allow-Origin "*"
&lt;/FilesMatch&gt;
</code></pre>
<p>Download and install the Nostr simple publish module:</p>
<pre><code>composer require drupal/nostr_simple_publish
drush en nostr_simple_publish
</code></pre>
<p>Next step to add a plain text field to a content type:<br><img src="https://yakihonne.s3.ap-east-1.amazonaws.com/06639a386c9c1014217622ccbcf40908c4f1a0c33e23f8d6d68f4abf655f8f71/files/1703165731165-YAKIHONNES3.png" alt="image"></p>
<p>In my case, the machine name of the field is <code>field_nostr_note</code>. </p>
<p>Let's configure this field, your Nostr keys and relays within Drupal now. Open your <code>settings.local.php</code> file and add the following lines and modify these with your settings:</p>
<pre><code>// I always store these files in the private directory of Drupal outside the webroot directoty
$settings['nostr_public_key_file'] = './../private/nostr/to-your_public-key-file';
$settings['nostr_private_key_file'] = './../private/nostr/to-your-private-key-file';
// This is my personal relay, my advice is to use a public one instead like wss://relay.damus.io:
$settings['nostr_relay'] = 'wss://nostr.sebastix.dev';
// The machine new of the added field to our content entity:
$settings['nostr_content_fields'] = ['field_nostr_note'];
</code></pre>
<p>The public key file contains the npub string of your Nostr account.<br>The private key file contains the nsec string of your Nostr account. </p>
<p>With this configuration, I'm able to publish short text notes on behalf of the <a href="https://njump.me/npub183zj8uvwelmp0xe362xaqxchkytwpv4lthtxrexf0uu72p5wg3dq0zd26v">@cchs.social</a> Nostr account from the CMS: </p>
<p><img src="https://yakihonne.s3.ap-east-1.amazonaws.com/06639a386c9c1014217622ccbcf40908c4f1a0c33e23f8d6d68f4abf655f8f71/files/1703165754775-YAKIHONNES3.png" alt="image"></p>
<p>When publishing a note succeeded, you will see the event id under the Nostr tab when you open the edit content page again:</p>
<p><img src="https://yakihonne.s3.ap-east-1.amazonaws.com/06639a386c9c1014217622ccbcf40908c4f1a0c33e23f8d6d68f4abf655f8f71/files/1703165766635-YAKIHONNES3.png" alt="image"></p>
<p>and the note showed up on a client (Coracle in this screenshot):</p>
<p><img src="https://yakihonne.s3.ap-east-1.amazonaws.com/06639a386c9c1014217622ccbcf40908c4f1a0c33e23f8d6d68f4abf655f8f71/files/1703165776438-YAKIHONNES3.png" alt="image"> </p>
<h2>What's next?</h2>
<p>Build a solid onboarding process where you can register / login with your Nostr account on the website. This use-case is part of the Nostr empowered PHP/Drupal initiative which I'm working out.</p>
<p><strong>Resources</strong></p>
<ul>
<li><np-embed url="https://www.drupal.org/project/nostr_id_nip05"><a href="https://www.drupal.org/project/nostr_id_nip05">https://www.drupal.org/project/nostr_id_nip05</a></np-embed></li>
<li><np-embed url="https://www.drupal.org/project/nostr_simple_publish"><a href="https://www.drupal.org/project/nostr_simple_publish">https://www.drupal.org/project/nostr_simple_publish</a></np-embed></li>
</ul>
<p>Original blogpost: <np-embed url="https://sebastix.nl/blog/nostr-integration-for-cchs-social-drupal-cms/"><a href="https://sebastix.nl/blog/nostr-integration-for-cchs-social-drupal-cms/">https://sebastix.nl/blog/nostr-integration-for-cchs-social-drupal-cms/</a></np-embed></p>
]]></content:encoded>
      <itunes:author><![CDATA[Sebastix]]></itunes:author>
      <itunes:summary><![CDATA[<p>In this blog I will explain how I'm using two Drupal contrib modules to integrate some Nostr features. 1) Setup an internet identifier for a Nostr account and 2) publish a text note.</p>
<p>View this short video I recorded to show what I'm explaining in this blog.</p>
<video controls="">
    <source src="https://sebastix.nl/blog/video/nostr-cchs-drupal-cms.mp4" type="video/mp4">
</video>

<p><a href="https://sebastix.nl/blog/video/nostr-cchs-drupal-cms.mp4">Open video</a></p>
<h2>What is cchs.social?</h2>
<p>Inspired by Hacker News style websites I started to build a link aggregation website with Instagram profiles about Honda cars and owners. People started to create profiles for their cars and this reflects the period where everyone was creating introduction topics on petrolhead forums before everyone moved to the big social media platforms. The long term goal is to create an online community platform for Honda petrolheads similar to forums in the past. To build a digital place where you can share, learn, discuss and consume the best Honda content from the real world. </p>
<h2>Nostr integration</h2>
<p>Download and install Nostr internet identifier NIP-05 module:</p>
<pre><code>composer require drupal/nostr_id_nip05
drush en nostr_id_nip05
</code></pre>
<p>Go to <code>/admin/config/system/nostr-id-nip05</code> and follow the instructions how to configure your identification.</p>
<p><img src="https://yakihonne.s3.ap-east-1.amazonaws.com/06639a386c9c1014217622ccbcf40908c4f1a0c33e23f8d6d68f4abf655f8f71/files/1703165846402-YAKIHONNES3.png" alt="image"></p>
<p>If you're stuck on a CORS error, make sure to enforce the following CORS policy on your webserver for the <code>.well-known/nostr.json</code> file. Here is an example how I've done this in Nginx:</p>
<pre><code>server {
    server_name cchs.social
    location /.well-known {        
        if ($request_method = 'GET') {
            add_header 'Access-Control-Allow-Origin' '*';
        }
    }
}
</code></pre>
<p>With an Apache webserver, you can add this snippet to the <code>.htaccess</code> file:</p>
<pre><code>&lt;FilesMatch "^(\.(?!well-known).*"&gt;
    Header set Access-Control-Allow-Origin "*"
&lt;/FilesMatch&gt;
</code></pre>
<p>Download and install the Nostr simple publish module:</p>
<pre><code>composer require drupal/nostr_simple_publish
drush en nostr_simple_publish
</code></pre>
<p>Next step to add a plain text field to a content type:<br><img src="https://yakihonne.s3.ap-east-1.amazonaws.com/06639a386c9c1014217622ccbcf40908c4f1a0c33e23f8d6d68f4abf655f8f71/files/1703165731165-YAKIHONNES3.png" alt="image"></p>
<p>In my case, the machine name of the field is <code>field_nostr_note</code>. </p>
<p>Let's configure this field, your Nostr keys and relays within Drupal now. Open your <code>settings.local.php</code> file and add the following lines and modify these with your settings:</p>
<pre><code>// I always store these files in the private directory of Drupal outside the webroot directoty
$settings['nostr_public_key_file'] = './../private/nostr/to-your_public-key-file';
$settings['nostr_private_key_file'] = './../private/nostr/to-your-private-key-file';
// This is my personal relay, my advice is to use a public one instead like wss://relay.damus.io:
$settings['nostr_relay'] = 'wss://nostr.sebastix.dev';
// The machine new of the added field to our content entity:
$settings['nostr_content_fields'] = ['field_nostr_note'];
</code></pre>
<p>The public key file contains the npub string of your Nostr account.<br>The private key file contains the nsec string of your Nostr account. </p>
<p>With this configuration, I'm able to publish short text notes on behalf of the <a href="https://njump.me/npub183zj8uvwelmp0xe362xaqxchkytwpv4lthtxrexf0uu72p5wg3dq0zd26v">@cchs.social</a> Nostr account from the CMS: </p>
<p><img src="https://yakihonne.s3.ap-east-1.amazonaws.com/06639a386c9c1014217622ccbcf40908c4f1a0c33e23f8d6d68f4abf655f8f71/files/1703165754775-YAKIHONNES3.png" alt="image"></p>
<p>When publishing a note succeeded, you will see the event id under the Nostr tab when you open the edit content page again:</p>
<p><img src="https://yakihonne.s3.ap-east-1.amazonaws.com/06639a386c9c1014217622ccbcf40908c4f1a0c33e23f8d6d68f4abf655f8f71/files/1703165766635-YAKIHONNES3.png" alt="image"></p>
<p>and the note showed up on a client (Coracle in this screenshot):</p>
<p><img src="https://yakihonne.s3.ap-east-1.amazonaws.com/06639a386c9c1014217622ccbcf40908c4f1a0c33e23f8d6d68f4abf655f8f71/files/1703165776438-YAKIHONNES3.png" alt="image"> </p>
<h2>What's next?</h2>
<p>Build a solid onboarding process where you can register / login with your Nostr account on the website. This use-case is part of the Nostr empowered PHP/Drupal initiative which I'm working out.</p>
<p><strong>Resources</strong></p>
<ul>
<li><np-embed url="https://www.drupal.org/project/nostr_id_nip05"><a href="https://www.drupal.org/project/nostr_id_nip05">https://www.drupal.org/project/nostr_id_nip05</a></np-embed></li>
<li><np-embed url="https://www.drupal.org/project/nostr_simple_publish"><a href="https://www.drupal.org/project/nostr_simple_publish">https://www.drupal.org/project/nostr_simple_publish</a></np-embed></li>
</ul>
<p>Original blogpost: <np-embed url="https://sebastix.nl/blog/nostr-integration-for-cchs-social-drupal-cms/"><a href="https://sebastix.nl/blog/nostr-integration-for-cchs-social-drupal-cms/">https://sebastix.nl/blog/nostr-integration-for-cchs-social-drupal-cms/</a></np-embed></p>
]]></itunes:summary>
      
      </item>
      
      </channel>
      </rss>
    