<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Services on wporter.org</title>
    <link>https://wporter.org/categories/services/</link>
    <description>Recent content in Services on wporter.org</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    <lastBuildDate>Mon, 23 Feb 2026 20:35:00 +0000</lastBuildDate>
    <atom:link href="https://wporter.org/categories/services/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Regenerating HTTP certs in an Elasticsearch cluster</title>
      <link>https://wporter.org/regenerating-http-certs-in-an-elasticsearch-cluster/</link>
      <pubDate>Mon, 23 Feb 2026 20:35:00 +0000</pubDate>
      <guid>https://wporter.org/regenerating-http-certs-in-an-elasticsearch-cluster/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.elastic.co/docs/deploy-manage/security/set-up-basic-security&#34;&gt;Docs&lt;/a&gt;. This requires the &amp;ldquo;minimum security setup&amp;rdquo; to be complete (Elasticsearch security must be running for SSL to be in use). The automatic initialization will do this for you.&lt;/p&gt;&#xA;&lt;p&gt;By default, initializing an Elasticsearch cluster will automatically generate some certificates for the transport and HTTP components of the Elastic application:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[root@es9-1 elasticsearch]# ls -l certs&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;total 24&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-rw----. 1 root elasticsearch  1939 Dec 12 16:49 http_ca.crt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-rw----. 1 root elasticsearch 10077 Dec 12 16:49 http.p12&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-rw----. 1 root elasticsearch  5838 Dec 12 16:49 transport.p12&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[root@es9-1 elasticsearch]# pwd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/etc/elasticsearch&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After changing a node&amp;rsquo;s IP (use DNS, gosh darn it!) or hostname, you may need to regenerate its HTTP certificates, or things will permanently cease to function (Elastic uses mTLS for authentication for the cluster&amp;rsquo;s transport layer and HTTP REST API - no REST API, Elastic is very unhappy).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Performing a partial or full restore of an Elasticsearch cluster from a snapshot</title>
      <link>https://wporter.org/performing-a-partial-or-full-restore-of-an-elasticsearch-cluster-from-a-snapshot/</link>
      <pubDate>Mon, 23 Feb 2026 20:30:00 +0000</pubDate>
      <guid>https://wporter.org/performing-a-partial-or-full-restore-of-an-elasticsearch-cluster-from-a-snapshot/</guid>
      <description>&lt;p&gt;See the docs at &lt;a href=&#34;https://www.elastic.co/docs/deploy-manage/tools/snapshot-and-restore&#34;&gt;elastic.co/docs&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m starting with a three-node cluster (see &lt;a href=&#34;https://wporter.org/building-out-a-test-3-node-elasticsearch-9-cluster-on-almalinux-9&#34;&gt;Deploying a three-node HA Elasticsearch 9 cluster on AlmaLinux 9&lt;/a&gt;). It consists of:&lt;/p&gt;&#xA;&lt;p&gt;3x KVM VM (4 vCPU, 16 GiB RAM, 128 GB of SSD)&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;es9-1&lt;/li&gt;&#xA;&lt;li&gt;es9-2&lt;/li&gt;&#xA;&lt;li&gt;es9-3&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;DNS is working.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve loaded the Flights &lt;a href=&#34;https://www.elastic.co/docs/manage-data/ingest/sample-data&#34;&gt;sample dataset&lt;/a&gt; to the cluster with Kibana just to have something to look at.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m adding:&lt;/p&gt;&#xA;&lt;p&gt;1x KVM VM (2 vCPU, 4 GiB RAM, 128 GB of SSD), for a snapshot repository (NFS server):&lt;/p&gt;</description>
    </item>
    <item>
      <title>Building out a test 3-node Elasticsearch 9 cluster on AlmaLinux 9</title>
      <link>https://wporter.org/building-out-a-test-3-node-elasticsearch-9-cluster-on-almalinux-9/</link>
      <pubDate>Mon, 23 Feb 2026 20:00:00 +0000</pubDate>
      <guid>https://wporter.org/building-out-a-test-3-node-elasticsearch-9-cluster-on-almalinux-9/</guid>
      <description>&lt;h2 id=&#34;intro&#34;&gt;Intro&lt;/h2&gt;&#xA;&lt;p&gt;We&amp;rsquo;ll be configuring a (test) three-node Elasticsearch cluster, then installing and joining Kibana, on Alma 9 hosts.&lt;/p&gt;&#xA;&lt;p&gt;Hardware:&lt;/p&gt;&#xA;&lt;p&gt;3x KVM VM (4 vCPU, 16 GiB RAM, 128 GB of SSD):&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;es9-1&lt;/li&gt;&#xA;&lt;li&gt;es9-2&lt;/li&gt;&#xA;&lt;li&gt;es9-3&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;installing-elasticsearch&#34;&gt;Installing Elasticsearch&lt;/h2&gt;&#xA;&lt;p&gt;Read the docs: &lt;a href=&#34;https://www.elastic.co/docs/deploy-manage/deploy/self-managed/installing-elasticsearch&#34;&gt;installing Elasticsearch&lt;/a&gt;, &lt;a href=&#34;https://www.elastic.co/docs/deploy-manage/deploy/self-managed/install-elasticsearch-with-rpm&#34;&gt;installing Elasticsearch with RPM&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Add the Elastic signing key to your system:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Add the Elasticsearch 9.x repository to the system:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo tee /etc/yum.repos.d/elasticsearch.repo &amp;gt; /dev/null &lt;span class=&#34;s&#34;&gt;&amp;lt;&amp;lt; &amp;#39;EOT&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;[elasticsearch]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;name=Elasticsearch repository for 9.x packages&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;baseurl=https://artifacts.elastic.co/packages/9.x/yum&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;gpgcheck=1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;enabled=0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;type=rpm-md&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;EOT&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Note that the repo&amp;rsquo;s &lt;code&gt;enabled&lt;/code&gt; property is set to &lt;code&gt;0&lt;/code&gt; so you don&amp;rsquo;t inadvertantly update Elastic.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setting up Cockpit with Certbot and a private CA with an ACME endpoint</title>
      <link>https://wporter.org/setting-up-cockpit-with-certbot-and-a-private-ca-with-an-acme-endpoint/</link>
      <pubDate>Wed, 09 Jul 2025 21:35:00 +0000</pubDate>
      <guid>https://wporter.org/setting-up-cockpit-with-certbot-and-a-private-ca-with-an-acme-endpoint/</guid>
      <description>&lt;p&gt;This is an excerpt from &lt;a href=&#34;https://wporter.org/building-out-a-signing-certificate-authority-that-supports-acme-with-step-ca-and-an-openssl-root/&#34;&gt;my &lt;code&gt;step-ca&lt;/code&gt; post&lt;/a&gt; that I felt is useful enough to have its own post.&lt;/p&gt;&#xA;&lt;p&gt;I have a server running Cockpit that I&amp;rsquo;d like to use a valid SSL certificate from my CA. I&amp;rsquo;d like it to renew its own certificate. Let&amp;rsquo;s do that.&lt;/p&gt;&#xA;&lt;p&gt;First, be sure to install the root certificate on the system. Since this is a machine running AlmaLinux 10, that looks something like this:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing Wiki.js (PostgreSQL, NGINX) on AlmaLinux 10</title>
      <link>https://wporter.org/installing-wiki.js-postgresql-nginx-on-almalinux-10/</link>
      <pubDate>Mon, 30 Jun 2025 19:35:00 +0000</pubDate>
      <guid>https://wporter.org/installing-wiki.js-postgresql-nginx-on-almalinux-10/</guid>
      <description>&lt;p&gt;This guide demonstrates installing Wiki.js, the NGINX reverse proxy, Certbot (an ACME client that we&amp;rsquo;ll use for automated SSL certificate renewal), a backing PostgreSQL database, and a supporting Elasticsearch container on an AlmaLinux 10 server.&lt;/p&gt;&#xA;&lt;p&gt;Wiki.js is a Node.js application that relies on a database - we&amp;rsquo;ll be using PostgreSQL.&lt;/p&gt;&#xA;&lt;p&gt;We&amp;rsquo;ll put a NGINX reverse proxy in front of the Wiki.js web application to handle SSL, and configure Wiki.js to listen on only localhost (127.0.0.1:3000) so that only NGINX is exposed to the outside world.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
