<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Alemaño</title>
    <description>The latest articles on DEV Community by Alemaño (@elalemanyo).</description>
    <link>https://dev.to/elalemanyo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F53945%2Fad95188a-57de-4e16-bc4c-b8ebee5c66a8.jpg</url>
      <title>DEV Community: Alemaño</title>
      <link>https://dev.to/elalemanyo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/elalemanyo"/>
    <language>en</language>
    <item>
      <title>Introducing RailsbootUI: Rails View Components for Bootstrap</title>
      <dc:creator>Alemaño</dc:creator>
      <pubDate>Sun, 01 Sep 2024 20:44:00 +0000</pubDate>
      <link>https://dev.to/elalemanyo/introducing-railsbootui-rails-view-components-for-bootstrap-25l3</link>
      <guid>https://dev.to/elalemanyo/introducing-railsbootui-rails-view-components-for-bootstrap-25l3</guid>
      <description>&lt;p&gt;We're super excited to announce the release of &lt;a href="https://railsbootui.com" rel="noopener noreferrer"&gt;RailsbootUI&lt;/a&gt;, our take on a complete view component system for Rails. It brings the full power and flexibility of Bootstrap components right into your Rails environment. With RailsbootUI, integrating Bootstrap into your Rails applications has never been easier and should save you a lot of development time. No need to look enviously at all the Javascript UI component systems anymore!&lt;/p&gt;

&lt;h3&gt;
  
  
  What is RailsbootUI?
&lt;/h3&gt;

&lt;p&gt;In short, RailsbootUI is designed to streamline the process of using &lt;a href="https://getbootstrap.com" rel="noopener noreferrer"&gt;Bootstrap&lt;/a&gt; components in your Rails applications. Think of it as a pre-built implementation of a design system in Bootstrap - but uniquely for Rails. &lt;/p&gt;

&lt;p&gt;For this, RailsbootUI provides a comprehensive set of pre-built, customizable view components. Under the hood, it uses GitHub's excellent &lt;a href="https://viewcomponent.org" rel="noopener noreferrer"&gt;ViewComponent system&lt;/a&gt; and provides free and professional components - &lt;em&gt;ButtonComponent&lt;/em&gt;, &lt;em&gt;AccordionComponent&lt;/em&gt;, &lt;em&gt;ProgressComponent&lt;/em&gt;, etc. - everything a modern application needs for consistent styling. The components eliminate the need for manual HTML and CSS coding for Bootstrap elements in Rails. This means you can focus more on building functionality and less on mastering the complexities of UI design.&lt;/p&gt;

&lt;p&gt;RailsbootUI comes with both &lt;strong&gt;free&lt;/strong&gt; and &lt;strong&gt;paid&lt;/strong&gt; components. The free components basically map to the existing Bootstrap components, while the pro components are usually sets of our own production-proven components that we found missing in the Bootstrap world.&lt;/p&gt;

&lt;h3&gt;
  
  
  Here's what you get
&lt;/h3&gt;

&lt;p&gt;Having worked on various applications and client needs over the last years, we found that having a design system translated into components is the best way to feel the Rails advantages (speed, consistency, dev-experience, etc.) not only in the backend but in the frontend world as well. Implementing systems like RailsbootUI in our daily work has been a real game changer. It makes the one framework philosophy of Rails more clear than ever. Every developer can work on a feature from start to finish, without being blocked by some frontend hurdle in terms of design or consistency. In marketing speech, this means:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Easy integration&lt;/strong&gt;: RailsbootUI is designed to integrate seamlessly with your existing Rails application. Whether you're starting a new project or adding it to an existing one, you'll find the setup process quick and easy. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extensive component library&lt;/strong&gt;: RailsbootUI includes a wide range of bootstrap components, from basic elements like buttons and forms to complex components like modals and carousels. Each component is designed to be fully customizable to your specific needs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Responsive Design&lt;/strong&gt;: Built on the robust frameworks of Bootstrap and View Components, RailsbootUI components look great on any device, whether it's a desktop, tablet, or smartphone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consistency and Reusability&lt;/strong&gt;: By using RailsbootUI's components, you can ensure a consistent look and feel across your entire application. Reusable components mean less code duplication and easier maintenance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customization Options&lt;/strong&gt;: While RailsbootUI components are ready to use out of the box, they are also highly customizable. You can easily adjust the styling and behavior of components to match your application's unique design requirements. It’s still Bootstrap under the hood, so it boils down do Saas variable changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Leverage View Components&lt;/strong&gt;: By using the underlying &lt;code&gt;view_components&lt;/code&gt; gem from GitHub, you get a reliable and maintained framework you can built upon. Tweak, change or just copy any of our components and it should work in your Rails app.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Getting Started
&lt;/h3&gt;

