<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Automation on Jose Castrillo</title>
    <link>https://jose.castrillo.eu/tags/automation/</link>
    <description>Recent content in Automation on Jose Castrillo</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Sat, 28 Feb 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://jose.castrillo.eu/tags/automation/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>DevOps Projects</title>
      <link>https://jose.castrillo.eu/page/py/</link>
      <pubDate>Sat, 28 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/page/py/</guid>
      <description>Senior DevOps Engineer - Projects &amp;amp; Professional Journey</description>
    </item>
    <item>
      <title>My Career Journey</title>
      <link>https://jose.castrillo.eu/page/jose/</link>
      <pubDate>Sat, 28 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/page/jose/</guid>
      <description>Senior DevOps Engineer - Projects &amp;amp; Professional Journey</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>Trigger pipelines by using the API</title>
      <link>https://jose.castrillo.eu/post/pipeline-part1/</link>
      <pubDate>Sat, 15 Jul 2023 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/pipeline-part1/</guid>
      <description>&lt;p&gt;When you join a new project, company, customer, etc. (you&amp;rsquo;re still in the onboarding phase 😅), meanwhile you may find that you need to make a few changes to get your team&amp;rsquo;s production pipelines up and running. In this case, you can call an API trigger from one project to another (this is just a example).&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been in the situation described above before, and it was how I discovered this amazing feature in GitLab.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mastering GitLab CI/CD, Unleashing the Power of Pipelines</title>
      <link>https://jose.castrillo.eu/post/pipeline-gitlab-guide/</link>
      <pubDate>Fri, 16 Jun 2023 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/pipeline-gitlab-guide/</guid>
      <description>&lt;p&gt;Hey everyone! 👋 I hope you&amp;rsquo;re all having a fantastic summer time! 🌞&lt;/p&gt;
&lt;p&gt;I wanted to drop a quick note to let you know that I&amp;rsquo;m currently working on something special for all my fellow developers/operations and GitLab enthusiasts out there. 🤓✨&lt;/p&gt;
&lt;p&gt;In the upcoming posts, I&amp;rsquo;ll be sharing a treasure trove of valuable tips and tricks related to GitLab pipelines! based in my experiences 🏗️ Whether you&amp;rsquo;re a seasoned pro or just getting started with GitLab CI/CD, there&amp;rsquo;s bound to be something for everyone.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fixing tags on Azure invoices</title>
      <link>https://jose.castrillo.eu/post/python-panda-invoices/</link>
      <pubDate>Tue, 21 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/python-panda-invoices/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/pandas.gif&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;p&gt;Merging two CSV files using Pandas in Python 3 on Linux is a quick and easy process that can save you a lot of time and effort, however in my case I used other script to extract specific tag values from a CSV file, converts them into a JSON object, and writes them to a new CSV file, in that way I provided a workaround for those tags wanted.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cloining a repo and setting up as artifact</title>
      <link>https://jose.castrillo.eu/post/clone-pipeline-gitlab/</link>
      <pubDate>Tue, 20 Dec 2022 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/clone-pipeline-gitlab/</guid>
      <description>&lt;p&gt;On this post I will give you an example of how to clone a repo into your pipeline and use it for other jobs.&lt;/p&gt;
&lt;p&gt;As you can read from Gitlab official &lt;a href=&#34;https://docs.gitlab.com/ee/ci/pipelines/job_artifacts.html&#34;&gt;documentation&lt;/a&gt; artifact can output an archive of files/directories. I set the following example:&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-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  artifacts:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    paths:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      - &amp;lt;project_name&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    exclude:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      - &amp;lt;project_name&amp;gt;/.git/**/*
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    expire_in: &lt;span class=&#34;m&#34;&gt;60&lt;/span&gt; seconds
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;We need to call the &lt;em&gt;artifacts&lt;/em&gt; by using &amp;ldquo;artifacts&amp;rdquo; keyboard in the pipeline, in this example &lt;em&gt;paths&lt;/em&gt; keyboard which files/directories add into artifacts.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Trigger pipelines in Gitlab</title>
      <link>https://jose.castrillo.eu/post/trigger-pipeline-gitlab/</link>
      <pubDate>Thu, 10 Nov 2022 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/trigger-pipeline-gitlab/</guid>
      <description>&lt;p&gt;The following post is example of how to activate and use Trigger pipeline by API the official documentation over &lt;a href=&#34;https://docs.gitlab.com/ee/ci/triggers/&#34;&gt;here&lt;/a&gt; as it mentioned is can be use &lt;em&gt;&amp;ldquo;to trigger a pipeline for a specific branch or tag&amp;rdquo;&lt;/em&gt;; for our example I use it to activate a pipeline into specific branch.&lt;/p&gt;
