2023-09-20 17:17:33 -04:00
<!DOCTYPE html>
< html lang = "en" dir = "auto" >
< head > < meta charset = "utf-8" >
< meta http-equiv = "X-UA-Compatible" content = "IE=edge" >
< meta name = "viewport" content = "width=device-width, initial-scale=1, shrink-to-fit=no" >
< meta name = "robots" content = "index, follow" >
2023-09-25 17:19:09 -04:00
< title > Posts | Norm-working Packets 💾< / title >
2023-09-20 17:17:33 -04:00
< meta name = "keywords" content = "" >
2023-09-25 17:19:09 -04:00
< meta name = "description" content = "Posts - Norm-working Packets 💾" >
2023-09-20 17:17:33 -04:00
< meta name = "author" content = "Norm Rasmussen" >
< link rel = "canonical" href = "./posts.html" >
< link crossorigin = "anonymous" href = "./assets/css/stylesheet.5cfc680b1eeaeef9efbced92d46c2a9e876b72ee14fba85846afc4cff9e6e6f8.css" integrity = "sha256-XPxoCx7q7vnvvO2S1Gwqnodrcu4U+6hYRq/Ez/nm5vg=" rel = "preload stylesheet" as = "style" >
2023-09-22 17:44:49 -04:00
< link rel = "icon" href = "./favicon.ico" >
2023-09-20 17:17:33 -04:00
< link rel = "icon" type = "image/png" sizes = "16x16" href = "./favicon-16x16.png" >
2023-09-22 17:44:49 -04:00
< link rel = "icon" type = "image/png" sizes = "32x32" href = "./rsmsncircles.ico" >
2023-09-20 17:17:33 -04:00
< link rel = "apple-touch-icon" href = "./apple-touch-icon.png" >
< link rel = "mask-icon" href = "./safari-pinned-tab.svg" >
< meta name = "theme-color" content = "#2e2e33" >
< meta name = "msapplication-TileColor" content = "#2e2e33" >
< link rel = "alternate" type = "application/rss+xml" href = "./posts/index.xml" >
< noscript >
< style >
#theme-toggle,
.top-link {
display: none;
}
< / style >
2023-09-22 17:44:49 -04:00
< / noscript >
< script async src = "https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20" > < / script >
< script >
var doNotTrack = false;
if (!doNotTrack) {
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
}
< / script >
< meta property = "og:title" content = "Posts" / >
2023-09-25 17:19:09 -04:00
< meta property = "og:description" content = "A semi-technical blog & series of experiences working in tech and my homelab" / >
2023-09-20 17:17:33 -04:00
< meta property = "og:type" content = "website" / >
2023-09-25 17:19:09 -04:00
< meta property = "og:url" content = "/posts.html" / > < meta property = "og:site_name" content = "Norm-working Packets" / >
2023-09-20 17:17:33 -04:00
< meta name = "twitter:card" content = "summary" / >
< meta name = "twitter:title" content = "Posts" / >
2023-09-25 17:19:09 -04:00
< meta name = "twitter:description" content = "A semi-technical blog & series of experiences working in tech and my homelab" / >
2023-09-20 17:17:33 -04:00
< script type = "application/ld+json" >
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1 ,
"name": "Posts",
"item": "/posts.html"
}
]
}
< / script >
< / head >
< body class = "list dark" id = "top" >
< script >
if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
}
< / script >
< header class = "header" >
< nav class = "nav" >
< div class = "logo" >
2023-09-25 17:19:09 -04:00
< a href = "./" accesskey = "h" title = "Norm-working Packets 💾 (Alt + H)" > Norm-working Packets 💾< / a >
2023-09-20 17:17:33 -04:00
< div class = "logo-switches" >
< button id = "theme-toggle" accesskey = "t" title = "(Alt + T)" >
< svg id = "moon" xmlns = "http://www.w3.org/2000/svg" width = "24" height = "18" viewBox = "0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
< path d = "M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" > < / path >
< / svg >
< svg id = "sun" xmlns = "http://www.w3.org/2000/svg" width = "24" height = "18" viewBox = "0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
< circle cx = "12" cy = "12" r = "5" > < / circle >
< line x1 = "12" y1 = "1" x2 = "12" y2 = "3" > < / line >
< line x1 = "12" y1 = "21" x2 = "12" y2 = "23" > < / line >
< line x1 = "4.22" y1 = "4.22" x2 = "5.64" y2 = "5.64" > < / line >
< line x1 = "18.36" y1 = "18.36" x2 = "19.78" y2 = "19.78" > < / line >
< line x1 = "1" y1 = "12" x2 = "3" y2 = "12" > < / line >
< line x1 = "21" y1 = "12" x2 = "23" y2 = "12" > < / line >
< line x1 = "4.22" y1 = "19.78" x2 = "5.64" y2 = "18.36" > < / line >
< line x1 = "18.36" y1 = "5.64" x2 = "19.78" y2 = "4.22" > < / line >
< / svg >
< / button >
< / div >
< / div >
< ul id = "menu" >
< / ul >
< / nav >
< / header >
< main class = "main" >
< header class = "page-header" >
< h1 >
Posts
< / h1 >
< / header >
< article class = "post-entry" >
2023-09-27 17:07:31 -04:00
< figure class = "entry-cover" > < img loading = "lazy" src = "./new-website-cover.png" alt = "Add explainshell.com to your list of favorite websites! Right behind regex101.com." >
2023-09-25 17:19:09 -04:00
< / figure >
< header class = "entry-header" >
2023-09-27 17:07:31 -04:00
< h2 > New Favorite Website!
2023-09-25 17:19:09 -04:00
< / h2 >
< / header >
< div class = "entry-content" >
2023-09-27 17:07:31 -04:00
< p > For the longest time, I had Regex101 as a bookmarked website for (almost) daily use. Not only does it help me build muscle memory for using regex queries without banging my head against the wall with a bunch of print and debug statements, but if I happen to be in a different language - say in javascript instead of python - it gives you the correct syntax for using regex in that language....< / p >
2023-09-25 17:19:09 -04:00
< / div >
2023-09-27 17:07:31 -04:00
< footer class = "entry-footer" > < span title = '2023-09-27 10:07:01 -0400 EDT' > September 27, 2023< / span > · 2 min · 377 words · Me< / footer >
< a class = "entry-link" aria-label = "post link to New Favorite Website!" href = "./posts/new-favorite-website.html" > < / a >
2023-09-25 17:19:09 -04:00
< / article >
< article class = "post-entry" >
< figure class = "entry-cover" > < img loading = "lazy" src = "./multiple-git-cover-img.png" alt = "git commands" >
2023-09-22 17:44:49 -04:00
< / figure >
< header class = "entry-header" >
< h2 > Pushing a Single Local Git Repo to Multiple Remote Repos
< / h2 >
< / header >
< div class = "entry-content" >
< p > Why push to multiple repos? Do want to use both Github & and a Self-hosted Git Repo? Here’ s how I’ ve been doing it!
I really enjoy self-hosting services that I use everyday. One of those includes a git-style version control software. In my case, I’ ve been running Gitea for a few years now and have been really satisfied with everything (except for that one time that an update broke all my templates)....< / p >
< / div >
< footer class = "entry-footer" > < span title = '2023-09-22 15:07:10 -0400 EDT' > September 22, 2023< / span > · 2 min · 403 words · Me< / footer >
< a class = "entry-link" aria-label = "post link to Pushing a Single Local Git Repo to Multiple Remote Repos" href = "./posts/multiple_git_remotes.html" > < / a >
< / article >
< article class = "post-entry" >
2023-09-20 17:17:33 -04:00
< header class = "entry-header" >
< h2 > Trouble Hosting Hugo with Nginx
< / h2 >
< / header >
< div class = "entry-content" >
2023-09-22 17:44:49 -04:00
< p > Intro For the last 3 days, I have been spending a few hours after working trying to figure out why my brand new Hugo site was not loading correctly on my sub-domain. For context, I use Nginx to host all my apps and servers, most of them using reverse proxy protocols such as $proxy_host, $forward_scheme, and $port. There are a few more and I’ m happy to share some reverse proxy nginx config files....< / p >
2023-09-20 17:17:33 -04:00
< / div >
2023-09-22 17:44:49 -04:00
< footer class = "entry-footer" > < span title = '2023-09-20 11:33:22 -0400 EDT' > September 20, 2023< / span > · 5 min · 888 words · Me< / footer >
2023-09-20 17:17:33 -04:00
< a class = "entry-link" aria-label = "post link to Trouble Hosting Hugo with Nginx" href = "./posts/hosting_hugo_troubles.html" > < / a >
< / article >
< article class = "post-entry" >
2023-09-25 17:19:09 -04:00
< figure class = "entry-cover" > < img loading = "lazy" src = "./npm_to_nginx.png" alt = "NginxProxyManger to Nginx" >
2023-09-22 17:44:49 -04:00
< / figure >
2023-09-20 17:17:33 -04:00
< header class = "entry-header" >
< h2 > Tutorial: Move from NginxProxyManager to Nginx
< / h2 >
< / header >
< div class = "entry-content" >
2023-09-22 17:44:49 -04:00
< p > Goal A Tutorial Repo for migrating your Nginx Proxy Manager proxy setup to Nginx. I wrote this originally for this reddit post and to post this my Github profile. Thought my website would also be a good place to share it for any passers-by.
To give clear instructions to help users migrate from using Nginx Proxy Manager (NPM) to standard Nginx. This tutorial is not exhaustive and there are many other implementations of this transition....< / p >
2023-09-20 17:17:33 -04:00
< / div >
2023-09-22 17:44:49 -04:00
< footer class = "entry-footer" > < span title = '2023-08-05 15:23:51 -0500 -0500' > August 5, 2023< / span > · 8 min · 1635 words · Me< / footer >
2023-09-20 17:17:33 -04:00
< a class = "entry-link" aria-label = "post link to Tutorial: Move from NginxProxyManager to Nginx" href = "./posts/npm_to_nginx_tutorial.html" > < / a >
< / article >
< / main >
< footer class = "footer" >
2023-09-25 17:19:09 -04:00
< span > © 2023 < a href = "./" > Norm-working Packets 💾< / a > < / span >
2023-09-20 17:17:33 -04:00
< span >
Powered by
< a href = "https://gohugo.io/" rel = "noopener noreferrer" target = "_blank" > Hugo< / a > &
< a href = "https://github.com/adityatelange/hugo-PaperMod/" rel = "noopener" target = "_blank" > PaperMod< / a >
< / span >
< / footer >
< a href = "#top" aria-label = "go to top" title = "Go to Top (Alt + G)" class = "top-link" id = "top-link" accesskey = "g" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 12 6" fill = "currentColor" >
< path d = "M12 6H0l6-6z" / >
< / svg >
< / a >
< script >
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
< / script >
< script >
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
< / script >
< script >
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
< / script >
< / body >
< / html >