<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Linux on Jose Castrillo</title>
    <link>https://jose.castrillo.eu/tags/linux/</link>
    <description>Recent content in Linux on Jose Castrillo</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Fri, 07 Nov 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://jose.castrillo.eu/tags/linux/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Linux on Business</title>
      <link>https://jose.castrillo.eu/post/linux-better-solution/</link>
      <pubDate>Fri, 07 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/linux-better-solution/</guid>
      <description>&lt;p&gt;Why Linux 🐧? the question isn&amp;rsquo;t why Linux ? the real question is why not ? did you try it?&lt;/p&gt;
&lt;p&gt;Linux is widely regarded as the best option for development, DevOps, hybrid cloud solutions, and even as a desktop for home and office environments due to its open-source nature, robust ecosystem, scalability, security, and cost-effectiveness. Its flexibility allows seamless integration across diverse platforms, from small IoT devices to large-scale cloud infrastructures, making it the backbone of modern technology stacks.&lt;/p&gt;</description>
    </item>
    <item>
      <title>🎨 Customize Your Terminal Shell with Oh My Bash</title>
      <link>https://jose.castrillo.eu/post/ohmybash-git/</link>
      <pubDate>Tue, 14 Jan 2025 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/ohmybash-git/</guid>
      <description>Learn how to dynamically switch themes in Oh My Bash based on your environment and directory.</description>
    </item>
    <item>
      <title>👨‍💻 Tunning your Devbox shell</title>
      <link>https://jose.castrillo.eu/post/bash-terminal-devbox/</link>
      <pubDate>Fri, 26 Jul 2024 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/bash-terminal-devbox/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/sw-sandbox.png&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;h1 id=&#34;using-oh-my-bash-with-jetify-devbox-a-step-by-step-guide&#34;&gt;Using Oh-My-Bash with Jetify Devbox: A Step-by-Step Guide&lt;/h1&gt;
&lt;p&gt;If you&amp;rsquo;re a developer working with Jetify Devbox, you might have noticed that its shell environment doesn&amp;rsquo;t always play nicely with Oh-My-Bash. By following these steps, you can customize and personalize your themes and PS1 prompt to create a more enjoyable and productive shell experience.&lt;/p&gt;
&lt;h2 id=&#34;step-1-install-oh-my-bash&#34;&gt;Step 1: Install Oh-My-Bash&lt;/h2&gt;
&lt;p&gt;First, you need to install Oh-My-Bash. You can do this by running the following command in your terminal:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Automation a Nextcloud as a Podman Container</title>
      <link>https://jose.castrillo.eu/post/nextcloud-buildah/</link>
      <pubDate>Sun, 30 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/nextcloud-buildah/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/nextcloud-buildah.png&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been thinking to upgrade my Nextcloud service also switching to another alternative rather than docker, hence I used podman and buildah in my solution.&lt;/p&gt;
&lt;p&gt;From the rockylinux.org I found a nice &lt;a href=&#34;https://docs.rockylinux.org/guides/containers/podman-nextcloud/&#34;&gt;post&lt;/a&gt; where it describes how to build and provisioning by using buildah and podman, it works pretty good and I added a tool in order to run it faster, called &lt;a href=&#34;https://taskfile.dev/installation/&#34;&gt;taskfile&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Requirements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Podman&lt;/li&gt;
&lt;li&gt;Buildah&lt;/li&gt;
&lt;li&gt;Taskfile&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;Install &lt;a href=&#34;https://taskfile.dev/installation/&#34;&gt;taskfile&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Clone my &lt;a href=&#34;https://gitlab.com/castrillo/jupiter&#34;&gt;project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;From the project you can see the task defined:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;3&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;
&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;nt&#34;&gt;tasks&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;up-db&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;db/mariadb&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;preconditions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;test -f db-init.sh&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;cmds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;bash db-init.sh&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;
&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;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;create-app&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;app&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;preconditions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;test -f run.sh&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;cmds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;mkdir nc nc/nextcloud nc/apps nc/config nc/data&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;task&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;up-db&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;bash run.sh&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;
&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;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;build_base&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;db/base&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;preconditions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;test -f build.sh&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;cmds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;bash build.sh&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;
&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;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;build_tools&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;db/db-tools&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;preconditions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;test -f build.sh&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;cmds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;bash build.sh&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;
&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;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;build_maria&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;db/mariadb&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;preconditions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;test -f build.sh&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;cmds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;bash build.sh&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;
&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;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;build_db&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;cmds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;task&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;build_base&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;task&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;build_tools&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;task&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;build_maria&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;
&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;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;up-app&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;cmds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;podman container start nextcloud&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Main task to build and run nextcloud:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Goland CORS, logs and healtcheck</title>
      <link>https://jose.castrillo.eu/post/go-cors-chi/</link>
      <pubDate>Sat, 01 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/go-cors-chi/</guid>
      <description>&lt;p&gt;In this guide, we&amp;rsquo;ll walk through how to create CORS (Cross-Origin Resource Sharing) and a health check endpoint in a Golang application using the Chi router.&lt;/p&gt;