&lt;p&gt;Steps:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;repoA will be the main one where the pipeline trigger it will be activate&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;From &lt;strong&gt;repoA&lt;/strong&gt; go to Settings-CI/CD-Pipeline triggers&lt;/li&gt;
&lt;li&gt;Click on &lt;em&gt;&amp;ldquo;add trigger&amp;rdquo;&lt;/em&gt; copy your token&lt;/li&gt;
&lt;li&gt;From &lt;strong&gt;repoB&lt;/strong&gt; that will be our caller of the &lt;strong&gt;repoA&lt;/strong&gt; pipeline create a variable where you can paste the token.&lt;/li&gt;
&lt;li&gt;Finally into your pipeline on &lt;strong&gt;repoB&lt;/strong&gt; you can add something like below:&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The best part is that you can reference to specific branch &lt;strong&gt;ref=&amp;quot;&amp;lt;branch_name&amp;gt;&amp;quot;&lt;/strong&gt;.&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>How setup a Gitlab Runner (CI)</title>
      <link>https://jose.castrillo.eu/post/gitlab-runner1/</link>
      <pubDate>Wed, 08 Dec 2021 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/gitlab-runner1/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://castrillo.gitlab.io/figaro/runner_logo.png&#34; alt=&#34;&#34;  /&gt;
&lt;/p&gt;
&lt;h2 id=&#34;part-i--&#34;&gt;Part I -&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;m learning Gitlab Runner and how them works on CI implementation.&lt;/p&gt;
&lt;p&gt;GitLab Runner is an application that works with GitLab CI to run jobs in a pipeline, they are written in &lt;a href=&#34;https://golang.org/&#34;&gt;GO&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Summary the task I will do:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install Gitlab-runner as container(podman).&lt;/li&gt;
&lt;li&gt;Runner registration.
&lt;ul&gt;
&lt;li&gt;Enter the GitLab instance URL&lt;/li&gt;
&lt;li&gt;registration token.&lt;/li&gt;
&lt;li&gt;runner description.&lt;/li&gt;
&lt;li&gt;tags.&lt;/li&gt;
&lt;li&gt;Select an &lt;a href=&#34;https://docs.gitlab.com/runner/executors/&#34;&gt;executor&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Create a gitlab-ci.yml&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Install runner:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create the Volume:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;podman volume create gitlab-runner-config
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Pull and start the container by &lt;strong&gt;register&lt;/strong&gt; command, then we will prompt the data need for register the runner into the project.&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>Serial communication Arduino</title>
      <link>https://jose.castrillo.eu/post/arduino-serial-oled/</link>
      <pubDate>Fri, 27 Nov 2020 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/arduino-serial-oled/</guid>
      <description>&lt;p&gt;From my last post (Arduino-oled-display) I added a new function that allows me to send notification/messages from my terminal (linux) to my Arduino and it shows it through the little Oled screen. Here I will share the commands and code lines to get done the serial communication on your project.&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-c&#34; data-lang=&#34;c&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;void&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;loop&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#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;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Serial&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;available&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kt&#34;&gt;char&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;recieved&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Serial&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;read&lt;/span&gt;&lt;span class=&#34;p&#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;n&#34;&gt;inData&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;recieved&lt;/span&gt;&lt;span class=&#34;p&#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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;// Process message when new line character is received
