<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Docker - Tag - log - Nicholas Ward</title><link>https://log.nicholas.uuard.com/tags/docker/</link><description>Docker - Tag - log - Nicholas Ward</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>nicholaspward@outlook.com (Nicholas Ward)</managingEditor><webMaster>nicholaspward@outlook.com (Nicholas Ward)</webMaster><lastBuildDate>Tue, 07 Jul 2026 10:00:00 -0500</lastBuildDate><atom:link href="https://log.nicholas.uuard.com/tags/docker/" rel="self" type="application/rss+xml"/><item><title>🏗️ Home Ops Upgrades</title><link>https://log.nicholas.uuard.com/posts/2026-07-07-home-ops/</link><pubDate>Tue, 07 Jul 2026 10:00:00 -0500</pubDate><author>nicholas</author><guid>https://log.nicholas.uuard.com/posts/2026-07-07-home-ops/</guid><description><![CDATA[<p>As the number of self-hosted services I use regularly has grown, managing them by hand began to feel wrong, and occasionally annoying and tedious. It ends now!</p>






<figure>
  <a
    class="lightgallery"
    href="https://files.web-log.uuard.com/2026-07-07-home-ops/images/portainer-container-dashboard.png"
    data-thumbnail="https://files.web-log.uuard.com/2026-07-07-home-ops/images/portainer-container-dashboard.png"
    data-sub-html="Container dashboard - many apps">
    
  </a>

  
    <figcaption>Container dashboard - many apps</figcaption>
  
</figure>