&lt;h3 id=&#34;setting-up-chi-and-cors-middleware&#34;&gt;Setting Up Chi and CORS Middleware&lt;/h3&gt;
&lt;p&gt;We&amp;rsquo;ll use the &lt;code&gt;go-chi/chi&lt;/code&gt; and &lt;code&gt;go-chi/cors&lt;/code&gt; packages to handle routing and CORS in our application.&lt;/p&gt;
&lt;h4 id=&#34;step-1-import-required-packages&#34;&gt;Step 1: Import Required Packages&lt;/h4&gt;
&lt;p&gt;First, make sure to import the necessary packages:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;fmt&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;net/http&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;log&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;
&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;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;github.com/go-chi/chi&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;github.com/go-chi/chi/middleware&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;github.com/go-chi/cors&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;AdminMiddleware&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;github.com/project/api/middleware&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;github.com/project/api/services&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;gorm.io/gorm&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;step-2-define-the-cors-alloworiginfunc&#34;&gt;Step 2: Define the CORS AllowOriginFunc&lt;/h4&gt;
&lt;p&gt;We&amp;rsquo;ll define a function to specify the allowed origins for CORS. This function also logs disallowed origins:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python &amp; Virtual Environments</title>
      <link>https://jose.castrillo.eu/post/python3-environment/</link>
      <pubDate>Wed, 15 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/python3-environment/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/python-env.jpg&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;p&gt;When starting a Python 3 project in Linux, it&amp;rsquo;s essential to follow best practices to ensure a clean and isolated development environment. One of the recommended approaches is to utilize virtual environments. Virtual environments allow you to create an isolated environment for each project, preventing conflicts between different packages and dependencies. In this guide, we&amp;rsquo;ll walk you through the steps to set up and activate a virtual environment for your Python 3 project.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Java Native Memory Tracking in GNU/linux</title>
      <link>https://jose.castrillo.eu/post/java-mem-linux/</link>
      <pubDate>Tue, 10 Jan 2023 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/java-mem-linux/</guid>
      <description>&lt;p&gt;Java provides a &lt;em&gt;Native Memory Tracking&lt;/em&gt; feature that enables you to monitor the memory usage of your Java application. This feature is particularly useful for identifying memory leaks and optimizing the memory usage of your application. In this post, we will discuss how to activate Native Memory Tracking for a Java jar application in Linux.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Check Java Version&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;First, you need to check the version of Java installed on your system using the following command:&lt;/p&gt;</description>
    </item>
    <item>
      <title>setup auto mount smb v1.0</title>
      <link>https://jose.castrillo.eu/post/smb-fedora-v1/</link>
      <pubDate>Fri, 27 May 2022 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/smb-fedora-v1/</guid>
      <description>&lt;p&gt;In any case you still having a device that works with smb v1.0 you can use the following way in order to mount it on your Fedora host:&lt;/p&gt;
