Cleaned up the image files. Cover images go under /static and in-post images are now in /content/posts/img. Edited and rebuilt some existing posts for this structure. I also removed my birdnet post and put it back in drafts so I can publish it as some future date.

This commit is contained in:
Norm Rasmussen
2023-09-27 17:07:31 -04:00
parent f7e382d719
commit 20196dadeb
74 changed files with 760 additions and 1952 deletions

Binary file not shown.

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "themes/hugo-shortcode-roneo-collection"]
path = themes/hugo-shortcode-roneo-collection
url = https://gitlab.com/Roneo/hugo-shortcode-roneo-collection.git

View File

@ -5,7 +5,7 @@ tags: [""]
author: "Me"
showToc: true
TocOpen: false
draft: false
draft: true
hidemeta: false
description: '{{ .File.ContentBaseName }}'
disableHLJS: true # to disable highlightjs
@ -20,9 +20,9 @@ ShowWordCount: true
ShowRssButtonInSectionTermList: true
UseHugoToc: true
cover:
image: "<image path/url>" # image path/url
alt: "<alt text>" # alt text
caption: "<text>" # display caption under cover
relative: false # when using page bundles set this to true
hidden: true # only hide on current single page
image: "<image path/url>"
alt: "<alt text>"
caption: "<text>"
relative: false
hidden: true
---

View File

@ -5,7 +5,7 @@ tags: ["homeassistant", "python", "diy"]
author: "Me"
showToc: true
TocOpen: false
draft: false
draft: true
hidemeta: false
description: 'Learn how to take BirdNET-Pi Detections to create and display entities in HomeAssistant.'
disableHLJS: true # to disable highlightjs
@ -83,7 +83,7 @@ information that is pertinent to your own uses.
Here is how I've setup my MQTT payload from BirdNET-Pi Settings:
![Notification Settings](static/birdnet_mqtt_settings.png, "MQTT Settings in BirdNET-Pi")
![Notification Settings](/posts/img/birdnet_mqtt_settings.png, "MQTT Settings in BirdNET-Pi")
Here it is in text form:

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

View File

Before

Width:  |  Height:  |  Size: 207 KiB

After

Width:  |  Height:  |  Size: 207 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 KiB

View File