<p>In the beginning, my workflow was pretty sloppy since much of the deployment/management depended on me remembering to restart a container or update a version, manually copy a secret here and there. Things like this. Totally maintainable, sustainable with some effort, but it is not <em>the way</em>. And to some degree these manual interventions will always be necessary, but it will serve me well to reduce them and automate them away as much as reasonable to help these apps live far into the future with little fuss. Many of these apps have proven their usefulness to me over many years, so I have begun to take their management more seriously, slowly taking steps toward git-ops patterns and best practices. Before: scattered <code>.env</code> files. Flat directory of compose files. No documentation. Manually copying secrets by hand. Manually rebuilding host dependencies by hand. Now: a single command issued by a single click of a button (maybe I am overstating the simplicity here&hellip;nevertheless) will handle mostly everything I care about. Host setup, Compose projects, rendered secrets, state directories, validation, and deployment are all described in one place. Easy!</p>]]></description></item><item><title>▶️ Gitea Actions &amp; Kubernetes</title><link>https://log.nicholas.uuard.com/posts/gitea-actions-kubernetes/</link><pubDate>Thu, 08 May 2025 12:50:00 -0500</pubDate><author>nicholas</author><guid>https://log.nicholas.uuard.com/posts/gitea-actions-kubernetes/</guid><description><![CDATA[<p>I currently use <strong>Jenkins</strong> to automate the build and deployment of my <a href="https://nicholas.uuard.com" target="_blank" rel="noopener noreffer ">personal website</a> and my <a href="https://log.nicholas.uuard.com" target="_blank" rel="noopener noreffer ">blog site</a>. I will experiment with a <strong>Gitea Actions</strong> workflow to see if I can accomplish the same thing in Gitea.</p>
<p>This process should be familiar to me since the workflow I configure in this post will more or less mirror the behavior of my Jenkins setup: an independent service (e.g., Jenkins agent, Gitea runner) executes steps defined in a repo configuration file (e.g., <code>Jenkinsfile</code>, <code>demo.yml</code>).</p>]]></description></item><item><title>🚀 Hugo Site Deployment - Automating and Version Tracking</title><link>https://log.nicholas.uuard.com/posts/jenkins-deploy-web-log/</link><pubDate>Sun, 06 Apr 2025 10:18:00 -0600</pubDate><author>nicholas</author><guid>https://log.nicholas.uuard.com/posts/jenkins-deploy-web-log/</guid><description><![CDATA[<p>I am using the static site generator <code>Hugo</code> to generate the web log site that currently hosts this content. Currently, my site is hosted on my local network using <code>hugo server</code>:</p>
<blockquote>
<p>Hugo provides its own webserver which builds and serves the site. While hugo server is high
performance, it is a webserver with limited options.</p>
</blockquote>
<p>This has worked great since I have been using the embedded webserver for development purposes &ndash; each time I make changes to the watched files, Hugo rebuilds and live-reloads the site. This is convenient for development purposes, so I will continue to use it in this way.</p>]]></description></item><item><title>🤵🏻 Automating Personal Website Deployment</title><link>https://log.nicholas.uuard.com/posts/jenkins-deploy-website/</link><pubDate>Sun, 30 Mar 2025 18:00:00 -0600</pubDate><author>nicholas</author><guid>https://log.nicholas.uuard.com/posts/jenkins-deploy-website/</guid><description><![CDATA[<p>I have a simple <a href="https://nicholas.uuard.com/" target="_blank" rel="noopener noreffer ">personal website</a> that currently serves as a landing page containing links that direct visitors to my other websites. I want to use Jenkins to automate the deployment of this site. In my <a href="/posts/jenkins/" rel="">last post on this topic</a>, I set up a Jenkins web UI and build agent in container using Docker. I will use this container to automate the process of deploying my website.</p>
<h2 id="the-plan">The plan</h2>
<p>I will configure Jenkins to monitor the <code>main</code> branch of my <a href="https://git.uuard.com/Ward/personal-website" target="_blank" rel="noopener noreffer ">website repository</a> and copy the repo to a host directory that is bind-mounted to both my Jenkins and Nginx containers. This host directory will be bind-mounted to Nginx&rsquo;s document root so the website is automatically published to the web server.</p>]]></description></item><item><title>🦙 Self-hosting LLM with Ollama &amp; OpenWebUI</title><link>https://log.nicholas.uuard.com/posts/local-llm-basic-setup/</link><pubDate>Wed, 12 Mar 2025 10:54:00 -0600</pubDate><author>nicholas</author><guid>https://log.nicholas.uuard.com/posts/local-llm-basic-setup/</guid><description><![CDATA[<p>I impulsively purchased a NVIDIA RTX 4060 at my local Best Buy. I thought it would be fun to run my own LLMs.In this post, I deploy only a minimal local LLM with web UI.</p>
<h2 id="llms">LLMs</h2>
<p>LLMs continue to improve apace, getting smaller, more efficient, smarter, generally better in every way, every day, relentlessly and with such speed that I really cannot even pretend to have kept up with their developments to any meaningful degree. I merely absorb the general <em>sense of things</em>, passively, allowing the vibes of the techno-accelerationist-sphere wash over me. Every week a new set of capabilities are launched with a new version of a new model using a new paradigm. Exciting, truly what a time to be alive. Around the time of this writing, Deepseek released its R1 model which one can run on relatively low-spec hardware (this is true of many earlier models by other organizations, but none produced the same frenzied excitement as this one), so I hopped on the hype wagon and now I have a somewhat powerful reasoning model running on my computer. Running my own LLM locally is just for fun, and as of the time I write this confers no &ldquo;practical&rdquo; benefit to me to over using ChatGPT or Deepseek over the web.</p>]]></description></item><item><title>🐋 Configuring Development Pipeline with Jenkins &amp; Docker</title><link>https://log.nicholas.uuard.com/posts/jenkins/</link><pubDate>Thu, 31 Oct 2024 15:49:57 +0000</pubDate><author>nicholas</author><guid>https://log.nicholas.uuard.com/posts/jenkins/</guid><description><![CDATA[<p>I have a few Gitea git repositories that I host on my local network. Eventually I would like to be able to configure my server to automatically build and deploy the latest changes to these repositories to a development site. In this post, I will configure only the infrastructure that will make this possible.</p>
<h1 id="first-steps">First Steps</h1>
<p>The first thing I do with any project that runs in a container is to give it its own directory. I create the Docker Compose configuration file that will describe the docker container.</p>]]></description></item><item><title>📷 Wildlife Cam Livestream with Frigate + Nikon Z50</title><link>https://log.nicholas.uuard.com/posts/wildlife-stream/</link><pubDate>Wed, 21 Aug 2024 18:13:24 +0000</pubDate><author>nicholas</author><guid>https://log.nicholas.uuard.com/posts/wildlife-stream/</guid><description>&lt;p>I want to capture images and video of animals that visit my deck (mostly squirrels, woodpeckers, and finches). Previously, I have used an IP camera to accomplish this, and while satisfying in a technical sense, the images were of too low quality to be of much artistic interest to me. The image that IP cameras produce are typically of very large field of view, which makes the subjects I am interested in appear very small. It has the distinct look of a security camera which is not associated with beauty or visual interest. I will need to use a better camera.&lt;/p></description></item><item><title>📹 IP Camera Time-lapse in Frigate</title><link>https://log.nicholas.uuard.com/posts/ipcam-timelapse/</link><pubDate>Thu, 18 Apr 2024 17:00:33 +0000</pubDate><author>nicholas</author><guid>https://log.nicholas.uuard.com/posts/ipcam-timelapse/</guid><description><![CDATA[<p>I have a container running <code>Frigate</code>, which captures and republishes a feed from my security camera overlooking the area beyond my deck. I will periodically capture a frame from this stream for some time, and compile the frames into time-lapses using <code>ffmpeg</code></p>






<figure>
  <a
    class="lightgallery"
    href="https://files.web-log.uuard.com/ipcam-timelapse/images/ip-cam-mounted.JPG"
    data-thumbnail="https://files.web-log.uuard.com/ipcam-timelapse/images/ip-cam-mounted.JPG"
    data-sub-html="IP camera mounted">
    
  </a>

  
    <figcaption>IP camera mounted</figcaption>
  
</figure>







<figure>
  <a
    class="lightgallery"
    href="https://files.web-log.uuard.com/ipcam-timelapse/images/ip-cam-view.JPG"
    data-thumbnail="https://files.web-log.uuard.com/ipcam-timelapse/images/ip-cam-view.JPG"
    data-sub-html="IP camera view of deck overlooking the neighborhood">
    
  </a>

  
    <figcaption>IP camera view of deck overlooking the neighborhood</figcaption>
  
</figure>

<h2 id="docker-container---frigate">Docker Container - Frigate</h2>
<p>As I mention above, I am already using <code>Frigate</code> to manage my IP camera stream for things like object detection, recording, and other such functions that are common in video management systems. The software lacks built-in features relating to time-lapses, but this is easily implemented through other means.</p>]]></description></item></channel></rss>