&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;recieved&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;sc&#34;&gt;&amp;#39;\n&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;Serial&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Arduino Received: &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#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;n&#34;&gt;Serial&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;inData&lt;/span&gt;&lt;span class=&#34;p&#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;c1&#34;&gt;//digitalWrite(ledPin, HIGH);
&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;c1&#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;k&#34;&gt;if&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;inData&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;HELLO&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\n&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#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&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;c1&#34;&gt;// DON&amp;#39;T forget to add &amp;#34;\n&amp;#34; at the end of the string.
&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;n&#34;&gt;Serial&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;println&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;HELLO&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#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;c1&#34;&gt;//digitalWrite(ledPin, LOW);
&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;n&#34;&gt;display&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;clearDisplay&lt;/span&gt;&lt;span class=&#34;p&#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;n&#34;&gt;display&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;setCursor&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#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;n&#34;&gt;display&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;setTextSize&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#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;n&#34;&gt;display&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Hi jose!&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#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;n&#34;&gt;display&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;display&lt;/span&gt;&lt;span class=&#34;p&#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;nf&#34;&gt;delay&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3000&lt;/span&gt;&lt;span class=&#34;p&#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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;inData&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// Clear received buffer
&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&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&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&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&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>Docker Container &#34;before start&#34;</title>
      <link>https://jose.castrillo.eu/post/docker-containers/</link>
      <pubDate>Sun, 26 Jan 2020 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/docker-containers/</guid>
      <description>&lt;h2 id=&#34;part-i&#34;&gt;Part I&lt;/h2&gt;
&lt;p&gt;Containers are environments that host individual applications using a framework like &lt;strong&gt;Docker&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Docker Editions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Docker CE ( community edition ) free version&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Docker EE ( enterprise edition) Paid&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Versions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Stable, released every 4 months.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Edge (beta) released every month. For testing&lt;/li&gt;
&lt;li&gt;EE, support for one year.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Example how to create a container:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$docker container run --publish 80:80 --detach --name webhost nginx
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;detach: subcommand is to let run the container and keep use the command prompt
name: create a container’s name.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to set you SSH key into Gitlab</title>
      <link>https://jose.castrillo.eu/post/ssh-gitlab-git/</link>
      <pubDate>Thu, 26 Dec 2019 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/ssh-gitlab-git/</guid>
      <description>&lt;p&gt;How to set you SSH key into Gitlab [&lt;em&gt;First you need to had installed Git onto your distro&lt;/em&gt;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Go to your terminal and issue the follow command to generate your key: &lt;code&gt;$ssh-keygen&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Copy your public key from the route: &lt;strong&gt;/home/user/.ssh/id_rsa.pub&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Then go at your gitlab profile &lt;a href=&#34;https://gitlab.com/profile/keys/&#34;&gt;https://gitlab.com/profile/keys/&lt;/a&gt; a paste and save.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;From the terminal test the conection by typing: &lt;code&gt;$ssh -T git@gitlab.com&lt;/code&gt; and if everything was fine it has to promt &amp;ndash;&amp;gt; Welcome to GitLab, @user_account!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Create a .zip using 7z by cmd in Windows</title>
      <link>https://jose.castrillo.eu/post/zip-cmd-windows/</link>
      <pubDate>Tue, 11 Jun 2019 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/zip-cmd-windows/</guid>
      <description>&lt;p&gt;After to install the 7z in our windows workstation/server then we need to create our &lt;strong&gt;evironment variables&lt;/strong&gt; to call the function from the cmd [1].&lt;/p&gt;
&lt;p&gt;Then the command below will guide you to zip a simple file:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;7z a -r [myzip] [example.txt]
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;[myzip] - the zip name file&lt;/li&gt;
&lt;li&gt;[example.txt] file used for the example&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To zip a folder&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;7z a [myzip] [folder]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Docu based thx to the information seen from: [1] &lt;a href=&#34;https://help.goodsync.com/hc/en-us/articles/360007773451-Automated-Backup-with-Compression-and-Encryption&#34;&gt;GlobalEnviroment&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Output IPCONFIG report to HTML by PowerShell</title>
      <link>https://jose.castrillo.eu/post/report_script_powershell/</link>
      <pubDate>Thu, 25 Apr 2019 00:00:00 +0000</pubDate>
      <guid>https://jose.castrillo.eu/post/report_script_powershell/</guid>
      <description>&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$file = &amp;#34;C:\Users\jcr\a.html&amp;#34;
$ipconfig=ipconfig /all |%{&amp;#34;$_&amp;lt;br/&amp;gt;&amp;#34;}

$body=@&amp;#34;
&amp;lt;html&amp;gt;
    &amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt;Network Report&amp;lt;/title&amp;gt;
    &amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;h1&amp;gt;IPConfig /All&amp;lt;/h1&amp;gt;
    &amp;lt;pre&amp;gt;$ipconfig&amp;lt;/pre&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&amp;#34;@
$body | Out-File $file
. $file
&lt;/code&gt;&lt;/pre&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>
  </channel>
</rss>
