Replace/Remove/disable <p></p> tags

Hii!!
Since longer i try to find a solution for a loong standing isue.
Reported already almost a decade ago.
If im not mistaken the root problem is caused by the goldmark md engine already.
A possible workaround might be to add

{{ replace .Content "<p></p>" "" | safeHTML }}

to the baseof.htm or just to remove all the < p > and < /p > tags with sed commands like:

find public -name "*.html" -exec sed -i 's/<p>//g' {} \;
find public -name "*.html" -exec sed -i 's/<\/p>//g' {} \;

The 1st workaround did not even tryed to solve issue, the 2nd solution was waaaay more sucessfull BUT:
After the removal of the unnecessary

tag from the front of the line,
linebreak
instead having
good one
the line break remains = resulting html still show gaps instead a nicely packed stack of list elements.
Above the results of the unnecessary paragraph tags bellow the properly generated list in the same document:

Is there any viable solution to catch those evil paragraph tags before generating the html files?

Github issue: https://github.com/gohugoio/hugo/issues/1642

What is the markdown?

What is the result?

What do you want?

Markdown is edited by Obsidian:
Markdown format is:
mdformat
The result is a mixed output mess of html with a mix of properly generated and other lists with added paragraphs like:


I simply want to recreate a tight .md format on the .html page. Like:

(dont mind the tickboxes those are discs)

Please paste your markdown. A screen capture isn’t very helpful.

The whole md document:

---
title: "virtualrequirements"
date: 2023-01-26T13:46:15-01:00
draft: false
---
# YOUR Requirements

##### Before we can consider any specifc system requirement you must know what kind of or atleast how many services you need / want to run.
* If you are exhausted from the constant barrage of advertisements, phishing attempts, and telemetry sites, and you only want to filter out these specific sites and nothing else, you can easily achieve this by running a virtualization software on your laptop or office computer.

* If you or someone in your family is truly interested in server development or IT in general, it is highly recommended to set up a virtual environment on a powerful gaming or desktop computer with plenty of RAM. For more tech-savvy users, starting with Proxmox or a similar platform may be a better option than a type 2 hypervisor. Alternatively, you can opt for cloud servers with scalable performance, but this site is focused solely on 100% free solutions.

* If you are planning to run dozens of services that require very high security standards, then virtualization in your home environment is probably not the best solution for you.

# Hardware requirements
* Let's not forget that we also need to consider and fulfill the requirements for the host operating system
| |Minimum|Recomended|Sufficient for sure|
|:----:|:----:|:----:|:----:|
|Services|1-4|4-12|10-40|
|CPU|2,2GHz+|3,5GHz+|3,8GHz+|
|Core No.| 2-4|6-8|12|
|Thread No.|2|4|4|
|RAM GB|8|16-32|16-64|
|SSD GB|100|512|1024|

# Time requirements

##### Running a VPS is not that time connsuming
* Time for researching the right components ~30 min
* Time for the acquisition ~15 min
* Time for the build ~10 min
* Time for troubleshooting & fixing the build ~hours and hours
* Regular cleaning, maitenance ~10min/month

##### Other considerations:
* Double-check whether your chosen CPU is fully supported by your chosen hypervisor.
* Check whether your chosen hypervisor has sufficient support and a large user base to provide community support.
* Make sure your hyperviser will not interfere with your workflow.
* Monitor the system performance within your host operating system to ensure a safe, stable, and efficient working environment.

---
### The Build

### Getting started

