mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 10:22:50 +00:00 
			
		
		
		
	Compare commits
	
		
			17 Commits
		
	
	
		
			2025-02-20
			...
			2025-02-21
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					a9362e0b4a | ||
| 
						 | 
					10c46723fe | ||
| 
						 | 
					666e170f7d | ||
| 
						 | 
					109c48694e | ||
| 
						 | 
					d0cd58e923 | ||
| 
						 | 
					16b8bbfca6 | ||
| 
						 | 
					209aa220b0 | ||
| 
						 | 
					dd8db43dea | ||
| 
						 | 
					7d40e148e9 | ||
| 
						 | 
					ef6eeea608 | ||
| 
						 | 
					0c13b71466 | ||
| 
						 | 
					e1c25a3c8e | ||
| 
						 | 
					e5bfb8f8a3 | ||
| 
						 | 
					4dfcd32d92 | ||
| 
						 | 
					167deb5d7f | ||
| 
						 | 
					8cb3007d66 | ||
| 
						 | 
					49bcd30e77 | 
							
								
								
									
										22
									
								
								.github/changelog-pr-config.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								.github/changelog-pr-config.json
									
									
									
									
										vendored
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
    "labels": ["breaking change"]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "title": "✨ New Scripts",
 | 
			
		||||
    "title": "🆕 New Scripts",
 | 
			
		||||
    "labels": ["new script"]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
@@ -12,25 +12,29 @@
 | 
			
		||||
    "labels": ["update script"]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "title": "🆕 Features",
 | 
			
		||||
    "labels": ["new feature"]
 | 
			
		||||
    "title": "🐞 Bug Fixes (Updated Scripts)",
 | 
			
		||||
    "labels": ["update script", "bugfix"]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "title": "✨ Feature Updates (Updated Scripts)",
 | 
			
		||||
    "labels": ["update script", "feature"]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "title": "✨ New Features",
 | 
			
		||||
    "labels": ["feature"]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "title": "🌐 Website",
 | 
			
		||||
    "labels": ["website"]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "title": "🐞 Bug Fixes",
 | 
			
		||||
    "labels": ["bug fix"]
 | 
			
		||||
    "title": "📡 API",
 | 
			
		||||
    "labels": ["api"]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "title": "🧰 Maintenance",
 | 
			
		||||
    "labels": ["maintenance"]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "title": "📡 API",
 | 
			
		||||
    "labels": ["api"]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "title": "❔ Unlabelled",
 | 
			
		||||
    "labels": []
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										46
									
								
								.github/workflows/autolabeler.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										46
									
								
								.github/workflows/autolabeler.yml
									
									
									
									
										vendored
									
									
								
							@@ -19,7 +19,7 @@ jobs:
 | 
			
		||||
      - name: Install minimatch
 | 
			
		||||
        run: npm install minimatch
 | 
			
		||||
 | 
			
		||||
      - name: Label PR based on file changes
 | 
			
		||||
      - name: Label PR based on file changes and PR template
 | 
			
		||||
        uses: actions/github-script@v7
 | 
			
		||||
        with:
 | 
			
		||||
          script: |
 | 
			
		||||
@@ -30,8 +30,14 @@ jobs:
 | 
			
		||||
            const configPath = path.resolve(process.env.CONFIG_PATH);
 | 
			
		||||
            const fileContent = await fs.readFile(configPath, 'utf-8');
 | 
			
		||||
            const autolabelerConfig = JSON.parse(fileContent);
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
            const prNumber = context.payload.pull_request.number;
 | 
			
		||||
            const prBody = context.payload.pull_request.body.toLowerCase();
 | 
			
		||||
            
 | 
			
		||||
            // Label-Sammlung (um doppelte API-Calls zu vermeiden)
 | 
			
		||||
            let labelsToAdd = new Set();
 | 
			
		||||
 | 
			
		||||
            // Prüfe Datei-Änderungen
 | 
			
		||||
            const prListFilesResponse = await github.rest.pulls.listFiles({
 | 
			
		||||
              owner: context.repo.owner,
 | 
			
		||||
              repo: context.repo.repo,
 | 
			
		||||
@@ -39,8 +45,6 @@ jobs:
 | 
			
		||||
            });
 | 
			
		||||
            const prFiles = prListFilesResponse.data;
 | 
			
		||||
 | 
			
		||||
            let labelsToAdd = new Set();
 | 
			
		||||
 | 
			
		||||
            for (const [label, rules] of Object.entries(autolabelerConfig)) {
 | 
			
		||||
              const shouldAddLabel = prFiles.some((prFile) => {
 | 
			
		||||
                return rules.some((rule) => {
 | 
			
		||||
@@ -57,38 +61,26 @@ jobs:
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (labelsToAdd.size > 0) {
 | 
			
		||||
              console.log(`Adding labels ${Array.from(labelsToAdd).join(", ")} to PR ${prNumber}`);
 | 
			
		||||
              await github.rest.issues.addLabels({
 | 
			
		||||
                owner: context.repo.owner,
 | 
			
		||||
                repo: context.repo.repo,
 | 
			
		||||
                issue_number: prNumber,
 | 
			
		||||
                labels: Array.from(labelsToAdd),
 | 
			
		||||
              });
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
      - name: Label PR based on PR template selections
 | 
			
		||||
        uses: actions/github-script@v7
 | 
			
		||||
        with:
 | 
			
		||||
          script: |
 | 
			
		||||
            const prBody = context.payload.pull_request.body.toLowerCase();
 | 
			
		||||
            const prNumber = context.payload.pull_request.number;
 | 
			
		||||
            const labelMappings = {
 | 
			
		||||
              "🐞 bug fix": "bug fix",
 | 
			
		||||
              "✨ new feature": "new feature",
 | 
			
		||||
            // Prüfe PR-Template Checkboxen mit den korrekten Labels
 | 
			
		||||
            const templateLabelMappings = {
 | 
			
		||||
              "🐞 bug fix": "bugfix",
 | 
			
		||||
              "✨ new feature": "feature",
 | 
			
		||||
              "💥 breaking change": "breaking change",
 | 
			
		||||
              "🆕 new script": "new script"
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            let labelsToAdd = new Set();
 | 
			
		||||
 | 
			
		||||
            for (const [checkbox, label] of Object.entries(labelMappings)) {
 | 
			
		||||
            for (const [checkbox, label] of Object.entries(templateLabelMappings)) {
 | 
			
		||||
              const regex = new RegExp(`- \\[(.*?)\\] ${checkbox}`, "i");
 | 
			
		||||
              if (regex.test(prBody)) {
 | 
			
		||||
              const match = prBody.match(regex);
 | 
			
		||||
              if (match && match[1].trim() !== "") { // Checkbox ist gesetzt
 | 
			
		||||
                labelsToAdd.add(label);
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Debugging: Anzeigen, welche Labels tatsächlich erkannt wurden
 | 
			
		||||
            console.log(`Labels to add: ${Array.from(labelsToAdd).join(", ")}`);
 | 
			
		||||
 | 
			
		||||
            // Labels setzen, falls neue erkannt wurden
 | 
			
		||||
            if (labelsToAdd.size > 0) {
 | 
			
		||||
              console.log(`Adding labels ${Array.from(labelsToAdd).join(", ")} to PR ${prNumber}`);
 | 
			
		||||
              await github.rest.issues.addLabels({
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										0
									
								
								.editorconfig → .vscode/.editorconfig
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										0
									
								
								.editorconfig → .vscode/.editorconfig
									
									
									
									
										vendored
									
									
								
							
							
								
								
									
										13
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -17,6 +17,19 @@ All LXC instances created using this repository come pre-installed with Midnight
 | 
			
		||||
Do not break established syntax in this file, as it is automatically updated by a Github Workflow
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## 2025-02-21
 | 
			
		||||
 | 
			
		||||
### Changes
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
- Add ZFS to Podman. Now it works on ZFS! [@jaminmc](https://github.com/jaminmc) ([#2526](https://github.com/community-scripts/ProxmoxVE/pull/2526))
 | 
			
		||||
- Fix: Tianji - Downgrade Node [@MickLesk](https://github.com/MickLesk) ([#2530](https://github.com/community-scripts/ProxmoxVE/pull/2530))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
- [gh] General Cleanup & Moving Files / Folders [@MickLesk](https://github.com/MickLesk) ([#2532](https://github.com/community-scripts/ProxmoxVE/pull/2532))
 | 
			
		||||
 | 
			
		||||
## 2025-02-20
 | 
			
		||||
 | 
			
		||||
### Changes
 | 
			
		||||
 
 | 
			
		||||
@@ -19,10 +19,10 @@
 | 
			
		||||
    <a href="https://ko-fi.com/community_scripts">
 | 
			
		||||
      <img src="https://img.shields.io/badge/Support-FF5F5F?style=for-the-badge&logo=ko-fi&logoColor=white" alt="Donate" />
 | 
			
		||||
    </a>
 | 
			
		||||
    <a href="https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTING.md">
 | 
			
		||||
    <a href="https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/CONTRIBUTING.md">
 | 
			
		||||
      <img src="https://img.shields.io/badge/Contribute-ff4785?style=for-the-badge&logo=git&logoColor=white" alt="Contribute" />
 | 
			
		||||
    </a> 
 | 
			
		||||
    <a href="https://github.com/community-scripts/ProxmoxVE/blob/main/USER_SUBMITTED_GUIDES.md">
 | 
			
		||||
    <a href="https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/USER_SUBMITTED_GUIDES.md">
 | 
			
		||||
      <img src="https://img.shields.io/badge/Guides-0077b5?style=for-the-badge&logo=read-the-docs&logoColor=white" alt="Guides" />
 | 
			
		||||
    </a> 
 | 
			
		||||
    <a href="https://github.com/community-scripts/ProxmoxVE/blob/main/CHANGELOG.md">
 | 
			
		||||
 
 | 
			
		||||
@@ -19,11 +19,72 @@ $STD apt-get install -y sudo
 | 
			
		||||
$STD apt-get install -y mc
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
get_latest_release() {
 | 
			
		||||
  curl -sL https://api.github.com/repos/$1/releases/latest | grep '"tag_name":' | cut -d'"' -f4
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
PORTAINER_LATEST_VERSION=$(get_latest_release "portainer/portainer")
 | 
			
		||||
PORTAINER_AGENT_LATEST_VERSION=$(get_latest_release "portainer/agent")
 | 
			
		||||
 | 
			
		||||
if $STD mount | grep 'on / type zfs' > null && echo "ZFS"; then
 | 
			
		||||
    msg_info "Enabling ZFS support."
 | 
			
		||||
    mkdir -p /etc/containers
 | 
			
		||||
    cat <<'EOF' >/usr/local/bin/overlayzfsmount
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
exec /bin/mount -t overlay overlay "$@"
 | 
			
		||||
EOF
 | 
			
		||||
    chmod +x /usr/local/bin/overlayzfsmount
 | 
			
		||||
    cat <<'EOF' >/etc/containers/storage.conf
 | 
			
		||||
[storage]
 | 
			
		||||
driver = "overlay"
 | 
			
		||||
runroot = "/run/containers/storage"
 | 
			
		||||
graphroot = "/var/lib/containers/storage"
 | 
			
		||||
 | 
			
		||||
[storage.options]
 | 
			
		||||
pull_options = {enable_partial_images = "false", use_hard_links = "false", ostree_repos=""}
 | 
			
		||||
mount_program = "/usr/local/bin/overlayzfsmount"
 | 
			
		||||
 | 
			
		||||
[storage.options.overlay]
 | 
			
		||||
mountopt = "nodev"
 | 
			
		||||
EOF
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Podman"
 | 
			
		||||
$STD apt-get -y install podman
 | 
			
		||||
$STD systemctl enable --now podman.socket
 | 
			
		||||
echo -e 'unqualified-search-registries=["docker.io"]' >> /etc/containers/registries.conf
 | 
			
		||||
msg_ok "Installed Podman"
 | 
			
		||||
 | 
			
		||||
read -r -p "Would you like to add Portainer? <y/N> " prompt
 | 
			
		||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
 | 
			
		||||
  msg_info "Installing Portainer $PORTAINER_LATEST_VERSION"
 | 
			
		||||
  podman volume create portainer_data >/dev/null
 | 
			
		||||
  $STD podman run -d \
 | 
			
		||||
    -p 8000:8000 \
 | 
			
		||||
    -p 9443:9443 \
 | 
			
		||||
    --name=portainer \
 | 
			
		||||
    --restart=always \
 | 
			
		||||
    -v /run/podman/podman.sock:/var/run/docker.sock \
 | 
			
		||||
    -v portainer_data:/data \
 | 
			
		||||
    portainer/portainer-ce:latest
 | 
			
		||||
  msg_ok "Installed Portainer $PORTAINER_LATEST_VERSION"
 | 
			
		||||
else
 | 
			
		||||
  read -r -p "Would you like to add the Portainer Agent? <y/N> " prompt
 | 
			
		||||
  if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
 | 
			
		||||
    msg_info "Installing Portainer agent $PORTAINER_AGENT_LATEST_VERSION"
 | 
			
		||||
    podman volume create temp >/dev/null
 | 
			
		||||
    podman volume remove temp >/dev/null
 | 
			
		||||
    $STD podman run -d \
 | 
			
		||||
      -p 9001:9001 \
 | 
			
		||||
      --name portainer_agent \
 | 
			
		||||
      --restart=always \
 | 
			
		||||
      -v /run/podman/podman.sock:/var/run/docker.sock \
 | 
			
		||||
      -v /var/lib/containers/storage/volumes:/var/lib/docker/volumes \
 | 
			
		||||
      portainer/agent
 | 
			
		||||
    msg_ok "Installed Portainer Agent $PORTAINER_AGENT_LATEST_VERSION"
 | 
			
		||||
  fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
msg_info "Pulling Home Assistant Image"
 | 
			
		||||
$STD podman pull docker.io/homeassistant/home-assistant:stable
 | 
			
		||||
msg_ok "Pulled Home Assistant Image"
 | 
			
		||||
 
 | 
			
		||||
@@ -19,12 +19,73 @@ $STD apt-get install -y sudo
 | 
			
		||||
$STD apt-get install -y mc
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
get_latest_release() {
 | 
			
		||||
  curl -sL https://api.github.com/repos/$1/releases/latest | grep '"tag_name":' | cut -d'"' -f4
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
PORTAINER_LATEST_VERSION=$(get_latest_release "portainer/portainer")
 | 
			
		||||
PORTAINER_AGENT_LATEST_VERSION=$(get_latest_release "portainer/agent")
 | 
			
		||||
 | 
			
		||||
if $STD mount | grep 'on / type zfs' > null && echo "ZFS"; then
 | 
			
		||||
    msg_info "Enabling ZFS support."
 | 
			
		||||
    mkdir -p /etc/containers
 | 
			
		||||
    cat <<'EOF' >/usr/local/bin/overlayzfsmount
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
exec /bin/mount -t overlay overlay "$@"
 | 
			
		||||
EOF
 | 
			
		||||
    chmod +x /usr/local/bin/overlayzfsmount
 | 
			
		||||
    cat <<'EOF' >/etc/containers/storage.conf
 | 
			
		||||
[storage]
 | 
			
		||||
driver = "overlay"
 | 
			
		||||
runroot = "/run/containers/storage"
 | 
			
		||||
graphroot = "/var/lib/containers/storage"
 | 
			
		||||
 | 
			
		||||
[storage.options]
 | 
			
		||||
pull_options = {enable_partial_images = "false", use_hard_links = "false", ostree_repos=""}
 | 
			
		||||
mount_program = "/usr/local/bin/overlayzfsmount"
 | 
			
		||||
 | 
			
		||||
[storage.options.overlay]
 | 
			
		||||
mountopt = "nodev"
 | 
			
		||||
EOF
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Podman"
 | 
			
		||||
$STD apt-get -y install podman
 | 
			
		||||
$STD systemctl enable --now podman.socket
 | 
			
		||||
echo -e 'unqualified-search-registries=["docker.io"]' >> /etc/containers/registries.conf
 | 
			
		||||
msg_ok "Installed Podman"
 | 
			
		||||
 | 
			
		||||
read -r -p "Would you like to add Portainer? <y/N> " prompt
 | 
			
		||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
 | 
			
		||||
  msg_info "Installing Portainer $PORTAINER_LATEST_VERSION"
 | 
			
		||||
  podman volume create portainer_data >/dev/null
 | 
			
		||||
  $STD podman run -d \
 | 
			
		||||
    -p 8000:8000 \
 | 
			
		||||
    -p 9443:9443 \
 | 
			
		||||
    --name=portainer \
 | 
			
		||||
    --restart=always \
 | 
			
		||||
    -v /run/podman/podman.sock:/var/run/docker.sock \
 | 
			
		||||
    -v portainer_data:/data \
 | 
			
		||||
    portainer/portainer-ce:latest
 | 
			
		||||
  msg_ok "Installed Portainer $PORTAINER_LATEST_VERSION"
 | 
			
		||||
else
 | 
			
		||||
  read -r -p "Would you like to add the Portainer Agent? <y/N> " prompt
 | 
			
		||||
  if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
 | 
			
		||||
    msg_info "Installing Portainer agent $PORTAINER_AGENT_LATEST_VERSION"
 | 
			
		||||
    podman volume create temp >/dev/null
 | 
			
		||||
    podman volume remove temp >/dev/null
 | 
			
		||||
    $STD podman run -d \
 | 
			
		||||
      -p 9001:9001 \
 | 
			
		||||
      --name portainer_agent \
 | 
			
		||||
      --restart=always \
 | 
			
		||||
      -v /run/podman/podman.sock:/var/run/docker.sock \
 | 
			
		||||
      -v /var/lib/containers/storage/volumes:/var/lib/docker/volumes \
 | 
			
		||||
      portainer/agent
 | 
			
		||||
    msg_ok "Installed Portainer Agent $PORTAINER_AGENT_LATEST_VERSION"
 | 
			
		||||
  fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -34,7 +34,7 @@ msg_ok "Installed Dependencies"
 | 
			
		||||
msg_info "Installing Node.js"
 | 
			
		||||
mkdir -p /etc/apt/keyrings
 | 
			
		||||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
 | 
			
		||||
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
 | 
			
		||||
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
 | 
			
		||||
$STD apt-get update
 | 
			
		||||
$STD apt-get install -y nodejs
 | 
			
		||||
$STD npm install -g pnpm@9.7.1
 | 
			
		||||
 
 | 
			
		||||
@@ -31,10 +31,6 @@
 | 
			
		||||
        "password": null
 | 
			
		||||
    },
 | 
			
		||||
    "notes": [
 | 
			
		||||
        {
 | 
			
		||||
            "text": "Doesn't work with ZFS",
 | 
			
		||||
            "type": "warning"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "text": "If the LXC is created Privileged, the script will automatically set up USB passthrough.",
 | 
			
		||||
            "type": "warning"
 | 
			
		||||
@@ -42,6 +38,10 @@
 | 
			
		||||
        {
 | 
			
		||||
            "text": "config path: `/var/lib/containers/storage/volumes/hass_config/_data`",
 | 
			
		||||
            "type": "info"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "text": "Options to Install Portainer or Portainer Agent",
 | 
			
		||||
            "type": "warning"
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
@@ -32,7 +32,7 @@
 | 
			
		||||
    },
 | 
			
		||||
    "notes": [
 | 
			
		||||
        {
 | 
			
		||||
            "text": "Doesn't work with ZFS",
 | 
			
		||||
            "text": "Options to Install Portainer or Portainer Agent",
 | 
			
		||||
            "type": "warning"
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user