@ -0,0 +1,75 @@
---
title: 'New Favorite Website!'
date: 2023-09-27T10:07:01-04:00
tags: ["resources", "shell", "commandline"]
author: "Me"
showToc: false
TocOpen: false
draft: false
hidemeta: false
description: 'Regex101 has long been one of my favorite reference tools. As of today, I will be adding ExplainShell to the list of must-use tools!.'
disableHLJS: true # to disable highlightjs
disableShare: false
disableHLJS: false
hideSummary: false
searchHidden: true
ShowReadingTime: true
ShowBreadCrumbs: true
ShowPostNavLinks: true
ShowWordCount: true
ShowRssButtonInSectionTermList: true
UseHugoToc: true
cover:
image: "new-website-cover.png"
alt: "Add explainshell.com to your list of favorite websites! Right behind regex101.com."
caption: "ExplainShell and Regex101 are the most needed tools in your arsenal."
relative: false # when using page bundles set this to true
hidden: true # only hide on current single page
---
For the longest time, I had [Regex101](www.regex101.com) 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. There are even [spin-off projects](https://github.com/nedrysoft/regex101) to use
this tool while offline.
You can even test it again the strings you do (or don't!) want to verify against. This website is beyond cool.
So this morning, when I saw [Jérémy Garniaux](https://mapstodon.space/@jeremy) ask if there was an "explain shell" for Vim or
Neovim, this was the Regex101 but for shell commands.
<iframe
src="https://mapstodon.space/@jeremy/111135981133166060/embed"
width="100%" height="400px" style="border:none;"></iframe>
{{< box info >}}
_Side Note: it took me way too long how to figure out how to embed an iframe directly into Hugo without creating a new shortcode template and other suggestions. I'll be sure to post about that in the future._
{{< /box >}}
When you first load ExplainShell.com, you're greeted with a clean, minimal interface with some explanation and a very obvious
search bar.
![ExplainShell Homepage](../posts/img/explain-shell-homepage.png)
For those new to the command line, it also shares some suggested queries to search with. As you read over the results, you
can hover on the different elements of the command and it will highlight the explanation below. I mean, look at how clean and
nice that is!
![ExplainShell Results](../posts/img/explain-shell-interface.png)
As many other command line users are apt to do, I use the man page all the time for commands and flags I'm unsure of, or need
a refresher on. While knowing what a certain flag is and what it does for a specific command is supremely helpful, I find the
man pages a tad bit overwhelming. You can always `grep` for what you're looking for, but even then I've found times where it
only pulls out half of the full description, or even just the line the definition is on.
So the fact that this resources can extract exactly what you need in your command from a man page without digging through
every line, is extremely useful! Going back to Jérémy's original toot and question... who is going to make this same tool for
Neovim?
<style>
.box-shortcode {
color: #e8e8e8;
border: none;
}
</style>

View File

@ -0,0 +1,67 @@
---
title: 'Useful Commands'
date: 2023-09-26T12:04:05-04:00
tags: ["shell", "script", "command line"]
author: "Me"
endbleGitInfo: true
showToc: true
TocOpen: false
draft: true
hidemeta: false
description: 'A collection and living document of useful shell commands that I use.'
disableHLJS: true # to disable highlightjs
disableShare: false
disableHLJS: false
hideSummary: false
searchHidden: true
ShowReadingTime: true
ShowBreadCrumbs: true
ShowPostNavLinks: true
ShowWordCount: true
ShowRssButtonInSectionTermList: true
UseHugoToc: true
cover:
image: "useful_commands.png" # image path/url
alt: "<alt text>" # alt text
caption: "<text>" # display caption under cover
relative: false # when using page bundles set this to true
hidden: true # only hide on current single page
---
This post will act a bit like a living document of all the useful commands and short scripts that I use regularly. Some will
be as simple as `ls | wc -l` which counts the number of files in your current working directory, and others will be better
suited to small scripts. As this grows, I will hopefully break these into more logical categories.
## Find by File type
This command will find every file in your current working directory by the specified file extension.
```bash
find . -type f -name '*.txt'
```
As a bonus, if you wanted find everything _except_ that file extension, you can add a `!` before name. In other words:
```bash
find . type -f ! -name '*.txt'
```
I usually use commands like this to clean up files that I don't need, be it file extensions I don't need anymore, or anything
with a specific word in its file name, so adding `-delete` at the end of the command lets me delete those files.
```bash
find . type -f -name '*.txt' -delete
```
## List Files & Dir +
Using `ls` is a _key_ command for anyone that works within a command line. If you've used `ls` before, then you've also
likely used or created an alias for `ls -la` which will display the files, their user:group ownership, permissions
(`drwxrwxrwx`) and dates created + modified.
What if you just want to found the number of files? Not measuring disk usage or free space, but the equivalent of `len` for
an array, the array being your current working directory. Enter `wc`!
```bash
ls | wc- l
```

4
go.mod Normal file
View File

@ -0,0 +1,4 @@
module github.com/Normanras/rsmsn_blog
go 1.19

2
go.sum Normal file
View File

@ -0,0 +1,2 @@
github.com/martignoni/hugo-notice v0.0.0-20230829114050-2d7d7460bc60 h1:cPU84OKIQJMEfuvgbAem94J5YDn3UBDrth17VM9I0QA=
github.com/martignoni/hugo-notice v0.0.0-20230829114050-2d7d7460bc60/go.mod h1:MIQPOMgEcbyRC0gNLzQFSgrS+wIy3RuQ/HbaZYtTOKU=

View File

@ -10,6 +10,18 @@ paginate: 7
googleAnalytics: G-X8VR5M0K20
# Allow html to be rendered in Markdown files
markup:
goldmark:
renderer:
unsafe: true
# Various Module Imports
module:
imports:
# - path: github.com/martignoni/hugo-notice
- path: hugo-shortcode-roneo-collection
params:
env: production
title: Norm-working Packets
@ -30,6 +42,3 @@ params:
url: "https://fosstodon.org/@notnorm"
- name: "Github"
url: "https://github.com/Normanras"
# analytics:
# google:
# SiteVerificationTag:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 236 KiB

After

Width:  |  Height:  |  Size: 238 KiB

45
public/bundle.min.js vendored

File diff suppressed because one or more lines are too long

View File

@ -1,134 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Categories :: Rsmsn Blog</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="" />
<meta name="keywords" content="" />
<meta name="robots" content="noodp" />
<link rel="canonical" href="https://selfhosted.rsmsn.co/categories/" />
<link rel="stylesheet" href="https://selfhosted.rsmsn.co/styles.css">
<link rel="shortcut icon" href="https://selfhosted.rsmsn.co/img/theme-colors/orange.png">
<link rel="apple-touch-icon" href="https://selfhosted.rsmsn.co/img/theme-colors/orange.png">
<meta name="twitter:card" content="summary" />
<meta property="og:locale" content="en" />
<meta property="og:type" content="website" />
<meta property="og:title" content="Categories">
<meta property="og:description" content="" />
<meta property="og:url" content="https://selfhosted.rsmsn.co/categories/" />
<meta property="og:site_name" content="Rsmsn Blog" />
<meta property="og:image" content="img/favicon/%!s().png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627">
<link href="../categories/index.xml" rel="alternate" type="application/rss+xml" title="Rsmsn Blog" />
</head>
<body class="">
<div class="container headings--one-size">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://selfhosted.rsmsn.co/">
<div class="logo">
Terminal
</div>
</a>
</div>
</div>
</header>
<div class="content">
<div class="terms">
<h1>Categories</h1>
<ul>
</ul>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright">
<span>© 2023 Powered by <a href="https://gohugo.io">Hugo</a></span>
<span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> made by <a href="https://github.com/panr" target="_blank">panr</a></span>
</div>
</div>
</footer>
<script type="text/javascript" src="../bundle.min.js"></script>
</div>
</body>
</html>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 189 B

View File

@ -2,7 +2,7 @@
<html lang="en" dir="auto">
<head>
<meta name="generator" content="Hugo 0.118.2"><meta charset="utf-8">
<meta name="generator" content="Hugo 0.119.0"><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">
@ -137,18 +137,17 @@ if (!doNotTrack) {
</article>
<article class="post-entry">
<figure class="entry-cover"><img loading="lazy" src="./birdnet-homeassistant.png" alt="BirdNET-Pi and HomeAssistant: Happier together!">
<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.">
</figure>
<header class="entry-header">
<h2>Creating a BirdNetPi Dashboard in HomeAssistant - Part 1
<h2>New Favorite Website!
</h2>
</header>
<div class="entry-content">
<p>This is Part One of a Two Part Series. You can find Part Two, here.
What you will need BirdNET-Pi HomeAssistant AppDaemon MQTT Broker (I use Mosquitto) Background In early 2023, at the height of the Raspberry Pi shortage I felt like a king with an extra Rpi laying around, not being used. Im a big fan of any sort of passive intake of information and had been looking around for various citizen science-style projects that can capture information from the world around me....</p>
<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>
</div>
<footer class="entry-footer"><span title='2023-09-25 12:51:55 -0400 EDT'>September 25, 2023</span>&nbsp;·&nbsp;10 min&nbsp;·&nbsp;1953 words&nbsp;·&nbsp;Me</footer>
<a class="entry-link" aria-label="post link to Creating a BirdNetPi Dashboard in HomeAssistant - Part 1" href="./posts/birdnet_homeassistant.html"></a>
<footer class="entry-footer"><span title='2023-09-27 10:07:01 -0400 EDT'>September 27, 2023</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;377 words&nbsp;·&nbsp;Me</footer>
<a class="entry-link" aria-label="post link to New Favorite Website!" href="./posts/new-favorite-website.html"></a>
</article>
<article class="post-entry">

View File

@ -6,14 +6,14 @@
<description>Recent content on Norm-working Packets 💾</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
<lastBuildDate>Mon, 25 Sep 2023 12:51:55 -0400</lastBuildDate><atom:link href="/index.xml" rel="self" type="application/rss+xml" />
<lastBuildDate>Wed, 27 Sep 2023 10:07:01 -0400</lastBuildDate><atom:link href="/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Creating a BirdNetPi Dashboard in HomeAssistant - Part 1</title>
<link>/posts/birdnet_homeassistant.html</link>
<pubDate>Mon, 25 Sep 2023 12:51:55 -0400</pubDate>
<title>New Favorite Website!</title>
<link>/posts/new-favorite-website.html</link>
<pubDate>Wed, 27 Sep 2023 10:07:01 -0400</pubDate>
<guid>/posts/birdnet_homeassistant.html</guid>
<description>Learn how to take BirdNET-Pi Detections to create and display entities in HomeAssistant.</description>
<guid>/posts/new-favorite-website.html</guid>
<description>Regex101 has long been one of my favorite reference tools. As of today, I will be adding ExplainShell to the list of must-use tools!.</description>
</item>
<item>

View File

@ -1 +0,0 @@
let isSidebarExpand=!1,isSidebarShow=!1;function isSidebarExpandStart(){isSidebarExpand=!0}function isSidebarExpandEnd(){isSidebarExpand=!1}function isSidebarExpanding(e){if(!isSidebarExpand)return;const t=e.pageX/window.innerWidth*100;if(t>10&&t<50){const e=100-t;document.querySelector("aside.sidebar").style.width=`${t}%`;const n=getComputedStyle(document.querySelector("article.main")).getPropertyValue("--artile_main_width"),s=n.replace(/[\d.]+/,e);document.querySelector("article.main").style.setProperty("--artile_main_width",s)}}function showSidebar(){document.querySelector("aside.sidebar").style.display="block",isSidebarShow=!0,document.querySelector("button.sidebar-toggle-btn").setAttribute("aria-expanded","true")}function hideSidebar(){isSidebarShow&&(document.querySelector("aside.sidebar").style.display="",isSidebarShow=!1,document.querySelector("button.sidebar-toggle-btn").setAttribute("aria-expanded","false"))}window.addEventListener("load",function(){document.querySelectorAll("button.copy-button").forEach(e=>{e.addEventListener("click",e=>{let t=e.currentTarget;t.getAttribute("state")==="copy"&&(navigator.clipboard.writeText(decodeURI(t.getAttribute("data"))),t.setAttribute("state","copied"),t.textContent="Copied !",window.setTimeout(()=>{t.setAttribute("state","copy"),t.textContent="Copy"},3*1e3))})}),document.querySelector("aside.exapandable").addEventListener("mousedown",isSidebarExpandStart),document.querySelector("aside.exapandable").addEventListener("touchstart",isSidebarExpandStart),window.addEventListener("mousemove",isSidebarExpanding),window.addEventListener("touchmove",isSidebarExpanding),window.addEventListener("mouseup",isSidebarExpandEnd),window.addEventListener("touchend",isSidebarExpandEnd),document.querySelector("button.sidebar-toggle-btn").addEventListener("click",e=>{e.stopPropagation(),e.preventDefault(),e.currentTarget.getAttribute("aria-expanded")==="true"?hideSidebar():showSidebar()}),this.document.querySelector("article.main").addEventListener("click",hideSidebar),this.document.querySelector("article.main").addEventListener("touchstart",hideSidebar),this.document.querySelector("article.main").addEventListener("mousedown",hideSidebar),this.window.addEventListener("resize",()=>{window.innerWidth>900&&(isSidebarShow=!1,document.querySelector("aside.sidebar").style.display="",document.querySelector("button.sidebar-toggle-btn").setAttribute("aria-expanded","false"))}),this.window.addEventListener("resize",()=>{let e=document.querySelector("article.main");const t=e.style.getPropertyValue("--artile_main_width");if(t){const n=t.match(/[\d.]+/)[0];e.style.setProperty("--artile_main_width","");const s=getComputedStyle(e).getPropertyValue("--artile_main_width").replace(/[\d.]+/,n);e.style.setProperty("--artile_main_width",s)}}),document.querySelectorAll("li.dir > span.dir-text").forEach(e=>{e.addEventListener("click",function(){this.parentNode.classList.toggle("opened-dir"),this.parentNode.classList.toggle("closed-dir")})})})

Binary file not shown.

After

Width:  |  Height:  |  Size: 325 KiB

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<title>https://selfhosted.rsmsn.co/</title>
<link rel="canonical" href="https://selfhosted.rsmsn.co/">
<meta name="robots" content="noindex">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=https://selfhosted.rsmsn.co/">
</head>
</html>

View File

@ -111,18 +111,17 @@ if (!doNotTrack) {
</header>
<article class="post-entry">
<figure class="entry-cover"><img loading="lazy" src="./birdnet-homeassistant.png" alt="BirdNET-Pi and HomeAssistant: Happier together!">
<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.">
</figure>
<header class="entry-header">
<h2>Creating a BirdNetPi Dashboard in HomeAssistant - Part 1
<h2>New Favorite Website!
</h2>
</header>
<div class="entry-content">
<p>This is Part One of a Two Part Series. You can find Part Two, here.
What you will need BirdNET-Pi HomeAssistant AppDaemon MQTT Broker (I use Mosquitto) Background In early 2023, at the height of the Raspberry Pi shortage I felt like a king with an extra Rpi laying around, not being used. Im a big fan of any sort of passive intake of information and had been looking around for various citizen science-style projects that can capture information from the world around me....</p>
<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>
</div>
<footer class="entry-footer"><span title='2023-09-25 12:51:55 -0400 EDT'>September 25, 2023</span>&nbsp;·&nbsp;10 min&nbsp;·&nbsp;1953 words&nbsp;·&nbsp;Me</footer>
<a class="entry-link" aria-label="post link to Creating a BirdNetPi Dashboard in HomeAssistant - Part 1" href="./posts/birdnet_homeassistant.html"></a>
<footer class="entry-footer"><span title='2023-09-27 10:07:01 -0400 EDT'>September 27, 2023</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;377 words&nbsp;·&nbsp;Me</footer>
<a class="entry-link" aria-label="post link to New Favorite Website!" href="./posts/new-favorite-website.html"></a>
</article>
<article class="post-entry">

View File

@ -228,7 +228,7 @@ are the possible variables you can pass in an MQTT payload:</p>
process is extremely customizable, which you&rsquo;ll learn more about in the AppDaemon section. Please expand on it and include
information that is pertinent to your own uses.</p>
<p>Here is how I&rsquo;ve setup my MQTT payload from BirdNET-Pi Settings:</p>
<p><img loading="lazy" src="static/birdnet_mqtt_settings.png," alt="Notification Settings" title="MQTT Settings in BirdNET-Pi" />
<p><img loading="lazy" src="../posts/img/birdnet_mqtt_settings.png," alt="Notification Settings" title="MQTT Settings in BirdNET-Pi" />
</p>
<p>Here it is in text form:</p>
<pre tabindex="0"><code class="language-none" data-lang="none">Notification Title: $comname,
@ -420,6 +420,11 @@ dashboard.</p>
<li><a href="../tags/diy.html">diy</a></li>
</ul>
<nav class="paginav">
<a class="prev" href="../posts/new-favorite-website.html">
<span class="title">« Prev</span>
<br>
<span>New Favorite Website!</span>
</a>
<a class="next" href="../posts/multiple_git_remotes.html">
<span class="title">Next »</span>
<br>

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 KiB

View File

@ -1,171 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Posts :: Rsmsn Blog</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="" />
<meta name="keywords" content="" />
<meta name="robots" content="noodp" />
<link rel="canonical" href="https://selfhosted.rsmsn.co/posts/" />
<link rel="stylesheet" href="https://selfhosted.rsmsn.co/styles.css">
<link rel="shortcut icon" href="https://selfhosted.rsmsn.co/img/theme-colors/orange.png">
<link rel="apple-touch-icon" href="https://selfhosted.rsmsn.co/img/theme-colors/orange.png">
<meta name="twitter:card" content="summary" />
<meta property="og:locale" content="en" />
<meta property="og:type" content="website" />
<meta property="og:title" content="Posts">
<meta property="og:description" content="" />
<meta property="og:url" content="https://selfhosted.rsmsn.co/posts/" />
<meta property="og:site_name" content="Rsmsn Blog" />
<meta property="og:image" content="img/favicon/%!s().png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627">
<link href="../posts/index.xml" rel="alternate" type="application/rss+xml" title="Rsmsn Blog" />
</head>
<body class="">
<div class="container headings--one-size">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://selfhosted.rsmsn.co/">
<div class="logo">
Terminal
</div>
</a>
</div>
</div>
</header>
<div class="content">
<div class="posts">
<article class="post on-list">
<h1 class="post-title">
<a href="https://selfhosted.rsmsn.co/posts/npm_to_nginx_tutorial/">Tutorial: Move from NginxProxyManager to Nginx</a>
</h1>
<div class="post-meta"><time class="post-date">2023-08-05</time></div>
<span class="post-tags">
#<a href="https://selfhosted.rsmsn.co/tags/tutorial/">tutorial</a>&nbsp;
#<a href="https://selfhosted.rsmsn.co/tags/self-hosted/">self-hosted</a>&nbsp;
</span>
<div class="post-content">
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.
Goal 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.
</div>
<div>
<a class="read-more button" href="../posts/npm_to_nginx_tutorial/"></a>
</div>
</article>
<div class="pagination">
<div class="pagination__buttons">
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright">
<span>© 2023 Powered by <a href="https://gohugo.io">Hugo</a></span>
<span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> made by <a href="https://github.com/panr" target="_blank">panr</a></span>
</div>
</div>
</footer>
<script type="text/javascript" src="../bundle.min.js"></script>
</div>
</body>
</html>

View File

@ -6,14 +6,14 @@
<description>Recent content in Posts on Norm-working Packets 💾</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
<lastBuildDate>Mon, 25 Sep 2023 12:51:55 -0400</lastBuildDate><atom:link href="/posts/index.xml" rel="self" type="application/rss+xml" />
<lastBuildDate>Wed, 27 Sep 2023 10:07:01 -0400</lastBuildDate><atom:link href="/posts/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Creating a BirdNetPi Dashboard in HomeAssistant - Part 1</title>
<link>/posts/birdnet_homeassistant.html</link>
<pubDate>Mon, 25 Sep 2023 12:51:55 -0400</pubDate>
<title>New Favorite Website!</title>
<link>/posts/new-favorite-website.html</link>
<pubDate>Wed, 27 Sep 2023 10:07:01 -0400</pubDate>
<guid>/posts/birdnet_homeassistant.html</guid>
<description>Learn how to take BirdNET-Pi Detections to create and display entities in HomeAssistant.</description>
<guid>/posts/new-favorite-website.html</guid>
<description>Regex101 has long been one of my favorite reference tools. As of today, I will be adding ExplainShell to the list of must-use tools!.</description>
</item>
<item>

View File

@ -216,10 +216,10 @@ there twice, once for <code>(push)</code> and once for <code>(fetch)</code>.</p>
<li><a href="../tags/commandline.html">commandline</a></li>
</ul>
<nav class="paginav">
<a class="prev" href="../posts/birdnet_homeassistant.html">
<a class="prev" href="../posts/new-favorite-website.html">
<span class="title">« Prev</span>
<br>
<span>Creating a BirdNetPi Dashboard in HomeAssistant - Part 1</span>
<span>New Favorite Website!</span>
</a>
<a class="next" href="../posts/hosting_hugo_troubles.html">
<span class="title">Next »</span>

View File

@ -0,0 +1,387 @@
<!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">
<title>New Favorite Website! | Norm-working Packets 💾</title>
<meta name="keywords" content="resources, shell, commandline">
<meta name="description" content="Regex101 has long been one of my favorite reference tools. As of today, I will be adding ExplainShell to the list of must-use tools!.">
<meta name="author" content="Me">
<link rel="canonical" href="../posts/new-favorite-website.html">
<link crossorigin="anonymous" href="../assets/css/stylesheet.5cfc680b1eeaeef9efbced92d46c2a9e876b72ee14fba85846afc4cff9e6e6f8.css" integrity="sha256-XPxoCx7q7vnvvO2S1Gwqnodrcu4U&#43;6hYRq/Ez/nm5vg=" rel="preload stylesheet" as="style">
<script defer crossorigin="anonymous" src="../assets/js/highlight.f413e19d0714851f6474e7ee9632408e58ac146fbdbe62747134bea2fa3415e0.js" integrity="sha256-9BPhnQcUhR9kdOfuljJAjlisFG&#43;9vmJ0cTS&#43;ovo0FeA="
onload="hljs.initHighlightingOnLoad();"></script>
<link rel="icon" href="../favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="../favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="../rsmsncircles.ico">
<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">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
</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="New Favorite Website!" />
<meta property="og:description" content="Regex101 has long been one of my favorite reference tools. As of today, I will be adding ExplainShell to the list of must-use tools!." />
<meta property="og:type" content="article" />
<meta property="og:url" content="/posts/new-favorite-website.html" />
<meta property="og:image" content="/new-website-cover.png" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2023-09-27T10:07:01-04:00" />
<meta property="article:modified_time" content="2023-09-27T10:07:01-04:00" /><meta property="og:site_name" content="Norm-working Packets" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:image" content="/new-website-cover.png" />
<meta name="twitter:title" content="New Favorite Website!"/>
<meta name="twitter:description" content="Regex101 has long been one of my favorite reference tools. As of today, I will be adding ExplainShell to the list of must-use tools!."/>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1 ,
"name": "New Favorite Website!",
"item": "/posts/new-favorite-website.html"
}
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "New Favorite Website!",
"name": "New Favorite Website!",
"description": "Regex101 has long been one of my favorite reference tools. As of today, I will be adding ExplainShell to the list of must-use tools!.",
"keywords": [
"resources", "shell", "commandline"
],
"articleBody": "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. There are even spin-off projects to use this tool while offline.\nYou can even test it again the strings you do (or dont!) want to verify against. This website is beyond cool.\nSo this morning, when I saw Jérémy Garniaux ask if there was an “explain shell” for Vim or Neovim, this was the Regex101 but for shell commands.\nSide Note: it took me way too long how to figure out how to embed an iframe directly into Hugo without creating a new shortcode template and other suggestions. Ill be sure to post about that in the future.\nWhen you first load ExplainShell.com, youre greeted with a clean, minimal interface with some explanation and a very obvious search bar.\nFor those new to the command line, it also shares some suggested queries to search with. As you read over the results, you can hover on the different elements of the command and it will highlight the explanation below. I mean, look at how clean and nice that is!\nAs many other command line users are apt to do, I use the man page all the time for commands and flags Im unsure of, or need a refresher on. While knowing what a certain flag is and what it does for a specific command is supremely helpful, I find the man pages a tad bit overwhelming. You can always grep for what youre looking for, but even then Ive found times where it only pulls out half of the full description, or even just the line the definition is on.\nSo the fact that this resources can extract exactly what you need in your command from a man page without digging through every line, is extremely useful! Going back to Jérémys original toot and question… who is going to make this same tool for Neovim?\n",
"wordCount" : "377",
"inLanguage": "en",
"image":"/new-website-cover.png","datePublished": "2023-09-27T10:07:01-04:00",
"dateModified": "2023-09-27T10:07:01-04:00",
"author":{
"@type": "Person",
"name": "Me"
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "/posts/new-favorite-website.html"
},
"publisher": {
"@type": "Organization",
"name": "Norm-working Packets 💾",
"logo": {
"@type": "ImageObject",
"url": "/favicon.ico"
}
}
}
</script>
</head>
<body class=" 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">
<a href="../" accesskey="h" title="Norm-working Packets 💾 (Alt + H)">Norm-working Packets 💾</a>
<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">
<article class="post-single">
<header class="post-header">
<div class="breadcrumbs"><a href="../">Home</a></div>
<h1 class="post-title">
New Favorite Website!
</h1>
<div class="post-description">
Regex101 has long been one of my favorite reference tools. As of today, I will be adding ExplainShell to the list of must-use tools!.
</div>
<div class="post-meta"><span title='2023-09-27 10:07:01 -0400 EDT'>September 27, 2023</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;377 words&nbsp;·&nbsp;Me
</div>
</header>
<div class="post-content"><p>For the longest time, I had <a href="www.regex101.com">Regex101</a> 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. There are even <a href="https://github.com/nedrysoft/regex101">spin-off projects</a> to use
this tool while offline.</p>
<p>You can even test it again the strings you do (or don&rsquo;t!) want to verify against. This website is beyond cool.</p>
<p>So this morning, when I saw <a href="https://mapstodon.space/@jeremy">Jérémy Garniaux</a> ask if there was an &ldquo;explain shell&rdquo; for Vim or
Neovim, this was the Regex101 but for shell commands.</p>
<iframe
src="https://mapstodon.space/@jeremy/111135981133166060/embed"
width="100%" height="400px" style="border:none;"></iframe>
<style type="text/css">
.box-shortcode {
padding: 1.6em;
padding-top: 1.4em;
line-height: 1.4em;
margin-top: 1em;
margin-bottom: 2em;
border-radius: 4px;
color: #444;
background: #f3ebe850;
}
.box-title {
margin: -18px -18px 12px;
padding: 4px 18px;
border-radius: 4px 4px 0 0;
font-weight: 700;
color: #fff;
background: #6ab0de;
}
.box-shortcode.warning .box-title {
background: #ff6b6b;
}
.box-shortcode.warning {
background: #ff6b6b4f;
}
.box-shortcode.info .box-title {
background: #0089e488;
}
.box-shortcode.info {
background: #0089e41c;
box-shadow: 3px 3px 5px #0089e410;
}
.box-shortcode.important .box-title {
background: #f7ec2c;
}
.box-shortcode.important {
background: #f7ec2c7d;
}
.box-shortcode.tip .box-title {
background: #a3ffa34d;
}
.box-shortcode.tip {
background: #a3ffa34d;
box-shadow: 3px 3px 5px #0089e410;
}
.icon-box {
display: inline-flex;
align-self: center;
margin-right: 8px;
}
.icon-box img,
.icon-box svg {
height: 1em;
width: 1em;
fill: currentColor;
}
.icon-box img,
.icon-box.baseline svg {
top: 0.125em;
position: relative;
}
.box-shortcode p {
margin-bottom: 0.6em;
}
.box-shortcode p:first-of-type {
display: inline;
}
.box-shortcode p:nth-of-type(2) {
margin-top: 0.6em;
}
.box-shortcode p:last-child {
margin-bottom: 0;
}
</style>
<svg width="0" height="0" display="none" xmlns="http://www.w3.org/2000/svg">
<symbol id="tip-box" viewBox="0 0 512 512" preserveAspectRatio="xMidYMid meet">
<path
d="M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z"/>
</symbol>
<symbol id="important-box" viewBox="0 0 512 512" preserveAspectRatio="xMidYMid meet">
<path
d="M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"/>
</symbol>
<symbol id="warning-box" viewBox="0 0 576 512" preserveAspectRatio="xMidYMid meet">
<path
d="M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"/>
</symbol>
<symbol id="info-box" viewBox="0 0 512 512" preserveAspectRatio="xMidYMid meet">
<path
d="M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"/>
</symbol>
</svg><div class="box box-shortcode info" >
<span class="icon-box baseline">
<svg><use href="#info-box"></use></svg>
</span>
<p><em>Side Note: it took me way too long how to figure out how to embed an iframe directly into Hugo without creating a new shortcode template and other suggestions. I&rsquo;ll be sure to post about that in the future.</em></p>
</div>
<p>When you first load ExplainShell.com, you&rsquo;re greeted with a clean, minimal interface with some explanation and a very obvious
search bar.</p>
<p><img loading="lazy" src="../posts/img/explain-shell-homepage.png" alt="ExplainShell Homepage" />
</p>
<p>For those new to the command line, it also shares some suggested queries to search with. As you read over the results, you
can hover on the different elements of the command and it will highlight the explanation below. I mean, look at how clean and
nice that is!</p>
<p><img loading="lazy" src="../posts/img/explain-shell-interface.png" alt="ExplainShell Results" />
</p>
<p>As many other command line users are apt to do, I use the man page all the time for commands and flags I&rsquo;m unsure of, or need
a refresher on. While knowing what a certain flag is and what it does for a specific command is supremely helpful, I find the
man pages a tad bit overwhelming. You can always <code>grep</code> for what you&rsquo;re looking for, but even then I&rsquo;ve found times where it
only pulls out half of the full description, or even just the line the definition is on.</p>
<p>So the fact that this resources can extract exactly what you need in your command from a man page without digging through
every line, is extremely useful! Going back to Jérémy&rsquo;s original toot and question&hellip; who is going to make this same tool for
Neovim?</p>
<style>
.box-shortcode {
color: #e8e8e8;
border: none;
}
</style>
</div>
<footer class="post-footer">
<ul class="post-tags">
<li><a href="../tags/resources.html">resources</a></li>
<li><a href="../tags/shell.html">shell</a></li>
<li><a href="../tags/commandline.html">commandline</a></li>
</ul>
<nav class="paginav">
<a class="next" href="../posts/multiple_git_remotes.html">
<span class="title">Next »</span>
<br>
<span>Pushing a Single Local Git Repo to Multiple Remote Repos</span>
</a>
</nav>
</footer>
</article>
</main>
<footer class="footer">
<span>&copy; 2023 <a href="../">Norm-working Packets 💾</a></span>
<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>

View File

@ -1,418 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Tutorial: Move from NginxProxyManager to Nginx :: Rsmsn Blog</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="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.
Goal 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." />
<meta name="keywords" content="" />
<meta name="robots" content="noodp" />
<link rel="canonical" href="https://selfhosted.rsmsn.co/posts/npm_to_nginx_tutorial/" />
<link rel="stylesheet" href="https://selfhosted.rsmsn.co/styles.css">
<link rel="shortcut icon" href="https://selfhosted.rsmsn.co/img/theme-colors/orange.png">
<link rel="apple-touch-icon" href="https://selfhosted.rsmsn.co/img/theme-colors/orange.png">
<meta name="twitter:card" content="summary" />
<meta property="og:locale" content="en" />
<meta property="og:type" content="article" />
<meta property="og:title" content="Tutorial: Move from NginxProxyManager to Nginx">
<meta property="og:description" content="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.
Goal 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." />
<meta property="og:url" content="https://selfhosted.rsmsn.co/posts/npm_to_nginx_tutorial/" />
<meta property="og:site_name" content="Rsmsn Blog" />
<meta property="og:image" content="img/favicon/%!s().png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627">
<meta property="article:published_time" content="2023-08-05 15:23:51 -0500 -0500" />
</head>
<body class="">
<div class="container headings--one-size">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://selfhosted.rsmsn.co/">
<div class="logo">
Terminal
</div>
</a>
</div>
</div>
</header>
<div class="content">
<article class="post">
<h1 class="post-title">
<a href="https://selfhosted.rsmsn.co/posts/npm_to_nginx_tutorial/">Tutorial: Move from NginxProxyManager to Nginx</a>
</h1>
<div class="post-meta"><time class="post-date">2023-08-05</time></div>
<span class="post-tags">
#<a href="https://selfhosted.rsmsn.co/tags/tutorial/">tutorial</a>&nbsp;
#<a href="https://selfhosted.rsmsn.co/tags/self-hosted/">self-hosted</a>&nbsp;
</span>
<div class="post-content"><div>
<p>A Tutorial Repo for migrating your Nginx Proxy Manager proxy setup to Nginx. I wrote this originally for <a href="https://www.reddit.com/r/selfhosted/comments/15j4v80/minitutorial_migrating_from_nginx_proxy_manager/">this reddit
post</a> and to post this <a href="https://github.com/Normanras/Npm_to_Nginx">my Github profile</a>. Thought my website would also be a good place to share it for any passers-by.</p>
<h2 id="goal">Goal<a href="#goal" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h2>
<p>To give clear instructions to help users migrate from using <a href="https://nginxproxymanager.com/">Nginx Proxy Manager</a> (NPM) to standard <a href="https://docs.nginx.com/">Nginx</a>. This tutorial is not exhaustive and there are many other implementations of this transition. I would recommend checking out the many Nginx <a href="http://nginx.org/en/docs/">Documentation Sites</a> and tutorials to learn more.</p>
<h3 id="introduction">Introduction<a href="#introduction" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h3>
<p>If you&rsquo;re anything like me and you got into the self-hosted/homelab/diy game sometime within the last 5 years, you&rsquo;ve likely been recommended to use Nginx Proxy Manager as one of the choice Reverse Proxy services. If you&rsquo;ve also been paying attention to various self-hosted communities, you may have also come across Christian Lempa&rsquo;s Video on <a href="https://youtu.be/uaixCKTaqY0">trusting smaller self hosted projects and tools</a>.</p>
<p><em>Spoilers:</em> He roasts NPM in his video and towards the end says he won&rsquo;t be using NPM anymore. He also, perhaps purposely, doesn&rsquo;t share which tool he will be migrating to.</p>
<p>Whether you follow Christian away from NPM or not, it dawned on me that while NPM is using a very trusted web server and reverse proxy under the hood, I hadn&rsquo;t taken the time to understand how an Nginx Config actually worked. Since NPM was already creating most of the files for Nginx, I got to reading through all the files and reworking them so that I could begin using Nginx without the NPM gui.</p>
<p><em>Contributing: This is not all encompassing of Nginx possibilities. Including instructions for various installation methods, using OpenResty, and any other migrations or use cases would help the community. If you&rsquo;d like to add in additional information on how to migrate from NPM to Nginx, that is welcome. Simply submit a PR with your steps.</em></p>
<h3 id="tldr---quick-steps">TL;DR - Quick Steps<a href="#tldr---quick-steps" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h3>
<ol>
<li>
<p>Copy the following contents (including sub-directories) from the NPM <code>/data/nginx</code> directory to the Nginx <code>/etc/nginx</code> folder:</p>
<ul>
<li><code>proxy_hosts</code> &gt; <code>sites-available</code></li>
<li><code>conf.d</code> &gt; <code>conf.d</code></li>
<li><code>snippets</code> &gt; <code>snippets</code></li>
<li><code>custom_ssl</code> &gt; <code>custom_ssl</code> (if applicable)</li>
</ul>
</li>
<li>
<p>Edit each file in your <code>sites-available</code> directory and update the paths. Most will change from <code>/data/nginx/</code> to <code>/etc/nginx</code>.</p>
</li>
<li>
<p>Edit your <code>nginx.conf</code> file and ensure the following two paths are there:</p>
<ul>
<li><code>include /etc/nginx/conf.d/*.conf;</code> and <code>include /etc/nginx/sites-enabled/*;</code></li>
</ul>
</li>
<li>
<p>Symlink the proxy host files in <code>sites-available</code> to <code>sites-enabled</code></p>
<ul>
<li><code>ln -s * ./sites-enabled</code></li>
</ul>
</li>
<li>
<p>Test your changes with <code>nginx -t</code>. Make appropriate changes if there are error messages.</p>
</li>
</ol>
<h3 id="pre-requisites--assumptions">Pre-requisites &amp; Assumptions<a href="#pre-requisites--assumptions" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h3>
<p>I am using an Ubuntu VM with NPM and it&rsquo;s db as a Docker Container while Nginx is installed natively on the machine. You don&rsquo;t have to use this setup exactly, but I am making a few assumptions as to what you should have access to before you begin. I am also using custom SSL certs, but theoretically, the transition should be the same when using Lets Encrypt.</p>
<p>I&rsquo;ve added some example files to show before and after changes to this repo and outlined file trees below.</p>
<ul>
<li>You understand the basics of what a Reverse Proxy is doing and are sticking with some stock settings (like exposing port 80 an 443).</li>
<li>You&rsquo;ve installed <a href="https://nginxproxymanager.com/setup/">NPM</a> and <a href="https://www.nginx.com/resources/wiki/start/topics/tutorials/install/">Nginx</a> using your preferred method.</li>
<li>You have access to both NPMs file tree and Nginx&rsquo;s.</li>
<li>If using NPM in docker, make sure you&rsquo;ve mapped a local volume on the host to the container.</li>
<li>My setup using docker-compose is the following: <code>/user/nginx/data:/data</code>.</li>
<li>Know where your Nginx files are. If using docker, same as above, make sure your container directories are mapped to the host.</li>
<li>For a linux install, they should be accessible at <code>/etc/nginx</code>.</li>
<li>You know how to edit files at the command line using <code>nano</code>, <code>vi</code>, <code>vim</code>, <code>neovim</code>, <code>emacs</code>, or something else.</li>
</ul>
<h3 id="nginx-files">Nginx Files<a href="#nginx-files" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h3>
<p>Nginx uses the <code>nginx.conf</code> file and within that file, it will include your proxy files. These exist under <code>./nginx/sites-enabled/</code>. In the main <code>nginx.conf</code> file, the line <code>include /etc/nginx/sites-enabled/*;</code> will bring in those files to the config file, making the proxies accessible.</p>
<h3 id="how-to-transition---detailed-version">How to Transition - Detailed Version<a href="#how-to-transition---detailed-version" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h3>
<ol>
<li>
<p>Since NPM uses Nginx under the hood, they are both, by default, going to try and use ports 80 and 443 to serve up your apps and content. Turn off both systems.</p>
<ul>
<li>Docker: <code>docker stop [app_container, db_container]</code></li>
<li>Systemd: <code>systemctl stop nginx</code></li>
</ul>
</li>
<li>
<p>Copy your <code>proxy_host</code> (NPM) files to the <code>sites-available</code> (Nginx) folder.
<code>cp -r /user/nginx/data/nginx/proxy_hosts/* /etc/nginx/sites-available/</code></p>
</li>
<li>
<p>Nginx doesn&rsquo;t really care what the files are called, but NPM numbers them based on the order in which you added them in the GUI. I find it better to rename them to what service they actually serve up for easier identification later.</p>
</li>
<li>
<p>Copy your <code>custom_ssl</code> folder from NPM to the <code>custom_ssl</code> folder in Nginx. See the following step for the various default paths in both systems.</p>
<ul>
<li><code>cp -r /user/nginx/data/custom_ssl/* /etc/nginx/custom_ssl/</code></li>
</ul>
</li>
<li>
<p>Copy the <code>conf.d</code> folder from NPM to the <code>conf.d</code> folder in Nginx. <em>Note: For some reason, not all of the files in
the proxy files were actually in my <code>conf.d</code> directory. If you&rsquo;re missing any files, please download and/or copy and
paste them from the <a href="https://github.com/NginxProxyManager/nginx-proxy-manager/tree/fa851b61da3fe3726d1a04c25e69d36e79edea2d/docker/rootfs/etc/nginx/conf.d/include">NPM Repo</a></em></p>
<ul>
<li><code>cp -r /user/nginx/data/nginx/conf.d /etc/nginx/</code></li>
</ul>
</li>
<li>
<p>If you had any additional files included in the Advanced section of an NPM Proxy Host, make sure you copy them over. For my setup and this tutorial, they were all located in the <code>snippets</code> directory.</p>
<ul>
<li><code>cp -r /user/nginx/data/nginx/snippets/* /etc/nginx/snippets/</code></li>
</ul>
</li>
<li>
<p>There are a number of lines that need to be updated in each proxy configuration file to make them work with Nginx. I&rsquo;ve placed additional comments in <a href="./proxy_host/npm_proxy.conf"><code>./proxy_host/npm_proxy.conf</code></a> file. The line changes are the following:</p>
<ol>
<li>
<p>Custom SSL path:</p>
<ul>
<li>NPM path: <code>/data/custom_ssl...</code></li>
<li>Nginx path: <code>/etc/nginx/custom_ssl...</code></li>
</ul>
</li>
<li>
<p>conf.d:</p>
<ul>
<li>The paths should remain the same. However, if you changed the path for <code>conf.d</code> in Nginx and differed in step 5, above, make sure you use the correct path.</li>
</ul>
</li>
<li>
<p>Access &amp; Error Logs</p>
<ul>
<li>NPM path: <code>/data/logs/...</code></li>
<li>Nginx path: <code>/var/log/nginx/...</code></li>
</ul>
</li>
</ol>
</li>
<li>
<p>Double Check all your paths! If this is your first time using Nginx, make sure every directory is correct! Save your work.</p>
</li>
<li>
<p>Navigate to the <code>nginx.conf</code> file which is located at <code>/etc/nginx/</code>. You can see the one I am using in this repo.</p>
</li>
<li>
<p>Make sure that you have the following two lines in the main conf file and that they are pointing to the appropriate directories in the nginx directory path.</p>
<ul>
<li><code>include /etc/nginx/conf.d/*.conf;</code> and <code>include /etc/nginx/sites-enabled/*;</code></li>
</ul>
</li>
<li>
<p>You&rsquo;ll notice that you ensured there was a <code>sites-enabled</code> directory in the configuration file, but you changed all your proxy host config files in <code>sites-available</code>! Good eye, all that&rsquo;s left is to symlink the files to <code>sites-enabled</code> so that nginx can start using them.</p>
</li>
<li>
<p>To symlink the available proxy files run the following command within the <code>sites-available</code> directory:</p>
<ul>
<li><code>ln -s * ./sites-enabled</code></li>
</ul>
</li>
<li>
<p>Once you&rsquo;re confident that you&rsquo;ve done all the above correctly, you can test your setup using nginx command and flags. While in the directory with your <code>nginx.conf</code> file - usually <code>/etc/nginx</code> - run the following command: <code>nginx -t</code>.</p>
</li>
<li>
<p>If all is working as expected you should see the below output. If it returns any errors, fix them appropriately. It will usually tell you what line is throwing the error. In this case, there&rsquo;s a high likelihood that it will be path error.</p>
</li>
</ol>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
</span></span><span style="display:flex;"><span>nginx: configuration file /etc/nginx/nginx.conf test is successful
</span></span></code></pre></div><p>And that&rsquo;s it! You can now restart your nginx service on the host and access all your sites just as if you were using Nginx Proxy Manager! Make sure you take a look at your logs and system&rsquo;s status should nginx fail to start.</p>
<h3 id="additional-informationappendix">Additional Information/Appendix<a href="#additional-informationappendix" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h3>
<h4 id="file-trees-for-npm-in-container-and-nginx-on-host">File Trees for NPM (in container) and Nginx (on host)<a href="#file-trees-for-npm-in-container-and-nginx-on-host" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h4>
<p><em>I did not expand every directory in these trees. Only the ones that are pertinent for reference in this tutorial.</em></p>
<h4 id="nginx">NGINX<a href="#nginx" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h4>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>├── conf.d
</span></span><span style="display:flex;"><span>│   └── include
</span></span><span style="display:flex;"><span>│   ├── assets.conf
</span></span><span style="display:flex;"><span>│   ├── block-exploits.conf
</span></span><span style="display:flex;"><span>│   ├── force-ssl.conf
</span></span><span style="display:flex;"><span>│   ├── ip_ranges.conf
</span></span><span style="display:flex;"><span>│   ├── proxy.conf
</span></span><span style="display:flex;"><span>│   └── resolvers.conf
</span></span><span style="display:flex;"><span>├── custom_ssl
</span></span><span style="display:flex;"><span>│   ├── npm-1
</span></span><span style="display:flex;"><span>│   │   ├── fullchain.pem
</span></span><span style="display:flex;"><span>│   │   └── privkey.pem
</span></span><span style="display:flex;"><span>│   ├── npm-2
</span></span><span style="display:flex;"><span>│   │   ├── fullchain.pem
</span></span><span style="display:flex;"><span>│   │   └── privkey.pem
</span></span><span style="display:flex;"><span>│   └── npm-3
</span></span><span style="display:flex;"><span>│   ├── fullchain.pem
</span></span><span style="display:flex;"><span>│   └── privkey.pem
</span></span><span style="display:flex;"><span>├── fastcgi.conf
</span></span><span style="display:flex;"><span>├── fastcgi_params
</span></span><span style="display:flex;"><span>├── koi-utf
</span></span><span style="display:flex;"><span>├── koi-win
</span></span><span style="display:flex;"><span>├── mime.types
</span></span><span style="display:flex;"><span>├── modules-available
</span></span><span style="display:flex;"><span>├── modules-enabled
</span></span><span style="display:flex;"><span>├── nginx.conf
</span></span><span style="display:flex;"><span>├── proxy_params
</span></span><span style="display:flex;"><span>├── scgi_params
</span></span><span style="display:flex;"><span>├── sites-available
</span></span><span style="display:flex;"><span>│   ├── auth.conf
</span></span><span style="display:flex;"><span>│   ├── bitwarden.conf
</span></span><span style="display:flex;"><span>│   ├── codehub.conf
</span></span><span style="display:flex;"><span>│   ├── default.backup
</span></span><span style="display:flex;"><span>│   ├── files.conf
</span></span><span style="display:flex;"><span>│   ├── notes.conf
</span></span><span style="display:flex;"><span>│   ├── photos.conf
</span></span><span style="display:flex;"><span>│   ├── rsmsn-root.conf
</span></span><span style="display:flex;"><span>│   ├── wordle.conf
</span></span><span style="display:flex;"><span>│   └── wordle-it.conf
</span></span><span style="display:flex;"><span>├── sites-enabled
</span></span><span style="display:flex;"><span>│   ├── auth.conf -&gt; /etc/nginx/sites-available/auth.conf
</span></span><span style="display:flex;"><span>│   ├── bitwarden.conf -&gt; /etc/nginx/sites-available/bitwarden.conf
</span></span><span style="display:flex;"><span>│   ├── codehub.conf -&gt; /etc/nginx/sites-available/codehub.conf
</span></span><span style="display:flex;"><span>│   ├── files.conf -&gt; /etc/nginx/sites-available/files.conf
</span></span><span style="display:flex;"><span>│   ├── notes.conf -&gt; /etc/nginx/sites-available/notes.conf
</span></span><span style="display:flex;"><span>│   ├── photos.conf -&gt; /etc/nginx/sites-available/photos.conf
</span></span><span style="display:flex;"><span>│   ├── wordle.conf -&gt; /etc/nginx/sites-available/wordle.conf
</span></span><span style="display:flex;"><span>│   └── wordle-it.conf -&gt; /etc/nginx/sites-available/wordle-it.conf
</span></span><span style="display:flex;"><span>├── snippets
</span></span><span style="display:flex;"><span>│   ├── authelia-authrequest-basic.conf
</span></span><span style="display:flex;"><span>│   ├── authelia-authrequest.conf
</span></span><span style="display:flex;"><span>│   ├── authelia-authrequest-detect.conf
</span></span><span style="display:flex;"><span>│   ├── authelia-location-basic.conf
</span></span><span style="display:flex;"><span>│   ├── authelia-location.conf
</span></span><span style="display:flex;"><span>│   ├── authelia-location-detect.conf
</span></span><span style="display:flex;"><span>│   ├── fastcgi-php.conf
</span></span><span style="display:flex;"><span>│   ├── proxy.conf
</span></span><span style="display:flex;"><span>│   └── snakeoil.conf
</span></span><span style="display:flex;"><span>├── uwsgi_params
</span></span><span style="display:flex;"><span>└── win-utf
</span></span></code></pre></div><h4 id="npm">NPM<a href="#npm" class="hanchor" ariaLabel="Anchor">&#8983;</a> </h4>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>├── data
</span></span><span style="display:flex;"><span>│   ├── access
</span></span><span style="display:flex;"><span>│   ├── custom_ssl
</span></span><span style="display:flex;"><span>│   │   ├── npm-1
</span></span><span style="display:flex;"><span>│   │   │   ├── fullchain.pem
</span></span><span style="display:flex;"><span>│   │   │   └── privkey.pem
</span></span><span style="display:flex;"><span>│   │   ├── npm-2
</span></span><span style="display:flex;"><span>│   │   │   ├── fullchain.pem
</span></span><span style="display:flex;"><span>│   │   │   └── privkey.pem
</span></span><span style="display:flex;"><span>│   │   └── npm-3
</span></span><span style="display:flex;"><span>│   │   ├── fullchain.pem
</span></span><span style="display:flex;"><span>│   │   └── privkey.pem
</span></span><span style="display:flex;"><span>│   ├── keys.json
</span></span><span style="display:flex;"><span>│   ├── letsencrypt-acme-challenge
</span></span><span style="display:flex;"><span>│   ├── logs
</span></span><span style="display:flex;"><span>│   ├── mysql
</span></span><span style="display:flex;"><span>│   └── nginx
</span></span><span style="display:flex;"><span>│   ├── custom
</span></span><span style="display:flex;"><span>│   ├── dead_host
</span></span><span style="display:flex;"><span>│   ├── default_host
</span></span><span style="display:flex;"><span>│   ├── default_www
</span></span><span style="display:flex;"><span>│   ├── dummycert.pem
</span></span><span style="display:flex;"><span>│   ├── dummykey.pem
</span></span><span style="display:flex;"><span>│   ├── proxy_host
</span></span><span style="display:flex;"><span>│   │   ├── 10.conf
</span></span><span style="display:flex;"><span>│   │   ├── 11.conf
</span></span><span style="display:flex;"><span>│   │   ├── 12.conf
</span></span><span style="display:flex;"><span>│   │   ├── 13.conf
</span></span><span style="display:flex;"><span>│   │   ├── 15.conf
</span></span><span style="display:flex;"><span>│   │   ├── 1.conf
</span></span><span style="display:flex;"><span>│   │   ├── 2.conf
</span></span><span style="display:flex;"><span>│   │   ├── 4.conf
</span></span><span style="display:flex;"><span>│   │   ├── 5.conf
</span></span><span style="display:flex;"><span>│   │   └── 6.conf
</span></span><span style="display:flex;"><span>│   ├── redirection_host
</span></span><span style="display:flex;"><span>│   ├── snippets
</span></span><span style="display:flex;"><span>│   │   ├── authelia-authrequest-basic.conf
</span></span><span style="display:flex;"><span>│   │   ├── authelia-authrequest.conf
</span></span><span style="display:flex;"><span>│   │   ├── authelia-authrequest-detect.conf
</span></span><span style="display:flex;"><span>│   │   ├── authelia-location-basic.conf
</span></span><span style="display:flex;"><span>│   │   ├── authelia-location.conf
</span></span><span style="display:flex;"><span>│   │   ├── authelia-location-detect.conf
</span></span><span style="display:flex;"><span>│   │   └── proxy.conf
</span></span><span style="display:flex;"><span>│   ├── stream
</span></span><span style="display:flex;"><span>│   └── temp
</span></span><span style="display:flex;"><span>├── docker-compose.yml
</span></span><span style="display:flex;"><span>└── letsencrypt
</span></span><span style="display:flex;"><span>└── renewal-hooks
</span></span></code></pre></div>
</div></div>
</article>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright">
<span>© 2023 Powered by <a href="https://gohugo.io">Hugo</a></span>
<span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> made by <a href="https://github.com/panr" target="_blank">panr</a></span>
</div>
</div>
</footer>
<script type="text/javascript" src="../../bundle.min.js"></script>
</div>
</body>
</html>

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<title>https://selfhosted.rsmsn.co/posts/</title>
<link rel="canonical" href="https://selfhosted.rsmsn.co/posts/">
<meta name="robots" content="noindex">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=https://selfhosted.rsmsn.co/posts/">
</head>
</html>

View File

@ -2,32 +2,29 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>/posts/birdnet_homeassistant.html</loc>
<lastmod>2023-09-25T12:51:55-04:00</lastmod>
<loc>/tags/commandline.html</loc>
<lastmod>2023-09-27T10:07:01-04:00</lastmod>
</url><url>
<loc>/tags/diy.html</loc>
<lastmod>2023-09-25T12:51:55-04:00</lastmod>
</url><url>
<loc>/tags/homeassistant.html</loc>
<lastmod>2023-09-25T12:51:55-04:00</lastmod>
<loc>/posts/new-favorite-website.html</loc>
<lastmod>2023-09-27T10:07:01-04:00</lastmod>
</url><url>
<loc>/</loc>
<lastmod>2023-09-25T12:51:55-04:00</lastmod>
<lastmod>2023-09-27T10:07:01-04:00</lastmod>
</url><url>
<loc>/posts.html</loc>
<lastmod>2023-09-25T12:51:55-04:00</lastmod>
<lastmod>2023-09-27T10:07:01-04:00</lastmod>
</url><url>
<loc>/tags/python.html</loc>
<lastmod>2023-09-25T12:51:55-04:00</lastmod>
<loc>/tags/resources.html</loc>
<lastmod>2023-09-27T10:07:01-04:00</lastmod>
</url><url>
<loc>/tags/shell.html</loc>
<lastmod>2023-09-27T10:07:01-04:00</lastmod>
</url><url>
<loc>/tags.html</loc>
<lastmod>2023-09-25T12:51:55-04:00</lastmod>
<lastmod>2023-09-27T10:07:01-04:00</lastmod>
</url><url>
<loc>/tags/backups.html</loc>
<lastmod>2023-09-22T15:07:10-04:00</lastmod>
</url><url>
<loc>/tags/commandline.html</loc>
<lastmod>2023-09-22T15:07:10-04:00</lastmod>
</url><url>
<loc>/tags/git.html</loc>
<lastmod>2023-09-22T15:07:10-04:00</lastmod>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -98,19 +98,16 @@ if (!doNotTrack) {
<a href="./tags/backups.html">backups <sup><strong><sup>3</sup></strong></sup> </a>
</li>
<li>
<a href="./tags/commandline.html">commandline <sup><strong><sup>3</sup></strong></sup> </a>
</li>
<li>
<a href="./tags/diy.html">diy <sup><strong><sup>1</sup></strong></sup> </a>
<a href="./tags/commandline.html">commandline <sup><strong><sup>4</sup></strong></sup> </a>
</li>
<li>
<a href="./tags/git.html">git <sup><strong><sup>3</sup></strong></sup> </a>
</li>
<li>
<a href="./tags/homeassistant.html">homeassistant <sup><strong><sup>1</sup></strong></sup> </a>
<a href="./tags/resources.html">resources <sup><strong><sup>1</sup></strong></sup> </a>
</li>
<li>
<a href="./tags/python.html">python <sup><strong><sup>1</sup></strong></sup> </a>
<a href="./tags/shell.html">shell <sup><strong><sup>1</sup></strong></sup> </a>
</li>
</ul>
</main>

View File

@ -95,6 +95,20 @@ if (!doNotTrack) {
</h1>
</header>
<article class="post-entry tag-entry">
<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.">
</figure>
<header class="entry-header">
<h2>New Favorite Website!
</h2>
</header>
<div class="entry-content">
<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>
</div>
<footer class="entry-footer"><span title='2023-09-27 10:07:01 -0400 EDT'>September 27, 2023</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;377 words&nbsp;·&nbsp;Me</footer>
<a class="entry-link" aria-label="post link to New Favorite Website!" href="../posts/new-favorite-website.html"></a>
</article>
<article class="post-entry tag-entry">
<figure class="entry-cover"><img loading="lazy" src="../multiple-git-cover-img.png" alt="git commands">
</figure>

View File

@ -6,7 +6,16 @@
<description>Recent content in commandline on Norm-working Packets 💾</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
<lastBuildDate>Fri, 22 Sep 2023 15:07:10 -0400</lastBuildDate><atom:link href="/tags/commandline/index.xml" rel="self" type="application/rss+xml" />
<lastBuildDate>Wed, 27 Sep 2023 10:07:01 -0400</lastBuildDate><atom:link href="/tags/commandline/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>New Favorite Website!</title>
<link>/posts/new-favorite-website.html</link>
<pubDate>Wed, 27 Sep 2023 10:07:01 -0400</pubDate>
<guid>/posts/new-favorite-website.html</guid>
<description>Regex101 has long been one of my favorite reference tools. As of today, I will be adding ExplainShell to the list of must-use tools!.</description>
</item>
<item>
<title>Pushing a Single Local Git Repo to Multiple Remote Repos</title>
<link>/posts/multiple_git_remotes.html</link>

View File

@ -1,150 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Tags :: Rsmsn Blog</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="" />
<meta name="keywords" content="" />
<meta name="robots" content="noodp" />
<link rel="canonical" href="https://selfhosted.rsmsn.co/tags/" />
<link rel="stylesheet" href="https://selfhosted.rsmsn.co/styles.css">
<link rel="shortcut icon" href="https://selfhosted.rsmsn.co/img/theme-colors/orange.png">
<link rel="apple-touch-icon" href="https://selfhosted.rsmsn.co/img/theme-colors/orange.png">
<meta name="twitter:card" content="summary" />
<meta property="og:locale" content="en" />
<meta property="og:type" content="website" />
<meta property="og:title" content="Tags">
<meta property="og:description" content="" />
<meta property="og:url" content="https://selfhosted.rsmsn.co/tags/" />
<meta property="og:site_name" content="Rsmsn Blog" />
<meta property="og:image" content="img/favicon/%!s().png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627">
<link href="../tags/index.xml" rel="alternate" type="application/rss+xml" title="Rsmsn Blog" />
</head>
<body class="">
<div class="container headings--one-size">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://selfhosted.rsmsn.co/">
<div class="logo">
Terminal
</div>
</a>
</div>
</div>
</header>
<div class="content">
<div class="terms">
<h1>Tags</h1>
<ul>
<li>
<a class="terms-title" href="https://selfhosted.rsmsn.co/tags/self-hosted/">self-hosted [1]</a>
</li>
<li>
<a class="terms-title" href="https://selfhosted.rsmsn.co/tags/tutorial/">tutorial [1]</a>
</li>
</ul>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright">
<span>© 2023 Powered by <a href="https://gohugo.io">Hugo</a></span>
<span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> made by <a href="https://github.com/panr" target="_blank">panr</a></span>
</div>
</div>
</footer>
<script type="text/javascript" src="../bundle.min.js"></script>
</div>
</body>
</html>

View File

@ -6,31 +6,31 @@
<description>Recent content in Tags on Norm-working Packets 💾</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
<lastBuildDate>Mon, 25 Sep 2023 12:51:55 -0400</lastBuildDate><atom:link href="/tags/index.xml" rel="self" type="application/rss+xml" />
<lastBuildDate>Wed, 27 Sep 2023 10:07:01 -0400</lastBuildDate><atom:link href="/tags/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>diy</title>
<link>/tags/diy.html</link>
<pubDate>Mon, 25 Sep 2023 12:51:55 -0400</pubDate>
<title>commandline</title>
<link>/tags/commandline.html</link>
<pubDate>Wed, 27 Sep 2023 10:07:01 -0400</pubDate>
<guid>/tags/diy.html</guid>
<guid>/tags/commandline.html</guid>
<description></description>
</item>
<item>
<title>homeassistant</title>
<link>/tags/homeassistant.html</link>
<pubDate>Mon, 25 Sep 2023 12:51:55 -0400</pubDate>
<title>resources</title>
<link>/tags/resources.html</link>
<pubDate>Wed, 27 Sep 2023 10:07:01 -0400</pubDate>
<guid>/tags/homeassistant.html</guid>
<guid>/tags/resources.html</guid>
<description></description>
</item>
<item>
<title>python</title>
<link>/tags/python.html</link>
<pubDate>Mon, 25 Sep 2023 12:51:55 -0400</pubDate>
<title>shell</title>
<link>/tags/shell.html</link>
<pubDate>Wed, 27 Sep 2023 10:07:01 -0400</pubDate>
<guid>/tags/python.html</guid>
<guid>/tags/shell.html</guid>
<description></description>
</item>
@ -43,15 +43,6 @@
<description></description>
</item>
<item>
<title>commandline</title>
<link>/tags/commandline.html</link>
<pubDate>Fri, 22 Sep 2023 15:07:10 -0400</pubDate>
<guid>/tags/commandline.html</guid>
<description></description>
</item>
<item>
<title>git</title>
<link>/tags/git.html</link>

View File

@ -5,11 +5,11 @@
<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">
<title>troubleshooting | Rsmsn Blog</title>
<title>resources | Norm-working Packets 💾</title>
<meta name="keywords" content="">
<meta name="description" content="A site to share self hosted tutorials, troubleshooting, and tips/tricks.">
<meta name="description" content="A semi-technical blog &amp; series of experiences working in tech and my homelab">
<meta name="author" content="Norm Rasmussen">
<link rel="canonical" href="../tags/troubleshooting.html">
<link rel="canonical" href="../tags/resources.html">
<link crossorigin="anonymous" href="../assets/css/stylesheet.5cfc680b1eeaeef9efbced92d46c2a9e876b72ee14fba85846afc4cff9e6e6f8.css" integrity="sha256-XPxoCx7q7vnvvO2S1Gwqnodrcu4U&#43;6hYRq/Ez/nm5vg=" rel="preload stylesheet" as="style">
<link rel="icon" href="../favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="../favicon-16x16.png">
@ -18,7 +18,7 @@
<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="../tags/troubleshooting/index.xml">
<link rel="alternate" type="application/rss+xml" href="../tags/resources/index.xml">
<noscript>
<style>
#theme-toggle,
@ -27,14 +27,25 @@
}
</style>
</noscript><meta property="og:title" content="troubleshooting" />
<meta property="og:description" content="A site to share self hosted tutorials, troubleshooting, and tips/tricks." />
</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="resources" />
<meta property="og:description" content="A semi-technical blog &amp; series of experiences working in tech and my homelab" />
<meta property="og:type" content="website" />
<meta property="og:url" content="/tags/troubleshooting.html" /><meta property="og:site_name" content="RsmsnBlog" />
<meta property="og:url" content="/tags/resources.html" /><meta property="og:site_name" content="Norm-working Packets" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="troubleshooting"/>
<meta name="twitter:description" content="A site to share self hosted tutorials, troubleshooting, and tips/tricks."/>
<meta name="twitter:title" content="resources"/>
<meta name="twitter:description" content="A semi-technical blog &amp; series of experiences working in tech and my homelab"/>
</head>
@ -49,7 +60,7 @@
<header class="header">
<nav class="nav">
<div class="logo">
<a href="../" accesskey="h" title="Rsmsn Blog (Alt + H)">Rsmsn Blog</a>
<a href="../" accesskey="h" title="Norm-working Packets 💾 (Alt + H)">Norm-working Packets 💾</a>
<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"
@ -80,25 +91,27 @@
<main class="main">
<header class="page-header">
<h1>
troubleshooting
resources
</h1>
</header>
<article class="post-entry tag-entry">
<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.">
</figure>
<header class="entry-header">
<h2>Trouble Hosting Hugo with Nginx
<h2>New Favorite Website!
</h2>
</header>
<div class="entry-content">
<p>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 Im happy to share some reverse proxy nginx config files....</p>
<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>
</div>
<footer class="entry-footer"><span title='2023-09-20 11:33:22 -0400 EDT'>September 20, 2023</span>&nbsp;·&nbsp;Norm Rasmussen</footer>
<a class="entry-link" aria-label="post link to Trouble Hosting Hugo with Nginx" href="../posts/hosting_hugo_troubles.html"></a>
<footer class="entry-footer"><span title='2023-09-27 10:07:01 -0400 EDT'>September 27, 2023</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;377 words&nbsp;·&nbsp;Me</footer>
<a class="entry-link" aria-label="post link to New Favorite Website!" href="../posts/new-favorite-website.html"></a>
</article>
</main>
<footer class="footer">
<span>&copy; 2023 <a href="../">Rsmsn Blog</a></span>
<span>&copy; 2023 <a href="../">Norm-working Packets 💾</a></span>
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>resources on Norm-working Packets 💾</title>
<link>/tags/resources.html</link>
<description>Recent content in resources on Norm-working Packets 💾</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
<lastBuildDate>Wed, 27 Sep 2023 10:07:01 -0400</lastBuildDate><atom:link href="/tags/resources/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>New Favorite Website!</title>
<link>/posts/new-favorite-website.html</link>
<pubDate>Wed, 27 Sep 2023 10:07:01 -0400</pubDate>
<guid>/posts/new-favorite-website.html</guid>
<description>Regex101 has long been one of my favorite reference tools. As of today, I will be adding ExplainShell to the list of must-use tools!.</description>
</item>
</channel>
</rss>

View File

@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<title>/tags/resources.html</title>
<link rel="canonical" href="../../../tags/resources.html">
<meta name="robots" content="noindex">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=../../../tags/resources.html">
</head>
</html>

View File

@ -1,183 +0,0 @@
<!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">
<title>self-hosted | Rsmsn Blog</title>
<meta name="keywords" content="">
<meta name="description" content="A site to share self hosted tutorials, troubleshooting, and tips/tricks.">
<meta name="author" content="Norm Rasmussen">
<link rel="canonical" href="../tags/self-hosted.html">
<link crossorigin="anonymous" href="../assets/css/stylesheet.5cfc680b1eeaeef9efbced92d46c2a9e876b72ee14fba85846afc4cff9e6e6f8.css" integrity="sha256-XPxoCx7q7vnvvO2S1Gwqnodrcu4U&#43;6hYRq/Ez/nm5vg=" rel="preload stylesheet" as="style">
<link rel="icon" href="../favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="../favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="../rsmsncircles.ico">
<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="../tags/self-hosted/index.xml">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
</noscript><meta property="og:title" content="self-hosted" />
<meta property="og:description" content="A site to share self hosted tutorials, troubleshooting, and tips/tricks." />
<meta property="og:type" content="website" />
<meta property="og:url" content="/tags/self-hosted.html" /><meta property="og:site_name" content="RsmsnBlog" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="self-hosted"/>
<meta name="twitter:description" content="A site to share self hosted tutorials, troubleshooting, and tips/tricks."/>
</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">
<a href="../" accesskey="h" title="Rsmsn Blog (Alt + H)">Rsmsn Blog</a>
<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>
self-hosted
</h1>
</header>
<article class="post-entry tag-entry">
<header class="entry-header">
<h2>Trouble Hosting Hugo with Nginx
</h2>
</header>
<div class="entry-content">
<p>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 Im happy to share some reverse proxy nginx config files....</p>
</div>
<footer class="entry-footer"><span title='2023-09-20 11:33:22 -0400 EDT'>September 20, 2023</span>&nbsp;·&nbsp;Norm Rasmussen</footer>
<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 tag-entry">
<header class="entry-header">
<h2>Tutorial: Move from NginxProxyManager to Nginx
</h2>
</header>
<div class="entry-content">
<p>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.
Goal 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>
</div>
<footer class="entry-footer"><span title='2023-08-05 15:23:51 -0500 -0500'>August 5, 2023</span>&nbsp;·&nbsp;Norm Rasmussen</footer>
<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">
<span>&copy; 2023 <a href="../">Rsmsn Blog</a></span>
<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>

View File

@ -1,172 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>self-hosted :: Rsmsn Blog</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="" />
<meta name="keywords" content="" />
<meta name="robots" content="noodp" />
<link rel="canonical" href="https://selfhosted.rsmsn.co/tags/self-hosted/" />
<link rel="stylesheet" href="https://selfhosted.rsmsn.co/styles.css">
<link rel="shortcut icon" href="https://selfhosted.rsmsn.co/img/theme-colors/orange.png">
<link rel="apple-touch-icon" href="https://selfhosted.rsmsn.co/img/theme-colors/orange.png">
<meta name="twitter:card" content="summary" />
<meta property="og:locale" content="en" />
<meta property="og:type" content="website" />
<meta property="og:title" content="self-hosted">
<meta property="og:description" content="" />
<meta property="og:url" content="https://selfhosted.rsmsn.co/tags/self-hosted/" />
<meta property="og:site_name" content="Rsmsn Blog" />
<meta property="og:image" content="img/favicon/%!s().png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627">
<link href="../../tags/self-hosted/index.xml" rel="alternate" type="application/rss+xml" title="Rsmsn Blog" />
</head>
<body class="">
<div class="container headings--one-size">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://selfhosted.rsmsn.co/">
<div class="logo">
Terminal
</div>
</a>
</div>
</div>
</header>
<div class="content">
<h1>Posts for: #self-hosted</h1>
<div class="posts">
<article class="post on-list">
<h1 class="post-title">
<a href="https://selfhosted.rsmsn.co/posts/npm_to_nginx_tutorial/">Tutorial: Move from NginxProxyManager to Nginx</a>
</h1>
<div class="post-meta"><time class="post-date">2023-08-05</time></div>
<span class="post-tags">
#<a href="https://selfhosted.rsmsn.co/tags/tutorial/">tutorial</a>&nbsp;
#<a href="https://selfhosted.rsmsn.co/tags/self-hosted/">self-hosted</a>&nbsp;
</span>
<div class="post-content">
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.
Goal 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.
</div>
<div>
<a class="read-more button" href="../../posts/npm_to_nginx_tutorial/"></a>
</div>
</article>
<div class="pagination">
<div class="pagination__buttons">
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright">
<span>© 2023 Powered by <a href="https://gohugo.io">Hugo</a></span>
<span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> made by <a href="https://github.com/panr" target="_blank">panr</a></span>
</div>
</div>
</footer>
<script type="text/javascript" src="../../bundle.min.js"></script>
</div>
</body>
</html>

View File

@ -1,30 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>self-hosted on Rsmsn Blog</title>
<link>/tags/self-hosted.html</link>
<description>Recent content in self-hosted on Rsmsn Blog</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
<lastBuildDate>Wed, 20 Sep 2023 11:33:22 -0400</lastBuildDate><atom:link href="/tags/self-hosted/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Trouble Hosting Hugo with Nginx</title>
<link>/posts/hosting_hugo_troubles.html</link>
<pubDate>Wed, 20 Sep 2023 11:33:22 -0400</pubDate>
<guid>/posts/hosting_hugo_troubles.html</guid>
<description>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&amp;rsquo;m happy to share some reverse proxy nginx config files.</description>
</item>
<item>
<title>Tutorial: Move from NginxProxyManager to Nginx</title>
<link>/posts/npm_to_nginx_tutorial.html</link>
<pubDate>Sat, 05 Aug 2023 15:23:51 -0500</pubDate>
<guid>/posts/npm_to_nginx_tutorial.html</guid>
<description>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.
Goal 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.</description>
</item>
</channel>
</rss>

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<title>/tags/self-hosted.html</title>
<link rel="canonical" href="../../../tags/self-hosted.html">
<meta name="robots" content="noindex">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=../../../tags/self-hosted.html">
</head>
</html>

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<title>https://selfhosted.rsmsn.co/tags/self-hosted/</title>
<link rel="canonical" href="https://selfhosted.rsmsn.co/tags/self-hosted/">
<meta name="robots" content="noindex">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=https://selfhosted.rsmsn.co/tags/self-hosted/">
</head>
</html>

View File

@ -5,11 +5,11 @@
<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">
<title>tips &amp; tricks | Rsmsn Blog</title>
<title>shell | Norm-working Packets 💾</title>
<meta name="keywords" content="">
<meta name="description" content="A site to share self hosted tutorials, troubleshooting, and tips/tricks.">
<meta name="description" content="A semi-technical blog &amp; series of experiences working in tech and my homelab">
<meta name="author" content="Norm Rasmussen">
<link rel="canonical" href="../tags/tips-tricks.html">
<link rel="canonical" href="../tags/shell.html">
<link crossorigin="anonymous" href="../assets/css/stylesheet.5cfc680b1eeaeef9efbced92d46c2a9e876b72ee14fba85846afc4cff9e6e6f8.css" integrity="sha256-XPxoCx7q7vnvvO2S1Gwqnodrcu4U&#43;6hYRq/Ez/nm5vg=" rel="preload stylesheet" as="style">
<link rel="icon" href="../favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="../favicon-16x16.png">
@ -18,7 +18,7 @@
<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="../tags/tips-tricks/index.xml">
<link rel="alternate" type="application/rss+xml" href="../tags/shell/index.xml">
<noscript>
<style>
#theme-toggle,
@ -27,14 +27,25 @@
}
</style>
</noscript><meta property="og:title" content="tips &amp; tricks" />
<meta property="og:description" content="A site to share self hosted tutorials, troubleshooting, and tips/tricks." />
</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="shell" />
<meta property="og:description" content="A semi-technical blog &amp; series of experiences working in tech and my homelab" />
<meta property="og:type" content="website" />
<meta property="og:url" content="/tags/tips-tricks.html" /><meta property="og:site_name" content="RsmsnBlog" />
<meta property="og:url" content="/tags/shell.html" /><meta property="og:site_name" content="Norm-working Packets" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="tips &amp; tricks"/>
<meta name="twitter:description" content="A site to share self hosted tutorials, troubleshooting, and tips/tricks."/>
<meta name="twitter:title" content="shell"/>
<meta name="twitter:description" content="A semi-technical blog &amp; series of experiences working in tech and my homelab"/>
</head>
@ -49,7 +60,7 @@
<header class="header">
<nav class="nav">
<div class="logo">
<a href="../" accesskey="h" title="Rsmsn Blog (Alt + H)">Rsmsn Blog</a>
<a href="../" accesskey="h" title="Norm-working Packets 💾 (Alt + H)">Norm-working Packets 💾</a>
<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"
@ -80,25 +91,27 @@
<main class="main">
<header class="page-header">
<h1>
tips &amp; tricks
shell
</h1>
</header>
<article class="post-entry tag-entry">
<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.">
</figure>
<header class="entry-header">
<h2>Trouble Hosting Hugo with Nginx
<h2>New Favorite Website!
</h2>
</header>
<div class="entry-content">
<p>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 Im happy to share some reverse proxy nginx config files....</p>
<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>
</div>
<footer class="entry-footer"><span title='2023-09-20 11:33:22 -0400 EDT'>September 20, 2023</span>&nbsp;·&nbsp;Norm Rasmussen</footer>
<a class="entry-link" aria-label="post link to Trouble Hosting Hugo with Nginx" href="../posts/hosting_hugo_troubles.html"></a>
<footer class="entry-footer"><span title='2023-09-27 10:07:01 -0400 EDT'>September 27, 2023</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;377 words&nbsp;·&nbsp;Me</footer>
<a class="entry-link" aria-label="post link to New Favorite Website!" href="../posts/new-favorite-website.html"></a>
</article>
</main>
<footer class="footer">
<span>&copy; 2023 <a href="../">Rsmsn Blog</a></span>
<span>&copy; 2023 <a href="../">Norm-working Packets 💾</a></span>
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>shell on Norm-working Packets 💾</title>
<link>/tags/shell.html</link>
<description>Recent content in shell on Norm-working Packets 💾</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
<lastBuildDate>Wed, 27 Sep 2023 10:07:01 -0400</lastBuildDate><atom:link href="/tags/shell/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>New Favorite Website!</title>
<link>/posts/new-favorite-website.html</link>
<pubDate>Wed, 27 Sep 2023 10:07:01 -0400</pubDate>
<guid>/posts/new-favorite-website.html</guid>
<description>Regex101 has long been one of my favorite reference tools. As of today, I will be adding ExplainShell to the list of must-use tools!.</description>
</item>
</channel>
</rss>

View File

@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<title>/tags/shell.html</title>
<link rel="canonical" href="../../../tags/shell.html">
<meta name="robots" content="noindex">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=../../../tags/shell.html">
</head>
</html>

View File

@ -1,20 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>tips &amp; tricks on Rsmsn Blog</title>
<link>/tags/tips-tricks.html</link>
<description>Recent content in tips &amp; tricks on Rsmsn Blog</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
<lastBuildDate>Wed, 20 Sep 2023 11:33:22 -0400</lastBuildDate><atom:link href="/tags/tips-tricks/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Trouble Hosting Hugo with Nginx</title>
<link>/posts/hosting_hugo_troubles.html</link>
<pubDate>Wed, 20 Sep 2023 11:33:22 -0400</pubDate>
<guid>/posts/hosting_hugo_troubles.html</guid>
<description>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&amp;rsquo;m happy to share some reverse proxy nginx config files.</description>
</item>
</channel>
</rss>

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<title>/tags/tips-tricks.html</title>
<link rel="canonical" href="../../../tags/tips-tricks.html">
<meta name="robots" content="noindex">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=../../../tags/tips-tricks.html">
</head>
</html>

View File

@ -1,20 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>troubleshooting on Rsmsn Blog</title>
<link>/tags/troubleshooting.html</link>
<description>Recent content in troubleshooting on Rsmsn Blog</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
<lastBuildDate>Wed, 20 Sep 2023 11:33:22 -0400</lastBuildDate><atom:link href="/tags/troubleshooting/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Trouble Hosting Hugo with Nginx</title>
<link>/posts/hosting_hugo_troubles.html</link>
<pubDate>Wed, 20 Sep 2023 11:33:22 -0400</pubDate>
<guid>/posts/hosting_hugo_troubles.html</guid>
<description>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&amp;rsquo;m happy to share some reverse proxy nginx config files.</description>
</item>
</channel>
</rss>

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<title>/tags/troubleshooting.html</title>
<link rel="canonical" href="../../../tags/troubleshooting.html">
<meta name="robots" content="noindex">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=../../../tags/troubleshooting.html">
</head>
</html>

View File

@ -1,171 +0,0 @@
<!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">
<title>tutorial | Rsmsn Blog</title>
<meta name="keywords" content="">
<meta name="description" content="A site to share self hosted tutorials, troubleshooting, and tips/tricks.">
<meta name="author" content="Norm Rasmussen">
<link rel="canonical" href="../tags/tutorial.html">
<link crossorigin="anonymous" href="../assets/css/stylesheet.5cfc680b1eeaeef9efbced92d46c2a9e876b72ee14fba85846afc4cff9e6e6f8.css" integrity="sha256-XPxoCx7q7vnvvO2S1Gwqnodrcu4U&#43;6hYRq/Ez/nm5vg=" rel="preload stylesheet" as="style">
<link rel="icon" href="../favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="../favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="../rsmsncircles.ico">
<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="../tags/tutorial/index.xml">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
</noscript><meta property="og:title" content="tutorial" />
<meta property="og:description" content="A site to share self hosted tutorials, troubleshooting, and tips/tricks." />
<meta property="og:type" content="website" />
<meta property="og:url" content="/tags/tutorial.html" /><meta property="og:site_name" content="RsmsnBlog" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="tutorial"/>
<meta name="twitter:description" content="A site to share self hosted tutorials, troubleshooting, and tips/tricks."/>
</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">
<a href="../" accesskey="h" title="Rsmsn Blog (Alt + H)">Rsmsn Blog</a>
<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>
tutorial
</h1>
</header>
<article class="post-entry tag-entry">
<header class="entry-header">
<h2>Tutorial: Move from NginxProxyManager to Nginx
</h2>
</header>
<div class="entry-content">
<p>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.
Goal 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>
</div>
<footer class="entry-footer"><span title='2023-08-05 15:23:51 -0500 -0500'>August 5, 2023</span>&nbsp;·&nbsp;Norm Rasmussen</footer>
<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">
<span>&copy; 2023 <a href="../">Rsmsn Blog</a></span>
<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>

View File

@ -1,172 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>tutorial :: Rsmsn Blog</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="" />
<meta name="keywords" content="" />
<meta name="robots" content="noodp" />
<link rel="canonical" href="https://selfhosted.rsmsn.co/tags/tutorial/" />
<link rel="stylesheet" href="https://selfhosted.rsmsn.co/styles.css">
<link rel="shortcut icon" href="https://selfhosted.rsmsn.co/img/theme-colors/orange.png">
<link rel="apple-touch-icon" href="https://selfhosted.rsmsn.co/img/theme-colors/orange.png">
<meta name="twitter:card" content="summary" />
<meta property="og:locale" content="en" />
<meta property="og:type" content="website" />
<meta property="og:title" content="tutorial">
<meta property="og:description" content="" />
<meta property="og:url" content="https://selfhosted.rsmsn.co/tags/tutorial/" />
<meta property="og:site_name" content="Rsmsn Blog" />
<meta property="og:image" content="img/favicon/%!s().png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627">
<link href="../../tags/tutorial/index.xml" rel="alternate" type="application/rss+xml" title="Rsmsn Blog" />
</head>
<body class="">
<div class="container headings--one-size">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://selfhosted.rsmsn.co/">
<div class="logo">
Terminal
</div>
</a>
</div>
</div>
</header>
<div class="content">
<h1>Posts for: #tutorial</h1>
<div class="posts">
<article class="post on-list">
<h1 class="post-title">
<a href="https://selfhosted.rsmsn.co/posts/npm_to_nginx_tutorial/">Tutorial: Move from NginxProxyManager to Nginx</a>
</h1>
<div class="post-meta"><time class="post-date">2023-08-05</time></div>
<span class="post-tags">
#<a href="https://selfhosted.rsmsn.co/tags/tutorial/">tutorial</a>&nbsp;
#<a href="https://selfhosted.rsmsn.co/tags/self-hosted/">self-hosted</a>&nbsp;
</span>
<div class="post-content">
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.
Goal 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.
</div>
<div>
<a class="read-more button" href="../../posts/npm_to_nginx_tutorial/"></a>
</div>
</article>
<div class="pagination">
<div class="pagination__buttons">
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright">
<span>© 2023 Powered by <a href="https://gohugo.io">Hugo</a></span>
<span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> made by <a href="https://github.com/panr" target="_blank">panr</a></span>
</div>
</div>
</footer>
<script type="text/javascript" src="../../bundle.min.js"></script>
</div>
</body>
</html>

View File

@ -1,21 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>tutorial on Rsmsn Blog</title>
<link>/tags/tutorial.html</link>
<description>Recent content in tutorial on Rsmsn Blog</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
<lastBuildDate>Sat, 05 Aug 2023 15:23:51 -0500</lastBuildDate><atom:link href="/tags/tutorial/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Tutorial: Move from NginxProxyManager to Nginx</title>
<link>/posts/npm_to_nginx_tutorial.html</link>
<pubDate>Sat, 05 Aug 2023 15:23:51 -0500</pubDate>
<guid>/posts/npm_to_nginx_tutorial.html</guid>
<description>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.
Goal 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.</description>
</item>
</channel>
</rss>

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<title>/tags/tutorial.html</title>
<link rel="canonical" href="../../../tags/tutorial.html">
<meta name="robots" content="noindex">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=../../../tags/tutorial.html">
</head>
</html>

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<title>https://selfhosted.rsmsn.co/tags/tutorial/</title>
<link rel="canonical" href="https://selfhosted.rsmsn.co/tags/tutorial/">
<meta name="robots" content="noindex">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=https://selfhosted.rsmsn.co/tags/tutorial/">
</head>
</html>

BIN
public/useful_commands.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 236 KiB

After

Width:  |  Height:  |  Size: 238 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 325 KiB

BIN
static/useful_commands.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB