浏览代码

generate docs/README.md, tools/README.md, and App List called TemplateList (#250)

Rafael Blumberg 3 年之前
父节点
当前提交
2b7803813b
共有 12 个文件被更改,包括 918 次插入46 次删除
  1. 82 0
      build/README_Template.md
  2. 322 0
      build/appinfo.json
  3. 13 0
      build/env.sh
  4. 128 0
      build/generateList.sh
  5. 126 0
      build/generateREADME.sh
  6. 41 0
      build/generateToolsREADME.sh
  7. 二进制
      build/images/doc_icon.png
  8. 二进制
      build/images/script_icon.png
  9. 9 0
      build/tools_README_Template.md
  10. 36 34
      docs/README.md
  11. 146 0
      docs/TemplateList.md
  12. 15 12
      tools/README.md

+ 82 - 0
build/README_Template.md

@@ -0,0 +1,82 @@
+# Pi-Hosted Portainer Template V2
+
+[![Discord](https://img.shields.io/discord/316245914987528193?logo=discord)](https://discord.com/invite/v8dAnFV) [![Youtube](https://img.shields.io/badge/YouTube-FF0000?style=flat-square&logo=youtube&logoColor=white)](https://www.youtube.com/channel/UCrjKdwxaQMSV_NDywgKXVmw) [![Twitter URL](https://img.shields.io/twitter/follow/novaspirittech?style=flat-square&logo=twitter)](https://twitter.com/novaspirittech) [![hacktoberfest](https://img.shields.io/badge/hacktoberfest-friendly-orange)](https://hacktoberfest.digitalocean.com)
+
+This repository is a collection of tutorials for hosting a variety of server applications using Docker and [Portainer](https://github.com/portainer/portainer).
+
+See the list of Apps included in this template [here](TemplateList.md).
+
+### App Template for Portainer
+![alt text](https://github.com/novaspirit/pi-hosted/blob/master/apptemplate.png?raw=true)
+
+### Installation
+Run `install-docker.sh`, to install docker, and add the current user to the docker usergroup.
+```
+wget -qO- https://git.io/JwUkc | bash
+# need to reboot/logout for changes to take effect
+```
+
+### Pi OS Buster  
+On Oct 30, 2021 Pi OS bullseye was released and this is no longer needed.  Older Pi OS buster releases run an old version of libseccomp that is causing problems with many containers that are preventing them from running.  To fix this we need to manually install a newer version of libseccomp.  However we first need to check and see if you are running an older version.  To check please run sudo dpkg-query -W libseccomp.
+```
+sudo dpkg-query -W libseccomp2
+```
+If you are running a version less that 2.5 you will need to run the *upgrade script.
+
+```
+wget -qO- https://git.io/JPXdj | bash
+```
+* The upgrade script is for Pi OS 32bit.  Pi OS 64 beta is untested and the upgrade script wont work with it.
+
+### Reboot for changes to take effect
+
+```
+sudo reboot
+```
+
+After a reboot, run `install-portainer.sh`, to install Portainer.io
+```
+wget -qO- https://git.io/JwUnf | bash
+# to update portainer, run this command
+wget -qO- https://git.io/JwUlY | bash
+```
+Click Settings, in the bottom-left corner, and paste the Portainer v2 json file link from below into the "App Templates" box.
+
+You're done! Now just click App Templates and deploy applications!
+
+#### Versions
+| Application  | Supported OS's | URL |
+| ------------- | ------------- | ------------- |
+| Portainer v2 Arm32 | Pi OS | https://raw.githubusercontent.com/novaspirit/pi-hosted/master/template/portainer-v2-arm32.json |
+| Portainer v2 Arm64 | Ubunutu 64, DietPI 64 | https://raw.githubusercontent.com/novaspirit/pi-hosted/master/template/portainer-v2-arm64.json |
+
+* Limited testing Operating Systems: Pi OS 64 Beta, DietPI 32 bit
+
+### Pi-Hosted YouTube series
+
+[![Pi-Hosted Playlist](https://i.ytimg.com/vi/cO2-gQ09Jj0/hqdefault.jpg?sqp=-oaymwEXCNACELwBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAfgdX8HlHas2CddSmgwJzergnTzQ)](https://www.youtube.com/watch?v=cO2-gQ09Jj0&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc)
+
+
+|   | Episode                                                                                                                                                                       | Additional Information |
+|---|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------|
+<<<<< YOUTUBE TABLE HERE >>>>>
+
+=======
+
+| Additional Documentation |
+|------------------------|
+<<<<< DOCS TABLE HERE >>>>>
+
+=======
+
+| Additional Tools | Description | wget install |
+|----------------|--------------|--------------|
+<<<<< TOOLS TABLE HERE >>>>>
+
+
+### Contributors
+
+See the list of [contributors](https://github.com/novaspirit/pi-hosted/graphs/contributors) who participated in this project.
+
+### Acknowledgment
+* template based on [SelfHosted](https://github.com/SelfhostedPro/selfhosted_templates) Portainer App Template

+ 322 - 0
build/appinfo.json

@@ -0,0 +1,322 @@
+{
+	"apps": [
+		{
+			"Title": "Caddy",
+			"ScriptID": 1
+		},
+		{
+			"Title": "Drupal",
+			"ScriptID": 2
+		},
+		{
+			"Title": "FileBrowser",
+			"VideoID": 4
+		},
+		{
+			"Title": "Guacamole",
+			"VideoID": 3
+		},
+		{
+			"Title": "Homer",
+			"VideoID": 2
+		},
+		{
+			"Title": "JDownloader",
+			"VideoID": 4
+		},
+		{
+			"Title": "NextcloudPi",
+			"ExtraID": 8,
+			"VideoID": 8
+		},
+		{
+			"Title": "Nginx Proxy Manager",
+			"DocID": 2,
+			"ScriptID": 7,
+			"VideoID": 9
+		},
+		{
+			"Title": "PhotoPrism",
+			"ScriptID": 12
+		},
+		{
+			"Title": "Pi-Hole",
+			"DocID": 7
+		},
+		{
+			"Title": "Pi-Hole DoH/DoT",
+			"DocID": 7
+		},
+		{
+			"Title": "Pi-Hole-Unbound",
+			"DocID": 7
+		},
+		{
+			"Title": "Raspberry Pi Docker Monitor",
+			"DocID": 3,
+			"ScriptID": 9,
+			"VideoID": 7
+		},
+		{
+			"Title": "Samba",
+			"VideoID": 10
+		},
+		{
+			"Title": "Traefik",
+			"ScriptID": 10
+		},
+		{
+			"Title": "Transmission-OpenVPN",
+			"VideoID": 5
+		},
+		{
+			"Title": "UnPoller Monitor",
+			"DocID": 1,
+			"ScriptID": 11
+		},
+		{
+			"Title": "Vikunja With Frontend",
+			"ScriptID": 6
+		},
+		{
+			"Title": "Watchtower",
+			"VideoID": 6
+		},
+		{
+			"Title": "Whoogle",
+			"VideoID": 11
+		},
+		{
+			"Title": "Windows 2000",
+			"VideoID": 12
+		},
+		{
+			"Title": "Wireguard Server",
+			"DocID": 4
+		},
+		{
+			"Title": "Wordpress",
+			"DocID": 5
+		}
+	],
+
+	"youtube": [
+		{
+			"ID": 1,
+			"Title": "Raspberry Pi 4 Server Setup, Docker Install, Portainer Install, Shell In A Box",
+			"URL": "https://www.youtube.com/watch?v=cO2-gQ09Jj0&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=1"
+		},
+		{
+			"ID": 2,
+			"Title": "Installing and Configuring Homer Dashboard",
+			"URL": "https://www.youtube.com/watch?v=_d3J88ootYo&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=2"
+		},
+		{
+			"ID": 3,
+			"Title": "Manually Installing Guacamole on Portainer",
+			"URL": "https://www.youtube.com/watch?v=cKAhnf8X1lo&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=3"
+		},
+		{
+			"ID": 4,
+			"Title": "Installing JDownloader and File Browser On The Pi Docker Server",
+			"URL": "https://www.youtube.com/watch?v=30MYRgCObu8&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=4"
+		},
+		{
+			"ID": 5,
+			"Title": "Torrent with Docker and OPENVPN with Transmission and PIA",
+			"URL": "https://www.youtube.com/watch?v=tGLVEq913_4&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=5"
+		},
+		{
+			"ID": "Extra1",
+			"Title": "Portainer.io App Template for Raspberry Pi arm/arm64 I Need Your Help!",
+			"URL": "https://www.youtube.com/watch?v=Zn-VELlaIN4&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=6"
+		},
+		{
+			"ID": 6,
+			"Title": "Upgrading Portainer and Updating Containers",
+			"URL": "https://www.youtube.com/watch?v=q3wKqk8qVS8&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=7"
+		},
+		{
+			"ID": 7,
+			"Title": "Raspberry Pi Docker Monitoring",
+			"URL": "https://www.youtube.com/watch?v=IoD3vFuep64&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=8",
+			"DocID": 3
+		},
+		{
+			"ID": 8,
+			"Title": "Installing Nextcloud on Raspberry Pi Docker",
+			"URL": "https://www.youtube.com/watch?v=E6IrT3g5Gqc&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=9"
+		},
+		{
+			"ID": 9,
+			"Title": "Installing Nginx Proxy Manager on Docker",
+			"URL": "https://www.youtube.com/watch?v=yl2Laxbqvo8&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=10",
+			"DocID": 2
+		},
+		{
+			"ID": 10,
+			"Title": "Setting up Raspberry Pi Samba Server For File Sharing on Docker",
+			"URL": "https://www.youtube.com/watch?v=2zZ3_1GRWrM&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=11"
+		},
+		{
+			"ID": 11,
+			"Title": "How to Install Whoogle to replace using Google and repo notes",
+			"URL": "https://www.youtube.com/watch?v=j3ZGxo3ibUs&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=12"
+		},
+		{
+			"ID": 12,
+			"Title": "Checking out Windows 2000 Docker",
+			"URL": "https://www.youtube.com/watch?v=57Gnp0424Qc&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=13"
+		}
+	],
+
+	"docs": [
+		{
+			"ID": 1,
+			"File": "UnPoller-Monitor.md",
+			"Description": "Install and setup instructions for the RPI Unifi (UnPoller) Monitor"
+		},
+		{
+			"ID": 2,
+			"File": "nginx_proxy_manager.md",
+			"Description": "Install and setup instructions for Nginx Proxy Manager (NPM)"
+		},
+		{
+			"ID": 3,
+			"File": "rpi_docker_monitor.md",
+			"Description": "Install and setup instructions for the RPI Docker Monitor"
+		},
+		{
+			"ID": 4,
+			"File": "wireguard-install.md",
+			"Description": "Install and setup instructions for the WireGuard VPN Server"
+		},
+		{
+			"ID": 5,
+			"File": "wordpress_installation.md",
+			"Description": "WORDPRESS + SSL SETUP"
+		},
+		{
+			"ID": 6,
+			"File": "throttled.md",
+			"Description": "Install and Setup Instructions for the Throttled Script"
+		},
+		{
+			"ID": 7,
+			"File": "pi-hole.md",
+			"Description": "Install and Setup Pi-Hole for Network-Wide Ad Block"
+		},
+		{
+			"ID": 8,
+			"File": "macvlan_setup.md",
+			"Description": "Attach a container directly to local network (macvlan)"
+		}
+	],
+
+	"tools": [
+		{
+			"ID": 1,
+			"File": "install_caddy.sh",
+			"Type": "Preinstall",
+			"Exec": "bash",
+			"Description": "Preinstall Setup for Caddy",
+			"wget": "https://git.io/JMsEe"
+		},
+		{
+			"ID": 2,
+			"File": "install_drupal.sh",
+			"Type": "Preinstall",
+			"Exec": "bash",
+			"Description": "Preinstall Setup for Drupal",
+			"wget": "https://git.io/JMsEj"
+		},
+		{
+			"ID": 3,
+			"File": "install_portainer_agent.sh",
+			"Type": "Preinstall",
+			"Description": "Install Portainer Agent<br>Portainer agent is used for remote management of the host you install it on."
+		},
+		{
+			"ID": 4,
+			"File": "update_portainer_agent.sh",
+			"Type": "Update",
+			"Description": "Upgrade Portainer Agent"
+		},
+		{
+			"ID": 5,
+			"File": "install_throttled.sh",
+			"Type": "Install",
+			"Exec": "bash",
+			"Description": "Preinstall Setup for the Throttled Script",
+			"DocID": 6,
+			"wget": "https://git.io/JXzw0"
+		},
+		{
+			"ID": 6,
+			"File": "install_vikunja.sh",
+			"Type": "Preinstall",
+			"Exec": "bash",
+			"Description": "Preinstall Setup for Vikunja",
+			"wget": "https://git.io/JMsuZ"
+		},
+		{
+			"ID": 7,
+			"File": "nginx-proxy-manager.sh",
+			"Type": "Preinstall",
+			"Exec": "bash",
+			"Description": "Preinstall Setup for NPM",
+			"DocID": 2,
+			"wget": "https://git.io/JPXF5"
+		},
+		{
+			"ID": 8,
+			"File": "reset_premissions_nextcloud.sh",
+			"Type": "Extra",
+			"Exec": "bash",
+			"Description": "Basic Script to reset the premissions of NextcloudPi",
+			"wget": "https://git.io/JDklN"
+		},
+		{
+			"ID": 9,
+			"File": "rpi_docker_monitor.sh",
+			"Type": "Preinstall",
+			"Exec": "bash",
+			"Description": "Preinstall Setup for Docker Monitor",
+			"DocID": 3,
+			"wget": "https://git.io/JPXba"
+		},
+		{
+			"ID": 10,
+			"File": "traefik.sh",
+			"Type": "Preinstall",
+			"Exec": "bash",
+			"Description": "Preinstall Setup for Traefik",
+			"wget": "https://git.io/JMsuA"
+		},
+		{
+			"ID": 11,
+			"File": "unpoller-install.sh",
+			"Type": "Preinstall",
+			"Exec": "bash",
+			"Description": "Preinstall Setup for UnPoller",
+			"DocID": 1,
+			"wget": "https://git.io/JMszE"
+		},
+		{
+			"ID": 12,
+			"File": "install_photoprism.sh",
+			"Type": "Preinstall",
+			"Exec": "bash",
+			"Description": "Install Photo Prism",
+			"wget": "https://git.io/JM5Tr"
+		},
+		{
+			"ID": 13,
+			"File": "update_libseccomp2.sh",
+			"Type": "Update",
+			"Exec": "bash",
+			"Description": "PI OS 32 libseccomp2 Repair utility",
+			"wget": "https://git.io/JPXdj"
+		}
+	]
+}

+ 13 - 0
build/env.sh

@@ -0,0 +1,13 @@
+#!/bin/bash
+
+pt32="${homedir}template/portainer-v2-arm32.json"
+pt64="${homedir}template/portainer-v2-arm64.json"
+AppList="${homedir}docs/TemplateList.md"
+README="${homedir}docs/README.md"
+README_TEMPLATE="${homedir}build/README_Template.md"
+TOOLSREADME="${homedir}tools/README.md"
+TOOLSREADME_TEMPLATE="${homedir}build/tools_README_Template.md"
+appinfo="${homedir}build/appinfo.json"
+Scripts="${homedir}tools/"
+Extras="${homedir}tools/"
+Docs="${homedir}docs/"

+ 128 - 0
build/generateList.sh

@@ -0,0 +1,128 @@
+#!/bin/bash
+
+# Standard file locations
+homedir='../'
+. env.sh
+docIcon="![](${homedir}build/images/doc_icon.png)"
+scriptIcon="![](${homedir}build/images/script_icon.png)"
+
+# Temp helper files
+TempList=$(mktemp)
+App32=$(mktemp)
+App64=$(mktemp)
+AppTitle=$(mktemp)
+AppType=$(mktemp)
+AppArch=$(mktemp)
+
+# Delete TempFiles on exit
+CleanExit () {
+	rm -f "$TempList"
+	rm -f "$App32"
+	rm -f "$App64"
+	rm -f "$AppTitle"
+	rm -f "$AppType"
+	rm -f "$AppArch"
+}
+trap CleanExit 0 1
+
+# Apps Title for both Templates
+jq '.templates[].title' "$pt32" | tr -d '"' > "$App32"
+jq '.templates[].title' "$pt64" | tr -d '"' > "$App64"
+cat "$App32" "$App64" | sort -u > "$AppTitle"
+
+# Apps Type for both Templates
+jq '.templates[].type' "$pt32" | paste -d'|' "$App32" - > "$TempList"
+jq '.templates[].type' "$pt64" | paste -d'|' "$App64" - >> "$TempList"
+sort -u "$TempList" > "$AppType"
+
+# Create AppList title
+{
+	echo "# Template List"
+	echo
+	echo "|App Title|System|Type | Doc |Install Script|Extra Scripts|Youtube Video|"
+	echo "|:--------|:----:|:---:|:---:|:------------:|:------------|:-----------:|"
+} > "$AppList"
+
+# Generate App Table
+while IFS="" read -u 9 -r App || [ -n "$App" ]
+do
+	# Check System Version
+	grep -qx "$App" "$App32" && has32='32'
+	grep -qx "$App" "$App64" && has64='64'
+	[[ -n "$has32" && -n "$has64" ]] && Arch='32/64 bit' || Arch="$has32$has64 bit"
+
+	# Get App Info
+	info=$(jq ".apps[] | select(.Title==\"$App\")" "$appinfo")
+	if [ "$info" != "" ] ; then
+
+		# Get Doc from app info
+		docID=$(echo "$info" | jq ".DocID")
+		if [ "$docID" != "null" ]; then
+			doc=$(jq ".docs[] | select(.ID==$docID) | .File" "$appinfo" | tr -d '"')
+			doc="[$docIcon]($Docs$doc)"
+		else
+			unset doc
+		fi
+
+		# Get Script from app info
+		scriptID=$(echo "$info" | jq ".ScriptID")
+		if [ "$scriptID" != "null" ]; then
+			script=$(jq ".tools[] | select(.ID==$scriptID) | .File" "$appinfo" | tr -d '"')
+			script="[$scriptIcon]($Scripts$script)"
+		else
+			unset script
+		fi
+
+		# Get Script from app info
+		extraID=$(echo "$info" | jq ".ExtraID")
+		if [ "$extraID" != "null" ]; then
+			# If only one entry
+			if [ "$(echo "$extraID" | wc -l )" == "1" ]; then
+				extra=$(jq ".tools[] | select(.ID==$extraID) | .File" "$appinfo" | tr -d '"')
+				extra="[$extra]($Extras$extra)"
+			
+			# If multiples entries
+			else
+				n_ext=$(echo "$extraID" | jq '. | length')
+				for n in $(seq 0 $(( n_ext - 1 ))); do
+					extID=$(echo "$extraID" | jq ".[$n]" | tr -d \")
+					ext=$(jq ".tools[] | select(.ID==$extID) | .File" "$appinfo" | tr -d '"')
+					if [ "$n" == "0" ]; then
+						txt="[$ext]($Extras$ext)"
+					else
+						txt="$txt<br>[$ext]($Extras$ext)"
+					fi
+				done
+				extra=$txt
+			fi
+		else
+			unset extra
+		fi
+
+		# Get Script from app info
+		vid=$(echo "$info" | jq ".VideoID")
+		if [ "$vid" != "null" ] ; then
+			vidURL=$(jq ".youtube[] | select(.ID==$vid) | .URL" "$appinfo" | tr -d \")
+			vid="[![YouTube](https://img.shields.io/badge/YouTube-FF0000?style=plastic&logo=youtube&logoColor=white)]($vidURL)"
+		else
+			unset vid
+		fi
+	
+	else
+		unset doc script extra vid
+	fi
+
+	# Building App Line
+	line="|$App|$Arch|$(grep "$App|" "$AppType" | cut -d'|' -f2 )| $doc | $script | $extra | $vid |"
+
+	# Change container type to string (Default to Container when not set)
+	line="${line//|1|/|Container|}"
+	line="${line//|null|/|Container|}"
+	line="${line//|3|/|Stack|}"
+
+	# Add line to List
+	echo "$line" >> "$AppList"
+
+	# Unset System variables
+	unset has32 has64
+done 9< "$AppTitle"

+ 126 - 0
build/generateREADME.sh

@@ -0,0 +1,126 @@
+#!/bin/bash
+
+# Standard file locations
+homedir='../'
+. env.sh
+
+# Temp Files
+tmpreadme1=$(mktemp)
+tmpreadme2=$(mktemp)
+
+# Delete TempFiles on exit
+CleanExit () {
+	rm -f "$tmpreadme1"
+	rm -f "$tmpreadme2"
+}
+trap CleanExit 0 1
+
+insertTable () {
+	searchstr="$1"
+	basefile="$2"
+
+	tableline=$( grep -n "$searchstr" "$basefile" | cut -d: -f1)
+	head -n $(( tableline - 1 )) "$basefile" > "$tmpreadme1"
+	echo -e "$table" >> "$tmpreadme1"
+	tail -n +$(( tableline + 1 )) "$basefile" >> "$tmpreadme1"
+	mv "$tmpreadme1" "$tmpreadme2"
+}
+
+## Generate YouTube Video Table
+unset table
+nVideos=$( jq '.youtube | length' "$appinfo")
+for vid in $(seq 0 $(( nVideos - 1 ))); do
+	info=$( jq ".youtube[$vid]" "$appinfo" )
+
+	# Get Video ID
+	ID=$( echo "$info" | jq '.ID' | tr -d '"' )
+
+	# Get Video URL
+	URL=$( echo "$info" | jq '.URL' | tr -d '"' )
+
+	# Get Video Title
+	TITLE=$( echo "$info" | jq '.Title' | tr -d '"' )
+
+	# Get Video Documentation
+	DocID=$( echo "$info" | jq '.DocID' )
+	if [ "$DocID" != "null" ] ; then
+		DocFile=$( jq ".docs[] | select(.ID==$DocID) | .File" "$appinfo" | tr -d '"' )
+		DocMD="[Install Doc]($Docs$DocFile)"
+	else
+		unset DocMD
+	fi
+
+	line="|$ID|[$TITLE]($URL)|$DocMD|"
+	if [ "$vid" == "0" ] ; then
+		table=$line
+	else
+		table=$( echo -e "$table\n$line")
+	fi
+done
+insertTable '<<<<< YOUTUBE TABLE HERE >>>>>' "$README_TEMPLATE"
+
+## Generate Doc Table
+unset table
+nDocs=$( jq '.docs | length' "$appinfo")
+for doc in $(seq 0 $(( nDocs - 1 ))); do
+	info=$( jq ".docs[$doc]" "$appinfo" )
+
+	# Get Doc Path
+	FILE=$( echo "$info" | jq '.File' | tr -d '"' )
+
+	# Get Doc Description
+	DESC=$( echo "$info" | jq '.Description' | tr -d '"' )
+
+	line="|[$DESC]($Docs$FILE)|"
+	if [ "$doc" == "0" ] ; then
+		table=$line
+	else
+		table=$( echo -e "$table\n$line")
+	fi
+done
+insertTable '<<<<< DOCS TABLE HERE >>>>>' "$tmpreadme2"
+
+## Generate Tools Table
+unset table
+nTools=$( jq '.tools | length' "$appinfo")
+for tool in $(seq 0 $(( nTools - 1 ))); do
+	info=$( jq ".tools[$tool]" "$appinfo" )
+
+	# Get Tool Path
+	FILE=$( echo "$info" | jq '.File' | tr -d '"' )
+	FILE="[$FILE]($Scripts$FILE)"
+
+	# Get Tool Description
+	DESC=$( echo "$info" | jq '.Description' | tr -d '"' )
+
+	# Get Tool runner
+	EXEC=$( echo "$info" | jq '.Exec' | tr -d '"' )
+	[ "$EXEC" == "null" ] && EXEC="bash"
+
+	# Get Tool wget link
+	WGET=$( echo "$info" | jq '.wget' | tr -d '"' )
+	if [ "$WGET" != "null" ]; then
+		WGET="wget -qO- $WGET \| $EXEC"
+	else
+		unset WGET
+	fi
+
+	# Get Tool Installation Doc
+	DocID=$( echo "$info" | jq '.DocID')
+	if [ "$DocID" != "null" ]; then
+		DocFile=$(jq ".docs[] | select(.ID==$DocID) | .File" "$appinfo" | tr -d '"')
+		DocLink="<br>[Installation Document]($Docs$DocFile)"
+	else
+		unset DocLink
+	fi
+
+	line="|$FILE|$DESC$DocLink|$WGET|"
+	if [ "$tool" == "0" ] ; then
+		table=$line
+	else
+		table=$( echo -e "$table\n$line")
+	fi
+done
+insertTable '<<<<< TOOLS TABLE HERE >>>>>' "$tmpreadme2"
+
+cp -f "$tmpreadme2" "$README"

+ 41 - 0
build/generateToolsREADME.sh

@@ -0,0 +1,41 @@
+#!/bin/bash
+
+# Standard file locations
+homedir='../'
+. env.sh
+
+## Generate Tools Table
+unset table
+nTools=$( jq '.tools | length' "$appinfo")
+for tool in $(seq 0 $(( nTools - 1 ))); do
+	info=$( jq ".tools[$tool]" "$appinfo" )
+
+	# Get Tool Path
+	FILE=$( echo "$info" | jq '.File' | tr -d '"' )
+	FILE="[$FILE]($Scripts$FILE)"
+
+	# Get Tool Description
+	DESC=$( echo "$info" | jq '.Description' | tr -d '"' )
+
+	# Get Tool Type
+	TYPE=$( echo "$info" | jq '.Type' | tr -d '"' )
+	[ "$TYPE" == "null" ] && TYPE="Install"
+
+	# Get Tool Installation Doc
+	DocID=$( echo "$info" | jq '.DocID')
+	if [ "$DocID" != "null" ]; then
+		DocFile=$(jq ".docs[] | select(.ID==$DocID) | .File" "$appinfo" | tr -d '"')
+		DocLink="[Documentation]($Docs$DocFile)"
+	else
+		unset DocLink
+	fi
+
+	line="|$FILE|$DocLink|$TYPE|$DESC|"
+	if [ "$tool" == "0" ] ; then
+		table=$line
+	else
+		table=$( echo -e "$table\n$line")
+	fi
+done
+cp -f "$TOOLSREADME_TEMPLATE" "$TOOLSREADME"
+echo -e "$table" >> "$TOOLSREADME"

二进制
build/images/doc_icon.png


二进制
build/images/script_icon.png


+ 9 - 0
build/tools_README_Template.md

@@ -0,0 +1,9 @@
+## PLEASE NOTE ##
+
+
+Most of the follwing scripts are only needed if you are trying to load one of these containers.  Please see table below for a recap of use cases.
+
+---
+
+| Script Name  | Additional Doc | Type | Description |
+| ------------ | -------------- | ---- | ----------- |

+ 36 - 34
docs/README.md

@@ -4,6 +4,8 @@
 
 This repository is a collection of tutorials for hosting a variety of server applications using Docker and [Portainer](https://github.com/portainer/portainer).
 
+See the list of Apps included in this template [here](TemplateList.md).
+
 ### App Template for Portainer
 ![alt text](https://github.com/novaspirit/pi-hosted/blob/master/apptemplate.png?raw=true)
 
@@ -57,49 +59,50 @@ You're done! Now just click App Templates and deploy applications!
 
 |   | Episode                                                                                                                                                                       | Additional Information |
 |---|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------|
-| 1 | [Raspberry Pi 4 Server Setup, Docker Install, Portainer Install, Shell In A Box](https://www.youtube.com/watch?v=cO2-gQ09Jj0&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=1) | | 
-| 2 |                   [Installing and Configuring Homer Dashboard](https://www.youtube.com/watch?v=_d3J88ootYo&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=2)                   | |
-| 3 |                   [Manually Installing Guacamole on Portainer](https://www.youtube.com/watch?v=cKAhnf8X1lo&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=3)                   | |
-| 4 |         [Installing JDownloader and File Browser On The Pi Docker Server](https://www.youtube.com/watch?v=30MYRgCObu8&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=4)        | |
-| 5 |            [Torrent with Docker and OPENVPN with Transmission and PIA](https://www.youtube.com/watch?v=tGLVEq913_4&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=5)           | |
-|  |     [Portainer.io App Template for Raspberry Pi arm/arm64 I Need Your Help!](https://www.youtube.com/watch?v=Zn-VELlaIN4&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=6)     | |
-| 6 |                   [Upgrading Portainer and Updating Containers](https://www.youtube.com/watch?v=q3wKqk8qVS8&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=7)                  | |
-| 7 |                         [Raspberry Pi Docker Monitoring](https://www.youtube.com/watch?v=IoD3vFuep64&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=8)                         | [Install Monitor](https://github.com/novaspirit/pi-hosted/blob/master/docs/rpi_docker_monitor.md) |
-| 8 |        [Installing Nextcloud on Raspberry Pi Docker](https://www.youtube.com/watch?v=E6IrT3g5Gqc&list=UUrjKdwxaQMSV_NDywgKXVmw&index=7)                                       | |
-| 9 |                         [Installing Nginx Proxy Manager on Docker](https://www.youtube.com/watch?v=yl2Laxbqvo8)                                                             | [Install NPM](https://github.com/novaspirit/pi-hosted/blob/master/docs/nginx_proxy_manager.md) |
-| 10 | [Setting up Raspberry Pi Samba Server For File Sharing on Docker](https://www.youtube.com/watch?v=2zZ3_1GRWrM) | |
-| 11 | [How to Install Whoogle to replace using Google and repo notes](https://www.youtube.com/watch?v=j3ZGxo3ibUs) | |
-| 12 | [Checking out Windows 2000 Docker](https://www.youtube.com/watch?v=57Gnp0424Qc&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=13)
+|1|[Raspberry Pi 4 Server Setup, Docker Install, Portainer Install, Shell In A Box](https://www.youtube.com/watch?v=cO2-gQ09Jj0&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=1)||
+|2|[Installing and Configuring Homer Dashboard](https://www.youtube.com/watch?v=_d3J88ootYo&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=2)||
+|3|[Manually Installing Guacamole on Portainer](https://www.youtube.com/watch?v=cKAhnf8X1lo&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=3)||
+|4|[Installing JDownloader and File Browser On The Pi Docker Server](https://www.youtube.com/watch?v=30MYRgCObu8&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=4)||
+|5|[Torrent with Docker and OPENVPN with Transmission and PIA](https://www.youtube.com/watch?v=tGLVEq913_4&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=5)||
+|Extra1|[Portainer.io App Template for Raspberry Pi arm/arm64 I Need Your Help!](https://www.youtube.com/watch?v=Zn-VELlaIN4&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=6)||
+|6|[Upgrading Portainer and Updating Containers](https://www.youtube.com/watch?v=q3wKqk8qVS8&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=7)||
+|7|[Raspberry Pi Docker Monitoring](https://www.youtube.com/watch?v=IoD3vFuep64&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=8)|[Install Doc](../docs/rpi_docker_monitor.md)|
+|8|[Installing Nextcloud on Raspberry Pi Docker](https://www.youtube.com/watch?v=E6IrT3g5Gqc&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=9)||
+|9|[Installing Nginx Proxy Manager on Docker](https://www.youtube.com/watch?v=yl2Laxbqvo8&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=10)|[Install Doc](../docs/nginx_proxy_manager.md)|
+|10|[Setting up Raspberry Pi Samba Server For File Sharing on Docker](https://www.youtube.com/watch?v=2zZ3_1GRWrM&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=11)||
+|11|[How to Install Whoogle to replace using Google and repo notes](https://www.youtube.com/watch?v=j3ZGxo3ibUs&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=12)||
+|12|[Checking out Windows 2000 Docker](https://www.youtube.com/watch?v=57Gnp0424Qc&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=13)||
 
 =======
 
 | Additional Documentation |
 |------------------------|
-| [Install and setup instructions for the RPI Unifi (UnPoller) Monitor](https://github.com/novaspirit/pi-hosted/blob/master/docs/UnPoller-Monitor.md) |
-| [Install and setup instructions for Nginx Proxy Manager (NPM)](https://github.com/novaspirit/pi-hosted/blob/master/docs/nginx_proxy_manager.md) |
-|[Install and setup instructions for the RPI Docker Monitor](https://github.com/novaspirit/pi-hosted/blob/master/docs/rpi_docker_monitor.md) |
-|[Install and setup instructions for the WireGuard VPN Server](https://github.com/novaspirit/pi-hosted/blob/master/docs/wireguard-install.md) |
-|[WORDPRESS + SSL SETUP](https://github.com/novaspirit/pi-hosted/blob/master/docs/wordpress_installation.md) |
-|[Install and Setup Instructions for the Throttled Script](https://github.com/novaspirit/pi-hosted/blob/master/docs/throttled.md) |
-|[Install and Setup Pi-Hole for Network-Wide Ad Block](https://github.com/novaspirit/pi-hosted/blob/master/docs/pi-hole.md) |
-|[Attach a container directly to local network (macvlan)](https://github.com/novaspirit/pi-hosted/blob/master/docs/macvlan_setup.md) |
+|[Install and setup instructions for the RPI Unifi (UnPoller) Monitor](../docs/UnPoller-Monitor.md)|
+|[Install and setup instructions for Nginx Proxy Manager (NPM)](../docs/nginx_proxy_manager.md)|
+|[Install and setup instructions for the RPI Docker Monitor](../docs/rpi_docker_monitor.md)|
+|[Install and setup instructions for the WireGuard VPN Server](../docs/wireguard-install.md)|
+|[WORDPRESS + SSL SETUP](../docs/wordpress_installation.md)|
+|[Install and Setup Instructions for the Throttled Script](../docs/throttled.md)|
+|[Install and Setup Pi-Hole for Network-Wide Ad Block](../docs/pi-hole.md)|
+|[Attach a container directly to local network (macvlan)](../docs/macvlan_setup.md)|
 
 =======
 
 | Additional Tools | Description | wget install |
 |----------------|--------------|--------------|
-| [install_caddy.sh](https://github.com/novaspirit/pi-hosted/tree/master/tools/install_caddy.sh) | Pre-setup script to install Caddy | wget -qO- https://git.io/JMsEe \| bash| 
-| [install_drupal.sh](https://github.com/novaspirit/pi-hosted/tree/master/tools/install_drupal.sh) | Preinstall Setup for Drupal | wget -qO- https://git.io/JMsEj \| bash|
-| [install_portainer_agent.sh](https://github.com/novaspirit/pi-hosted/tree/master/tools/install_portainer_agent.sh) [update_portainer_agent.sh](https://github.com/rmiddle/pi-hosted/blob/master/tools/update_portainer_agent.sh) |Install and upgrade Portainer Agent.  Portainer agent is used for remote management of the host you install it on.  |  |
-| [install_throttled.sh](https://github.com/novaspirit/pi-hosted/tree/master/tools/install_throttled.sh)  | [Install and Setup Instructions for the Throttled Script](https://github.com/novaspirit/pi-hosted/blob/master/docs/throttled.md) | wget -qO- https://git.io/JXzw0 \| bash|
-| [install_vikunja.sh](https://github.com/novaspirit/pi-hosted/tree/master/tools/install_vikunja.sh) | Preinstall Setup for Vikunja | wget -qO-  https://git.io/JMsuZ \| bash |
-| [nginx-proxy-manager.sh](https://github.com/novaspirit/pi-hosted/tree/master/tools/nginx-proxy-manager.sh) | Preinstall Setup for NPM. [Installation Document](https://github.com/novaspirit/pi-hosted/blob/master/docs/nginx_proxy_manager.md) | wget -qO- https://git.io/JPXF5 \| bash|
-| [reset_premissions_nextcloud.sh](https://raw.githubusercontent.com/novaspirit/pi-hosted/master/tools/reset_premissions_nextcloud.sh) | Basic Script to reset the premissions of nextcloudpi | wget -qO- https://git.io/JDklN \| bash|
-| [rpi_docker_monitor.sh](https://github.com/novaspirit/pi-hosted/tree/master/tools/rpi_docker_monitor.sh) | Preinstall Setup for Docker Monitor [Installation Document](https://github.com/novaspirit/pi-hosted/blob/master/docs/rpi_docker_monitor.md) | wget -qO- https://git.io/JPXba \| bash|
-| [traefik.sh](https://github.com/novaspirit/pi-hosted/tree/master/tools/traefik.sh) | Preinstall Setup for Traefik | wget -qO- https://git.io/JMsuA \| bash|
-| [unpoller-install.sh](https://github.com/novaspirit/pi-hosted/tree/master/tools/unpoller-install.sh) | Preinstall Setup for UnPoller [Installation Document](https://github.com/rmiddle/pi-hosted/blob/readme_update/docs/UnPoller-Monitor.md)| wget -qO- https://git.io/JMszE \| bash|
-| [install_photoprism.sh](https://github.com/novaspirit/pi-hosted/tree/master/tools/install_photoprism.sh) | Install Photo Prism | wget -qO- https://git.io/JM5Tr \| bash|
-| [update_libseccomp2.sh](https://github.com/novaspirit/pi-hosted/tree/master/tools/update_libseccomp2.sh) | PI OS 32 libseccomp2 Repair utility | wget -qO- https://git.io/JPXdj \| bash|
+|[install_caddy.sh](../tools/install_caddy.sh)|Preinstall Setup for Caddy|wget -qO- https://git.io/JMsEe \| bash|
+|[install_drupal.sh](../tools/install_drupal.sh)|Preinstall Setup for Drupal|wget -qO- https://git.io/JMsEj \| bash|
+|[install_portainer_agent.sh](../tools/install_portainer_agent.sh)|Install Portainer Agent<br>Portainer agent is used for remote management of the host you install it on.||
+|[update_portainer_agent.sh](../tools/update_portainer_agent.sh)|Upgrade Portainer Agent||
+|[install_throttled.sh](../tools/install_throttled.sh)|Preinstall Setup for the Throttled Script<br>[Installation Document](../docs/throttled.md)|wget -qO- https://git.io/JXzw0 \| bash|
+|[install_vikunja.sh](../tools/install_vikunja.sh)|Preinstall Setup for Vikunja|wget -qO- https://git.io/JMsuZ \| bash|
+|[nginx-proxy-manager.sh](../tools/nginx-proxy-manager.sh)|Preinstall Setup for NPM<br>[Installation Document](../docs/nginx_proxy_manager.md)|wget -qO- https://git.io/JPXF5 \| bash|
+|[reset_premissions_nextcloud.sh](../tools/reset_premissions_nextcloud.sh)|Basic Script to reset the premissions of NextcloudPi|wget -qO- https://git.io/JDklN \| bash|
+|[rpi_docker_monitor.sh](../tools/rpi_docker_monitor.sh)|Preinstall Setup for Docker Monitor<br>[Installation Document](../docs/rpi_docker_monitor.md)|wget -qO- https://git.io/JPXba \| bash|
+|[traefik.sh](../tools/traefik.sh)|Preinstall Setup for Traefik|wget -qO- https://git.io/JMsuA \| bash|
+|[unpoller-install.sh](../tools/unpoller-install.sh)|Preinstall Setup for UnPoller<br>[Installation Document](../docs/UnPoller-Monitor.md)|wget -qO- https://git.io/JMszE \| bash|
+|[install_photoprism.sh](../tools/install_photoprism.sh)|Install Photo Prism|wget -qO- https://git.io/JM5Tr \| bash|
+|[update_libseccomp2.sh](../tools/update_libseccomp2.sh)|PI OS 32 libseccomp2 Repair utility|wget -qO- https://git.io/JPXdj \| bash|
 
 
 ### Contributors
@@ -108,4 +111,3 @@ See the list of [contributors](https://github.com/novaspirit/pi-hosted/graphs/co
 
 ### Acknowledgment
 * template based on [SelfHosted](https://github.com/SelfhostedPro/selfhosted_templates) Portainer App Template
-

+ 146 - 0
docs/TemplateList.md

@@ -0,0 +1,146 @@
+# Template List
+
+|App Title|System|Type | Doc |Install Script|Extra Scripts|Youtube Video|
+|:--------|:----:|:---:|:---:|:------------:|:------------|:-----------:|
+|Airsonic|32/64 bit|Container|  |  |  |  |
+|Archivebox|32/64 bit|Container|  |  |  |  |
+|Authelia|32/64 bit|Container|  |  |  |  |
+|Bazarr|32/64 bit|Container|  |  |  |  |
+|Beets|32/64 bit|Container|  |  |  |  |
+|Booksonic|32/64 bit|Container|  |  |  |  |
+|Bookstack|32/64 bit|Stack|  |  |  |  |
+|Caddy|32/64 bit|Container|  | [![](../build/images/script_icon.png)](../tools/install_caddy.sh) |  |  |
+|Calibre Web|32/64 bit|Container|  |  |  |  |
+|Cardigann|32/64 bit|Container|  |  |  |  |
+|Chevereto|32/64 bit|Container|  |  |  |  |
+|Cloudflare DDNS|32/64 bit|Container|  |  |  |  |
+|Code Server|32/64 bit|Container|  |  |  |  |
+|Codiad|32/64 bit|Container|  |  |  |  |
+|COPS|32/64 bit|Container|  |  |  |  |
+|CouchPotato|32/64 bit|Container|  |  |  |  |
+|Daapd|32/64 bit|Container|  |  |  |  |
+|DashMachine|32/64 bit|Container|  |  |  |  |
+|Davos|32/64 bit|Container|  |  |  |  |
+|DeeMix|32/64 bit|Container|  |  |  |  |
+|Deluge|32/64 bit|Container|  |  |  |  |
+|Deluge openvpn|32/64 bit|Container|  |  |  |  |
+|Domoticz|32/64 bit|Container|  |  |  |  |
+|Dozzle|32/64 bit|Container|  |  |  |  |
+|Dradis|32/64 bit|Container|  |  |  |  |
+|Drupal|32/64 bit|Stack|  | [![](../build/images/script_icon.png)](../tools/install_drupal.sh) |  |  |
+|Duck DNS|32/64 bit|Container|  |  |  |  |
+|Duplicati|32/64 bit|Container|  |  |  |  |
+|Eclipse Mosquitto|32/64 bit|Container|  |  |  |  |
+|Emby|32/64 bit|Container|  |  |  |  |
+|EmbyStat|32/64 bit|Container|  |  |  |  |
+|FileBrowser|32/64 bit|Container|  |  |  | [![YouTube](https://img.shields.io/badge/YouTube-FF0000?style=plastic&logo=youtube&logoColor=white)](https://www.youtube.com/watch?v=30MYRgCObu8&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=4) |
+|Flame|32/64 bit|Container|  |  |  |  |
+|FoundryVTT Server|32/64 bit|Container|  |  |  |  |
+|FreshRSS|32/64 bit|Container|  |  |  |  |
+|Gazee|32/64 bit|Container|  |  |  |  |
+|Gitea|64 bit|Container|  |  |  |  |
+|Gitea with Mariadb|64 bit|Stack|  |  |  |  |
+|Gotify|32/64 bit|Container|  |  |  |  |
+|Grocy|32/64 bit|Container|  |  |  |  |
+|Guacamole|32/64 bit|Container|  |  |  | [![YouTube](https://img.shields.io/badge/YouTube-FF0000?style=plastic&logo=youtube&logoColor=white)](https://www.youtube.com/watch?v=cKAhnf8X1lo&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=3) |
+|Headphones|32/64 bit|Container|  |  |  |  |
+|Heimdall|32/64 bit|Container|  |  |  |  |
+|Home Assistant|32/64 bit|Container|  |  |  |  |
+|Homebridge|32/64 bit|Container|  |  |  |  |
+|Homebridge - Debian|32/64 bit|Container|  |  |  |  |
+|Homer|32/64 bit|Container|  |  |  | [![YouTube](https://img.shields.io/badge/YouTube-FF0000?style=plastic&logo=youtube&logoColor=white)](https://www.youtube.com/watch?v=_d3J88ootYo&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=2) |
+|HTPC Manager|32/64 bit|Container|  |  |  |  |
+|Huginn|32/64 bit|Container|  |  |  |  |
+|Influxdb 1.8.10|32/64 bit|Container|  |  |  |  |
+|Jackett|32/64 bit|Container|  |  |  |  |
+|JDownloader|32/64 bit|Container|  |  |  | [![YouTube](https://img.shields.io/badge/YouTube-FF0000?style=plastic&logo=youtube&logoColor=white)](https://www.youtube.com/watch?v=30MYRgCObu8&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=4) |
+|Jellyfin|32/64 bit|Container|  |  |  |  |
+|Kodi Headless|32/64 bit|Container|  |  |  |  |
+|LazyLibrarian|32/64 bit|Container|  |  |  |  |
+|Let's Encrypt|32/64 bit|Container|  |  |  |  |
+|libreddit|32/64 bit|Container|  |  |  |  |
+|LibreSpeed|32/64 bit|Container|  |  |  |  |
+|lidarr|32/64 bit|Container|  |  |  |  |
+|Lychee|32/64 bit|Container|  |  |  |  |
+|Lychee With Mariadb|32/64 bit|Stack|  |  |  |  |
+|MariaDB|32/64 bit|Container|  |  |  |  |
+|Mealie|32/64 bit|Container|  |  |  |  |
+|Medusa|32/64 bit|Container|  |  |  |  |
+|Minecraft Server|32/64 bit|Container|  |  |  |  |
+|Minetest|32/64 bit|Container|  |  |  |  |
+|Minisatip|32/64 bit|Container|  |  |  |  |
+|Mstream|32/64 bit|Container|  |  |  |  |
+|Murmur|32/64 bit|Container|  |  |  |  |
+|MusicBrainz|32/64 bit|Container|  |  |  |  |
+|Muximux|32/64 bit|Container|  |  |  |  |
+|Mylar|32/64 bit|Container|  |  |  |  |
+|n8n|32/64 bit|Container|  |  |  |  |
+|Netdata|32/64 bit|Container|  |  |  |  |
+|Nextcloud|32/64 bit|Stack|  |  | [reset_premissions_nextcloud.sh](../tools/reset_premissions_nextcloud.sh) |  |
+|NextcloudPi|32/64 bit|Container|  |  | [reset_premissions_nextcloud.sh](../tools/reset_premissions_nextcloud.sh) | [![YouTube](https://img.shields.io/badge/YouTube-FF0000?style=plastic&logo=youtube&logoColor=white)](https://www.youtube.com/watch?v=E6IrT3g5Gqc&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=9) |
+|Nginx|32/64 bit|Container|  |  |  |  |
+|Nginx Proxy Manager|32/64 bit|Stack| [![](../build/images/doc_icon.png)](../docs/nginx_proxy_manager.md) | [![](../build/images/script_icon.png)](../tools/nginx-proxy-manager.sh) |  | [![YouTube](https://img.shields.io/badge/YouTube-FF0000?style=plastic&logo=youtube&logoColor=white)](https://www.youtube.com/watch?v=yl2Laxbqvo8&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=10) |
+|Node Red|32/64 bit|Stack|  |  |  |  |
+|NZBGet|32/64 bit|Container|  |  |  |  |
+|NZBHydra 2|32/64 bit|Container|  |  |  |  |
+|Omada EAP Controller|32/64 bit|Container|  |  |  |  |
+|Ombi|32/64 bit|Container|  |  |  |  |
+|OpenVPN Access Server|32/64 bit|Container|  |  |  |  |
+|Organizr v2|32/64 bit|Container|  |  |  |  |
+|OScam|32/64 bit|Container|  |  |  |  |
+|Paperless|32/64 bit|Container|  |  |  |  |
+|PhotoPrism|64 bit|Stack|  | [![](../build/images/script_icon.png)](../tools/install_photoprism.sh) |  |  |
+|PhotoShow|32/64 bit|Container|  |  |  |  |
+|Pi-Hole|32/64 bit|Container| [![](../build/images/doc_icon.png)](../docs/pi-hole.md) |  |  |  |
+|Pi-Hole DoH/DoT|32/64 bit|Container| [![](../build/images/doc_icon.png)](../docs/pi-hole.md) |  |  |  |
+|Pi-Hole-Unbound|32/64 bit|Container| [![](../build/images/doc_icon.png)](../docs/pi-hole.md) |  |  |  |
+|Piwigo|32/64 bit|Container|  |  |  |  |
+|Plex|32/64 bit|Container|  |  |  |  |
+|Pritunl|64 bit|Stack|  |  |  |  |
+|PrivateBin|32/64 bit|Container|  |  |  |  |
+|ProjectSend|32/64 bit|Container|  |  |  |  |
+|ProtonMail Bridge|64 bit|Container|  |  |  |  |
+|Pydio|32/64 bit|Container|  |  |  |  |
+|qBittorrent|32/64 bit|Container|  |  |  |  |
+|Quassel IRC|32/64 bit|Container|  |  |  |  |
+|Radarr|32/64 bit|Container|  |  |  |  |
+|Raspberry Pi Docker Monitor|32/64 bit|Stack| [![](../build/images/doc_icon.png)](../docs/rpi_docker_monitor.md) | [![](../build/images/script_icon.png)](../tools/rpi_docker_monitor.sh) |  | [![YouTube](https://img.shields.io/badge/YouTube-FF0000?style=plastic&logo=youtube&logoColor=white)](https://www.youtube.com/watch?v=IoD3vFuep64&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=8) |
+|Resilio Sync|32/64 bit|Container|  |  |  |  |
+|ruTorrent|32/64 bit|Container|  |  |  |  |
+|SABnzbd|32/64 bit|Container|  |  |  |  |
+|Samba|32/64 bit|Container|  |  |  | [![YouTube](https://img.shields.io/badge/YouTube-FF0000?style=plastic&logo=youtube&logoColor=white)](https://www.youtube.com/watch?v=2zZ3_1GRWrM&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=11) |
+|SearXNG|32/64 bit|Container|  |  |  |  |
+|Shiori|32/64 bit|Container|  |  |  |  |
+|SickChill|32/64 bit|Container|  |  |  |  |
+|SickGear|32/64 bit|Container|  |  |  |  |
+|SmokePing|32/64 bit|Container|  |  |  |  |
+|Snippet-box|32/64 bit|Container|  |  |  |  |
+|Sonarr|32/64 bit|Container|  |  |  |  |
+|Speedtest Tracker|32/64 bit|Container|  |  |  |  |
+|SyncThing|32/64 bit|Container|  |  |  |  |
+|Tautulli|32/64 bit|Container|  |  |  |  |
+|TheLounge|32/64 bit|Container|  |  |  |  |
+|TiddlyWiki|32/64 bit|Container|  |  |  |  |
+|Tiny Tiny RSS|32/64 bit|Container|  |  |  |  |
+|Traefik|32/64 bit|Container|  | [![](../build/images/script_icon.png)](../tools/traefik.sh) |  |  |
+|Transmission|32/64 bit|Container|  |  |  |  |
+|Transmission-OpenVPN|32/64 bit|Container|  |  |  | [![YouTube](https://img.shields.io/badge/YouTube-FF0000?style=plastic&logo=youtube&logoColor=white)](https://www.youtube.com/watch?v=tGLVEq913_4&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=5) |
+|Transmission OpenVPN Version 4|32/64 bit|Container|  |  |  |  |
+|Tvheadend|32/64 bit|Container|  |  |  |  |
+|Ubooquity|32/64 bit|Container|  |  |  |  |
+|UniFi Controller|32/64 bit|Container|  |  |  |  |
+|UniFi Video|32/64 bit|Container|  |  |  |  |
+|UnPoller Monitor|32/64 bit|Stack| [![](../build/images/doc_icon.png)](../docs/UnPoller-Monitor.md) | [![](../build/images/script_icon.png)](../tools/unpoller-install.sh) |  |  |
+|Uptime Kuma|32/64 bit|Container|  |  |  |  |
+|Vaultwarden|32/64 bit|Container|  |  |  |  |
+|Vikunja With Frontend|32/64 bit|Stack|  | [![](../build/images/script_icon.png)](../tools/install_vikunja.sh) |  |  |
+|Watchtower|32/64 bit|Container|  |  |  | [![YouTube](https://img.shields.io/badge/YouTube-FF0000?style=plastic&logo=youtube&logoColor=white)](https://www.youtube.com/watch?v=q3wKqk8qVS8&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=7) |
+|WebGrab+Plus|32/64 bit|Container|  |  |  |  |
+|Whoogle|32/64 bit|Container|  |  |  | [![YouTube](https://img.shields.io/badge/YouTube-FF0000?style=plastic&logo=youtube&logoColor=white)](https://www.youtube.com/watch?v=j3ZGxo3ibUs&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=12) |
+|Wikijs|32/64 bit|Container|  |  |  |  |
+|Windows 2000|32/64 bit|Container|  |  |  | [![YouTube](https://img.shields.io/badge/YouTube-FF0000?style=plastic&logo=youtube&logoColor=white)](https://www.youtube.com/watch?v=57Gnp0424Qc&list=PL846hFPMqg3jwkxcScD1xw2bKXrJVvarc&index=13) |
+|Wireguard Server|32/64 bit|Stack| [![](../build/images/doc_icon.png)](../docs/wireguard-install.md) |  |  |  |
+|Wordpress|32/64 bit|Stack| [![](../build/images/doc_icon.png)](../docs/wordpress_installation.md) |  |  |  |
+|Yacht|32/64 bit|Container|  |  |  |  |
+|YouTubeDL-Material|32/64 bit|Container|  |  |  |  |
+|ZNC|32/64 bit|Container|  |  |  |  |

+ 15 - 12
tools/README.md

@@ -5,15 +5,18 @@ Most of the follwing scripts are only needed if you are trying to load one of th
 
 ---
 
-| Script Name                   | Additional Doc | Description |
-| ----------------------------- | ----------- | ----------- |
-| install_drupal.sh             |  | Use Case  |
-| install_portainer_agent.sh    |  | Use Case  |
-| install_throttled.sh          | https://git.io/JXAiT | Use Case  |
-| nginx-proxy-manager.sh        | https://git.io/JXA6b | Use Case  |
-| rpi_docker_monitor.sh         | https://git.io/JXAoD | Use Case  |
-| traefik.sh                    |  | Use Case  |
-| unpoller-install.sh           | https://git.io/JXA6X | Use Case  |
-| update_libseccomp2.sh         |  | Use Case  |
-| update_portainer_agent.sh     |  | Use Case  |
-
+| Script Name  | Additional Doc | Type | Description |
+| ------------ | -------------- | ---- | ----------- |
+|[install_caddy.sh](../tools/install_caddy.sh)||Preinstall|Preinstall Setup for Caddy|
+|[install_drupal.sh](../tools/install_drupal.sh)||Preinstall|Preinstall Setup for Drupal|
+|[install_portainer_agent.sh](../tools/install_portainer_agent.sh)||Preinstall|Install Portainer Agent<br>Portainer agent is used for remote management of the host you install it on.|
+|[update_portainer_agent.sh](../tools/update_portainer_agent.sh)||Update|Upgrade Portainer Agent|
+|[install_throttled.sh](../tools/install_throttled.sh)|[Documentation](../docs/throttled.md)|Install|Preinstall Setup for the Throttled Script|
+|[install_vikunja.sh](../tools/install_vikunja.sh)||Preinstall|Preinstall Setup for Vikunja|
+|[nginx-proxy-manager.sh](../tools/nginx-proxy-manager.sh)|[Documentation](../docs/nginx_proxy_manager.md)|Preinstall|Preinstall Setup for NPM|
+|[reset_premissions_nextcloud.sh](../tools/reset_premissions_nextcloud.sh)||Extra|Basic Script to reset the premissions of NextcloudPi|
+|[rpi_docker_monitor.sh](../tools/rpi_docker_monitor.sh)|[Documentation](../docs/rpi_docker_monitor.md)|Preinstall|Preinstall Setup for Docker Monitor|
+|[traefik.sh](../tools/traefik.sh)||Preinstall|Preinstall Setup for Traefik|
+|[unpoller-install.sh](../tools/unpoller-install.sh)|[Documentation](../docs/UnPoller-Monitor.md)|Preinstall|Preinstall Setup for UnPoller|
+|[install_photoprism.sh](../tools/install_photoprism.sh)||Preinstall|Install Photo Prism|
+|[update_libseccomp2.sh](../tools/update_libseccomp2.sh)||Update|PI OS 32 libseccomp2 Repair utility|