&lt;p&gt;Getting started with RailsbootUI is simple. Ensure you have a proper setup of bootstrap and the gem view_component installed in your Railsapp. After that you just simply download zip files of our components and copy &amp;amp; paste them into your app. After doing so you can call a component of your choice, for example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight erb"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="no"&gt;Railsboot&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;BreadcrumbComponent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;breadcrumb&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
  &lt;span class="cp"&gt;&amp;lt;%&lt;/span&gt; &lt;span class="n"&gt;breadcrumb&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;with_item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;text: &lt;/span&gt;&lt;span class="s2"&gt;"Item 1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;path: &lt;/span&gt;&lt;span class="s2"&gt;"/item/1"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
  &lt;span class="cp"&gt;&amp;lt;%&lt;/span&gt; &lt;span class="n"&gt;breadcrumb&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;with_item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;text: &lt;/span&gt;&lt;span class="s2"&gt;"Item 2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;path: &lt;/span&gt;&lt;span class="s2"&gt;"/item/2"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
  &lt;span class="cp"&gt;&amp;lt;%&lt;/span&gt; &lt;span class="n"&gt;breadcrumb&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;with_item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;text: &lt;/span&gt;&lt;span class="s2"&gt;"Item 3"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;path: &lt;/span&gt;&lt;span class="s2"&gt;"/item/3"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;active: &lt;/span&gt;&lt;span class="kp"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
&lt;span class="cp"&gt;&amp;lt;%&lt;/span&gt; &lt;span class="k"&gt;end&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The HTML-Representation would look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;nav&lt;/span&gt; &lt;span class="na"&gt;aria-label=&lt;/span&gt;&lt;span class="s"&gt;"breadcrumb"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;ol&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"breadcrumb"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;li&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"breadcrumb-item"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"#"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 1&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;li&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"breadcrumb-item"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"#"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Item 2&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;li&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"breadcrumb-item active"&lt;/span&gt; &lt;span class="na"&gt;aria-current=&lt;/span&gt;&lt;span class="s"&gt;"page"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      Item 3
    &lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/ol&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/nav&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you want to explore our professional components, you can sign up for an account and purchase either a personal or team license. All licenses are one-time purchases, so you get all future components and improvements for free! All our components are copy &amp;amp; paste offerings, so you can twak and adjust all of them jsut as you need.&lt;/p&gt;

&lt;h3&gt;
  
  
  What’s more to come?
&lt;/h3&gt;

&lt;p&gt;We are of course continuously improving our components. New components, improvments etc. are happening in the background. Feel free to contact us at &lt;a href="//mailto:support@railsbootui.com"&gt;support@railsbootui.com&lt;/a&gt; if you have the need for any special custom component or have any other feedback.&lt;/p&gt;

&lt;p&gt;We would like to see a similar selection of professional UI components in Rails that you might know and love from the Javascript world. The front end of Rails is still underrepresented when it comes to building fast and low-maintenance web applications. Hotwire &amp;amp; Co. have laid the foundation for you to build excellent end-to-end applications with Rails and a solid design system without having to resort to React &amp;amp; Co. RailsbootUI should be a contribution to this. We also have other ideas in mind, so expect more to come!  &lt;/p&gt;

&lt;p&gt;So head on over to &lt;a href="https://railsbootui.com" rel="noopener noreferrer"&gt;RailsbootUI&lt;/a&gt; and start exploring our components!&lt;/p&gt;

</description>
      <category>viewcomponent</category>
      <category>bootstrap</category>
      <category>rails</category>
      <category>ruby</category>
    </item>
    <item>
      <title>How To Install Docker and Docker-Compose On Raspberry Pi</title>
      <dc:creator>Alemaño</dc:creator>
      <pubDate>Fri, 02 Apr 2021 06:07:53 +0000</pubDate>
      <link>https://dev.to/elalemanyo/how-to-install-docker-and-docker-compose-on-raspberry-pi-1mo</link>
      <guid>https://dev.to/elalemanyo/how-to-install-docker-and-docker-compose-on-raspberry-pi-1mo</guid>
      <description>&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Raspberry Pi with a running Raspbian OS&lt;/li&gt;
&lt;li&gt;SSH connection enabled&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To do this you can check &lt;a href="https://dev.to/elalemanyo/raspberry-pi-setup-6jm"&gt;Raspberry Pi Setup&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Update and Upgrade
&lt;/h3&gt;

&lt;p&gt;First of all make sure that the system runs the latest version of the software.&lt;br&gt;
Run the command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get upgrade
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Install Docker
&lt;/h3&gt;

&lt;p&gt;Now is time to install Docker! Fortunately, Docker provides a handy install script for that, just run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; test.docker.com &lt;span class="nt"&gt;-o&lt;/span&gt; get-docker.sh &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sh get-docker.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Add a Non-Root User to the Docker Group
&lt;/h3&gt;

&lt;p&gt;By default, only users who have administrative privileges (root users) can run containers. If you are not logged in as the root, one option is to use the sudo prefix.&lt;br&gt;
However, you could also add your non-root user to the Docker group which will allow it to execute docker commands.&lt;/p&gt;

&lt;p&gt;The syntax for adding users to the Docker group is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;usermod &lt;span class="nt"&gt;-aG&lt;/span&gt; docker &lt;span class="o"&gt;[&lt;/span&gt;user_name]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To add the permissions to the current user run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;usermod &lt;span class="nt"&gt;-aG&lt;/span&gt; docker &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;USER&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check it running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;groups&lt;/span&gt; &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;USER&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Reboot the Raspberry Pi to let the changes take effect.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Install Docker-Compose
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Using &lt;code&gt;pip&lt;/code&gt;:&lt;/strong&gt;&lt;br&gt;
Docker-Compose usually gets installed using pip3. For that, we need to have python3 and pip3 installed. If you don't have it installed, you can run the following commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;libffi-dev libssl-dev
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;python3-dev
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; python3 python3-pip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once python3 and pip3 are installed, we can install Docker-Compose using the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;pip3 &lt;span class="nb"&gt;install &lt;/span&gt;docker-compose
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Using &lt;code&gt;apt&lt;/code&gt;:&lt;/strong&gt;&lt;br&gt;
An easier way is to use apt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;docker-compose
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. Enable the Docker system service to start your containers on boot
&lt;/h3&gt;

&lt;p&gt;This is a very nice and important addition. With the following command you can configure your Raspberry Pi to automatically run the Docker system service, whenever it boots up.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;docker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With this in place, containers with a &lt;a href="https://docs.docker.com/config/containers/start-containers-automatically/" rel="noopener noreferrer"&gt;restart policy&lt;/a&gt; set to always or unless-stopped will be re-started automatically after a reboot.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Run Hello World Container
&lt;/h3&gt;

&lt;p&gt;The best way to test whether Docker has been set up correctly is to run the Hello World container.&lt;br&gt;
To do so, type in the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run hello-world
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once it goes through all the steps, the output should inform you that your installation appears to be working correctly.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. A sample Docker Compose file
&lt;/h3&gt;

