<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Deployment on Artur Rios Lab</title><link>https://lab.artur-rios.tech/tags/deployment/</link><description>Recent content in Deployment on Artur Rios Lab</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 21 Oct 2026 17:55:00 +0000</lastBuildDate><atom:link href="https://lab.artur-rios.tech/tags/deployment/index.xml" rel="self" type="application/rss+xml"/><item><title>Deploying With Yggdrasil</title><link>https://lab.artur-rios.tech/infrastructure/infrastructure-deploys/</link><pubDate>Wed, 21 Oct 2026 17:55:00 +0000</pubDate><guid>https://lab.artur-rios.tech/infrastructure/infrastructure-deploys/</guid><description>&lt;p&gt;&lt;a href="https://github.com/artur-rios/yggdrasil"&gt;Yggdrasil&lt;/a&gt; is the deploy manager I&#10;built for my server. It does one job: take an application from a GitHub&#10;repository to a healthy container in the right environment, and back to the&#10;previous version if the new one does not come up. This part follows a change&#10;from a pull request to production.&lt;/p&gt;&#10;&lt;h2 id="one-catalog"&gt;One catalog&lt;a class="heading-anchor" href="#one-catalog" aria-label="Link to this section"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Everything yggdrasil knows comes from one file, &lt;code&gt;catalog.yaml&lt;/code&gt;, in three&#10;layers:&lt;/p&gt;</description></item><item><title>How I Host My Projects</title><link>https://lab.artur-rios.tech/infrastructure/infrastructure-overview/</link><pubDate>Wed, 21 Oct 2026 17:55:00 +0000</pubDate><guid>https://lab.artur-rios.tech/infrastructure/infrastructure-overview/</guid><description>&lt;p&gt;Every project eventually has to run somewhere, and deciding where for each one&#10;separately is how a hobby turns into a pile of accounts, bills and half-&#10;remembered setups. So I decided once, by kind of project, and every new project&#10;inherits the answer. This series describes that setup, as it runs today.&lt;/p&gt;&#10;&lt;h2 id="the-decision-table"&gt;The decision table&lt;a class="heading-anchor" href="#the-decision-table" aria-label="Link to this section"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;I&amp;rsquo;m building&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Stack&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Hosting&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;A marketing or product page&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Next.js with shadcn/ui&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Vercel, behind Cloudflare&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;A static portfolio or brochure site&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Astro, or a Next.js static export&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cloudflare Pages or GitHub Pages&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Technical documentation&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Hugo with the Docsy theme&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;GitHub Pages&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;An interactive web app&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Flutter, built for the web&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;My server: Docker, Traefik, yggdrasil&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;A backend API&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;ASP.NET Core&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;My server: Docker, Traefik, yggdrasil&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;A reusable package&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;NuGet, or the language&amp;rsquo;s own format&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;nuget.org and GitHub Packages&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="the-rule-behind-it"&gt;The rule behind it&lt;a class="heading-anchor" href="#the-rule-behind-it" aria-label="Link to this section"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;Anything with a running backend is self-hosted; everything else is not.&lt;/strong&gt;&lt;/p&gt;</description></item></channel></rss>