瀏覽代碼

Create Amd64 Portainer template. Includes Counts, Preinstall changes as well(#59)

Co-authored-by: Robert Middleswarth <72569+rmiddle@users.noreply.github.com>
Rafael Blumberg 2 年之前
父節點
當前提交
9431ee2b09
共有 100 個文件被更改,包括 351 次插入223 次删除
  1. 1 0
      .github/pull_request_template.md
  2. 6 4
      .github/workflows/automategeneration.yml
  3. 3 2
      build/env.sh
  4. 24 6
      build/generators/generateAppList.sh
  5. 56 30
      build/joinApps.sh
  6. 5 0
      build/templates/template_AppList.md
  7. 2 0
      build/templates/template_README.md
  8. 3 2
      template/apps/Adguardhome-sync.json
  9. 3 2
      template/apps/Adguardhome.json
  10. 2 1
      template/apps/airsonic-advanced.json
  11. 2 2
      template/apps/airsonic.json
  12. 2 2
      template/apps/archivebox.json
  13. 2 2
      template/apps/ariang.json
  14. 3 2
      template/apps/authelia.json
  15. 3 2
      template/apps/bazarr.json
  16. 3 2
      template/apps/beets.json
  17. 3 2
      template/apps/booksonic.json
  18. 3 2
      template/apps/bookstack.json
  19. 3 2
      template/apps/caddy.json
  20. 3 2
      template/apps/calibre-web.json
  21. 3 2
      template/apps/cardigann.json
  22. 3 2
      template/apps/chevereto.json
  23. 3 2
      template/apps/cloudflare-ddns.json
  24. 3 2
      template/apps/code-server.json
  25. 3 2
      template/apps/codiad.json
  26. 3 2
      template/apps/cops.json
  27. 3 2
      template/apps/couchpotato.json
  28. 3 2
      template/apps/daapd.json
  29. 3 2
      template/apps/dashmachine.json
  30. 3 2
      template/apps/dashy.json
  31. 3 2
      template/apps/davos.json
  32. 2 2
      template/apps/deemix.json
  33. 2 2
      template/apps/deluge-openvpn.json
  34. 3 2
      template/apps/deluge.json
  35. 3 2
      template/apps/domoticz.json
  36. 3 2
      template/apps/dozzle.json
  37. 3 2
      template/apps/dradis.json
  38. 3 2
      template/apps/drupal.json
  39. 3 2
      template/apps/duck-dns.json
  40. 3 2
      template/apps/duplicati.json
  41. 3 2
      template/apps/eclipse-mosquitto.json
  42. 3 2
      template/apps/emby.json
  43. 3 2
      template/apps/embystat.json
  44. 2 2
      template/apps/filebrowser-s6.json
  45. 3 2
      template/apps/filebrowser.json
  46. 2 2
      template/apps/flame.json
  47. 2 2
      template/apps/foundryvtt-server.json
  48. 2 2
      template/apps/freshrss.json
  49. 3 2
      template/apps/gazee.json
  50. 2 1
      template/apps/gitea-with-mariadb.json
  51. 2 1
      template/apps/gitea.json
  52. 2 2
      template/apps/go-socks5-proxy.json
  53. 3 2
      template/apps/gotify.json
  54. 3 2
      template/apps/grocy.json
  55. 3 2
      template/apps/guacamole.json
  56. 3 2
      template/apps/headphones.json
  57. 3 2
      template/apps/heimdall.json
  58. 3 2
      template/apps/homarr.json
  59. 3 2
      template/apps/home-assistant.json
  60. 2 2
      template/apps/homebridge---debian.json
  61. 3 2
      template/apps/homebridge.json
  62. 3 2
      template/apps/homer.json
  63. 3 2
      template/apps/htpc-manager.json
  64. 2 2
      template/apps/huginn.json
  65. 2 2
      template/apps/influxdb-1.8.10.json
  66. 2 1
      template/apps/invidious.json
  67. 3 2
      template/apps/jackett.json
  68. 3 2
      template/apps/jdownloader.json
  69. 3 2
      template/apps/jellyfin.json
  70. 3 2
      template/apps/jellyseerr.json
  71. 3 2
      template/apps/kodi-headless.json
  72. 2 2
      template/apps/komga.json
  73. 3 2
      template/apps/lazylibrarian.json
  74. 3 2
      template/apps/let's-encrypt.json
  75. 2 2
      template/apps/libreddit.json
  76. 3 2
      template/apps/librespeed.json
  77. 3 2
      template/apps/lidarr.json
  78. 2 1
      template/apps/lingva-translate.json
  79. 3 2
      template/apps/lychee-with-mariadb.json
  80. 2 2
      template/apps/lychee.json
  81. 2 2
      template/apps/mariadb.json
  82. 3 2
      template/apps/mealie.json
  83. 3 2
      template/apps/medusa.json
  84. 2 2
      template/apps/metube.json
  85. 3 2
      template/apps/minecraft-server.json
  86. 3 2
      template/apps/minetest.json
  87. 3 2
      template/apps/minio.json
  88. 3 2
      template/apps/minisatip.json
  89. 3 2
      template/apps/mstream.json
  90. 2 2
      template/apps/murmur.json
  91. 3 2
      template/apps/musicbrainz.json
  92. 3 2
      template/apps/muximux.json
  93. 3 2
      template/apps/mylar.json
  94. 3 2
      template/apps/mysql.json
  95. 3 2
      template/apps/n8n.json
  96. 3 2
      template/apps/netdata.json
  97. 3 2
      template/apps/nextcloud.json
  98. 2 2
      template/apps/nextcloudpi.json
  99. 3 2
      template/apps/nginx-proxy-manager-mysql-goaccess.json
  100. 3 2
      template/apps/nginx-proxy-manager-mysql.json

+ 1 - 0
.github/pull_request_template.md

@@ -2,6 +2,7 @@
 * docs/README.md
 * docs/README.md
 * template/portainer-v2-arm32.json
 * template/portainer-v2-arm32.json
 * template/portainer-v2-arm64.json
 * template/portainer-v2-arm64.json
+* template/portainer-v2-amd64.json
 * tools/README.md
 * tools/README.md
 * docs/AppList.md
 * docs/AppList.md
 * docs/DocumentList.md
 * docs/DocumentList.md

+ 6 - 4
.github/workflows/automategeneration.yml

@@ -8,8 +8,9 @@ on:
   #- cron:  '15 0 * * *'
   #- cron:  '15 0 * * *'
 env:
 env:
  appsfolder: template/apps
  appsfolder: template/apps
- pt32: template/portainer-v2-arm32.json
- pt64: template/portainer-v2-arm64.json
+ ptArm32: template/portainer-v2-arm32.json
+ ptArm64: template/portainer-v2-arm64.json
+ ptAmd64: template/portainer-v2-amd64.json
  README: docs/README.md
  README: docs/README.md
  README_TEMPLATE: build/templates/template_README.md
  README_TEMPLATE: build/templates/template_README.md
  TOOLSREADME: tools/README.md
  TOOLSREADME: tools/README.md
@@ -52,8 +53,9 @@ jobs:
       run: |
       run: |
         git config --local user.email "workflow@github.com"
         git config --local user.email "workflow@github.com"
         git config --local user.name "GitHub Workflow"
         git config --local user.name "GitHub Workflow"
-        git add -- "$pt32"
-        git add -- "$pt64"
+        git add -- "$ptArm32"
+        git add -- "$ptArm64"
+        git add -- "$ptAmd64"
         git add ./pi-hosted_template/template/portainer-v2.json
         git add ./pi-hosted_template/template/portainer-v2.json
         git add -- "$README"
         git add -- "$README"
         git add -- "$TOOLSREADME"
         git add -- "$TOOLSREADME"

+ 3 - 2
build/env.sh

@@ -2,8 +2,9 @@
 
 
 # Portainer Templates
 # Portainer Templates
 appsfolder="${homedir}template/apps"
 appsfolder="${homedir}template/apps"
-pt32="${homedir}template/portainer-v2-arm32.json"
-pt64="${homedir}template/portainer-v2-arm64.json"
+ptArm32="${homedir}template/portainer-v2-arm32.json"
+ptArm64="${homedir}template/portainer-v2-arm64.json"
+ptAmd64="${homedir}template/portainer-v2-amd64.json"
 
 
 # README Files with templates
 # README Files with templates
 README="${homedir}docs/README.md"
 README="${homedir}docs/README.md"

+ 24 - 6
build/generators/generateAppList.sh

@@ -13,11 +13,19 @@ scriptIcon="![](../build/images/script_icon.png)"
 # Create AppList title
 # Create AppList title
 cp -f "$AppList_TEMPLATE" "$AppList"
 cp -f "$AppList_TEMPLATE" "$AppList"
 
 
+# Total apps per arch
+for Arch in {arm32,arm64,amd64}; do
+	total=$(grep -lE '"(image|stackfile)(_'"$Arch"')?":' "$appsfolder"/*.json | wc -l )
+	sed -i "s/XXX_${Arch}_XXX/$total/" "$AppList"
+done
+total=$(find "$appsfolder" -type f -iname '*.json' | wc -l )
+sed -i "s/XXX_total_XXX/$total/" "$AppList"
+
 # Generate App Table
 # Generate App Table
 while IFS='' read -u 9 -r appfile || [[ -n $appfile ]]; do
 while IFS='' read -u 9 -r appfile || [[ -n $appfile ]]; do
 
 
 	# Clear previous variables
 	# Clear previous variables
-	unset doc script extra vid oweb odoc type has32 has64
+	unset doc script extra vid oweb odoc type Arch
 
 
 	# Get app json
 	# Get app json
 	appconf=$( jq '.' "$appfile" )
 	appconf=$( jq '.' "$appfile" )
@@ -26,15 +34,25 @@ while IFS='' read -u 9 -r appfile || [[ -n $appfile ]]; do
 	App=$( echo "$appconf" | jq '.title' | tr -d '"' )
 	App=$( echo "$appconf" | jq '.title' | tr -d '"' )
 
 
 	# App Architecture
 	# App Architecture
+	# tag with no specific architecture is added to all of them
 	if echo "$appconf" | jq -e '.image' &> /dev/null || echo "$appconf" | jq -e '.repository.stackfile' &> /dev/null ; then
 	if echo "$appconf" | jq -e '.image' &> /dev/null || echo "$appconf" | jq -e '.repository.stackfile' &> /dev/null ; then
-		has32='32'
-		has64='64'
+		Arch='Arm32<br>Arm64<br>Amd64'
+
+	# Parse tags with specific architectures
 	else
 	else
-		if echo "$appconf" | jq -e '.image32' &> /dev/null || echo "$appconf" | jq -e '.repository.stackfile32' &> /dev/null ; then has32='32' ; fi
-		if echo "$appconf" | jq -e '.image64' &> /dev/null || echo "$appconf" | jq -e '.repository.stackfile64' &> /dev/null ; then has64='64' ; fi
+		# Arm32
+		if echo "$appconf" | jq -e '.image_arm32' &> /dev/null || echo "$appconf" | jq -e '.repository.stackfile_arm32' &> /dev/null ; then Arch='Arm32' ; fi
 
 
+		# Arm64
+		if echo "$appconf" | jq -e '.image_arm64' &> /dev/null || echo "$appconf" | jq -e '.repository.stackfile_arm64' &> /dev/null ; then
+			Arch="$([[ -n "$Arch" ]] && echo "$Arch<br>" )Arm64"
+		fi
+
+		# Amd64
+		if echo "$appconf" | jq -e '.image_amd64' &> /dev/null || echo "$appconf" | jq -e '.repository.stackfile_amd64' &> /dev/null ; then
+			Arch="$([[ -n "$Arch" ]] && echo "$Arch<br>" )Amd64"
+		fi
 	fi
 	fi
-	[[ -n "$has32" && -n "$has64" ]] && Arch='32/64 bit' || Arch="$has32$has64 bit"
 
 
 	# Apps Type
 	# Apps Type
 	apptype=$( echo "$appconf" | jq '.type' | tr -d '"' )
 	apptype=$( echo "$appconf" | jq '.type' | tr -d '"' )

+ 56 - 30
build/joinApps.sh

@@ -1,17 +1,20 @@
 #!/bin/bash
 #!/bin/bash
 
 
-# Blank portainer template (32 and 64 bits)
-json32='{"version":"2","templates":[]}'
-json64='{"version":"2","templates":[]}'
+# Blank portainer templates
+json_arm32='{"version":"2","templates":[]}'
+json_arm64='{"version":"2","templates":[]}'
+json_amd64='{"version":"2","templates":[]}'
 
 
 # File variables
 # File variables
 appinfo='build/info.json'
 appinfo='build/info.json'
-Oldtemplate32='pi-hosted_template/template/portainer-v2.json'
-template32='template/portainer-v2-arm32.json'
-template64='template/portainer-v2-arm64.json'
+Oldtemplate_arm32='pi-hosted_template/template/portainer-v2.json'
+template_arm32='template/portainer-v2-arm32.json'
+template_arm64='template/portainer-v2-arm64.json'
+template_amd64='template/portainer-v2-amd64.json'
 
 
 # App info
 # App info
 repo='https://github.com/pi-hosted/pi-hosted/blob/master/'
 repo='https://github.com/pi-hosted/pi-hosted/blob/master/'
+rawrepo='https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/'
 header='<h3>Template created by Pi-Hosted Series</h3><b>Check our Github page: <a href="https://github.com/pi-hosted/pi-hosted" target="_blank">https://github.com/pi-hosted/pi-hosted</a></b><br>'
 header='<h3>Template created by Pi-Hosted Series</h3><b>Check our Github page: <a href="https://github.com/pi-hosted/pi-hosted" target="_blank">https://github.com/pi-hosted/pi-hosted</a></b><br>'
 
 
 # Run script from base directory
 # Run script from base directory
@@ -56,13 +59,16 @@ for app in template/apps/*.json; do
 		unset PHDoc
 		unset PHDoc
 	fi
 	fi
 
 
+	# Pre-Install Script
 	if Script=$( echo "$appjson" | jq -e '.preInstallScript' ) ; then
 	if Script=$( echo "$appjson" | jq -e '.preInstallScript' ) ; then
-		Script="<br><b>Pre-installation script must be RAN before you install: </b><a href=\"${repo}tools/${Script:1:-1}\" target=\"_blank\">${Script:1:-1}</a>"
+		scriptexec=$( jq '.tools[] | select(.File=='"$Script"') | .Exec' "$appinfo" )
+		Script="<br><b><a href=\"${repo}tools/${Script:1:-1}\" target=\"_blank\">Pre-installation script</a> must be RAN before you install: </b>wget -qO- ${rawrepo}tools/${Script:1:-1} | ${scriptexec:1:-1}"
 		appjson=$( echo "$appjson" | jq 'del(.preInstallScript)' )
 		appjson=$( echo "$appjson" | jq 'del(.preInstallScript)' )
 	else
 	else
 		unset Script
 		unset Script
 	fi
 	fi
 
 
+	# Youtube Video
 	if VideoID=$( echo "$appjson" | jq -e '.videoID' ) ; then
 	if VideoID=$( echo "$appjson" | jq -e '.videoID' ) ; then
 		VideoURL=$( jq '.youtube[] | select(.ID=='"$VideoID"') | .URL' "$appinfo" )
 		VideoURL=$( jq '.youtube[] | select(.ID=='"$VideoID"') | .URL' "$appinfo" )
 		VideoTitle=$( jq '.youtube[] | select(.ID=='"$VideoID"') | .Title' "$appinfo" | tr -d '"')
 		VideoTitle=$( jq '.youtube[] | select(.ID=='"$VideoID"') | .Title' "$appinfo" | tr -d '"')
@@ -72,6 +78,7 @@ for app in template/apps/*.json; do
 		unset VideoID VideoURL
 		unset VideoID VideoURL
 	fi
 	fi
 
 
+	# Extra Scripts
 	if ExtraScript=$( echo "$appjson" | jq -e '.extraScript' ) ; then
 	if ExtraScript=$( echo "$appjson" | jq -e '.extraScript' ) ; then
 		appjson=$( echo "$appjson" | jq 'del(.extraScript)' )
 		appjson=$( echo "$appjson" | jq 'del(.extraScript)' )
 		# If only one entry
 		# If only one entry
@@ -98,8 +105,9 @@ for app in template/apps/*.json; do
 	appjson=$( echo "$appjson" | jq --arg n "$note" '.note = $n' )
 	appjson=$( echo "$appjson" | jq --arg n "$note" '.note = $n' )
 
 
 	# Splitting into 32 and 64 bit jsons
 	# Splitting into 32 and 64 bit jsons
-	appjson32=$appjson
-	appjson64=$appjson
+	appjson_arm32=$appjson
+	appjson_arm64=$appjson
+	appjson_amd64=$appjson
 
 
 	# Check if app is to be applied to all (no arch identified)
 	# Check if app is to be applied to all (no arch identified)
 	# If there is no indication of architecture (32 or 64) on image or stackfile keys
 	# If there is no indication of architecture (32 or 64) on image or stackfile keys
@@ -107,47 +115,65 @@ for app in template/apps/*.json; do
 	#   else apply specific image/stackfile to indicated architecture
 	#   else apply specific image/stackfile to indicated architecture
 	if  ! echo "$appjson" | grep -qE '"(image|stackfile)":' ; then
 	if  ! echo "$appjson" | grep -qE '"(image|stackfile)":' ; then
 
 
-		# Parsing 32 bit apps (check if there is an image32 or stackfile32)
-		if  echo "$appjson32" | grep -qE '"(image|stackfile)32":' ; then
-			# Remove 64 bit info
-			appjson32=$( echo "$appjson32" | sed -E 's/"(image|stackfile)32":/"\1":/' )
+		# Parsing arm 32 bit apps (check if there is an image32 or stackfile32)
+		if  echo "$appjson_arm32" | grep -qE '"(image|stackfile)_arm32":' ; then
+			# Rename key
+			appjson_arm32=$( echo "$appjson_arm32" | sed -E 's/"(image|stackfile)_arm32":/"\1":/' )
 		else
 		else
 			# App does not contain 32bit template
 			# App does not contain 32bit template
-			unset appjson32
+			unset appjson_arm32
 		fi
 		fi
 
 
-		# Parsing 64 bit apps
-		if  echo "$appjson64" | grep -qE '"(image|stackfile)64":' ; then
-			appjson64=$( echo "$appjson64" | sed -E 's/"(image|stackfile)64":/"\1":/' )
+		# Parsing arm 64 bit apps
+		if  echo "$appjson_arm64" | grep -qE '"(image|stackfile)_arm64":' ; then
+			# Rename key
+			appjson_arm64=$( echo "$appjson_arm64" | sed -E 's/"(image|stackfile)_arm64":/"\1":/' )
 		else
 		else
 			# App does not contain 64bit template
 			# App does not contain 64bit template
-			unset appjson64
+			unset appjson_arm64
+		fi
+
+		# Parsing amd 64 bit apps
+		if  echo "$appjson_amd64" | grep -qE '"(image|stackfile)_amd64":' ; then
+			# Rename key
+			appjson_amd64=$( echo "$appjson_amd64" | sed -E 's/"(image|stackfile)_amd64":/"\1":/' )
+		else
+			# App does not contain 64bit template
+			unset appjson_amd64
 		fi
 		fi
 
 
 	fi
 	fi
 
 
 
 
-	# Appending to json32
-	if [[ -n "$appjson32" ]]; then
+	# Appending to json_arm32
+	if [[ -n "$appjson_arm32" ]]; then
+		# Cleaning App json before adding to template
+		appjson_arm32=$( echo "$appjson_arm32" | jq 'del(.image_arm32, .image_arm64, .image_amd64, .repository.stackfile_arm32, .repository.stackfile_arm64, .repository.stackfile_amd64)')
+		json_arm32=$( echo "$json_arm32" | jq --argjson newApp "$appjson_arm32" '.templates += [$newApp]' )
+	fi
+
+	# Appending to json_arm64
+	if [[ -n "$appjson_arm64" ]]; then
 		# Cleaning App json before adding to template
 		# Cleaning App json before adding to template
-		appjson32=$( echo "$appjson32" | jq 'del(.image32, .image64, .repository.stackfile32, .repository.stackfile64)')
-		json32=$( echo "$json32" | jq --argjson newApp "$appjson32" '.templates += [$newApp]' )
+		appjson_arm64=$( echo "$appjson_arm64" | jq 'del(.image_arm32, .image_arm64, .image_amd64, .repository.stackfile_arm32, .repository.stackfile_arm64, .repository.stackfile_amd64)')
+		json_arm64=$( echo "$json_arm64" | jq --argjson newApp "$appjson_arm64" '.templates += [$newApp]' )
 	fi
 	fi
 
 
-	# Appending to json64
-	if [[ -n "$appjson64" ]]; then
+	# Appending to json_amd64
+	if [[ -n "$appjson_amd64" ]]; then
 		# Cleaning App json before adding to template
 		# Cleaning App json before adding to template
-		appjson64=$( echo "$appjson64" | jq 'del(.image32, .image64, .repository.stackfile32, .repository.stackfile64)')
-		json64=$( echo "$json64" | jq --argjson newApp "$appjson64" '.templates += [$newApp]' )
+		appjson_amd64=$( echo "$appjson_amd64" | jq 'del(.image_arm32, .image_arm64, .image_amd64, .repository.stackfile_arm32, .repository.stackfile_arm64, .repository.stackfile_amd64)')
+		json_amd64=$( echo "$json_amd64" | jq --argjson newApp "$appjson_amd64" '.templates += [$newApp]' )
 	fi
 	fi
 
 
 	# clean variables before next loop
 	# clean variables before next loop
-	unset appjson32 appjson64 note
+	unset appjson_arm32 appjson_arm64 appjson_amd64 note
 done
 done
 
 
 # Create Templates
 # Create Templates
-echo "$json32" | jq --tab '.templates |= sort_by(.title | ascii_upcase)' > "$template32"
-echo "$json64" | jq --tab '.templates |= sort_by(.title | ascii_upcase)' > "$template64"
+echo "$json_arm32" | jq --tab '.templates |= sort_by(.title | ascii_upcase)' > "$template_arm32"
+echo "$json_arm64" | jq --tab '.templates |= sort_by(.title | ascii_upcase)' > "$template_arm64"
+echo "$json_amd64" | jq --tab '.templates |= sort_by(.title | ascii_upcase)' > "$template_amd64"
 
 
 # Keep old template up to date
 # Keep old template up to date
-cp -f "$template32" "$Oldtemplate32"
+cp -f "$template_arm32" "$Oldtemplate_arm32"

+ 5 - 0
build/templates/template_AppList.md

@@ -2,6 +2,11 @@
 
 
 List of all apps included in this project with info related to it.
 List of all apps included in this project with info related to it.
 
 
+- **Arm32:** XXX_arm32_XXX apps
+- **Arm64:** XXX_arm64_XXX apps
+- **Amd64:** XXX_amd64_XXX apps
+- **Total:** XXX_total_XXX apps
+
 ---
 ---
 
 
 |App Title|System|Type |Official<br>Doc|PiHosted<br>Doc|Install Script|Extra Scripts|Youtube Video|
 |App Title|System|Type |Official<br>Doc|PiHosted<br>Doc|Install Script|Extra Scripts|Youtube Video|

+ 2 - 0
build/templates/template_README.md

@@ -51,8 +51,10 @@ You're done! Now just click App Templates and deploy applications!
 | ------------- | ------------- | ------------- |
 | ------------- | ------------- | ------------- |
 | Portainer v2 Arm32 | Pi OS | https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/template/portainer-v2-arm32.json |
 | Portainer v2 Arm32 | Pi OS | https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/template/portainer-v2-arm32.json |
 | Portainer v2 Arm64 | Ubuntu 64, DietPI 64 | https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/template/portainer-v2-arm64.json |
 | Portainer v2 Arm64 | Ubuntu 64, DietPI 64 | https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/template/portainer-v2-arm64.json |
+| Portainer v2 Amd64 | Ubuntu, Debian | https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/template/portainer-v2-amd64.json |
 
 
 * Limited testing Operating Systems: Pi OS 64 Beta, DietPI 32 bit
 * Limited testing Operating Systems: Pi OS 64 Beta, DietPI 32 bit
+* Amd64 should work on all distros with **scripts written for Debian based distros**
 
 
 ### Pi-Hosted YouTube series
 ### Pi-Hosted YouTube series
 
 

+ 3 - 2
template/apps/Adguardhome-sync.json

@@ -30,8 +30,9 @@
   	}
   	}
   ],
   ],
 	"description": "[Adguardhome-sync](https://github.com/bakito/adguardhome-sync/) is a tool to synchronize AdGuardHome config to replica instances.",
 	"description": "[Adguardhome-sync](https://github.com/bakito/adguardhome-sync/) is a tool to synchronize AdGuardHome config to replica instances.",
-	"image32": "linuxserver/adguardhome-sync:latest",
-	"image64": "linuxserver/adguardhome-sync:latest",
+	"image_arm32": "linuxserver/adguardhome-sync:latest",
+	"image_arm64": "linuxserver/adguardhome-sync:latest",
+	"image_amd64": "linuxserver/adguardhome-sync:latest",
 	"logo": "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/adguardhomesync-icon.png",
 	"logo": "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/adguardhomesync-icon.png",
 	"name": "Adguardhome-sync",
 	"name": "Adguardhome-sync",
 	"officialDoc": "https://github.com/linuxserver/docker-adguardhome-sync#usage",
 	"officialDoc": "https://github.com/linuxserver/docker-adguardhome-sync#usage",

+ 3 - 2
template/apps/Adguardhome.json

@@ -4,8 +4,9 @@
 		"Tools"
 		"Tools"
 	],
 	],
 	"description": "[Adguardhome](https://adguard.com/en/adguard-home/overview.html) AdGuard Home is a network-wide software for blocking ads & tracking.",
 	"description": "[Adguardhome](https://adguard.com/en/adguard-home/overview.html) AdGuard Home is a network-wide software for blocking ads & tracking.",
-	"image32": "adguard/adguardhome:latest",
-	"image64": "adguard/adguardhome:latest",
+	"image_arm32": "adguard/adguardhome:latest",
+	"image_arm64": "adguard/adguardhome:latest",
+	"image_amd64": "adguard/adguardhome:latest",
 	"logo": "https://developer.asustor.com/uploadIcons/0020_999_1595573028_AdGuardhome_256.png",
 	"logo": "https://developer.asustor.com/uploadIcons/0020_999_1595573028_AdGuardhome_256.png",
 	"name": "Adguardhome",
 	"name": "Adguardhome",
 	"officialDoc": "https://github.com/AdguardTeam/AdGuardHome/wiki/Docker",
 	"officialDoc": "https://github.com/AdguardTeam/AdGuardHome/wiki/Docker",

+ 2 - 1
template/apps/airsonic-advanced.json

@@ -30,7 +30,8 @@
 			"name": "JAVA_OPTS"
 			"name": "JAVA_OPTS"
 		}
 		}
 	],
 	],
-	"image64": "linuxserver/airsonic-advanced:latest",
+	"image_arm64": "linuxserver/airsonic-advanced:latest",
+	"image_amd64": "linuxserver/airsonic-advanced:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/airsonic-logo.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/airsonic-logo.png",
 	"name": "airsonic-advanced",
 	"name": "airsonic-advanced",
 	"officialDoc": "https://github.com/linuxserver/docker-airsonic-advanced",
 	"officialDoc": "https://github.com/linuxserver/docker-airsonic-advanced",

+ 2 - 2
template/apps/airsonic.json

@@ -30,8 +30,8 @@
 			"name": "JAVA_OPTS"
 			"name": "JAVA_OPTS"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/airsonic:arm32v7-latest",
-	"image64": "linuxserver/airsonic:arm64v8-latest",
+	"image_arm32": "linuxserver/airsonic:arm32v7-latest",
+	"image_arm64": "linuxserver/airsonic:arm64v8-latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/airsonic-logo.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/airsonic-logo.png",
 	"name": "airsonic",
 	"name": "airsonic",
 	"officialDoc": "https://airsonic.github.io/docs/install/docker/",
 	"officialDoc": "https://airsonic.github.io/docs/install/docker/",

+ 2 - 2
template/apps/archivebox.json

@@ -31,8 +31,8 @@
 			"name": "PUBLIC_ADD_VIEW"
 			"name": "PUBLIC_ADD_VIEW"
 		}
 		}
 	],
 	],
-	"image32": "archivebox/archivebox:master",
-	"image64": "archivebox/archivebox:master",
+	"image_arm32": "archivebox/archivebox:master",
+	"image_arm64": "archivebox/archivebox:master",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/archivebox.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/archivebox.png",
 	"name": "archivebox",
 	"name": "archivebox",
 	"note": "By default an admin user is not created. You can do so by launching a shell in the container and executing 'archivebox manage createsuperuser'. Documentation is Available <a href='https://github.com/ArchiveBox/ArchiveBox/wiki'>here</a>.",
 	"note": "By default an admin user is not created. You can do so by launching a shell in the container and executing 'archivebox manage createsuperuser'. Documentation is Available <a href='https://github.com/ArchiveBox/ArchiveBox/wiki'>here</a>.",

+ 2 - 2
template/apps/ariang.json

@@ -20,8 +20,8 @@
 			"name": "ARIA2RPCPORT"
 			"name": "ARIA2RPCPORT"
 		}
 		}
 	],
 	],
-	"image32": "hurlenko/aria2-ariang",
-	"image64": "hurlenko/aria2-ariang",
+	"image_arm32": "hurlenko/aria2-ariang",
+	"image_arm64": "hurlenko/aria2-ariang",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/ariang.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/ariang.png",
 	"name": "AriaNG",
 	"name": "AriaNG",
 	"officialDoc": "https://github.com/hurlenko/aria2-ariang-docker",
 	"officialDoc": "https://github.com/hurlenko/aria2-ariang-docker",

+ 3 - 2
template/apps/authelia.json

@@ -12,8 +12,9 @@
 			"name": "TZ"
 			"name": "TZ"
 		}
 		}
 	],
 	],
-	"image32": "authelia/authelia:latest",
-	"image64": "authelia/authelia:latest",
+	"image_arm32": "authelia/authelia:latest",
+	"image_arm64": "authelia/authelia:latest",
+	"image_amd64": "authelia/authelia:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/authelia.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/authelia.png",
 	"name": "authelia",
 	"name": "authelia",
 	"note": "Requires a configuration.yml file in order to work. Documentation is Available <a href='https://docs.authelia.com/deployment/deployment-ha'>here</a>.",
 	"note": "Requires a configuration.yml file in order to work. Documentation is Available <a href='https://docs.authelia.com/deployment/deployment-ha'>here</a>.",

+ 3 - 2
template/apps/bazarr.json

@@ -21,8 +21,9 @@
 			"name": "TZ"
 			"name": "TZ"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/bazarr:latest",
-	"image64": "linuxserver/bazarr:latest",
+	"image_arm32": "linuxserver/bazarr:latest",
+	"image_arm64": "linuxserver/bazarr:latest",
+	"image_amd64": "linuxserver/bazarr:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/bazarr.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/bazarr.png",
 	"name": "bazarr",
 	"name": "bazarr",
 	"officialDoc": "https://wiki.bazarr.media/Getting-Started/Installation/Docker/docker/",
 	"officialDoc": "https://wiki.bazarr.media/Getting-Started/Installation/Docker/docker/",

+ 3 - 2
template/apps/beets.json

@@ -15,8 +15,9 @@
 			"name": "PGID"
 			"name": "PGID"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/beets:latest",
-	"image64": "linuxserver/beets:latest",
+	"image_arm32": "linuxserver/beets:latest",
+	"image_arm64": "linuxserver/beets:latest",
+	"image_amd64": "linuxserver/beets:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/beets-icon.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/beets-icon.png",
 	"name": "beets",
 	"name": "beets",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-beets",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-beets",

+ 3 - 2
template/apps/booksonic.json

@@ -21,8 +21,9 @@
 			"name": "CONTEXT_PATH"
 			"name": "CONTEXT_PATH"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/booksonic:latest",
-	"image64": "linuxserver/booksonic:latest",
+	"image_arm32": "linuxserver/booksonic:latest",
+	"image_arm64": "linuxserver/booksonic:latest",
+	"image_amd64": "linuxserver/booksonic:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/booksonic.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/booksonic.png",
 	"name": "booksonic",
 	"name": "booksonic",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-booksonic-air",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-booksonic-air",

+ 3 - 2
template/apps/bookstack.json

@@ -45,8 +45,9 @@
 	"officialDoc": "https://www.bookstackapp.com/docs/admin/installation/#docker",
 	"officialDoc": "https://www.bookstackapp.com/docs/admin/installation/#docker",
 	"platform": "linux",
 	"platform": "linux",
 	"repository": {
 	"repository": {
-		"stackfile32": "stack/bookstack.yml",
-		"stackfile64": "stack/bookstack.yml",
+		"stackfile_arm32": "stack/bookstack.yml",
+		"stackfile_arm64": "stack/bookstack.yml",
+		"stackfile_amd64": "stack/bookstack.yml",
 		"url": "https://github.com/pi-hosted/pi-hosted"
 		"url": "https://github.com/pi-hosted/pi-hosted"
 	},
 	},
 	"title": "Bookstack",
 	"title": "Bookstack",

+ 3 - 2
template/apps/caddy.json

@@ -5,8 +5,9 @@
 		"Webserver"
 		"Webserver"
 	],
 	],
 	"description": "Caddy - The Ultimate Server with Automatic HTTPS.  Need to run tools/install_caddy.sh before installing the template.",
 	"description": "Caddy - The Ultimate Server with Automatic HTTPS.  Need to run tools/install_caddy.sh before installing the template.",
-	"image32": "caddy:latest",
-	"image64": "caddy:latest",
+	"image_arm32": "caddy:latest",
+	"image_arm64": "caddy:latest",
+	"image_amd64": "caddy:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/caddy.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/caddy.png",
 	"name": "caddy",
 	"name": "caddy",
 	"note": "Caddy 2 is a powerful, enterprise-ready, open source web server with automatic HTTPS written in Go",
 	"note": "Caddy 2 is a powerful, enterprise-ready, open source web server with automatic HTTPS written in Go",

+ 3 - 2
template/apps/calibre-web.json

@@ -16,8 +16,9 @@
 			"name": "PGID"
 			"name": "PGID"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/calibre-web:latest",
-	"image64": "linuxserver/calibre-web:latest",
+	"image_arm32": "linuxserver/calibre-web:latest",
+	"image_arm64": "linuxserver/calibre-web:latest",
+	"image_amd64": "linuxserver/calibre-web:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/calibre-web-icon.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/calibre-web-icon.png",
 	"name": "calibre-web",
 	"name": "calibre-web",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-calibre-web",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-calibre-web",

+ 3 - 2
template/apps/cardigann.json

@@ -15,8 +15,9 @@
 			"name": "PGID"
 			"name": "PGID"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/cardigann:latest",
-	"image64": "linuxserver/cardigann:latest",
+	"image_arm32": "linuxserver/cardigann:latest",
+	"image_arm64": "linuxserver/cardigann:latest",
+	"image_amd64": "linuxserver/cardigann:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/cardigann.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/cardigann.png",
 	"name": "cardigann",
 	"name": "cardigann",
 	"officialDoc": "https://hub.docker.com/r/linuxserver/cardigann/",
 	"officialDoc": "https://hub.docker.com/r/linuxserver/cardigann/",

+ 3 - 2
template/apps/chevereto.json

@@ -42,8 +42,9 @@
 			"name": "CHEVERETO_DB_PREFIX"
 			"name": "CHEVERETO_DB_PREFIX"
 		}
 		}
 	],
 	],
-	"image32": "nmtan/chevereto:latest",
-	"image64": "nmtan/chevereto:latest",
+	"image_arm32": "nmtan/chevereto:latest",
+	"image_arm64": "nmtan/chevereto:latest",
+	"image_amd64": "nmtan/chevereto:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/Chevereto.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/Chevereto.png",
 	"name": "Chevereto",
 	"name": "Chevereto",
 	"officialDoc": "https://hub.docker.com/r/nmtan/chevereto",
 	"officialDoc": "https://hub.docker.com/r/nmtan/chevereto",

+ 3 - 2
template/apps/cloudflare-ddns.json

@@ -31,8 +31,9 @@
 			"name": "PROXIED"
 			"name": "PROXIED"
 		}
 		}
 	],
 	],
-	"image32": "favonia/cloudflare-ddns:latest",
-	"image64": "favonia/cloudflare-ddns:latest",
+	"image_arm32": "favonia/cloudflare-ddns:latest",
+	"image_arm64": "favonia/cloudflare-ddns:latest",
+	"image_amd64": "favonia/cloudflare-ddns:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/cloudflare-ddns.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/cloudflare-ddns.png",
 	"name": "cloudflare-ddns",
 	"name": "cloudflare-ddns",
 	"officialDoc": "https://github.com/favonia/cloudflare-ddns/",
 	"officialDoc": "https://github.com/favonia/cloudflare-ddns/",

+ 3 - 2
template/apps/code-server.json

@@ -34,8 +34,9 @@
 			"name": "PROXY_DOMAIN"
 			"name": "PROXY_DOMAIN"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/code-server:latest",
-	"image64": "linuxserver/code-server:latest",
+	"image_arm32": "linuxserver/code-server:latest",
+	"image_arm64": "linuxserver/code-server:latest",
+	"image_amd64": "linuxserver/code-server:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/code-server.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/code-server.png",
 	"name": "code-server",
 	"name": "code-server",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-code-server",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-code-server",

+ 3 - 2
template/apps/codiad.json

@@ -15,8 +15,9 @@
 			"name": "PGID"
 			"name": "PGID"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/codiad:latest",
-	"image64": "linuxserver/codiad:latest",
+	"image_arm32": "linuxserver/codiad:latest",
+	"image_arm64": "linuxserver/codiad:latest",
+	"image_amd64": "linuxserver/codiad:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/codiad-icon.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/codiad-icon.png",
 	"name": "codiad",
 	"name": "codiad",
 	"officialDoc": "https://github.com/Codiad/Codiad/wiki/Quick-installation-using-Docker",
 	"officialDoc": "https://github.com/Codiad/Codiad/wiki/Quick-installation-using-Docker",

+ 3 - 2
template/apps/cops.json

@@ -16,8 +16,9 @@
 			"name": "PGID"
 			"name": "PGID"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/cops:latest",
-	"image64": "linuxserver/cops:latest",
+	"image_arm32": "linuxserver/cops:latest",
+	"image_arm64": "linuxserver/cops:latest",
+	"image_amd64": "linuxserver/cops:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/cops-icon.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/cops-icon.png",
 	"name": "cops",
 	"name": "cops",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-cops",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-cops",

+ 3 - 2
template/apps/couchpotato.json

@@ -16,8 +16,9 @@
 			"name": "PGID"
 			"name": "PGID"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/couchpotato:latest",
-	"image64": "linuxserver/couchpotato:latest",
+	"image_arm32": "linuxserver/couchpotato:latest",
+	"image_arm64": "linuxserver/couchpotato:latest",
+	"image_amd64": "linuxserver/couchpotato:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/couchpotato-icon.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/couchpotato-icon.png",
 	"name": "couchpotato",
 	"name": "couchpotato",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-couchpotato",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-couchpotato",

+ 3 - 2
template/apps/daapd.json

@@ -15,8 +15,9 @@
 			"name": "PGID"
 			"name": "PGID"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/daapd:latest",
-	"image64": "linuxserver/daapd:latest",
+	"image_arm32": "linuxserver/daapd:latest",
+	"image_arm64": "linuxserver/daapd:latest",
+	"image_amd64": "linuxserver/daapd:latest",
 	"logo": "https://raw.githubusercontent.com/linuxserver/beta-templates/master/lsiodev/img/daapd-icon.png",
 	"logo": "https://raw.githubusercontent.com/linuxserver/beta-templates/master/lsiodev/img/daapd-icon.png",
 	"name": "daapd",
 	"name": "daapd",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-daapd",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-daapd",

+ 3 - 2
template/apps/dashmachine.json

@@ -4,8 +4,9 @@
 		"Tools"
 		"Tools"
 	],
 	],
 	"description": "Another application bookmark dashboard, with fun features.",
 	"description": "Another application bookmark dashboard, with fun features.",
-	"image32": "failed2run/dashmachine:latest",
-	"image64": "failed2run/dashmachine:latest",
+	"image_arm32": "failed2run/dashmachine:latest",
+	"image_arm64": "failed2run/dashmachine:latest",
+	"image_amd64": "failed2run/dashmachine:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/dashmachine_logo.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/dashmachine_logo.png",
 	"name": "dashmachine",
 	"name": "dashmachine",
 	"officialDoc": "https://github.com/rmountjoy92/DashMachine",
 	"officialDoc": "https://github.com/rmountjoy92/DashMachine",

+ 3 - 2
template/apps/dashy.json

@@ -15,8 +15,9 @@
 			"name": "PGID"
 			"name": "PGID"
 		}
 		}
 	],
 	],
-	"image32": "lissy93/dashy:latest",
-	"image64": "lissy93/dashy:latest",
+	"image_arm32": "lissy93/dashy:latest",
+	"image_arm64": "lissy93/dashy:latest",
+	"image_amd64": "lissy93/dashy:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/dashy.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/dashy.png",
 	"name": "Dashy",
 	"name": "Dashy",
 	"officialDoc": "https://dashy.to/docs/quick-start",
 	"officialDoc": "https://dashy.to/docs/quick-start",

+ 3 - 2
template/apps/davos.json

@@ -17,8 +17,9 @@
 			"name": "PGID"
 			"name": "PGID"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/davos:latest",
-	"image64": "linuxserver/davos:latest",
+	"image_arm32": "linuxserver/davos:latest",
+	"image_arm64": "linuxserver/davos:latest",
+	"image_amd64": "linuxserver/davos:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/davos.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/davos.png",
 	"name": "davos",
 	"name": "davos",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-davos",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-davos",

+ 2 - 2
template/apps/deemix.json

@@ -4,8 +4,8 @@
 		"Music"
 		"Music"
 	],
 	],
 	"description": "Deemix is a deezer downloader built from the ashes of Deezloader Remix.",
 	"description": "Deemix is a deezer downloader built from the ashes of Deezloader Remix.",
-	"image32": "registry.gitlab.com/bockiii/deemix-docker",
-	"image64": "registry.gitlab.com/bockiii/deemix-docker",
+	"image_arm32": "registry.gitlab.com/bockiii/deemix-docker",
+	"image_arm64": "registry.gitlab.com/bockiii/deemix-docker",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/deemix.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/deemix.png",
 	"name": "deemix",
 	"name": "deemix",
 	"note": "Deemix may take a few minutes to install. Be sure to check the logs for details. Refer to <a href='https://notabug.org/RemixDevs/DeezloaderRemix/wiki/Login+via+userToken'>this page</a> for userToken details.",
 	"note": "Deemix may take a few minutes to install. Be sure to check the logs for details. Refer to <a href='https://notabug.org/RemixDevs/DeezloaderRemix/wiki/Login+via+userToken'>this page</a> for userToken details.",

+ 2 - 2
template/apps/deluge-openvpn.json

@@ -41,8 +41,8 @@
 			"name": "LOCAL_NETWORK"
 			"name": "LOCAL_NETWORK"
 		}
 		}
 	],
 	],
-	"image32": "sgtsquiggs/deluge-openvpn:arm32v7-latest",
-	"image64": "sgtsquiggs/deluge-openvpn:arm64v8-latest",
+	"image_arm32": "sgtsquiggs/deluge-openvpn:arm32v7-latest",
+	"image_arm64": "sgtsquiggs/deluge-openvpn:arm64v8-latest",
 	"name": "deluge-openvpn",
 	"name": "deluge-openvpn",
 	"officialDoc": "https://github.com/sgtsquiggs/docker-deluge-openvpn",
 	"officialDoc": "https://github.com/sgtsquiggs/docker-deluge-openvpn",
 	"platform": "linux",
 	"platform": "linux",

+ 3 - 2
template/apps/deluge.json

@@ -20,8 +20,9 @@
 			"name": "UMASK"
 			"name": "UMASK"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/deluge:latest",
-	"image64": "linuxserver/deluge:latest",
+	"image_arm32": "linuxserver/deluge:latest",
+	"image_arm64": "linuxserver/deluge:latest",
+	"image_amd64": "linuxserver/deluge:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/deluge-icon.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/deluge-icon.png",
 	"name": "deluge",
 	"name": "deluge",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-deluge",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-deluge",

+ 3 - 2
template/apps/domoticz.json

@@ -16,8 +16,9 @@
 			"name": "PGID"
 			"name": "PGID"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/domoticz:latest",
-	"image64": "linuxserver/domoticz:latest",
+	"image_arm32": "linuxserver/domoticz:latest",
+	"image_arm64": "linuxserver/domoticz:latest",
+	"image_amd64": "linuxserver/domoticz:latest",
 	"logo": "https://github.com/domoticz/domoticz/raw/master/www/images/logo.png",
 	"logo": "https://github.com/domoticz/domoticz/raw/master/www/images/logo.png",
 	"name": "domoticz",
 	"name": "domoticz",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-domoticz",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-domoticz",

+ 3 - 2
template/apps/dozzle.json

@@ -4,8 +4,9 @@
 		"Tools"
 		"Tools"
 	],
 	],
 	"description": "Dozzle is a real-time log viewer for docker containers.",
 	"description": "Dozzle is a real-time log viewer for docker containers.",
-	"image32": "amir20/dozzle:latest",
-	"image64": "amir20/dozzle:latest",
+	"image_arm32": "amir20/dozzle:latest",
+	"image_arm64": "amir20/dozzle:latest",
+	"image_amd64": "amir20/dozzle:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/dozzle.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/dozzle.png",
 	"name": "dozzle",
 	"name": "dozzle",
 	"note": "View logs for docker containers.",
 	"note": "View logs for docker containers.",

+ 3 - 2
template/apps/dradis.json

@@ -3,8 +3,9 @@
 		"Security"
 		"Security"
 	],
 	],
 	"description": "Dradis Framework: Collaboration and reporting for IT Security teams http://dradisframework.org",
 	"description": "Dradis Framework: Collaboration and reporting for IT Security teams http://dradisframework.org",
-	"image32": "raesene/dradis:latest",
-	"image64": "raesene/dradis:latest",
+	"image_arm32": "raesene/dradis:latest",
+	"image_arm64": "raesene/dradis:latest",
+	"image_amd64": "raesene/dradis:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/dradis-logo.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/dradis-logo.png",
 	"name": "dradis",
 	"name": "dradis",
 	"officialDoc": "https://github.com/raesene/dockerized-security-tools",
 	"officialDoc": "https://github.com/raesene/dockerized-security-tools",

+ 3 - 2
template/apps/drupal.json

@@ -49,8 +49,9 @@
 	"platform": "linux",
 	"platform": "linux",
 	"preInstallScript": "install_drupal.sh",
 	"preInstallScript": "install_drupal.sh",
 	"repository": {
 	"repository": {
-		"stackfile32": "stack/drupal.yml",
-		"stackfile64": "stack/drupal.yml",
+		"stackfile_arm32": "stack/drupal.yml",
+		"stackfile_arm64": "stack/drupal.yml",
+		"stackfile_amd64": "stack/drupal.yml",
 		"url": "https://github.com/pi-hosted/pi-hosted/"
 		"url": "https://github.com/pi-hosted/pi-hosted/"
 	},
 	},
 	"restart_policy": "unless-stopped",
 	"restart_policy": "unless-stopped",

+ 3 - 2
template/apps/duck-dns.json

@@ -31,8 +31,9 @@
 			"name": "TZ"
 			"name": "TZ"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/duckdns:latest",
-	"image64": "linuxserver/duckdns:latest",
+	"image_arm32": "linuxserver/duckdns:latest",
+	"image_arm64": "linuxserver/duckdns:latest",
+	"image_amd64": "linuxserver/duckdns:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/duckdns.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/duckdns.png",
 	"name": "duckdns",
 	"name": "duckdns",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-duckdns",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-duckdns",

+ 3 - 2
template/apps/duplicati.json

@@ -19,8 +19,9 @@
 			"name": "PGID"
 			"name": "PGID"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/duplicati:latest",
-	"image64": "linuxserver/duplicati:latest",
+	"image_arm32": "linuxserver/duplicati:latest",
+	"image_arm64": "linuxserver/duplicati:latest",
+	"image_amd64": "linuxserver/duplicati:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/duplicati-icon.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/duplicati-icon.png",
 	"name": "duplicati",
 	"name": "duplicati",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-duplicati",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-duplicati",

+ 3 - 2
template/apps/eclipse-mosquitto.json

@@ -5,8 +5,9 @@
 	],
 	],
 	"description": "Eclipse Mosquitto is an open source implementation of a server for versions 5, 3.1.1, and 3.1 of the MQTT protocol.\r\nYou will need to create /portainer/Files/AppData/Config/Mosquitto/config/mosquitto.conf and if needed your password file.\r\nHave a look on https://mosquitto.org/man/mosquitto_passwd-1.html",
 	"description": "Eclipse Mosquitto is an open source implementation of a server for versions 5, 3.1.1, and 3.1 of the MQTT protocol.\r\nYou will need to create /portainer/Files/AppData/Config/Mosquitto/config/mosquitto.conf and if needed your password file.\r\nHave a look on https://mosquitto.org/man/mosquitto_passwd-1.html",
 	"hostname": "rpi-mosquitto",
 	"hostname": "rpi-mosquitto",
-	"image32": "eclipse-mosquitto:latest",
-	"image64": "eclipse-mosquitto:latest",
+	"image_arm32": "eclipse-mosquitto:latest",
+	"image_arm64": "eclipse-mosquitto:latest",
+	"image_amd64": "eclipse-mosquitto:latest",
 	"logo": "https://raw.githubusercontent.com/docker-library/docs/757578e3a44e5460a8a11d32a81776f8b74231a9/eclipse-mosquitto/logo.png",
 	"logo": "https://raw.githubusercontent.com/docker-library/docs/757578e3a44e5460a8a11d32a81776f8b74231a9/eclipse-mosquitto/logo.png",
 	"name": "mosquitto",
 	"name": "mosquitto",
 	"officialDoc": "https://hub.docker.com/_/eclipse-mosquitto",
 	"officialDoc": "https://hub.docker.com/_/eclipse-mosquitto",

+ 3 - 2
template/apps/emby.json

@@ -22,8 +22,9 @@
 			"name": "TZ"
 			"name": "TZ"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/emby:latest",
-	"image64": "linuxserver/emby:latest",
+	"image_arm32": "linuxserver/emby:latest",
+	"image_arm64": "linuxserver/emby:latest",
+	"image_amd64": "linuxserver/emby:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/emby.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/emby.png",
 	"name": "emby",
 	"name": "emby",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-emby",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-emby",

+ 3 - 2
template/apps/embystat.json

@@ -4,8 +4,9 @@
 		"Tools"
 		"Tools"
 	],
 	],
 	"description": "Embystat is a personal web server that can calculate all kinds of statistics from your (local) Emby server. Just install this on your server and let him calculate all kinds of fun stuff.",
 	"description": "Embystat is a personal web server that can calculate all kinds of statistics from your (local) Emby server. Just install this on your server and let him calculate all kinds of fun stuff.",
-	"image32": "linuxserver/embystat:latest",
-	"image64": "linuxserver/embystat:latest",
+	"image_arm32": "linuxserver/embystat:latest",
+	"image_arm64": "linuxserver/embystat:latest",
+	"image_amd64": "linuxserver/embystat:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/embystat.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/embystat.png",
 	"name": "embystat",
 	"name": "embystat",
 	"note": "Access the ui at your-ip:6555. Follow the setup wizard on initial install. Then configure the required services.",
 	"note": "Access the ui at your-ip:6555. Follow the setup wizard on initial install. Then configure the required services.",

+ 2 - 2
template/apps/filebrowser-s6.json

@@ -4,8 +4,8 @@
 		"Tools"
 		"Tools"
 	],
 	],
 	"description": "[arm][s6-version] Web File Browser which can be used as a middleware or standalone app.",
 	"description": "[arm][s6-version] Web File Browser which can be used as a middleware or standalone app.",
-	"image32": "filebrowser/filebrowser:s6",
-	"image64": "filebrowser/filebrowser:s6",
+	"image_arm32": "filebrowser/filebrowser:s6",
+	"image_arm64": "filebrowser/filebrowser:s6",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/filebrowser.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/filebrowser.png",
 	"name": "filebrowser",
 	"name": "filebrowser",
 	"note": "The default user and password is admin/admin.",
 	"note": "The default user and password is admin/admin.",

+ 3 - 2
template/apps/filebrowser.json

@@ -4,8 +4,9 @@
 		"Tools"
 		"Tools"
 	],
 	],
 	"description": "[arm] Web File Browser which can be used as a middleware or standalone app.",
 	"description": "[arm] Web File Browser which can be used as a middleware or standalone app.",
-	"image32": "filebrowser/filebrowser:latest",
-	"image64": "filebrowser/filebrowser:latest",
+	"image_arm32": "filebrowser/filebrowser:latest",
+	"image_arm64": "filebrowser/filebrowser:latest",
+	"image_amd64": "filebrowser/filebrowser:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/filebrowser.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/filebrowser.png",
 	"name": "filebrowser",
 	"name": "filebrowser",
 	"note": "The default user and password is admin/admin.",
 	"note": "The default user and password is admin/admin.",

+ 2 - 2
template/apps/flame.json

@@ -11,8 +11,8 @@
 			"name": "PASSWORD"
 			"name": "PASSWORD"
 		}
 		}
 	],
 	],
-	"image32": "pawelmalak/flame:multiarch",
-	"image64": "pawelmalak/flame:multiarch",
+	"image_arm32": "pawelmalak/flame:multiarch",
+	"image_arm64": "pawelmalak/flame:multiarch",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/flame.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/flame.png",
 	"name": "Flame",
 	"name": "Flame",
 	"officialDoc": "https://github.com/pawelmalak/flame#with-docker-recommended",
 	"officialDoc": "https://github.com/pawelmalak/flame#with-docker-recommended",

+ 2 - 2
template/apps/foundryvtt-server.json

@@ -26,8 +26,8 @@
 			"name": "CONTAINER_PRESERVE_CONFIG"
 			"name": "CONTAINER_PRESERVE_CONFIG"
 		}
 		}
 	],
 	],
-	"image32": "felddy/foundryvtt:release",
-	"image64": "felddy/foundryvtt:release",
+	"image_arm32": "felddy/foundryvtt:release",
+	"image_arm64": "felddy/foundryvtt:release",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/foundrylogo.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/foundrylogo.png",
 	"name": "FoundryVTT",
 	"name": "FoundryVTT",
 	"officialDoc": "https://hub.docker.com/r/felddy/foundryvtt",
 	"officialDoc": "https://hub.docker.com/r/felddy/foundryvtt",

+ 2 - 2
template/apps/freshrss.json

@@ -15,8 +15,8 @@
 			"name": "PGID"
 			"name": "PGID"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/freshrss:latest",
-	"image64": "freshrss/freshrss:arm",
+	"image_arm32": "linuxserver/freshrss:latest",
+	"image_arm64": "freshrss/freshrss:arm",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/freshrss-icon.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/freshrss-icon.png",
 	"name": "freshrss",
 	"name": "freshrss",
 	"officialDoc": "https://github.com/FreshRSS/FreshRSS/tree/edge/Docker",
 	"officialDoc": "https://github.com/FreshRSS/FreshRSS/tree/edge/Docker",

+ 3 - 2
template/apps/gazee.json

@@ -17,8 +17,9 @@
 			"name": "PGID"
 			"name": "PGID"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/gazee:latest",
-	"image64": "linuxserver/gazee:latest",
+	"image_arm32": "linuxserver/gazee:latest",
+	"image_arm64": "linuxserver/gazee:latest",
+	"image_amd64": "linuxserver/gazee:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/gazee-logo.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/gazee-logo.png",
 	"name": "gazee",
 	"name": "gazee",
 	"officialDoc": "https://hub.docker.com/r/linuxserver/gazee",
 	"officialDoc": "https://hub.docker.com/r/linuxserver/gazee",

+ 2 - 1
template/apps/gitea-with-mariadb.json

@@ -47,7 +47,8 @@
 	"officialDoc": "https://docs.gitea.io/en-us/install-with-docker/#mysql-database",
 	"officialDoc": "https://docs.gitea.io/en-us/install-with-docker/#mysql-database",
 	"platform": "linux",
 	"platform": "linux",
 	"repository": {
 	"repository": {
-		"stackfile64": "stack/gitea-mariadb.yml",
+		"stackfile_arm64": "stack/gitea-mariadb.yml",
+		"stackfile_amd64": "stack/gitea-mariadb.yml",
 		"url": "https://github.com/pi-hosted/pi-hosted/"
 		"url": "https://github.com/pi-hosted/pi-hosted/"
 	},
 	},
 	"restart_policy": "unless-stopped",
 	"restart_policy": "unless-stopped",

+ 2 - 1
template/apps/gitea.json

@@ -16,7 +16,8 @@
 			"name": "USER_GID"
 			"name": "USER_GID"
 		}
 		}
 	],
 	],
-	"image64": "gitea/gitea:latest",
+	"image_arm64": "gitea/gitea:latest",
+	"image_amd64": "gitea/gitea:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/gitea.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/gitea.png",
 	"name": "gitea",
 	"name": "gitea",
 	"note": "More possible Environment Variables: https://docs.gitea.io/en-us/install-with-docker/#managing-deployments-with-environment-variables",
 	"note": "More possible Environment Variables: https://docs.gitea.io/en-us/install-with-docker/#managing-deployments-with-environment-variables",

+ 2 - 2
template/apps/go-socks5-proxy.json

@@ -3,8 +3,8 @@
 		"Proxy"
 		"Proxy"
 	],
 	],
 	"description": "Simple socks5 server using go-socks5 with authentication options",
 	"description": "Simple socks5 server using go-socks5 with authentication options",
-	"image32": "serjs/go-socks5-proxy",
-	"image64": "serjs/go-socks5-proxy",
+	"image_arm32": "serjs/go-socks5-proxy",
+	"image_arm64": "serjs/go-socks5-proxy",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/socks5.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/socks5.png",
 	"name": "socks5-proxy",
 	"name": "socks5-proxy",
 	"officialDoc": "https://hub.docker.com/r/serjs/go-socks5-proxy",
 	"officialDoc": "https://hub.docker.com/r/serjs/go-socks5-proxy",

+ 3 - 2
template/apps/gotify.json

@@ -21,8 +21,9 @@
 			"name": "GOTIFY_DEFAULTUSER_PASS"
 			"name": "GOTIFY_DEFAULTUSER_PASS"
 		}
 		}
 	],
 	],
-	"image32": "gotify/server-arm7:latest",
-	"image64": "gotify/server-arm64:latest",
+	"image_arm32": "gotify/server-arm7:latest",
+	"image_arm64": "gotify/server-arm64:latest",
+	"image_amd64": "gotify/server-arm64:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/gotify.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/gotify.png",
 	"name": "gotify",
 	"name": "gotify",
 	"note": "ARM7 Image. Documentation is Available <a href='https://gotify.net/docs/index'>here</a>.",
 	"note": "ARM7 Image. Documentation is Available <a href='https://gotify.net/docs/index'>here</a>.",

+ 3 - 2
template/apps/grocy.json

@@ -22,8 +22,9 @@
 			"name": "TZ"
 			"name": "TZ"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/grocy:latest",
-	"image64": "linuxserver/grocy:latest",
+	"image_arm32": "linuxserver/grocy:latest",
+	"image_arm64": "linuxserver/grocy:latest",
+	"image_amd64": "linuxserver/grocy:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/grocy_logo.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/grocy_logo.png",
 	"name": "grocy",
 	"name": "grocy",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-grocy",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-grocy",

+ 3 - 2
template/apps/guacamole.json

@@ -4,8 +4,9 @@
 		"Tools"
 		"Tools"
 	],
 	],
 	"description": "A clientless remote desktop gateway.",
 	"description": "A clientless remote desktop gateway.",
-	"image32": "oznu/guacamole:armhf",
-	"image64": "maxwaldorf/guacamole:latest",
+	"image_arm32": "oznu/guacamole:armhf",
+	"image_arm64": "maxwaldorf/guacamole:latest",
+	"image_amd64": "maxwaldorf/guacamole:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/guacamole.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/guacamole.png",
 	"name": "guacamole",
 	"name": "guacamole",
 	"note": "The default login will be guacadmin/guacadmin. It is common practice to add a new admin user and remove the default user for Guacamole.",
 	"note": "The default login will be guacadmin/guacadmin. It is common practice to add a new admin user and remove the default user for Guacamole.",

+ 3 - 2
template/apps/headphones.json

@@ -15,8 +15,9 @@
 			"name": "PGID"
 			"name": "PGID"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/headphones:latest",
-	"image64": "linuxserver/headphones:latest",
+	"image_arm32": "linuxserver/headphones:latest",
+	"image_arm64": "linuxserver/headphones:latest",
+	"image_amd64": "linuxserver/headphones:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/headphones-icon.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/headphones-icon.png",
 	"name": "headphones",
 	"name": "headphones",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-headphones",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-headphones",

+ 3 - 2
template/apps/heimdall.json

@@ -17,8 +17,9 @@
 			"name": "PGID"
 			"name": "PGID"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/heimdall:latest",
-	"image64": "linuxserver/heimdall:latest",
+	"image_arm32": "linuxserver/heimdall:latest",
+	"image_arm64": "linuxserver/heimdall:latest",
+	"image_amd64": "linuxserver/heimdall:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/heimdall-icon.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/heimdall-icon.png",
 	"name": "heimdall",
 	"name": "heimdall",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-heimdall",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-heimdall",

+ 3 - 2
template/apps/homarr.json

@@ -17,8 +17,9 @@
             "name": "PGID"
             "name": "PGID"
         }
         }
     ],
     ],
-    "image32": "ghcr.io/ajnart/homarr:latest",
-    "image64": "ghcr.io/ajnart/homarr:latest",
+    "image_arm32": "ghcr.io/ajnart/homarr:latest",
+    "image_arm64": "ghcr.io/ajnart/homarr:latest",
+    "image_amd64": "ghcr.io/ajnart/homarr:latest",
     "logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/homarr.png",
     "logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/homarr.png",
     "name": "homarr",
     "name": "homarr",
     "platform": "linux",
     "platform": "linux",

+ 3 - 2
template/apps/home-assistant.json

@@ -1,7 +1,8 @@
 {
 {
 	"description": "Home Assistant is a free and open-source software for home automation that is designed to be the central control system for smart home devices with focus on local control and privacy.",
 	"description": "Home Assistant is a free and open-source software for home automation that is designed to be the central control system for smart home devices with focus on local control and privacy.",
-	"image32": "homeassistant/home-assistant:latest",
-	"image64": "homeassistant/home-assistant:latest",
+	"image_arm32": "homeassistant/home-assistant:latest",
+	"image_arm64": "homeassistant/home-assistant:latest",
+	"image_amd64": "homeassistant/home-assistant:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/homeassistant.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/homeassistant.png",
 	"name": "home-assistant",
 	"name": "home-assistant",
 	"officialDoc": "https://www.home-assistant.io/installation/raspberrypi#install-home-assistant-container",
 	"officialDoc": "https://www.home-assistant.io/installation/raspberrypi#install-home-assistant-container",

+ 2 - 2
template/apps/homebridge---debian.json

@@ -30,8 +30,8 @@
 			"name": "TZ"
 			"name": "TZ"
 		}
 		}
 	],
 	],
-	"image32": "oznu/homebridge:debian-arm32v7",
-	"image64": "oznu/homebridge:debian",
+	"image_arm32": "oznu/homebridge:debian-arm32v7",
+	"image_arm64": "oznu/homebridge:debian",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/homebridge.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/homebridge.png",
 	"name": "homebridge-debian",
 	"name": "homebridge-debian",
 	"network": "host",
 	"network": "host",

+ 3 - 2
template/apps/homebridge.json

@@ -30,8 +30,9 @@
 			"name": "TZ"
 			"name": "TZ"
 		}
 		}
 	],
 	],
-	"image32": "oznu/homebridge:latest",
-	"image64": "oznu/homebridge:latest",
+	"image_arm32": "oznu/homebridge:latest",
+	"image_arm64": "oznu/homebridge:latest",
+	"image_amd64": "oznu/homebridge:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/homebridge.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/homebridge.png",
 	"name": "homebridge",
 	"name": "homebridge",
 	"network": "host",
 	"network": "host",

+ 3 - 2
template/apps/homer.json

@@ -16,8 +16,9 @@
 			"name": "UID"
 			"name": "UID"
 		}
 		}
 	],
 	],
-	"image32": "b4bz/homer:latest",
-	"image64": "b4bz/homer:latest",
+	"image_arm32": "b4bz/homer:latest",
+	"image_arm64": "b4bz/homer:latest",
+	"image_amd64": "b4bz/homer:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/homer.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/homer.png",
 	"name": "homer",
 	"name": "homer",
 	"note": "This container requires a yml file within the config volume. See the documentation here https://github.com/bastienwirtz/homer",
 	"note": "This container requires a yml file within the config volume. See the documentation here https://github.com/bastienwirtz/homer",

+ 3 - 2
template/apps/htpc-manager.json

@@ -17,8 +17,9 @@
 			"name": "PGID"
 			"name": "PGID"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/htpcmanager:latest",
-	"image64": "linuxserver/htpcmanager:latest",
+	"image_arm32": "linuxserver/htpcmanager:latest",
+	"image_arm64": "linuxserver/htpcmanager:latest",
+	"image_amd64": "linuxserver/htpcmanager:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/htpcmanager-icon.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/htpcmanager-icon.png",
 	"name": "htpcmanager",
 	"name": "htpcmanager",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-htpcmanager",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-htpcmanager",

+ 2 - 2
template/apps/huginn.json

@@ -4,8 +4,8 @@
 		"Tools"
 		"Tools"
 	],
 	],
 	"description": "Create agents that monitor and act on your behalf.",
 	"description": "Create agents that monitor and act on your behalf.",
-	"image32": "mjysci/huginn:arm32v7",
-	"image64": "mjysci/huginn:arm32v7",
+	"image_arm32": "mjysci/huginn:arm32v7",
+	"image_arm64": "mjysci/huginn:arm32v7",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/huginn.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/huginn.png",
 	"name": "huginn",
 	"name": "huginn",
 	"officialDoc": "https://github.com/huginn/huginn/tree/master/docker",
 	"officialDoc": "https://github.com/huginn/huginn/tree/master/docker",

+ 2 - 2
template/apps/influxdb-1.8.10.json

@@ -5,8 +5,8 @@
 	],
 	],
 	"description": "InfluxDB is an open source time series database for recording metrics, events, and analytics. You will need to add /portainer/Files/AppData/Config/Influxdb/config/influxdb.conf",
 	"description": "InfluxDB is an open source time series database for recording metrics, events, and analytics. You will need to add /portainer/Files/AppData/Config/Influxdb/config/influxdb.conf",
 	"hostname": "rpi-influxdb1810",
 	"hostname": "rpi-influxdb1810",
-	"image32": "influxdb:1.8.10",
-	"image64": "influxdb:1.8.10",
+	"image_arm32": "influxdb:1.8.10",
+	"image_arm64": "influxdb:1.8.10",
 	"logo": "https://raw.githubusercontent.com/docker-library/docs/43d87118415bb75d7bb107683e79cd6d69186f67/influxdb/logo.png",
 	"logo": "https://raw.githubusercontent.com/docker-library/docs/43d87118415bb75d7bb107683e79cd6d69186f67/influxdb/logo.png",
 	"name": "influxdb1810",
 	"name": "influxdb1810",
 	"officialDoc": "https://docs.influxdata.com/influxdb/v2.0/install/?t=Docker",
 	"officialDoc": "https://docs.influxdata.com/influxdb/v2.0/install/?t=Docker",

+ 2 - 1
template/apps/invidious.json

@@ -162,7 +162,8 @@
 	"platform": "linux",
 	"platform": "linux",
 	"preInstallScript": "install_invidious.sh",
 	"preInstallScript": "install_invidious.sh",
 	"repository": {
 	"repository": {
-		"stackfile64": "stack/invidious.yml",
+		"stackfile_arm64": "stack/invidious.yml",
+		"stackfile_amd64": "stack/invidious.yml",
 		"url": "https://github.com/pi-hosted/pi-hosted"
 		"url": "https://github.com/pi-hosted/pi-hosted"
 	},
 	},
 	"title": "Invidious",
 	"title": "Invidious",

+ 3 - 2
template/apps/jackett.json

@@ -16,8 +16,9 @@
 			"name": "PGID"
 			"name": "PGID"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/jackett:latest",
-	"image64": "linuxserver/jackett:latest",
+	"image_arm32": "linuxserver/jackett:latest",
+	"image_arm64": "linuxserver/jackett:latest",
+	"image_amd64": "linuxserver/jackett:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/jacket-icon.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/jacket-icon.png",
 	"name": "jackett",
 	"name": "jackett",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-jackett",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-jackett",

+ 3 - 2
template/apps/jdownloader.json

@@ -21,8 +21,9 @@
 			"name": "MYJD_PASSWORD"
 			"name": "MYJD_PASSWORD"
 		}
 		}
 	],
 	],
-	"image32": "jaymoulin/jdownloader:latest",
-	"image64": "jaymoulin/jdownloader:latest",
+	"image_arm32": "jaymoulin/jdownloader:latest",
+	"image_arm64": "jaymoulin/jdownloader:latest",
+	"image_amd64": "jaymoulin/jdownloader:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/jdownloader.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/jdownloader.png",
 	"name": "JDownloader",
 	"name": "JDownloader",
 	"officialDoc": "https://github.com/jaymoulin/docker-jdownloader",
 	"officialDoc": "https://github.com/jaymoulin/docker-jdownloader",

+ 3 - 2
template/apps/jellyfin.json

@@ -22,8 +22,9 @@
 			"name": "TZ"
 			"name": "TZ"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/jellyfin:latest",
-	"image64": "linuxserver/jellyfin:latest",
+	"image_arm32": "linuxserver/jellyfin:latest",
+	"image_arm64": "linuxserver/jellyfin:latest",
+	"image_amd64": "linuxserver/jellyfin:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/jellyfin.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/jellyfin.png",
 	"name": "jellyfin",
 	"name": "jellyfin",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-jellyfin",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-jellyfin",

+ 3 - 2
template/apps/jellyseerr.json

@@ -27,8 +27,9 @@
             "name": "TZ"
             "name": "TZ"
         }
         }
     ],
     ],
-    "image32": "fallenbagel/jellyseerr:latest",
-    "image64": "fallenbagel/jellyseerr:latest",
+    "image_arm32": "fallenbagel/jellyseerr:latest",
+    "image_arm64": "fallenbagel/jellyseerr:latest",
+    "image_amd64": "fallenbagel/jellyseerr:latest",
     "logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/jellyseerr.png",
     "logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/jellyseerr.png",
     "name": "jellyseerr",
     "name": "jellyseerr",
     "platform": "linux",
     "platform": "linux",

+ 3 - 2
template/apps/kodi-headless.json

@@ -15,8 +15,9 @@
 			"name": "PGID"
 			"name": "PGID"
 		}
 		}
 	],
 	],
-	"image32": "lsioarmhf/kodi-headless:latest",
-	"image64": "lsioarmhf/kodi-headless:latest",
+	"image_arm32": "lsioarmhf/kodi-headless:latest",
+	"image_arm64": "lsioarmhf/kodi-headless:latest",
+	"image_amd64": "lsioarmhf/kodi-headless:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/kodi-icon.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/kodi-icon.png",
 	"name": "kodi-headless",
 	"name": "kodi-headless",
 	"officialDoc": "https://hub.docker.com/r/lsioarmhf/kodi-headless-aarch64/",
 	"officialDoc": "https://hub.docker.com/r/lsioarmhf/kodi-headless-aarch64/",

+ 2 - 2
template/apps/komga.json

@@ -4,8 +4,8 @@
 		"Tools"
 		"Tools"
 	],
 	],
 	"description": "Komga is a free and open source comics/mangas/magazines server.",
 	"description": "Komga is a free and open source comics/mangas/magazines server.",
-	"image32": "gotson/komga",
-	"image64": "gotson/komga",
+	"image_arm32": "gotson/komga",
+	"image_arm64": "gotson/komga",
 	"logo": "https://raw.githubusercontent.com/tuta23/pi-hosted/master/images/komga.png",
 	"logo": "https://raw.githubusercontent.com/tuta23/pi-hosted/master/images/komga.png",
 	"name": "komga",
 	"name": "komga",
 	"officialDoc": "https://komga.org/",
 	"officialDoc": "https://komga.org/",

+ 3 - 2
template/apps/lazylibrarian.json

@@ -15,8 +15,9 @@
 			"name": "PGID"
 			"name": "PGID"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/lazylibrarian:latest",
-	"image64": "linuxserver/lazylibrarian:latest",
+	"image_arm32": "linuxserver/lazylibrarian:latest",
+	"image_arm64": "linuxserver/lazylibrarian:latest",
+	"image_amd64": "linuxserver/lazylibrarian:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/lazylibrarian-icon.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/lazylibrarian-icon.png",
 	"name": "lazylibrarian",
 	"name": "lazylibrarian",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-lazylibrarian",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-lazylibrarian",

+ 3 - 2
template/apps/let's-encrypt.json

@@ -51,8 +51,9 @@
 			"name": "DNSPLUGIN"
 			"name": "DNSPLUGIN"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/letsencrypt:latest",
-	"image64": "linuxserver/letsencrypt:latest",
+	"image_arm32": "linuxserver/letsencrypt:latest",
+	"image_arm64": "linuxserver/letsencrypt:latest",
+	"image_amd64": "linuxserver/letsencrypt:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/letsencrypt.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/letsencrypt.png",
 	"name": "letsencrypt",
 	"name": "letsencrypt",
 	"officialDoc": "https://hub.docker.com/r/linuxserver/letsencrypt",
 	"officialDoc": "https://hub.docker.com/r/linuxserver/letsencrypt",

+ 2 - 2
template/apps/libreddit.json

@@ -4,8 +4,8 @@
 		"Tools"
 		"Tools"
 	],
 	],
 	"description": "An alternative private front-end to Reddit",
 	"description": "An alternative private front-end to Reddit",
-	"image32": "spikecodes/libreddit:armv7",
-	"image64": "spikecodes/libreddit:arm",
+	"image_arm32": "spikecodes/libreddit:armv7",
+	"image_arm64": "spikecodes/libreddit:arm",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/libreddit.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/libreddit.png",
 	"name": "libreddit",
 	"name": "libreddit",
 	"officialDoc": "https://github.com/spikecodes/libreddit#2-docker",
 	"officialDoc": "https://github.com/spikecodes/libreddit#2-docker",

+ 3 - 2
template/apps/librespeed.json

@@ -16,8 +16,9 @@
 			"name": "PGID"
 			"name": "PGID"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/librespeed:latest",
-	"image64": "linuxserver/librespeed:latest",
+	"image_arm32": "linuxserver/librespeed:latest",
+	"image_arm64": "linuxserver/librespeed:latest",
+	"image_amd64": "linuxserver/librespeed:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/speedtest.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/speedtest.png",
 	"name": "librespeed",
 	"name": "librespeed",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-librespeed",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-librespeed",

+ 3 - 2
template/apps/lidarr.json

@@ -16,8 +16,9 @@
 			"name": "PGID"
 			"name": "PGID"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/lidarr:latest",
-	"image64": "linuxserver/lidarr:latest",
+	"image_arm32": "linuxserver/lidarr:latest",
+	"image_arm64": "linuxserver/lidarr:latest",
+	"image_amd64": "linuxserver/lidarr:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/lidarr.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/lidarr.png",
 	"name": "lidarr",
 	"name": "lidarr",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-lidarr",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-lidarr",

+ 2 - 1
template/apps/lingva-translate.json

@@ -26,7 +26,8 @@
 			"name": "default_target_lang"
 			"name": "default_target_lang"
 		}
 		}
 	],
 	],
-	"image64": "cinetube/lingva-translate:latest",
+	"image_arm64": "cinetube/lingva-translate:latest",
+	"image_amd64": "cinetube/lingva-translate:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/lingva-translate.svg",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/lingva-translate.svg",
 	"name": "lingva-translate",
 	"name": "lingva-translate",
 	"officialDoc": "https://github.com/TheDavidDelta/lingva-translate",
 	"officialDoc": "https://github.com/TheDavidDelta/lingva-translate",

+ 3 - 2
template/apps/lychee-with-mariadb.json

@@ -48,8 +48,9 @@
 	"officialDoc": "https://docs.linuxserver.io/images/docker-lychee",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-lychee",
 	"platform": "linux",
 	"platform": "linux",
 	"repository": {
 	"repository": {
-		"stackfile32": "stack/lychee-mariadb.yml",
-		"stackfile64": "stack/lychee-mariadb.yml",
+		"stackfile_arm32": "stack/lychee-mariadb.yml",
+		"stackfile_arm64": "stack/lychee-mariadb.yml",
+		"stackfile_amd64": "stack/lychee-mariadb.yml",
 		"url": "https://github.com/pi-hosted/pi-hosted/"
 		"url": "https://github.com/pi-hosted/pi-hosted/"
 	},
 	},
 	"restart_policy": "unless-stopped",
 	"restart_policy": "unless-stopped",

+ 2 - 2
template/apps/lychee.json

@@ -43,8 +43,8 @@
 			"name": "DB_PORT"
 			"name": "DB_PORT"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/lychee:arm32v7-latest",
-	"image64": "linuxserver/lychee:arm64v8-latest",
+	"image_arm32": "linuxserver/lychee:arm32v7-latest",
+	"image_arm64": "linuxserver/lychee:arm64v8-latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/lychee-icon.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/lychee-icon.png",
 	"name": "lychee",
 	"name": "lychee",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-lychee",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-lychee",

+ 2 - 2
template/apps/mariadb.json

@@ -36,8 +36,8 @@
 			"name": "MYSQL_ROOT_PASSWORD"
 			"name": "MYSQL_ROOT_PASSWORD"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/mariadb:arm32v7-latest",
-	"image64": "linuxserver/mariadb:arm64v8-latest",
+	"image_arm32": "linuxserver/mariadb:arm32v7-latest",
+	"image_arm64": "linuxserver/mariadb:arm64v8-latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/mariadb-icon.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/mariadb-icon.png",
 	"name": "mariadb",
 	"name": "mariadb",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-mariadb",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-mariadb",

+ 3 - 2
template/apps/mealie.json

@@ -61,8 +61,9 @@
 			"name": "RECIPE_DISABLE_AMOUNT"
 			"name": "RECIPE_DISABLE_AMOUNT"
 		}
 		}
 	],
 	],
-	"image32": "hkotel/mealie:v0.4.3",
-	"image64": "hkotel/mealie:latest",
+	"image_arm32": "hkotel/mealie:v0.4.3",
+	"image_arm64": "hkotel/mealie:latest",
+	"image_amd64": "hkotel/mealie:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/mealie.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/mealie.png",
 	"name": "mealie",
 	"name": "mealie",
 	"note": "Default Credentials: Username: changeme@email.com Password: MyPassword. Documentation is Available <a href='https://hay-kot.github.io/mealie/documentation/getting-started/install/'>here</a>.",
 	"note": "Default Credentials: Username: changeme@email.com Password: MyPassword. Documentation is Available <a href='https://hay-kot.github.io/mealie/documentation/getting-started/install/'>here</a>.",

+ 3 - 2
template/apps/medusa.json

@@ -16,8 +16,9 @@
 			"name": "PGID"
 			"name": "PGID"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/medusa:latest",
-	"image64": "linuxserver/medusa:latest",
+	"image_arm32": "linuxserver/medusa:latest",
+	"image_arm64": "linuxserver/medusa:latest",
+	"image_amd64": "linuxserver/medusa:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/medusa-icon.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/medusa-icon.png",
 	"name": "medusa",
 	"name": "medusa",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-medusa",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-medusa",

+ 2 - 2
template/apps/metube.json

@@ -15,8 +15,8 @@
 			"name": "PGID"
 			"name": "PGID"
 		}
 		}
 	],
 	],
-	"image32": "alexta69/metube",
-	"image64": "alexta69/metube",
+	"image_arm32": "alexta69/metube",
+	"image_arm64": "alexta69/metube",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/metube.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/metube.png",
 	"name": "MeTube",
 	"name": "MeTube",
 	"officialDoc": "https://github.com/alexta69/metube",
 	"officialDoc": "https://github.com/alexta69/metube",

+ 3 - 2
template/apps/minecraft-server.json

@@ -12,8 +12,9 @@
 			"name": "EULA"
 			"name": "EULA"
 		}
 		}
 	],
 	],
-	"image32": "itzg/minecraft-server:latest",
-	"image64": "itzg/minecraft-server:latest",
+	"image_arm32": "itzg/minecraft-server:latest",
+	"image_arm64": "itzg/minecraft-server:latest",
+	"image_amd64": "itzg/minecraft-server:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/minecraft.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/minecraft.png",
 	"name": "minecraft",
 	"name": "minecraft",
 	"officialDoc": "https://github.com/itzg/docker-minecraft-server#using-docker-compose",
 	"officialDoc": "https://github.com/itzg/docker-minecraft-server#using-docker-compose",

+ 3 - 2
template/apps/minetest.json

@@ -15,8 +15,9 @@
 			"name": "PGID"
 			"name": "PGID"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/minetest:latest",
-	"image64": "linuxserver/minetest:latest",
+	"image_arm32": "linuxserver/minetest:latest",
+	"image_arm64": "linuxserver/minetest:latest",
+	"image_amd64": "linuxserver/minetest:latest",
 	"logo": "https://raw.githubusercontent.com/linuxserver/beta-templates/master/lsiodev/img/minetest-icon.png",
 	"logo": "https://raw.githubusercontent.com/linuxserver/beta-templates/master/lsiodev/img/minetest-icon.png",
 	"name": "minetest",
 	"name": "minetest",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-minetest",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-minetest",

+ 3 - 2
template/apps/minio.json

@@ -33,8 +33,9 @@
 			"description": "URL hostname for MinIO Console if any"
 			"description": "URL hostname for MinIO Console if any"
 		}
 		}
 	],
 	],
-	"image32": "minio/minio:latest",
-	"image64": "minio/minio:latest",
+	"image_arm32": "minio/minio:latest",
+	"image_arm64": "minio/minio:latest",
+	"image_amd64": "minio/minio:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/minio.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/minio.png",
 	"name": "minio",
 	"name": "minio",
 	"officialDoc": "https://docs.min.io/minio/baremetal/quickstart/quickstart.html",
 	"officialDoc": "https://docs.min.io/minio/baremetal/quickstart/quickstart.html",

+ 3 - 2
template/apps/minisatip.json

@@ -17,8 +17,9 @@
 			"name": "PGID"
 			"name": "PGID"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/minisatip:latest",
-	"image64": "linuxserver/minisatip:latest",
+	"image_arm32": "linuxserver/minisatip:latest",
+	"image_arm64": "linuxserver/minisatip:latest",
+	"image_amd64": "linuxserver/minisatip:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/minisatip-icon.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/minisatip-icon.png",
 	"name": "minisatip",
 	"name": "minisatip",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-minisatip",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-minisatip",

+ 3 - 2
template/apps/mstream.json

@@ -16,8 +16,9 @@
 			"name": "PGID"
 			"name": "PGID"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/mstream:latest",
-	"image64": "linuxserver/mstream:latest",
+	"image_arm32": "linuxserver/mstream:latest",
+	"image_arm64": "linuxserver/mstream:latest",
+	"image_amd64": "linuxserver/mstream:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/mstream.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/mstream.png",
 	"name": "mstream",
 	"name": "mstream",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-mstream",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-mstream",

+ 2 - 2
template/apps/murmur.json

@@ -22,8 +22,8 @@
 			"name": "TZ"
 			"name": "TZ"
 		}
 		}
 	],
 	],
-	"image32": "yhaenggi/murmur:1.3.4",
-	"image64": "yhaenggi/murmur:1.3.4",
+	"image_arm32": "yhaenggi/murmur:1.3.4",
+	"image_arm64": "yhaenggi/murmur:1.3.4",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/Mumble-logo.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/Mumble-logo.png",
 	"name": "murmur",
 	"name": "murmur",
 	"officialDoc": "https://github.com/yhaenggi/murmur-docker",
 	"officialDoc": "https://github.com/yhaenggi/murmur-docker",

+ 3 - 2
template/apps/musicbrainz.json

@@ -22,8 +22,9 @@
 			"name": "PGID"
 			"name": "PGID"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/musicbrainz:latest",
-	"image64": "linuxserver/musicbrainz:latest",
+	"image_arm32": "linuxserver/musicbrainz:latest",
+	"image_arm64": "linuxserver/musicbrainz:latest",
+	"image_amd64": "linuxserver/musicbrainz:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/musicbrainz-icon.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/musicbrainz-icon.png",
 	"name": "musicbrainz",
 	"name": "musicbrainz",
 	"officialDoc": "https://github.com/linuxserver-archive/docker-musicbrainz",
 	"officialDoc": "https://github.com/linuxserver-archive/docker-musicbrainz",

+ 3 - 2
template/apps/muximux.json

@@ -18,8 +18,9 @@
 			"name": "PGID"
 			"name": "PGID"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/muximux:latest",
-	"image64": "linuxserver/muximux:latest",
+	"image_arm32": "linuxserver/muximux:latest",
+	"image_arm64": "linuxserver/muximux:latest",
+	"image_amd64": "linuxserver/muximux:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/muximux-icon.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/muximux-icon.png",
 	"name": "muximux",
 	"name": "muximux",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-muximux",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-muximux",

+ 3 - 2
template/apps/mylar.json

@@ -16,8 +16,9 @@
 			"name": "PGID"
 			"name": "PGID"
 		}
 		}
 	],
 	],
-	"image32": "linuxserver/mylar3:latest",
-	"image64": "linuxserver/mylar3:latest",
+	"image_arm32": "linuxserver/mylar3:latest",
+	"image_arm64": "linuxserver/mylar3:latest",
+	"image_amd64": "linuxserver/mylar3:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/mylar-icon.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/mylar-icon.png",
 	"name": "mylar",
 	"name": "mylar",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-mylar3",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-mylar3",

+ 3 - 2
template/apps/mysql.json

@@ -26,8 +26,9 @@
             "name": "TZ"
             "name": "TZ"
         }
         }
     ],
     ],
-    "image32": "mysql:latest",
-    "image64": "mysql:latest",
+    "image_arm32": "mysql:latest",
+    "image_arm64": "mysql:latest",
+    "image_amd64": "mysql:latest",
     "logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/mysql.png",
     "logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/mysql.png",
     "name": "mysql",
     "name": "mysql",
     "platform": "linux",
     "platform": "linux",

+ 3 - 2
template/apps/n8n.json

@@ -21,8 +21,9 @@
 			"name": "N8N_BASIC_AUTH_PASSWORD"
 			"name": "N8N_BASIC_AUTH_PASSWORD"
 		}
 		}
 	],
 	],
-	"image32": "n8nio/n8n:latest",
-	"image64": "n8nio/n8n:latest",
+	"image_arm32": "n8nio/n8n:latest",
+	"image_arm64": "n8nio/n8n:latest",
+	"image_amd64": "n8nio/n8n:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/n8n.jpg",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/n8n.jpg",
 	"name": "n8n",
 	"name": "n8n",
 	"note": "Documentation is Available <a href='https://docs.n8n.io/'>here</a>",
 	"note": "Documentation is Available <a href='https://docs.n8n.io/'>here</a>",

+ 3 - 2
template/apps/netdata.json

@@ -16,8 +16,9 @@
 			"name": "DOCKER_GRP"
 			"name": "DOCKER_GRP"
 		}
 		}
 	],
 	],
-	"image32": "netdata/netdata:latest",
-	"image64": "netdata/netdata:latest",
+	"image_arm32": "netdata/netdata:latest",
+	"image_arm64": "netdata/netdata:latest",
+	"image_amd64": "netdata/netdata:latest",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/netdata.png",
 	"logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/netdata.png",
 	"name": "netdata",
 	"name": "netdata",
 	"note": "Documentation is Available <a href='https://learn.netdata.cloud/'>here</a>.",
 	"note": "Documentation is Available <a href='https://learn.netdata.cloud/'>here</a>.",

+ 3 - 2
template/apps/nextcloud.json

@@ -42,8 +42,9 @@
 	"officialDoc": "https://docs.linuxserver.io/images/docker-nextcloud",
 	"officialDoc": "https://docs.linuxserver.io/images/docker-nextcloud",
 	"platform": "linux",
 	"platform": "linux",
 	"repository": {
 	"repository": {
-		"stackfile32": "stack/nextcloud.yml",
-		"stackfile64": "stack/nextcloud.yml",
+		"stackfile_arm32": "stack/nextcloud.yml",
+		"stackfile_arm64": "stack/nextcloud.yml",
+		"stackfile_amd64": "stack/nextcloud.yml",
 		"url": "https://github.com/pi-hosted/pi-hosted"
 		"url": "https://github.com/pi-hosted/pi-hosted"
 	},
 	},
 	"title": "Nextcloud",
 	"title": "Nextcloud",

+ 2 - 2
template/apps/nextcloudpi.json

@@ -20,8 +20,8 @@
 		}
 		}
 	],
 	],
 	"extraScript": "reset_premissions_nextcloud.sh",
 	"extraScript": "reset_premissions_nextcloud.sh",
-	"image32": "ownyourbits/nextcloudpi",
-	"image64": "ownyourbits/nextcloudpi-arm64:latest",
+	"image_arm32": "ownyourbits/nextcloudpi",
+	"image_arm64": "ownyourbits/nextcloudpi-arm64:latest",
 	"name": "nextcloudpi",
 	"name": "nextcloudpi",
 	"note": "The database user is nextcloud and the database is nextcloud_db. The host of the database will be located at the bottom of the DB conotainer in portainer.",
 	"note": "The database user is nextcloud and the database is nextcloud_db. The host of the database will be located at the bottom of the DB conotainer in portainer.",
 	"officialDoc": "https://ownyourbits.com/2017/06/08/nextcloudpi-docker-for-raspberry-pi/",
 	"officialDoc": "https://ownyourbits.com/2017/06/08/nextcloudpi-docker-for-raspberry-pi/",

+ 3 - 2
template/apps/nginx-proxy-manager-mysql-goaccess.json

@@ -68,8 +68,9 @@
 	],
 	],
 	"preInstallScript": "nginx-proxy-manager.sh",
 	"preInstallScript": "nginx-proxy-manager.sh",
 	"repository": {
 	"repository": {
-		"stackfile32": "stack/nginx-proxy-manager-goaccess.yml",
-		"stackfile64": "stack/nginx-proxy-manager-goaccess.yml",
+		"stackfile_arm32": "stack/nginx-proxy-manager-goaccess.yml",
+		"stackfile_arm64": "stack/nginx-proxy-manager-goaccess.yml",
+		"stackfile_amd64": "stack/nginx-proxy-manager-goaccess.yml",
 		"url": "https://github.com/pi-hosted/pi-hosted"
 		"url": "https://github.com/pi-hosted/pi-hosted"
 	},
 	},
 	"restart_policy": "unless-stopped",
 	"restart_policy": "unless-stopped",

+ 3 - 2
template/apps/nginx-proxy-manager-mysql.json

@@ -43,8 +43,9 @@
 	],
 	],
 	"preInstallScript": "nginx-proxy-manager.sh",
 	"preInstallScript": "nginx-proxy-manager.sh",
 	"repository": {
 	"repository": {
-		"stackfile32": "stack/nginx-proxy-manager.yml",
-		"stackfile64": "stack/nginx-proxy-manager.yml",
+		"stackfile_arm32": "stack/nginx-proxy-manager.yml",
+		"stackfile_arm64": "stack/nginx-proxy-manager.yml",
+		"stackfile_amd64": "stack/nginx-proxy-manager.yml",
 		"url": "https://github.com/pi-hosted/pi-hosted"
 		"url": "https://github.com/pi-hosted/pi-hosted"
 	},
 	},
 	"restart_policy": "unless-stopped",
 	"restart_policy": "unless-stopped",

部分文件因文件數量過多而無法顯示