&lt;p&gt;This section shows a quick sample of a Docker-Compose file, which starts three containers that once started will automatically come up, if the Raspberry Pi get fully power cycled. To learn more about the sample project, visit &lt;a href="https://github.com/robinmanuelthiel/speedtest" rel="noopener noreferrer"&gt;Docker Speed Test project on GitHub&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;3'&lt;/span&gt;
&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="c1"&gt;# Tests the current internet connection speed&lt;/span&gt;
  &lt;span class="c1"&gt;# once per hour and writes the results into an&lt;/span&gt;
  &lt;span class="c1"&gt;# InfluxDB instance&lt;/span&gt;
  &lt;span class="na"&gt;speedtest&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;robinmanuelthiel/speedtest:latest&lt;/span&gt;
    &lt;span class="na"&gt;restart&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;always&lt;/span&gt;
    &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;LOOP=true&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;LOOP_DELAY=1800&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;DB_SAVE=true&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;DB_HOST=http://influxdb:8086&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;DB_NAME=speedtest&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;DB_USERNAME=admin&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;DB_PASSWORD=password&lt;/span&gt;
    &lt;span class="na"&gt;privileged&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="c1"&gt;# Needed for 'sleep' in the loop&lt;/span&gt;
    &lt;span class="na"&gt;depends_on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;influxdb&lt;/span&gt;

  &lt;span class="c1"&gt;# Creates an InfluxDB instance to store the&lt;/span&gt;
  &lt;span class="c1"&gt;# speed test results&lt;/span&gt;
  &lt;span class="na"&gt;influxdb&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;influxdb:1.8.3&lt;/span&gt;
    &lt;span class="na"&gt;restart&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;always&lt;/span&gt;
    &lt;span class="na"&gt;volumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;influxdb:/var/lib/influxdb&lt;/span&gt;
    &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;8083:8083&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;8086:8086&lt;/span&gt;
    &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;INFLUXDB_ADMIN_USER="admin"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;INFLUXDB_ADMIN_PASSWORD="password"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;INFLUXDB_DB="speedtest"&lt;/span&gt;

  &lt;span class="c1"&gt;# Displays the results in a Grafana dashborad&lt;/span&gt;
  &lt;span class="na"&gt;grafana&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;grafana/grafana:7.5.2&lt;/span&gt;
    &lt;span class="na"&gt;restart&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;always&lt;/span&gt;
    &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;3000:3000&lt;/span&gt;
    &lt;span class="na"&gt;volumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;grafana:/var/lib/grafana&lt;/span&gt;
    &lt;span class="na"&gt;depends_on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;influxdb&lt;/span&gt;

&lt;span class="na"&gt;volumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;grafana&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;influxdb&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To start the containers using Docker-Compose, run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker-compose &lt;span class="nt"&gt;-f&lt;/span&gt; docker-compose.yaml up &lt;span class="nt"&gt;-d&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Find Raspberry Pi Docker Images
&lt;/h3&gt;

&lt;p&gt;Raspberry Pi is based on ARM architecture. Hence, not all Docker images will work on your Raspberry Pi.&lt;/p&gt;

&lt;p&gt;Remember that when searching for images to pull from &lt;a href="https://registry.hub.docker.com/search?q=&amp;amp;type=image&amp;amp;architecture=arm%2Carm64" rel="noopener noreferrer"&gt;Docker Hub&lt;/a&gt;. Apply the Architectures filter to search for supported apps.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to Upgrade Docker on Raspberry Pi?
&lt;/h3&gt;

&lt;p&gt;Upgrade Docker using the package manager with the command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get upgrade
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  How to Uninstall Docker on Raspberry Pi?
&lt;/h3&gt;

&lt;p&gt;You can simply remove docker using the package manager:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get purge docker-ce
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Depending on the version of software, you may need to use an additional command to completely remove Docker:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get purge docker-ce-cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To delete leftover images, containers, volumes and other related data, run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; /var/lib/docker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Edited configuration files must be deleted manually.&lt;/p&gt;

&lt;h3&gt;
  
  
  References
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://phoenixnap.com/kb/docker-on-raspberry-pi" rel="noopener noreferrer"&gt;How To Install Docker On Raspberry Pi&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pumpingco.de/blog/setup-your-raspberry-pi-for-docker-and-docker-compose/" rel="noopener noreferrer"&gt;Setup your Raspberry Pi for Docker and Docker-Compose&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>docker</category>
      <category>raspberrypi</category>
    </item>
    <item>
      <title>Raspberry Pi Setup</title>
      <dc:creator>Alemaño</dc:creator>
      <pubDate>Sat, 27 Mar 2021 18:24:17 +0000</pubDate>
      <link>https://dev.to/elalemanyo/raspberry-pi-setup-6jm</link>
      <guid>https://dev.to/elalemanyo/raspberry-pi-setup-6jm</guid>
      <description>&lt;h3&gt;
  
  
  1. Install Operating System on SD Card