&lt;p&gt;Path: /etc/NetworkManager/dispatcher.d/smb-setup.sh&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#!/bin/sh -e
# Script to dispatch NetworkManager events
# more over: https://stackoverflow.com/questions/16848021/linux-networkmanagers-etc-networkmanager-dispatcher-d-test-script-does-not
# Runs ifupdown scripts when NetworkManager fiddles with interfaces.
# See NetworkManager(8) for further documentation of the dispatcher events.

INF=&amp;#34;$1&amp;#34; # your current interface name such as eth0, wlp4s0 and so on
STA=&amp;#34;$2&amp;#34; # status such as UP or DOWN

# Send message to /var/log/messages
logger -s &amp;#34;$0 called for interface named $INF with $STA ...&amp;#34;

if [ &amp;#34;$INF&amp;#34; == &amp;#34;eno1&amp;#34; ]
then
mount -t cifs -o vers=1.0,username=admin,password=Tr3x_1986,uid=1000,gid=1000,forceuid,forcegid //10.34.1.1/1fea-6abb /home/jose/homedisk
fi
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;more info:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ansible missing sudo</title>
      <link>https://jose.castrillo.eu/post/ansible-missing-sudo/</link>
      <pubDate>Sun, 03 Apr 2022 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/ansible-missing-sudo/</guid>
      <description>&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Ansible FAILED! =&amp;gt; {&amp;#34;msg&amp;#34;: &amp;#34;Missing sudo password&amp;#34;}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;I have a couple of ansible-playbook, from one of my endpoint device started to prompt &lt;em&gt;missing sudo password&lt;/em&gt; due there is needed a sudoers access, thus this is one of the solutions.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;login by ssh to the device, where ansible can&amp;rsquo;t login.&lt;/li&gt;
&lt;li&gt;go to /etc/sudoers.d/&lt;/li&gt;
&lt;li&gt;create a new entry eg: &amp;ldquo;023_user-nopass&amp;rdquo;&lt;/li&gt;
&lt;li&gt;add the following line &amp;ldquo;user ALL=(ALL) NOPASSWD: ALL&amp;rdquo; into the file &amp;ldquo;023_user-nopass&amp;rdquo;&lt;/li&gt;
&lt;li&gt;change the permission by using:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo chmod 440 023_user-nopass
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;NOTE: please change &lt;user&gt; value for your normal user access -not the root one-&lt;/p&gt;</description>
    </item>
    <item>
      <title>Install Hetzner-CLi on Fedora by Toolbox</title>
      <link>https://jose.castrillo.eu/post/hetzner-cli-toolbox/</link>
      <pubDate>Sun, 04 Jul 2021 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/hetzner-cli-toolbox/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/hetzner-blog.png&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;p&gt;On this new entry I will share a briefly installation step by step by using Toolbox at Fedora 34 to use the hcloud-cli. Due we do not have an official package on fedora &lt;a href=&#34;https://github.com/hetznercloud/cli&#34;&gt;git-repo&lt;/a&gt; yet, hence we can create this container.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pre-requirement:&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Visit Hetzner Cloud Console at &lt;a href=&#34;https://console.hetzner.cloud&#34;&gt;https://console.hetzner.cloud&lt;/a&gt;, select your project, and create a new API Token.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s start:&lt;/p&gt;
&lt;p&gt;1- Create a file named &lt;em&gt;Dockerfile.debian&lt;/em&gt; with the following contents(the following image is made to use a script to named and set a token_key):&lt;/p&gt;</description>
    </item>
    <item>
      <title>Redundant Array of Inexpensive Disks</title>
      <link>https://jose.castrillo.eu/post/raid-disk/</link>
      <pubDate>Sun, 06 Jun 2021 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/raid-disk/</guid>
      <description>&lt;h1 id=&#34;raid&#34;&gt;RAID&lt;/h1&gt;
&lt;p&gt;RAID is a technology that is used to increase the performance and/or reliability of data storage. The abbreviation stands for Redundant Array of Inexpensive Disks. A RAID system consists of two or more drives working in parallel. These disks can be hard discs, but there is a trend to also use the technology for SSD (solid state drives). There are different RAID levels, each optimized for a specific situation. These are not standardized by an industry group or standardization committee.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to install /e/OS in Gigaset GS290 from GNU/Linux</title>
      <link>https://jose.castrillo.eu/post/gigaset-e-fastboot/</link>
      <pubDate>Sun, 21 Mar 2021 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/gigaset-e-fastboot/</guid>
      <description>&lt;p&gt;I created this post as aim to collaborate with the project and help those how are bought a &lt;a href=&#34;https://doc.e.foundation/devices/GS290/&#34;&gt;Gigaset GS290&lt;/a&gt; to test this great /e/ OS degoogle fork, and have been failed by using &lt;a href=&#34;https://doc.e.foundation/easy-installer&#34;&gt;easy installer&lt;/a&gt;, but first I will let clearly that these steps are the steps I followed in order to set up the /e/ OS in my Gigaset.&lt;/p&gt;
&lt;p&gt;Requirement-system:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GNU/Linux OS (in my case Fedora).**&lt;/li&gt;
&lt;li&gt;ADB &amp;amp; Fastboot library &lt;strong&gt;latest&lt;/strong&gt;.**&lt;/li&gt;
&lt;li&gt;/e/OS build**&lt;/li&gt;
&lt;li&gt;boot.img**&lt;/li&gt;
&lt;li&gt;recovery.img**&lt;/li&gt;
&lt;li&gt;Basic knowledge in terminal &amp;amp; command line.&lt;/li&gt;
&lt;li&gt;Sudo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Requirement-smartphone:&lt;/p&gt;</description>
    </item>
    <item>
      <title>/prometheus/data/chunks_head/ troubleshoot</title>
      <link>https://jose.castrillo.eu/post/prometheus-troubleshooting/</link>
      <pubDate>Mon, 22 Feb 2021 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/prometheus-troubleshooting/</guid>
      <description>&lt;p&gt;I will share a little workaround in order to re-establish Prometheus service back in the game.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Origin of issue:&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&amp;rsquo;ve had an issue with my local network at home by the ISP provider, I had have shut down my RaspberryPi and other devices.&lt;/p&gt;
&lt;p&gt;Then when I could solved the issue and all my devices were up and running I checked up my services and I found that Prometheus got stuck by a &lt;em&gt;&amp;ldquo;mmap: invalid argument&amp;rdquo;&lt;/em&gt; message.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setup monitoring system [Grafana&#43;Prometheus] in RaspberryPi (Part1)</title>
      <link>https://jose.castrillo.eu/post/raspberrypi-monitoring-system/</link>
      <pubDate>Wed, 03 Feb 2021 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/raspberrypi-monitoring-system/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/grafa_prome_rasp.png&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;p&gt;On this post I will explain how I set up a Grafana + Prometheus into a RaspberryPi with &lt;a href=&#34;https://www.raspberrypi.org/downloads/raspbian/&#34;&gt;Raspbian&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here it&amp;rsquo;s a little design where explains how it is the implementation I did:&lt;/p&gt;
&lt;h2&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/design_monitoring.png&#34; alt=&#34;&#34;  /&gt;
&lt;/h2&gt;
&lt;p&gt;🔵 Server:
RaspberryPi 3B+&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Services to install(server side):
&lt;ol&gt;
&lt;li&gt;Grafana&lt;/li&gt;
&lt;li&gt;Prometheus (Metric collector and database)&lt;/li&gt;
&lt;li&gt;Node Exporter (collector worker)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;🟢 Clients:
Raspberrypi Zero
Fedora Workstation
Debian VPS&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Services to install(client side):
&lt;ol&gt;
&lt;li&gt;Node Exporter (collector worker).&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;🔵 Lets start from the &lt;strong&gt;server&lt;/strong&gt; side.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Format &amp; Mount an usb drive in GNU/Linux [terminal]</title>
      <link>https://jose.castrillo.eu/post/mount-usb-gnulinux/</link>
      <pubDate>Fri, 22 Jan 2021 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/mount-usb-gnulinux/</guid>
      <description>&lt;p&gt;Format and Mount usb drive in GNU/Linux&lt;/p&gt;
&lt;p&gt;Tools/commands:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;lsblk&lt;/li&gt;
&lt;li&gt;parted&lt;/li&gt;
&lt;li&gt;df&lt;/li&gt;
&lt;li&gt;fdisk&lt;/li&gt;
&lt;li&gt;mkfs&lt;/li&gt;
&lt;li&gt;wipefs&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;check if which blcok devices used by usb (sd) [df -h, lsblk] eg:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;a)&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ sudo fdisk -l
Disk /dev/sda: 7.2 GiB, 7736072192 bytes, 15109516 sectors
Disk model: DataTraveler 3.0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;b)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Monitoring with Cockpit</title>
      <link>https://jose.castrillo.eu/post/cockpit-monitoring/</link>
      <pubDate>Mon, 11 Jan 2021 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/cockpit-monitoring/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/cockpit.png&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;p&gt;On this post we are going to talk about &lt;strong&gt;cockpit&lt;/strong&gt; how to monitoring and manage your GNU/Linux infrastructure. Based on the official description, &lt;a href=&#34;https://cockpit-project.org/&#34;&gt;Cockpit&lt;/a&gt; project is pretty easy to use, install and integrate, you can manage and add servers by ssh credentials to your dashboard, showing logs, monitoring containers(podman/docker), services running, disk usage, etc.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve using it around 1 year, the only thing I cannot see it&amp;rsquo;s an alert tool or event trigger, maybe for the next release; is developed by RH team and &lt;a href=&#34;https://github.com/cockpit-project/cockpit/blob/master/COPYING&#34;&gt;open source&lt;/a&gt;, it&amp;rsquo;s already integrated in some of the GNU/Linux distribution ( RH, debian, ubuntu, fedora, etc).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Nextcloud bot as Notification System</title>
      <link>https://jose.castrillo.eu/post/bot-nextcloud-api/</link>
      <pubDate>Fri, 09 Oct 2020 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/bot-nextcloud-api/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/donatello.png#center&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;p&gt;Following the last post, where I shared how to use Telegram&amp;rsquo;s bot; on this post I&amp;rsquo;m going to explain how implement it by Chat &lt;em&gt;Nextcloud API&lt;/em&gt;. This post is useful for those have a &lt;em&gt;Nexctcloud&lt;/em&gt; deployment running at home/cloud.&lt;/p&gt;
&lt;p&gt;Assuming you have already Nextcloud up and running, we can create the new user, that we are gonna use it as &amp;ldquo;BOT&amp;rdquo; we will need the chat room token and the &amp;ldquo;BOT&amp;rdquo; credentials.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Telegram Bot as Notification System</title>
      <link>https://jose.castrillo.eu/post/bot-telegram-linux/</link>
      <pubDate>Thu, 24 Sep 2020 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/bot-telegram-linux/</guid>
      <description>&lt;p&gt;From one older post &amp;ldquo;Create a job using crontab&amp;rdquo; I used into my script the service exim4/ssmtp as mail server using gmail, but as we&amp;rsquo;re trying to walk away of Google&amp;rsquo;s jaw, I switched my notification engine to Telegram by an API service(bot)&amp;hellip; almost it&amp;rsquo;s a step forward ! :)&lt;/p&gt;
&lt;p&gt;Requirement:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Bot (Telegram)&lt;/li&gt;
&lt;li&gt;Web Browser&lt;/li&gt;
&lt;li&gt;Terminal(script)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I will assume you have already set up your Bot on Telegram with &lt;a href=&#34;https://core.telegram.org/bots&#34;&gt;BotFather&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When you have already created your Bot you can check by the API through a web browser&lt;/p&gt;</description>
    </item>
    <item>
      <title>OpenVPN usando Raspberry Pi3 &#43; Noip</title>
      <link>https://jose.castrillo.eu/post/openvpn-raspberrypi/</link>
      <pubDate>Wed, 15 Jul 2020 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/openvpn-raspberrypi/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/openvpn-raspberry.png&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;p&gt;Requisitos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RaspberryPi &amp;ndash;&amp;gt; &lt;a href=&#34;https://www.raspberrypi.org/downloads/raspberry-pi-os/&#34;&gt;https://www.raspberrypi.org/downloads/raspberry-pi-os/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;OpenVPN &amp;ndash;&amp;gt; &lt;a href=&#34;https://pivpn.io/&#34;&gt;https://pivpn.io/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cuenta abierta &amp;ndash;&amp;gt; &lt;a href=&#34;https://www.noip.com/&#34;&gt;https://www.noip.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Una IP Estatica en tu Raspberry &amp;ndash;&amp;gt; Router manual&lt;/li&gt;
