mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-07-02 03:57:37 +00:00
Compare commits
1 Commits
2025-06-26
...
refactor_t
Author | SHA1 | Date | |
---|---|---|---|
4ae38cf6e4 |
37
CHANGELOG.md
37
CHANGELOG.md
@ -14,51 +14,14 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment.
|
||||
|
||||
|
||||
## 2025-06-27
|
||||
|
||||
## 2025-06-26
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- ConvertX ([#5484](https://github.com/community-scripts/ProxmoxVE/pull/5484))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- [tools] Update setup_nodejs function [@tremor021](https://github.com/tremor021) ([#5488](https://github.com/community-scripts/ProxmoxVE/pull/5488))
|
||||
- [tools] Fix setup_mongodb function [@tremor021](https://github.com/tremor021) ([#5486](https://github.com/community-scripts/ProxmoxVE/pull/5486))
|
||||
|
||||
## 2025-06-25
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Docmost: Increase resources [@tremor021](https://github.com/tremor021) ([#5458](https://github.com/community-scripts/ProxmoxVE/pull/5458))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- tools.func: new helper for imagemagick [@MickLesk](https://github.com/MickLesk) ([#5452](https://github.com/community-scripts/ProxmoxVE/pull/5452))
|
||||
- YunoHost: add Update-Function [@MickLesk](https://github.com/MickLesk) ([#5450](https://github.com/community-scripts/ProxmoxVE/pull/5450))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor: Tailscale [@MickLesk](https://github.com/MickLesk) ([#5454](https://github.com/community-scripts/ProxmoxVE/pull/5454))
|
||||
|
||||
### 🌐 Website
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Update Tooltips component to conditionally display updateable status based on item type [@BramSuurdje](https://github.com/BramSuurdje) ([#5461](https://github.com/community-scripts/ProxmoxVE/pull/5461))
|
||||
- Refactor CommandMenu to prevent duplicate scripts across categories [@BramSuurdje](https://github.com/BramSuurdje) ([#5463](https://github.com/community-scripts/ProxmoxVE/pull/5463))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Enhance InstallCommand component to support Gitea as an alternative source for installation scripts. [@BramSuurdje](https://github.com/BramSuurdje) ([#5464](https://github.com/community-scripts/ProxmoxVE/pull/5464))
|
||||
|
||||
- #### 📝 Script Information
|
||||
|
||||
- Website: mark VM's and "OS"-LXC's as updatable [@MickLesk](https://github.com/MickLesk) ([#5453](https://github.com/community-scripts/ProxmoxVE/pull/5453))
|
||||
|
||||
## 2025-06-24
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
@ -1,70 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: Omar Minaya | MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/C4illin/ConvertX
|
||||
|
||||
APP="ConvertX"
|
||||
var_tags="${var_tags:-converter}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-4096}"
|
||||
var_disk="${var_disk:-20}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /var ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/C4illin/ConvertX/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||
if [[ "${RELEASE}" != "$(cat ~/.convertx 2>/dev/null)" ]] || [[ ! -f ~/.convertx ]]; then
|
||||
msg_info "Stopping $APP"
|
||||
systemctl stop convertx
|
||||
msg_ok "Stopped $APP"
|
||||
|
||||
msg_info "Move data-Folder"
|
||||
if [[ -d /opt/convertx/data ]]; then
|
||||
mv /opt/convertx/data /opt/data
|
||||
fi
|
||||
msg_ok "Moved data-Folder"
|
||||
|
||||
fetch_and_deploy_gh_release "ConvertX" "C4illin/ConvertX" "tarball" "latest" "/opt/convertx"
|
||||
|
||||
msg_info "Updating $APP to v${RELEASE}"
|
||||
if [[ -d /opt/data ]]; then
|
||||
mv /opt/data /opt/convertx/data
|
||||
fi
|
||||
cd /opt/convertx
|
||||
$STD bun install
|
||||
msg_ok "Updated $APP to v${RELEASE}"
|
||||
|
||||
msg_info "Starting $APP"
|
||||
systemctl start convertx
|
||||
msg_ok "Started $APP"
|
||||
|
||||
msg_ok "Update Successful"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
@ -8,8 +8,8 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
||||
APP="Docmost"
|
||||
var_tags="${var_tags:-documents}"
|
||||
var_cpu="${var_cpu:-3}"
|
||||
var_ram="${var_ram:-4096}"
|
||||
var_disk="${var_disk:-8}"
|
||||
var_ram="${var_ram:-3072}"
|
||||
var_disk="${var_disk:-7}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
|
||||
|
@ -1,6 +0,0 @@
|
||||
______ __ _ __
|
||||
/ ____/___ ____ _ _____ _____/ /| |/ /
|
||||
/ / / __ \/ __ \ | / / _ \/ ___/ __/ /
|
||||
/ /___/ /_/ / / / / |/ / __/ / / /_/ |
|
||||
\____/\____/_/ /_/|___/\___/_/ \__/_/|_|
|
||||
|
@ -70,7 +70,6 @@ function update_script() {
|
||||
systemctl stop jellyseerr
|
||||
rm -rf dist .next node_modules
|
||||
export CYPRESS_INSTALL_BINARY=0
|
||||
cd /opt/jellyseer
|
||||
$STD pnpm install --frozen-lockfile
|
||||
export NODE_OPTIONS="--max-old-space-size=3072"
|
||||
$STD pnpm build
|
||||
|
2
frontend/public/json/alpine.json
generated
2
frontend/public/json/alpine.json
generated
@ -6,7 +6,7 @@
|
||||
],
|
||||
"date_created": "2024-05-02",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": null,
|
||||
"documentation": null,
|
||||
|
2
frontend/public/json/archlinux-vm.json
generated
2
frontend/public/json/archlinux-vm.json
generated
@ -6,7 +6,7 @@
|
||||
],
|
||||
"date_created": "2025-01-27",
|
||||
"type": "vm",
|
||||
"updateable": true,
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": null,
|
||||
"documentation": null,
|
||||
|
40
frontend/public/json/convertx.json
generated
40
frontend/public/json/convertx.json
generated
@ -1,40 +0,0 @@
|
||||
{
|
||||
"name": "ConvertX",
|
||||
"slug": "convertx",
|
||||
"categories": [
|
||||
9
|
||||
],
|
||||
"date_created": "2025-06-26",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"config_path": "/opt/convertx/.env",
|
||||
"interface_port": 3000,
|
||||
"documentation": "https://github.com/C4illin/ConvertX",
|
||||
"website": "https://github.com/C4illin/ConvertX",
|
||||
"logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/convertx.svg",
|
||||
"description": "ConvertX is a self-hosted online file converter supporting over 1000 formats, including images, audio, video, documents, and more, powered by FFmpeg, GraphicsMagick, and other libraries.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/convertx.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 4096,
|
||||
"hdd": 20,
|
||||
"os": "Debian",
|
||||
"version": "12"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "Complete setup via the web interface at http://<container-ip>:3000. Create and secure the admin account immediately.",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
2
frontend/public/json/debian-vm.json
generated
2
frontend/public/json/debian-vm.json
generated
@ -6,7 +6,7 @@
|
||||
],
|
||||
"date_created": "2024-05-02",
|
||||
"type": "vm",
|
||||
"updateable": true,
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": null,
|
||||
"documentation": null,
|
||||
|
66
frontend/public/json/debian.json
generated
66
frontend/public/json/debian.json
generated
@ -1,35 +1,35 @@
|
||||
{
|
||||
"name": "Debian",
|
||||
"slug": "debian",
|
||||
"categories": [
|
||||
2
|
||||
],
|
||||
"date_created": "2024-05-02",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": null,
|
||||
"documentation": null,
|
||||
"website": "https://www.debian.org/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/debian.webp",
|
||||
"config_path": "",
|
||||
"description": "Debian Linux is a distribution that emphasizes free software. It supports many hardware platforms.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/debian.sh",
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"hdd": 2,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": []
|
||||
"name": "Debian",
|
||||
"slug": "debian",
|
||||
"categories": [
|
||||
2
|
||||
],
|
||||
"date_created": "2024-05-02",
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": null,
|
||||
"documentation": null,
|
||||
"website": "https://www.debian.org/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/debian.webp",
|
||||
"config_path": "",
|
||||
"description": "Debian Linux is a distribution that emphasizes free software. It supports many hardware platforms.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/debian.sh",
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"hdd": 2,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": []
|
||||
}
|
||||
|
2
frontend/public/json/docker-vm.json
generated
2
frontend/public/json/docker-vm.json
generated
@ -7,7 +7,7 @@
|
||||
],
|
||||
"date_created": "2025-01-20",
|
||||
"type": "vm",
|
||||
"updateable": true,
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": null,
|
||||
"documentation": null,
|
||||
|
4
frontend/public/json/docmost.json
generated
4
frontend/public/json/docmost.json
generated
@ -20,8 +20,8 @@
|
||||
"script": "ct/docmost.sh",
|
||||
"resources": {
|
||||
"cpu": 3,
|
||||
"ram": 4096,
|
||||
"hdd": 8,
|
||||
"ram": 3072,
|
||||
"hdd": 7,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
82
frontend/public/json/haos-vm.json
generated
82
frontend/public/json/haos-vm.json
generated
@ -1,44 +1,44 @@
|
||||
{
|
||||
"name": "Home Assistant OS",
|
||||
"slug": "haos-vm",
|
||||
"categories": [
|
||||
16
|
||||
],
|
||||
"date_created": "2024-04-29",
|
||||
"type": "vm",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 8123,
|
||||
"documentation": "https://www.home-assistant.io/docs/",
|
||||
"website": "https://www.home-assistant.io/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/home-assistant.webp",
|
||||
"config_path": "",
|
||||
"description": "This script automates the process of creating a Virtual Machine (VM) using the official KVM (qcow2) disk image provided by the Home Assistant Team. It involves finding, downloading, and extracting the image, defining user-defined settings, importing and attaching the disk, setting the boot order, and starting the VM. It supports various storage types, and does not involve any hidden installations. After the script completes, click on the VM, then on the Summary tab to find the VM IP.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "vm/haos-vm.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 4096,
|
||||
"hdd": 32,
|
||||
"os": null,
|
||||
"version": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "The disk must have a minimum size of 32GB and its size cannot be changed during the creation of the VM.",
|
||||
"type": "warning"
|
||||
"name": "Home Assistant OS",
|
||||
"slug": "haos-vm",
|
||||
"categories": [
|
||||
16
|
||||
],
|
||||
"date_created": "2024-04-29",
|
||||
"type": "vm",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": 8123,
|
||||
"documentation": "https://www.home-assistant.io/docs/",
|
||||
"website": "https://www.home-assistant.io/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/home-assistant.webp",
|
||||
"config_path": "",
|
||||
"description": "This script automates the process of creating a Virtual Machine (VM) using the official KVM (qcow2) disk image provided by the Home Assistant Team. It involves finding, downloading, and extracting the image, defining user-defined settings, importing and attaching the disk, setting the boot order, and starting the VM. It supports various storage types, and does not involve any hidden installations. After the script completes, click on the VM, then on the Summary tab to find the VM IP.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "vm/haos-vm.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 4096,
|
||||
"hdd": 32,
|
||||
"os": null,
|
||||
"version": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
{
|
||||
"text": "After the script completes, click on the VM, then on the Summary or Console tab to find the VM IP.",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
"notes": [
|
||||
{
|
||||
"text": "The disk must have a minimum size of 32GB and its size cannot be changed during the creation of the VM.",
|
||||
"type": "warning"
|
||||
},
|
||||
{
|
||||
"text": "After the script completes, click on the VM, then on the Summary or Console tab to find the VM IP.",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
2
frontend/public/json/mikrotik-routeros.json
generated
2
frontend/public/json/mikrotik-routeros.json
generated
@ -7,7 +7,7 @@
|
||||
],
|
||||
"date_created": "2024-05-02",
|
||||
"type": "vm",
|
||||
"updateable": true,
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": null,
|
||||
"documentation": null,
|
||||
|
2
frontend/public/json/nextcloud-vm.json
generated
2
frontend/public/json/nextcloud-vm.json
generated
@ -6,7 +6,7 @@
|
||||
],
|
||||
"date_created": "2023-11-14",
|
||||
"type": "vm",
|
||||
"updateable": true,
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": 80,
|
||||
"documentation": null,
|
||||
|
2
frontend/public/json/openwrt.json
generated
2
frontend/public/json/openwrt.json
generated
@ -7,7 +7,7 @@
|
||||
],
|
||||
"date_created": "2024-05-02",
|
||||
"type": "vm",
|
||||
"updateable": true,
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": null,
|
||||
"documentation": null,
|
||||
|
2
frontend/public/json/opnsense-vm.json
generated
2
frontend/public/json/opnsense-vm.json
generated
@ -7,7 +7,7 @@
|
||||
],
|
||||
"date_created": "2025-02-11",
|
||||
"type": "vm",
|
||||
"updateable": true,
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": 443,
|
||||
"documentation": "https://docs.opnsense.org/",
|
||||
|
2
frontend/public/json/owncloud-vm.json
generated
2
frontend/public/json/owncloud-vm.json
generated
@ -6,7 +6,7 @@
|
||||
],
|
||||
"date_created": "2024-05-02",
|
||||
"type": "vm",
|
||||
"updateable": true,
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": 80,
|
||||
"documentation": null,
|
||||
|
76
frontend/public/json/pimox-haos-vm.json
generated
76
frontend/public/json/pimox-haos-vm.json
generated
@ -1,40 +1,40 @@
|
||||
{
|
||||
"name": "PiMox HAOS",
|
||||
"slug": "pimox-haos-vm",
|
||||
"categories": [
|
||||
16
|
||||
],
|
||||
"date_created": "2024-04-29",
|
||||
"type": "vm",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 8123,
|
||||
"documentation": null,
|
||||
"website": "https://github.com/jiangcuo/Proxmox-Port",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/home-assistant.webp",
|
||||
"config_path": "",
|
||||
"description": "The script automates the manual process of finding, downloading and extracting the aarch64 (qcow2) disk image provided by the Home Assistant Team, creating a VM with user defined settings, importing and attaching the disk, setting the boot order and starting the VM.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "vm/pimox-haos-vm.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 4096,
|
||||
"hdd": 32,
|
||||
"os": null,
|
||||
"version": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "After the script completes, click on the VM, then on the Summary or Console tab to find the VM IP.",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
"name": "PiMox HAOS",
|
||||
"slug": "pimox-haos-vm",
|
||||
"categories": [
|
||||
16
|
||||
],
|
||||
"date_created": "2024-04-29",
|
||||
"type": "vm",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": 8123,
|
||||
"documentation": null,
|
||||
"website": "https://github.com/jiangcuo/Proxmox-Port",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/home-assistant.webp",
|
||||
"config_path": "",
|
||||
"description": "The script automates the manual process of finding, downloading and extracting the aarch64 (qcow2) disk image provided by the Home Assistant Team, creating a VM with user defined settings, importing and attaching the disk, setting the boot order and starting the VM.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "vm/pimox-haos-vm.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 4096,
|
||||
"hdd": 32,
|
||||
"os": null,
|
||||
"version": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "After the script completes, click on the VM, then on the Summary or Console tab to find the VM IP.",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
2
frontend/public/json/postgresql.json
generated
2
frontend/public/json/postgresql.json
generated
@ -6,7 +6,7 @@
|
||||
],
|
||||
"date_created": "2024-05-02",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": 5432,
|
||||
"documentation": null,
|
||||
|
66
frontend/public/json/ubuntu.json
generated
66
frontend/public/json/ubuntu.json
generated
@ -1,35 +1,35 @@
|
||||
{
|
||||
"name": "Ubuntu",
|
||||
"slug": "ubuntu",
|
||||
"categories": [
|
||||
2
|
||||
],
|
||||
"date_created": "2024-05-02",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": null,
|
||||
"documentation": null,
|
||||
"website": "https://ubuntu.com/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/ubuntu.webp",
|
||||
"config_path": "",
|
||||
"description": "Ubuntu is a distribution based on Debian, designed to have regular releases and a consistent user experience.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/ubuntu.sh",
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"hdd": 2,
|
||||
"os": "ubuntu",
|
||||
"version": "24.04"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": []
|
||||
"name": "Ubuntu",
|
||||
"slug": "ubuntu",
|
||||
"categories": [
|
||||
2
|
||||
],
|
||||
"date_created": "2024-05-02",
|
||||
"type": "ct",
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": null,
|
||||
"documentation": null,
|
||||
"website": "https://ubuntu.com/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/ubuntu.webp",
|
||||
"config_path": "",
|
||||
"description": "Ubuntu is a distribution based on Debian, designed to have regular releases and a consistent user experience.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/ubuntu.sh",
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 512,
|
||||
"hdd": 2,
|
||||
"os": "ubuntu",
|
||||
"version": "24.04"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": []
|
||||
}
|
||||
|
2
frontend/public/json/ubuntu2204-vm.json
generated
2
frontend/public/json/ubuntu2204-vm.json
generated
@ -6,7 +6,7 @@
|
||||
],
|
||||
"date_created": "2024-05-02",
|
||||
"type": "vm",
|
||||
"updateable": true,
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": null,
|
||||
"documentation": null,
|
||||
|
2
frontend/public/json/ubuntu2404-vm.json
generated
2
frontend/public/json/ubuntu2404-vm.json
generated
@ -6,7 +6,7 @@
|
||||
],
|
||||
"date_created": "2024-05-02",
|
||||
"type": "vm",
|
||||
"updateable": true,
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": null,
|
||||
"documentation": null,
|
||||
|
2
frontend/public/json/ubuntu2410-vm.json
generated
2
frontend/public/json/ubuntu2410-vm.json
generated
@ -6,7 +6,7 @@
|
||||
],
|
||||
"date_created": "2025-01-24",
|
||||
"type": "vm",
|
||||
"updateable": true,
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": null,
|
||||
"documentation": null,
|
||||
|
2
frontend/public/json/ubuntu2504-vm.json
generated
2
frontend/public/json/ubuntu2504-vm.json
generated
@ -6,7 +6,7 @@
|
||||
],
|
||||
"date_created": "2025-06-19",
|
||||
"type": "vm",
|
||||
"updateable": true,
|
||||
"updateable": false,
|
||||
"privileged": false,
|
||||
"interface_port": null,
|
||||
"documentation": null,
|
||||
|
324
frontend/public/json/versions.json
generated
324
frontend/public/json/versions.json
generated
@ -1,169 +1,19 @@
|
||||
[
|
||||
{
|
||||
"name": "MediaBrowser/Emby.Releases",
|
||||
"version": "4.9.1.2",
|
||||
"date": "2025-06-26T22:08:00Z"
|
||||
},
|
||||
{
|
||||
"name": "prometheus/prometheus",
|
||||
"version": "v3.4.2",
|
||||
"date": "2025-06-26T21:45:21Z"
|
||||
},
|
||||
{
|
||||
"name": "home-assistant/operating-system",
|
||||
"version": "15.2",
|
||||
"date": "2025-04-14T15:37:12Z"
|
||||
},
|
||||
{
|
||||
"name": "netbox-community/netbox",
|
||||
"version": "v4.3.3",
|
||||
"date": "2025-06-26T18:42:56Z"
|
||||
},
|
||||
{
|
||||
"name": "home-assistant/core",
|
||||
"version": "2025.6.3",
|
||||
"date": "2025-06-24T13:00:12Z"
|
||||
},
|
||||
{
|
||||
"name": "ollama/ollama",
|
||||
"version": "v0.9.4-rc0",
|
||||
"date": "2025-06-26T17:32:48Z"
|
||||
},
|
||||
{
|
||||
"name": "apache/tika",
|
||||
"version": "3.2.1-rc2",
|
||||
"date": "2025-06-26T17:10:25Z"
|
||||
},
|
||||
{
|
||||
"name": "tailscale/tailscale",
|
||||
"version": "v1.84.3",
|
||||
"date": "2025-06-26T16:31:57Z"
|
||||
},
|
||||
{
|
||||
"name": "fuma-nama/fumadocs",
|
||||
"version": "fumadocs-ui@15.5.5",
|
||||
"date": "2025-06-26T15:54:17Z"
|
||||
},
|
||||
{
|
||||
"name": "traefik/traefik",
|
||||
"version": "v3.5.0-rc1",
|
||||
"date": "2025-06-26T15:08:43Z"
|
||||
},
|
||||
{
|
||||
"name": "meilisearch/meilisearch",
|
||||
"version": "prototype-no-simd-x86-arroy-0",
|
||||
"date": "2025-06-26T14:54:18Z"
|
||||
},
|
||||
{
|
||||
"name": "AdguardTeam/AdGuardHome",
|
||||
"version": "v0.107.63",
|
||||
"date": "2025-06-26T14:34:19Z"
|
||||
},
|
||||
{
|
||||
"name": "node-red/node-red",
|
||||
"version": "4.1.0-beta.2",
|
||||
"date": "2025-06-26T14:23:26Z"
|
||||
},
|
||||
{
|
||||
"name": "plexguide/Huntarr.io",
|
||||
"version": "8.1.9",
|
||||
"date": "2025-06-26T14:16:45Z"
|
||||
},
|
||||
{
|
||||
"name": "Dolibarr/dolibarr",
|
||||
"version": "18.0.7",
|
||||
"date": "2025-06-26T09:16:33Z"
|
||||
},
|
||||
{
|
||||
"name": "Jackett/Jackett",
|
||||
"version": "v0.22.2056",
|
||||
"date": "2025-06-26T05:51:50Z"
|
||||
},
|
||||
{
|
||||
"name": "firefly-iii/firefly-iii",
|
||||
"version": "v6.2.18",
|
||||
"date": "2025-06-20T04:45:37Z"
|
||||
},
|
||||
{
|
||||
"name": "mongodb/mongo",
|
||||
"version": "r8.1.2-rc1",
|
||||
"date": "2025-06-25T22:42:04Z"
|
||||
},
|
||||
{
|
||||
"name": "rcourtman/Pulse",
|
||||
"version": "v3.32.0",
|
||||
"date": "2025-06-25T22:27:01Z"
|
||||
},
|
||||
{
|
||||
"name": "gristlabs/grist-core",
|
||||
"version": "v1.6.1",
|
||||
"date": "2025-06-25T21:19:25Z"
|
||||
},
|
||||
{
|
||||
"name": "coder/code-server",
|
||||
"version": "v4.101.2",
|
||||
"date": "2025-06-25T21:18:52Z"
|
||||
},
|
||||
{
|
||||
"name": "msgbyte/tianji",
|
||||
"version": "v1.22.4",
|
||||
"date": "2025-06-25T20:46:20Z"
|
||||
},
|
||||
{
|
||||
"name": "influxdata/influxdb",
|
||||
"version": "v3.2.0",
|
||||
"date": "2025-06-25T17:31:48Z"
|
||||
},
|
||||
{
|
||||
"name": "keycloak/keycloak",
|
||||
"version": "26.2.5",
|
||||
"date": "2025-05-28T06:49:43Z"
|
||||
},
|
||||
{
|
||||
"name": "wavelog/wavelog",
|
||||
"version": "2.0.5",
|
||||
"date": "2025-06-25T14:53:31Z"
|
||||
},
|
||||
{
|
||||
"name": "jenkinsci/jenkins",
|
||||
"version": "jenkins-2.504.3",
|
||||
"date": "2025-06-25T14:43:01Z"
|
||||
},
|
||||
{
|
||||
"name": "bunkerity/bunkerweb",
|
||||
"version": "testing",
|
||||
"date": "2025-06-16T18:10:42Z"
|
||||
},
|
||||
{
|
||||
"name": "cockpit-project/cockpit",
|
||||
"version": "341",
|
||||
"date": "2025-06-25T11:49:28Z"
|
||||
},
|
||||
{
|
||||
"name": "nzbgetcom/nzbget",
|
||||
"version": "v25.0",
|
||||
"date": "2025-05-12T09:12:04Z"
|
||||
},
|
||||
{
|
||||
"name": "mattermost/mattermost",
|
||||
"version": "v9.11.17",
|
||||
"date": "2025-06-18T08:12:05Z"
|
||||
},
|
||||
{
|
||||
"name": "n8n-io/n8n",
|
||||
"version": "n8n@1.100.0",
|
||||
"date": "2025-06-23T12:48:35Z"
|
||||
},
|
||||
{
|
||||
"name": "moghtech/komodo",
|
||||
"version": "v1.18.4",
|
||||
"date": "2025-06-25T00:06:56Z"
|
||||
},
|
||||
{
|
||||
"name": "duplicati/duplicati",
|
||||
"version": "v2.1.0.120-2.1.0.120_canary_2025-06-24",
|
||||
"date": "2025-06-24T22:39:50Z"
|
||||
},
|
||||
{
|
||||
"name": "jenkinsci/jenkins",
|
||||
"version": "jenkins-2.516",
|
||||
"date": "2025-06-24T21:06:15Z"
|
||||
},
|
||||
{
|
||||
"name": "ollama/ollama",
|
||||
"version": "v0.9.3-rc1",
|
||||
"date": "2025-06-24T20:26:55Z"
|
||||
},
|
||||
{
|
||||
"name": "evcc-io/evcc",
|
||||
"version": "0.204.5",
|
||||
@ -189,26 +39,56 @@
|
||||
"version": "v2.37.3",
|
||||
"date": "2025-06-24T14:05:33Z"
|
||||
},
|
||||
{
|
||||
"name": "influxdata/influxdb",
|
||||
"version": "v3.2.0",
|
||||
"date": "2025-06-24T13:20:53Z"
|
||||
},
|
||||
{
|
||||
"name": "Checkmk/checkmk",
|
||||
"version": "v2.4.0p5",
|
||||
"date": "2025-06-24T13:06:53Z"
|
||||
},
|
||||
{
|
||||
"name": "home-assistant/core",
|
||||
"version": "2025.6.3",
|
||||
"date": "2025-06-24T13:00:12Z"
|
||||
},
|
||||
{
|
||||
"name": "rcourtman/Pulse",
|
||||
"version": "v3.31.2",
|
||||
"date": "2025-06-24T09:45:34Z"
|
||||
},
|
||||
{
|
||||
"name": "fallenbagel/jellyseerr",
|
||||
"version": "preview-fix-proxy-axios",
|
||||
"date": "2025-06-24T08:50:22Z"
|
||||
},
|
||||
{
|
||||
"name": "Jackett/Jackett",
|
||||
"version": "v0.22.2052",
|
||||
"date": "2025-06-24T05:59:30Z"
|
||||
},
|
||||
{
|
||||
"name": "wazuh/wazuh",
|
||||
"version": "coverity-w26-4.13.0",
|
||||
"date": "2025-06-24T02:02:34Z"
|
||||
},
|
||||
{
|
||||
"name": "meilisearch/meilisearch",
|
||||
"version": "prototype-incremental-vector-store-1",
|
||||
"date": "2025-06-23T21:37:47Z"
|
||||
},
|
||||
{
|
||||
"name": "minio/minio",
|
||||
"version": "RELEASE.2025-06-13T11-33-47Z",
|
||||
"date": "2025-06-23T20:58:42Z"
|
||||
},
|
||||
{
|
||||
"name": "keycloak/keycloak",
|
||||
"version": "26.2.5",
|
||||
"date": "2025-05-28T06:49:43Z"
|
||||
},
|
||||
{
|
||||
"name": "esphome/esphome",
|
||||
"version": "2025.6.1",
|
||||
@ -216,24 +96,44 @@
|
||||
},
|
||||
{
|
||||
"name": "runtipi/runtipi",
|
||||
"version": "nightly",
|
||||
"date": "2025-06-23T19:10:33Z"
|
||||
"version": "v4.2.1",
|
||||
"date": "2025-06-03T20:04:28Z"
|
||||
},
|
||||
{
|
||||
"name": "VictoriaMetrics/VictoriaMetrics",
|
||||
"version": "pmm-6401-v1.120.0",
|
||||
"date": "2025-06-23T15:12:12Z"
|
||||
},
|
||||
{
|
||||
"name": "n8n-io/n8n",
|
||||
"version": "n8n@1.98.2",
|
||||
"date": "2025-06-18T18:20:16Z"
|
||||
},
|
||||
{
|
||||
"name": "Graylog2/graylog2-server",
|
||||
"version": "6.3.0-rc.2",
|
||||
"date": "2025-06-23T11:31:38Z"
|
||||
},
|
||||
{
|
||||
"name": "mattermost/mattermost",
|
||||
"version": "v9.11.17",
|
||||
"date": "2025-06-18T08:12:05Z"
|
||||
},
|
||||
{
|
||||
"name": "firefly-iii/firefly-iii",
|
||||
"version": "v6.2.18",
|
||||
"date": "2025-06-20T04:45:37Z"
|
||||
},
|
||||
{
|
||||
"name": "gotson/komga",
|
||||
"version": "1.22.0",
|
||||
"date": "2025-06-23T03:11:37Z"
|
||||
},
|
||||
{
|
||||
"name": "plexguide/Huntarr.io",
|
||||
"version": "8.1.8",
|
||||
"date": "2025-06-23T00:21:30Z"
|
||||
},
|
||||
{
|
||||
"name": "OliveTin/OliveTin",
|
||||
"version": "2025.6.22",
|
||||
@ -249,11 +149,21 @@
|
||||
"version": "v1.4.1",
|
||||
"date": "2025-06-22T19:38:08Z"
|
||||
},
|
||||
{
|
||||
"name": "msgbyte/tianji",
|
||||
"version": "v1.22.3",
|
||||
"date": "2025-06-22T18:29:00Z"
|
||||
},
|
||||
{
|
||||
"name": "clusterzx/paperless-ai",
|
||||
"version": "v3.0.7",
|
||||
"date": "2025-06-22T17:49:29Z"
|
||||
},
|
||||
{
|
||||
"name": "fuma-nama/fumadocs",
|
||||
"version": "create-fumadocs-app@15.5.4",
|
||||
"date": "2025-06-22T13:12:24Z"
|
||||
},
|
||||
{
|
||||
"name": "TandoorRecipes/recipes",
|
||||
"version": "1.5.35",
|
||||
@ -294,6 +204,11 @@
|
||||
"version": "0.50.4",
|
||||
"date": "2025-06-21T07:47:02Z"
|
||||
},
|
||||
{
|
||||
"name": "coder/code-server",
|
||||
"version": "v4.101.1",
|
||||
"date": "2025-06-21T02:47:08Z"
|
||||
},
|
||||
{
|
||||
"name": "go-gitea/gitea",
|
||||
"version": "v1.24.2",
|
||||
@ -304,16 +219,36 @@
|
||||
"version": "v1.135.3",
|
||||
"date": "2025-06-20T20:19:20Z"
|
||||
},
|
||||
{
|
||||
"name": "apache/tika",
|
||||
"version": "3.2.1-rc1",
|
||||
"date": "2025-06-20T19:41:10Z"
|
||||
},
|
||||
{
|
||||
"name": "homarr-labs/homarr",
|
||||
"version": "v1.25.0",
|
||||
"date": "2025-06-20T19:15:43Z"
|
||||
},
|
||||
{
|
||||
"name": "mongodb/mongo",
|
||||
"version": "r8.1.2-rc0",
|
||||
"date": "2025-06-20T17:35:38Z"
|
||||
},
|
||||
{
|
||||
"name": "nzbgetcom/nzbget",
|
||||
"version": "v25.0",
|
||||
"date": "2025-05-12T09:12:04Z"
|
||||
},
|
||||
{
|
||||
"name": "Sonarr/Sonarr",
|
||||
"version": "v4.0.15.2941",
|
||||
"date": "2025-06-20T17:20:54Z"
|
||||
},
|
||||
{
|
||||
"name": "bunkerity/bunkerweb",
|
||||
"version": "testing",
|
||||
"date": "2025-06-16T18:10:42Z"
|
||||
},
|
||||
{
|
||||
"name": "zabbix/zabbix",
|
||||
"version": "7.2.9",
|
||||
@ -484,6 +419,16 @@
|
||||
"version": "v8.1.16",
|
||||
"date": "2025-06-16T13:49:37Z"
|
||||
},
|
||||
{
|
||||
"name": "home-assistant/operating-system",
|
||||
"version": "15.2",
|
||||
"date": "2025-04-14T15:37:12Z"
|
||||
},
|
||||
{
|
||||
"name": "moghtech/komodo",
|
||||
"version": "v1.18.3",
|
||||
"date": "2025-06-16T07:03:46Z"
|
||||
},
|
||||
{
|
||||
"name": "jellyfin/jellyfin",
|
||||
"version": "v10.10.7",
|
||||
@ -574,6 +519,11 @@
|
||||
"version": "v1.12.0-rc.4",
|
||||
"date": "2025-06-12T00:27:41Z"
|
||||
},
|
||||
{
|
||||
"name": "MediaBrowser/Emby.Releases",
|
||||
"version": "4.8.11.0",
|
||||
"date": "2025-03-10T06:39:11Z"
|
||||
},
|
||||
{
|
||||
"name": "autobrr/autobrr",
|
||||
"version": "v1.63.1",
|
||||
@ -589,6 +539,16 @@
|
||||
"version": "v0.15.0-rc2",
|
||||
"date": "2025-06-11T04:29:22Z"
|
||||
},
|
||||
{
|
||||
"name": "node-red/node-red",
|
||||
"version": "4.1.0-beta.1",
|
||||
"date": "2025-06-10T15:47:59Z"
|
||||
},
|
||||
{
|
||||
"name": "AdguardTeam/AdGuardHome",
|
||||
"version": "v0.107.62",
|
||||
"date": "2025-05-27T12:10:19Z"
|
||||
},
|
||||
{
|
||||
"name": "OctoPrint/OctoPrint",
|
||||
"version": "1.11.2",
|
||||
@ -599,6 +559,11 @@
|
||||
"version": "v0.8.4",
|
||||
"date": "2025-06-10T07:57:14Z"
|
||||
},
|
||||
{
|
||||
"name": "tailscale/tailscale",
|
||||
"version": "v1.84.2",
|
||||
"date": "2025-06-09T23:43:27Z"
|
||||
},
|
||||
{
|
||||
"name": "Brandawg93/PeaNUT",
|
||||
"version": "v5.8.0",
|
||||
@ -654,6 +619,11 @@
|
||||
"version": "10.1.42",
|
||||
"date": "2025-06-05T22:39:40Z"
|
||||
},
|
||||
{
|
||||
"name": "netbox-community/netbox",
|
||||
"version": "v4.3.2",
|
||||
"date": "2025-06-05T19:57:01Z"
|
||||
},
|
||||
{
|
||||
"name": "benjaminjonard/koillection",
|
||||
"version": "1.6.14",
|
||||
@ -679,6 +649,11 @@
|
||||
"version": "v4.1.1",
|
||||
"date": "2025-06-04T19:10:05Z"
|
||||
},
|
||||
{
|
||||
"name": "cockpit-project/cockpit",
|
||||
"version": "340",
|
||||
"date": "2025-06-04T16:41:44Z"
|
||||
},
|
||||
{
|
||||
"name": "intri-in/manage-my-damn-life-nextjs",
|
||||
"version": "v0.7.1",
|
||||
@ -719,6 +694,11 @@
|
||||
"version": "v5.18.1",
|
||||
"date": "2025-05-31T23:06:08Z"
|
||||
},
|
||||
{
|
||||
"name": "prometheus/prometheus",
|
||||
"version": "v3.4.1",
|
||||
"date": "2025-05-31T13:45:40Z"
|
||||
},
|
||||
{
|
||||
"name": "blakeblackshear/frigate",
|
||||
"version": "v0.14.1",
|
||||
@ -734,6 +714,11 @@
|
||||
"version": "0.26.3",
|
||||
"date": "2025-05-29T21:18:15Z"
|
||||
},
|
||||
{
|
||||
"name": "gristlabs/grist-core",
|
||||
"version": "v1.6.0",
|
||||
"date": "2025-05-29T19:11:21Z"
|
||||
},
|
||||
{
|
||||
"name": "navidrome/navidrome",
|
||||
"version": "v0.56.1",
|
||||
@ -764,6 +749,11 @@
|
||||
"version": "1.2.34",
|
||||
"date": "2025-05-27T18:18:00Z"
|
||||
},
|
||||
{
|
||||
"name": "traefik/traefik",
|
||||
"version": "v3.4.1",
|
||||
"date": "2025-05-27T12:53:58Z"
|
||||
},
|
||||
{
|
||||
"name": "dani-garcia/vaultwarden",
|
||||
"version": "1.34.1",
|
||||
@ -834,6 +824,16 @@
|
||||
"version": "v1.1.1",
|
||||
"date": "2025-05-17T10:10:36Z"
|
||||
},
|
||||
{
|
||||
"name": "wavelog/wavelog",
|
||||
"version": "2.0.4",
|
||||
"date": "2025-05-16T15:09:53Z"
|
||||
},
|
||||
{
|
||||
"name": "Dolibarr/dolibarr",
|
||||
"version": "18.0.7",
|
||||
"date": "2025-05-15T08:24:30Z"
|
||||
},
|
||||
{
|
||||
"name": "Ombi-app/Ombi",
|
||||
"version": "v4.47.1",
|
||||
|
@ -1,20 +1,17 @@
|
||||
import CodeCopyButton from "@/components/ui/code-copy-button";
|
||||
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
|
||||
import { Alert, AlertDescription } from "@/components/ui/alert";
|
||||
import { Info } from "lucide-react";
|
||||
import { basePath } from "@/config/siteConfig";
|
||||
import { Script } from "@/lib/types";
|
||||
import { getDisplayValueFromType } from "../ScriptInfoBlocks";
|
||||
|
||||
const getInstallCommand = (scriptPath = "", isAlpine = false, useGitea = false) => {
|
||||
const githubUrl = `https://raw.githubusercontent.com/community-scripts/${basePath}/main/${scriptPath}`;
|
||||
const giteaUrl = `https://git.community-scripts.org/community-scripts/${basePath}/raw/branch/main/${scriptPath}`;
|
||||
const url = useGitea ? giteaUrl : githubUrl;
|
||||
return `bash -c "$(curl -fsSL ${url})"`;
|
||||
const getInstallCommand = (scriptPath = "", isAlpine = false) => {
|
||||
const url = `https://raw.githubusercontent.com/community-scripts/${basePath}/main/${scriptPath}`;
|
||||
return isAlpine ? `bash -c "$(curl -fsSL ${url})"` : `bash -c "$(curl -fsSL ${url})"`;
|
||||
};
|
||||
|
||||
export default function InstallCommand({ item }: { item: Script }) {
|
||||
const alpineScript = item.install_methods.find((method) => method.type === "alpine");
|
||||
|
||||
const defaultScript = item.install_methods.find((method) => method.type === "default");
|
||||
|
||||
const renderInstructions = (isAlpine = false) => (
|
||||
@ -52,20 +49,9 @@ export default function InstallCommand({ item }: { item: Script }) {
|
||||
</>
|
||||
);
|
||||
|
||||
const renderGiteaInfo = () => (
|
||||
<Alert className="mt-3 mb-3">
|
||||
<Info className="h-4 w-4" />
|
||||
<AlertDescription className="text-sm">
|
||||
<strong>When to use Gitea:</strong> GitHub may have issues including slow connections, delayed updates after bug
|
||||
fixes, no IPv6 support, API rate limits (60/hour). Use our Gitea mirror as a reliable alternative when
|
||||
experiencing these issues.
|
||||
</AlertDescription>
|
||||
</Alert>
|
||||
);
|
||||
|
||||
const renderScriptTabs = (useGitea = false) => {
|
||||
if (alpineScript) {
|
||||
return (
|
||||
return (
|
||||
<div className="p-4">
|
||||
{alpineScript ? (
|
||||
<Tabs defaultValue="default" className="mt-2 w-full max-w-4xl">
|
||||
<TabsList>
|
||||
<TabsTrigger value="default">Default</TabsTrigger>
|
||||
@ -73,40 +59,19 @@ export default function InstallCommand({ item }: { item: Script }) {
|
||||
</TabsList>
|
||||
<TabsContent value="default">
|
||||
{renderInstructions()}
|
||||
<CodeCopyButton>{getInstallCommand(defaultScript?.script, false, useGitea)}</CodeCopyButton>
|
||||
<CodeCopyButton>{getInstallCommand(defaultScript?.script)}</CodeCopyButton>
|
||||
</TabsContent>
|
||||
<TabsContent value="alpine">
|
||||
{renderInstructions(true)}
|
||||
<CodeCopyButton>{getInstallCommand(alpineScript.script, true, useGitea)}</CodeCopyButton>
|
||||
<CodeCopyButton>{getInstallCommand(alpineScript.script, true)}</CodeCopyButton>
|
||||
</TabsContent>
|
||||
</Tabs>
|
||||
);
|
||||
} else if (defaultScript?.script) {
|
||||
return (
|
||||
) : defaultScript?.script ? (
|
||||
<>
|
||||
{renderInstructions()}
|
||||
<CodeCopyButton>{getInstallCommand(defaultScript.script, false, useGitea)}</CodeCopyButton>
|
||||
<CodeCopyButton>{getInstallCommand(defaultScript.script)}</CodeCopyButton>
|
||||
</>
|
||||
);
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="p-4">
|
||||
<Tabs defaultValue="github" className="w-full max-w-4xl">
|
||||
<TabsList>
|
||||
<TabsTrigger value="github">GitHub</TabsTrigger>
|
||||
<TabsTrigger value="gitea">Gitea</TabsTrigger>
|
||||
</TabsList>
|
||||
<TabsContent value="github">
|
||||
{renderScriptTabs(false)}
|
||||
</TabsContent>
|
||||
<TabsContent value="gitea">
|
||||
{renderGiteaInfo()}
|
||||
{renderScriptTabs(true)}
|
||||
</TabsContent>
|
||||
</Tabs>
|
||||
) : null}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -34,14 +34,14 @@ export default function Tooltips({ item }: { item: Script }) {
|
||||
{item.privileged && (
|
||||
<TooltipBadge variant="warning" label="Privileged" content="This script will be run in a privileged LXC" />
|
||||
)}
|
||||
{(item.updateable || item.type !== "pve") && (
|
||||
{item.updateable && (
|
||||
<TooltipBadge
|
||||
variant="success"
|
||||
label="Updateable"
|
||||
content={`To Update ${item.name}, run the command below (or type update) in the LXC Console.`}
|
||||
/>
|
||||
)}
|
||||
{!item.updateable && item.type !== "pve" && <TooltipBadge variant="failure" label="Not Updateable" />}
|
||||
{!item.updateable && <TooltipBadge variant="failure" label="Not Updateable" />}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
@ -134,54 +134,34 @@ export default function CommandMenu() {
|
||||
<CommandInput placeholder="Search for a script..." />
|
||||
<CommandList>
|
||||
<CommandEmpty>{isLoading ? "Loading..." : "No scripts found."}</CommandEmpty>
|
||||
{(() => {
|
||||
// Track seen scripts globally to avoid duplicates across all categories
|
||||
const globalSeenScripts = new Set<string>();
|
||||
|
||||
return links.map((category) => {
|
||||
const uniqueScripts = category.scripts.filter((script) => {
|
||||
if (globalSeenScripts.has(script.slug)) {
|
||||
return false;
|
||||
}
|
||||
globalSeenScripts.add(script.slug);
|
||||
return true;
|
||||
});
|
||||
|
||||
// Only render category if it has unique scripts
|
||||
if (uniqueScripts.length === 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (
|
||||
<CommandGroup key={`category:${category.name}`} heading={category.name}>
|
||||
{uniqueScripts.map((script) => (
|
||||
<CommandItem
|
||||
key={`script:${script.slug}`}
|
||||
value={`${script.slug}-${script.name}`}
|
||||
onSelect={() => {
|
||||
setOpen(false);
|
||||
router.push(`/scripts?id=${script.slug}`);
|
||||
}}
|
||||
>
|
||||
<div className="flex gap-2" onClick={() => setOpen(false)}>
|
||||
<Image
|
||||
src={script.logo || `/${basePath}/logo.png`}
|
||||
onError={(e) => ((e.currentTarget as HTMLImageElement).src = `/${basePath}/logo.png`)}
|
||||
unoptimized
|
||||
width={16}
|
||||
height={16}
|
||||
alt=""
|
||||
className="h-5 w-5"
|
||||
/>
|
||||
<span>{script.name}</span>
|
||||
<span>{formattedBadge(script.type)}</span>
|
||||
</div>
|
||||
</CommandItem>
|
||||
))}
|
||||
</CommandGroup>
|
||||
);
|
||||
});
|
||||
})()}
|
||||
{links.map((category) => (
|
||||
<CommandGroup key={`category:${category.name}`} heading={category.name}>
|
||||
{category.scripts.map((script) => (
|
||||
<CommandItem
|
||||
key={`script:${script.slug}`}
|
||||
value={`${script.slug}-${script.name}`}
|
||||
onSelect={() => {
|
||||
setOpen(false);
|
||||
router.push(`/scripts?id=${script.slug}`);
|
||||
}}
|
||||
>
|
||||
<div className="flex gap-2" onClick={() => setOpen(false)}>
|
||||
<Image
|
||||
src={script.logo || `/${basePath}/logo.png`}
|
||||
onError={(e) => ((e.currentTarget as HTMLImageElement).src = `/${basePath}/logo.png`)}
|
||||
unoptimized
|
||||
width={16}
|
||||
height={16}
|
||||
alt=""
|
||||
className="h-5 w-5"
|
||||
/>
|
||||
<span>{script.name}</span>
|
||||
<span>{formattedBadge(script.type)}</span>
|
||||
</div>
|
||||
</CommandItem>
|
||||
))}
|
||||
</CommandGroup>
|
||||
))}
|
||||
</CommandList>
|
||||
</CommandDialog>
|
||||
</>
|
||||
|
@ -1,82 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: Omar Minaya | MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/C4illin/ConvertX
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
setup_imagemagick
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y \
|
||||
assimp-utils \
|
||||
calibre \
|
||||
dcraw \
|
||||
dvisvgm \
|
||||
ffmpeg \
|
||||
inkscape \
|
||||
libva2 \
|
||||
libvips-tools \
|
||||
lmodern \
|
||||
mupdf-tools \
|
||||
pandoc \
|
||||
poppler-utils \
|
||||
potrace \
|
||||
python3-numpy \
|
||||
texlive \
|
||||
texlive-fonts-recommended \
|
||||
texlive-latex-extra \
|
||||
texlive-latex-recommended \
|
||||
texlive-xetex
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION=22 NODE_MODULE="bun" setup_nodejs
|
||||
fetch_and_deploy_gh_release "ConvertX" "C4illin/ConvertX" "tarball" "latest" "/opt/convertx"
|
||||
|
||||
msg_info "Installing ConvertX"
|
||||
cd /opt/convertx
|
||||
mkdir -p data
|
||||
$STD bun install
|
||||
|
||||
JWT_SECRET=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | head -c 32)
|
||||
cat <<EOF >/opt/convertx/.env
|
||||
JWT_SECRET=$JWT_SECRET
|
||||
HTTP_ALLOWED=true
|
||||
PORT=3000
|
||||
EOF
|
||||
msg_ok "Installed ConvertX"
|
||||
|
||||
msg_info "Creating Services"
|
||||
cat <<EOF >/etc/systemd/system/convertx.service
|
||||
[Unit]
|
||||
Description=ConvertX File Converter
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=exec
|
||||
WorkingDirectory=/opt/convertx
|
||||
EnvironmentFile=/opt/convertx/.env
|
||||
ExecStart=/bin/bun dev
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now convertx
|
||||
msg_ok "Service Created"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
@ -128,7 +128,7 @@ update_os() {
|
||||
msg_info "Updating Container OS"
|
||||
if [[ "$CACHER" == "yes" ]]; then
|
||||
echo "Acquire::http::Proxy-Auto-Detect \"/usr/local/bin/apt-proxy-detect.sh\";" >/etc/apt/apt.conf.d/00aptproxy
|
||||
cat <<'EOF' >/usr/local/bin/apt-proxy-detect.sh
|
||||
cat <<EOF >/usr/local/bin/apt-proxy-detect.sh
|
||||
#!/bin/bash
|
||||
if nc -w1 -z "${CACHER_IP}" 3142; then
|
||||
echo -n "http://${CACHER_IP}:3142"
|
||||
|
@ -67,21 +67,14 @@ function setup_nodejs() {
|
||||
# Update to latest npm
|
||||
$STD npm install -g npm@latest || {
|
||||
msg_error "Failed to update npm to latest version"
|
||||
exit 1
|
||||
}
|
||||
|
||||
msg_ok "Setup Node.js ${NODE_VERSION}"
|
||||
fi
|
||||
|
||||
export NODE_OPTIONS="--max-old-space-size=4096"
|
||||
|
||||
# Ensure valid working directory for npm (avoids uv_cwd error)
|
||||
if [[ ! -d /opt ]]; then
|
||||
mkdir -p /opt
|
||||
fi
|
||||
cd /opt || {
|
||||
msg_error "Failed to set safe working directory before npm install"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Install global Node modules
|
||||
if [[ -n "$NODE_MODULE" ]]; then
|
||||
IFS=',' read -ra MODULES <<<"$NODE_MODULE"
|
||||
@ -650,14 +643,8 @@ function setup_mongodb() {
|
||||
DISTRO_CODENAME=$(awk -F= '/^VERSION_CODENAME=/{ print $2 }' /etc/os-release)
|
||||
|
||||
case "$DISTRO_ID" in
|
||||
ubuntu)
|
||||
MONGO_BASE_URL="https://repo.mongodb.org/apt/ubuntu"
|
||||
REPO_COMPONENT="multiverse"
|
||||
;;
|
||||
debian)
|
||||
MONGO_BASE_URL="https://repo.mongodb.org/apt/debian"
|
||||
REPO_COMPONENT="main"
|
||||
;;
|
||||
ubuntu) MONGO_BASE_URL="https://repo.mongodb.org/apt/ubuntu" ;;
|
||||
debian) MONGO_BASE_URL="https://repo.mongodb.org/apt/debian" ;;
|
||||
*)
|
||||
msg_error "Unsupported distribution: $DISTRO_ID"
|
||||
return 1
|
||||
@ -689,7 +676,7 @@ function setup_mongodb() {
|
||||
fi
|
||||
|
||||
curl -fsSL "https://pgp.mongodb.com/server-${MONGO_VERSION}.asc" | gpg --dearmor -o "/etc/apt/trusted.gpg.d/mongodb-${MONGO_VERSION}.gpg"
|
||||
echo "deb [signed-by=/etc/apt/trusted.gpg.d/mongodb-${MONGO_VERSION}.gpg] ${MONGO_BASE_URL} ${DISTRO_CODENAME}/mongodb-org/${MONGO_VERSION} ${REPO_COMPONENT}" \
|
||||
echo "deb [signed-by=/etc/apt/trusted.gpg.d/mongodb-${MONGO_VERSION}.gpg] ${MONGO_BASE_URL} ${DISTRO_CODENAME}/mongodb-org/${MONGO_VERSION} main" \
|
||||
>"$REPO_LIST"
|
||||
|
||||
$STD apt-get update || {
|
||||
@ -1551,73 +1538,3 @@ function setup_yq() {
|
||||
msg_error "yq installation incomplete or version mismatch"
|
||||
fi
|
||||
}
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Installs ImageMagick 7 from source (Debian/Ubuntu only).
|
||||
#
|
||||
# Description:
|
||||
# - Downloads the latest ImageMagick source tarball
|
||||
# - Builds and installs ImageMagick to /usr/local
|
||||
# - Configures dynamic linker (ldconfig)
|
||||
#
|
||||
# Notes:
|
||||
# - Requires: build-essential, libtool, libjpeg-dev, libpng-dev, etc.
|
||||
# ------------------------------------------------------------------------------
|
||||
function setup_imagemagick() {
|
||||
local TMP_DIR
|
||||
TMP_DIR=$(mktemp -d)
|
||||
local VERSION=""
|
||||
local BINARY_PATH="/usr/local/bin/magick"
|
||||
|
||||
if command -v magick &>/dev/null; then
|
||||
VERSION=$(magick -version | awk '/^Version/ {print $3}')
|
||||
msg_ok "ImageMagick already installed ($VERSION)"
|
||||
return 0
|
||||
fi
|
||||
|
||||
msg_info "Setup ImageMagick (Patience)"
|
||||
$STD apt-get update
|
||||
$STD apt-get install -y \
|
||||
build-essential \
|
||||
libtool \
|
||||
libjpeg-dev \
|
||||
libpng-dev \
|
||||
libtiff-dev \
|
||||
libwebp-dev \
|
||||
libheif-dev \
|
||||
libde265-dev \
|
||||
libopenjp2-7-dev \
|
||||
libxml2-dev \
|
||||
liblcms2-dev \
|
||||
libfreetype6-dev \
|
||||
libraw-dev \
|
||||
libfftw3-dev \
|
||||
liblqr-1-0-dev \
|
||||
libgsl-dev \
|
||||
pkg-config \
|
||||
ghostscript
|
||||
|
||||
curl -fsSL https://imagemagick.org/archive/ImageMagick.tar.gz -o "$TMP_DIR/ImageMagick.tar.gz"
|
||||
tar -xzf "$TMP_DIR/ImageMagick.tar.gz" -C "$TMP_DIR"
|
||||
cd "$TMP_DIR"/ImageMagick-* || {
|
||||
msg_error "Source extraction failed"
|
||||
rm -rf "$TMP_DIR"
|
||||
return 1
|
||||
}
|
||||
|
||||
./configure --disable-static >/dev/null
|
||||
$STD make
|
||||
$STD make install
|
||||
$STD ldconfig /usr/local/lib
|
||||
|
||||
if [[ ! -x "$BINARY_PATH" ]]; then
|
||||
msg_error "ImageMagick installation failed"
|
||||
rm -rf "$TMP_DIR"
|
||||
return 1
|
||||
fi
|
||||
|
||||
VERSION=$("$BINARY_PATH" -version | awk '/^Version/ {print $3}')
|
||||
rm -rf "$TMP_DIR"
|
||||
ensure_usr_local_bin_persist
|
||||
msg_ok "Setup ImageMagick $VERSION"
|
||||
}
|
||||
|
Reference in New Issue
Block a user