#### Download Debian
- Debian is the base Linux distribution for many-many to build on like PoP_OS, Ubuntu, Kali and others. By choosing Debian for our server we have a quick turnaround time for the latest updates anyhow  we will stepp away from the highly experimental latest release toward the safer, stable testing branch. Therefore please head to  download the  [Debian](https://www.debian.org/) site and go to [download](www.debian.org/download) where you must look for the [Unofficial non-free images including firmware packages](https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/) link. Now let's chose the [weekly-builds/](https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/weekly-builds/) then [amd64/](https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/weekly-builds/amd64/) and we prefer to have a [iso-cd/](https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/weekly-builds/amd64/iso-cd/) image. Make sure you download the image named: [firmware-testing-amd64-netinst.iso](https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/weekly-builds/amd64/iso-cd/firmware-testing-amd64-netinst.iso)

#### Create the actual vPC
* The specifications listed are for this example tutorial. Advanced users can and should customize it for them self.
* 1 CPU: 4 Cores
* HDD: 120 GByte for
	* /system=50 GByte
	* /home=50 GByte
	* /data=10GByte
	* swap=10 GByte
* RAM: 8 GByte+
* Set your network: Bridged networking
	* The server will require a fixed IP address on your router
	* If you are scared and want to avoid many network specific changes set your router LAN Subnet Mask to 255.255.255.0 and it's IP to 192.168.0.1 as in this documentation.

### Debian install & setup:
* The setup process is straight forward however we provide you with an optional walk trough so you don't get lost nor need to do it again for any reason.
* The `highlighted` text define values to set, commands to execute etc.

### VMware specific steps:
* The changes bellow apply only if you are running your vPC in a VMware environment.
	* Edit your .vmx file and add:
	* `sound.virtualDev = "hdaudio"` - To combat audio driver isues
	* `ethernet%.noPromisc = "FALSE"` - Replace `%` with the Ethernet number on your physical host. This will allow promiscuous mode on your NIC(network interface card).
* Enable a specified folder to share between the host and your vPC:
* Click :`VM->Settings->Options tab->Shared folders->Always enabled->Add...->Next`
	* Name: `shared`
	* Click: `Browse`  and select the folder you want to share with the vPC. Use ONLY small letters in the directory name!!! - *you will thank me later* .
	* Click: `Next->Finish->OK`

### Linux installation:
* For anyone who is not that familiar with Linux or the choice of his distro we provide some guides here.

|What is this?|I am noob|Hit me|
|:---:|:---:|:---:|
|Installation script|Walkthrough|Server|
|Download|Linux Desktop|Linux Server|

### Docker

- Docker is a virtualization layer wich will carry all our different server services in separate containers.
- It is our base plate where we will snap our Lego bricks on to one by one to build up our servers services... please don't step on a Lego here.

### Install docker

* `sudo apt update` - just a quick update
* `sudo apt-get install apt-transport-https ca-certificates curl gnupg -y` - setup repository
* `wget https://download.docker.com/linux/debian/gpg` - download the public key block
* `sudo apt-key add gpg` - add the key to your local sources key ring
	* In case apt-key is disabled in the future, here is plan B:
		* `sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent` - installing dependencies
		* `curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/docker-ce-archive-keyring.gpg > /dev/null` - adding the key
		* `echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker-ce.list > /dev/null` - adding the repository
		* `sudo apt update` - update apt
		* `sudo apt-get install docker-ce docker-ce-cli containerd.io` - install docker
* `echo "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee -a /etc/apt/sources.list.d/docker.list` - download the sources list
* In case developers of docker did not released yet a stable version -*or any*- for Debian 12(bookworm) we must change the downloaded and created list file to be on a Debian 11(bullseye) system.
* `sudo nano /etc/apt/sources.list.d/docker.list` - edit the .list file
	* Change ```... bookworm stable``` -> ```...bullseye stable```
* `sudo apt-get update` - ask for a regular update and ignore the warning
* `sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y` - install docker
	* If you want to try it with the docker test container:
	* `docker --version` - see your running -*or not*- version of docker
	* `sudo docker run hello-world` - pulls and starts the test container
	* `sudo docker ps` - lists your running containers
	* `sudo docker container ps -a` - lists ALL you containers
	* `sudo docker rm {container name}` - removes the STOPED container defined by its name

* The container "ship" is now afloat. Let's load it up with the containers of your choice. Chose the ones you like to use and can skip the others or add your own.

* Creating a folder for our container files and volumes
* `cd ~` - make sure you are in your /home folder
* `sudo mkdir util/container-files` - create a folder

#### Create a docker macvlan network
* Docker supports several network types. For our purpose we will use the MAC vLan driver. In this virtual LAN each docker container will get a separate IP address and a physical MAC address will be generated to. Therefore they behave like real physical network devices. The downside is we have to ensure the adapters and ports we use are able to manage many-many devices connecting to a single one of their ports. To do that you must enable promiscuous mode on your adapters, operating systems, routers etc. in case it is not already set so.

* `sudo docker network ls` - list the actual docker networks
* Collect the following information:
	* The "driver"/type of the docker network: `macvlan`
	* The sub net you wan't your containers to use: `192.168.0.0` - in this case
	* The routing prefix number for that network above: `24` - in this case, [calculate yours](https://www.calculator.net/ip-subnet-calculator.html)
	* The IP address of your home router: `192.168.0.1` - in this case
	* The host NIC name for docker to use: `ens33` - in this case, use `ip a` to check
	* Any name you want to call this network: `macvlan`
* Create a basic network - *for noobz:*
* `sudo docker network create -d macvlan --subnet 192.168.0.0/24 --gateway 192.168.0.1 -o parent=ens33 macvlan`
* `sudo docker network ls` - lets see
* Create a future proof  network - *for proz* - to bypass docker macvlan network separation between containers, because you might need it 1000% or more.
* If you use macvlan for docker the host computer is not able to communicate, ping, poke whatever the the different docker "devices". If you wan't to bypass the inherit network segregation safety function when using a docker macvlan network you must add and define an aux address for your host. Make sure the IP you set is not and will never conflict with other devices.
* Like this: `sudo docker network create -d macvlan --subnet 192.168.0.0/24 --gateway 192.168.0.1 -o parent=ens33 --aux-address 'host=192.168.0.250' macvlan`
* `sudo ip link add macvlanlink link ens33 type macvlan mode bridge` - create a new virtual network interface link.
* `sudo ip addr add 192.168.0.250/24 dev macvlanlink` - bind the docker macvlan host address to this new virtual NIC
* `sudo ip link set macvlanlink up` - start/set up the virtual connection
* Add each, few or none of your "container" to this linking interface network as you like
* `sudo ip route add 192.168.0.151 dev macvlanlink`
* `sudo ip route add 192.168.0.152 dev macvlanlink`
* `sudo ip route add 192.168.0.153 dev macvlanlink`
* `sudo ip route add 192.168.0.154 dev macvlanlink`
* `sudo ip route add 192.168.0.155 dev macvlanlink`
* `sudo ip route add 192.168.0.156 dev macvlanlink`
* `sudo ip route add 192.168.0.157 dev macvlanlink`
	* ... - i think you can figure it by now.

If you want to have a peek in an actual pulled and running container we can save it's content to a .tar file.
* `sudo docker ls` - chose your running container and note its NAME
* `sudo docker export --output="file.tar" heimdall` - the last command is the container name.

1) Hugo uses Goldmark to render markdown to HTML.

2) Goldmark adheres to the CommonMark specification.

3) Your markdown is a “loose” list as defined here:
https://spec.commonmark.org/0.30/#loose

4) Goldmark is doing exactly what it should do.

5) You can test the CommonMark reference implementation here:
https://spec.commonmark.org/dingus/

Summary: change your markdown

3 Likes

Ty
Damn i was hoping for an easy 1:1 translation from my Obsidian vault.
BIG Ty for finding the isue i will try to fix it right now and change.
Now i understand , even if an “empty” line doesnt look that baad in a txt or .md file it has grave consiquences for the renderer.
I will practice this format and avoid those in the future…i never tought.
Thank you for your time and help!

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.