&lt;li&gt;Router con capacidad de tunel VPN &amp;mdash;&amp;gt; IPsec, PPTP, L2TP.&lt;/li&gt;
&lt;li&gt;Public IP &amp;mdash;&amp;gt; &lt;a href=&#34;https://www.whatismyip.net/&#34;&gt;https://www.whatismyip.net/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pasos:&lt;/p&gt;
&lt;h3 id=&#34;1-crear-dns-record-a-en-noip&#34;&gt;1. Crear DNS Record A en Noip&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Apunta tu &lt;a href=&#34;https://www.whatismyip.net/&#34;&gt;IP publica&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Abre tu sesion con tus credenciales en &lt;a href=&#34;https://www.noip.com/&#34;&gt;Noip&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Dentro del Dashboard ve al apartado &lt;strong&gt;&amp;ldquo;Dynamic DNS &amp;gt; Create Hostname&amp;rdquo;&lt;/strong&gt; rellena:
&lt;ul&gt;
&lt;li&gt;hostname, ejemplo: &lt;em&gt;test&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Domain, ejemplo: &lt;em&gt;ddns.net&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;IPv4 address: &lt;strong&gt;Tu IP publica&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Click en &lt;strong&gt;Crear&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/openvpn-noip.png&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setup Podman service in Silverblue by Systemd</title>
      <link>https://jose.castrillo.eu/post/podman-monitoring-systemd/</link>
      <pubDate>Tue, 07 Jul 2020 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/podman-monitoring-systemd/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/cockpit-fedora.png&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;p&gt;Into my Devops learning path 👨‍💻 I decided to deploy a monitoring centre into my workstation where I could be able to watch my containers, resources, logs, etc and continue improving my knowledge, in my case I&amp;rsquo;m using &lt;a href=&#34;https://silverblue.fedoraproject.org/&#34;&gt;Silverblue&lt;/a&gt; developed by Fedora so in here it&amp;rsquo;s a little bit different the setup; as monitoring tool I choose &lt;a href=&#34;https://cockpit-project.org&#34;&gt;Cockpit&lt;/a&gt; for its great integration and support.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Workstation: Silverblue 🖥️&lt;/li&gt;
&lt;li&gt;Container engine: Podman ⚙️&lt;/li&gt;
&lt;li&gt;Monitoring tool(app/service):Cockpit 📦&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I splinted out the instructions in 4 simple parts:&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to set your Domain name in Linux</title>
      <link>https://jose.castrillo.eu/post/domain-name-linux/</link>
      <pubDate>Sun, 31 May 2020 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/domain-name-linux/</guid>
      <description>&lt;p&gt;Resume to set a domain name in Linux&lt;/p&gt;
&lt;p&gt;concepts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;FQDN&lt;/strong&gt; (Fully Qualified Domain Name)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;eg:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;hostname&lt;/strong&gt; = server1 //
&lt;strong&gt;FQDN&lt;/strong&gt; = server1.example.com&lt;/p&gt;
&lt;h3 id=&#34;1-first-add-fqdn-to-your-hostname-in-etchosts-file&#34;&gt;1. First add FQDN to your hostname in /etc/hosts file.&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# cat /etc/hosts
10.120.68.23 server1.example.com server1
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;confirm the FQDN issue the following command:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# hostname -f
server1.example.com
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;21-configure-domain-name-red-hat-rhel-fedora-and-centos&#34;&gt;2.1. Configure domain name (Red Hat RHEL, Fedora and CentOS)&lt;/h3&gt;
&lt;p&gt;From these path add the parameters needs&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;vi /etc/sysconfig/network
DOMAINNAME=&amp;lt;domainname&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;vi /etc/sysctl.conf
kernel.domainname = &amp;lt;domainname&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;22-figure-domain-name--ubuntu-debian&#34;&gt;2.2. figure domain name ( Ubuntu, Debian)&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#vi /etc/hostname
server1
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then restart the service:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Add your app into the Gnome Desktop Menu</title>
      <link>https://jose.castrillo.eu/post/desktop-gnome-app/</link>
      <pubDate>Mon, 30 Mar 2020 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/desktop-gnome-app/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/cryptomator.png&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been looking for a encryptation app open source, to encrypt my files into Cloud with a touch of off-online control, and I found this nice app called &lt;a href=&#34;https://cryptomator.org/&#34;&gt;Cryptomator&lt;/a&gt;. I downloaded the extension &lt;a href=&#34;https://appimage.org/&#34;&gt;.Appimage&lt;/a&gt;, so the following instruction I will explain is how to set the .appimage into the app menu in Gnome.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Download the Cryptomator by the link above.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Set the permission below:&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#chmod a+x cryptomator-1.4.15-x86_64.AppImage
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The try to execute the file by a shell terminal or just double click on it ( to confirm it was downloaded fined)&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to create a docker-compose.service</title>
      <link>https://jose.castrillo.eu/post/service-systemd-docker/</link>
      <pubDate>Sun, 08 Sep 2019 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/service-systemd-docker/</guid>
      <description>&lt;p&gt;Here are the steps I made to set a service into my Fedora server to start/stop my Docker-compose (Wikijs)&lt;/p&gt;