&lt;/h3&gt;

&lt;p&gt;The most straight forward way to install any Operating System on your Raspberry Pi is through the &lt;a href="https://www.raspberrypi.org/documentation/installation/installing-images/README.md"&gt;official Raspberry Pi Imager&lt;/a&gt;. It comes with all the tools needed to prepare and flash an SD card with the Operating System you want to install. &lt;/p&gt;

&lt;h3&gt;
  
  
  2. Enable SSH access
&lt;/h3&gt;

&lt;p&gt;To enabled SSH we need to add an additional empty file called &lt;code&gt;ssh&lt;/code&gt; to the SD card's root directory after is has been flashed with the image.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;touch &lt;/span&gt;ssh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Enable Wifi
&lt;/h3&gt;

&lt;p&gt;To enable Wifi create a file in the root of boot called: &lt;code&gt;wpa_supplicant.conf&lt;/code&gt;. Then paste the following into it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;country&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;US
&lt;span class="nv"&gt;ctrl_interface&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;DIR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/var/run/wpa_supplicant &lt;span class="nv"&gt;GROUP&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;netdev
&lt;span class="nv"&gt;update_config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1

&lt;span class="nv"&gt;network&lt;/span&gt;&lt;span class="o"&gt;={&lt;/span&gt;
    &lt;span class="nv"&gt;ssid&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"NETWORK-NAME"&lt;/span&gt;
    &lt;span class="nv"&gt;psk&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"NETWORK-PASSWORD"&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Eject the micro SD card
&lt;/h3&gt;

&lt;h3&gt;
  
  
  5. Boot the Raspberry Pi
&lt;/h3&gt;

&lt;p&gt;After booting up your device, you can connect to it via SSH by using its IP address.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh pi@[Raspberry Pi IP address]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The default username is &lt;code&gt;pi&lt;/code&gt; and the standard password is &lt;code&gt;raspberry&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;It's highly recommended to change the password on the first connection. You can do this and configure many other useful things in the handy Raspberry Pi Config tool:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;raspi-config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  6. Update and Upgrade
&lt;/h3&gt;

&lt;p&gt;Start by updating and upgrading the system. This ensures you install the latest version of the software.&lt;br&gt;
Open a terminal window and run the command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get upgrade
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  7. Assign the .local Domain to Your Raspberry Pi
&lt;/h3&gt;

&lt;p&gt;If you’re using your Raspberry Pi to host anything on your network, you might want to assign it a &lt;code&gt;.local&lt;/code&gt; domain. With this, you’ll immediately be able to access your by a domain rather than remembering its IP address.&lt;/p&gt;

&lt;p&gt;If you create a &lt;code&gt;.local&lt;/code&gt; address for your Raspberry Pi you’ll be able to access your Pi using a simple web address.&lt;/p&gt;

&lt;p&gt;To do this you need to install Avahi Daemon on your Raspberry Pi:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;avahi-daemon
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once the installation process is complete, you don’t even have to reboot the device. Your Raspberry Pi will begin immediately recognizing local network queries for its hostname (by default “raspberrypi“) at raspberrypi.local.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Install git
&lt;/h3&gt;

&lt;p&gt;Sooner or later you will most likely end up needing git, so you can install it now.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Disclaimer
&lt;/h3&gt;

&lt;p&gt;This may not be the best way to do it, but it is the way I use and it works for me 😊&lt;/p&gt;

&lt;p&gt;This article will be updated as soon as something changes in this process.&lt;/p&gt;

&lt;p&gt;If you do something different and you think it is better, do not hesitate to let me know.&lt;/p&gt;

</description>
      <category>raspberrypi</category>
    </item>
  </channel>
</rss>
