Initial Commit
49
public/404.html
Normal file
@ -0,0 +1,49 @@
|
||||
<!doctype html><head><link rel=stylesheet href=https://comprofix.com/css/main.min.f77a4050bafcd273d43d6737e174f344bd91a213d9bc92b097cb31fc7dbe1cb9.css></head><html lang=en><head><meta charset=utf-8><meta name=theme-color media="(prefers-color-scheme: light)" content="#f7f7f7"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#1b1b1e"><meta name=mobile-web-app-capable content="yes"><meta name=apple-mobile-web-app-status-bar-style content="black-translucent"><meta name=viewport content="width=device-width,user-scalable=no,initial-scale=1,shrink-to-fit=no,viewport-fit=cover"><meta property="og:url" content="https://comprofix.com/404.html"><meta property="og:site_name" content="Comprofix"><meta property="og:title" content="404 Page not found"><meta property="og:locale" content="en"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="404 Page not found"><meta itemprop=name content="404 Page not found"><title>404 Page not found |
|
||||
Comprofix</title><link rel=apple-touch-icon sizes=180x180 href=/img/favicons/apple-touch-icon.png><link rel=icon type=image/png sizes=32x32 href=/img/favicons/favicon-32x32.png><link rel=icon type=image/png sizes=16x16 href=/img/favicons/favicon-16x16.png><link rel="shortcut icon" href=/img/favicons/favicon.ico><meta name=apple-mobile-web-app-title content="Comprofix"><meta name=application-name content="Comprofix"><meta name=msapplication-TileColor content="#da532c"><meta name=msapplication-config content="/img/favicons/browserconfig.xml"><meta name=theme-color content="#ffffff"><link rel=preconnect href=https://fonts.googleapis.com><link rel=dns-prefetch href=https://fonts.googleapis.com><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=dns-prefetch href=https://fonts.gstatic.com><link rel=preconnect href=https://cdn.jsdelivr.net><link rel=dns-prefetch href=https://cdn.jsdelivr.net><link rel=stylesheet href=https://comprofix.com/css/main.min.f77a4050bafcd273d43d6737e174f344bd91a213d9bc92b097cb31fc7dbe1cb9.css><link rel=stylesheet href="https://fonts.googleapis.com/css2?family=Lato:wght@300;400&family=Source+Sans+Pro:wght@400;600;700;900&display=swap"><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.7.1/css/all.min.css><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/tocbot@4.32.2/dist/tocbot.min.css><link rel=stylesheet href=/><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/glightbox@3.3.0/dist/css/glightbox.min.css><script src=/js/modules/theme.js></script><script defer src=/js/commons.js></script></head><body><aside aria-label=Sidebar id=sidebar class="d-flex flex-column align-items-end"><header class=profile-wrapper><a href=/ id=avatar class=rounded-circle><img src=/img/man-logo.png width=112 height=112 alt=avatar onerror='this.style.display="none"'></a>
|
||||
<a class="site-title d-block" href=/>Comprofix</a><p class="site-subtitle fst-italic mb-0">Geek | Nerd | Systems Administrator | IT Specialist</p></header><nav class="flex-column flex-grow-1 w-100 ps-0"><ul class=nav><li class=nav-item><a href=/ class=nav-link><i class="fa-fw fas fa-house"></i>
|
||||
<span>HOME</span></a></li><li class=nav-item><a href=/categories/ class=nav-link><i class="fa-fw fas fa-stream"></i>
|
||||
<span>CATEGORIES</span></a></li><li class=nav-item><a href=/tags/ class=nav-link><i class="fa-fw fas fa-tags"></i>
|
||||
<span>TAGS</span></a></li><li class=nav-item><a href=/archives/ class=nav-link><i class="fa-fw fas fa-archive"></i>
|
||||
<span>ARCHIVES</span></a></li><li class=nav-item><a href=/about/ class=nav-link><i class="fa-fw fas fa-info-circle"></i>
|
||||
<span>ABOUT</span></a></li></ul></nav><div class="sidebar-bottom d-flex flex-wrap align-items-center w-100"><button type=button class="btn btn-link nav-link" aria-label="Switch Mode" id=mode-toggle>
|
||||
<i class="fas fa-adjust"></i>
|
||||
</button>
|
||||
<span class=icon-border></span>
|
||||
<a href=https://git.comprofix.com/mmckinnon aria-label=custom target=_blank rel="noopener noreferrer"><i class="fab fa-git-alt"></i>
|
||||
</a><a href=https://twitter.com/mckinnon81 aria-label=twitter target=_blank rel="noopener noreferrer"><i class="fab fa-twitter"></i>
|
||||
</a><a href=https://comprofix.com/index.xml aria-label=rss><i class="fas fa-rss"></i></a></div></aside><div id=main-wrapper class="d-flex justify-content-center"><div class="container d-flex flex-column px-xxl-5"><header id=topbar-wrapper class=flex-shrink-0 aria-label="Top Bar"><div id=topbar class="d-flex align-items-center justify-content-between px-lg-3 h-100"><nav id=breadcrumb aria-label=Breadcrumb><span><a href=/>Home</a>
|
||||
</span><span>404 Page not found</span></nav><button type=button id=sidebar-trigger class="btn btn-link" aria-label=Sidebar>
|
||||
<i class="fas fa-bars fa-fw"></i></button><div id=topbar-title>404 Page not found</div><button type=button id=search-trigger class="btn btn-link" aria-label=Search>
|
||||
<i class="fas fa-search fa-fw"></i>
|
||||
</button>
|
||||
<search id=search class="align-items-center ms-3 ms-lg-0"><i class="fas fa-search fa-fw"></i>
|
||||
<input class=form-control id=search-input type=search aria-label=search autocomplete=off placeholder=Search...>
|
||||
</search><button type=button class="btn btn-link text-decoration-none" id=search-cancel>Cancel</button></div></header><div class="row flex-grow-1"><main aria-label="Main Content" class="col-12 col-lg-11 col-xl-9 px-md-4"><h1 class=dynamic-title>404: Page not found</h1><div class=content><blockquote class=prompt-danger><p>Sorry, we've misplaced that URL or it's pointing to something that doesn't exist.</p></blockquote></div></main><aside aria-label=Panel id=panel-wrapper class="col-xl-3 ps-2 text-muted"><div class=access><section id=access-lastmod><h2 class=panel-heading>Recently Updated</h2><ul class="content list-unstyled ps-0 pb-1 ms-1 mt-2"><li class="text-truncate lh-lg"><a href=/post/2024-09-21-websitedeployment/>Continuous Integration & Continuous Deployment</a></li><li class="text-truncate lh-lg"><a href=/post/2024-09-05-resetrestart/>Reset and Restart</a></li></ul></section><section><h2 class=panel-heading>Trending Tags</h2><div class="d-flex flex-wrap mt-3 mb-1 me-3"><a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/cd/>cd</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/ci/>ci</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-deployment/>continuous deployment</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-integration/>continuous integration</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/docker/>docker</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/git/>git</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/homelab/>homelab</a></div></section></div></aside></div><div class=row><div id=tail-wrapper class="col-12 col-lg-11 col-xl-9 px-md-4"><footer aria-label="Site Info" class="d-flex flex-column justify-content-center text-muted
|
||||
flex-lg-row justify-content-lg-between align-items-lg-center pb-lg-3"><p>©
|
||||
<time>2025</time>
|
||||
<a href=https://comprofix.com>Comprofix</a>.
|
||||
<span data-bs-toggle=tooltip data-bs-placement=top title="Except where otherwise noted, the blog posts on this site are licensed under the Creative Commons Attribution 4.0 International (CC BY 4.0) License by the author.">Some rights reserved.</span></p><p>Using the <a data-bs-toggle=tooltip data-bs-placement=top title=v1.0.2 href=https://github.com/geekifan/hugo-theme-chirpy target=_blank rel=noopener>Chirpy</a> theme for <a href=https://gohugo.io/ target=_blank rel=noopener>Hugo</a>.</p></footer></div></div><div id=search-result-wrapper class="d-flex justify-content-center d-none"><div class="col-11 content"><div id=search-hints><section><h2 class=panel-heading>Trending Tags</h2><div class="d-flex flex-wrap mt-3 mb-1 me-3"><a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/cd/>cd</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/ci/>ci</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-deployment/>continuous deployment</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-integration/>continuous integration</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/docker/>docker</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/git/>git</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/homelab/>homelab</a></div></section></div><div id=search-results class="d-flex flex-wrap justify-content-center text-muted mt-3"></div></div></div><script>const DEFAULT_CONFIG={search:{minChars:1,maxResults:5,fields:{title:!0,description:!0,section:!0,contents:!0},strictMode:!0}};class FastSearch{constructor({searchInput:e,resultsContainer:t,json:n,searchResultTemplate:s=null,noResultsText:o=null}){this.searchInput=e,this.resultsContainer=t,this.json=n,this.searchResultTemplate=s,this.noResultsText=o,this.init()}init(){this.loadSearchIndex(),this.searchInput.addEventListener("input",e=>{if(!this.searchIndex){this.resultsContainer.innerHTML='<li class="search-message">Loading search index...</li>';return}this.performSearch(this.searchInput.value)})}async loadSearchIndex(){try{const e=await fetch(this.json);if(!e.ok)throw new Error("Failed to load search index");const t=await e.json();this.searchIndex=t.map(e=>({...e,searchableTitle:e.title?.toLowerCase()||"",searchableDesc:e.desc?.toLowerCase()||"",searchableSection:e.section?.toLowerCase()||"",searchableContents:e.contents?.toLowerCase()||""}))}catch(e){console.error("Error loading search index:",e),this.resultsContainer.innerHTML='<li class="search-message">Error loading search index...</li>'}}escapeHtml(e){return e?e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"):""}containsTerm(e,t){return!!e&&!!t&&e.includes(t)}performSearch(e){if(e=e.toLowerCase().trim(),!e||!this.searchIndex||e.length<DEFAULT_CONFIG.search.minChars){this.resultsContainer.innerHTML="";return}const s=[e,...e.split(/\s+/).filter(e=>e.length>0)],t=[...new Set(s)],o=DEFAULT_CONFIG.search.strictMode,n=this.searchIndex.map(e=>{const s=this.checkFieldsForMatch(e,t[0]);if(o&&!s)return{item:e,score:0,matched:!1};let n=0,i=0,a=!1;t.forEach((t,s)=>{const r=s===0,o=this.checkFieldsForMatch(e,t);o&&(i++,o.inTitle&&(n+=r?10:5,a=!0),o.inDesc&&(n+=r?8:4),o.inSection&&(n+=r?6:3),o.inContents&&(n+=r?4:2))});const r=i/t.length,c=n*r*(a?1.5:1);return{item:e,score:c,matched:s}}).filter(e=>e.matched).sort((e,t)=>t.score-e.score).slice(0,DEFAULT_CONFIG.search.maxResults).map(e=>e.item);if(n.length===0){this.resultsContainer.innerHTML='<p class="mt-5">Oops! No results found.</p>';return}const i=n.map(e=>{let t="",n="";return e.categories&&(t=e.categories.join(", "),t=`<div class="me-sm-4"><i class="far fa-folder fa-fw"></i>${t}</div>`),e.tags&&(n=e.tags.join(", "),n=`<div><i class="fa fa-tag fa-fw"></i>${n}</div>`),`
|
||||
<article class="px-1 px-sm-2 px-lg-4 px-xl-0">
|
||||
<header>
|
||||
<h2><a href="${this.escapeHtml(e.permalink)}">${this.escapeHtml(e.title)}</a></h2>
|
||||
<div class="post-meta d-flex flex-column flex-sm-row text-muted mt-1 mb-1">
|
||||
${t}
|
||||
${n}
|
||||
</div>
|
||||
</header>
|
||||
<p>${this.escapeHtml(e.contents)}</p>
|
||||
</article>
|
||||
`}).join("");this.resultsContainer.innerHTML=i}checkFieldsForMatch(e,t){const n={inTitle:!1,inDesc:!1,inSection:!1,inContents:!1};return DEFAULT_CONFIG.search.fields.title&&this.containsTerm(e.searchableTitle,t)&&(n.inTitle=!0),DEFAULT_CONFIG.search.fields.description&&this.containsTerm(e.searchableDesc,t)&&(n.inDesc=!0),DEFAULT_CONFIG.search.fields.section&&this.containsTerm(e.searchableSection,t)&&(n.inSection=!0),DEFAULT_CONFIG.search.fields.contents&&this.containsTerm(e.searchableContents,t)&&(n.inContents=!0),!!(n.inTitle||n.inDesc||n.inSection||n.inContents)&&n}}const search=new FastSearch({searchInput:document.getElementById("search-input"),resultsContainer:document.getElementById("search-results"),json:`/index.json`})</script></div><aside aria-label="Scroll to Top"><button id=back-to-top type=button class="btn btn-lg btn-box-shadow">
|
||||
<i class="fas fa-angle-up"></i></button></aside></div><div id=mask class="d-none position-fixed w-100 h-100 z-1"></div></body></html>
|
53
public/about/index.html
Normal file
@ -0,0 +1,53 @@
|
||||
<!doctype html><head><link rel=stylesheet href=https://comprofix.com/css/main.min.f77a4050bafcd273d43d6737e174f344bd91a213d9bc92b097cb31fc7dbe1cb9.css></head><html lang=en><head><meta charset=utf-8><meta name=theme-color media="(prefers-color-scheme: light)" content="#f7f7f7"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#1b1b1e"><meta name=mobile-web-app-capable content="yes"><meta name=apple-mobile-web-app-status-bar-style content="black-translucent"><meta name=viewport content="width=device-width,user-scalable=no,initial-scale=1,shrink-to-fit=no,viewport-fit=cover"><meta property="og:url" content="https://comprofix.com/about/"><meta property="og:site_name" content="Comprofix"><meta property="og:title" content="About"><meta property="og:description" content="Chirpy is a blog theme originally based on Jekyll. Due to Jekyll’s design limitations, it does not natively support internationalization (i18n) and requires third-party plugins for i18n functionality. To enable i18n support for Chirpy without the hassle of relying on third-party plugins, the hugo-theme-chirpy project migrated the Chirpy theme to Hugo with minimal adaptations. All features of Chirpy are available in hugo-theme-chirpy (though some functionalities may operate differently within the Hugo framework).
|
||||
Follow the posts in the demo site to quickly set up a free personal blog!"><meta property="og:locale" content="en"><meta property="og:type" content="article"><meta property="article:published_time" content="2023-04-20T00:00:00+00:00"><meta property="article:modified_time" content="2023-04-20T00:00:00+00:00"><meta name=twitter:card content="summary"><meta name=twitter:title content="About"><meta name=twitter:description content="Chirpy is a blog theme originally based on Jekyll. Due to Jekyll’s design limitations, it does not natively support internationalization (i18n) and requires third-party plugins for i18n functionality. To enable i18n support for Chirpy without the hassle of relying on third-party plugins, the hugo-theme-chirpy project migrated the Chirpy theme to Hugo with minimal adaptations. All features of Chirpy are available in hugo-theme-chirpy (though some functionalities may operate differently within the Hugo framework).
|
||||
Follow the posts in the demo site to quickly set up a free personal blog!"><meta itemprop=name content="About"><meta itemprop=description content="Chirpy is a blog theme originally based on Jekyll. Due to Jekyll’s design limitations, it does not natively support internationalization (i18n) and requires third-party plugins for i18n functionality. To enable i18n support for Chirpy without the hassle of relying on third-party plugins, the hugo-theme-chirpy project migrated the Chirpy theme to Hugo with minimal adaptations. All features of Chirpy are available in hugo-theme-chirpy (though some functionalities may operate differently within the Hugo framework).
|
||||
Follow the posts in the demo site to quickly set up a free personal blog!"><meta itemprop=datePublished content="2023-04-20T00:00:00+00:00"><meta itemprop=dateModified content="2023-04-20T00:00:00+00:00"><meta itemprop=wordCount content="171"><title>About |
|
||||
Comprofix</title><link rel=apple-touch-icon sizes=180x180 href=/img/favicons/apple-touch-icon.png><link rel=icon type=image/png sizes=32x32 href=/img/favicons/favicon-32x32.png><link rel=icon type=image/png sizes=16x16 href=/img/favicons/favicon-16x16.png><link rel="shortcut icon" href=/img/favicons/favicon.ico><meta name=apple-mobile-web-app-title content="Comprofix"><meta name=application-name content="Comprofix"><meta name=msapplication-TileColor content="#da532c"><meta name=msapplication-config content="/img/favicons/browserconfig.xml"><meta name=theme-color content="#ffffff"><link rel=preconnect href=https://fonts.googleapis.com><link rel=dns-prefetch href=https://fonts.googleapis.com><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=dns-prefetch href=https://fonts.gstatic.com><link rel=preconnect href=https://cdn.jsdelivr.net><link rel=dns-prefetch href=https://cdn.jsdelivr.net><link rel=stylesheet href=https://comprofix.com/css/main.min.f77a4050bafcd273d43d6737e174f344bd91a213d9bc92b097cb31fc7dbe1cb9.css><link rel=stylesheet href="https://fonts.googleapis.com/css2?family=Lato:wght@300;400&family=Source+Sans+Pro:wght@400;600;700;900&display=swap"><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.7.1/css/all.min.css><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/tocbot@4.32.2/dist/tocbot.min.css><link rel=stylesheet href=/><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/glightbox@3.3.0/dist/css/glightbox.min.css><script src=/js/modules/theme.js></script><script src=https://cdn.jsdelivr.net/npm/glightbox@3.3.0/dist/js/glightbox.min.js></script><script src=https://cdn.jsdelivr.net/npm/clipboard@2.0.11/dist/clipboard.min.js></script><script src=https://cdn.jsdelivr.net/npm/tocbot@4.32.2/dist/tocbot.min.js></script><script defer src=/js/page.js></script></head><body><aside aria-label=Sidebar id=sidebar class="d-flex flex-column align-items-end"><header class=profile-wrapper><a href=/ id=avatar class=rounded-circle><img src=/img/man-logo.png width=112 height=112 alt=avatar onerror='this.style.display="none"'></a>
|
||||
<a class="site-title d-block" href=/>Comprofix</a><p class="site-subtitle fst-italic mb-0">Geek | Nerd | Systems Administrator | IT Specialist</p></header><nav class="flex-column flex-grow-1 w-100 ps-0"><ul class=nav><li class=nav-item><a href=/ class=nav-link><i class="fa-fw fas fa-house"></i>
|
||||
<span>HOME</span></a></li><li class=nav-item><a href=/categories/ class=nav-link><i class="fa-fw fas fa-stream"></i>
|
||||
<span>CATEGORIES</span></a></li><li class=nav-item><a href=/tags/ class=nav-link><i class="fa-fw fas fa-tags"></i>
|
||||
<span>TAGS</span></a></li><li class=nav-item><a href=/archives/ class=nav-link><i class="fa-fw fas fa-archive"></i>
|
||||
<span>ARCHIVES</span></a></li><li class="nav-item active"><a href=/about/ class=nav-link><i class="fa-fw fas fa-info-circle"></i>
|
||||
<span>ABOUT</span></a></li></ul></nav><div class="sidebar-bottom d-flex flex-wrap align-items-center w-100"><button type=button class="btn btn-link nav-link" aria-label="Switch Mode" id=mode-toggle>
|
||||
<i class="fas fa-adjust"></i>
|
||||
</button>
|
||||
<span class=icon-border></span>
|
||||
<a href=https://git.comprofix.com/mmckinnon aria-label=custom target=_blank rel="noopener noreferrer"><i class="fab fa-git-alt"></i>
|
||||
</a><a href=https://twitter.com/mckinnon81 aria-label=twitter target=_blank rel="noopener noreferrer"><i class="fab fa-twitter"></i>
|
||||
</a><a href=https://comprofix.com/index.xml aria-label=rss><i class="fas fa-rss"></i></a></div></aside><div id=main-wrapper class="d-flex justify-content-center"><div class="container d-flex flex-column px-xxl-5"><header id=topbar-wrapper class=flex-shrink-0 aria-label="Top Bar"><div id=topbar class="d-flex align-items-center justify-content-between px-lg-3 h-100"><nav id=breadcrumb aria-label=Breadcrumb><span><a href=/>Home</a>
|
||||
</span><span>About</span></nav><button type=button id=sidebar-trigger class="btn btn-link" aria-label=Sidebar>
|
||||
<i class="fas fa-bars fa-fw"></i></button><div id=topbar-title>About</div><button type=button id=search-trigger class="btn btn-link" aria-label=Search>
|
||||
<i class="fas fa-search fa-fw"></i>
|
||||
</button>
|
||||
<search id=search class="align-items-center ms-3 ms-lg-0"><i class="fas fa-search fa-fw"></i>
|
||||
<input class=form-control id=search-input type=search aria-label=search autocomplete=off placeholder=Search...>
|
||||
</search><button type=button class="btn btn-link text-decoration-none" id=search-cancel>Cancel</button></div></header><div class="row flex-grow-1"><main aria-label="Main Content" class="col-12 col-lg-11 col-xl-9 px-md-4"><article class=px-1><h1 class=dynamic-title>About</h1><div class=content><p><a href=https://github.com/cotes2020/jekyll-theme-chirpy>Chirpy</a> is a blog theme originally based on <a href=https://jekyllrb.com/>Jekyll</a>. Due to Jekyll’s design limitations, it does not natively support internationalization (i18n) and requires third-party plugins for i18n functionality. To enable i18n support for Chirpy without the hassle of relying on third-party plugins, the <a href=https://github.com/geekifan/hugo-theme-chirpy>hugo-theme-chirpy</a> project migrated the Chirpy theme to <a href=https://gohugo.io/>Hugo</a> with minimal adaptations. All features of Chirpy are available in hugo-theme-chirpy (though some functionalities may operate differently within the Hugo framework).</p><p>Follow the posts in the demo site to quickly set up a free personal blog!</p><h2 id=features id=features><span class=me-2>Features</span>
|
||||
<a href=#features class="anchor text-muted"><i class="fas fa-hashtag"></i></a></h2><ul><li><strong>Dark Mode</strong>: Enhanced readability in low-light environments.</li><li><strong>Multilingual UI:</strong> Easily switch between different languages.</li><li><strong>Efficient Post Organization:</strong> Use hierarchical categories, trending tags, recommended reading, and search functionalities.</li><li><strong>Optimized Layout:</strong> Includes TOC, syntax highlighting, prompts, and more.</li><li><strong>Rich Writing Extensions:</strong> Support for mathematical formulas, charts, flowcharts, and embedded media.</li><li><strong>Multiple Comment Systems:</strong> Choose from various commenting options.</li><li><strong>Web Analysis Tools:</strong> Integrated with multiple analytics tools.</li><li><strong>Modern Web Technologies:</strong> Built for SEO and web performance.</li><li><strong>RSS Feed Support:</strong> Keep your readers updated with RSS feeds.</li></ul></div></article></main><aside aria-label=Panel id=panel-wrapper class="col-xl-3 ps-2 text-muted"><div class=access><section id=access-lastmod><h2 class=panel-heading>Recently Updated</h2><ul class="content list-unstyled ps-0 pb-1 ms-1 mt-2"><li class="text-truncate lh-lg"><a href=/post/2024-09-21-websitedeployment/>Continuous Integration & Continuous Deployment</a></li><li class="text-truncate lh-lg"><a href=/post/2024-09-05-resetrestart/>Reset and Restart</a></li></ul></section><section><h2 class=panel-heading>Trending Tags</h2><div class="d-flex flex-wrap mt-3 mb-1 me-3"><a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/cd/>cd</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/ci/>ci</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-deployment/>continuous deployment</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-integration/>continuous integration</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/docker/>docker</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/git/>git</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/homelab/>homelab</a></div></section></div></aside></div><div class=row><div id=tail-wrapper class="col-12 col-lg-11 col-xl-9 px-md-4"><footer aria-label="Site Info" class="d-flex flex-column justify-content-center text-muted
|
||||
flex-lg-row justify-content-lg-between align-items-lg-center pb-lg-3"><p>©
|
||||
<time>2025</time>
|
||||
<a href=https://comprofix.com>Comprofix</a>.
|
||||
<span data-bs-toggle=tooltip data-bs-placement=top title="Except where otherwise noted, the blog posts on this site are licensed under the Creative Commons Attribution 4.0 International (CC BY 4.0) License by the author.">Some rights reserved.</span></p><p>Using the <a data-bs-toggle=tooltip data-bs-placement=top title=v1.0.2 href=https://github.com/geekifan/hugo-theme-chirpy target=_blank rel=noopener>Chirpy</a> theme for <a href=https://gohugo.io/ target=_blank rel=noopener>Hugo</a>.</p></footer></div></div><div id=search-result-wrapper class="d-flex justify-content-center d-none"><div class="col-11 content"><div id=search-hints><section><h2 class=panel-heading>Trending Tags</h2><div class="d-flex flex-wrap mt-3 mb-1 me-3"><a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/cd/>cd</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/ci/>ci</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-deployment/>continuous deployment</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-integration/>continuous integration</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/docker/>docker</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/git/>git</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/homelab/>homelab</a></div></section></div><div id=search-results class="d-flex flex-wrap justify-content-center text-muted mt-3"></div></div></div><script>const DEFAULT_CONFIG={search:{minChars:1,maxResults:5,fields:{title:!0,description:!0,section:!0,contents:!0},strictMode:!0}};class FastSearch{constructor({searchInput:e,resultsContainer:t,json:n,searchResultTemplate:s=null,noResultsText:o=null}){this.searchInput=e,this.resultsContainer=t,this.json=n,this.searchResultTemplate=s,this.noResultsText=o,this.init()}init(){this.loadSearchIndex(),this.searchInput.addEventListener("input",e=>{if(!this.searchIndex){this.resultsContainer.innerHTML='<li class="search-message">Loading search index...</li>';return}this.performSearch(this.searchInput.value)})}async loadSearchIndex(){try{const e=await fetch(this.json);if(!e.ok)throw new Error("Failed to load search index");const t=await e.json();this.searchIndex=t.map(e=>({...e,searchableTitle:e.title?.toLowerCase()||"",searchableDesc:e.desc?.toLowerCase()||"",searchableSection:e.section?.toLowerCase()||"",searchableContents:e.contents?.toLowerCase()||""}))}catch(e){console.error("Error loading search index:",e),this.resultsContainer.innerHTML='<li class="search-message">Error loading search index...</li>'}}escapeHtml(e){return e?e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"):""}containsTerm(e,t){return!!e&&!!t&&e.includes(t)}performSearch(e){if(e=e.toLowerCase().trim(),!e||!this.searchIndex||e.length<DEFAULT_CONFIG.search.minChars){this.resultsContainer.innerHTML="";return}const s=[e,...e.split(/\s+/).filter(e=>e.length>0)],t=[...new Set(s)],o=DEFAULT_CONFIG.search.strictMode,n=this.searchIndex.map(e=>{const s=this.checkFieldsForMatch(e,t[0]);if(o&&!s)return{item:e,score:0,matched:!1};let n=0,i=0,a=!1;t.forEach((t,s)=>{const r=s===0,o=this.checkFieldsForMatch(e,t);o&&(i++,o.inTitle&&(n+=r?10:5,a=!0),o.inDesc&&(n+=r?8:4),o.inSection&&(n+=r?6:3),o.inContents&&(n+=r?4:2))});const r=i/t.length,c=n*r*(a?1.5:1);return{item:e,score:c,matched:s}}).filter(e=>e.matched).sort((e,t)=>t.score-e.score).slice(0,DEFAULT_CONFIG.search.maxResults).map(e=>e.item);if(n.length===0){this.resultsContainer.innerHTML='<p class="mt-5">Oops! No results found.</p>';return}const i=n.map(e=>{let t="",n="";return e.categories&&(t=e.categories.join(", "),t=`<div class="me-sm-4"><i class="far fa-folder fa-fw"></i>${t}</div>`),e.tags&&(n=e.tags.join(", "),n=`<div><i class="fa fa-tag fa-fw"></i>${n}</div>`),`
|
||||
<article class="px-1 px-sm-2 px-lg-4 px-xl-0">
|
||||
<header>
|
||||
<h2><a href="${this.escapeHtml(e.permalink)}">${this.escapeHtml(e.title)}</a></h2>
|
||||
<div class="post-meta d-flex flex-column flex-sm-row text-muted mt-1 mb-1">
|
||||
${t}
|
||||
${n}
|
||||
</div>
|
||||
</header>
|
||||
<p>${this.escapeHtml(e.contents)}</p>
|
||||
</article>
|
||||
`}).join("");this.resultsContainer.innerHTML=i}checkFieldsForMatch(e,t){const n={inTitle:!1,inDesc:!1,inSection:!1,inContents:!1};return DEFAULT_CONFIG.search.fields.title&&this.containsTerm(e.searchableTitle,t)&&(n.inTitle=!0),DEFAULT_CONFIG.search.fields.description&&this.containsTerm(e.searchableDesc,t)&&(n.inDesc=!0),DEFAULT_CONFIG.search.fields.section&&this.containsTerm(e.searchableSection,t)&&(n.inSection=!0),DEFAULT_CONFIG.search.fields.contents&&this.containsTerm(e.searchableContents,t)&&(n.inContents=!0),!!(n.inTitle||n.inDesc||n.inSection||n.inContents)&&n}}const search=new FastSearch({searchInput:document.getElementById("search-input"),resultsContainer:document.getElementById("search-results"),json:`/index.json`})</script></div><aside aria-label="Scroll to Top"><button id=back-to-top type=button class="btn btn-lg btn-box-shadow">
|
||||
<i class="fas fa-angle-up"></i></button></aside></div><div id=mask class="d-none position-fixed w-100 h-100 z-1"></div></body></html>
|
53
public/archives/index.html
Normal file
@ -0,0 +1,53 @@
|
||||
<!doctype html><head><link rel=stylesheet href=https://comprofix.com/css/main.min.f77a4050bafcd273d43d6737e174f344bd91a213d9bc92b097cb31fc7dbe1cb9.css></head><html lang=en><head><meta charset=utf-8><meta name=theme-color media="(prefers-color-scheme: light)" content="#f7f7f7"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#1b1b1e"><meta name=mobile-web-app-capable content="yes"><meta name=apple-mobile-web-app-status-bar-style content="black-translucent"><meta name=viewport content="width=device-width,user-scalable=no,initial-scale=1,shrink-to-fit=no,viewport-fit=cover"><meta property="og:url" content="https://comprofix.com/archives/"><meta property="og:site_name" content="Comprofix"><meta property="og:title" content="Archives"><meta property="og:locale" content="en"><meta property="og:type" content="article"><meta name=twitter:card content="summary"><meta name=twitter:title content="Archives"><meta itemprop=name content="Archives"><title>Archives |
|
||||
Comprofix</title><link rel=apple-touch-icon sizes=180x180 href=/img/favicons/apple-touch-icon.png><link rel=icon type=image/png sizes=32x32 href=/img/favicons/favicon-32x32.png><link rel=icon type=image/png sizes=16x16 href=/img/favicons/favicon-16x16.png><link rel="shortcut icon" href=/img/favicons/favicon.ico><meta name=apple-mobile-web-app-title content="Comprofix"><meta name=application-name content="Comprofix"><meta name=msapplication-TileColor content="#da532c"><meta name=msapplication-config content="/img/favicons/browserconfig.xml"><meta name=theme-color content="#ffffff"><link rel=preconnect href=https://fonts.googleapis.com><link rel=dns-prefetch href=https://fonts.googleapis.com><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=dns-prefetch href=https://fonts.gstatic.com><link rel=preconnect href=https://cdn.jsdelivr.net><link rel=dns-prefetch href=https://cdn.jsdelivr.net><link rel=stylesheet href=https://comprofix.com/css/main.min.f77a4050bafcd273d43d6737e174f344bd91a213d9bc92b097cb31fc7dbe1cb9.css><link rel=stylesheet href="https://fonts.googleapis.com/css2?family=Lato:wght@300;400&family=Source+Sans+Pro:wght@400;600;700;900&display=swap"><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.7.1/css/all.min.css><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/tocbot@4.32.2/dist/tocbot.min.css><link rel=stylesheet href=/><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/glightbox@3.3.0/dist/css/glightbox.min.css><script src=/js/modules/theme.js></script><script src=https://cdn.jsdelivr.net/npm/dayjs@1.11.13/dayjs.min.js></script><script src=https://cdn.jsdelivr.net/npm/dayjs@1.11.13/locale/en.js></script><script src=https://cdn.jsdelivr.net/npm/dayjs@1.11.13/plugin/relativeTime.js></script><script src=https://cdn.jsdelivr.net/npm/dayjs@1.11.13/plugin/localizedFormat.js></script><script defer src=/js/misc.js></script></head><body><aside aria-label=Sidebar id=sidebar class="d-flex flex-column align-items-end"><header class=profile-wrapper><a href=/ id=avatar class=rounded-circle><img src=/img/man-logo.png width=112 height=112 alt=avatar onerror='this.style.display="none"'></a>
|
||||
<a class="site-title d-block" href=/>Comprofix</a><p class="site-subtitle fst-italic mb-0">Geek | Nerd | Systems Administrator | IT Specialist</p></header><nav class="flex-column flex-grow-1 w-100 ps-0"><ul class=nav><li class=nav-item><a href=/ class=nav-link><i class="fa-fw fas fa-house"></i>
|
||||
<span>HOME</span></a></li><li class=nav-item><a href=/categories/ class=nav-link><i class="fa-fw fas fa-stream"></i>
|
||||
<span>CATEGORIES</span></a></li><li class=nav-item><a href=/tags/ class=nav-link><i class="fa-fw fas fa-tags"></i>
|
||||
<span>TAGS</span></a></li><li class="nav-item active"><a href=/archives/ class=nav-link><i class="fa-fw fas fa-archive"></i>
|
||||
<span>ARCHIVES</span></a></li><li class=nav-item><a href=/about/ class=nav-link><i class="fa-fw fas fa-info-circle"></i>
|
||||
<span>ABOUT</span></a></li></ul></nav><div class="sidebar-bottom d-flex flex-wrap align-items-center w-100"><button type=button class="btn btn-link nav-link" aria-label="Switch Mode" id=mode-toggle>
|
||||
<i class="fas fa-adjust"></i>
|
||||
</button>
|
||||
<span class=icon-border></span>
|
||||
<a href=https://git.comprofix.com/mmckinnon aria-label=custom target=_blank rel="noopener noreferrer"><i class="fab fa-git-alt"></i>
|
||||
</a><a href=https://twitter.com/mckinnon81 aria-label=twitter target=_blank rel="noopener noreferrer"><i class="fab fa-twitter"></i>
|
||||
</a><a href=https://comprofix.com/index.xml aria-label=rss><i class="fas fa-rss"></i></a></div></aside><div id=main-wrapper class="d-flex justify-content-center"><div class="container d-flex flex-column px-xxl-5"><header id=topbar-wrapper class=flex-shrink-0 aria-label="Top Bar"><div id=topbar class="d-flex align-items-center justify-content-between px-lg-3 h-100"><nav id=breadcrumb aria-label=Breadcrumb><span><a href=/>Home</a>
|
||||
</span><span>Archives</span></nav><button type=button id=sidebar-trigger class="btn btn-link" aria-label=Sidebar>
|
||||
<i class="fas fa-bars fa-fw"></i></button><div id=topbar-title>Archives</div><button type=button id=search-trigger class="btn btn-link" aria-label=Search>
|
||||
<i class="fas fa-search fa-fw"></i>
|
||||
</button>
|
||||
<search id=search class="align-items-center ms-3 ms-lg-0"><i class="fas fa-search fa-fw"></i>
|
||||
<input class=form-control id=search-input type=search aria-label=search autocomplete=off placeholder=Search...>
|
||||
</search><button type=button class="btn btn-link text-decoration-none" id=search-cancel>Cancel</button></div></header><div class="row flex-grow-1"><main aria-label="Main Content" class="col-12 col-lg-11 col-xl-9 px-md-4"><article class=px-1><h1 class=dynamic-title>Archives</h1><div class=content><div id=archives class=pl-xl-3><time class="year lead d-block">2024</time><ul class=list-unstyled><li><span class="date day" data-ts=1726876800 data-df=DD>21</span>
|
||||
<span class="date month small text-muted ms-1" data-ts=1726876800 data-df=MMM>%b
|
||||
</span><a href=/post/2024-09-21-websitedeployment/>Continuous Integration & Continuous Deployment</a></li><li><span class="date day" data-ts=1725494400 data-df=DD>05</span>
|
||||
<span class="date month small text-muted ms-1" data-ts=1725494400 data-df=MMM>%b
|
||||
</span><a href=/post/2024-09-05-resetrestart/>Reset and Restart</a></li></ul></div></div></article></main><aside aria-label=Panel id=panel-wrapper class="col-xl-3 ps-2 text-muted"><div class=access><section id=access-lastmod><h2 class=panel-heading>Recently Updated</h2><ul class="content list-unstyled ps-0 pb-1 ms-1 mt-2"><li class="text-truncate lh-lg"><a href=/post/2024-09-21-websitedeployment/>Continuous Integration & Continuous Deployment</a></li><li class="text-truncate lh-lg"><a href=/post/2024-09-05-resetrestart/>Reset and Restart</a></li></ul></section><section><h2 class=panel-heading>Trending Tags</h2><div class="d-flex flex-wrap mt-3 mb-1 me-3"><a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/cd/>cd</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/ci/>ci</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-deployment/>continuous deployment</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-integration/>continuous integration</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/docker/>docker</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/git/>git</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/homelab/>homelab</a></div></section></div></aside></div><div class=row><div id=tail-wrapper class="col-12 col-lg-11 col-xl-9 px-md-4"><footer aria-label="Site Info" class="d-flex flex-column justify-content-center text-muted
|
||||
flex-lg-row justify-content-lg-between align-items-lg-center pb-lg-3"><p>©
|
||||
<time>2025</time>
|
||||
<a href=https://comprofix.com>Comprofix</a>.
|
||||
<span data-bs-toggle=tooltip data-bs-placement=top title="Except where otherwise noted, the blog posts on this site are licensed under the Creative Commons Attribution 4.0 International (CC BY 4.0) License by the author.">Some rights reserved.</span></p><p>Using the <a data-bs-toggle=tooltip data-bs-placement=top title=v1.0.2 href=https://github.com/geekifan/hugo-theme-chirpy target=_blank rel=noopener>Chirpy</a> theme for <a href=https://gohugo.io/ target=_blank rel=noopener>Hugo</a>.</p></footer></div></div><div id=search-result-wrapper class="d-flex justify-content-center d-none"><div class="col-11 content"><div id=search-hints><section><h2 class=panel-heading>Trending Tags</h2><div class="d-flex flex-wrap mt-3 mb-1 me-3"><a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/cd/>cd</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/ci/>ci</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-deployment/>continuous deployment</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-integration/>continuous integration</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/docker/>docker</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/git/>git</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/homelab/>homelab</a></div></section></div><div id=search-results class="d-flex flex-wrap justify-content-center text-muted mt-3"></div></div></div><script>const DEFAULT_CONFIG={search:{minChars:1,maxResults:5,fields:{title:!0,description:!0,section:!0,contents:!0},strictMode:!0}};class FastSearch{constructor({searchInput:e,resultsContainer:t,json:n,searchResultTemplate:s=null,noResultsText:o=null}){this.searchInput=e,this.resultsContainer=t,this.json=n,this.searchResultTemplate=s,this.noResultsText=o,this.init()}init(){this.loadSearchIndex(),this.searchInput.addEventListener("input",e=>{if(!this.searchIndex){this.resultsContainer.innerHTML='<li class="search-message">Loading search index...</li>';return}this.performSearch(this.searchInput.value)})}async loadSearchIndex(){try{const e=await fetch(this.json);if(!e.ok)throw new Error("Failed to load search index");const t=await e.json();this.searchIndex=t.map(e=>({...e,searchableTitle:e.title?.toLowerCase()||"",searchableDesc:e.desc?.toLowerCase()||"",searchableSection:e.section?.toLowerCase()||"",searchableContents:e.contents?.toLowerCase()||""}))}catch(e){console.error("Error loading search index:",e),this.resultsContainer.innerHTML='<li class="search-message">Error loading search index...</li>'}}escapeHtml(e){return e?e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"):""}containsTerm(e,t){return!!e&&!!t&&e.includes(t)}performSearch(e){if(e=e.toLowerCase().trim(),!e||!this.searchIndex||e.length<DEFAULT_CONFIG.search.minChars){this.resultsContainer.innerHTML="";return}const s=[e,...e.split(/\s+/).filter(e=>e.length>0)],t=[...new Set(s)],o=DEFAULT_CONFIG.search.strictMode,n=this.searchIndex.map(e=>{const s=this.checkFieldsForMatch(e,t[0]);if(o&&!s)return{item:e,score:0,matched:!1};let n=0,i=0,a=!1;t.forEach((t,s)=>{const r=s===0,o=this.checkFieldsForMatch(e,t);o&&(i++,o.inTitle&&(n+=r?10:5,a=!0),o.inDesc&&(n+=r?8:4),o.inSection&&(n+=r?6:3),o.inContents&&(n+=r?4:2))});const r=i/t.length,c=n*r*(a?1.5:1);return{item:e,score:c,matched:s}}).filter(e=>e.matched).sort((e,t)=>t.score-e.score).slice(0,DEFAULT_CONFIG.search.maxResults).map(e=>e.item);if(n.length===0){this.resultsContainer.innerHTML='<p class="mt-5">Oops! No results found.</p>';return}const i=n.map(e=>{let t="",n="";return e.categories&&(t=e.categories.join(", "),t=`<div class="me-sm-4"><i class="far fa-folder fa-fw"></i>${t}</div>`),e.tags&&(n=e.tags.join(", "),n=`<div><i class="fa fa-tag fa-fw"></i>${n}</div>`),`
|
||||
<article class="px-1 px-sm-2 px-lg-4 px-xl-0">
|
||||
<header>
|
||||
<h2><a href="${this.escapeHtml(e.permalink)}">${this.escapeHtml(e.title)}</a></h2>
|
||||
<div class="post-meta d-flex flex-column flex-sm-row text-muted mt-1 mb-1">
|
||||
${t}
|
||||
${n}
|
||||
</div>
|
||||
</header>
|
||||
<p>${this.escapeHtml(e.contents)}</p>
|
||||
</article>
|
||||
`}).join("");this.resultsContainer.innerHTML=i}checkFieldsForMatch(e,t){const n={inTitle:!1,inDesc:!1,inSection:!1,inContents:!1};return DEFAULT_CONFIG.search.fields.title&&this.containsTerm(e.searchableTitle,t)&&(n.inTitle=!0),DEFAULT_CONFIG.search.fields.description&&this.containsTerm(e.searchableDesc,t)&&(n.inDesc=!0),DEFAULT_CONFIG.search.fields.section&&this.containsTerm(e.searchableSection,t)&&(n.inSection=!0),DEFAULT_CONFIG.search.fields.contents&&this.containsTerm(e.searchableContents,t)&&(n.inContents=!0),!!(n.inTitle||n.inDesc||n.inSection||n.inContents)&&n}}const search=new FastSearch({searchInput:document.getElementById("search-input"),resultsContainer:document.getElementById("search-results"),json:`/index.json`})</script></div><aside aria-label="Scroll to Top"><button id=back-to-top type=button class="btn btn-lg btn-box-shadow">
|
||||
<i class="fas fa-angle-up"></i></button></aside></div><div id=mask class="d-none position-fixed w-100 h-100 z-1"></div></body></html>
|
54
public/categories/gitea/index.html
Normal file
@ -0,0 +1,54 @@
|
||||
<!doctype html><head><link rel=stylesheet href=https://comprofix.com/css/main.min.f77a4050bafcd273d43d6737e174f344bd91a213d9bc92b097cb31fc7dbe1cb9.css></head><html lang=en><head><meta charset=utf-8><meta name=theme-color media="(prefers-color-scheme: light)" content="#f7f7f7"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#1b1b1e"><meta name=mobile-web-app-capable content="yes"><meta name=apple-mobile-web-app-status-bar-style content="black-translucent"><meta name=viewport content="width=device-width,user-scalable=no,initial-scale=1,shrink-to-fit=no,viewport-fit=cover"><meta property="og:url" content="https://comprofix.com/categories/gitea/"><meta property="og:site_name" content="Comprofix"><meta property="og:title" content="Gitea"><meta property="og:locale" content="en"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Gitea"><meta itemprop=name content="Gitea"><meta itemprop=datePublished content="2024-09-21T00:00:00+00:00"><meta itemprop=dateModified content="2024-09-21T00:00:00+00:00"><title>Gitea |
|
||||
Comprofix</title><link rel=apple-touch-icon sizes=180x180 href=/img/favicons/apple-touch-icon.png><link rel=icon type=image/png sizes=32x32 href=/img/favicons/favicon-32x32.png><link rel=icon type=image/png sizes=16x16 href=/img/favicons/favicon-16x16.png><link rel="shortcut icon" href=/img/favicons/favicon.ico><meta name=apple-mobile-web-app-title content="Comprofix"><meta name=application-name content="Comprofix"><meta name=msapplication-TileColor content="#da532c"><meta name=msapplication-config content="/img/favicons/browserconfig.xml"><meta name=theme-color content="#ffffff"><link rel=preconnect href=https://fonts.googleapis.com><link rel=dns-prefetch href=https://fonts.googleapis.com><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=dns-prefetch href=https://fonts.gstatic.com><link rel=preconnect href=https://cdn.jsdelivr.net><link rel=dns-prefetch href=https://cdn.jsdelivr.net><link rel=stylesheet href=https://comprofix.com/css/main.min.f77a4050bafcd273d43d6737e174f344bd91a213d9bc92b097cb31fc7dbe1cb9.css><link rel=stylesheet href="https://fonts.googleapis.com/css2?family=Lato:wght@300;400&family=Source+Sans+Pro:wght@400;600;700;900&display=swap"><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.7.1/css/all.min.css><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/tocbot@4.32.2/dist/tocbot.min.css><script src=/js/modules/theme.js></script><script src=https://cdn.jsdelivr.net/npm/dayjs@1.11.13/dayjs.min.js></script><script src=https://cdn.jsdelivr.net/npm/dayjs@1.11.13/locale/en.js></script><script src=https://cdn.jsdelivr.net/npm/dayjs@1.11.13/plugin/relativeTime.js></script><script src=https://cdn.jsdelivr.net/npm/dayjs@1.11.13/plugin/localizedFormat.js></script><script defer src=/js/misc.js></script></head><body><aside aria-label=Sidebar id=sidebar class="d-flex flex-column align-items-end"><header class=profile-wrapper><a href=/ id=avatar class=rounded-circle><img src=/img/man-logo.png width=112 height=112 alt=avatar onerror='this.style.display="none"'></a>
|
||||
<a class="site-title d-block" href=/>Comprofix</a><p class="site-subtitle fst-italic mb-0">Geek | Nerd | Systems Administrator | IT Specialist</p></header><nav class="flex-column flex-grow-1 w-100 ps-0"><ul class=nav><li class=nav-item><a href=/ class=nav-link><i class="fa-fw fas fa-house"></i>
|
||||
<span>HOME</span></a></li><li class=nav-item><a href=/categories/ class=nav-link><i class="fa-fw fas fa-stream"></i>
|
||||
<span>CATEGORIES</span></a></li><li class=nav-item><a href=/tags/ class=nav-link><i class="fa-fw fas fa-tags"></i>
|
||||
<span>TAGS</span></a></li><li class=nav-item><a href=/archives/ class=nav-link><i class="fa-fw fas fa-archive"></i>
|
||||
<span>ARCHIVES</span></a></li><li class=nav-item><a href=/about/ class=nav-link><i class="fa-fw fas fa-info-circle"></i>
|
||||
<span>ABOUT</span></a></li></ul></nav><div class="sidebar-bottom d-flex flex-wrap align-items-center w-100"><button type=button class="btn btn-link nav-link" aria-label="Switch Mode" id=mode-toggle>
|
||||
<i class="fas fa-adjust"></i>
|
||||
</button>
|
||||
<span class=icon-border></span>
|
||||
<a href=https://git.comprofix.com/mmckinnon aria-label=custom target=_blank rel="noopener noreferrer"><i class="fab fa-git-alt"></i>
|
||||
</a><a href=https://twitter.com/mckinnon81 aria-label=twitter target=_blank rel="noopener noreferrer"><i class="fab fa-twitter"></i>
|
||||
</a><a href=https://comprofix.com/index.xml aria-label=rss><i class="fas fa-rss"></i></a></div></aside><div id=main-wrapper class="d-flex justify-content-center"><div class="container d-flex flex-column px-xxl-5"><header id=topbar-wrapper class=flex-shrink-0 aria-label="Top Bar"><div id=topbar class="d-flex align-items-center justify-content-between px-lg-3 h-100"><nav id=breadcrumb aria-label=Breadcrumb><span><a href=/>Home</a>
|
||||
</span><span><a href=https://comprofix.com/categories/>Categories</a></span>
|
||||
<span>gitea</span></nav><button type=button id=sidebar-trigger class="btn btn-link" aria-label=Sidebar>
|
||||
<i class="fas fa-bars fa-fw"></i></button><div id=topbar-title></div><button type=button id=search-trigger class="btn btn-link" aria-label=Search>
|
||||
<i class="fas fa-search fa-fw"></i>
|
||||
</button>
|
||||
<search id=search class="align-items-center ms-3 ms-lg-0"><i class="fas fa-search fa-fw"></i>
|
||||
<input class=form-control id=search-input type=search aria-label=search autocomplete=off placeholder=Search...>
|
||||
</search><button type=button class="btn btn-link text-decoration-none" id=search-cancel>Cancel</button></div></header><div class="row flex-grow-1"><main aria-label="Main Content" class="col-12 col-lg-11 col-xl-9 px-md-4"><div id=page-category><h1 class=ps-lg-2><i class="far fa-folder-open fa-fw text-muted"></i>
|
||||
Gitea
|
||||
<span class="lead text-muted ps-2">1</span></h1><ul class="content ps-0"><li class="d-flex justify-content-between px-md-3"><a href=/post/2024-09-21-websitedeployment/>Continuous Integration & Continuous Deployment</a>
|
||||
<span class="dash flex-grow-1"></span>
|
||||
<span class="text-muted small text-nowrap">Sep 21, 2024</span></li></ul></div></main><aside aria-label=Panel id=panel-wrapper class="col-xl-3 ps-2 text-muted"><div class=access><section id=access-lastmod><h2 class=panel-heading>Recently Updated</h2><ul class="content list-unstyled ps-0 pb-1 ms-1 mt-2"><li class="text-truncate lh-lg"><a href=/post/2024-09-21-websitedeployment/>Continuous Integration & Continuous Deployment</a></li><li class="text-truncate lh-lg"><a href=/post/2024-09-05-resetrestart/>Reset and Restart</a></li></ul></section><section><h2 class=panel-heading>Trending Tags</h2><div class="d-flex flex-wrap mt-3 mb-1 me-3"><a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/cd/>cd</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/ci/>ci</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-deployment/>continuous deployment</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-integration/>continuous integration</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/docker/>docker</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/git/>git</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/homelab/>homelab</a></div></section></div></aside></div><div class=row><div id=tail-wrapper class="col-12 col-lg-11 col-xl-9 px-md-4"><footer aria-label="Site Info" class="d-flex flex-column justify-content-center text-muted
|
||||
flex-lg-row justify-content-lg-between align-items-lg-center pb-lg-3"><p>©
|
||||
<time>2025</time>
|
||||
<a href=https://comprofix.com>Comprofix</a>.
|
||||
<span data-bs-toggle=tooltip data-bs-placement=top title="Except where otherwise noted, the blog posts on this site are licensed under the Creative Commons Attribution 4.0 International (CC BY 4.0) License by the author.">Some rights reserved.</span></p><p>Using the <a data-bs-toggle=tooltip data-bs-placement=top title=v1.0.2 href=https://github.com/geekifan/hugo-theme-chirpy target=_blank rel=noopener>Chirpy</a> theme for <a href=https://gohugo.io/ target=_blank rel=noopener>Hugo</a>.</p></footer></div></div><div id=search-result-wrapper class="d-flex justify-content-center d-none"><div class="col-11 content"><div id=search-hints><section><h2 class=panel-heading>Trending Tags</h2><div class="d-flex flex-wrap mt-3 mb-1 me-3"><a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/cd/>cd</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/ci/>ci</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-deployment/>continuous deployment</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-integration/>continuous integration</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/docker/>docker</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/git/>git</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/homelab/>homelab</a></div></section></div><div id=search-results class="d-flex flex-wrap justify-content-center text-muted mt-3"></div></div></div><script>const DEFAULT_CONFIG={search:{minChars:1,maxResults:5,fields:{title:!0,description:!0,section:!0,contents:!0},strictMode:!0}};class FastSearch{constructor({searchInput:e,resultsContainer:t,json:n,searchResultTemplate:s=null,noResultsText:o=null}){this.searchInput=e,this.resultsContainer=t,this.json=n,this.searchResultTemplate=s,this.noResultsText=o,this.init()}init(){this.loadSearchIndex(),this.searchInput.addEventListener("input",e=>{if(!this.searchIndex){this.resultsContainer.innerHTML='<li class="search-message">Loading search index...</li>';return}this.performSearch(this.searchInput.value)})}async loadSearchIndex(){try{const e=await fetch(this.json);if(!e.ok)throw new Error("Failed to load search index");const t=await e.json();this.searchIndex=t.map(e=>({...e,searchableTitle:e.title?.toLowerCase()||"",searchableDesc:e.desc?.toLowerCase()||"",searchableSection:e.section?.toLowerCase()||"",searchableContents:e.contents?.toLowerCase()||""}))}catch(e){console.error("Error loading search index:",e),this.resultsContainer.innerHTML='<li class="search-message">Error loading search index...</li>'}}escapeHtml(e){return e?e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"):""}containsTerm(e,t){return!!e&&!!t&&e.includes(t)}performSearch(e){if(e=e.toLowerCase().trim(),!e||!this.searchIndex||e.length<DEFAULT_CONFIG.search.minChars){this.resultsContainer.innerHTML="";return}const s=[e,...e.split(/\s+/).filter(e=>e.length>0)],t=[...new Set(s)],o=DEFAULT_CONFIG.search.strictMode,n=this.searchIndex.map(e=>{const s=this.checkFieldsForMatch(e,t[0]);if(o&&!s)return{item:e,score:0,matched:!1};let n=0,i=0,a=!1;t.forEach((t,s)=>{const r=s===0,o=this.checkFieldsForMatch(e,t);o&&(i++,o.inTitle&&(n+=r?10:5,a=!0),o.inDesc&&(n+=r?8:4),o.inSection&&(n+=r?6:3),o.inContents&&(n+=r?4:2))});const r=i/t.length,c=n*r*(a?1.5:1);return{item:e,score:c,matched:s}}).filter(e=>e.matched).sort((e,t)=>t.score-e.score).slice(0,DEFAULT_CONFIG.search.maxResults).map(e=>e.item);if(n.length===0){this.resultsContainer.innerHTML='<p class="mt-5">Oops! No results found.</p>';return}const i=n.map(e=>{let t="",n="";return e.categories&&(t=e.categories.join(", "),t=`<div class="me-sm-4"><i class="far fa-folder fa-fw"></i>${t}</div>`),e.tags&&(n=e.tags.join(", "),n=`<div><i class="fa fa-tag fa-fw"></i>${n}</div>`),`
|
||||
<article class="px-1 px-sm-2 px-lg-4 px-xl-0">
|
||||
<header>
|
||||
<h2><a href="${this.escapeHtml(e.permalink)}">${this.escapeHtml(e.title)}</a></h2>
|
||||
<div class="post-meta d-flex flex-column flex-sm-row text-muted mt-1 mb-1">
|
||||
${t}
|
||||
${n}
|
||||
</div>
|
||||
</header>
|
||||
<p>${this.escapeHtml(e.contents)}</p>
|
||||
</article>
|
||||
`}).join("");this.resultsContainer.innerHTML=i}checkFieldsForMatch(e,t){const n={inTitle:!1,inDesc:!1,inSection:!1,inContents:!1};return DEFAULT_CONFIG.search.fields.title&&this.containsTerm(e.searchableTitle,t)&&(n.inTitle=!0),DEFAULT_CONFIG.search.fields.description&&this.containsTerm(e.searchableDesc,t)&&(n.inDesc=!0),DEFAULT_CONFIG.search.fields.section&&this.containsTerm(e.searchableSection,t)&&(n.inSection=!0),DEFAULT_CONFIG.search.fields.contents&&this.containsTerm(e.searchableContents,t)&&(n.inContents=!0),!!(n.inTitle||n.inDesc||n.inSection||n.inContents)&&n}}const search=new FastSearch({searchInput:document.getElementById("search-input"),resultsContainer:document.getElementById("search-results"),json:`/index.json`})</script></div><aside aria-label="Scroll to Top"><button id=back-to-top type=button class="btn btn-lg btn-box-shadow">
|
||||
<i class="fas fa-angle-up"></i></button></aside></div><div id=mask class="d-none position-fixed w-100 h-100 z-1"></div></body></html>
|
8
public/categories/gitea/index.xml
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Gitea on Comprofix</title><link>https://comprofix.com/categories/gitea/</link><description>Recent content in Gitea on Comprofix</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sat, 21 Sep 2024 00:00:00 +0000</lastBuildDate><atom:link href="https://comprofix.com/categories/gitea/index.xml" rel="self" type="application/rss+xml"/><item><title>Continuous Integration & Continuous Deployment</title><link>https://comprofix.com/post/2024-09-21-websitedeployment/</link><pubDate>Sat, 21 Sep 2024 00:00:00 +0000</pubDate><guid>https://comprofix.com/post/2024-09-21-websitedeployment/</guid><description><p>Since the reset of the website, I have been working on getting it to auto build and deploy using <a href="https://docs.gitea.com/usage/actions/overview">Gitea Actions</a>. Which is similar and compatible to <a href="https://github.com/features/actions">GitHub Actions</a></p>
|
||||
<p>Before implementing the action it was a manual process which required using docker commands to login, build and push the image to the container registry.</p>
|
||||
<h3 id="why-use-cicd" id=why-use-cicd>
|
||||
|
||||
<span class="me-2">Why use CI/CD?</span>
|
||||
<a href="#why-use-cicd" class="anchor text-muted"><i class="fas fa-hashtag"></i></a>
|
||||
|
||||
</h3><p>It takes the manual process steps away and does them for you, helping you to avoid missing any steps and avoiding errors. This also makes the interaction seamless and automated.</p></description></item></channel></rss>
|
56
public/categories/homelab/index.html
Normal file
@ -0,0 +1,56 @@
|
||||
<!doctype html><head><link rel=stylesheet href=https://comprofix.com/css/main.min.f77a4050bafcd273d43d6737e174f344bd91a213d9bc92b097cb31fc7dbe1cb9.css></head><html lang=en><head><meta charset=utf-8><meta name=theme-color media="(prefers-color-scheme: light)" content="#f7f7f7"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#1b1b1e"><meta name=mobile-web-app-capable content="yes"><meta name=apple-mobile-web-app-status-bar-style content="black-translucent"><meta name=viewport content="width=device-width,user-scalable=no,initial-scale=1,shrink-to-fit=no,viewport-fit=cover"><meta property="og:url" content="https://comprofix.com/categories/homelab/"><meta property="og:site_name" content="Comprofix"><meta property="og:title" content="Homelab"><meta property="og:locale" content="en"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Homelab"><meta itemprop=name content="Homelab"><meta itemprop=datePublished content="2024-09-21T00:00:00+00:00"><meta itemprop=dateModified content="2024-09-21T00:00:00+00:00"><title>Homelab |
|
||||
Comprofix</title><link rel=apple-touch-icon sizes=180x180 href=/img/favicons/apple-touch-icon.png><link rel=icon type=image/png sizes=32x32 href=/img/favicons/favicon-32x32.png><link rel=icon type=image/png sizes=16x16 href=/img/favicons/favicon-16x16.png><link rel="shortcut icon" href=/img/favicons/favicon.ico><meta name=apple-mobile-web-app-title content="Comprofix"><meta name=application-name content="Comprofix"><meta name=msapplication-TileColor content="#da532c"><meta name=msapplication-config content="/img/favicons/browserconfig.xml"><meta name=theme-color content="#ffffff"><link rel=preconnect href=https://fonts.googleapis.com><link rel=dns-prefetch href=https://fonts.googleapis.com><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=dns-prefetch href=https://fonts.gstatic.com><link rel=preconnect href=https://cdn.jsdelivr.net><link rel=dns-prefetch href=https://cdn.jsdelivr.net><link rel=stylesheet href=https://comprofix.com/css/main.min.f77a4050bafcd273d43d6737e174f344bd91a213d9bc92b097cb31fc7dbe1cb9.css><link rel=stylesheet href="https://fonts.googleapis.com/css2?family=Lato:wght@300;400&family=Source+Sans+Pro:wght@400;600;700;900&display=swap"><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.7.1/css/all.min.css><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/tocbot@4.32.2/dist/tocbot.min.css><script src=/js/modules/theme.js></script><script src=https://cdn.jsdelivr.net/npm/dayjs@1.11.13/dayjs.min.js></script><script src=https://cdn.jsdelivr.net/npm/dayjs@1.11.13/locale/en.js></script><script src=https://cdn.jsdelivr.net/npm/dayjs@1.11.13/plugin/relativeTime.js></script><script src=https://cdn.jsdelivr.net/npm/dayjs@1.11.13/plugin/localizedFormat.js></script><script defer src=/js/misc.js></script></head><body><aside aria-label=Sidebar id=sidebar class="d-flex flex-column align-items-end"><header class=profile-wrapper><a href=/ id=avatar class=rounded-circle><img src=/img/man-logo.png width=112 height=112 alt=avatar onerror='this.style.display="none"'></a>
|
||||
<a class="site-title d-block" href=/>Comprofix</a><p class="site-subtitle fst-italic mb-0">Geek | Nerd | Systems Administrator | IT Specialist</p></header><nav class="flex-column flex-grow-1 w-100 ps-0"><ul class=nav><li class=nav-item><a href=/ class=nav-link><i class="fa-fw fas fa-house"></i>
|
||||
<span>HOME</span></a></li><li class=nav-item><a href=/categories/ class=nav-link><i class="fa-fw fas fa-stream"></i>
|
||||
<span>CATEGORIES</span></a></li><li class=nav-item><a href=/tags/ class=nav-link><i class="fa-fw fas fa-tags"></i>
|
||||
<span>TAGS</span></a></li><li class=nav-item><a href=/archives/ class=nav-link><i class="fa-fw fas fa-archive"></i>
|
||||
<span>ARCHIVES</span></a></li><li class=nav-item><a href=/about/ class=nav-link><i class="fa-fw fas fa-info-circle"></i>
|
||||
<span>ABOUT</span></a></li></ul></nav><div class="sidebar-bottom d-flex flex-wrap align-items-center w-100"><button type=button class="btn btn-link nav-link" aria-label="Switch Mode" id=mode-toggle>
|
||||
<i class="fas fa-adjust"></i>
|
||||
</button>
|
||||
<span class=icon-border></span>
|
||||
<a href=https://git.comprofix.com/mmckinnon aria-label=custom target=_blank rel="noopener noreferrer"><i class="fab fa-git-alt"></i>
|
||||
</a><a href=https://twitter.com/mckinnon81 aria-label=twitter target=_blank rel="noopener noreferrer"><i class="fab fa-twitter"></i>
|
||||
</a><a href=https://comprofix.com/index.xml aria-label=rss><i class="fas fa-rss"></i></a></div></aside><div id=main-wrapper class="d-flex justify-content-center"><div class="container d-flex flex-column px-xxl-5"><header id=topbar-wrapper class=flex-shrink-0 aria-label="Top Bar"><div id=topbar class="d-flex align-items-center justify-content-between px-lg-3 h-100"><nav id=breadcrumb aria-label=Breadcrumb><span><a href=/>Home</a>
|
||||
</span><span><a href=https://comprofix.com/categories/>Categories</a></span>
|
||||
<span>homelab</span></nav><button type=button id=sidebar-trigger class="btn btn-link" aria-label=Sidebar>
|
||||
<i class="fas fa-bars fa-fw"></i></button><div id=topbar-title></div><button type=button id=search-trigger class="btn btn-link" aria-label=Search>
|
||||
<i class="fas fa-search fa-fw"></i>
|
||||
</button>
|
||||
<search id=search class="align-items-center ms-3 ms-lg-0"><i class="fas fa-search fa-fw"></i>
|
||||
<input class=form-control id=search-input type=search aria-label=search autocomplete=off placeholder=Search...>
|
||||
</search><button type=button class="btn btn-link text-decoration-none" id=search-cancel>Cancel</button></div></header><div class="row flex-grow-1"><main aria-label="Main Content" class="col-12 col-lg-11 col-xl-9 px-md-4"><div id=page-category><h1 class=ps-lg-2><i class="far fa-folder-open fa-fw text-muted"></i>
|
||||
Homelab
|
||||
<span class="lead text-muted ps-2">2</span></h1><ul class="content ps-0"><li class="d-flex justify-content-between px-md-3"><a href=/post/2024-09-21-websitedeployment/>Continuous Integration & Continuous Deployment</a>
|
||||
<span class="dash flex-grow-1"></span>
|
||||
<span class="text-muted small text-nowrap">Sep 21, 2024</span></li><li class="d-flex justify-content-between px-md-3"><a href=/post/2024-09-05-resetrestart/>Reset and Restart</a>
|
||||
<span class="dash flex-grow-1"></span>
|
||||
<span class="text-muted small text-nowrap">Sep 5, 2024</span></li></ul></div></main><aside aria-label=Panel id=panel-wrapper class="col-xl-3 ps-2 text-muted"><div class=access><section id=access-lastmod><h2 class=panel-heading>Recently Updated</h2><ul class="content list-unstyled ps-0 pb-1 ms-1 mt-2"><li class="text-truncate lh-lg"><a href=/post/2024-09-21-websitedeployment/>Continuous Integration & Continuous Deployment</a></li><li class="text-truncate lh-lg"><a href=/post/2024-09-05-resetrestart/>Reset and Restart</a></li></ul></section><section><h2 class=panel-heading>Trending Tags</h2><div class="d-flex flex-wrap mt-3 mb-1 me-3"><a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/cd/>cd</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/ci/>ci</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-deployment/>continuous deployment</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-integration/>continuous integration</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/docker/>docker</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/git/>git</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/homelab/>homelab</a></div></section></div></aside></div><div class=row><div id=tail-wrapper class="col-12 col-lg-11 col-xl-9 px-md-4"><footer aria-label="Site Info" class="d-flex flex-column justify-content-center text-muted
|
||||
flex-lg-row justify-content-lg-between align-items-lg-center pb-lg-3"><p>©
|
||||
<time>2025</time>
|
||||
<a href=https://comprofix.com>Comprofix</a>.
|
||||
<span data-bs-toggle=tooltip data-bs-placement=top title="Except where otherwise noted, the blog posts on this site are licensed under the Creative Commons Attribution 4.0 International (CC BY 4.0) License by the author.">Some rights reserved.</span></p><p>Using the <a data-bs-toggle=tooltip data-bs-placement=top title=v1.0.2 href=https://github.com/geekifan/hugo-theme-chirpy target=_blank rel=noopener>Chirpy</a> theme for <a href=https://gohugo.io/ target=_blank rel=noopener>Hugo</a>.</p></footer></div></div><div id=search-result-wrapper class="d-flex justify-content-center d-none"><div class="col-11 content"><div id=search-hints><section><h2 class=panel-heading>Trending Tags</h2><div class="d-flex flex-wrap mt-3 mb-1 me-3"><a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/cd/>cd</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/ci/>ci</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-deployment/>continuous deployment</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-integration/>continuous integration</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/docker/>docker</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/git/>git</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/homelab/>homelab</a></div></section></div><div id=search-results class="d-flex flex-wrap justify-content-center text-muted mt-3"></div></div></div><script>const DEFAULT_CONFIG={search:{minChars:1,maxResults:5,fields:{title:!0,description:!0,section:!0,contents:!0},strictMode:!0}};class FastSearch{constructor({searchInput:e,resultsContainer:t,json:n,searchResultTemplate:s=null,noResultsText:o=null}){this.searchInput=e,this.resultsContainer=t,this.json=n,this.searchResultTemplate=s,this.noResultsText=o,this.init()}init(){this.loadSearchIndex(),this.searchInput.addEventListener("input",e=>{if(!this.searchIndex){this.resultsContainer.innerHTML='<li class="search-message">Loading search index...</li>';return}this.performSearch(this.searchInput.value)})}async loadSearchIndex(){try{const e=await fetch(this.json);if(!e.ok)throw new Error("Failed to load search index");const t=await e.json();this.searchIndex=t.map(e=>({...e,searchableTitle:e.title?.toLowerCase()||"",searchableDesc:e.desc?.toLowerCase()||"",searchableSection:e.section?.toLowerCase()||"",searchableContents:e.contents?.toLowerCase()||""}))}catch(e){console.error("Error loading search index:",e),this.resultsContainer.innerHTML='<li class="search-message">Error loading search index...</li>'}}escapeHtml(e){return e?e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"):""}containsTerm(e,t){return!!e&&!!t&&e.includes(t)}performSearch(e){if(e=e.toLowerCase().trim(),!e||!this.searchIndex||e.length<DEFAULT_CONFIG.search.minChars){this.resultsContainer.innerHTML="";return}const s=[e,...e.split(/\s+/).filter(e=>e.length>0)],t=[...new Set(s)],o=DEFAULT_CONFIG.search.strictMode,n=this.searchIndex.map(e=>{const s=this.checkFieldsForMatch(e,t[0]);if(o&&!s)return{item:e,score:0,matched:!1};let n=0,i=0,a=!1;t.forEach((t,s)=>{const r=s===0,o=this.checkFieldsForMatch(e,t);o&&(i++,o.inTitle&&(n+=r?10:5,a=!0),o.inDesc&&(n+=r?8:4),o.inSection&&(n+=r?6:3),o.inContents&&(n+=r?4:2))});const r=i/t.length,c=n*r*(a?1.5:1);return{item:e,score:c,matched:s}}).filter(e=>e.matched).sort((e,t)=>t.score-e.score).slice(0,DEFAULT_CONFIG.search.maxResults).map(e=>e.item);if(n.length===0){this.resultsContainer.innerHTML='<p class="mt-5">Oops! No results found.</p>';return}const i=n.map(e=>{let t="",n="";return e.categories&&(t=e.categories.join(", "),t=`<div class="me-sm-4"><i class="far fa-folder fa-fw"></i>${t}</div>`),e.tags&&(n=e.tags.join(", "),n=`<div><i class="fa fa-tag fa-fw"></i>${n}</div>`),`
|
||||
<article class="px-1 px-sm-2 px-lg-4 px-xl-0">
|
||||
<header>
|
||||
<h2><a href="${this.escapeHtml(e.permalink)}">${this.escapeHtml(e.title)}</a></h2>
|
||||
<div class="post-meta d-flex flex-column flex-sm-row text-muted mt-1 mb-1">
|
||||
${t}
|
||||
${n}
|
||||
</div>
|
||||
</header>
|
||||
<p>${this.escapeHtml(e.contents)}</p>
|
||||
</article>
|
||||
`}).join("");this.resultsContainer.innerHTML=i}checkFieldsForMatch(e,t){const n={inTitle:!1,inDesc:!1,inSection:!1,inContents:!1};return DEFAULT_CONFIG.search.fields.title&&this.containsTerm(e.searchableTitle,t)&&(n.inTitle=!0),DEFAULT_CONFIG.search.fields.description&&this.containsTerm(e.searchableDesc,t)&&(n.inDesc=!0),DEFAULT_CONFIG.search.fields.section&&this.containsTerm(e.searchableSection,t)&&(n.inSection=!0),DEFAULT_CONFIG.search.fields.contents&&this.containsTerm(e.searchableContents,t)&&(n.inContents=!0),!!(n.inTitle||n.inDesc||n.inSection||n.inContents)&&n}}const search=new FastSearch({searchInput:document.getElementById("search-input"),resultsContainer:document.getElementById("search-results"),json:`/index.json`})</script></div><aside aria-label="Scroll to Top"><button id=back-to-top type=button class="btn btn-lg btn-box-shadow">
|
||||
<i class="fas fa-angle-up"></i></button></aside></div><div id=mask class="d-none position-fixed w-100 h-100 z-1"></div></body></html>
|
10
public/categories/homelab/index.xml
Normal file
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Homelab on Comprofix</title><link>https://comprofix.com/categories/homelab/</link><description>Recent content in Homelab on Comprofix</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sat, 21 Sep 2024 00:00:00 +0000</lastBuildDate><atom:link href="https://comprofix.com/categories/homelab/index.xml" rel="self" type="application/rss+xml"/><item><title>Continuous Integration & Continuous Deployment</title><link>https://comprofix.com/post/2024-09-21-websitedeployment/</link><pubDate>Sat, 21 Sep 2024 00:00:00 +0000</pubDate><guid>https://comprofix.com/post/2024-09-21-websitedeployment/</guid><description><p>Since the reset of the website, I have been working on getting it to auto build and deploy using <a href="https://docs.gitea.com/usage/actions/overview">Gitea Actions</a>. Which is similar and compatible to <a href="https://github.com/features/actions">GitHub Actions</a></p>
|
||||
<p>Before implementing the action it was a manual process which required using docker commands to login, build and push the image to the container registry.</p>
|
||||
<h3 id="why-use-cicd" id=why-use-cicd>
|
||||
|
||||
<span class="me-2">Why use CI/CD?</span>
|
||||
<a href="#why-use-cicd" class="anchor text-muted"><i class="fas fa-hashtag"></i></a>
|
||||
|
||||
</h3><p>It takes the manual process steps away and does them for you, helping you to avoid missing any steps and avoiding errors. This also makes the interaction seamless and automated.</p></description></item><item><title>Reset and Restart</title><link>https://comprofix.com/post/2024-09-05-resetrestart/</link><pubDate>Thu, 05 Sep 2024 00:00:00 +0000</pubDate><guid>https://comprofix.com/post/2024-09-05-resetrestart/</guid><description><p>It&rsquo;s time to reset the website and start building my blog again. I have had this domain for a number of years and it has always been used for my E-Mail.</p>
|
||||
<p>But the website has been more of a play ground for experimenting and testing.</p>
|
||||
<p>I am now hoping to get into the habit of writing more blog posts as I document my journey as I experiment with my HomeLab.</p></description></item></channel></rss>
|
58
public/categories/index.html
Normal file
@ -0,0 +1,58 @@
|
||||
<!doctype html><head><link rel=stylesheet href=https://comprofix.com/css/main.min.f77a4050bafcd273d43d6737e174f344bd91a213d9bc92b097cb31fc7dbe1cb9.css></head><html lang=en><head><meta charset=utf-8><meta name=theme-color media="(prefers-color-scheme: light)" content="#f7f7f7"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#1b1b1e"><meta name=mobile-web-app-capable content="yes"><meta name=apple-mobile-web-app-status-bar-style content="black-translucent"><meta name=viewport content="width=device-width,user-scalable=no,initial-scale=1,shrink-to-fit=no,viewport-fit=cover"><meta property="og:url" content="https://comprofix.com/categories/"><meta property="og:site_name" content="Comprofix"><meta property="og:title" content="Categories"><meta property="og:locale" content="en"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Categories"><meta itemprop=name content="Categories"><meta itemprop=datePublished content="2024-09-21T00:00:00+00:00"><meta itemprop=dateModified content="2024-09-21T00:00:00+00:00"><title>Categories |
|
||||
Comprofix</title><link rel=apple-touch-icon sizes=180x180 href=/img/favicons/apple-touch-icon.png><link rel=icon type=image/png sizes=32x32 href=/img/favicons/favicon-32x32.png><link rel=icon type=image/png sizes=16x16 href=/img/favicons/favicon-16x16.png><link rel="shortcut icon" href=/img/favicons/favicon.ico><meta name=apple-mobile-web-app-title content="Comprofix"><meta name=application-name content="Comprofix"><meta name=msapplication-TileColor content="#da532c"><meta name=msapplication-config content="/img/favicons/browserconfig.xml"><meta name=theme-color content="#ffffff"><link rel=preconnect href=https://fonts.googleapis.com><link rel=dns-prefetch href=https://fonts.googleapis.com><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=dns-prefetch href=https://fonts.gstatic.com><link rel=preconnect href=https://cdn.jsdelivr.net><link rel=dns-prefetch href=https://cdn.jsdelivr.net><link rel=stylesheet href=https://comprofix.com/css/main.min.f77a4050bafcd273d43d6737e174f344bd91a213d9bc92b097cb31fc7dbe1cb9.css><link rel=stylesheet href="https://fonts.googleapis.com/css2?family=Lato:wght@300;400&family=Source+Sans+Pro:wght@400;600;700;900&display=swap"><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.7.1/css/all.min.css><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/tocbot@4.32.2/dist/tocbot.min.css><script src=/js/modules/theme.js></script><script src=https://cdn.jsdelivr.net/npm/dayjs@1.11.13/dayjs.min.js></script><script src=https://cdn.jsdelivr.net/npm/dayjs@1.11.13/locale/en.js></script><script src=https://cdn.jsdelivr.net/npm/dayjs@1.11.13/plugin/relativeTime.js></script><script src=https://cdn.jsdelivr.net/npm/dayjs@1.11.13/plugin/localizedFormat.js></script><script defer src=/js/categories.js></script></head><body><aside aria-label=Sidebar id=sidebar class="d-flex flex-column align-items-end"><header class=profile-wrapper><a href=/ id=avatar class=rounded-circle><img src=/img/man-logo.png width=112 height=112 alt=avatar onerror='this.style.display="none"'></a>
|
||||
<a class="site-title d-block" href=/>Comprofix</a><p class="site-subtitle fst-italic mb-0">Geek | Nerd | Systems Administrator | IT Specialist</p></header><nav class="flex-column flex-grow-1 w-100 ps-0"><ul class=nav><li class=nav-item><a href=/ class=nav-link><i class="fa-fw fas fa-house"></i>
|
||||
<span>HOME</span></a></li><li class="nav-item active"><a href=/categories/ class=nav-link><i class="fa-fw fas fa-stream"></i>
|
||||
<span>CATEGORIES</span></a></li><li class=nav-item><a href=/tags/ class=nav-link><i class="fa-fw fas fa-tags"></i>
|
||||
<span>TAGS</span></a></li><li class=nav-item><a href=/archives/ class=nav-link><i class="fa-fw fas fa-archive"></i>
|
||||
<span>ARCHIVES</span></a></li><li class=nav-item><a href=/about/ class=nav-link><i class="fa-fw fas fa-info-circle"></i>
|
||||
<span>ABOUT</span></a></li></ul></nav><div class="sidebar-bottom d-flex flex-wrap align-items-center w-100"><button type=button class="btn btn-link nav-link" aria-label="Switch Mode" id=mode-toggle>
|
||||
<i class="fas fa-adjust"></i>
|
||||
</button>
|
||||
<span class=icon-border></span>
|
||||
<a href=https://git.comprofix.com/mmckinnon aria-label=custom target=_blank rel="noopener noreferrer"><i class="fab fa-git-alt"></i>
|
||||
</a><a href=https://twitter.com/mckinnon81 aria-label=twitter target=_blank rel="noopener noreferrer"><i class="fab fa-twitter"></i>
|
||||
</a><a href=https://comprofix.com/index.xml aria-label=rss><i class="fas fa-rss"></i></a></div></aside><div id=main-wrapper class="d-flex justify-content-center"><div class="container d-flex flex-column px-xxl-5"><header id=topbar-wrapper class=flex-shrink-0 aria-label="Top Bar"><div id=topbar class="d-flex align-items-center justify-content-between px-lg-3 h-100"><nav id=breadcrumb aria-label=Breadcrumb><span><a href=/>Home</a>
|
||||
</span><span>Categories</span></nav><button type=button id=sidebar-trigger class="btn btn-link" aria-label=Sidebar>
|
||||
<i class="fas fa-bars fa-fw"></i></button><div id=topbar-title></div><button type=button id=search-trigger class="btn btn-link" aria-label=Search>
|
||||
<i class="fas fa-search fa-fw"></i>
|
||||
</button>
|
||||
<search id=search class="align-items-center ms-3 ms-lg-0"><i class="fas fa-search fa-fw"></i>
|
||||
<input class=form-control id=search-input type=search aria-label=search autocomplete=off placeholder=Search...>
|
||||
</search><button type=button class="btn btn-link text-decoration-none" id=search-cancel>Cancel</button></div></header><div class="row flex-grow-1"><main aria-label="Main Content" class="col-12 col-lg-11 col-xl-9 px-md-4"><article class=px-1><h1 class=dynamic-title>Categories</h1><div class=content><div class="card categories mb-3"><div id=h_0 class="card-header d-flex justify-content-between hide-border-bottom"><span class=ms-2><i class="far fa-folder-open fa-fw"></i>
|
||||
<a href=https://comprofix.com/categories/homelab class=mx-2>homelab</a>
|
||||
<span class="text-muted small font-weight-light">1
|
||||
category,
|
||||
2
|
||||
posts
|
||||
</span></span><a href=#l_0 data-bs-toggle=collapse aria-expanded=false aria-label=homelab-trigger class="category-trigger hide-border-bottom"><i class="fas fa-fw fa-angle-down"></i></a></div><div id=l_0 class="collapse show"><ul class=list-group><li class=list-group-item><i class="far fa-folder fa-fw"></i>
|
||||
<a href=https://comprofix.com/categories/gitea class=mx-2>gitea</a>
|
||||
<span class="text-muted small font-weight-light">1
|
||||
post</span></li></ul></div></div></div></article></main><aside aria-label=Panel id=panel-wrapper class="col-xl-3 ps-2 text-muted"><div class=access><section id=access-lastmod><h2 class=panel-heading>Recently Updated</h2><ul class="content list-unstyled ps-0 pb-1 ms-1 mt-2"><li class="text-truncate lh-lg"><a href=/post/2024-09-21-websitedeployment/>Continuous Integration & Continuous Deployment</a></li><li class="text-truncate lh-lg"><a href=/post/2024-09-05-resetrestart/>Reset and Restart</a></li></ul></section><section><h2 class=panel-heading>Trending Tags</h2><div class="d-flex flex-wrap mt-3 mb-1 me-3"><a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/cd/>cd</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/ci/>ci</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-deployment/>continuous deployment</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-integration/>continuous integration</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/docker/>docker</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/git/>git</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/homelab/>homelab</a></div></section></div></aside></div><div class=row><div id=tail-wrapper class="col-12 col-lg-11 col-xl-9 px-md-4"><footer aria-label="Site Info" class="d-flex flex-column justify-content-center text-muted
|
||||
flex-lg-row justify-content-lg-between align-items-lg-center pb-lg-3"><p>©
|
||||
<time>2025</time>
|
||||
<a href=https://comprofix.com>Comprofix</a>.
|
||||
<span data-bs-toggle=tooltip data-bs-placement=top title="Except where otherwise noted, the blog posts on this site are licensed under the Creative Commons Attribution 4.0 International (CC BY 4.0) License by the author.">Some rights reserved.</span></p><p>Using the <a data-bs-toggle=tooltip data-bs-placement=top title=v1.0.2 href=https://github.com/geekifan/hugo-theme-chirpy target=_blank rel=noopener>Chirpy</a> theme for <a href=https://gohugo.io/ target=_blank rel=noopener>Hugo</a>.</p></footer></div></div><div id=search-result-wrapper class="d-flex justify-content-center d-none"><div class="col-11 content"><div id=search-hints><section><h2 class=panel-heading>Trending Tags</h2><div class="d-flex flex-wrap mt-3 mb-1 me-3"><a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/cd/>cd</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/ci/>ci</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-deployment/>continuous deployment</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-integration/>continuous integration</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/docker/>docker</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/git/>git</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/homelab/>homelab</a></div></section></div><div id=search-results class="d-flex flex-wrap justify-content-center text-muted mt-3"></div></div></div><script>const DEFAULT_CONFIG={search:{minChars:1,maxResults:5,fields:{title:!0,description:!0,section:!0,contents:!0},strictMode:!0}};class FastSearch{constructor({searchInput:e,resultsContainer:t,json:n,searchResultTemplate:s=null,noResultsText:o=null}){this.searchInput=e,this.resultsContainer=t,this.json=n,this.searchResultTemplate=s,this.noResultsText=o,this.init()}init(){this.loadSearchIndex(),this.searchInput.addEventListener("input",e=>{if(!this.searchIndex){this.resultsContainer.innerHTML='<li class="search-message">Loading search index...</li>';return}this.performSearch(this.searchInput.value)})}async loadSearchIndex(){try{const e=await fetch(this.json);if(!e.ok)throw new Error("Failed to load search index");const t=await e.json();this.searchIndex=t.map(e=>({...e,searchableTitle:e.title?.toLowerCase()||"",searchableDesc:e.desc?.toLowerCase()||"",searchableSection:e.section?.toLowerCase()||"",searchableContents:e.contents?.toLowerCase()||""}))}catch(e){console.error("Error loading search index:",e),this.resultsContainer.innerHTML='<li class="search-message">Error loading search index...</li>'}}escapeHtml(e){return e?e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"):""}containsTerm(e,t){return!!e&&!!t&&e.includes(t)}performSearch(e){if(e=e.toLowerCase().trim(),!e||!this.searchIndex||e.length<DEFAULT_CONFIG.search.minChars){this.resultsContainer.innerHTML="";return}const s=[e,...e.split(/\s+/).filter(e=>e.length>0)],t=[...new Set(s)],o=DEFAULT_CONFIG.search.strictMode,n=this.searchIndex.map(e=>{const s=this.checkFieldsForMatch(e,t[0]);if(o&&!s)return{item:e,score:0,matched:!1};let n=0,i=0,a=!1;t.forEach((t,s)=>{const r=s===0,o=this.checkFieldsForMatch(e,t);o&&(i++,o.inTitle&&(n+=r?10:5,a=!0),o.inDesc&&(n+=r?8:4),o.inSection&&(n+=r?6:3),o.inContents&&(n+=r?4:2))});const r=i/t.length,c=n*r*(a?1.5:1);return{item:e,score:c,matched:s}}).filter(e=>e.matched).sort((e,t)=>t.score-e.score).slice(0,DEFAULT_CONFIG.search.maxResults).map(e=>e.item);if(n.length===0){this.resultsContainer.innerHTML='<p class="mt-5">Oops! No results found.</p>';return}const i=n.map(e=>{let t="",n="";return e.categories&&(t=e.categories.join(", "),t=`<div class="me-sm-4"><i class="far fa-folder fa-fw"></i>${t}</div>`),e.tags&&(n=e.tags.join(", "),n=`<div><i class="fa fa-tag fa-fw"></i>${n}</div>`),`
|
||||
<article class="px-1 px-sm-2 px-lg-4 px-xl-0">
|
||||
<header>
|
||||
<h2><a href="${this.escapeHtml(e.permalink)}">${this.escapeHtml(e.title)}</a></h2>
|
||||
<div class="post-meta d-flex flex-column flex-sm-row text-muted mt-1 mb-1">
|
||||
${t}
|
||||
${n}
|
||||
</div>
|
||||
</header>
|
||||
<p>${this.escapeHtml(e.contents)}</p>
|
||||
</article>
|
||||
`}).join("");this.resultsContainer.innerHTML=i}checkFieldsForMatch(e,t){const n={inTitle:!1,inDesc:!1,inSection:!1,inContents:!1};return DEFAULT_CONFIG.search.fields.title&&this.containsTerm(e.searchableTitle,t)&&(n.inTitle=!0),DEFAULT_CONFIG.search.fields.description&&this.containsTerm(e.searchableDesc,t)&&(n.inDesc=!0),DEFAULT_CONFIG.search.fields.section&&this.containsTerm(e.searchableSection,t)&&(n.inSection=!0),DEFAULT_CONFIG.search.fields.contents&&this.containsTerm(e.searchableContents,t)&&(n.inContents=!0),!!(n.inTitle||n.inDesc||n.inSection||n.inContents)&&n}}const search=new FastSearch({searchInput:document.getElementById("search-input"),resultsContainer:document.getElementById("search-results"),json:`/index.json`})</script></div><aside aria-label="Scroll to Top"><button id=back-to-top type=button class="btn btn-lg btn-box-shadow">
|
||||
<i class="fas fa-angle-up"></i></button></aside></div><div id=mask class="d-none position-fixed w-100 h-100 z-1"></div></body></html>
|
1
public/categories/index.xml
Normal file
@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Categories on Comprofix</title><link>https://comprofix.com/categories/</link><description>Recent content in Categories on Comprofix</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sat, 21 Sep 2024 00:00:00 +0000</lastBuildDate><atom:link href="https://comprofix.com/categories/index.xml" rel="self" type="application/rss+xml"/><item><title>Gitea</title><link>https://comprofix.com/categories/gitea/</link><pubDate>Sat, 21 Sep 2024 00:00:00 +0000</pubDate><guid>https://comprofix.com/categories/gitea/</guid><description/></item><item><title>Homelab</title><link>https://comprofix.com/categories/homelab/</link><pubDate>Sat, 21 Sep 2024 00:00:00 +0000</pubDate><guid>https://comprofix.com/categories/homelab/</guid><description/></item></channel></rss>
|
1
public/css/main.css.map
Normal file
BIN
public/img/favicons/apple-touch-icon.png
Normal file
After Width: | Height: | Size: 14 KiB |
13
public/img/favicons/browserconfig.xml
Normal file
@ -0,0 +1,13 @@
|
||||
---
|
||||
layout: compress
|
||||
---
|
||||
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<browserconfig>
|
||||
<msapplication>
|
||||
<tile>
|
||||
<square150x150logo src="{{ '/assets/img/favicons/mstile-150x150.png' | relative_url }}" />
|
||||
<TileColor>#da532c</TileColor>
|
||||
</tile>
|
||||
</msapplication>
|
||||
</browserconfig>
|
BIN
public/img/favicons/favicon-16x16.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
public/img/favicons/favicon-32x32.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
public/img/favicons/favicon.ico
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
public/img/man-logo.png
Normal file
After Width: | Height: | Size: 171 KiB |
57
public/index.html
Normal file
@ -0,0 +1,57 @@
|
||||
<!doctype html><head><meta name=generator content="Hugo 0.149.0"><link rel=stylesheet href=https://comprofix.com/css/main.min.f77a4050bafcd273d43d6737e174f344bd91a213d9bc92b097cb31fc7dbe1cb9.css></head><html lang=en><head><meta charset=utf-8><meta name=theme-color media="(prefers-color-scheme: light)" content="#f7f7f7"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#1b1b1e"><meta name=mobile-web-app-capable content="yes"><meta name=apple-mobile-web-app-status-bar-style content="black-translucent"><meta name=viewport content="width=device-width,user-scalable=no,initial-scale=1,shrink-to-fit=no,viewport-fit=cover"><meta property="og:url" content="https://comprofix.com/"><meta property="og:site_name" content="Comprofix"><meta property="og:title" content="Comprofix"><meta property="og:locale" content="en"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Comprofix"><meta itemprop=name content="Comprofix"><meta itemprop=datePublished content="2024-09-21T00:00:00+00:00"><meta itemprop=dateModified content="2024-09-21T00:00:00+00:00"><title>Comprofix</title><link rel=apple-touch-icon sizes=180x180 href=/img/favicons/apple-touch-icon.png><link rel=icon type=image/png sizes=32x32 href=/img/favicons/favicon-32x32.png><link rel=icon type=image/png sizes=16x16 href=/img/favicons/favicon-16x16.png><link rel="shortcut icon" href=/img/favicons/favicon.ico><meta name=apple-mobile-web-app-title content="Comprofix"><meta name=application-name content="Comprofix"><meta name=msapplication-TileColor content="#da532c"><meta name=msapplication-config content="/img/favicons/browserconfig.xml"><meta name=theme-color content="#ffffff"><link rel=preconnect href=https://fonts.googleapis.com><link rel=dns-prefetch href=https://fonts.googleapis.com><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=dns-prefetch href=https://fonts.gstatic.com><link rel=preconnect href=https://cdn.jsdelivr.net><link rel=dns-prefetch href=https://cdn.jsdelivr.net><link rel=stylesheet href=https://comprofix.com/css/main.min.f77a4050bafcd273d43d6737e174f344bd91a213d9bc92b097cb31fc7dbe1cb9.css><link rel=stylesheet href="https://fonts.googleapis.com/css2?family=Lato:wght@300;400&family=Source+Sans+Pro:wght@400;600;700;900&display=swap"><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.7.1/css/all.min.css><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/tocbot@4.32.2/dist/tocbot.min.css><link rel=stylesheet href=/><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/glightbox@3.3.0/dist/css/glightbox.min.css><script src=/js/modules/theme.js></script><script src=https://cdn.jsdelivr.net/npm/dayjs@1.11.13/dayjs.min.js></script><script src=https://cdn.jsdelivr.net/npm/dayjs@1.11.13/locale/en.js></script><script src=https://cdn.jsdelivr.net/npm/dayjs@1.11.13/plugin/relativeTime.js></script><script src=https://cdn.jsdelivr.net/npm/dayjs@1.11.13/plugin/localizedFormat.js></script><script defer src=/js/home.js></script></head><body><aside aria-label=Sidebar id=sidebar class="d-flex flex-column align-items-end"><header class=profile-wrapper><a href=/ id=avatar class=rounded-circle><img src=/img/man-logo.png width=112 height=112 alt=avatar onerror='this.style.display="none"'></a>
|
||||
<a class="site-title d-block" href=/>Comprofix</a><p class="site-subtitle fst-italic mb-0">Geek | Nerd | Systems Administrator | IT Specialist</p></header><nav class="flex-column flex-grow-1 w-100 ps-0"><ul class=nav><li class="nav-item active"><a href=/ class=nav-link><i class="fa-fw fas fa-house"></i>
|
||||
<span>HOME</span></a></li><li class=nav-item><a href=/categories/ class=nav-link><i class="fa-fw fas fa-stream"></i>
|
||||
<span>CATEGORIES</span></a></li><li class=nav-item><a href=/tags/ class=nav-link><i class="fa-fw fas fa-tags"></i>
|
||||
<span>TAGS</span></a></li><li class=nav-item><a href=/archives/ class=nav-link><i class="fa-fw fas fa-archive"></i>
|
||||
<span>ARCHIVES</span></a></li><li class=nav-item><a href=/about/ class=nav-link><i class="fa-fw fas fa-info-circle"></i>
|
||||
<span>ABOUT</span></a></li></ul></nav><div class="sidebar-bottom d-flex flex-wrap align-items-center w-100"><button type=button class="btn btn-link nav-link" aria-label="Switch Mode" id=mode-toggle>
|
||||
<i class="fas fa-adjust"></i>
|
||||
</button>
|
||||
<span class=icon-border></span>
|
||||
<a href=https://git.comprofix.com/mmckinnon aria-label=custom target=_blank rel="noopener noreferrer"><i class="fab fa-git-alt"></i>
|
||||
</a><a href=https://twitter.com/mckinnon81 aria-label=twitter target=_blank rel="noopener noreferrer"><i class="fab fa-twitter"></i>
|
||||
</a><a href=https://comprofix.com/index.xml aria-label=rss><i class="fas fa-rss"></i></a></div></aside><div id=main-wrapper class="d-flex justify-content-center"><div class="container d-flex flex-column px-xxl-5"><header id=topbar-wrapper class=flex-shrink-0 aria-label="Top Bar"><div id=topbar class="d-flex align-items-center justify-content-between px-lg-3 h-100"><nav id=breadcrumb aria-label=Breadcrumb><span>Home</span></nav><button type=button id=sidebar-trigger class="btn btn-link" aria-label=Sidebar>
|
||||
<i class="fas fa-bars fa-fw"></i></button><div id=topbar-title></div><button type=button id=search-trigger class="btn btn-link" aria-label=Search>
|
||||
<i class="fas fa-search fa-fw"></i>
|
||||
</button>
|
||||
<search id=search class="align-items-center ms-3 ms-lg-0"><i class="fas fa-search fa-fw"></i>
|
||||
<input class=form-control id=search-input type=search aria-label=search autocomplete=off placeholder=Search...>
|
||||
</search><button type=button class="btn btn-link text-decoration-none" id=search-cancel>Cancel</button></div></header><div class="row flex-grow-1"><main aria-label="Main Content" class="col-12 col-lg-11 col-xl-9 px-md-4"><div id=post-list class="flex-grow-1 px-xl-1"><article class="card-wrapper card"><a href=/post/2024-09-21-websitedeployment/ class="post-preview row g-0 flex-md-row-reverse"><div class=col-md-5><img src=/post/2024-09-21-websitedeployment/devops.png alt="Preview Image"></div><div class=col-md-7><div class="card-body d-flex flex-column"><h1 class="card-title my-2 mt-md-0">Continuous Integration & Continuous Deployment</h1><div class="card-text content mt-0 mb-3"><p>Since the reset of the website, I have been working on getting it to auto build and deploy using Gitea Actions. Which is similar and compatible to GitHub Actions
|
||||
Before implementing the action it was a manual process which required using docker commands to login, build and push the image to the container registry.
|
||||
Why use CI/CD? It takes the manual process steps away and does them for you, helping you to avoid missing any steps and avoiding errors. This also makes the interaction seamless and automated.</p></div><div class="post-meta flex-grow-1 d-flex align-items-end"><div class=me-auto><i class="far fa-calendar fa-fw me-1"></i>
|
||||
<time data-ts=1726876800 data-df=ll>%b %e, %Y
|
||||
</time><i class="far fa-folder-open fa-fw me-1"></i>
|
||||
<span class=categories>homelab, gitea</span></div></div></div></div></a></article><article class="card-wrapper card"><a href=/post/2024-09-05-resetrestart/ class="post-preview row g-0 flex-md-row-reverse"><div class=col-md-5><img src=/post/2024-09-05-resetrestart/reset.jpg alt="Preview Image"></div><div class=col-md-7><div class="card-body d-flex flex-column"><h1 class="card-title my-2 mt-md-0">Reset and Restart</h1><div class="card-text content mt-0 mb-3"><p>It’s time to reset the website and start building my blog again. I have had this domain for a number of years and it has always been used for my E-Mail.
|
||||
But the website has been more of a play ground for experimenting and testing.
|
||||
I am now hoping to get into the habit of writing more blog posts as I document my journey as I experiment with my HomeLab.</p></div><div class="post-meta flex-grow-1 d-flex align-items-end"><div class=me-auto><i class="far fa-calendar fa-fw me-1"></i>
|
||||
<time data-ts=1725494400 data-df=ll>%b %e, %Y
|
||||
</time><i class="far fa-folder-open fa-fw me-1"></i>
|
||||
<span class=categories>homelab</span></div></div></div></div></a></article></div></main><aside aria-label=Panel id=panel-wrapper class="col-xl-3 ps-2 text-muted"><div class=access><section id=access-lastmod><h2 class=panel-heading>Recently Updated</h2><ul class="content list-unstyled ps-0 pb-1 ms-1 mt-2"><li class="text-truncate lh-lg"><a href=/post/2024-09-21-websitedeployment/>Continuous Integration & Continuous Deployment</a></li><li class="text-truncate lh-lg"><a href=/post/2024-09-05-resetrestart/>Reset and Restart</a></li></ul></section><section><h2 class=panel-heading>Trending Tags</h2><div class="d-flex flex-wrap mt-3 mb-1 me-3"><a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/cd/>cd</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/ci/>ci</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-deployment/>continuous deployment</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-integration/>continuous integration</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/docker/>docker</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/git/>git</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/homelab/>homelab</a></div></section></div></aside></div><div class=row><div id=tail-wrapper class="col-12 col-lg-11 col-xl-9 px-md-4"><footer aria-label="Site Info" class="d-flex flex-column justify-content-center text-muted
|
||||
flex-lg-row justify-content-lg-between align-items-lg-center pb-lg-3"><p>©
|
||||
<time>2025</time>
|
||||
<a href=https://comprofix.com>Comprofix</a>.
|
||||
<span data-bs-toggle=tooltip data-bs-placement=top title="Except where otherwise noted, the blog posts on this site are licensed under the Creative Commons Attribution 4.0 International (CC BY 4.0) License by the author.">Some rights reserved.</span></p><p>Using the <a data-bs-toggle=tooltip data-bs-placement=top title=v1.0.2 href=https://github.com/geekifan/hugo-theme-chirpy target=_blank rel=noopener>Chirpy</a> theme for <a href=https://gohugo.io/ target=_blank rel=noopener>Hugo</a>.</p></footer></div></div><div id=search-result-wrapper class="d-flex justify-content-center d-none"><div class="col-11 content"><div id=search-hints><section><h2 class=panel-heading>Trending Tags</h2><div class="d-flex flex-wrap mt-3 mb-1 me-3"><a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/cd/>cd</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/ci/>ci</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-deployment/>continuous deployment</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-integration/>continuous integration</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/docker/>docker</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/git/>git</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/homelab/>homelab</a></div></section></div><div id=search-results class="d-flex flex-wrap justify-content-center text-muted mt-3"></div></div></div><script>const DEFAULT_CONFIG={search:{minChars:1,maxResults:5,fields:{title:!0,description:!0,section:!0,contents:!0},strictMode:!0}};class FastSearch{constructor({searchInput:e,resultsContainer:t,json:n,searchResultTemplate:s=null,noResultsText:o=null}){this.searchInput=e,this.resultsContainer=t,this.json=n,this.searchResultTemplate=s,this.noResultsText=o,this.init()}init(){this.loadSearchIndex(),this.searchInput.addEventListener("input",e=>{if(!this.searchIndex){this.resultsContainer.innerHTML='<li class="search-message">Loading search index...</li>';return}this.performSearch(this.searchInput.value)})}async loadSearchIndex(){try{const e=await fetch(this.json);if(!e.ok)throw new Error("Failed to load search index");const t=await e.json();this.searchIndex=t.map(e=>({...e,searchableTitle:e.title?.toLowerCase()||"",searchableDesc:e.desc?.toLowerCase()||"",searchableSection:e.section?.toLowerCase()||"",searchableContents:e.contents?.toLowerCase()||""}))}catch(e){console.error("Error loading search index:",e),this.resultsContainer.innerHTML='<li class="search-message">Error loading search index...</li>'}}escapeHtml(e){return e?e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"):""}containsTerm(e,t){return!!e&&!!t&&e.includes(t)}performSearch(e){if(e=e.toLowerCase().trim(),!e||!this.searchIndex||e.length<DEFAULT_CONFIG.search.minChars){this.resultsContainer.innerHTML="";return}const s=[e,...e.split(/\s+/).filter(e=>e.length>0)],t=[...new Set(s)],o=DEFAULT_CONFIG.search.strictMode,n=this.searchIndex.map(e=>{const s=this.checkFieldsForMatch(e,t[0]);if(o&&!s)return{item:e,score:0,matched:!1};let n=0,i=0,a=!1;t.forEach((t,s)=>{const r=s===0,o=this.checkFieldsForMatch(e,t);o&&(i++,o.inTitle&&(n+=r?10:5,a=!0),o.inDesc&&(n+=r?8:4),o.inSection&&(n+=r?6:3),o.inContents&&(n+=r?4:2))});const r=i/t.length,c=n*r*(a?1.5:1);return{item:e,score:c,matched:s}}).filter(e=>e.matched).sort((e,t)=>t.score-e.score).slice(0,DEFAULT_CONFIG.search.maxResults).map(e=>e.item);if(n.length===0){this.resultsContainer.innerHTML='<p class="mt-5">Oops! No results found.</p>';return}const i=n.map(e=>{let t="",n="";return e.categories&&(t=e.categories.join(", "),t=`<div class="me-sm-4"><i class="far fa-folder fa-fw"></i>${t}</div>`),e.tags&&(n=e.tags.join(", "),n=`<div><i class="fa fa-tag fa-fw"></i>${n}</div>`),`
|
||||
<article class="px-1 px-sm-2 px-lg-4 px-xl-0">
|
||||
<header>
|
||||
<h2><a href="${this.escapeHtml(e.permalink)}">${this.escapeHtml(e.title)}</a></h2>
|
||||
<div class="post-meta d-flex flex-column flex-sm-row text-muted mt-1 mb-1">
|
||||
${t}
|
||||
${n}
|
||||
</div>
|
||||
</header>
|
||||
<p>${this.escapeHtml(e.contents)}</p>
|
||||
</article>
|
||||
`}).join("");this.resultsContainer.innerHTML=i}checkFieldsForMatch(e,t){const n={inTitle:!1,inDesc:!1,inSection:!1,inContents:!1};return DEFAULT_CONFIG.search.fields.title&&this.containsTerm(e.searchableTitle,t)&&(n.inTitle=!0),DEFAULT_CONFIG.search.fields.description&&this.containsTerm(e.searchableDesc,t)&&(n.inDesc=!0),DEFAULT_CONFIG.search.fields.section&&this.containsTerm(e.searchableSection,t)&&(n.inSection=!0),DEFAULT_CONFIG.search.fields.contents&&this.containsTerm(e.searchableContents,t)&&(n.inContents=!0),!!(n.inTitle||n.inDesc||n.inSection||n.inContents)&&n}}const search=new FastSearch({searchInput:document.getElementById("search-input"),resultsContainer:document.getElementById("search-results"),json:`/index.json`})</script></div><aside aria-label="Scroll to Top"><button id=back-to-top type=button class="btn btn-lg btn-box-shadow">
|
||||
<i class="fas fa-angle-up"></i></button></aside></div><div id=mask class="d-none position-fixed w-100 h-100 z-1"></div></body></html>
|
1
public/index.json
Normal file
11
public/index.xml
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Comprofix</title><link>https://comprofix.com/</link><description>Recent content on Comprofix</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sat, 21 Sep 2024 00:00:00 +0000</lastBuildDate><atom:link href="https://comprofix.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Continuous Integration & Continuous Deployment</title><link>https://comprofix.com/post/2024-09-21-websitedeployment/</link><pubDate>Sat, 21 Sep 2024 00:00:00 +0000</pubDate><guid>https://comprofix.com/post/2024-09-21-websitedeployment/</guid><description><p>Since the reset of the website, I have been working on getting it to auto build and deploy using <a href="https://docs.gitea.com/usage/actions/overview">Gitea Actions</a>. Which is similar and compatible to <a href="https://github.com/features/actions">GitHub Actions</a></p>
|
||||
<p>Before implementing the action it was a manual process which required using docker commands to login, build and push the image to the container registry.</p>
|
||||
<h3 id="why-use-cicd" id=why-use-cicd>
|
||||
|
||||
<span class="me-2">Why use CI/CD?</span>
|
||||
<a href="#why-use-cicd" class="anchor text-muted"><i class="fas fa-hashtag"></i></a>
|
||||
|
||||
</h3><p>It takes the manual process steps away and does them for you, helping you to avoid missing any steps and avoiding errors. This also makes the interaction seamless and automated.</p></description></item><item><title>Reset and Restart</title><link>https://comprofix.com/post/2024-09-05-resetrestart/</link><pubDate>Thu, 05 Sep 2024 00:00:00 +0000</pubDate><guid>https://comprofix.com/post/2024-09-05-resetrestart/</guid><description><p>It&rsquo;s time to reset the website and start building my blog again. I have had this domain for a number of years and it has always been used for my E-Mail.</p>
|
||||
<p>But the website has been more of a play ground for experimenting and testing.</p>
|
||||
<p>I am now hoping to get into the habit of writing more blog posts as I document my journey as I experiment with my HomeLab.</p></description></item><item><title>About</title><link>https://comprofix.com/about/</link><pubDate>Thu, 20 Apr 2023 00:00:00 +0000</pubDate><guid>https://comprofix.com/about/</guid><description><p><a href="https://github.com/cotes2020/jekyll-theme-chirpy">Chirpy</a> is a blog theme originally based on <a href="https://jekyllrb.com/">Jekyll</a>. Due to Jekyll&rsquo;s design limitations, it does not natively support internationalization (i18n) and requires third-party plugins for i18n functionality. To enable i18n support for Chirpy without the hassle of relying on third-party plugins, the <a href="https://github.com/geekifan/hugo-theme-chirpy">hugo-theme-chirpy</a> project migrated the Chirpy theme to <a href="https://gohugo.io/">Hugo</a> with minimal adaptations. All features of Chirpy are available in hugo-theme-chirpy (though some functionalities may operate differently within the Hugo framework).</p>
|
||||
<p>Follow the posts in the demo site to quickly set up a free personal blog!</p></description></item><item><title>Archives</title><link>https://comprofix.com/archives/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://comprofix.com/archives/</guid><description/></item></channel></rss>
|
1
public/js/categories.js
Normal file
1
public/js/commons.js
Normal file
1
public/js/home.js
Normal file
1
public/js/misc.js
Normal file
1
public/js/modules/theme.js
Normal file
@ -0,0 +1 @@
|
||||
(()=>{var L=Object.defineProperty;var w=i=>{throw TypeError(i)};var k=(i,s,a)=>s in i?L(i,s,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[s]=a;var M=(i,s,a)=>k(i,typeof s!="symbol"?s+"":s,a),b=(i,s,a)=>s.has(i)||w("Cannot "+a);var e=(i,s,a)=>(b(i,s,"read from private field"),a?a.call(i):s.get(i)),o=(i,s,a)=>s.has(i)?w("Cannot add the same private member more than once"):s instanceof WeakSet?s.add(i):s.set(i,a);var r=(i,s,a)=>(b(i,s,"access private method"),a);var c,n,m,t,d,K,l,g,A,D,I,f,h=class h{static get DARK(){return"dark"}static get LIGHT(){return"light"}static get ID(){return"theme-mode"}static get visualState(){return e(this,t,l)?e(this,t,d):e(this,t,g)?this.DARK:this.LIGHT}static getThemeMapper(s,a){return{[this.LIGHT]:s,[this.DARK]:a}}static init(){this.switchable&&(e(this,m).addEventListener("change",()=>{let s=e(this,t,d);r(this,t,I).call(this),s!==this.visualState&&r(this,t,f).call(this)}),e(this,t,l)&&(e(this,t,K)?r(this,t,A).call(this):r(this,t,D).call(this)))}static flip(){e(this,t,l)?r(this,t,I).call(this):e(this,t,g)?r(this,t,D).call(this):r(this,t,A).call(this),r(this,t,f).call(this)}};c=new WeakMap,n=new WeakMap,m=new WeakMap,t=new WeakSet,d=function(){return sessionStorage.getItem(e(this,c))||document.documentElement.getAttribute(e(this,n))},K=function(){return e(this,t,d)===this.DARK},l=function(){return e(this,t,d)!==null},g=function(){return e(this,m).matches},A=function(){document.documentElement.setAttribute(e(this,n),this.DARK),sessionStorage.setItem(e(this,c),this.DARK)},D=function(){document.documentElement.setAttribute(e(this,n),this.LIGHT),sessionStorage.setItem(e(this,c),this.LIGHT)},I=function(){document.documentElement.removeAttribute(e(this,n)),sessionStorage.removeItem(e(this,c))},f=function(){window.postMessage({id:this.ID},"*")},o(h,t),o(h,c,"mode"),o(h,n,"data-mode"),o(h,m,window.matchMedia("(prefers-color-scheme: dark)")),M(h,"switchable",!document.documentElement.hasAttribute(e(h,n)));var u=h;u.init();var E=u;window.Theme=u;})();
|
1
public/js/page.js
Normal file
1
public/js/post.js
Normal file
11
public/lib/.editorconfig
Normal file
@ -0,0 +1,11 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
# 2 space indentation
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
trim_trailing_whitespace = true
|
||||
# Unix-style newlines with a newline ending every file
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
10
public/lib/.github/dependabot.yml
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "npm"
|
||||
directory: "/"
|
||||
versioning-strategy: increase
|
||||
groups:
|
||||
npm:
|
||||
dependency-type: "production"
|
||||
schedule:
|
||||
interval: "weekly"
|
105
public/lib/.gitignore
vendored
Normal file
@ -0,0 +1,105 @@
|
||||
# Dependency directories
|
||||
node_modules/
|
||||
|
||||
# Debug logs
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
|
||||
# Runtime data
|
||||
pids
|
||||
*.pid
|
||||
*.seed
|
||||
*.pid.lock
|
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
lib-cov
|
||||
|
||||
# Coverage directory used by tools like istanbul/nyc
|
||||
coverage
|
||||
*.lcov
|
||||
|
||||
# nyc test coverage
|
||||
.nyc_output
|
||||
|
||||
# Grunt intermediate storage
|
||||
.grunt
|
||||
|
||||
# Bower dependency directory
|
||||
bower_components
|
||||
|
||||
# Compiled binary addons
|
||||
build/Release
|
||||
|
||||
# Next.js build output
|
||||
.next/
|
||||
out/
|
||||
|
||||
# Nuxt.js build output
|
||||
.nuxt/
|
||||
dist/
|
||||
|
||||
# Vuepress build output
|
||||
.vuepress/dist
|
||||
|
||||
# Docusaurus build output
|
||||
.build/
|
||||
|
||||
# Gatsby files
|
||||
.cache/
|
||||
public
|
||||
|
||||
# Storybook build outputs
|
||||
.out/
|
||||
storybook-static/
|
||||
|
||||
# Angular build output
|
||||
angular-out/
|
||||
|
||||
# Svelte build output
|
||||
.svelte-kit/
|
||||
|
||||
# Temporary files
|
||||
*.tmp
|
||||
*.swp
|
||||
*.swo
|
||||
|
||||
# Optional npm cache directory
|
||||
.npm
|
||||
|
||||
# Optional eslint cache
|
||||
.eslintcache
|
||||
|
||||
# Microbundle cache
|
||||
.rpt2_cache/
|
||||
.rts2_cache_cjs/
|
||||
.rts2_cache_es/
|
||||
.rts2_cache_umd/
|
||||
|
||||
# Parcel cache
|
||||
.cache
|
||||
.parcel-cache
|
||||
|
||||
# TypeScript build outputs
|
||||
*.tsbuildinfo
|
||||
*.tscache
|
||||
tsconfig.tsbuildinfo
|
||||
|
||||
# VSCode settings
|
||||
.vscode/
|
||||
|
||||
# JetBrains IDEs
|
||||
.idea/
|
||||
|
||||
# OS-specific files
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# dotenv environment files
|
||||
.env
|
||||
.env.test
|
||||
.env.production
|
||||
.env.local
|
||||
.env.development.local
|
||||
.env.test.local
|
1
public/lib/.prettierignore
Normal file
@ -0,0 +1 @@
|
||||
fonts/*.css
|
21
public/lib/LICENSE
Normal file
@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2022 Cotes Chung
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
20
public/lib/README.md
Normal file
@ -0,0 +1,20 @@
|
||||
<div align="center">
|
||||
|
||||
# Chirpy Hugo Assets
|
||||
|
||||
This repository provides the JavaScript, CSS, and font assets needed for the Chirpy theme in Hugo.
|
||||
|
||||
It can be used as a Hugo Module for theme development or local site builds.
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
# Comprofix Website Static Assets
|
||||
|
||||
This repository contains my personal assets for the [Comprofix.com](https://comprofix.com) website so it can be used as a Hugo Module. It includes all merges and changes from my development repository.
|
||||
|
||||
## Related Repositories
|
||||
|
||||
- **Development branch:** [comprofix/chirpy-static-assets](https://github.com/comprofix/chirpy-static-assets)
|
||||
- **Original fork:** [geekifan/chirpy-static-assets](https://github.com/geekifan/chirpy-static-assets)
|
9
public/lib/assets/fontawesome-free/css/all.min.css
vendored
Normal file
BIN
public/lib/assets/fontawesome-free/webfonts/fa-brands-400.woff2
Normal file
BIN
public/lib/assets/fontawesome-free/webfonts/fa-regular-400.woff2
Normal file
BIN
public/lib/assets/fontawesome-free/webfonts/fa-solid-900.woff2
Normal file
1
public/lib/assets/js/dayjs/dayjs.min.js
vendored
Normal file
1
public/lib/assets/js/dayjs/locale/en.js
Normal file
@ -0,0 +1 @@
|
||||
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_en=n()}(this,(function(){"use strict";return{name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var n=["th","st","nd","rd"],t=e%100;return"["+e+(n[(t-20)%10]||n[t]||n[0])+"]"}}}));
|
1
public/lib/assets/js/dayjs/plugin/localizedFormat.js
Normal file
@ -0,0 +1 @@
|
||||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_localizedFormat=t()}(this,(function(){"use strict";var e={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};return function(t,o,n){var r=o.prototype,i=r.format;n.en.formats=e,r.format=function(t){void 0===t&&(t="YYYY-MM-DDTHH:mm:ssZ");var o=this.$locale().formats,n=function(t,o){return t.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var i=r&&r.toUpperCase();return n||o[r]||e[r]||o[i].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,o){return t||o.slice(1)}))}))}(t,void 0===o?{}:o);return i.call(this,n)}}}));
|
1
public/lib/assets/js/dayjs/plugin/relativeTime.js
Normal file
@ -0,0 +1 @@
|
||||
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).dayjs_plugin_relativeTime=e()}(this,(function(){"use strict";return function(r,e,t){r=r||{};var n=e.prototype,o={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function i(r,e,t,o){return n.fromToBase(r,e,t,o)}t.en.relativeTime=o,n.fromToBase=function(e,n,i,d,u){for(var f,a,s,l=i.$locale().relativeTime||o,h=r.thresholds||[{l:"s",r:44,d:"second"},{l:"m",r:89},{l:"mm",r:44,d:"minute"},{l:"h",r:89},{l:"hh",r:21,d:"hour"},{l:"d",r:35},{l:"dd",r:25,d:"day"},{l:"M",r:45},{l:"MM",r:10,d:"month"},{l:"y",r:17},{l:"yy",d:"year"}],m=h.length,c=0;c<m;c+=1){var y=h[c];y.d&&(f=d?t(e).diff(i,y.d,!0):i.diff(e,y.d,!0));var p=(r.rounding||Math.round)(Math.abs(f));if(s=f>0,p<=y.r||!y.r){p<=1&&c>0&&(y=h[c-1]);var v=l[y.l];u&&(p=u(""+p)),a="string"==typeof v?v.replace("%d",p):v(p,n,y.l,s);break}}if(n)return a;var M=s?l.future:l.past;return"function"==typeof M?M(a):M.replace("%s",a)},n.to=function(r,e){return i(r,e,this,!0)},n.from=function(r,e){return i(r,e,this)};var d=function(r){return r.$u?t.utc():t()};n.toNow=function(r){return this.to(d(this),r)},n.fromNow=function(r){return this.from(d(this),r)}}}));
|
3
public/lib/assets/js/lazysizes/lazysizes.min.js
vendored
Normal file
3
public/lib/go.mod
Normal file
@ -0,0 +1,3 @@
|
||||
module git.comprofix.com/mmckinnon/chirpy-static-assets
|
||||
|
||||
go 1.24.2
|
1497
public/lib/package-lock.json
generated
Normal file
35
public/lib/package.json
Normal file
@ -0,0 +1,35 @@
|
||||
{
|
||||
"name": "chirpy-hugo-assets",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/comprofix/chirpy-hugo-assets.git"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"type": "commonjs",
|
||||
"bugs": {
|
||||
"url": "https://github.com/comprofix/chirpy-hugo-assets/issues"
|
||||
},
|
||||
"homepage": "https://github.com/comprofix/chirpy-hugo-assets#readme",
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-free": "^7.0.0",
|
||||
"clipboard": "^2.0.11",
|
||||
"dayjs": "^1.11.18",
|
||||
"glightbox": "^3.3.1",
|
||||
"lato-font": "^3.0.0",
|
||||
"lazysizes": "^5.3.2",
|
||||
"mermaid": "^11.10.1",
|
||||
"source-sans-pro": "^3.6.0",
|
||||
"tocbot": "^4.36.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"fs-extra": "^11.3.1"
|
||||
}
|
||||
}
|
72
public/lib/scripts/copy-assets.js
Normal file
@ -0,0 +1,72 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
// Paths
|
||||
const root = path.resolve(__dirname, '..');
|
||||
const nodeModules = path.join(root, 'node_modules');
|
||||
const pkgJsonPath = path.join(root, 'package.json');
|
||||
const assetsRoot = path.join(root, 'assets/js');
|
||||
|
||||
// Load dependencies
|
||||
const pkgJson = JSON.parse(fs.readFileSync(pkgJsonPath, 'utf-8'));
|
||||
const dependencies = Object.keys(pkgJson.dependencies || {});
|
||||
|
||||
// Helpers
|
||||
function copyFile(src, dest) {
|
||||
fs.mkdirSync(path.dirname(dest), { recursive: true });
|
||||
fs.copyFileSync(src, dest);
|
||||
console.log(`Copied file: ${src} → ${dest}`);
|
||||
}
|
||||
|
||||
function copyFolder(src, dest) {
|
||||
if (!fs.existsSync(src)) return;
|
||||
fs.mkdirSync(dest, { recursive: true });
|
||||
fs.readdirSync(src, { withFileTypes: true }).forEach(entry => {
|
||||
const srcPath = path.join(src, entry.name);
|
||||
const destPath = path.join(dest, entry.name);
|
||||
if (entry.isDirectory()) {
|
||||
copyFolder(srcPath, destPath);
|
||||
} else {
|
||||
copyFile(srcPath, destPath);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Main logic
|
||||
dependencies.forEach(pkg => {
|
||||
const pkgPath = path.join(nodeModules, pkg);
|
||||
const targetFolder = path.join(assetsRoot, pkg.replace('@', '').replace('/', '-'));
|
||||
|
||||
if (!fs.existsSync(pkgPath)) {
|
||||
console.warn(`Package not found: ${pkg}`);
|
||||
return;
|
||||
}
|
||||
|
||||
// Copy main/module files
|
||||
const depPkgJsonPath = path.join(pkgPath, 'package.json');
|
||||
if (fs.existsSync(depPkgJsonPath)) {
|
||||
const depPkg = JSON.parse(fs.readFileSync(depPkgJsonPath, 'utf-8'));
|
||||
['main', 'module'].forEach(key => {
|
||||
if (depPkg[key]) {
|
||||
const src = path.join(pkgPath, depPkg[key]);
|
||||
if (fs.existsSync(src)) {
|
||||
const dest = path.join(targetFolder, path.basename(depPkg[key]));
|
||||
copyFile(src, dest);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Copy common folders
|
||||
['dist', 'locale', 'plugin', 'webfonts', 'css'].forEach(folder => {
|
||||
const srcFolder = path.join(pkgPath, folder);
|
||||
if (fs.existsSync(srcFolder)) {
|
||||
const destFolder = path.join(targetFolder, folder);
|
||||
copyFolder(srcFolder, destFolder);
|
||||
}
|
||||
});
|
||||
|
||||
console.log(`✅ Finished processing: ${pkg}`);
|
||||
});
|
||||
|
||||
console.log('🎉 All npm assets copied into Hugo-compatible structure.');
|
BIN
public/lib/static/fonts/lato-font/lato-black/lato-black.woff
Normal file
BIN
public/lib/static/fonts/lato-font/lato-black/lato-black.woff2
Normal file
BIN
public/lib/static/fonts/lato-font/lato-bold/lato-bold.woff
Normal file
BIN
public/lib/static/fonts/lato-font/lato-bold/lato-bold.woff2
Normal file
BIN
public/lib/static/fonts/lato-font/lato-heavy/lato-heavy.woff
Normal file
BIN
public/lib/static/fonts/lato-font/lato-heavy/lato-heavy.woff2
Normal file
BIN
public/lib/static/fonts/lato-font/lato-light/lato-light.woff
Normal file
BIN
public/lib/static/fonts/lato-font/lato-light/lato-light.woff2
Normal file
BIN
public/lib/static/fonts/lato-font/lato-medium/lato-medium.woff
Normal file
BIN
public/lib/static/fonts/lato-font/lato-medium/lato-medium.woff2
Normal file
BIN
public/lib/static/fonts/lato-font/lato-normal/lato-normal.woff
Normal file
BIN
public/lib/static/fonts/lato-font/lato-normal/lato-normal.woff2
Normal file
BIN
public/lib/static/fonts/lato-font/lato-thin/lato-thin.woff
Normal file
BIN
public/lib/static/fonts/lato-font/lato-thin/lato-thin.woff2
Normal file
BIN
public/lib/static/fonts/source-sans-pro/SourceSansPro-Black.ttf
Normal file
BIN
public/lib/static/fonts/source-sans-pro/SourceSansPro-Bold.ttf
Normal file
BIN
public/lib/static/fonts/source-sans-pro/SourceSansPro-BoldIt.ttf
Normal file
BIN
public/lib/static/fonts/source-sans-pro/SourceSansPro-It.ttf
Normal file
BIN
public/lib/static/fonts/source-sans-pro/SourceSansPro-Light.ttf
Normal file
1
public/page/1/index.html
Normal file
@ -0,0 +1 @@
|
||||
<!doctype html><html lang=en><head><title>https://comprofix.com/</title><link rel=canonical href=https://comprofix.com/><meta name=robots content="noindex"><meta charset=utf-8><meta http-equiv=refresh content="0; url=https://comprofix.com/"></head></html>
|
59
public/post/2024-09-05-resetrestart/index.html
Normal file
@ -0,0 +1,59 @@
|
||||
<!doctype html><head><link rel=stylesheet href=https://comprofix.com/css/main.min.f77a4050bafcd273d43d6737e174f344bd91a213d9bc92b097cb31fc7dbe1cb9.css></head><html lang=en><head><meta charset=utf-8><meta name=theme-color media="(prefers-color-scheme: light)" content="#f7f7f7"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#1b1b1e"><meta name=mobile-web-app-capable content="yes"><meta name=apple-mobile-web-app-status-bar-style content="black-translucent"><meta name=viewport content="width=device-width,user-scalable=no,initial-scale=1,shrink-to-fit=no,viewport-fit=cover"><meta property="og:url" content="https://comprofix.com/post/2024-09-05-resetrestart/"><meta property="og:site_name" content="Comprofix"><meta property="og:title" content="Reset and Restart"><meta property="og:description" content="It’s time to reset the website and start building my blog again. I have had this domain for a number of years and it has always been used for my E-Mail.
|
||||
But the website has been more of a play ground for experimenting and testing.
|
||||
I am now hoping to get into the habit of writing more blog posts as I document my journey as I experiment with my HomeLab."><meta property="og:locale" content="en"><meta property="og:type" content="article"><meta property="article:section" content="post"><meta property="article:published_time" content="2024-09-05T00:00:00+00:00"><meta property="article:modified_time" content="2024-09-05T00:00:00+00:00"><meta property="article:tag" content="Homelab"><meta name=twitter:card content="summary"><meta name=twitter:title content="Reset and Restart"><meta name=twitter:description content="It’s time to reset the website and start building my blog again. I have had this domain for a number of years and it has always been used for my E-Mail.
|
||||
But the website has been more of a play ground for experimenting and testing.
|
||||
I am now hoping to get into the habit of writing more blog posts as I document my journey as I experiment with my HomeLab."><meta itemprop=name content="Reset and Restart"><meta itemprop=description content="It’s time to reset the website and start building my blog again. I have had this domain for a number of years and it has always been used for my E-Mail.
|
||||
But the website has been more of a play ground for experimenting and testing.
|
||||
I am now hoping to get into the habit of writing more blog posts as I document my journey as I experiment with my HomeLab."><meta itemprop=datePublished content="2024-09-05T00:00:00+00:00"><meta itemprop=dateModified content="2024-09-05T00:00:00+00:00"><meta itemprop=wordCount content="70"><meta itemprop=keywords content="Homelab"><title>Reset and Restart |
|
||||
Comprofix</title><link rel=apple-touch-icon sizes=180x180 href=/img/favicons/apple-touch-icon.png><link rel=icon type=image/png sizes=32x32 href=/img/favicons/favicon-32x32.png><link rel=icon type=image/png sizes=16x16 href=/img/favicons/favicon-16x16.png><link rel="shortcut icon" href=/img/favicons/favicon.ico><meta name=apple-mobile-web-app-title content="Comprofix"><meta name=application-name content="Comprofix"><meta name=msapplication-TileColor content="#da532c"><meta name=msapplication-config content="/img/favicons/browserconfig.xml"><meta name=theme-color content="#ffffff"><link rel=preconnect href=https://fonts.googleapis.com><link rel=dns-prefetch href=https://fonts.googleapis.com><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=dns-prefetch href=https://fonts.gstatic.com><link rel=preconnect href=https://cdn.jsdelivr.net><link rel=dns-prefetch href=https://cdn.jsdelivr.net><link rel=stylesheet href=https://comprofix.com/css/main.min.f77a4050bafcd273d43d6737e174f344bd91a213d9bc92b097cb31fc7dbe1cb9.css><link rel=stylesheet href="https://fonts.googleapis.com/css2?family=Lato:wght@300;400&family=Source+Sans+Pro:wght@400;600;700;900&display=swap"><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.7.1/css/all.min.css><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/tocbot@4.32.2/dist/tocbot.min.css><link rel=stylesheet href=/><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/glightbox@3.3.0/dist/css/glightbox.min.css><script src=/js/modules/theme.js></script><script src=https://cdn.jsdelivr.net/npm/glightbox@3.3.0/dist/js/glightbox.min.js></script><script src=https://cdn.jsdelivr.net/npm/clipboard@2.0.11/dist/clipboard.min.js></script><script src=https://cdn.jsdelivr.net/npm/dayjs@1.11.13/dayjs.min.js></script><script src=https://cdn.jsdelivr.net/npm/dayjs@1.11.13/locale/en.js></script><script src=https://cdn.jsdelivr.net/npm/dayjs@1.11.13/plugin/relativeTime.js></script><script src=https://cdn.jsdelivr.net/npm/dayjs@1.11.13/plugin/localizedFormat.js></script><script defer src=/js/post.js></script></head><body><aside aria-label=Sidebar id=sidebar class="d-flex flex-column align-items-end"><header class=profile-wrapper><a href=/ id=avatar class=rounded-circle><img src=/img/man-logo.png width=112 height=112 alt=avatar onerror='this.style.display="none"'></a>
|
||||
<a class="site-title d-block" href=/>Comprofix</a><p class="site-subtitle fst-italic mb-0">Geek | Nerd | Systems Administrator | IT Specialist</p></header><nav class="flex-column flex-grow-1 w-100 ps-0"><ul class=nav><li class=nav-item><a href=/ class=nav-link><i class="fa-fw fas fa-house"></i>
|
||||
<span>HOME</span></a></li><li class=nav-item><a href=/categories/ class=nav-link><i class="fa-fw fas fa-stream"></i>
|
||||
<span>CATEGORIES</span></a></li><li class=nav-item><a href=/tags/ class=nav-link><i class="fa-fw fas fa-tags"></i>
|
||||
<span>TAGS</span></a></li><li class=nav-item><a href=/archives/ class=nav-link><i class="fa-fw fas fa-archive"></i>
|
||||
<span>ARCHIVES</span></a></li><li class=nav-item><a href=/about/ class=nav-link><i class="fa-fw fas fa-info-circle"></i>
|
||||
<span>ABOUT</span></a></li></ul></nav><div class="sidebar-bottom d-flex flex-wrap align-items-center w-100"><button type=button class="btn btn-link nav-link" aria-label="Switch Mode" id=mode-toggle>
|
||||
<i class="fas fa-adjust"></i>
|
||||
</button>
|
||||
<span class=icon-border></span>
|
||||
<a href=https://git.comprofix.com/mmckinnon aria-label=custom target=_blank rel="noopener noreferrer"><i class="fab fa-git-alt"></i>
|
||||
</a><a href=https://twitter.com/mckinnon81 aria-label=twitter target=_blank rel="noopener noreferrer"><i class="fab fa-twitter"></i>
|
||||
</a><a href=https://comprofix.com/index.xml aria-label=rss><i class="fas fa-rss"></i></a></div></aside><div id=main-wrapper class="d-flex justify-content-center"><div class="container d-flex flex-column px-xxl-5"><header id=topbar-wrapper class=flex-shrink-0 aria-label="Top Bar"><div id=topbar class="d-flex align-items-center justify-content-between px-lg-3 h-100"><nav id=breadcrumb aria-label=Breadcrumb><span><a href=/>Home</a>
|
||||
</span><span>Reset and Restart</span></nav><button type=button id=sidebar-trigger class="btn btn-link" aria-label=Sidebar>
|
||||
<i class="fas fa-bars fa-fw"></i></button><div id=topbar-title>Reset and Restart</div><button type=button id=search-trigger class="btn btn-link" aria-label=Search>
|
||||
<i class="fas fa-search fa-fw"></i>
|
||||
</button>
|
||||
<search id=search class="align-items-center ms-3 ms-lg-0"><i class="fas fa-search fa-fw"></i>
|
||||
<input class=form-control id=search-input type=search aria-label=search autocomplete=off placeholder=Search...>
|
||||
</search><button type=button class="btn btn-link text-decoration-none" id=search-cancel>Cancel</button></div></header><div class="row flex-grow-1"><main aria-label="Main Content" class="col-12 col-lg-11 col-xl-9 px-md-4"><article class=px-1 data-toc=false><header><h1 data-toc-skip>Reset and Restart</h1><div class="post-meta text-muted"><span>Posted
|
||||
<time data-ts=1725494400 data-df=ll data-bs-toggle=tooltip data-bs-placement=bottom>%b %e, %Y</time></span><div class="mt-3 mb-3"><img src=/post/2024-09-05-resetrestart/reset.jpg class=preview-img alt="Preview Image" w=1200 h=630></div><div class="d-flex justify-content-between"><span>By
|
||||
<em>Comprofix</em></span><div><span class=readtime data-bs-toggle=tooltip data-bs-placement=bottom title="68 words"><em>1 min</em> read</span></div></div></div></header><div class=content><p>It’s time to reset the website and start building my blog again. I have had this domain for a number of years and it has always been used for my E-Mail.</p><p>But the website has been more of a play ground for experimenting and testing.</p><p>I am now hoping to get into the habit of writing more blog posts as I document my journey as I experiment with my HomeLab.</p></div><div class="post-tail-wrapper text-muted"><div class="post-meta mb-3"><i class="far fa-folder-open fa-fw me-1"></i>
|
||||
<a href=/categories/homelab/>homelab</a></div><div class=post-tags><i class="fa fa-tags fa-fw me-1"></i>
|
||||
<a href=/tags/homelab/ class="post-tag no-text-decoration">homelab</a></div><div class="post-tail-bottom d-flex justify-content-between align-items-center mt-5 pb-2"><div class=license-wrapper>This post is licensed under <a href=https://creativecommons.org/licenses/by/4.0/>CC BY 4.0</a> by the author.</div></div></div></article></main><aside aria-label=Panel id=panel-wrapper class="col-xl-3 ps-2 text-muted"><div class=access><section id=access-lastmod><h2 class=panel-heading>Recently Updated</h2><ul class="content list-unstyled ps-0 pb-1 ms-1 mt-2"><li class="text-truncate lh-lg"><a href=/post/2024-09-21-websitedeployment/>Continuous Integration & Continuous Deployment</a></li><li class="text-truncate lh-lg"><a href=/post/2024-09-05-resetrestart/>Reset and Restart</a></li></ul></section><section><h2 class=panel-heading>Trending Tags</h2><div class="d-flex flex-wrap mt-3 mb-1 me-3"><a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/cd/>cd</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/ci/>ci</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-deployment/>continuous deployment</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-integration/>continuous integration</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/docker/>docker</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/git/>git</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/homelab/>homelab</a></div></section></div></aside></div><div class=row><div id=tail-wrapper class="col-12 col-lg-11 col-xl-9 px-md-4"><aside id=related-posts aria-labelledby=related-label><h3 class=mb-4 id=related-label>Further Reading</h3><nav class="row row-cols-1 row-cols-md-2 row-cols-xl-3 g-4 mb-4"><article class=col><a href=/post/2024-09-21-websitedeployment/ class="post-preview card h-100"><div class=card-body><time data-ts=1726876800 data-df=ll>%b %e, %Y</time><h4 class="pt-0 my-2">Continuous Integration & Continuous Deployment</h4><div class=text-muted><p>Since the reset of the website, I have been working on getting it to auto build and deploy using Gitea Actions. Which is similar and compatible to GitHub Actions Before implementing the action it was …</p></div></div></a></article></nav></aside><nav class="post-navigation d-flex justify-content-between" aria-label="Post Navigation"><div class="btn btn-outline-primary disabled" aria-label=Older><p>-</p></div><a href=/post/2024-09-21-websitedeployment/ class="btn btn-outline-primary" aria-label=Newer><p>Continuous Integration & Continuous Deployment</p></a></nav><footer aria-label="Site Info" class="d-flex flex-column justify-content-center text-muted
|
||||
flex-lg-row justify-content-lg-between align-items-lg-center pb-lg-3"><p>©
|
||||
<time>2025</time>
|
||||
<a href=https://comprofix.com>Comprofix</a>.
|
||||
<span data-bs-toggle=tooltip data-bs-placement=top title="Except where otherwise noted, the blog posts on this site are licensed under the Creative Commons Attribution 4.0 International (CC BY 4.0) License by the author.">Some rights reserved.</span></p><p>Using the <a data-bs-toggle=tooltip data-bs-placement=top title=v1.0.2 href=https://github.com/geekifan/hugo-theme-chirpy target=_blank rel=noopener>Chirpy</a> theme for <a href=https://gohugo.io/ target=_blank rel=noopener>Hugo</a>.</p></footer></div></div><div id=search-result-wrapper class="d-flex justify-content-center d-none"><div class="col-11 content"><div id=search-hints><section><h2 class=panel-heading>Trending Tags</h2><div class="d-flex flex-wrap mt-3 mb-1 me-3"><a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/cd/>cd</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/ci/>ci</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-deployment/>continuous deployment</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/continuous-integration/>continuous integration</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/docker/>docker</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/git/>git</a>
|
||||
<a class="post-tag btn btn-outline-primary" href=https://comprofix.com/tags/homelab/>homelab</a></div></section></div><div id=search-results class="d-flex flex-wrap justify-content-center text-muted mt-3"></div></div></div><script>const DEFAULT_CONFIG={search:{minChars:1,maxResults:5,fields:{title:!0,description:!0,section:!0,contents:!0},strictMode:!0}};class FastSearch{constructor({searchInput:e,resultsContainer:t,json:n,searchResultTemplate:s=null,noResultsText:o=null}){this.searchInput=e,this.resultsContainer=t,this.json=n,this.searchResultTemplate=s,this.noResultsText=o,this.init()}init(){this.loadSearchIndex(),this.searchInput.addEventListener("input",e=>{if(!this.searchIndex){this.resultsContainer.innerHTML='<li class="search-message">Loading search index...</li>';return}this.performSearch(this.searchInput.value)})}async loadSearchIndex(){try{const e=await fetch(this.json);if(!e.ok)throw new Error("Failed to load search index");const t=await e.json();this.searchIndex=t.map(e=>({...e,searchableTitle:e.title?.toLowerCase()||"",searchableDesc:e.desc?.toLowerCase()||"",searchableSection:e.section?.toLowerCase()||"",searchableContents:e.contents?.toLowerCase()||""}))}catch(e){console.error("Error loading search index:",e),this.resultsContainer.innerHTML='<li class="search-message">Error loading search index...</li>'}}escapeHtml(e){return e?e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"):""}containsTerm(e,t){return!!e&&!!t&&e.includes(t)}performSearch(e){if(e=e.toLowerCase().trim(),!e||!this.searchIndex||e.length<DEFAULT_CONFIG.search.minChars){this.resultsContainer.innerHTML="";return}const s=[e,...e.split(/\s+/).filter(e=>e.length>0)],t=[...new Set(s)],o=DEFAULT_CONFIG.search.strictMode,n=this.searchIndex.map(e=>{const s=this.checkFieldsForMatch(e,t[0]);if(o&&!s)return{item:e,score:0,matched:!1};let n=0,i=0,a=!1;t.forEach((t,s)=>{const r=s===0,o=this.checkFieldsForMatch(e,t);o&&(i++,o.inTitle&&(n+=r?10:5,a=!0),o.inDesc&&(n+=r?8:4),o.inSection&&(n+=r?6:3),o.inContents&&(n+=r?4:2))});const r=i/t.length,c=n*r*(a?1.5:1);return{item:e,score:c,matched:s}}).filter(e=>e.matched).sort((e,t)=>t.score-e.score).slice(0,DEFAULT_CONFIG.search.maxResults).map(e=>e.item);if(n.length===0){this.resultsContainer.innerHTML='<p class="mt-5">Oops! No results found.</p>';return}const i=n.map(e=>{let t="",n="";return e.categories&&(t=e.categories.join(", "),t=`<div class="me-sm-4"><i class="far fa-folder fa-fw"></i>${t}</div>`),e.tags&&(n=e.tags.join(", "),n=`<div><i class="fa fa-tag fa-fw"></i>${n}</div>`),`
|
||||
<article class="px-1 px-sm-2 px-lg-4 px-xl-0">
|
||||
<header>
|
||||
<h2><a href="${this.escapeHtml(e.permalink)}">${this.escapeHtml(e.title)}</a></h2>
|
||||
<div class="post-meta d-flex flex-column flex-sm-row text-muted mt-1 mb-1">
|
||||
${t}
|
||||
${n}
|
||||
</div>
|
||||
</header>
|
||||
<p>${this.escapeHtml(e.contents)}</p>
|
||||
</article>
|
||||
`}).join("");this.resultsContainer.innerHTML=i}checkFieldsForMatch(e,t){const n={inTitle:!1,inDesc:!1,inSection:!1,inContents:!1};return DEFAULT_CONFIG.search.fields.title&&this.containsTerm(e.searchableTitle,t)&&(n.inTitle=!0),DEFAULT_CONFIG.search.fields.description&&this.containsTerm(e.searchableDesc,t)&&(n.inDesc=!0),DEFAULT_CONFIG.search.fields.section&&this.containsTerm(e.searchableSection,t)&&(n.inSection=!0),DEFAULT_CONFIG.search.fields.contents&&this.containsTerm(e.searchableContents,t)&&(n.inContents=!0),!!(n.inTitle||n.inDesc||n.inSection||n.inContents)&&n}}const search=new FastSearch({searchInput:document.getElementById("search-input"),resultsContainer:document.getElementById("search-results"),json:`/index.json`})</script></div><aside aria-label="Scroll to Top"><button id=back-to-top type=button class="btn btn-lg btn-box-shadow">
|
||||
<i class="fas fa-angle-up"></i></button></aside></div><div id=mask class="d-none position-fixed w-100 h-100 z-1"></div></body></html>
|
BIN
public/post/2024-09-05-resetrestart/reset.jpg
Normal file
After Width: | Height: | Size: 42 KiB |
BIN
public/post/2024-09-21-websitedeployment/devops.png
Normal file
After Width: | Height: | Size: 51 KiB |
After Width: | Height: | Size: 24 KiB |