&lt;p&gt;Why I decided to use a docker-compose into a Linux VM machine? &amp;mdash;&amp;gt; for make it more stable, faster,portable, isolated, etc.&lt;/p&gt;
&lt;p&gt;First I stared using Docker for Windows and it was a little bit unstable and not quite easy to handled, so when I switched to Docker compose into a Fedora VM and in that point it was a huge different(I do not recommend to use Docker in Windows); I use a Vmware hypervisor ( in the office we use it ).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Closing opened ports on Linux (Fedora 29)</title>
      <link>https://jose.castrillo.eu/post/ports-networking-linux/</link>
      <pubDate>Sun, 05 May 2019 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/ports-networking-linux/</guid>
      <description>&lt;p&gt;Using the &lt;strong&gt;Nmap&lt;/strong&gt; to list our opened port in our machine, how described the &lt;a href=&#34;https://nmap.org/&#34;&gt;official website&lt;/a&gt;: Nmap &amp;ldquo;..is an utility for network discovery and security auditing..&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Regarding &lt;strong&gt;CUPS&lt;/strong&gt; from the &lt;a href=&#34;https://www.cups.org/&#34;&gt;official website&lt;/a&gt;: &amp;ldquo;is an open source printing system developed by Apple Inc. for macOSÂ® and other UNIXÂ®-like operating systems. CUPS uses the Internet Printing Protocol (IPP) to support printing to local and network printers.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;By default we have the cups service running in the system&amp;rsquo;s startup we could check out issue the following commands:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setup Grafana in Raspbian (Raspberrypi)</title>
      <link>https://jose.castrillo.eu/post/raspberrypi-grafana-post/</link>
      <pubDate>Tue, 09 Apr 2019 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/raspberrypi-grafana-post/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/grafana.png&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;The below post is a simple explanation I did time ago, if you want further info and better explanation about how to setup a monitoring system into your Raspberripy please go to here.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.raspberrypi.org/downloads/raspbian/&#34;&gt;Raspbian&lt;/a&gt; version:9.8&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ uname -r
4.14.98-v7+
$ uname -m
armv7l
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Version installed on my RasPi: &lt;strong&gt;Grafana v6.0.2 (3f4c2e7)&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Download &lt;a href=&#34;https://grafana.com/grafana/download?platform=arm&#34;&gt;Grafana&lt;/a&gt; package for your correct Raspi ARM&lt;/li&gt;
&lt;li&gt;$sudo dpkg -i grafana_6.1.3_armhf.deb&lt;/li&gt;
&lt;li&gt;$systemctl start grafana-server&lt;/li&gt;
&lt;li&gt;$systemctl status grafana-server&lt;/li&gt;
&lt;li&gt;then you will see from the status propmt the address=0.0.0.0:3000&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;msg=&amp;#34;HTTP Server Listen&amp;#34; logger=http.server address=0.0.0.0:3000
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;To check the site is working go through localhost:3000&lt;/p&gt;</description>
    </item>
    <item>
      <title>Create a job using crontab</title>
      <link>https://jose.castrillo.eu/post/cron-script-linux/</link>
      <pubDate>Wed, 03 Apr 2019 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/cron-script-linux/</guid>
      <description>&lt;p&gt;To automate tasks or create some monitoring job we can use the older and efficient tool the &amp;ldquo;CronJob&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;For our example, I&amp;rsquo;ve created a simple script to detect the cache memory and clean it if raise to a condition then send a notification by mail.&lt;/p&gt;
&lt;p&gt;Library used:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;exim4 (mail server) or ssmtp (mail server). Both uses the same &amp;ldquo;mail&amp;rdquo; command.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Script:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# grab the buff/cache memory
mem=&amp;#34;$(free -m | grep &amp;#39;Mem:&amp;#39; | awk &amp;#39;{print $6}&amp;#39;)&amp;#34;

if  (( $mem &amp;gt; 350 ))
then
echo &amp;#39;wooo is more than 250M&amp;#39;
echo 3 | sudo tee /proc/sys/vm/drop_caches
echo &amp;#39;cache dropped&amp;#39;
echo &amp;#34;Memory buff/cache cleaned last value:&amp;#34; $mem | mail -s &amp;#34;cache_memory&amp;#34; target_mail@local.com
else
echo &amp;#39;be cool man, memory lower&amp;#39;
fi
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;script path: /user/Documents/script/memory&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Disable live-restore to run Docker Swarm</title>
      <link>https://jose.castrillo.eu/post/docker-local-post/</link>
      <pubDate>Thu, 28 Mar 2019 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/docker-local-post/</guid>
      <description>&lt;p&gt;The following instruction is a solution when you got an error response with &lt;a href=&#34;https://docs.docker.com/v17.09/engine/admin/live-restore/&#34;&gt;live-restore&lt;/a&gt; using Docker Swarm in Fedora 28 or highter&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ docker swarm init
Error response from daemon: --live-restore daemon configuration is incompatible with swarm mode
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;That&amp;rsquo;s not possible to enable Live-restore and Swarm-mode together.&lt;/p&gt;
&lt;p&gt;First make sure that the &lt;strong&gt;SElinux&lt;/strong&gt; is Permissive or Disabled.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ sestatus

SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   permissive
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     actual (secure)
Max kernel policy version:      31
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then remove the &amp;ndash;live-restore line from the &lt;strong&gt;/etc/sysconfig/docker&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Enable &#34;Kubectl&#34; auto-completion in the Shell (Linux)</title>
      <link>https://jose.castrillo.eu/post/k8s-gcp-post/</link>
      <pubDate>Sun, 25 Nov 2018 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/k8s-gcp-post/</guid>
      <description>&lt;p&gt;When you&amp;rsquo;ve done the &lt;a href=&#34;https://cloud.google.com/sdk/docs/&#34;&gt;SDK&lt;/a&gt; installation in your Linux workstation. list the components you have installed, then you will see the full list additional components from gcp SDK:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;gcloud components list
gcloud components install &amp;lt;COMPONENT_ID&amp;gt;
gcloud components install kubectl
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then follow the instruction from the kubernetes official &lt;a href=&#34;https://kubernetes.io/docs/tasks/tools/install-kubectl/&#34;&gt;documentation&lt;/a&gt;, check the &amp;ldquo;bash-completion&amp;rdquo; and finally issue the command below:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;echo &amp;#34;source &amp;lt;(kubectl completion bash)&amp;#34; &amp;gt;&amp;gt; ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Even you can go directly through your .bashrc (sudo) to add manually, it should look like:&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
