forked from forkanization/Proxmox-arm64
Compare commits
3 Commits
main
...
fix-update
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1611df15b0 | ||
|
|
a74611e979 | ||
|
|
f0478feb12 |
@@ -1,16 +0,0 @@
|
|||||||
; editorconfig.org
|
|
||||||
root = true
|
|
||||||
|
|
||||||
[*]
|
|
||||||
charset = utf-8
|
|
||||||
continuation_indent_size = 2
|
|
||||||
end_of_line = lf
|
|
||||||
indent_size = 2
|
|
||||||
indent_style = space
|
|
||||||
insert_final_newline = true
|
|
||||||
max_line_length = 120
|
|
||||||
tab_width = 2
|
|
||||||
; trim_trailing_whitespace = true ; disabled until files are cleaned up
|
|
||||||
|
|
||||||
[*.md]
|
|
||||||
trim_trailing_whitespace = false
|
|
||||||
38
.gitattributes
vendored
38
.gitattributes
vendored
@@ -1,38 +0,0 @@
|
|||||||
# ---------------------------------------
|
|
||||||
# Treat Shell files as first-class code
|
|
||||||
# ---------------------------------------
|
|
||||||
*.sh linguist-detectable=true
|
|
||||||
*.bash linguist-language=Shell
|
|
||||||
*.func linguist-language=Shell
|
|
||||||
*.install linguist-language=Shell
|
|
||||||
|
|
||||||
# ---------------------------------------
|
|
||||||
# Treat Golang files as Go (for /api/)
|
|
||||||
api/**/*.go linguist-language=Go
|
|
||||||
|
|
||||||
# ---------------------------------------
|
|
||||||
# Treat frontend as JavaScript/TypeScript (optional)
|
|
||||||
frontend/**/*.ts linguist-language=TypeScript
|
|
||||||
frontend/**/*.js linguist-language=JavaScript
|
|
||||||
|
|
||||||
# ---------------------------------------
|
|
||||||
# Exclude documentation from stats
|
|
||||||
*.md linguist-documentation
|
|
||||||
docs/** linguist-documentation
|
|
||||||
README.md linguist-documentation
|
|
||||||
CONTRIBUTING.md linguist-documentation
|
|
||||||
SECURITY.md linguist-documentation
|
|
||||||
|
|
||||||
# ---------------------------------------
|
|
||||||
# Exclude generated/config files
|
|
||||||
*.json linguist-generated
|
|
||||||
frontend/public/json/*.json linguist-generated=false
|
|
||||||
*.lock linguist-generated
|
|
||||||
*.yml linguist-generated
|
|
||||||
*.yaml linguist-generated
|
|
||||||
.github/** linguist-generated
|
|
||||||
.vscode/** linguist-generated
|
|
||||||
|
|
||||||
# ---------------------------------------
|
|
||||||
# Standard text handling
|
|
||||||
* text=auto eol=lf
|
|
||||||
15
.github/CODEOWNERS
vendored
15
.github/CODEOWNERS
vendored
@@ -1,15 +0,0 @@
|
|||||||
#
|
|
||||||
# CODEOWNERS for ProxmoxVE
|
|
||||||
#
|
|
||||||
|
|
||||||
# Order is important; the last matching pattern takes the most
|
|
||||||
# precedence.
|
|
||||||
|
|
||||||
|
|
||||||
# Codeowners for specific folders and files
|
|
||||||
# Remember ending folders with /
|
|
||||||
|
|
||||||
|
|
||||||
# Set default reviewers
|
|
||||||
* @asylumexp
|
|
||||||
|
|
||||||
132
.github/CODE_OF_CONDUCT.md
vendored
Normal file
132
.github/CODE_OF_CONDUCT.md
vendored
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
|
||||||
|
# Contributor Covenant Code of Conduct
|
||||||
|
|
||||||
|
## Our Pledge
|
||||||
|
|
||||||
|
We as members, contributors, and leaders pledge to make participation in our
|
||||||
|
community a harassment-free experience for everyone, regardless of age, body
|
||||||
|
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||||
|
identity and expression, level of experience, education, socio-economic status,
|
||||||
|
nationality, personal appearance, race, religion, or sexual identity
|
||||||
|
and orientation.
|
||||||
|
|
||||||
|
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||||
|
diverse, inclusive, and healthy community.
|
||||||
|
|
||||||
|
## Our Standards
|
||||||
|
|
||||||
|
Examples of behavior that contributes to a positive environment for our
|
||||||
|
community include:
|
||||||
|
|
||||||
|
* Demonstrating empathy and kindness toward other people
|
||||||
|
* Being respectful of differing opinions, viewpoints, and experiences
|
||||||
|
* Giving and gracefully accepting constructive feedback
|
||||||
|
* Accepting responsibility and apologizing to those affected by our mistakes,
|
||||||
|
and learning from the experience
|
||||||
|
* Focusing on what is best not just for us as individuals, but for the
|
||||||
|
overall community
|
||||||
|
|
||||||
|
Examples of unacceptable behavior include:
|
||||||
|
|
||||||
|
* The use of sexualized language or imagery, and sexual attention or
|
||||||
|
advances of any kind
|
||||||
|
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||||
|
* Public or private harassment
|
||||||
|
* Publishing others' private information, such as a physical or email
|
||||||
|
address, without their explicit permission
|
||||||
|
* Other conduct which could reasonably be considered inappropriate in a
|
||||||
|
professional setting
|
||||||
|
|
||||||
|
## Enforcement Responsibilities
|
||||||
|
|
||||||
|
Community leaders are responsible for clarifying and enforcing our standards of
|
||||||
|
acceptable behavior and will take appropriate and fair corrective action in
|
||||||
|
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||||
|
or harmful.
|
||||||
|
|
||||||
|
Community leaders have the right and responsibility to remove, edit, or reject
|
||||||
|
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||||
|
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||||
|
decisions when appropriate.
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
|
||||||
|
This Code of Conduct applies within all community spaces, and also applies when
|
||||||
|
an individual is officially representing the community in public spaces.
|
||||||
|
Examples of representing our community include using an official e-mail address,
|
||||||
|
posting via an official social media account, or acting as an appointed
|
||||||
|
representative at an online or offline event.
|
||||||
|
|
||||||
|
## Enforcement
|
||||||
|
|
||||||
|
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||||
|
reported to the community leaders responsible for enforcement.
|
||||||
|
All complaints will be reviewed and investigated promptly and fairly.
|
||||||
|
|
||||||
|
All community leaders are obligated to respect the privacy and security of the
|
||||||
|
reporter of any incident.
|
||||||
|
|
||||||
|
## Enforcement Guidelines
|
||||||
|
|
||||||
|
Community leaders will follow these Community Impact Guidelines in determining
|
||||||
|
the consequences for any action they deem in violation of this Code of Conduct:
|
||||||
|
|
||||||
|
### 1. Correction
|
||||||
|
|
||||||
|
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||||
|
unprofessional or unwelcome in the community.
|
||||||
|
|
||||||
|
**Consequence**: A private, written warning from community leaders, providing
|
||||||
|
clarity around the nature of the violation and an explanation of why the
|
||||||
|
behavior was inappropriate. A public apology may be requested.
|
||||||
|
|
||||||
|
### 2. Warning
|
||||||
|
|
||||||
|
**Community Impact**: A violation through a single incident or series
|
||||||
|
of actions.
|
||||||
|
|
||||||
|
**Consequence**: A warning with consequences for continued behavior. No
|
||||||
|
interaction with the people involved, including unsolicited interaction with
|
||||||
|
those enforcing the Code of Conduct, for a specified period of time. This
|
||||||
|
includes avoiding interactions in community spaces as well as external channels
|
||||||
|
like social media. Violating these terms may lead to a temporary or
|
||||||
|
permanent ban.
|
||||||
|
|
||||||
|
### 3. Temporary Ban
|
||||||
|
|
||||||
|
**Community Impact**: A serious violation of community standards, including
|
||||||
|
sustained inappropriate behavior.
|
||||||
|
|
||||||
|
**Consequence**: A temporary ban from any sort of interaction or public
|
||||||
|
communication with the community for a specified period of time. No public or
|
||||||
|
private interaction with the people involved, including unsolicited interaction
|
||||||
|
with those enforcing the Code of Conduct, is allowed during this period.
|
||||||
|
Violating these terms may lead to a permanent ban.
|
||||||
|
|
||||||
|
### 4. Permanent Ban
|
||||||
|
|
||||||
|
**Community Impact**: Demonstrating a pattern of violation of community
|
||||||
|
standards, including sustained inappropriate behavior, harassment of an
|
||||||
|
individual, or aggression toward or disparagement of classes of individuals.
|
||||||
|
|
||||||
|
**Consequence**: A permanent ban from any sort of public interaction within
|
||||||
|
the community.
|
||||||
|
|
||||||
|
## Attribution
|
||||||
|
|
||||||
|
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||||
|
version 2.0, available at
|
||||||
|
[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0].
|
||||||
|
|
||||||
|
Community Impact Guidelines were inspired by
|
||||||
|
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
|
||||||
|
|
||||||
|
For answers to common questions about this code of conduct, see the FAQ at
|
||||||
|
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available
|
||||||
|
at [https://www.contributor-covenant.org/translations][translations].
|
||||||
|
|
||||||
|
[homepage]: https://www.contributor-covenant.org
|
||||||
|
[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html
|
||||||
|
[Mozilla CoC]: https://github.com/mozilla/diversity
|
||||||
|
[FAQ]: https://www.contributor-covenant.org/faq
|
||||||
|
[translations]: https://www.contributor-covenant.org/translations
|
||||||
14
.github/CONTRIBUTING.md
vendored
Normal file
14
.github/CONTRIBUTING.md
vendored
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<div align="center">
|
||||||
|
<a href="#">
|
||||||
|
<img src="https://raw.githubusercontent.com/tteck/Proxmox/main/misc/images/logo.png" height="100px" />
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<h2 align="center">Contributing to Proxmox VE Helper Scripts</h2>
|
||||||
|
|
||||||
|
Everybody is invited and welcome to contribute to Proxmox VE Helper Scripts.
|
||||||
|
|
||||||
|
- Pull requests submitted against [**main**](https://github.com/tteck/Proxmox/tree/main) are meticulously scrutinized, so please do not take it personally if the project maintainer rejects your request. By adhering to the established patterns and conventions throughout the codebase, you greatly increase the likelihood that your changes will get merged into [**main**](https://github.com/tteck/Proxmox/tree/main).
|
||||||
|
|
||||||
|
- It is important to stress that complaining about a decision after it has been made is not productive behavior for the pull request submitter. It is crucial for all contributors to respect the decision-making process and collaborate effectively towards achieving the best possible outcome for the project.
|
||||||
|
|
||||||
|
- The repository will only accept Alpine applications that make use of the Alpine Package Keeper.
|
||||||
14
.github/CONTRIBUTOR_AND_GUIDES/CODE-AUDIT.md
vendored
14
.github/CONTRIBUTOR_AND_GUIDES/CODE-AUDIT.md
vendored
@@ -1,14 +0,0 @@
|
|||||||
<div align="center">
|
|
||||||
<img src="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/images/logo.png" height="100px" />
|
|
||||||
</div>
|
|
||||||
<h2><div align="center">Exploring the Scripts and Steps Involved in an Application LXC Installation</div></h2>
|
|
||||||
|
|
||||||
1) [adguard.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/ct/adguard.sh): This script collects system parameters. (Also holds the function to update the application.)
|
|
||||||
2) [build.func](https://github.com/community-scripts/ProxmoxVE/blob/main/misc/build.func): Adds user settings and integrates collected information.
|
|
||||||
3) [create_lxc.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/misc/create_lxc.sh): Constructs the LXC container.
|
|
||||||
4) [adguard-install.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/install/adguard-install.sh): Executes functions from [install.func](https://github.com/community-scripts/ProxmoxVE/blob/main/misc/install.func), and installs the application.
|
|
||||||
5) [adguard.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/ct/adguard.sh) (again): To display the completion message.
|
|
||||||
|
|
||||||
The installation process uses reusable scripts: [build.func](https://github.com/community-scripts/ProxmoxVE/blob/main/misc/build.func), [create_lxc.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/misc/create_lxc.sh), and [install.func](https://github.com/community-scripts/ProxmoxVE/blob/main/misc/install.func), which are not specific to any particular application.
|
|
||||||
|
|
||||||
To gain a better understanding, focus on reviewing [adguard-install.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/install/adguard-install.sh). This script contains the commands and configurations for installing and configuring AdGuard Home within the LXC container.
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<div align="center">
|
|
||||||
<a href="#">
|
|
||||||
<img src="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/images/logo.png" height="100px" />
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<h2 align="center">Contributing to Proxmox ARM64 VE Helper Scripts</h2>
|
|
||||||
|
|
||||||
This repo does not accept any additions for new scripts. Instead, add them to the community-scripts repo, then they'll be ported to arm64. Other than that, any changes are welcome to be PR'd and I'll review them.
|
|
||||||
286
.github/CONTRIBUTOR_AND_GUIDES/ct/AppName.md
vendored
286
.github/CONTRIBUTOR_AND_GUIDES/ct/AppName.md
vendored
@@ -1,286 +0,0 @@
|
|||||||
# **AppName<span></span>.sh Scripts**
|
|
||||||
|
|
||||||
`AppName.sh` scripts found in the `/ct` directory. These scripts are responsible for the installation of the desired application. For this guide we take `/ct/snipeit.sh` as example.
|
|
||||||
|
|
||||||
## Table of Contents
|
|
||||||
|
|
||||||
- [**AppName.sh Scripts**](#appnamesh-scripts)
|
|
||||||
- [Table of Contents](#table-of-contents)
|
|
||||||
- [1. **File Header**](#1-file-header)
|
|
||||||
- [1.1 **Shebang**](#11-shebang)
|
|
||||||
- [1.2 **Import Functions**](#12-import-functions)
|
|
||||||
- [1.3 **Metadata**](#13-metadata)
|
|
||||||
- [2 **Variables and function import**](#2-variables-and-function-import)
|
|
||||||
- [2.1 **Default Values**](#21-default-values)
|
|
||||||
- [2.2 **📋 App output \& base settings**](#22--app-output--base-settings)
|
|
||||||
- [2.3 **🛠 Core functions**](#23--core-functions)
|
|
||||||
- [3 **Update function**](#3-update-function)
|
|
||||||
- [3.1 **Function Header**](#31-function-header)
|
|
||||||
- [3.2 **Check APP**](#32-check-app)
|
|
||||||
- [3.3 **Check version**](#33-check-version)
|
|
||||||
- [3.4 **Verbosity**](#34-verbosity)
|
|
||||||
- [3.5 **Backups**](#35-backups)
|
|
||||||
- [3.6 **Cleanup**](#36-cleanup)
|
|
||||||
- [3.7 **No update function**](#37-no-update-function)
|
|
||||||
- [4 **End of the script**](#4-end-of-the-script)
|
|
||||||
- [5. **Contribution checklist**](#5-contribution-checklist)
|
|
||||||
|
|
||||||
## 1. **File Header**
|
|
||||||
|
|
||||||
### 1.1 **Shebang**
|
|
||||||
|
|
||||||
- Use `#!/usr/bin/env bash` as the shebang.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
#!/usr/bin/env bash
|
|
||||||
```
|
|
||||||
|
|
||||||
### 1.2 **Import Functions**
|
|
||||||
|
|
||||||
- Import the build.func file.
|
|
||||||
- When developing your own script, change the URL to your own repository.
|
|
||||||
|
|
||||||
> [!IMPORTANT]
|
|
||||||
> You also need to change all apperances of this URL in `misc/build.func` and `misc/install.func`
|
|
||||||
|
|
||||||
Example for development:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
source <(curl -s https://raw.githubusercontent.com/[USER]/[REPO]/refs/heads/[BRANCH]/misc/build.func)
|
|
||||||
```
|
|
||||||
|
|
||||||
Final script:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
|
||||||
```
|
|
||||||
|
|
||||||
> [!CAUTION]
|
|
||||||
> Before opening a Pull Request, change the URLs to point to the community-scripts repo.
|
|
||||||
|
|
||||||
### 1.3 **Metadata**
|
|
||||||
|
|
||||||
- Add clear comments for script metadata, including author, copyright, and license information.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: [YourUserName]
|
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
# Source: [SOURCE_URL]
|
|
||||||
```
|
|
||||||
|
|
||||||
> [!NOTE]:
|
|
||||||
>
|
|
||||||
> - Add your username and source URL
|
|
||||||
> - For existing scripts, add "| Co-Author [YourUserName]" after the current author
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 2 **Variables and function import**
|
|
||||||
>
|
|
||||||
> [!NOTE]
|
|
||||||
> You need to have all this set in your script, otherwise it will not work!
|
|
||||||
|
|
||||||
### 2.1 **Default Values**
|
|
||||||
|
|
||||||
- This section sets the default values for the container.
|
|
||||||
- `APP` needs to be set to the application name and must be equal to the filenames of your scripts.
|
|
||||||
- `var_tags`: You can set Tags for the CT wich show up in the Proxmox UI. Don´t overdo it!
|
|
||||||
|
|
||||||
>[!NOTE]
|
|
||||||
>Description for all Default Values
|
|
||||||
>
|
|
||||||
>| Variable | Description | Notes |
|
|
||||||
>|----------|-------------|-------|
|
|
||||||
>| `APP` | Application name | Must match ct\AppName.sh |
|
|
||||||
>| `var_tags` | Proxmox display tags without Spaces, only ; | Limit the number |
|
|
||||||
>| `var_cpu` | CPU cores | Number of cores |
|
|
||||||
>| `var_ram` | RAM | In MB |
|
|
||||||
>| `var_disk` | Disk capacity | In GB |
|
|
||||||
>| `var_os` | Operating system | alpine, debian, ubuntu |
|
|
||||||
>| `var_version` | OS version | e.g., 3.20, 11, 12, 20.04 |
|
|
||||||
>| `var_unprivileged` | Container type | 1 = Unprivileged, 0 = Privileged |
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
APP="SnipeIT"
|
|
||||||
var_tags="${var_tags:-asset-management;foss}"
|
|
||||||
var_cpu="${var_cpu:-2}"
|
|
||||||
var_ram="${var_ram:-2048}"
|
|
||||||
var_disk="${var_disk:-4}"
|
|
||||||
var_os="${var_os:-debian}"
|
|
||||||
var_version="${var_version:-12}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
```
|
|
||||||
|
|
||||||
## 2.2 **📋 App output & base settings**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
header_info "$APP"
|
|
||||||
```
|
|
||||||
- `header_info`: Generates ASCII header for APP
|
|
||||||
|
|
||||||
## 2.3 **🛠 Core functions**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
```
|
|
||||||
|
|
||||||
- `variables`: Processes input and prepares variables
|
|
||||||
- `color`: Sets icons, colors, and formatting
|
|
||||||
- `catch_errors`: Enables error handling
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 3 **Update function**
|
|
||||||
|
|
||||||
### 3.1 **Function Header**
|
|
||||||
|
|
||||||
- If applicable write a function that updates the application and the OS in the container.
|
|
||||||
- Each update function starts with the same code:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
function update_script() {
|
|
||||||
header_info
|
|
||||||
check_container_storage
|
|
||||||
check_container_resources
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3.2 **Check APP**
|
|
||||||
|
|
||||||
- Before doing anything update-wise, check if the app is installed in the container.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
if [[ ! -d /opt/snipe-it ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3.3 **Check version**
|
|
||||||
|
|
||||||
- Before updating, check if a new version exists.
|
|
||||||
- We use the `${APPLICATION}_version.txt` file created in `/opt` during the install to compare new versions against the currently installed version.
|
|
||||||
|
|
||||||
Example with a Github Release:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/snipe/snipe-it/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
|
||||||
#DO UPDATE
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
|
||||||
fi
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3.4 **Verbosity**
|
|
||||||
|
|
||||||
- Use the appropriate flag (**-q** in the examples) for a command to suppress its output.
|
|
||||||
Example:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
wget -q
|
|
||||||
unzip -q
|
|
||||||
```
|
|
||||||
|
|
||||||
- If a command does not come with this functionality use `$STD` to suppress it's output.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$STD php artisan migrate --force
|
|
||||||
$STD php artisan config:clear
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3.5 **Backups**
|
|
||||||
|
|
||||||
- Backup user data if necessary.
|
|
||||||
- Move all user data back in the directory when the update is finished.
|
|
||||||
|
|
||||||
>[!NOTE]
|
|
||||||
>This is not meant to be a permanent backup
|
|
||||||
|
|
||||||
Example backup:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
mv /opt/snipe-it /opt/snipe-it-backup
|
|
||||||
```
|
|
||||||
|
|
||||||
Example config restore:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cp /opt/snipe-it-backup/.env /opt/snipe-it/.env
|
|
||||||
cp -r /opt/snipe-it-backup/public/uploads/ /opt/snipe-it/public/uploads/
|
|
||||||
cp -r /opt/snipe-it-backup/storage/private_uploads /opt/snipe-it/storage/private_uploads
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3.6 **Cleanup**
|
|
||||||
|
|
||||||
- Do not forget to remove any temporary files/folders such as zip-files or temporary backups.
|
|
||||||
Example:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
rm -rf /opt/v${RELEASE}.zip
|
|
||||||
rm -rf /opt/snipe-it-backup
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3.7 **No update function**
|
|
||||||
|
|
||||||
- In case you can not provide an update function use the following code to provide user feedback.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
function update_script() {
|
|
||||||
header_info
|
|
||||||
check_container_storage
|
|
||||||
check_container_resources
|
|
||||||
if [[ ! -d /opt/snipeit ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
msg_error "Currently we don't provide an update function for this ${APP}."
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 4 **End of the script**
|
|
||||||
|
|
||||||
- `start`: Launches Whiptail dialogue
|
|
||||||
- `build_container`: Collects and integrates user settings
|
|
||||||
- `description`: Sets LXC container description
|
|
||||||
- With `echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"` you can point the user to the IP:PORT/folder needed to access the app.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
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}${CL}"
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 5. **Contribution checklist**
|
|
||||||
|
|
||||||
- [ ] Shebang is correctly set (`#!/usr/bin/env bash`).
|
|
||||||
- [ ] Correct link to *build.func*
|
|
||||||
- [ ] Metadata (author, license) is included at the top.
|
|
||||||
- [ ] Variables follow naming conventions.
|
|
||||||
- [ ] Update function exists.
|
|
||||||
- [ ] Update functions checks if app is installed and for new version.
|
|
||||||
- [ ] Update function cleans up temporary files.
|
|
||||||
- [ ] Script ends with a helpful message for the user to reach the application.
|
|
||||||
86
.github/CONTRIBUTOR_AND_GUIDES/ct/AppName.sh
vendored
86
.github/CONTRIBUTOR_AND_GUIDES/ct/AppName.sh
vendored
@@ -1,86 +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: [YourUserName]
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: [SOURCE_URL]
|
|
||||||
|
|
||||||
# App Default Values
|
|
||||||
# Name of the app (e.g. Google, Adventurelog, Apache-Guacamole"
|
|
||||||
APP="[APP_NAME]"
|
|
||||||
# Tags for Proxmox VE, maximum 2 pcs., no spaces allowed, separated by a semicolon ; (e.g. database | adblock;dhcp)
|
|
||||||
var_tags="${var_tags:-[TAGS]}"
|
|
||||||
# Number of cores (1-X) (e.g. 4) - default are 2
|
|
||||||
var_cpu="${var_cpu:-[CPU]}"
|
|
||||||
# Amount of used RAM in MB (e.g. 2048 or 4096)
|
|
||||||
var_ram="${var_ram:-[RAM]}"
|
|
||||||
# Amount of used disk space in GB (e.g. 4 or 10)
|
|
||||||
var_disk="${var_disk:-[DISK]}"
|
|
||||||
# Default OS (e.g. debian, ubuntu, alpine)
|
|
||||||
var_os="${var_os:-[OS]}"
|
|
||||||
# Default OS version (e.g. 12 for debian, 24.04 for ubuntu, 3.20 for alpine)
|
|
||||||
var_version="${var_version:-[VERSION]}"
|
|
||||||
# 1 = unprivileged container, 0 = privileged container
|
|
||||||
var_unprivileged="${var_unprivileged:-[UNPRIVILEGED]}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
header_info
|
|
||||||
check_container_storage
|
|
||||||
check_container_resources
|
|
||||||
|
|
||||||
# Check if installation is present | -f for file, -d for folder
|
|
||||||
if [[ ! -f [INSTALLATION_CHECK_PATH] ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Crawling the new version and checking whether an update is required
|
|
||||||
RELEASE=$(curl -fsSL [RELEASE_URL] | [PARSE_RELEASE_COMMAND])
|
|
||||||
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
|
||||||
# Stopping Services
|
|
||||||
msg_info "Stopping $APP"
|
|
||||||
systemctl stop [SERVICE_NAME]
|
|
||||||
msg_ok "Stopped $APP"
|
|
||||||
|
|
||||||
# Creating Backup
|
|
||||||
msg_info "Creating Backup"
|
|
||||||
tar -czf "/opt/${APP}_backup_$(date +%F).tar.gz" [IMPORTANT_PATHS]
|
|
||||||
msg_ok "Backup Created"
|
|
||||||
|
|
||||||
# Execute Update
|
|
||||||
msg_info "Updating $APP to v${RELEASE}"
|
|
||||||
[UPDATE_COMMANDS]
|
|
||||||
msg_ok "Updated $APP to v${RELEASE}"
|
|
||||||
|
|
||||||
# Starting Services
|
|
||||||
msg_info "Starting $APP"
|
|
||||||
systemctl start [SERVICE_NAME]
|
|
||||||
msg_ok "Started $APP"
|
|
||||||
|
|
||||||
# Cleaning up
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -rf [TEMP_FILES]
|
|
||||||
msg_ok "Cleanup Completed"
|
|
||||||
|
|
||||||
# Last Action
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
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}:[PORT]${CL}"
|
|
||||||
@@ -1,354 +0,0 @@
|
|||||||
|
|
||||||
# **AppName<span></span>-install.sh Scripts**
|
|
||||||
|
|
||||||
`AppName-install.sh` scripts found in the `/install` directory. These scripts are responsible for the installation of the application. For this guide we take `/install/snipeit-install.sh` as example.
|
|
||||||
|
|
||||||
## Table of Contents
|
|
||||||
|
|
||||||
- [**AppName-install.sh Scripts**](#appname-installsh-scripts)
|
|
||||||
- [Table of Contents](#table-of-contents)
|
|
||||||
- [1. **File header**](#1-file-header)
|
|
||||||
- [1.1 **Shebang**](#11-shebang)
|
|
||||||
- [1.2 **Comments**](#12-comments)
|
|
||||||
- [1.3 **Variables and function import**](#13-variables-and-function-import)
|
|
||||||
- [2. **Variable naming and management**](#2-variable-naming-and-management)
|
|
||||||
- [2.1 **Naming conventions**](#21-naming-conventions)
|
|
||||||
- [3. **Dependencies**](#3-dependencies)
|
|
||||||
- [3.1 **Install all at once**](#31-install-all-at-once)
|
|
||||||
- [3.2 **Collapse dependencies**](#32-collapse-dependencies)
|
|
||||||
- [4. **Paths to application files**](#4-paths-to-application-files)
|
|
||||||
- [5. **Version management**](#5-version-management)
|
|
||||||
- [5.1 **Install the latest release**](#51-install-the-latest-release)
|
|
||||||
- [5.2 **Save the version for update checks**](#52-save-the-version-for-update-checks)
|
|
||||||
- [6. **Input and output management**](#6-input-and-output-management)
|
|
||||||
- [6.1 **User feedback**](#61-user-feedback)
|
|
||||||
- [6.2 **Verbosity**](#62-verbosity)
|
|
||||||
- [7. **String/File Manipulation**](#7-stringfile-manipulation)
|
|
||||||
- [7.1 **File Manipulation**](#71-file-manipulation)
|
|
||||||
- [8. **Security practices**](#8-security-practices)
|
|
||||||
- [8.1 **Password generation**](#81-password-generation)
|
|
||||||
- [8.2 **File permissions**](#82-file-permissions)
|
|
||||||
- [9. **Service Configuration**](#9-service-configuration)
|
|
||||||
- [9.1 **Configuration files**](#91-configuration-files)
|
|
||||||
- [9.2 **Credential management**](#92-credential-management)
|
|
||||||
- [9.3 **Enviroment files**](#93-enviroment-files)
|
|
||||||
- [9.4 **Services**](#94-services)
|
|
||||||
- [10. **Cleanup**](#10-cleanup)
|
|
||||||
- [10.1 **Remove temporary files**](#101-remove-temporary-files)
|
|
||||||
- [10.2 **Autoremove and autoclean**](#102-autoremove-and-autoclean)
|
|
||||||
- [11. **Best Practices Checklist**](#11-best-practices-checklist)
|
|
||||||
- [Example: High-Level Script Flow](#example-high-level-script-flow)
|
|
||||||
|
|
||||||
## 1. **File header**
|
|
||||||
|
|
||||||
### 1.1 **Shebang**
|
|
||||||
|
|
||||||
- Use `#!/usr/bin/env bash` as the shebang.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
#!/usr/bin/env bash
|
|
||||||
```
|
|
||||||
|
|
||||||
### 1.2 **Comments**
|
|
||||||
|
|
||||||
- Add clear comments for script metadata, including author, copyright, and license information.
|
|
||||||
- Use meaningful inline comments to explain complex commands or logic.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: [YourUserName]
|
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
# Source: [SOURCE_URL]
|
|
||||||
```
|
|
||||||
|
|
||||||
> [!NOTE]:
|
|
||||||
>
|
|
||||||
> - Add your username
|
|
||||||
> - When updating/reworking scripts, add "| Co-Author [YourUserName]"
|
|
||||||
> - Source is a URL of github repo containting source files of the application you're installing (not URL of your homepage or a blog)
|
|
||||||
|
|
||||||
### 1.3 **Variables and function import**
|
|
||||||
|
|
||||||
- This sections adds the support for all needed functions and variables.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
|
||||||
color
|
|
||||||
verb_ip6
|
|
||||||
catch_errors
|
|
||||||
setting_up_container
|
|
||||||
network_check
|
|
||||||
update_os
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 2. **Variable naming and management**
|
|
||||||
|
|
||||||
### 2.1 **Naming conventions**
|
|
||||||
|
|
||||||
- Use uppercase names for constants and environment variables.
|
|
||||||
- Use lowercase names for local script variables.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
DB_NAME=snipeit_db # Environment-like variable (constant)
|
|
||||||
db_user="snipeit" # Local variable
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 3. **Dependencies**
|
|
||||||
|
|
||||||
### 3.1 **Install all at once**
|
|
||||||
|
|
||||||
- Install all dependencies with a single command if possible
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$STD apt-get install -y \
|
|
||||||
composer \
|
|
||||||
git \
|
|
||||||
nginx
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3.2 **Collapse dependencies**
|
|
||||||
|
|
||||||
Collapse dependencies to keep the code readable.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
Use
|
|
||||||
|
|
||||||
```bash
|
|
||||||
php8.2-{bcmath,common,ctype}
|
|
||||||
```
|
|
||||||
|
|
||||||
instead of
|
|
||||||
|
|
||||||
```bash
|
|
||||||
php8.2-bcmath php8.2-common php8.2-ctype
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 4. **Paths to application files**
|
|
||||||
|
|
||||||
If possible install the app and all necessary files in `/opt/`
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 5. **Version management**
|
|
||||||
|
|
||||||
### 5.1 **Install the latest release**
|
|
||||||
|
|
||||||
- Always try and install the latest release
|
|
||||||
- Do not hardcode any version if not absolutely necessary
|
|
||||||
|
|
||||||
Example for a git release:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/snipe/snipe-it/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
curl -fsSL "https://github.com/snipe/snipe-it/archive/refs/tags/v${RELEASE}.zip" -o "v${RELEASE}.zip"
|
|
||||||
```
|
|
||||||
|
|
||||||
### 5.2 **Save the version for update checks**
|
|
||||||
|
|
||||||
- Write the installed version into a file.
|
|
||||||
- This is used for the update function in **AppName.sh** to check for if a Update is needed.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 6. **Input and output management**
|
|
||||||
|
|
||||||
### 6.1 **User feedback**
|
|
||||||
|
|
||||||
- Use standard functions like `msg_info`, `msg_ok` or `msg_error` to print status messages.
|
|
||||||
- Each `msg_info` must be followed with a `msg_ok` before any other output is made.
|
|
||||||
- Display meaningful progress messages at key stages.
|
|
||||||
- Taking user input with `read -p` must be outside of `msg_info`...`msg_ok` code block
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
msg_info "Installing Dependencies"
|
|
||||||
$STD apt-get install -y ...
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
read -p "${TAB3}Do you wish to enable HTTPS mode? (y/N): " httpschoice
|
|
||||||
```
|
|
||||||
|
|
||||||
### 6.2 **Verbosity**
|
|
||||||
|
|
||||||
- Use the appropiate flag (**-q** in the examples) for a command to suppres its output
|
|
||||||
Example:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
wget -q
|
|
||||||
unzip -q
|
|
||||||
```
|
|
||||||
|
|
||||||
- If a command dose not come with such a functionality use `$STD` (a custom standard redirection variable) for managing output verbosity.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$STD apt-get install -y nginx
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 7. **String/File Manipulation**
|
|
||||||
|
|
||||||
### 7.1 **File Manipulation**
|
|
||||||
|
|
||||||
- Use `sed` to replace placeholder values in configuration files.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sed -i -e "s|^DB_DATABASE=.*|DB_DATABASE=$DB_NAME|" \
|
|
||||||
-e "s|^DB_USERNAME=.*|DB_USERNAME=$DB_USER|" \
|
|
||||||
-e "s|^DB_PASSWORD=.*|DB_PASSWORD=$DB_PASS|" .env
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 8. **Security practices**
|
|
||||||
|
|
||||||
### 8.1 **Password generation**
|
|
||||||
|
|
||||||
- Use `openssl` to generate random passwords.
|
|
||||||
- Use only alphanumeric values to not introduce unknown behaviour.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
|
||||||
```
|
|
||||||
|
|
||||||
### 8.2 **File permissions**
|
|
||||||
|
|
||||||
Explicitly set secure ownership and permissions for sensitive files.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
chown -R www-data: /opt/snipe-it
|
|
||||||
chmod -R 755 /opt/snipe-it
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 9. **Service Configuration**
|
|
||||||
|
|
||||||
### 9.1 **Configuration files**
|
|
||||||
|
|
||||||
Use `cat <<EOF` to write configuration files in a clean and readable way.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cat <<EOF >/etc/nginx/conf.d/snipeit.conf
|
|
||||||
server {
|
|
||||||
listen 80;
|
|
||||||
root /opt/snipe-it/public;
|
|
||||||
index index.php;
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
```
|
|
||||||
|
|
||||||
### 9.2 **Credential management**
|
|
||||||
|
|
||||||
Store the generated credentials in a file.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
USERNAME=username
|
|
||||||
PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
|
||||||
{
|
|
||||||
echo "Application-Credentials"
|
|
||||||
echo "Username: $USERNAME"
|
|
||||||
echo "Password: $PASSWORD"
|
|
||||||
} >> ~/application.creds
|
|
||||||
```
|
|
||||||
|
|
||||||
### 9.3 **Enviroment files**
|
|
||||||
|
|
||||||
Use `cat <<EOF` to write enviromental files in a clean and readable way.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cat <<EOF >/path/to/.env
|
|
||||||
VARIABLE="value"
|
|
||||||
PORT=3000
|
|
||||||
DB_NAME="${DB_NAME}"
|
|
||||||
EOF
|
|
||||||
```
|
|
||||||
|
|
||||||
### 9.4 **Services**
|
|
||||||
|
|
||||||
Enable affected services after configuration changes and start them right away.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
systemctl enable -q --now nginx
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 10. **Cleanup**
|
|
||||||
|
|
||||||
### 10.1 **Remove temporary files**
|
|
||||||
|
|
||||||
Remove temporary files and downloads after use.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
rm -rf /opt/v${RELEASE}.zip
|
|
||||||
```
|
|
||||||
|
|
||||||
### 10.2 **Autoremove and autoclean**
|
|
||||||
|
|
||||||
Remove unused dependencies to reduce disk space usage.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
apt-get -y autoremove
|
|
||||||
apt-get -y autoclean
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 11. **Best Practices Checklist**
|
|
||||||
|
|
||||||
- [ ] Shebang is correctly set (`#!/usr/bin/env bash`).
|
|
||||||
- [ ] Metadata (author, license) is included at the top.
|
|
||||||
- [ ] Variables follow naming conventions.
|
|
||||||
- [ ] Sensitive values are dynamically generated.
|
|
||||||
- [ ] Files and services have proper permissions.
|
|
||||||
- [ ] Script cleans up temporary files.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### Example: High-Level Script Flow
|
|
||||||
|
|
||||||
1. Dependencies installation
|
|
||||||
2. Database setup
|
|
||||||
3. Download and configure application
|
|
||||||
4. Service configuration
|
|
||||||
5. Final cleanup
|
|
||||||
@@ -1,81 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: [YourUserName]
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: [SOURCE_URL]
|
|
||||||
|
|
||||||
# Import Functions und Setup
|
|
||||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
|
||||||
color
|
|
||||||
verb_ip6
|
|
||||||
catch_errors
|
|
||||||
setting_up_container
|
|
||||||
network_check
|
|
||||||
update_os
|
|
||||||
|
|
||||||
# Installing Dependencies with the 3 core dependencies (curl;sudo;mc)
|
|
||||||
msg_info "Installing Dependencies"
|
|
||||||
$STD apt-get install -y \
|
|
||||||
curl \
|
|
||||||
sudo \
|
|
||||||
mc \
|
|
||||||
[PACKAGE_1] \
|
|
||||||
[PACKAGE_2] \
|
|
||||||
[PACKAGE_3]
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
# Template: MySQL Database
|
|
||||||
msg_info "Setting up Database"
|
|
||||||
DB_NAME=[DB_NAME]
|
|
||||||
DB_USER=[DB_USER]
|
|
||||||
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
|
||||||
$STD mysql -u root -e "CREATE DATABASE $DB_NAME;"
|
|
||||||
$STD mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');"
|
|
||||||
$STD mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
|
||||||
{
|
|
||||||
echo "${APPLICATION} Credentials"
|
|
||||||
echo "Database User: $DB_USER"
|
|
||||||
echo "Database Password: $DB_PASS"
|
|
||||||
echo "Database Name: $DB_NAME"
|
|
||||||
} >>~/"$APP_NAME".creds
|
|
||||||
msg_ok "Set up Database"
|
|
||||||
|
|
||||||
# Setup App
|
|
||||||
msg_info "Setup ${APPLICATION}"
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/[REPO]/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
|
||||||
curl -fsSL -o "${RELEASE}.zip" "https://github.com/[REPO]/archive/refs/tags/${RELEASE}.zip"
|
|
||||||
unzip -q "${RELEASE}.zip"
|
|
||||||
mv "${APPLICATION}-${RELEASE}/" "/opt/${APPLICATION}"
|
|
||||||
#
|
|
||||||
#
|
|
||||||
#
|
|
||||||
echo "${RELEASE}" >/opt/"${APPLICATION}"_version.txt
|
|
||||||
msg_ok "Setup ${APPLICATION}"
|
|
||||||
|
|
||||||
# Creating Service (if needed)
|
|
||||||
msg_info "Creating Service"
|
|
||||||
cat <<EOF >/etc/systemd/system/"${APPLICATION}".service
|
|
||||||
[Unit]
|
|
||||||
Description=${APPLICATION} Service
|
|
||||||
After=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
ExecStart=[START_COMMAND]
|
|
||||||
Restart=always
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
systemctl enable -q --now "${APPLICATION}"
|
|
||||||
msg_ok "Created Service"
|
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
|
|
||||||
# Cleanup
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -f "${RELEASE}".zip
|
|
||||||
$STD apt-get -y autoremove
|
|
||||||
$STD apt-get -y autoclean
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
34
.github/CONTRIBUTOR_AND_GUIDES/json/AppName.json
vendored
34
.github/CONTRIBUTOR_AND_GUIDES/json/AppName.json
vendored
@@ -1,34 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "AppName",
|
|
||||||
"slug": "appname",
|
|
||||||
"categories": [
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"date_created": "DATE CREATED",
|
|
||||||
"type": "ct",
|
|
||||||
"updateable": true,
|
|
||||||
"privileged": false,
|
|
||||||
"interface_port": DEFAULT-PORT,
|
|
||||||
"documentation": null,
|
|
||||||
"website": "LINK TO WEBSITE",
|
|
||||||
"logo": "LINK TO LOGO",
|
|
||||||
"description": "Description of the app",
|
|
||||||
"install_methods": [
|
|
||||||
{
|
|
||||||
"type": "default",
|
|
||||||
"script": "ct/AppName.sh",
|
|
||||||
"resources": {
|
|
||||||
"cpu": 2,
|
|
||||||
"ram": 2048,
|
|
||||||
"hdd": 4,
|
|
||||||
"os": "debian",
|
|
||||||
"version": "12"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"default_credentials": {
|
|
||||||
"username": null,
|
|
||||||
"password": null
|
|
||||||
},
|
|
||||||
"notes": []
|
|
||||||
}
|
|
||||||
13
.github/CONTRIBUTOR_AND_GUIDES/json/AppName.md
vendored
13
.github/CONTRIBUTOR_AND_GUIDES/json/AppName.md
vendored
@@ -1,13 +0,0 @@
|
|||||||
# **AppName<span></span>.json Files**
|
|
||||||
|
|
||||||
`AppName.json` files found in the `/json` directory. These files are used to provide informations for the website. For this guide we take `/json/snipeit.json` as example.
|
|
||||||
|
|
||||||
## Table of Contents
|
|
||||||
|
|
||||||
- [**AppName.json Files**](#appnamejson-files)
|
|
||||||
- [Table of Contents](#table-of-contents)
|
|
||||||
- [1. JSON Generator](#1-json-generator)
|
|
||||||
|
|
||||||
## 1. JSON Generator
|
|
||||||
|
|
||||||
Use the [JSON Generator](https://community-scripts.github.io/ProxmoxVE/json-editor) to create this file for your application.
|
|
||||||
35
.github/DISCUSSION_TEMPLATE/request-script.yml
vendored
35
.github/DISCUSSION_TEMPLATE/request-script.yml
vendored
@@ -1,35 +0,0 @@
|
|||||||
title: "[Script request]: "
|
|
||||||
labels: ["enhancement"]
|
|
||||||
body:
|
|
||||||
- type: input
|
|
||||||
attributes:
|
|
||||||
label: Application Name
|
|
||||||
description: Enter the application name.
|
|
||||||
placeholder: "e.g., Home Assistant"
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: input
|
|
||||||
attributes:
|
|
||||||
label: Website
|
|
||||||
description: Official website or github page.
|
|
||||||
placeholder: "e.g., https://www.home-assistant.io/"
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Description
|
|
||||||
description: Explain what the application does and why it should be added to Proxmox VE Helper-Scripts.
|
|
||||||
placeholder: "e.g., Home Assistant is a popular open-source platform that brings all your smart home devices together in one place. Adding it to Proxmox VE Helper-Scripts would make setup and management on Proxmox easy, letting users quickly get a powerful, self-hosted smart home system up and running."
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: checkboxes
|
|
||||||
attributes:
|
|
||||||
label: Due Diligence
|
|
||||||
options:
|
|
||||||
- label: "I have searched existing [scripts](https://community-scripts.github.io/Proxmox/scripts) and found no duplicates."
|
|
||||||
required: true
|
|
||||||
- label: "I have searched existing [discussions](https://github.com/community-scripts/ProxmoxVE/discussions?discussions_q=) and found no duplicate requests."
|
|
||||||
required: true
|
|
||||||
- type: markdown
|
|
||||||
attributes:
|
|
||||||
value: "Thanks for submitting your request! The team will review it and reach out if we need more information."
|
|
||||||
3
.github/FUNDING.yml
vendored
3
.github/FUNDING.yml
vendored
@@ -1,2 +1 @@
|
|||||||
ko_fi: community_scripts
|
ko_fi: proxmoxhelperscripts
|
||||||
github: community_scripts
|
|
||||||
|
|||||||
@@ -1,16 +1,14 @@
|
|||||||
name: "🌐 Website Issue Report"
|
name: Problems with a script.
|
||||||
description: Report an issue, an optimization request or an documentation issue specifically related to the website.
|
description: Generate a report on an issue pertaining specifically to a script. For other inquires please share them in the Discussions section.
|
||||||
labels: "website"
|
|
||||||
|
|
||||||
body:
|
body:
|
||||||
- type: markdown
|
- type: markdown
|
||||||
attributes:
|
attributes:
|
||||||
value: |
|
value: |
|
||||||
**IMPORTANT:** Failure to comply with the following guidelines may result in immediate closure.
|
**IMPORTANT:** Failure to comply with the following guidelines may result in immediate closure.
|
||||||
- Prior to submitting, kindly search the closed issues to check if the problem you are reporting has already been addressed and resolved. If you come across a closed issue that pertains to your problem, please leave a comment on that issue instead of creating a new one.
|
- Prior to submitting, kindly search the closed issues to check if the problem you are reporting has already been addressed and resolved. If you come across a closed issue that pertains to your problem, please leave a comment on that issue instead of creating a new one.
|
||||||
- If the problem is related to a bug in the website, kindly check for browser compatibility and ensure the issue occurs in multiple browsers before submitting.
|
- If the default Linux distribution is not adhered to, script support will be discontinued.
|
||||||
- For suggestions, questions, or feature requests, please use the [Discussions section.](https://github.com/community-scripts/ProxmoxVE/discussions)
|
- When encountering the error message `[ERROR] in line 23: exit code *: while executing command "$@" > /dev/null 2>&1`, make sure to run the script in verbose mode to accurately determine the underlying issue.
|
||||||
|
- For suggestions, questions or feature/script requests, please share them in the [Discussions section.](https://github.com/tteck/Proxmox/discussions)
|
||||||
- type: input
|
- type: input
|
||||||
id: guidelines
|
id: guidelines
|
||||||
attributes:
|
attributes:
|
||||||
@@ -18,58 +16,50 @@ body:
|
|||||||
placeholder: 'yes'
|
placeholder: 'yes'
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
- type: dropdown
|
|
||||||
id: issue_type
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
attributes:
|
|
||||||
label: What type of issue is this?
|
|
||||||
options:
|
|
||||||
-
|
|
||||||
- Bug
|
|
||||||
- Optimization
|
|
||||||
- Documentation
|
|
||||||
- Other
|
|
||||||
|
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: bug_description
|
id: bug
|
||||||
attributes:
|
attributes:
|
||||||
label: A clear and concise description of the issue.
|
label: A clear and concise description of the issue.
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
- type: dropdown
|
- type: dropdown
|
||||||
id: browser
|
id: settings
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
attributes:
|
attributes:
|
||||||
label: Which browser are you using?
|
label: What settings are you currently utilizing?
|
||||||
options:
|
options:
|
||||||
-
|
-
|
||||||
- Chrome
|
- Default Settings
|
||||||
- Firefox
|
- Advanced Settings
|
||||||
- Safari
|
|
||||||
- Edge
|
|
||||||
- Other
|
|
||||||
|
|
||||||
- type: markdown
|
- type: markdown
|
||||||
attributes:
|
attributes:
|
||||||
value: |
|
value: (if Advanced Settings, please try Default Settings before creating an issue)
|
||||||
**If the issue is browser-related**, please provide information on the version and platform (Windows, MacOS, Linux, etc.).
|
- type: dropdown
|
||||||
|
id: distribution
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
attributes:
|
||||||
|
label: Which Linux distribution are you employing?
|
||||||
|
options:
|
||||||
|
-
|
||||||
|
- Alpine
|
||||||
|
- Debian 11
|
||||||
|
- Debian 12
|
||||||
|
- Ubuntu 20.04
|
||||||
|
- Ubuntu 22.04
|
||||||
|
- Ubuntu 24.04
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: screenshot
|
id: screenshot
|
||||||
attributes:
|
attributes:
|
||||||
label: If relevant, including screenshots or a code block can be helpful in clarifying the issue.
|
label: If relevant, including screenshots or a code block can be helpful in clarifying the issue.
|
||||||
placeholder: "Code blocks begin and conclude by enclosing the code with three backticks (```) above and below it."
|
placeholder: Code blocks begin and conclude by enclosing the code with three backticks (```) above and below it.
|
||||||
validations:
|
validations:
|
||||||
required: false
|
required: false
|
||||||
|
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: reproduce
|
id: reproduce
|
||||||
attributes:
|
attributes:
|
||||||
label: Please provide detailed steps to reproduce the issue.
|
label: Please provide detailed steps to reproduce the issue.
|
||||||
placeholder: "First do this, then this ..."
|
placeholder: First do this, then this ...
|
||||||
validations:
|
validations:
|
||||||
required: false
|
required: false
|
||||||
100
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
100
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -1,100 +0,0 @@
|
|||||||
name: "🐞 Script Issue Report"
|
|
||||||
description: Report a specific issue with a script. For other inquiries, please use the Discussions section.
|
|
||||||
labels: ["bug"]
|
|
||||||
body:
|
|
||||||
- type: markdown
|
|
||||||
attributes:
|
|
||||||
value: |
|
|
||||||
# 🐞 **Script Issue Report**
|
|
||||||
Thank you for taking the time to report an issue! Please provide as much detail as possible to help us address the problem efficiently.
|
|
||||||
|
|
||||||
## ⚠️ **IMPORTANT - READ FIRST**
|
|
||||||
- 🔍 **Search first:** Before submitting, check if the issue has already been reported or resolved in [closed issues](https://github.com/community-scripts/ProxmoxVE/issues?q=is%3Aissue+is%3Aclosed). If found, comment on that issue instead of creating a new one.
|
|
||||||
Alternatively, check the **[Discussions](https://github.com/community-scripts/ProxmoxVE/discussions)** under the *"Announcement"* or *"Guide"* categories for relevant information.
|
|
||||||
- 🛠️ **Supported environments only:** Ensure you are using a default Linux distribution. Custom setups may not be supported.
|
|
||||||
- 🔎 If you encounter `[ERROR] in line 23: exit code *: while executing command "$@" > /dev/null 2>&1`, rerun the script with verbose mode before submitting the issue.
|
|
||||||
- 💡 For general questions, feature requests, or suggestions, use the [Discussions section](https://github.com/community-scripts/ProxmoxVE/discussions).
|
|
||||||
|
|
||||||
- type: input
|
|
||||||
id: guidelines
|
|
||||||
attributes:
|
|
||||||
label: ✅ Have you read and understood the above guidelines?
|
|
||||||
placeholder: "yes"
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: input
|
|
||||||
id: script_name
|
|
||||||
attributes:
|
|
||||||
label: 📜 What is the name of the script you are using?
|
|
||||||
placeholder: "e.g., NextcloudPi, Zigbee2MQTT"
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: input
|
|
||||||
id: script_command
|
|
||||||
attributes:
|
|
||||||
label: 📂 What was the exact command used to execute the script?
|
|
||||||
placeholder: "e.g., bash -c \"$(wget -qLO - https://github.com/asylumexp/Proxmox/raw/main/ct/zigbee2mqtt.sh)\" or \"update\""
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: issue_description
|
|
||||||
attributes:
|
|
||||||
label: 📝 Provide a clear and concise description of the issue.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: checkboxes
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
attributes:
|
|
||||||
label: ⚙️ What settings are you using?
|
|
||||||
options:
|
|
||||||
- label: Default Settings
|
|
||||||
- label: Advanced Settings
|
|
||||||
|
|
||||||
- type: markdown
|
|
||||||
attributes:
|
|
||||||
value: "💡 **Tip:** If you are using Advanced Settings, please test with Default Settings before submitting an issue."
|
|
||||||
|
|
||||||
- type: dropdown
|
|
||||||
id: linux_distribution
|
|
||||||
attributes:
|
|
||||||
label: 🖥️ Which Linux distribution are you using?
|
|
||||||
options:
|
|
||||||
-
|
|
||||||
- Alpine
|
|
||||||
- Debian 11
|
|
||||||
- Debian 12
|
|
||||||
- Ubuntu 20.04
|
|
||||||
- Ubuntu 22.04
|
|
||||||
- Ubuntu 24.04
|
|
||||||
- Ubuntu 24.10
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: steps_to_reproduce
|
|
||||||
attributes:
|
|
||||||
label: 🔄 Steps to reproduce the issue.
|
|
||||||
placeholder: "e.g., Step 1: ..., Step 2: ..."
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: error_output
|
|
||||||
attributes:
|
|
||||||
label: ❌ Paste the full error output (if available).
|
|
||||||
placeholder: "Include any relevant logs or error messages."
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: additional_context
|
|
||||||
attributes:
|
|
||||||
label: 🖼️ Additional context (optional).
|
|
||||||
placeholder: "Include screenshots, code blocks (use triple backticks ```), or any other relevant information."
|
|
||||||
validations:
|
|
||||||
required: false
|
|
||||||
12
.github/ISSUE_TEMPLATE/config.yml
vendored
12
.github/ISSUE_TEMPLATE/config.yml
vendored
@@ -1,11 +1,5 @@
|
|||||||
blank_issues_enabled: false
|
blank_issues_enabled: false
|
||||||
contact_links:
|
contact_links:
|
||||||
- name: 🌟 new Script request
|
- name: Helper-Scripts Community Support
|
||||||
url: https://github.com/community-scripts/ProxmoxVE/discussions/new?category=request-script
|
url: https://github.com/tteck/Proxmox/discussions
|
||||||
about: For feature/script requests, please use the Discussions section.
|
about: Please ask and answer questions here.
|
||||||
- name: 🤔 Questions and Help
|
|
||||||
url: https://github.com/community-scripts/ProxmoxVE/discussions
|
|
||||||
about: For suggestions or questions, please use the Discussions section.
|
|
||||||
- name: 💻 Discord
|
|
||||||
url: https://discord.gg/UHrpNWGwkH
|
|
||||||
about: Join our Discord server to chat with other users in the Proxmox Helper Scripts community.
|
|
||||||
|
|||||||
33
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
33
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
@@ -1,33 +0,0 @@
|
|||||||
name: "✨ Feature Request"
|
|
||||||
description: "Suggest a new feature or enhancement. (not for script requests)"
|
|
||||||
labels: ["enhancement"]
|
|
||||||
body:
|
|
||||||
- type: markdown
|
|
||||||
attributes:
|
|
||||||
value: |
|
|
||||||
# ✨ **Feature Request**
|
|
||||||
Have an idea for a new feature? Share your thoughts below!
|
|
||||||
|
|
||||||
- type: input
|
|
||||||
id: feature_summary
|
|
||||||
attributes:
|
|
||||||
label: "🌟 Briefly describe the feature"
|
|
||||||
placeholder: "e.g., Add support for XYZ"
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: feature_description
|
|
||||||
attributes:
|
|
||||||
label: "📝 Detailed description"
|
|
||||||
placeholder: "Explain the feature in detail"
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: use_case
|
|
||||||
attributes:
|
|
||||||
label: "💡 Why is this useful?"
|
|
||||||
placeholder: "Describe the benefit of this feature"
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
25
.github/ISSUE_TEMPLATE/task.yml
vendored
25
.github/ISSUE_TEMPLATE/task.yml
vendored
@@ -1,25 +0,0 @@
|
|||||||
name: "🛠️ Task / General Request"
|
|
||||||
description: "Request a general task, improvement, or refactor."
|
|
||||||
labels: ["task"]
|
|
||||||
body:
|
|
||||||
- type: markdown
|
|
||||||
attributes:
|
|
||||||
value: |
|
|
||||||
# 🛠️ **Task / General Request**
|
|
||||||
Request a task that isn't a bug or feature request.
|
|
||||||
|
|
||||||
- type: input
|
|
||||||
id: task_summary
|
|
||||||
attributes:
|
|
||||||
label: "📌 Task summary"
|
|
||||||
placeholder: "e.g., Refactor XYZ"
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: task_details
|
|
||||||
attributes:
|
|
||||||
label: "📋 Task details"
|
|
||||||
placeholder: "Explain what needs to be done"
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
131
.github/autolabeler-config.json
vendored
131
.github/autolabeler-config.json
vendored
@@ -1,131 +0,0 @@
|
|||||||
{
|
|
||||||
"new script": [
|
|
||||||
{
|
|
||||||
"fileStatus": "added",
|
|
||||||
"includeGlobs": [
|
|
||||||
"ct/**",
|
|
||||||
"tools/**",
|
|
||||||
"install/**",
|
|
||||||
"misc/**",
|
|
||||||
"turnkey/**",
|
|
||||||
"vm/**"
|
|
||||||
],
|
|
||||||
"excludeGlobs": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"update script": [
|
|
||||||
{
|
|
||||||
"fileStatus": "modified",
|
|
||||||
"includeGlobs": [
|
|
||||||
"ct/**",
|
|
||||||
"tools/**",
|
|
||||||
"install/**",
|
|
||||||
"misc/**",
|
|
||||||
"turnkey/**",
|
|
||||||
"vm/**"
|
|
||||||
],
|
|
||||||
"excludeGlobs": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"delete script": [
|
|
||||||
{
|
|
||||||
"fileStatus": "removed",
|
|
||||||
"includeGlobs": [
|
|
||||||
"ct/**",
|
|
||||||
"tools/**",
|
|
||||||
"install/**",
|
|
||||||
"misc/**",
|
|
||||||
"turnkey/**",
|
|
||||||
"vm/**"
|
|
||||||
],
|
|
||||||
"excludeGlobs": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"maintenance": [
|
|
||||||
{
|
|
||||||
"fileStatus": null,
|
|
||||||
"includeGlobs": [
|
|
||||||
"*.md"
|
|
||||||
],
|
|
||||||
"excludeGlobs": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"core": [
|
|
||||||
{
|
|
||||||
"fileStatus": null,
|
|
||||||
"includeGlobs": [
|
|
||||||
"misc/*.func",
|
|
||||||
"misc/create_lxc.sh"
|
|
||||||
],
|
|
||||||
"excludeGlobs": [
|
|
||||||
"misc/api.func"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"website": [
|
|
||||||
{
|
|
||||||
"fileStatus": null,
|
|
||||||
"includeGlobs": [
|
|
||||||
"frontend/**"
|
|
||||||
],
|
|
||||||
"excludeGlobs": [
|
|
||||||
"frontend/public/json/**"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"api": [
|
|
||||||
{
|
|
||||||
"fileStatus": null,
|
|
||||||
"includeGlobs": [
|
|
||||||
"api/**",
|
|
||||||
"misc/api.func"
|
|
||||||
],
|
|
||||||
"excludeGlobs": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"github": [
|
|
||||||
{
|
|
||||||
"fileStatus": null,
|
|
||||||
"includeGlobs": [
|
|
||||||
".github/**"
|
|
||||||
],
|
|
||||||
"excludeGlobs": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"json": [
|
|
||||||
{
|
|
||||||
"fileStatus": "modified",
|
|
||||||
"includeGlobs": [
|
|
||||||
"frontend/public/json/**"
|
|
||||||
],
|
|
||||||
"excludeGlobs": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"addon": [
|
|
||||||
{
|
|
||||||
"fileStatus": null,
|
|
||||||
"includeGlobs": [
|
|
||||||
"tools/addon/**"
|
|
||||||
],
|
|
||||||
"excludeGlobs": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"pve-tool": [
|
|
||||||
{
|
|
||||||
"fileStatus": null,
|
|
||||||
"includeGlobs": [
|
|
||||||
"tools/pve/**"
|
|
||||||
],
|
|
||||||
"excludeGlobs": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"vm": [
|
|
||||||
{
|
|
||||||
"fileStatus": null,
|
|
||||||
"includeGlobs": [
|
|
||||||
"vm/**"
|
|
||||||
],
|
|
||||||
"excludeGlobs": []
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
148
.github/changelog-pr-config.json
vendored
148
.github/changelog-pr-config.json
vendored
@@ -1,148 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"title": "🆕 New Scripts",
|
|
||||||
"labels": [
|
|
||||||
"new script"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "🚀 Updated Scripts",
|
|
||||||
"labels": [
|
|
||||||
"update script"
|
|
||||||
],
|
|
||||||
"subCategories": [
|
|
||||||
{
|
|
||||||
"title": "🐞 Bug Fixes",
|
|
||||||
"labels": [
|
|
||||||
"bugfix"
|
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "✨ New Features",
|
|
||||||
"labels": [
|
|
||||||
"feature"
|
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "💥 Breaking Changes",
|
|
||||||
"labels": [
|
|
||||||
"breaking change"
|
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "🔧 Refactor",
|
|
||||||
"labels": [
|
|
||||||
"refactor"
|
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "🧰 Maintenance",
|
|
||||||
"labels": [
|
|
||||||
"maintenance"
|
|
||||||
],
|
|
||||||
"subCategories": [
|
|
||||||
{
|
|
||||||
"title": "🐞 Bug Fixes",
|
|
||||||
"labels": [
|
|
||||||
"bugfix"
|
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "✨ New Features",
|
|
||||||
"labels": [
|
|
||||||
"feature"
|
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "💥 Breaking Changes",
|
|
||||||
"labels": [
|
|
||||||
"breaking change"
|
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "📡 API",
|
|
||||||
"labels": [
|
|
||||||
"api"
|
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "💾 Core",
|
|
||||||
"labels": [
|
|
||||||
"core"
|
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "📂 Github",
|
|
||||||
"labels": [
|
|
||||||
"github"
|
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "📝 Documentation",
|
|
||||||
"labels": [
|
|
||||||
"maintenance"
|
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "🔧 Refactor",
|
|
||||||
"labels": [
|
|
||||||
"refactor"
|
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "🌐 Website",
|
|
||||||
"labels": [
|
|
||||||
"website"
|
|
||||||
],
|
|
||||||
"subCategories": [
|
|
||||||
{
|
|
||||||
"title": "🐞 Bug Fixes",
|
|
||||||
"labels": [
|
|
||||||
"bugfix"
|
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "✨ New Features",
|
|
||||||
"labels": [
|
|
||||||
"feature"
|
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "💥 Breaking Changes",
|
|
||||||
"labels": [
|
|
||||||
"breaking change"
|
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "📝 Script Information",
|
|
||||||
"labels": [
|
|
||||||
"json"
|
|
||||||
],
|
|
||||||
"notes": []
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "❔ Unlabelled",
|
|
||||||
"labels": []
|
|
||||||
}
|
|
||||||
]
|
|
||||||
9
.github/pull.yml
vendored
Normal file
9
.github/pull.yml
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
version: "1"
|
||||||
|
rules:
|
||||||
|
- base: main
|
||||||
|
upstream: tteck:main
|
||||||
|
mergeMethod: merge # [none, merge, squash, rebase, hardreset]
|
||||||
|
conflictReviewers:
|
||||||
|
- asylumexp
|
||||||
|
label: ":arrow_heading_down: pull"
|
||||||
|
conflictLabel: "merge-conflict"
|
||||||
16
.github/pull_request_template.md
vendored
16
.github/pull_request_template.md
vendored
@@ -1,16 +0,0 @@
|
|||||||
## ✍️ Description
|
|
||||||
<!-- Provide a clear and concise description of your changes. -->
|
|
||||||
|
|
||||||
## 🔗 Related PR / Discussion / Issue
|
|
||||||
|
|
||||||
Link: #
|
|
||||||
|
|
||||||
## ✅ Prerequisites
|
|
||||||
|
|
||||||
Before this PR can be reviewed, the following must be completed:
|
|
||||||
|
|
||||||
- [] **Self-review performed** – Code follows established patterns and conventions.
|
|
||||||
- [] **Testing performed** – Changes have been thoroughly tested and verified.
|
|
||||||
|
|
||||||
## 📋 Additional Information (optional)
|
|
||||||
<!-- Provide extra context, screenshots, or references if needed. -->
|
|
||||||
95
.github/workflows/frontend-cicd.yml
vendored
95
.github/workflows/frontend-cicd.yml
vendored
@@ -1,95 +0,0 @@
|
|||||||
name: Frontend CI/CD
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: ["main"]
|
|
||||||
paths:
|
|
||||||
- frontend/**
|
|
||||||
- json/**
|
|
||||||
|
|
||||||
pull_request:
|
|
||||||
branches: ["main"]
|
|
||||||
types: [opened, synchronize, reopened, edited]
|
|
||||||
paths:
|
|
||||||
- frontend/**
|
|
||||||
- json/**
|
|
||||||
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: pages-${{ github.ref }}
|
|
||||||
cancel-in-progress: false
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: frontend
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Update JSON statuses
|
|
||||||
run: |
|
|
||||||
JSON_DIR=public/json
|
|
||||||
STATUS_FILE="$JSON_DIR/statuses.json"
|
|
||||||
|
|
||||||
for file in "$JSON_DIR"/*.json; do
|
|
||||||
filename=$(basename "$file")
|
|
||||||
# skip the generated statuses.json itself
|
|
||||||
if [[ "$filename" == "statuses.json" ]]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
# pull status from statuses.json; skip if null or empty
|
|
||||||
status=$(jq -r --arg key "$filename" '.[$key] // empty' "$STATUS_FILE")
|
|
||||||
if [[ -n "$status" ]]; then
|
|
||||||
# inject/update top-level "status" field
|
|
||||||
jq --arg st "$status" '.status = $st' "$file" > "$file.tmp"
|
|
||||||
mv "$file.tmp" "$file"
|
|
||||||
echo "→ Updated $filename with status: $status"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
- name: Setup Node
|
|
||||||
uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: "20"
|
|
||||||
cache: npm
|
|
||||||
cache-dependency-path: frontend/package-lock.json
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: npm ci --prefer-offline --legacy-peer-deps
|
|
||||||
|
|
||||||
- name: Configure Next.js for pages
|
|
||||||
uses: actions/configure-pages@v5
|
|
||||||
with:
|
|
||||||
static_site_generator: next
|
|
||||||
|
|
||||||
- name: Build with Next.js
|
|
||||||
run: npm run build
|
|
||||||
|
|
||||||
- name: Upload artifact
|
|
||||||
if: github.ref == 'refs/heads/main'
|
|
||||||
uses: actions/upload-pages-artifact@v3
|
|
||||||
with:
|
|
||||||
path: frontend/out
|
|
||||||
|
|
||||||
deploy:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: build
|
|
||||||
if: github.ref == 'refs/heads/main' && github.repository == 'asylumexp/Proxmox'
|
|
||||||
permissions:
|
|
||||||
pages: write
|
|
||||||
id-token: write
|
|
||||||
environment:
|
|
||||||
name: github-pages
|
|
||||||
url: ${{ steps.deployment.outputs.page_url }}
|
|
||||||
steps:
|
|
||||||
- name: Deploy to GitHub Pages
|
|
||||||
id: deployment
|
|
||||||
uses: actions/deploy-pages@v4
|
|
||||||
78
.gitignore
vendored
78
.gitignore
vendored
@@ -1,78 +0,0 @@
|
|||||||
script*.py
|
|
||||||
# General OS files
|
|
||||||
.DS_Store
|
|
||||||
Thumbs.db
|
|
||||||
|
|
||||||
# Editor & IDE files (keeping .vscode settings but ignoring unnecessary metadata)
|
|
||||||
!.vscode/
|
|
||||||
.vscode/*.workspace
|
|
||||||
.vscode/*.tmp
|
|
||||||
|
|
||||||
# Log and Cache files
|
|
||||||
logs/
|
|
||||||
*.log
|
|
||||||
npm-debug.log*
|
|
||||||
yarn-debug.log*
|
|
||||||
yarn-error.log*
|
|
||||||
|
|
||||||
# Python-specific exclusions
|
|
||||||
__pycache__/
|
|
||||||
*.pyc
|
|
||||||
*.pyo
|
|
||||||
*.pyd
|
|
||||||
*.venv/
|
|
||||||
venv/
|
|
||||||
env/
|
|
||||||
*.env
|
|
||||||
|
|
||||||
# Node.js dependencies (frontend folder was excluded, but keeping this rule for reference)
|
|
||||||
frontend/node_modules/
|
|
||||||
frontend/.svelte-kit/
|
|
||||||
frontend/.turbo/
|
|
||||||
frontend/.vite/
|
|
||||||
frontend/build/
|
|
||||||
|
|
||||||
# API and Backend specific exclusions
|
|
||||||
api/.env
|
|
||||||
api/__pycache__/
|
|
||||||
api/*.sqlite3
|
|
||||||
|
|
||||||
# Install scripts and temporary files
|
|
||||||
install/tmp/
|
|
||||||
install/*.bak
|
|
||||||
|
|
||||||
# VM and Container-specific exclusions
|
|
||||||
vm/tmp/
|
|
||||||
vm/*.qcow2
|
|
||||||
vm/*.img
|
|
||||||
vm/*.vmdk
|
|
||||||
vm/*.iso
|
|
||||||
vm/*.bak
|
|
||||||
|
|
||||||
# Miscellaneous temporary or unnecessary files
|
|
||||||
*.bak
|
|
||||||
*.swp
|
|
||||||
*.swo
|
|
||||||
*.swn
|
|
||||||
*.tmp
|
|
||||||
*.backup
|
|
||||||
|
|
||||||
# JSON configuration backups
|
|
||||||
json/*.bak
|
|
||||||
json/*.tmp
|
|
||||||
json/.vscode/
|
|
||||||
|
|
||||||
# Ignore compiled binaries or packaged artifacts
|
|
||||||
*.exe
|
|
||||||
*.dll
|
|
||||||
*.bin
|
|
||||||
*.deb
|
|
||||||
*.rpm
|
|
||||||
*.tar.gz
|
|
||||||
*.zip
|
|
||||||
*.tgz
|
|
||||||
|
|
||||||
# Ignore repository metadata or Git itself
|
|
||||||
.git/
|
|
||||||
.gitignore
|
|
||||||
.vscode/settings.json
|
|
||||||
16
.vscode/.editorconfig
vendored
16
.vscode/.editorconfig
vendored
@@ -1,16 +0,0 @@
|
|||||||
; editorconfig.org
|
|
||||||
root = true
|
|
||||||
|
|
||||||
[*]
|
|
||||||
charset = utf-8
|
|
||||||
continuation_indent_size = 2
|
|
||||||
end_of_line = lf
|
|
||||||
indent_size = 2
|
|
||||||
indent_style = space
|
|
||||||
insert_final_newline = true
|
|
||||||
max_line_length = 120
|
|
||||||
tab_width = 2
|
|
||||||
; trim_trailing_whitespace = true ; disabled until files are cleaned up
|
|
||||||
|
|
||||||
[*.md]
|
|
||||||
trim_trailing_whitespace = false
|
|
||||||
9
.vscode/extensions.json
vendored
9
.vscode/extensions.json
vendored
@@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
"recommendations": [
|
|
||||||
"bmalehorn.shell-syntax",
|
|
||||||
"timonwong.shellcheck",
|
|
||||||
"foxundermoon.shell-format",
|
|
||||||
"editorconfig.editorconfig"
|
|
||||||
],
|
|
||||||
"unwantedRecommendations": []
|
|
||||||
}
|
|
||||||
11
.vscode/settings.json
vendored
11
.vscode/settings.json
vendored
@@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
"files.associations": {
|
|
||||||
"*.func": "shellscript"
|
|
||||||
},
|
|
||||||
"files.eol": "\n",
|
|
||||||
"files.insertFinalNewline": true,
|
|
||||||
"editor.formatOnSave": true,
|
|
||||||
"editor.codeActionsOnSave": {
|
|
||||||
"source.fixAll": "explicit"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
4960
CHANGELOG.md
4960
CHANGELOG.md
File diff suppressed because it is too large
Load Diff
14
CODE-AUDIT.md
Normal file
14
CODE-AUDIT.md
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<div align="center">
|
||||||
|
<img src="https://raw.githubusercontent.com/tteck/Proxmox/main/misc/images/logo.png" height="100px" />
|
||||||
|
</div>
|
||||||
|
<h2><div align="center">Exploring the Scripts and Steps Involved in an Application LXC Installation</div></h2>
|
||||||
|
|
||||||
|
1) [adguard.sh](https://github.com/tteck/Proxmox/blob/main/ct/adguard.sh): This script collects system parameters. (Also holds the function to update the application.)
|
||||||
|
2) [build.func](https://github.com/tteck/Proxmox/blob/main/misc/build.func): Adds user settings and integrates collected information.
|
||||||
|
3) [create_lxc.sh](https://github.com/tteck/Proxmox/blob/main/ct/create_lxc.sh): Constructs the LXC container.
|
||||||
|
4) [adguard-install.sh](https://github.com/tteck/Proxmox/blob/main/install/adguard-install.sh): Executes functions from [install.func](https://github.com/tteck/Proxmox/blob/main/misc/install.func), and installs the application.
|
||||||
|
5) [adguard.sh](https://github.com/tteck/Proxmox/blob/main/ct/adguard.sh) (again): To display the completion message.
|
||||||
|
|
||||||
|
The installation process uses reusable scripts: [build.func](https://github.com/tteck/Proxmox/blob/main/misc/build.func), [create_lxc.sh](https://github.com/tteck/Proxmox/blob/main/ct/create_lxc.sh), and [install.func](https://github.com/tteck/Proxmox/blob/main/misc/install.func), which are not specific to any particular application.
|
||||||
|
|
||||||
|
To gain a better understanding, focus on reviewing [adguard-install.sh](https://github.com/tteck/Proxmox/blob/main/install/adguard-install.sh). This script contains the commands and configurations for installing and configuring AdGuard Home within the LXC container.
|
||||||
2
LICENSE
2
LICENSE
@@ -1,6 +1,6 @@
|
|||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2021-2025 asylumexp
|
Copyright (c) 2021-2024 tteck
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
209
README.md
209
README.md
@@ -1,12 +1,10 @@
|
|||||||
<div align="center">
|
<div align="center">
|
||||||
<p align="center">
|
<a href="#">
|
||||||
<a href="#">
|
<img src="https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/images/logo.png" height="100px" />
|
||||||
<img src="https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/images/logo.png" height="100px" />
|
</a>
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
<h1 align="center">Proxmox arm64 Install Scripts</h1>
|
<h1 align="center">Proxmox arm64 Install Scripts</h1>
|
||||||
<h3 align="center">a port of the Promox VE Helper-Scripts to arm64!</h3>
|
<h3 align="center">an unofficial port of tteck's Helper-Scripts to arm64!</h3>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://pimox-scripts.com">Website</a> |
|
<a href="https://pimox-scripts.com">Website</a> |
|
||||||
@@ -23,7 +21,7 @@
|
|||||||
|
|
||||||
### About
|
### About
|
||||||
|
|
||||||
Ports the [Promox VE Helper Scripts](https://github.com/community-scripts/proxmoxve) project to ARM64.
|
Ports of tteck's proxmox scripts to ARM64.
|
||||||
|
|
||||||
Find the scripts in the website linked above.
|
Find the scripts in the website linked above.
|
||||||
|
|
||||||
@@ -33,6 +31,199 @@ Any issues with the scripts, please put an issue within this repository rather t
|
|||||||
|
|
||||||
If you would like to offer support, I would appreciate a star on the repository, or for you to support the creator of the Proxmox scripts [tteck on Ko-Fi](https://ko-fi.com/D1D7EP4GF)!
|
If you would like to offer support, I would appreciate a star on the repository, or for you to support the creator of the Proxmox scripts [tteck on Ko-Fi](https://ko-fi.com/D1D7EP4GF)!
|
||||||
|
|
||||||
## Compatibility Guide
|
## VM Compatibility Guide
|
||||||
|
|
||||||
[View Compatibility Guide here](https://pimox-scripts.com)
|
| Icon | Description |
|
||||||
|
| ---- | -------------------------------------------------- |
|
||||||
|
| ☑️ | Creating the LXC using the script has been tested. |
|
||||||
|
| ⭕ | Install script is ported, but has not been tested. |
|
||||||
|
| ❌ | Unsupported. View notes for reason. |
|
||||||
|
| 🔘 | Install script not ported to ARM64. |
|
||||||
|
|
||||||
|
| OS | Status | Notes |
|
||||||
|
| ------------------------------- | ------ | -------------------------------------------------------------------------------------------------------- |
|
||||||
|
| Debian | ⭕ | Needs testing. |
|
||||||
|
| Home Assistant OS | ❌ | Use Pimox HAOS VM script. |
|
||||||
|
| Mikrotik RouterOS | ❌ | No arm64 image available. |
|
||||||
|
| NextCloud | ❌ | No arm64 image available. Not present on website. |
|
||||||
|
| OpenWRT | ⭕ | Needs testing. |
|
||||||
|
| OwnCloud | ❌ | No arm64 image available. |
|
||||||
|
| Pimox HAOS | ☑️ | |
|
||||||
|
| Ubuntu 22.04 | ⭕ | Needs testing. |
|
||||||
|
| Ubuntu 24.04 | ⭕ | Needs testing. |
|
||||||
|
|
||||||
|
## LXC Compatibility Guide
|
||||||
|
|
||||||
|
| App | Status | Notes |
|
||||||
|
| ------------------------------- | ------ | -------------------------------------------------------------------------------------------------------- |
|
||||||
|
| Actual Budget | ☑️ | |
|
||||||
|
| AdGuard Home | ☑️ | |
|
||||||
|
| AgentDVR | ☑️ | |
|
||||||
|
| Apache-Cassandra | ☑️ | |
|
||||||
|
| Alpine Docker | ☑️ | |
|
||||||
|
| Alpine Grafana | ☑️ | |
|
||||||
|
| Alpine | ☑️ | |
|
||||||
|
| Alpine Nextcloud | ☑️ | |
|
||||||
|
| Alpine Vaultwarden | ☑️ | |
|
||||||
|
| Alpine Zigbee2mqtt | ☑️ | |
|
||||||
|
| Apache-CouchDB | ☑️ | |
|
||||||
|
| Apt-Cacher-NG | ☑️ | Won't work with Debian template from before 2024/06/08 (need to delete tar /var/lib/vz/template/cache/). |
|
||||||
|
| Aria2 | ☑️ | |
|
||||||
|
| Audiobookshelf | ☑️ | |
|
||||||
|
| Autobrr | ☑️ | |
|
||||||
|
| Bazarr | ☑️ | |
|
||||||
|
| Blocky | ☑️ | |
|
||||||
|
| Caddy | ☑️ | |
|
||||||
|
| Calibre-Web | ☑️ | |
|
||||||
|
| CasaOS | ☑️ | |
|
||||||
|
| Change Detection | ☑️ | |
|
||||||
|
| Channels DVR Server | ☑️ | |
|
||||||
|
| Cloudflared | ☑️ | |
|
||||||
|
| CommaFeed | ☑️ | |
|
||||||
|
| Cronicle Primary | ☑️ | |
|
||||||
|
| Dashy | ☑️ | |
|
||||||
|
| deCONZ | ☑️ | |
|
||||||
|
| Daemon Sync Server | ❌ | Built for x64 only. |
|
||||||
|
| Debian | ☑️ | |
|
||||||
|
| Deluge | ☑️ | |
|
||||||
|
| Docker | ☑️ | |
|
||||||
|
| Dockge | ☑️ | |
|
||||||
|
| Emby Media Server | ☑️ | |
|
||||||
|
| EMQX | ☑️ | |
|
||||||
|
| ErsatzTV | ☑️ | |
|
||||||
|
| ESPHome | ☑️ | |
|
||||||
|
| Fenrus | ☑️ | |
|
||||||
|
| FHEM | ☑️ | |
|
||||||
|
| FlareSolverr | ☑️ | |
|
||||||
|
| FlowiseAI | ☑️ | |
|
||||||
|
| Forgejo | ☑️ | |
|
||||||
|
| Frigate | ☑️ | |
|
||||||
|
| go2rtc | ☑️ | |
|
||||||
|
| Gokapi | ☑️ | |
|
||||||
|
| Gotify | ☑️ | |
|
||||||
|
| Grafana | ☑️ | |
|
||||||
|
| grocy | ☑️ | |
|
||||||
|
| Heimdall Dashboard | ☑️ | |
|
||||||
|
| HiveMQ CE | ☑️ | |
|
||||||
|
| Homarr | ☑️ | |
|
||||||
|
| Home Assistant Core | ☑️ | |
|
||||||
|
| Home Assistant Container | ☑️ | |
|
||||||
|
| Homebridge | ☑️ | |
|
||||||
|
| Homepage | ☑️ | |
|
||||||
|
| Homer | ☑️ | |
|
||||||
|
| HyperHDR | ☑️ | |
|
||||||
|
| Hyperion | ☑️ | |
|
||||||
|
| InfluxDB | ☑️ | |
|
||||||
|
| ioBroker | ☑️ | |
|
||||||
|
| iVentoy | ☑️ | |
|
||||||
|
| Jackett | ☑️ | |
|
||||||
|
| Jellyfin Media Server | ☑️ | |
|
||||||
|
| Jellyseerr | ☑️ | |
|
||||||
|
| k0s | ☑️ | |
|
||||||
|
| Kavita | ☑️ | |
|
||||||
|
| Keycloak | ☑️ | |
|
||||||
|
| Kubo | ☑️ | |
|
||||||
|
| LazyLibrarian | ☑️ | |
|
||||||
|
| Lidarr | ☑️ | |
|
||||||
|
| Linkwarden | ☑️ | |
|
||||||
|
| Mafl | ☑️ | |
|
||||||
|
| MagicMirror Server | ☑️ | |
|
||||||
|
| Mariadb | ☑️ | |
|
||||||
|
| Matterbridge | ☑️ | |
|
||||||
|
| MediaMTX | ☑️ | |
|
||||||
|
| Medusa | ☑️ | |
|
||||||
|
| MeshCentral | ☑️ | |
|
||||||
|
| MeTube | ☑️ | |
|
||||||
|
| MongoDB | ☑️ | Only supports ARMv8.2-a currently. (no RPI4 support). |
|
||||||
|
| MotionEye NVR | ☑️ | |
|
||||||
|
| MQTT | ☑️ | |
|
||||||
|
| n8n | ☑️ | |
|
||||||
|
| MySpeed | ☑️ | |
|
||||||
|
| Navidrome | ☑️ | |
|
||||||
|
| NextCloudPi | ☑️ | |
|
||||||
|
| Nginx Proxy Manager | ☑️ | |
|
||||||
|
| NocoDB | ☑️ | |
|
||||||
|
| Node-Red | ☑️ | |
|
||||||
|
| Notifiarr | ☑️ | |
|
||||||
|
| ntfy | ☑️ | |
|
||||||
|
| OctoPrint | ☑️ | |
|
||||||
|
| Omada Controller | ☑️ | |
|
||||||
|
| Ombi | ☑️ | |
|
||||||
|
| OpenMediaVault | ☑️ | |
|
||||||
|
| openHAB | ☑️ | |
|
||||||
|
| OpenObserve | ☑️ | |
|
||||||
|
| Overseerr | ☑️ | |
|
||||||
|
| Owncast | ☑️ | |
|
||||||
|
| PairDrop | ☑️ | |
|
||||||
|
| Paperless-ngx | ☑️ | |
|
||||||
|
| PBS | ☑️ | Proxmox Backup Server |
|
||||||
|
| PeaNUT | ☑️ | |
|
||||||
|
| Petio | ☑️ | Only supports ARMv8.2-a currently. (no RPI4 support). |
|
||||||
|
| PhotoPrism | ☑️ | |
|
||||||
|
| Pi.Alert | ☑️ | |
|
||||||
|
| Pi-Hole | ☑️ | |
|
||||||
|
| Pingvin Share | ☑️ | |
|
||||||
|
| Plex Media Server | ☑️ | |
|
||||||
|
| Pocketbase | ☑️ | |
|
||||||
|
| Podman Home Assistant Container | ☑️ | |
|
||||||
|
| Podman | ☑️ | |
|
||||||
|
| PostgreSQL | ☑️ | |
|
||||||
|
| Prometheus | ☑️ | |
|
||||||
|
| Prowlarr | ☑️ | |
|
||||||
|
| qBittorrent | ☑️ | |
|
||||||
|
| RabbitMQ | ☑️ | |
|
||||||
|
| Radarr | ☑️ | |
|
||||||
|
| RDTClient | ☑️ | Real-Debrid Torrent Client |
|
||||||
|
| Readarr | ☑️ | |
|
||||||
|
| Readeck | ☑️ | |
|
||||||
|
| Redis | ☑️ | |
|
||||||
|
| RTSPtoWeb | ☑️ | |
|
||||||
|
| Runtipi | ☑️ | |
|
||||||
|
| SABnzbd | ☑️ | |
|
||||||
|
| Scrypted | ☑️ | |
|
||||||
|
| Scrutiny | ☑️ | |
|
||||||
|
| SFTPGo | ☑️ | |
|
||||||
|
| Shinobi NVR | ☑️ | |
|
||||||
|
| SmokePing | ☑️ | |
|
||||||
|
| Sonarr | ☑️ | |
|
||||||
|
| SpoolMan | ☑️ | |
|
||||||
|
| Stirling-PDF | ☑️ | |
|
||||||
|
| Syncthing | ☑️ | |
|
||||||
|
| Tandoor Recipes | ☑️ | |
|
||||||
|
| TasmoAdmin | ☑️ | |
|
||||||
|
| Tautulli | ☑️ | |
|
||||||
|
| Tdarr | ☑️ | |
|
||||||
|
| Technitium DNS | ☑️ | |
|
||||||
|
| Threadfin | ☑️ | |
|
||||||
|
| Traccar | ☑️ | |
|
||||||
|
| Traefik | ☑️ | |
|
||||||
|
| Transmission | ☑️ | |
|
||||||
|
| Trilium | ❌ | Built for x64 only. |
|
||||||
|
| Umami | ☑️ | |
|
||||||
|
| Ubuntu | ☑️ | |
|
||||||
|
| Umbrel | ☑️ | |
|
||||||
|
| UniFi Network Server | ☑️ | |
|
||||||
|
| Unmanic | ☑️ | |
|
||||||
|
| Uptime Kuma | ☑️ | |
|
||||||
|
| Vaultwarden | ☑️ | Will probably work on default install if you have a lot of ram. Otherwise use the Alpine Linux version. |
|
||||||
|
| Wastebin | ☑️ | |
|
||||||
|
| WatchYourLAN | ☑️ | |
|
||||||
|
| Whisparr | ☑️ | |
|
||||||
|
| Whoogle | ☑️ | |
|
||||||
|
| Wiki.js | ☑️ | |
|
||||||
|
| WireGuard | ☑️ | |
|
||||||
|
| YunoHost | ☑️ | |
|
||||||
|
| Zabbix | ☑️ | |
|
||||||
|
| Zigbee2MQTT | ☑️ | |
|
||||||
|
| Zoraxy | ☑️ | |
|
||||||
|
| Z-Wave JS UI | ☑️ | |
|
||||||
|
|
||||||
|
## Miscellaneous Compatibility Guide
|
||||||
|
|
||||||
|
| Script | Status | Notes |
|
||||||
|
| -------------- | ------ | -------------------- |
|
||||||
|
| File Browser | ☑️ | |
|
||||||
|
| OliveTin | ☑️ | |
|
||||||
|
| NetBird | ☑️ | No changes required. |
|
||||||
|
| Tailscale | ☑️ | No changes required. |
|
||||||
|
| VS Code Server | ☑️ | |
|
||||||
|
|||||||
24
SECURITY.md
24
SECURITY.md
@@ -1,24 +0,0 @@
|
|||||||
## Supported Versions
|
|
||||||
This project currently supports the following versions of Proxmox VE:
|
|
||||||
|
|
||||||
| Version | Supported |
|
|
||||||
| ------- | ------------------ |
|
|
||||||
| 8.4.x | :white_check_mark: |
|
|
||||||
| 8.3.x | :white_check_mark: |
|
|
||||||
| 8.2.x | :white_check_mark: |
|
|
||||||
| 8.1.x | :white_check_mark: |
|
|
||||||
| 8.0.x | Limited support* ❕|
|
|
||||||
| < 8.0 | :x: |
|
|
||||||
|
|
||||||
*Version 8.0.x has limited support. Security updates may not be provided for all issues in this version.
|
|
||||||
|
|
||||||
## Reporting a Vulnerability
|
|
||||||
|
|
||||||
Security vulnerabilities shouldn’t be reported publicly to prevent potential exploitation. Instead, please report any vulnerabilities privately by reaching out directly to us. You can either join our [Discord server](https://discord.gg/jsYVk5JBxq) and send a direct message to a maintainer or contact us via email at contact@community-scripts.org. Be sure to include a detailed description of the vulnerability and the steps to reproduce it. Thank you for helping us keep our project secure!
|
|
||||||
|
|
||||||
Once a vulnerability has been reported, the project maintainers will review it and acknowledge the report within 7 business days. We will then work to address the vulnerability and provide a fix as soon as possible. Depending on the severity of the issue, a patch may be released immediately or included in the next scheduled update.
|
|
||||||
|
|
||||||
Please note that not all reported vulnerabilities may be accepted. The project maintainers reserve the right to decline a vulnerability report if it is deemed to be a low-risk issue or if it conflicts with the project's design or architecture. In such cases, we will provide an explanation for the decision.
|
|
||||||
|
|
||||||
If you have any questions or concerns about this security policy, please don't hesitate to contact the project maintainers.
|
|
||||||
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
<div align="center">
|
<div align="center">
|
||||||
<a href="#">
|
<a href="#">
|
||||||
<img src="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/images/logo.png" height="100px" />
|
<img src="https://raw.githubusercontent.com/tteck/Proxmox/main/misc/images/logo.png" height="100px" />
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<h2 align="center">User Submitted Guides </h2>
|
<h2 align="center">User Submitted Guides </h2>
|
||||||
@@ -38,7 +38,3 @@
|
|||||||
[Proxmox + NetData](<https://dbt3ch.com/books/proxmox-netdata-for-better-insights-and-notifications/page/proxmox-netdata-for-better-insights-and-notifications>)
|
[Proxmox + NetData](<https://dbt3ch.com/books/proxmox-netdata-for-better-insights-and-notifications/page/proxmox-netdata-for-better-insights-and-notifications>)
|
||||||
|
|
||||||
[Proxmox Homelab Series](<https://blog.kye.dev/proxmox-series>)
|
[Proxmox Homelab Series](<https://blog.kye.dev/proxmox-series>)
|
||||||
|
|
||||||
[The fastest installation of Docker and Portainer on Proxmox VE](https://lavr.site/en-fastest-install-docker-portainer-proxmox/)
|
|
||||||
|
|
||||||
[How To Setup Proxmox Backuper Server Using Helper Scripts](<https://youtu.be/6C2JOsrZZZw?si=kkrrcL_nLCDBJkOB>)
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
MONGO_USER=
|
|
||||||
MONGO_PASSWORD=
|
|
||||||
MONGO_IP=
|
|
||||||
MONGO_PORT=
|
|
||||||
MONGO_DATABASE=
|
|
||||||
23
api/go.mod
23
api/go.mod
@@ -1,23 +0,0 @@
|
|||||||
module proxmox-api
|
|
||||||
|
|
||||||
go 1.23.2
|
|
||||||
|
|
||||||
require (
|
|
||||||
github.com/gorilla/mux v1.8.1
|
|
||||||
github.com/joho/godotenv v1.5.1
|
|
||||||
github.com/rs/cors v1.11.1
|
|
||||||
go.mongodb.org/mongo-driver v1.17.2
|
|
||||||
)
|
|
||||||
|
|
||||||
require (
|
|
||||||
github.com/golang/snappy v0.0.4 // indirect
|
|
||||||
github.com/klauspost/compress v1.16.7 // indirect
|
|
||||||
github.com/montanaflynn/stats v0.7.1 // indirect
|
|
||||||
github.com/xdg-go/pbkdf2 v1.0.0 // indirect
|
|
||||||
github.com/xdg-go/scram v1.1.2 // indirect
|
|
||||||
github.com/xdg-go/stringprep v1.0.4 // indirect
|
|
||||||
github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect
|
|
||||||
golang.org/x/crypto v0.35.0 // indirect
|
|
||||||
golang.org/x/sync v0.11.0 // indirect
|
|
||||||
golang.org/x/text v0.22.0 // indirect
|
|
||||||
)
|
|
||||||
56
api/go.sum
56
api/go.sum
@@ -1,56 +0,0 @@
|
|||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
|
||||||
github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
|
|
||||||
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
|
||||||
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
|
||||||
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
|
||||||
github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
|
|
||||||
github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
|
|
||||||
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
|
|
||||||
github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
|
|
||||||
github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I=
|
|
||||||
github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
|
|
||||||
github.com/montanaflynn/stats v0.7.1 h1:etflOAAHORrCC44V+aR6Ftzort912ZU+YLiSTuV8eaE=
|
|
||||||
github.com/montanaflynn/stats v0.7.1/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow=
|
|
||||||
github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA=
|
|
||||||
github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU=
|
|
||||||
github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c=
|
|
||||||
github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
|
|
||||||
github.com/xdg-go/scram v1.1.2 h1:FHX5I5B4i4hKRVRBCFRxq1iQRej7WO3hhBuJf+UUySY=
|
|
||||||
github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4=
|
|
||||||
github.com/xdg-go/stringprep v1.0.4 h1:XLI/Ng3O1Atzq0oBs3TWm+5ZVgkq2aqdlvP9JtoZ6c8=
|
|
||||||
github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM=
|
|
||||||
github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 h1:ilQV1hzziu+LLM3zUTJ0trRztfwgjqKnBWNtSRkbmwM=
|
|
||||||
github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78/go.mod h1:aL8wCCfTfSfmXjznFBSZNN13rSJjlIOI1fUNAtF7rmI=
|
|
||||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
|
||||||
go.mongodb.org/mongo-driver v1.17.2 h1:gvZyk8352qSfzyZ2UMWcpDpMSGEr1eqE4T793SqyhzM=
|
|
||||||
go.mongodb.org/mongo-driver v1.17.2/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ=
|
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
|
||||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
|
||||||
golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs=
|
|
||||||
golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ=
|
|
||||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
|
||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
|
||||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
|
||||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
|
||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
||||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
||||||
golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w=
|
|
||||||
golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
|
||||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
|
||||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
|
||||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
|
||||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
|
||||||
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
|
|
||||||
golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
|
|
||||||
golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
|
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
|
||||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
|
||||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
|
||||||
450
api/main.go
450
api/main.go
@@ -1,450 +0,0 @@
|
|||||||
// Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
// Author: Michel Roegl-Brunner (michelroegl-brunner)
|
|
||||||
// License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
|
||||||
"log"
|
|
||||||
"net/http"
|
|
||||||
"os"
|
|
||||||
"strconv"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/gorilla/mux"
|
|
||||||
"github.com/joho/godotenv"
|
|
||||||
"github.com/rs/cors"
|
|
||||||
"go.mongodb.org/mongo-driver/bson"
|
|
||||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
||||||
"go.mongodb.org/mongo-driver/mongo"
|
|
||||||
"go.mongodb.org/mongo-driver/mongo/options"
|
|
||||||
)
|
|
||||||
|
|
||||||
var client *mongo.Client
|
|
||||||
var collection *mongo.Collection
|
|
||||||
|
|
||||||
func loadEnv() {
|
|
||||||
if err := godotenv.Load(); err != nil {
|
|
||||||
log.Fatal("Error loading .env file")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// DataModel represents a single document in MongoDB
|
|
||||||
type DataModel struct {
|
|
||||||
ID primitive.ObjectID `json:"id" bson:"_id,omitempty"`
|
|
||||||
CT_TYPE uint `json:"ct_type" bson:"ct_type"`
|
|
||||||
DISK_SIZE float32 `json:"disk_size" bson:"disk_size"`
|
|
||||||
CORE_COUNT uint `json:"core_count" bson:"core_count"`
|
|
||||||
RAM_SIZE uint `json:"ram_size" bson:"ram_size"`
|
|
||||||
OS_TYPE string `json:"os_type" bson:"os_type"`
|
|
||||||
OS_VERSION string `json:"os_version" bson:"os_version"`
|
|
||||||
DISABLEIP6 string `json:"disableip6" bson:"disableip6"`
|
|
||||||
NSAPP string `json:"nsapp" bson:"nsapp"`
|
|
||||||
METHOD string `json:"method" bson:"method"`
|
|
||||||
CreatedAt time.Time `json:"created_at" bson:"created_at"`
|
|
||||||
PVEVERSION string `json:"pve_version" bson:"pve_version"`
|
|
||||||
STATUS string `json:"status" bson:"status"`
|
|
||||||
RANDOM_ID string `json:"random_id" bson:"random_id"`
|
|
||||||
TYPE string `json:"type" bson:"type"`
|
|
||||||
ERROR string `json:"error" bson:"error"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type StatusModel struct {
|
|
||||||
RANDOM_ID string `json:"random_id" bson:"random_id"`
|
|
||||||
ERROR string `json:"error" bson:"error"`
|
|
||||||
STATUS string `json:"status" bson:"status"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type CountResponse struct {
|
|
||||||
TotalEntries int64 `json:"total_entries"`
|
|
||||||
StatusCount map[string]int64 `json:"status_count"`
|
|
||||||
NSAPPCount map[string]int64 `json:"nsapp_count"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// ConnectDatabase initializes the MongoDB connection
|
|
||||||
func ConnectDatabase() {
|
|
||||||
loadEnv()
|
|
||||||
|
|
||||||
mongoURI := fmt.Sprintf("mongodb://%s:%s@%s:%s",
|
|
||||||
os.Getenv("MONGO_USER"),
|
|
||||||
os.Getenv("MONGO_PASSWORD"),
|
|
||||||
os.Getenv("MONGO_IP"),
|
|
||||||
os.Getenv("MONGO_PORT"))
|
|
||||||
|
|
||||||
database := os.Getenv("MONGO_DATABASE")
|
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
var err error
|
|
||||||
client, err = mongo.Connect(ctx, options.Client().ApplyURI(mongoURI))
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal("Failed to connect to MongoDB!", err)
|
|
||||||
}
|
|
||||||
collection = client.Database(database).Collection("data_models")
|
|
||||||
fmt.Println("Connected to MongoDB on 10.10.10.18")
|
|
||||||
}
|
|
||||||
|
|
||||||
// UploadJSON handles API requests and stores data as a document in MongoDB
|
|
||||||
func UploadJSON(w http.ResponseWriter, r *http.Request) {
|
|
||||||
var input DataModel
|
|
||||||
|
|
||||||
if err := json.NewDecoder(r.Body).Decode(&input); err != nil {
|
|
||||||
http.Error(w, err.Error(), http.StatusBadRequest)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
input.CreatedAt = time.Now()
|
|
||||||
|
|
||||||
_, err := collection.InsertOne(context.Background(), input)
|
|
||||||
if err != nil {
|
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
log.Println("Received data:", input)
|
|
||||||
w.WriteHeader(http.StatusCreated)
|
|
||||||
json.NewEncoder(w).Encode(map[string]string{"message": "Data saved successfully"})
|
|
||||||
}
|
|
||||||
|
|
||||||
// UpdateStatus updates the status of a record based on RANDOM_ID
|
|
||||||
func UpdateStatus(w http.ResponseWriter, r *http.Request) {
|
|
||||||
var input StatusModel
|
|
||||||
|
|
||||||
if err := json.NewDecoder(r.Body).Decode(&input); err != nil {
|
|
||||||
http.Error(w, err.Error(), http.StatusBadRequest)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
filter := bson.M{"random_id": input.RANDOM_ID}
|
|
||||||
update := bson.M{"$set": bson.M{"status": input.STATUS, "error": input.ERROR}}
|
|
||||||
|
|
||||||
_, err := collection.UpdateOne(context.Background(), filter, update)
|
|
||||||
if err != nil {
|
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
log.Println("Updated data:", input)
|
|
||||||
w.WriteHeader(http.StatusOK)
|
|
||||||
json.NewEncoder(w).Encode(map[string]string{"message": "Record updated successfully"})
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetDataJSON fetches all data from MongoDB
|
|
||||||
func GetDataJSON(w http.ResponseWriter, r *http.Request) {
|
|
||||||
var records []DataModel
|
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
cursor, err := collection.Find(ctx, bson.M{})
|
|
||||||
if err != nil {
|
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
defer cursor.Close(ctx)
|
|
||||||
|
|
||||||
for cursor.Next(ctx) {
|
|
||||||
var record DataModel
|
|
||||||
if err := cursor.Decode(&record); err != nil {
|
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
records = append(records, record)
|
|
||||||
}
|
|
||||||
|
|
||||||
w.Header().Set("Content-Type", "application/json")
|
|
||||||
json.NewEncoder(w).Encode(records)
|
|
||||||
}
|
|
||||||
func GetPaginatedData(w http.ResponseWriter, r *http.Request) {
|
|
||||||
page, _ := strconv.Atoi(r.URL.Query().Get("page"))
|
|
||||||
limit, _ := strconv.Atoi(r.URL.Query().Get("limit"))
|
|
||||||
if page < 1 {
|
|
||||||
page = 1
|
|
||||||
}
|
|
||||||
if limit < 1 {
|
|
||||||
limit = 10
|
|
||||||
}
|
|
||||||
skip := (page - 1) * limit
|
|
||||||
var records []DataModel
|
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
options := options.Find().SetSkip(int64(skip)).SetLimit(int64(limit))
|
|
||||||
cursor, err := collection.Find(ctx, bson.M{}, options)
|
|
||||||
if err != nil {
|
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
defer cursor.Close(ctx)
|
|
||||||
|
|
||||||
for cursor.Next(ctx) {
|
|
||||||
var record DataModel
|
|
||||||
if err := cursor.Decode(&record); err != nil {
|
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
records = append(records, record)
|
|
||||||
}
|
|
||||||
|
|
||||||
w.Header().Set("Content-Type", "application/json")
|
|
||||||
json.NewEncoder(w).Encode(records)
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetSummary(w http.ResponseWriter, r *http.Request) {
|
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
totalCount, err := collection.CountDocuments(ctx, bson.M{})
|
|
||||||
if err != nil {
|
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
statusCount := make(map[string]int64)
|
|
||||||
nsappCount := make(map[string]int64)
|
|
||||||
|
|
||||||
pipeline := []bson.M{
|
|
||||||
{"$group": bson.M{"_id": "$status", "count": bson.M{"$sum": 1}}},
|
|
||||||
}
|
|
||||||
cursor, err := collection.Aggregate(ctx, pipeline)
|
|
||||||
if err == nil {
|
|
||||||
for cursor.Next(ctx) {
|
|
||||||
var result struct {
|
|
||||||
ID string `bson:"_id"`
|
|
||||||
Count int64 `bson:"count"`
|
|
||||||
}
|
|
||||||
if err := cursor.Decode(&result); err == nil {
|
|
||||||
statusCount[result.ID] = result.Count
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pipeline = []bson.M{
|
|
||||||
{"$group": bson.M{"_id": "$nsapp", "count": bson.M{"$sum": 1}}},
|
|
||||||
}
|
|
||||||
cursor, err = collection.Aggregate(ctx, pipeline)
|
|
||||||
if err == nil {
|
|
||||||
for cursor.Next(ctx) {
|
|
||||||
var result struct {
|
|
||||||
ID string `bson:"_id"`
|
|
||||||
Count int64 `bson:"count"`
|
|
||||||
}
|
|
||||||
if err := cursor.Decode(&result); err == nil {
|
|
||||||
nsappCount[result.ID] = result.Count
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
response := CountResponse{
|
|
||||||
TotalEntries: totalCount,
|
|
||||||
StatusCount: statusCount,
|
|
||||||
NSAPPCount: nsappCount,
|
|
||||||
}
|
|
||||||
|
|
||||||
w.Header().Set("Content-Type", "application/json")
|
|
||||||
json.NewEncoder(w).Encode(response)
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetByNsapp(w http.ResponseWriter, r *http.Request) {
|
|
||||||
nsapp := r.URL.Query().Get("nsapp")
|
|
||||||
var records []DataModel
|
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
cursor, err := collection.Find(ctx, bson.M{"nsapp": nsapp})
|
|
||||||
if err != nil {
|
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
defer cursor.Close(ctx)
|
|
||||||
|
|
||||||
for cursor.Next(ctx) {
|
|
||||||
var record DataModel
|
|
||||||
if err := cursor.Decode(&record); err != nil {
|
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
records = append(records, record)
|
|
||||||
}
|
|
||||||
|
|
||||||
w.Header().Set("Content-Type", "application/json")
|
|
||||||
json.NewEncoder(w).Encode(records)
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetByDateRange(w http.ResponseWriter, r *http.Request) {
|
|
||||||
|
|
||||||
startDate := r.URL.Query().Get("start_date")
|
|
||||||
endDate := r.URL.Query().Get("end_date")
|
|
||||||
|
|
||||||
if startDate == "" || endDate == "" {
|
|
||||||
http.Error(w, "Both start_date and end_date are required", http.StatusBadRequest)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
start, err := time.Parse("2006-01-02T15:04:05.999999+00:00", startDate+"T00:00:00+00:00")
|
|
||||||
if err != nil {
|
|
||||||
http.Error(w, "Invalid start_date format", http.StatusBadRequest)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
end, err := time.Parse("2006-01-02T15:04:05.999999+00:00", endDate+"T23:59:59+00:00")
|
|
||||||
if err != nil {
|
|
||||||
http.Error(w, "Invalid end_date format", http.StatusBadRequest)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
var records []DataModel
|
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
cursor, err := collection.Find(ctx, bson.M{
|
|
||||||
"created_at": bson.M{
|
|
||||||
"$gte": start,
|
|
||||||
"$lte": end,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
defer cursor.Close(ctx)
|
|
||||||
|
|
||||||
for cursor.Next(ctx) {
|
|
||||||
var record DataModel
|
|
||||||
if err := cursor.Decode(&record); err != nil {
|
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
records = append(records, record)
|
|
||||||
}
|
|
||||||
|
|
||||||
w.Header().Set("Content-Type", "application/json")
|
|
||||||
json.NewEncoder(w).Encode(records)
|
|
||||||
}
|
|
||||||
func GetByStatus(w http.ResponseWriter, r *http.Request) {
|
|
||||||
status := r.URL.Query().Get("status")
|
|
||||||
var records []DataModel
|
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
cursor, err := collection.Find(ctx, bson.M{"status": status})
|
|
||||||
if err != nil {
|
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
defer cursor.Close(ctx)
|
|
||||||
|
|
||||||
for cursor.Next(ctx) {
|
|
||||||
var record DataModel
|
|
||||||
if err := cursor.Decode(&record); err != nil {
|
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
records = append(records, record)
|
|
||||||
}
|
|
||||||
|
|
||||||
w.Header().Set("Content-Type", "application/json")
|
|
||||||
json.NewEncoder(w).Encode(records)
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetByOS(w http.ResponseWriter, r *http.Request) {
|
|
||||||
osType := r.URL.Query().Get("os_type")
|
|
||||||
osVersion := r.URL.Query().Get("os_version")
|
|
||||||
var records []DataModel
|
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
cursor, err := collection.Find(ctx, bson.M{"os_type": osType, "os_version": osVersion})
|
|
||||||
if err != nil {
|
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
defer cursor.Close(ctx)
|
|
||||||
|
|
||||||
for cursor.Next(ctx) {
|
|
||||||
var record DataModel
|
|
||||||
if err := cursor.Decode(&record); err != nil {
|
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
records = append(records, record)
|
|
||||||
}
|
|
||||||
|
|
||||||
w.Header().Set("Content-Type", "application/json")
|
|
||||||
json.NewEncoder(w).Encode(records)
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetErrors(w http.ResponseWriter, r *http.Request) {
|
|
||||||
errorCount := make(map[string]int)
|
|
||||||
|
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
cursor, err := collection.Find(ctx, bson.M{"error": bson.M{"$ne": ""}})
|
|
||||||
if err != nil {
|
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
defer cursor.Close(ctx)
|
|
||||||
|
|
||||||
for cursor.Next(ctx) {
|
|
||||||
var record DataModel
|
|
||||||
if err := cursor.Decode(&record); err != nil {
|
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if record.ERROR != "" {
|
|
||||||
errorCount[record.ERROR]++
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type ErrorCountResponse struct {
|
|
||||||
Error string `json:"error"`
|
|
||||||
Count int `json:"count"`
|
|
||||||
}
|
|
||||||
|
|
||||||
var errorCounts []ErrorCountResponse
|
|
||||||
for err, count := range errorCount {
|
|
||||||
errorCounts = append(errorCounts, ErrorCountResponse{
|
|
||||||
Error: err,
|
|
||||||
Count: count,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
w.Header().Set("Content-Type", "application/json")
|
|
||||||
json.NewEncoder(w).Encode(struct {
|
|
||||||
ErrorCounts []ErrorCountResponse `json:"error_counts"`
|
|
||||||
}{
|
|
||||||
ErrorCounts: errorCounts,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
ConnectDatabase()
|
|
||||||
|
|
||||||
router := mux.NewRouter()
|
|
||||||
router.HandleFunc("/upload", UploadJSON).Methods("POST")
|
|
||||||
router.HandleFunc("/upload/updatestatus", UpdateStatus).Methods("POST")
|
|
||||||
router.HandleFunc("/data/json", GetDataJSON).Methods("GET")
|
|
||||||
router.HandleFunc("/data/paginated", GetPaginatedData).Methods("GET")
|
|
||||||
router.HandleFunc("/data/summary", GetSummary).Methods("GET")
|
|
||||||
router.HandleFunc("/data/nsapp", GetByNsapp).Methods("GET")
|
|
||||||
router.HandleFunc("/data/date", GetByDateRange).Methods("GET")
|
|
||||||
router.HandleFunc("/data/status", GetByStatus).Methods("GET")
|
|
||||||
router.HandleFunc("/data/os", GetByOS).Methods("GET")
|
|
||||||
router.HandleFunc("/data/errors", GetErrors).Methods("GET")
|
|
||||||
|
|
||||||
c := cors.New(cors.Options{
|
|
||||||
AllowedOrigins: []string{"*"},
|
|
||||||
AllowedMethods: []string{"GET", "POST"},
|
|
||||||
AllowedHeaders: []string{"Content-Type", "Authorization"},
|
|
||||||
AllowCredentials: true,
|
|
||||||
})
|
|
||||||
|
|
||||||
handler := c.Handler(router)
|
|
||||||
|
|
||||||
fmt.Println("Server running on port 8080")
|
|
||||||
log.Fatal(http.ListenAndServe(":8080", handler))
|
|
||||||
}
|
|
||||||
90
ct/2fauth.sh
90
ct/2fauth.sh
@@ -1,90 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: jkrgr0
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://docs.2fauth.app/
|
|
||||||
|
|
||||||
APP="2FAuth"
|
|
||||||
var_tags="${var_tags:-2fa;authenticator}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-512}"
|
|
||||||
var_disk="${var_disk:-2}"
|
|
||||||
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 "/opt/2fauth" ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
if ! command -v jq &>/dev/null; then
|
|
||||||
$STD apt-get install -y jq
|
|
||||||
fi
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Bubka/2FAuth/releases/latest | jq -r '.tag_name' | sed 's/^v//')
|
|
||||||
if [[ "${RELEASE}" != "$(cat ~/.2fauth 2>/dev/null)" ]] || [[ ! -f ~/.2fauth ]]; then
|
|
||||||
msg_info "Updating $APP to ${RELEASE}"
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get -y upgrade
|
|
||||||
|
|
||||||
msg_info "Creating Backup"
|
|
||||||
mv "/opt/2fauth" "/opt/2fauth-backup"
|
|
||||||
if ! dpkg -l | grep -q 'php8.3'; then
|
|
||||||
cp /etc/nginx/conf.d/2fauth.conf /etc/nginx/conf.d/2fauth.conf.bak
|
|
||||||
fi
|
|
||||||
msg_ok "Backup Created"
|
|
||||||
|
|
||||||
if ! dpkg -l | grep -q 'php8.3'; then
|
|
||||||
$STD apt-get install -y \
|
|
||||||
lsb-release \
|
|
||||||
gnupg2
|
|
||||||
PHP_VERSION="8.3" PHP_MODULE="common,ctype,fileinfo,mysql,cli" PHP_FPM="YES" setup_php
|
|
||||||
sed -i 's/php8.2/php8.3/g' /etc/nginx/conf.d/2fauth.conf
|
|
||||||
fi
|
|
||||||
fetch_and_deploy_gh_release "2fauth" "Bubka/2FAuth"
|
|
||||||
setup_composer
|
|
||||||
mv "/opt/2fauth-backup/.env" "/opt/2fauth/.env"
|
|
||||||
mv "/opt/2fauth-backup/storage" "/opt/2fauth/storage"
|
|
||||||
cd "/opt/2fauth" || return
|
|
||||||
chown -R www-data: "/opt/2fauth"
|
|
||||||
chmod -R 755 "/opt/2fauth"
|
|
||||||
export COMPOSER_ALLOW_SUPERUSER=1
|
|
||||||
$STD composer install --no-dev --prefer-source
|
|
||||||
php artisan 2fauth:install
|
|
||||||
$STD systemctl restart nginx
|
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -rf "v${RELEASE}.zip"
|
|
||||||
if dpkg -l | grep -q 'php8.2'; then
|
|
||||||
$STD apt-get remove --purge -y php8.2*
|
|
||||||
fi
|
|
||||||
$STD apt-get -y autoremove
|
|
||||||
$STD apt-get -y autoclean
|
|
||||||
msg_ok "Cleanup Completed"
|
|
||||||
|
|
||||||
echo "${RELEASE}" >/opt/2fauth_version.txt
|
|
||||||
msg_ok "Updated $APP to ${RELEASE}"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at ${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}:80${CL}"
|
|
||||||
113
ct/5etools.sh
113
ct/5etools.sh
@@ -1,113 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: TheRealVira
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://5e.tools/
|
|
||||||
|
|
||||||
# App Default Values
|
|
||||||
APP="5etools"
|
|
||||||
var_tags="wiki"
|
|
||||||
var_cpu="1"
|
|
||||||
var_ram="512"
|
|
||||||
var_disk="13"
|
|
||||||
var_os="debian"
|
|
||||||
var_version="12"
|
|
||||||
var_unprivileged="1"
|
|
||||||
|
|
||||||
# App Output & Base Settings
|
|
||||||
header_info "$APP"
|
|
||||||
base_settings
|
|
||||||
|
|
||||||
# Core
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
header_info
|
|
||||||
check_container_storage
|
|
||||||
check_container_resources
|
|
||||||
|
|
||||||
# Check if installation is present | -f for file, -d for folder
|
|
||||||
if [[ ! -d "/opt/${APP}" ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/5etools-mirror-3/5etools-src/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
|
||||||
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f "/opt/${APP}_version.txt" ]]; then
|
|
||||||
# Crawling the new version and checking whether an update is required
|
|
||||||
msg_info "Updating System"
|
|
||||||
apt-get update &>/dev/null
|
|
||||||
apt-get -y upgrade &>/dev/null
|
|
||||||
msg_ok "Updated System"
|
|
||||||
|
|
||||||
# Execute Update
|
|
||||||
msg_info "Updating base 5etools"
|
|
||||||
cd /opt
|
|
||||||
wget -q "https://github.com/5etools-mirror-3/5etools-src/archive/refs/tags/${RELEASE}.zip"
|
|
||||||
unzip -q "${RELEASE}.zip"
|
|
||||||
mv "/opt/${APP}/img" "/opt/img-backup"
|
|
||||||
rm -rf "/opt/${APP}"
|
|
||||||
mv "${APP}-src-${RELEASE:1}" "/opt/${APP}"
|
|
||||||
mv "/opt/img-backup" "/opt/${APP}/img"
|
|
||||||
cd /opt/5etools
|
|
||||||
$STD npm install
|
|
||||||
$STD npm run build
|
|
||||||
cd ~
|
|
||||||
echo "${RELEASE}" >"/opt/${APP}_version.txt"
|
|
||||||
chown -R www-data: "/opt/${APP}"
|
|
||||||
chmod -R 755 "/opt/${APP}"
|
|
||||||
msg_ok "Updated base 5etools"
|
|
||||||
# Cleaning up
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -rf /opt/${RELEASE}.zip
|
|
||||||
$STD apt-get -y autoremove
|
|
||||||
$STD apt-get -y autoclean
|
|
||||||
msg_ok "Cleanup Completed"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. Base ${APP} is already at ${RELEASE}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
IMG_RELEASE=$(curl -s https://api.github.com/repos/5etools-mirror-2/5etools-img/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
|
||||||
if [[ "${IMG_RELEASE}" != "$(cat /opt/${APP}_IMG_version.txt)" ]] || [[ ! -f "/opt/${APP}_IMG_version.txt" ]]; then
|
|
||||||
# Crawling the new version and checking whether an update is required
|
|
||||||
msg_info "Updating System"
|
|
||||||
apt-get update &>/dev/null
|
|
||||||
apt-get -y upgrade &>/dev/null
|
|
||||||
msg_ok "Updated System"
|
|
||||||
|
|
||||||
# Execute Update
|
|
||||||
msg_info "Updating 5etools images"
|
|
||||||
curl -sSL "https://github.com/5etools-mirror-2/5etools-img/archive/refs/tags/${IMG_RELEASE}.zip" > "${IMG_RELEASE}.zip"
|
|
||||||
unzip -q "${IMG_RELEASE}.zip"
|
|
||||||
rm -rf "/opt/${APP}/img"
|
|
||||||
mv "${APP}-img-${IMG_RELEASE:1}" "/opt/${APP}/img"
|
|
||||||
echo "${IMG_RELEASE}" >"/opt/${APP}_IMG_version.txt"
|
|
||||||
chown -R www-data: "/opt/${APP}"
|
|
||||||
chmod -R 755 "/opt/${APP}"
|
|
||||||
|
|
||||||
msg_ok "Updating 5etools images"
|
|
||||||
|
|
||||||
# Cleaning up
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -rf /opt/${RELEASE}.zip
|
|
||||||
rm -rf ${IMG_RELEASE}.zip
|
|
||||||
$STD apt-get -y autoremove
|
|
||||||
$STD apt-get -y autoclean
|
|
||||||
msg_ok "Cleanup Completed"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} images are already at ${IMG_RELEASE}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
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}${CL}"
|
|
||||||
@@ -1,67 +1,77 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
# Copyright (c) 2021-2024 tteck
|
||||||
# Author: MickLesk (CanbiZ)
|
# Author: tteck (tteckster)
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
# License: MIT
|
||||||
# Source: https://actualbudget.org/
|
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
___ __ __ ____ __ __
|
||||||
|
/ | _____/ /___ ______ _/ / / __ )__ ______/ /___ ____ / /_
|
||||||
|
/ /| |/ ___/ __/ / / / __ `/ / / __ / / / / __ / __ `/ _ \/ __/
|
||||||
|
/ ___ / /__/ /_/ /_/ / /_/ / / / /_/ / /_/ / /_/ / /_/ / __/ /_
|
||||||
|
/_/ |_\___/\__/\__,_/\__,_/_/ /_____/\__,_/\__,_/\__, /\___/\__/
|
||||||
|
/____/
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
APP="Actual Budget"
|
APP="Actual Budget"
|
||||||
var_tags="finance"
|
var_disk="4"
|
||||||
var_cpu="2"
|
var_cpu="2"
|
||||||
var_ram="2048"
|
var_ram="2048"
|
||||||
var_disk="4"
|
|
||||||
var_os="debian"
|
var_os="debian"
|
||||||
var_version="12"
|
var_version="12"
|
||||||
var_unprivileged="1"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
variables
|
||||||
color
|
color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
if [[ ! -d /opt/actualbudget ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
check_container_resources
|
msg_info "Updating ${APP}"
|
||||||
|
systemctl stop actualbudget.service
|
||||||
if [[ ! -f /opt/actualbudget_version.txt ]]; then
|
cd /opt/actualbudget
|
||||||
msg_error "No ${APP} Installation Found!"
|
git pull &>/dev/null
|
||||||
exit
|
yarn install &>/dev/null
|
||||||
fi
|
systemctl start actualbudget.service
|
||||||
NODE_VERSION="22"
|
msg_ok "Successfully Updated ${APP}"
|
||||||
setup_nodejs
|
exit
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/actualbudget/actual/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
if [[ -f /opt/actualbudget-data/config.json ]]; then
|
|
||||||
if [[ ! -f /opt/actualbudget_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/actualbudget_version.txt)" ]]; then
|
|
||||||
msg_info "Stopping ${APP}"
|
|
||||||
systemctl stop actualbudget
|
|
||||||
msg_ok "${APP} Stopped"
|
|
||||||
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
|
||||||
$STD npm update -g @actual-app/sync-server
|
|
||||||
echo "${RELEASE}" >/opt/actualbudget_version.txt
|
|
||||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
|
||||||
systemctl start actualbudget
|
|
||||||
msg_ok "Restarted ${APP}"
|
|
||||||
else
|
|
||||||
msg_info "${APP} is already up to date"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
msg_info "Old Installation Found, you need to migrate your data and recreate to a new container"
|
|
||||||
msg_info "Please follow the instructions on the ${APP} website to migrate your data"
|
|
||||||
msg_info "https://actualbudget.org/docs/backup-restore/backup"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
exit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
build_container
|
build_container
|
||||||
description
|
description
|
||||||
|
msg_info "Setting Container to Normal Resources"
|
||||||
|
pct set $CTID -memory 1024
|
||||||
|
pct set $CTID -cores 1
|
||||||
|
msg_ok "Set Container to Normal Resources"
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${APP} should be reachable by going to the following URL.
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
${BL}http://${IP}:5006${CL} \n"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:5006${CL}"
|
|
||||||
|
|||||||
102
ct/adguard.sh
102
ct/adguard.sh
@@ -1,34 +1,87 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2024 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster)
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
# License: MIT
|
||||||
# Source: https://adguard.com/
|
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
___ __ __
|
||||||
|
/ | ____/ /___ ___ ______ __________/ /
|
||||||
|
/ /| |/ __ / __ / / / / __ / ___/ __ /
|
||||||
|
/ ___ / /_/ / /_/ / /_/ / /_/ / / / /_/ /
|
||||||
|
/_/ |_\__,_/\__, /\__,_/\__,_/_/ \__,_/
|
||||||
|
/____/
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
APP="Adguard"
|
APP="Adguard"
|
||||||
var_tags="${var_tags:-adblock}"
|
var_disk="2"
|
||||||
var_cpu="${var_cpu:-1}"
|
var_cpu="1"
|
||||||
var_ram="${var_ram:-512}"
|
var_ram="512"
|
||||||
var_disk="${var_disk:-2}"
|
var_os="debian"
|
||||||
var_os="${var_os:-debian}"
|
var_version="12"
|
||||||
var_version="${var_version:-12}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
variables
|
||||||
color
|
color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
if [[ ! -d /opt/AdGuardHome ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
check_container_resources
|
if (( $(df /boot | awk 'NR==2{gsub("%","",$5); print $5}') > 80 )); then
|
||||||
if [[ ! -d /opt/AdGuardHome ]]; then
|
read -r -p "Warning: Storage is dangerously low, continue anyway? <y/N> " prompt
|
||||||
msg_error "No ${APP} Installation Found!"
|
[[ ${prompt,,} =~ ^(y|yes)$ ]] || exit
|
||||||
exit
|
fi
|
||||||
fi
|
wget -qL https://static.adguard.com/adguardhome/release/AdGuardHome_linux_amd64.tar.gz
|
||||||
msg_error "Adguard Home should be updated via the user interface."
|
msg_info "Stopping AdguardHome"
|
||||||
exit
|
systemctl stop AdGuardHome
|
||||||
|
msg_ok "Stopped AdguardHome"
|
||||||
|
|
||||||
|
msg_info "Updating AdguardHome"
|
||||||
|
tar -xvf AdGuardHome_linux_amd64.tar.gz &>/dev/null
|
||||||
|
mkdir -p adguard-backup
|
||||||
|
cp -r /opt/AdGuardHome/AdGuardHome.yaml /opt/AdGuardHome/data adguard-backup/
|
||||||
|
cp AdGuardHome/AdGuardHome /opt/AdGuardHome/AdGuardHome
|
||||||
|
cp -r adguard-backup/* /opt/AdGuardHome/
|
||||||
|
msg_ok "Updated AdguardHome"
|
||||||
|
|
||||||
|
msg_info "Starting AdguardHome"
|
||||||
|
systemctl start AdGuardHome
|
||||||
|
msg_ok "Started AdguardHome"
|
||||||
|
|
||||||
|
msg_info "Cleaning Up"
|
||||||
|
rm -rf AdGuardHome_linux_amd64.tar.gz AdGuardHome adguard-backup
|
||||||
|
msg_ok "Cleaned"
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
@@ -36,6 +89,5 @@ build_container
|
|||||||
description
|
description
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${APP} Setup should be reachable by going to the following URL.
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
${BL}http://${IP}:3000${CL} \n"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
|
||||||
|
|||||||
@@ -1,91 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 tteck
|
|
||||||
# Author: MickLesk (Canbiz)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://adventurelog.app/
|
|
||||||
|
|
||||||
APP="AdventureLog"
|
|
||||||
var_tags="${var_tags:-traveling}"
|
|
||||||
var_disk="${var_disk:-7}"
|
|
||||||
var_cpu="${var_cpu:-2}"
|
|
||||||
var_ram="${var_ram:-2048}"
|
|
||||||
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 /opt/adventurelog ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/seanmorley15/AdventureLog/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
if [[ "${RELEASE}" != "$(cat ~/.adventurelog 2>/dev/null)" ]] || [[ ! -f ~/.adventurelog ]]; then
|
|
||||||
msg_info "Stopping Services"
|
|
||||||
systemctl stop adventurelog-backend
|
|
||||||
systemctl stop adventurelog-frontend
|
|
||||||
msg_ok "Services Stopped"
|
|
||||||
|
|
||||||
msg_info "Backup Old Installation"
|
|
||||||
mkdir -p /opt/adventurelog-backup
|
|
||||||
cp /opt/adventurelog/backend/server/.env /opt/adventurelog-backup/backend/server/.env
|
|
||||||
cp -r /opt/adventurelog/backend/server/media /opt/adventurelog-backup/backend/server/media
|
|
||||||
cp /opt/adventurelog/frontend/.env /opt/adventurelog-backup/frontend/.env
|
|
||||||
msg_ok "Backup done"
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "adventurelog" "seanmorley15/adventurelog"
|
|
||||||
PYTHON_VERSION="3.12" setup_uv
|
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
|
||||||
cp /opt/adventurelog-backup/backend/server/.env /opt/adventurelog/backend/server/.env
|
|
||||||
cp -r /opt/adventurelog-backup/backend/server/media /opt/adventurelog/backend/server/media
|
|
||||||
cd /opt/adventurelog/backend/server
|
|
||||||
if [[ ! -x .venv/bin/python ]]; then
|
|
||||||
$STD uv venv .venv
|
|
||||||
$STD .venv/bin/python -m ensurepip --upgrade
|
|
||||||
fi
|
|
||||||
$STD .venv/bin/python -m pip install --upgrade pip
|
|
||||||
$STD .venv/bin/python -m pip install -r requirements.txt
|
|
||||||
$STD .venv/bin/python -m manage collectstatic --noinput
|
|
||||||
$STD .venv/bin/python -m manage migrate
|
|
||||||
|
|
||||||
cp /opt/adventurelog-backup/frontend/.env /opt/adventurelog/frontend/.env
|
|
||||||
cd /opt/adventurelog/frontend
|
|
||||||
$STD pnpm i
|
|
||||||
$STD pnpm build
|
|
||||||
msg_ok "Updated ${APP}"
|
|
||||||
|
|
||||||
msg_info "Starting Services"
|
|
||||||
systemctl daemon-reexec
|
|
||||||
systemctl start adventurelog-backend
|
|
||||||
systemctl start adventurelog-frontend
|
|
||||||
msg_ok "Services Started"
|
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -rf /opt/adventurelog-backup
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at ${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}"
|
|
||||||
@@ -1,34 +1,62 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2024 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster)
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
# License: MIT
|
||||||
# Source: https://www.ispyconnect.com/
|
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
___ __ ____ _ ______
|
||||||
|
/ | ____ ____ ____ / /_/ __ \ | / / __ \
|
||||||
|
/ /| |/ __ `/ _ \/ __ \/ __/ / / / | / / /_/ /
|
||||||
|
/ ___ / /_/ / __/ / / / /_/ /_/ /| |/ / _, _/
|
||||||
|
/_/ |_\__, /\___/_/ /_/\__/_____/ |___/_/ |_|
|
||||||
|
/____/
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
APP="AgentDVR"
|
APP="AgentDVR"
|
||||||
var_tags="${var_tags:-dvr}"
|
var_disk="8"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="2"
|
||||||
var_ram="${var_ram:-2048}"
|
var_ram="2048"
|
||||||
var_disk="${var_disk:-8}"
|
var_os="ubuntu"
|
||||||
var_os="${var_os:-ubuntu}"
|
var_version="22.04"
|
||||||
var_version="${var_version:-24.04}"
|
|
||||||
var_unprivileged="${var_unprivileged:-0}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
variables
|
||||||
color
|
color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="0"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
if [[ ! -d /opt/agentdvr ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
check_container_resources
|
msg_error "There is currently no update path available."
|
||||||
if [[ ! -d /opt/agentdvr ]]; then
|
exit
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
msg_error "Currently we don't provide an update function for this ${APP}."
|
|
||||||
exit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
@@ -36,6 +64,5 @@ build_container
|
|||||||
description
|
description
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${APP}${CL} should be reachable by going to the following URL.
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
${BL}http://${IP}:8090${CL} \n"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8090${CL}"
|
|
||||||
|
|||||||
@@ -1,46 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: MickLesk (CanbiZ)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://adguardhome.com/
|
|
||||||
|
|
||||||
APP="Alpine-AdGuard"
|
|
||||||
var_tags="${var_tags:-alpine;adblock}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-256}"
|
|
||||||
var_disk="${var_disk:-1}"
|
|
||||||
var_os="${var_os:-alpine}"
|
|
||||||
var_version="${var_version:-3.22}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
header_info
|
|
||||||
msg_info "Updating Alpine Packages"
|
|
||||||
$STD apk -U upgrade
|
|
||||||
msg_ok "Updated Alpine Packages"
|
|
||||||
|
|
||||||
msg_info "Updating AdGuard Home"
|
|
||||||
$STD /opt/AdGuardHome/AdGuardHome --update
|
|
||||||
msg_ok "Updated AdGuard Home"
|
|
||||||
|
|
||||||
msg_info "Restarting AdGuard Home"
|
|
||||||
$STD rc-service adguardhome restart
|
|
||||||
msg_ok "Restarted AdGuard Home"
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
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}"
|
|
||||||
@@ -1,89 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: Slaviša Arežina (tremor021)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/bitmagnet-io/bitmagnet
|
|
||||||
|
|
||||||
APP="Alpine-bitmagnet"
|
|
||||||
var_tags="${var_tags:-alpine;torrent}"
|
|
||||||
var_cpu="${var_cpu:-2}"
|
|
||||||
var_ram="${var_ram:-1024}"
|
|
||||||
var_disk="${var_disk:-3}"
|
|
||||||
var_os="${var_os:-alpine}"
|
|
||||||
var_version="${var_version:-3.22}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
header_info
|
|
||||||
|
|
||||||
if [[ ! -d /opt/bitmagnet ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/bitmagnet-io/bitmagnet/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
if [ "${RELEASE}" != "$(cat /opt/bitmagnet_version.txt)" ] || [ ! -f /opt/bitmagnet_version.txt ]; then
|
|
||||||
msg_info "Backing up database"
|
|
||||||
rm -f /tmp/backup.sql
|
|
||||||
$STD sudo -u postgres pg_dump \
|
|
||||||
--column-inserts \
|
|
||||||
--data-only \
|
|
||||||
--on-conflict-do-nothing \
|
|
||||||
--rows-per-insert=1000 \
|
|
||||||
--table=metadata_sources \
|
|
||||||
--table=content \
|
|
||||||
--table=content_attributes \
|
|
||||||
--table=content_collections \
|
|
||||||
--table=content_collections_content \
|
|
||||||
--table=torrent_sources \
|
|
||||||
--table=torrents \
|
|
||||||
--table=torrent_files \
|
|
||||||
--table=torrent_hints \
|
|
||||||
--table=torrent_contents \
|
|
||||||
--table=torrent_tags \
|
|
||||||
--table=torrents_torrent_sources \
|
|
||||||
--table=key_values \
|
|
||||||
bitmagnet \
|
|
||||||
>/tmp/backup.sql
|
|
||||||
mv /tmp/backup.sql /opt/
|
|
||||||
msg_ok "Database backed up"
|
|
||||||
|
|
||||||
msg_info "Updating ${APP} from $(cat /opt/bitmagnet_version.txt) to ${RELEASE}"
|
|
||||||
$STD apk -U upgrade
|
|
||||||
$STD service bitmagnet stop
|
|
||||||
[ -f /opt/bitmagnet/.env ] && cp /opt/bitmagnet/.env /opt/
|
|
||||||
[ -f /opt/bitmagnet/config.yml ] && cp /opt/bitmagnet/config.yml /opt/
|
|
||||||
rm -rf /opt/bitmagnet/*
|
|
||||||
temp_file=$(mktemp)
|
|
||||||
curl -fsSL "https://github.com/bitmagnet-io/bitmagnet/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
|
||||||
tar zxf "$temp_file" --strip-components=1 -C /opt/bitmagnet
|
|
||||||
cd /opt/bitmagnet
|
|
||||||
VREL=v$RELEASE
|
|
||||||
$STD go build -ldflags "-s -w -X github.com/bitmagnet-io/bitmagnet/internal/version.GitTag=$VREL"
|
|
||||||
chmod +x bitmagnet
|
|
||||||
[ -f "/opt/.env" ] && cp "/opt/.env" /opt/bitmagnet/
|
|
||||||
[ -f "/opt/config.yml" ] && cp "/opt/config.yml" /opt/bitmagnet/
|
|
||||||
rm -f "$temp_file"
|
|
||||||
echo "${RELEASE}" >/opt/bitmagnet_version.txt
|
|
||||||
$STD service bitmagnet start
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
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 IP:${CL}"
|
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3333${CL}"
|
|
||||||
@@ -1,24 +1,58 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2024 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster)
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
# License: MIT
|
||||||
# Source: https://www.docker.com/
|
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
____ __
|
||||||
|
/ __ \____ _____/ /_ __ _____
|
||||||
|
/ / / / __ \/ ___/ //_/ _ \/ ___/
|
||||||
|
/ /_/ / /_/ / /__/ ,< / __/ /
|
||||||
|
/_____/\____/\___/_/|_|\___/_/
|
||||||
|
Alpine
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
APP="Alpine-Docker"
|
APP="Alpine-Docker"
|
||||||
var_tags="${var_tags:-docker;alpine}"
|
var_disk="2"
|
||||||
var_cpu="${var_cpu:-1}"
|
var_cpu="1"
|
||||||
var_ram="${var_ram:-1024}"
|
var_ram="1024"
|
||||||
var_disk="${var_disk:-2}"
|
var_os="alpine"
|
||||||
var_os="${var_os:-alpine}"
|
var_version="3.20"
|
||||||
var_version="${var_version:-3.22}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
variables
|
||||||
color
|
color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
if ! apk -e info newt >/dev/null 2>&1; then
|
if ! apk -e info newt >/dev/null 2>&1; then
|
||||||
apk add -q newt
|
apk add -q newt
|
||||||
@@ -36,7 +70,7 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
case $CHOICE in
|
case $CHOICE in
|
||||||
1)
|
1)
|
||||||
$STD apk -U upgrade
|
apk update && apk upgrade
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
@@ -1,45 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: Johann3s-H (An!ma)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://forgejo.org/
|
|
||||||
|
|
||||||
APP="Alpine-Forgejo"
|
|
||||||
var_tags="${var_tags:-alpine;git}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-256}"
|
|
||||||
var_disk="${var_disk:-1}"
|
|
||||||
var_os="${var_os:-alpine}"
|
|
||||||
var_version="${var_version:-3.22}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
msg_info "Updating Alpine Packages"
|
|
||||||
$STD apk -U upgrade
|
|
||||||
msg_ok "Updated Alpine Packages"
|
|
||||||
|
|
||||||
msg_info "Updating Forgejo"
|
|
||||||
$STD apk upgrade forgejo
|
|
||||||
msg_ok "Updated Forgejo"
|
|
||||||
|
|
||||||
msg_info "Restarting Forgejo"
|
|
||||||
$STD rc-service forgejo restart
|
|
||||||
msg_ok "Restarted Forgejo"
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
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}"
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: Slaviša Arežina (tremor021)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/TwiN/gatus
|
|
||||||
|
|
||||||
APP="Alpine-gatus"
|
|
||||||
var_tags="${var_tags:-alpine;monitoring}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-256}"
|
|
||||||
var_disk="${var_disk:-3}"
|
|
||||||
var_os="${var_os:-alpine}"
|
|
||||||
var_version="${var_version:-3.22}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
header_info
|
|
||||||
|
|
||||||
if [[ ! -d /opt/gatus ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/TwiN/gatus/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
if [ "${RELEASE}" != "$(cat /opt/gatus_version.txt)" ] || [ ! -f /opt/gatus_version.txt ]; then
|
|
||||||
msg_info "Updating ${APP} LXC"
|
|
||||||
$STD apk -U upgrade
|
|
||||||
$STD service gatus stop
|
|
||||||
mv /opt/gatus/config/config.yaml /opt
|
|
||||||
rm -rf /opt/gatus/*
|
|
||||||
temp_file=$(mktemp)
|
|
||||||
curl -fsSL "https://github.com/TwiN/gatus/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
|
||||||
tar zxf "$temp_file" --strip-components=1 -C /opt/gatus
|
|
||||||
cd /opt/gatus
|
|
||||||
$STD go mod tidy
|
|
||||||
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o gatus .
|
|
||||||
setcap CAP_NET_RAW+ep gatus
|
|
||||||
mv /opt/config.yaml config
|
|
||||||
rm -f "$temp_file"
|
|
||||||
echo "${RELEASE}" >/opt/gatus_version.txt
|
|
||||||
$STD service gatus start
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
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 IP:${CL}"
|
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: MickLesk (CanbiZ)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://gitea.io
|
|
||||||
|
|
||||||
APP="Alpine-Gitea"
|
|
||||||
var_tags="${var_tags:-alpine;git}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-256}"
|
|
||||||
var_disk="${var_disk:-1}"
|
|
||||||
var_os="${var_os:-alpine}"
|
|
||||||
var_version="${var_version:-3.22}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
header_info
|
|
||||||
msg_info "Updating Alpine Packages"
|
|
||||||
$STD apk -U upgrade
|
|
||||||
msg_ok "Updated Alpine Packages"
|
|
||||||
|
|
||||||
msg_info "Updating Gitea"
|
|
||||||
apk upgrade gitea
|
|
||||||
msg_ok "Updated Gitea"
|
|
||||||
|
|
||||||
msg_info "Restarting Gitea"
|
|
||||||
rc-service gitea restart
|
|
||||||
msg_ok "Restarted Gitea"
|
|
||||||
}
|
|
||||||
|
|
||||||
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}"
|
|
||||||
@@ -1,24 +1,58 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2024 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster)
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
# License: MIT
|
||||||
# Source: https://grafana.com/
|
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
______ ____
|
||||||
|
/ ____/________ _/ __/___ _____ ____ _
|
||||||
|
/ / __/ ___/ __ / /_/ __ / __ \/ __ /
|
||||||
|
/ /_/ / / / /_/ / __/ /_/ / / / / /_/ /
|
||||||
|
\____/_/ \__,_/_/ \__,_/_/ /_/\__,_/
|
||||||
|
Alpine
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
APP="Alpine-Grafana"
|
APP="Alpine-Grafana"
|
||||||
var_tags="${var_tags:-alpine;monitoring}"
|
var_disk="1"
|
||||||
var_cpu="${var_cpu:-1}"
|
var_cpu="1"
|
||||||
var_ram="${var_ram:-256}"
|
var_ram="256"
|
||||||
var_disk="${var_disk:-1}"
|
var_os="alpine"
|
||||||
var_os="${var_os:-alpine}"
|
var_version="3.19"
|
||||||
var_version="${var_version:-3.22}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
variables
|
||||||
color
|
color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
if ! apk -e info newt >/dev/null 2>&1; then
|
if ! apk -e info newt >/dev/null 2>&1; then
|
||||||
apk add -q newt
|
apk add -q newt
|
||||||
@@ -39,7 +73,7 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
case $CHOICE in
|
case $CHOICE in
|
||||||
1)
|
1)
|
||||||
$STD apk -U upgrade
|
apk update && apk upgrade
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
2)
|
2)
|
||||||
|
|||||||
@@ -1,56 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: nicedevil007 (NiceDevil)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://it-tools.tech/
|
|
||||||
|
|
||||||
APP="Alpine-IT-Tools"
|
|
||||||
var_tags="${var_tags:-alpine;development}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-256}"
|
|
||||||
var_disk="${var_disk:-1}"
|
|
||||||
var_os="${var_os:-alpine}"
|
|
||||||
var_version="${var_version:-3.22}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
header_info
|
|
||||||
|
|
||||||
if [ ! -d /usr/share/nginx/html ]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/CorentinTh/it-tools/releases/latest | grep '"tag_name":' | cut -d '"' -f4)
|
|
||||||
if [ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ] || [ ! -f /opt/${APP}_version.txt ]; then
|
|
||||||
DOWNLOAD_URL="https://github.com/CorentinTh/it-tools/releases/download/${RELEASE}/it-tools-${RELEASE#v}.zip"
|
|
||||||
msg_info "Updating ${APP} LXC"
|
|
||||||
curl -fsSL -o it-tools.zip "$DOWNLOAD_URL"
|
|
||||||
mkdir -p /usr/share/nginx/html
|
|
||||||
rm -rf /usr/share/nginx/html/*
|
|
||||||
$STD unzip it-tools.zip -d /tmp/it-tools
|
|
||||||
cp -r /tmp/it-tools/dist/* /usr/share/nginx/html
|
|
||||||
rm -rf /tmp/it-tools
|
|
||||||
rm -f it-tools.zip
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
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 IP:${CL}"
|
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
|
|
||||||
@@ -1,67 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: MickLesk (CanbiZ)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://komo.do
|
|
||||||
|
|
||||||
APP="Alpine-Komodo"
|
|
||||||
var_tags="${var_tags:-docker,alpine}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-1024}"
|
|
||||||
var_disk="${var_disk:-10}"
|
|
||||||
var_os="${var_os:-alpine}"
|
|
||||||
var_version="${var_version:-3.22}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
[[ -d /opt/komodo ]] || {
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
msg_info "Updating ${APP}"
|
|
||||||
COMPOSE_FILE=$(find /opt/komodo -maxdepth 1 -type f -name '*.compose.yaml' ! -name 'compose.env' | head -n1)
|
|
||||||
if [[ -z "$COMPOSE_FILE" ]]; then
|
|
||||||
msg_error "No valid compose file found in /opt/komodo!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
COMPOSE_BASENAME=$(basename "$COMPOSE_FILE")
|
|
||||||
|
|
||||||
if [[ "$COMPOSE_BASENAME" == "sqlite.compose.yaml" || "$COMPOSE_BASENAME" == "postgres.compose.yaml" ]]; then
|
|
||||||
msg_error "❌ Detected outdated Komodo setup using SQLite or PostgreSQL (FerretDB v1)."
|
|
||||||
echo -e "${YW}This configuration is no longer supported since Komodo v1.18.0.${CL}"
|
|
||||||
echo -e "${YW}Please follow the migration guide:${CL}"
|
|
||||||
echo -e "${BGN}https://github.com/community-scripts/ProxmoxVE/discussions/5689${CL}\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
BACKUP_FILE="/opt/komodo/${COMPOSE_BASENAME}.bak_$(date +%Y%m%d_%H%M%S)"
|
|
||||||
cp "$COMPOSE_FILE" "$BACKUP_FILE" || {
|
|
||||||
msg_error "Failed to create backup of ${COMPOSE_BASENAME}!"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
GITHUB_URL="https://raw.githubusercontent.com/moghtech/komodo/main/compose/${COMPOSE_BASENAME}"
|
|
||||||
if ! curl -fsSL "$GITHUB_URL" -o "$COMPOSE_FILE"; then
|
|
||||||
msg_error "Failed to download ${COMPOSE_BASENAME} from GitHub!"
|
|
||||||
mv "$BACKUP_FILE" "$COMPOSE_FILE"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
$STD docker compose -p komodo -f "$COMPOSE_FILE" --env-file /opt/komodo/compose.env up -d
|
|
||||||
msg_ok "Updated ${APP}"
|
|
||||||
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}:9120${CL}"
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: MickLesk (CanbiZ)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://mariadb.org
|
|
||||||
|
|
||||||
APP="Alpine-MariaDB"
|
|
||||||
var_tags="${var_tags:-alpine;database}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-256}"
|
|
||||||
var_disk="${var_disk:-1}"
|
|
||||||
var_os="${var_os:-alpine}"
|
|
||||||
var_version="${var_version:-3.22}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
msg_info "Updating Alpine Packages"
|
|
||||||
$STD apk -U upgrade
|
|
||||||
msg_ok "Updated Alpine Packages"
|
|
||||||
|
|
||||||
msg_info "Updating MariaDB"
|
|
||||||
$STD apk upgrade mariadb mariadb-client
|
|
||||||
msg_ok "Updated MariaDB"
|
|
||||||
|
|
||||||
msg_info "Restarting MariaDB"
|
|
||||||
$STD rc-service mariadb restart
|
|
||||||
msg_ok "Restarted MariaDB"
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
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 IP:${CL}"
|
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}${IP}:3306${CL}"
|
|
||||||
@@ -1,24 +1,57 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2024 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster)
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
# License: MIT
|
||||||
# Source: https://nextcloud.com/
|
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
_ __ __ __ __ __ __ __
|
||||||
|
/ | / /__ _ __/ /______/ /___ __ ______/ / / / / /_ __/ /_
|
||||||
|
/ |/ / _ \| |/_/ __/ ___/ / __ \/ / / / __ / / /_/ / / / / __ \
|
||||||
|
/ /| / __/> </ /_/ /__/ / /_/ / /_/ / /_/ / / __ / /_/ / /_/ /
|
||||||
|
/_/ |_/\___/_/|_|\__/\___/_/\____/\__,_/\__,_/ /_/ /_/\__,_/_.___/
|
||||||
|
Alpine
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
APP="Alpine-Nextcloud"
|
APP="Alpine-Nextcloud"
|
||||||
var_tags="${var_tags:-alpine;cloud}"
|
var_disk="2"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="2"
|
||||||
var_ram="${var_ram:-1024}"
|
var_ram="1024"
|
||||||
var_disk="${var_disk:-2}"
|
var_os="alpine"
|
||||||
var_os="${var_os:-alpine}"
|
var_version="3.19"
|
||||||
var_version="${var_version:-3.22}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
variables
|
||||||
color
|
color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
if [[ ! -d /usr/share/webapps/nextcloud ]]; then
|
if [[ ! -d /usr/share/webapps/nextcloud ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
@@ -28,7 +61,7 @@ function update_script() {
|
|||||||
apk add -q newt
|
apk add -q newt
|
||||||
fi
|
fi
|
||||||
while true; do
|
while true; do
|
||||||
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 3 \
|
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 3 \
|
||||||
"1" "Nextcloud Login Credentials" ON \
|
"1" "Nextcloud Login Credentials" ON \
|
||||||
"2" "Renew Self-signed Certificate" OFF \
|
"2" "Renew Self-signed Certificate" OFF \
|
||||||
3>&1 1>&2 2>&3)
|
3>&1 1>&2 2>&3)
|
||||||
@@ -44,7 +77,7 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
2)
|
2)
|
||||||
openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/ssl/private/nextcloud-selfsigned.key -out /etc/ssl/certs/nextcloud-selfsigned.crt -subj "/C=US/O=Nextcloud/OU=Domain Control Validated/CN=nextcloud.local" >/dev/null 2>&1
|
openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/ssl/private/nextcloud-selfsigned.key -out /etc/ssl/certs/nextcloud-selfsigned.crt -subj "/C=US/O=Nextcloud/OU=Domain Control Validated/CN=nextcloud.local" > /dev/null 2>&1
|
||||||
rc-service nginx restart
|
rc-service nginx restart
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
|
|||||||
@@ -1,45 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: MickLesk (CanbiZ)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://nodered.org
|
|
||||||
|
|
||||||
APP="Alpine-Node-RED"
|
|
||||||
var_tags="${var_tags:-alpine;automation}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-256}"
|
|
||||||
var_disk="${var_disk:-1}"
|
|
||||||
var_os="${var_os:-alpine}"
|
|
||||||
var_version="${var_version:-3.22}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
msg_info "Updating Alpine Packages"
|
|
||||||
$STD apk -U upgrade
|
|
||||||
msg_ok "Updated Alpine Packages"
|
|
||||||
|
|
||||||
msg_info "Updating Node.js and npm"
|
|
||||||
$STD apk upgrade nodejs npm
|
|
||||||
msg_ok "Updated Node.js and npm"
|
|
||||||
|
|
||||||
msg_info "Updating Node-RED"
|
|
||||||
$STD npm install -g --unsafe-perm node-red
|
|
||||||
msg_ok "Updated Node-RED"
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
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}:1880${CL}"
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: MickLesk (CanbiZ)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://postgresql.org/
|
|
||||||
|
|
||||||
APP="Alpine-PostgreSQL"
|
|
||||||
var_tags="${var_tags:-alpine;database}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-256}"
|
|
||||||
var_disk="${var_disk:-1}"
|
|
||||||
var_os="${var_os:-alpine}"
|
|
||||||
var_version="${var_version:-3.22}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
msg_info "Updating Alpine Packages"
|
|
||||||
$STD apk -U upgrade
|
|
||||||
msg_ok "Updated Alpine Packages"
|
|
||||||
|
|
||||||
msg_info "Updating PostgreSQL"
|
|
||||||
$STD apk upgrade postgresql postgresql-contrib
|
|
||||||
msg_ok "Updated PostgreSQL"
|
|
||||||
|
|
||||||
msg_info "Restarting PostgreSQL"
|
|
||||||
$STD rc-service postgresql restart
|
|
||||||
msg_ok "Restarted PostgreSQL"
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
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 IP:${CL}"
|
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}${IP}:5432${CL}"
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: MickLesk (CanbiZ)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://prometheus.io/
|
|
||||||
|
|
||||||
APP="Alpine-Prometheus"
|
|
||||||
var_tags="${var_tags:-alpine;monitoring}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-256}"
|
|
||||||
var_disk="${var_disk:-1}"
|
|
||||||
var_os="${var_os:-alpine}"
|
|
||||||
var_version="${var_version:-3.22}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
msg_info "Updating Alpine Packages"
|
|
||||||
$STD apk -U upgrade
|
|
||||||
msg_ok "Updated Alpine Packages"
|
|
||||||
|
|
||||||
msg_info "Updating Prometheus"
|
|
||||||
$STD apk upgrade prometheus
|
|
||||||
msg_ok "Updated Prometheus"
|
|
||||||
|
|
||||||
msg_info "Restarting Prometheus"
|
|
||||||
$STD rc-service prometheus restart
|
|
||||||
msg_ok "Restarted Prometheus"
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
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}:9090${CL}"
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: Slaviša Arežina (tremor021)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/rclone/rclone
|
|
||||||
|
|
||||||
APP="Alpine-rclone"
|
|
||||||
var_tags="${var_tags:-alpine;backup}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-256}"
|
|
||||||
var_disk="${var_disk:-1}"
|
|
||||||
var_os="${var_os:-alpine}"
|
|
||||||
var_version="${var_version:-3.22}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
var_fuse="${var_fuse:-yes}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
header_info
|
|
||||||
if [ ! -d /opt/rclone ]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/rclone/rclone/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
if [ "${RELEASE}" != "$(cat /opt/rclone_version.txt)" ] || [ ! -f /opt/rclone_version.txt ]; then
|
|
||||||
msg_info "Updating ${APP} LXC"
|
|
||||||
temp_file=$(mktemp)
|
|
||||||
curl -fsSL "https://github.com/rclone/rclone/releases/download/v${RELEASE}/rclone-v${RELEASE}-linux-amd64.zip" -o "$temp_file"
|
|
||||||
$STD unzip -o "$temp_file" '*/**' -d /opt/rclone
|
|
||||||
rm -f "$temp_file"
|
|
||||||
echo "${RELEASE}" >/opt/rclone_version.txt
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
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 IP:${CL}"
|
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: MickLesk (CanbiZ)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://redis.io/
|
|
||||||
|
|
||||||
APP="Alpine-Redis"
|
|
||||||
var_tags="${var_tags:-alpine;database}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-256}"
|
|
||||||
var_disk="${var_disk:-1}"
|
|
||||||
var_os="${var_os:-alpine}"
|
|
||||||
var_version="${var_version:-3.22}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
if ! apk -e info newt >/dev/null 2>&1; then
|
|
||||||
apk add -q newt
|
|
||||||
fi
|
|
||||||
LXCIP=$(ip a s dev eth0 | awk '/inet / {print $2}' | cut -d/ -f1)
|
|
||||||
while true; do
|
|
||||||
CHOICE=$(
|
|
||||||
whiptail --backtitle "Proxmox VE Helper Scripts" --title "Redis Management" --menu "Select option" 11 58 3 \
|
|
||||||
"1" "Update Redis" \
|
|
||||||
"2" "Allow 0.0.0.0 for listening" \
|
|
||||||
"3" "Allow only ${LXCIP} for listening" 3>&2 2>&1 1>&3
|
|
||||||
)
|
|
||||||
exit_status=$?
|
|
||||||
if [ $exit_status == 1 ]; then
|
|
||||||
clear
|
|
||||||
exit-script
|
|
||||||
fi
|
|
||||||
header_info
|
|
||||||
case $CHOICE in
|
|
||||||
1)
|
|
||||||
msg_info "Updating Redis"
|
|
||||||
apk update && apk upgrade redis
|
|
||||||
rc-service redis restart
|
|
||||||
msg_ok "Redis updated successfully!"
|
|
||||||
exit
|
|
||||||
;;
|
|
||||||
2)
|
|
||||||
msg_info "Setting Redis to listen on all interfaces"
|
|
||||||
sed -i 's/^bind .*/bind 0.0.0.0/' /etc/redis.conf
|
|
||||||
rc-service redis restart
|
|
||||||
msg_ok "Redis now listens on all interfaces!"
|
|
||||||
exit
|
|
||||||
;;
|
|
||||||
3)
|
|
||||||
msg_info "Setting Redis to listen only on ${LXCIP}"
|
|
||||||
sed -i "s/^bind .*/bind ${LXCIP}/" /etc/redis.conf
|
|
||||||
rc-service redis restart
|
|
||||||
msg_ok "Redis now listens only on ${LXCIP}!"
|
|
||||||
exit
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
start
|
|
||||||
build_container
|
|
||||||
description
|
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
|
||||||
echo -e "${APP} should be reachable on port 6379.
|
|
||||||
${BL}redis-cli -h ${IP} -p 6379${CL} \n"
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: MickLesk (CanbiZ)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://syncthing.net/
|
|
||||||
|
|
||||||
APP="Alpine-Syncthing"
|
|
||||||
var_tags="${var_tags:-alpine;networking}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-256}"
|
|
||||||
var_disk="${var_disk:-1}"
|
|
||||||
var_os="${var_os:-alpine}"
|
|
||||||
var_version="${var_version:-3.22}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
msg_info "Updating Alpine Packages"
|
|
||||||
$STD apk -U upgrade
|
|
||||||
msg_ok "Updated Alpine Packages"
|
|
||||||
|
|
||||||
msg_info "Updating Syncthing"
|
|
||||||
$STD apk upgrade syncthing
|
|
||||||
msg_ok "Updated Syncthing"
|
|
||||||
|
|
||||||
msg_info "Restarting Syncthing"
|
|
||||||
$STD rc-service syncthing restart
|
|
||||||
msg_ok "Restarted Syncthing"
|
|
||||||
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
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}:8384${CL}"
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: tremor021 (Slaviša Arežina)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://teamspeak.com/en/
|
|
||||||
|
|
||||||
APP="Alpine-TeamSpeak-Server"
|
|
||||||
var_tags="${var_tags:-alpine;communication}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-256}"
|
|
||||||
var_disk="${var_disk:-2}"
|
|
||||||
var_os="${var_os:-alpine}"
|
|
||||||
var_version="${var_version:-3.22}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
header_info
|
|
||||||
|
|
||||||
if [[ ! -d /opt/teamspeak-server ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
set +o pipefail && RELEASE=$(curl -fsSL https://teamspeak.com/en/downloads/#server | sed -n 's/.teamspeak3-server_linux_amd64-([0-9]+.[0-9]+.[0-9]+)./\1/p' | head -1) && set -o pipefail
|
|
||||||
|
|
||||||
if [ "${RELEASE}" != "$(cat ~/.teamspeak-server)" ] || [ ! -f ~/.teamspeak-server ]; then
|
|
||||||
msg_info "Updating ${APP} LXC"
|
|
||||||
$STD apk -U upgrade
|
|
||||||
$STD service teamspeak stop
|
|
||||||
curl -fsSL "https://files.teamspeak-services.com/releases/server/${RELEASE}/teamspeak3-server_linux_amd64-${RELEASE}.tar.bz2" -o ts3server.tar.bz2
|
|
||||||
tar -xf ./ts3server.tar.bz2
|
|
||||||
cp -ru teamspeak3-server_linux_amd64/* /opt/teamspeak-server/
|
|
||||||
rm -f ~/ts3server.tar.bz*
|
|
||||||
rm -rf teamspeak3-server_linux_amd64
|
|
||||||
echo "${RELEASE}" >~/.teamspeak-server
|
|
||||||
$STD service teamspeak start
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
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 IP:${CL}"
|
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}${IP}:9987${CL}"
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: Slaviša Arežina (tremor021) | Co-Author: Stavros (steveiliop56)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/steveiliop56/tinyauth
|
|
||||||
|
|
||||||
APP="Alpine-Tinyauth"
|
|
||||||
var_tags="${var_tags:-alpine;auth}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-256}"
|
|
||||||
var_disk="${var_disk:-2}"
|
|
||||||
var_os="${var_os:-alpine}"
|
|
||||||
var_version="${var_version:-3.22}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
if [[ ! -d /opt/tinyauth ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
msg_info "Updating packages"
|
|
||||||
$STD apk -U upgrade
|
|
||||||
msg_ok "Updated packages"
|
|
||||||
|
|
||||||
msg_info "Updating Tinyauth"
|
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/steveiliop56/tinyauth/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
|
|
||||||
if [ "${RELEASE}" != "$(cat /opt/tinyauth_version.txt)" ] || [ ! -f /opt/tinyauth_version.txt ]; then
|
|
||||||
$STD service tinyauth stop
|
|
||||||
rm -f /opt/tinyauth/tinyauth
|
|
||||||
curl -fsSL "https://github.com/steveiliop56/tinyauth/releases/download/v${RELEASE}/tinyauth-amd64" -o /opt/tinyauth/tinyauth
|
|
||||||
chmod +x /opt/tinyauth/tinyauth
|
|
||||||
echo "${RELEASE}" >/opt/tinyauth_version.txt
|
|
||||||
msg_info "Restarting Tinyauth"
|
|
||||||
$STD service tinyauth start
|
|
||||||
msg_ok "Restarted Tinyauth"
|
|
||||||
msg_ok "Updated Tinyauth"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
|
||||||
fi
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
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}"
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: MickLesk (CanbiZ)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://alpinelinux.org/
|
|
||||||
|
|
||||||
APP="Alpine-Traefik"
|
|
||||||
var_tags="${var_tags:-os;alpine}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-512}"
|
|
||||||
var_disk="${var_disk:-1}"
|
|
||||||
var_os="${var_os:-alpine}"
|
|
||||||
var_version="${var_version:-3.22}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
header_info
|
|
||||||
msg_info "Updating Alpine Packages"
|
|
||||||
$STD apk -U upgrade
|
|
||||||
msg_ok "Updated Alpine Packages"
|
|
||||||
|
|
||||||
msg_info "Upgrading traefik from edge"
|
|
||||||
$STD apk add traefik --repository=https://dl-cdn.alpinelinux.org/alpine/edge/community
|
|
||||||
msg_ok "Upgraded traefik"
|
|
||||||
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} WebUI Access (if configured) - using the following URL:${CL}"
|
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/dashboard${CL}"
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: Slaviša Arežina (tremor021)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://transmissionbt.com/
|
|
||||||
|
|
||||||
APP="Alpine-Transmission"
|
|
||||||
var_tags="${var_tags:-alpine;torrent}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-256}"
|
|
||||||
var_disk="${var_disk:-1}"
|
|
||||||
var_os="${var_os:-alpine}"
|
|
||||||
var_version="${var_version:-3.22}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
msg_info "Updating Alpine Packages"
|
|
||||||
$STD apk -U upgrade
|
|
||||||
msg_ok "Updated Alpine Packages"
|
|
||||||
|
|
||||||
msg_info "Updating Transmission"
|
|
||||||
$STD apk upgrade transmission-daemon
|
|
||||||
msg_ok "Updated Transmission"
|
|
||||||
|
|
||||||
msg_info "Restarting Transmission"
|
|
||||||
$STD rc-service transmission-daemon restart
|
|
||||||
msg_ok "Restarted Transmission"
|
|
||||||
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
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}:9091${CL}"
|
|
||||||
@@ -1,24 +1,58 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2024 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster)
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
# License: MIT
|
||||||
# Source: https://github.com/dani-garcia/vaultwarden
|
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
_ __ ____ __
|
||||||
|
| | / /___ ___ __/ / /__ ______ __________/ /__ ____
|
||||||
|
| | / / __ `/ / / / / __/ | /| / / __ `/ ___/ __ / _ \/ __ \
|
||||||
|
| |/ / /_/ / /_/ / / /_ | |/ |/ / /_/ / / / /_/ / __/ / / /
|
||||||
|
|___/\__,_/\__,_/_/\__/ |__/|__/\__,_/_/ \__,_/\___/_/ /_/
|
||||||
|
Alpine
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
APP="Alpine-Vaultwarden"
|
APP="Alpine-Vaultwarden"
|
||||||
var_tags="${var_tags:-alpine;vault}"
|
var_disk="0.3"
|
||||||
var_cpu="${var_cpu:-1}"
|
var_cpu="1"
|
||||||
var_ram="${var_ram:-256}"
|
var_ram="256"
|
||||||
var_disk="${var_disk:-1}"
|
var_os="alpine"
|
||||||
var_os="${var_os:-alpine}"
|
var_version="3.19"
|
||||||
var_version="${var_version:-3.22}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
variables
|
||||||
color
|
color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
if ! apk -e info newt >/dev/null 2>&1; then
|
if ! apk -e info newt >/dev/null 2>&1; then
|
||||||
apk add -q newt
|
apk add -q newt
|
||||||
@@ -37,15 +71,14 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
case $CHOICE in
|
case $CHOICE in
|
||||||
1)
|
1)
|
||||||
$STD apk -U upgrade
|
apk update && apk upgrade
|
||||||
rc-service vaultwarden restart -q
|
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
2)
|
2)
|
||||||
if NEWTOKEN=$(whiptail --backtitle "Proxmox VE Helper Scripts" --passwordbox "Setup your ADMIN_TOKEN (make it strong)" 10 58 3>&1 1>&2 2>&3); then
|
if NEWTOKEN=$(whiptail --backtitle "Proxmox VE Helper Scripts" --passwordbox "Setup your ADMIN_TOKEN (make it strong)" 10 58 3>&1 1>&2 2>&3); then
|
||||||
if [[ -z "$NEWTOKEN" ]]; then exit-script; fi
|
if [[ -z "$NEWTOKEN" ]]; then exit-script; fi
|
||||||
if ! command -v argon2 >/dev/null 2>&1; then apk add argon2 &>/dev/null; fi
|
if ! command -v argon2 >/dev/null 2>&1; then apk add argon2 &>/dev/null; fi
|
||||||
TOKEN=$(echo -n "${NEWTOKEN}" | argon2 "$(openssl rand -base64 32)" -e -id -k 19456 -t 2 -p 1)
|
TOKEN=$(echo -n ${NEWTOKEN} | argon2 "$(openssl rand -base64 32)" -e -id -k 19456 -t 2 -p 1)
|
||||||
if [[ ! -f /var/lib/vaultwarden/config.json ]]; then
|
if [[ ! -f /var/lib/vaultwarden/config.json ]]; then
|
||||||
sed -i "s|export ADMIN_TOKEN=.*|export ADMIN_TOKEN='${TOKEN}'|" /etc/conf.d/vaultwarden
|
sed -i "s|export ADMIN_TOKEN=.*|export ADMIN_TOKEN='${TOKEN}'|" /etc/conf.d/vaultwarden
|
||||||
else
|
else
|
||||||
@@ -66,4 +99,4 @@ description
|
|||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${APP} should be reachable by going to the following URL.
|
echo -e "${APP} should be reachable by going to the following URL.
|
||||||
${BL}https://${IP}:8000${CL} \n"
|
${BL}http://${IP}:8000${CL} \n"
|
||||||
|
|||||||
@@ -1,49 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: MickLesk (CanbiZ)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://www.wireguard.com/
|
|
||||||
|
|
||||||
APP="Alpine-Wireguard"
|
|
||||||
var_tags="${var_tags:-alpine;vpn}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-256}"
|
|
||||||
var_disk="${var_disk:-1}"
|
|
||||||
var_os="${var_os:-alpine}"
|
|
||||||
var_version="${var_version:-3.22}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
msg_info "Updating Alpine Packages"
|
|
||||||
$STD apk -U upgrade
|
|
||||||
msg_ok "Updated Alpine Packages"
|
|
||||||
|
|
||||||
msg_info "update wireguard-tools"
|
|
||||||
$STD apk add --no-cache --upgrade wireguard-tools
|
|
||||||
msg_ok "wireguard-tools updated"
|
|
||||||
|
|
||||||
if [[ -d /etc/wgdashboard/src ]]; then
|
|
||||||
msg_info "update WGDashboard"
|
|
||||||
cd /etc/wgdashboard/src
|
|
||||||
$STD echo "y" | ./wgd.sh update
|
|
||||||
$STD ./wgd.sh start
|
|
||||||
msg_ok "WGDashboard updated"
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
start
|
|
||||||
build_container
|
|
||||||
description
|
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
|
||||||
echo -e "${INFO}${YW} WGDashboard Access it using the following URL:${CL}"
|
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:10086${CL}"
|
|
||||||
@@ -1,24 +1,58 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2024 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster)
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
# License: MIT
|
||||||
# Source: https://www.zigbee2mqtt.io/
|
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
_____ _ __ ___ __ _______ ____________
|
||||||
|
/__ / (_)___ _/ /_ ___ ___ |__ \ / |/ / __ \/_ __/_ __/
|
||||||
|
/ / / / __ / __ \/ _ \/ _ \__/ // /|_/ / / / / / / / /
|
||||||
|
/ /__/ / /_/ / /_/ / __/ __/ __// / / / /_/ / / / / /
|
||||||
|
/____/_/\__, /_.___/\___/\___/____/_/ /_/\___\_\/_/ /_/
|
||||||
|
/____/ Alpine
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
APP="Alpine-Zigbee2MQTT"
|
APP="Alpine-Zigbee2MQTT"
|
||||||
var_tags="${var_tags:-alpine;zigbee;mqtt;smarthome}"
|
var_disk="0.3"
|
||||||
var_disk="${var_disk:-1}"
|
var_cpu="1"
|
||||||
var_cpu="${var_cpu:-1}"
|
var_ram="256"
|
||||||
var_ram="${var_ram:-256}"
|
var_os="alpine"
|
||||||
var_os="${var_os:-alpine}"
|
var_version="3.19"
|
||||||
var_version="${var_version:-3.22}"
|
|
||||||
var_unprivileged="${var_unprivileged:-0}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
variables
|
||||||
color
|
color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="0"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
if ! apk -e info newt >/dev/null 2>&1; then
|
if ! apk -e info newt >/dev/null 2>&1; then
|
||||||
apk add -q newt
|
apk add -q newt
|
||||||
@@ -36,7 +70,7 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
case $CHOICE in
|
case $CHOICE in
|
||||||
1)
|
1)
|
||||||
$STD apk -U upgrade
|
apk update && apk upgrade
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
78
ct/alpine.sh
78
ct/alpine.sh
@@ -1,36 +1,68 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2024 tteck
|
# Copyright (c) 2021-2024 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster)
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
# License: MIT
|
||||||
# Source: https://alpinelinux.org/
|
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
___ __ _
|
||||||
|
/ | / /___ (_)___ ___
|
||||||
|
/ /| | / / __ \/ / __ \/ _ \
|
||||||
|
/ ___ |/ / /_/ / / / / / __/
|
||||||
|
/_/ |_/_/ .___/_/_/ /_/\___/
|
||||||
|
/_/
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
APP="Alpine"
|
APP="Alpine"
|
||||||
var_tags="${var_tags:-os;alpine}"
|
var_disk="0.1"
|
||||||
var_cpu="${var_cpu:-1}"
|
var_cpu="1"
|
||||||
var_ram="${var_ram:-512}"
|
var_ram="512"
|
||||||
var_disk="${var_disk:-1}"
|
var_os="alpine"
|
||||||
var_os="${var_os:-alpine}"
|
var_version="3.19"
|
||||||
var_version="${var_version:-3.22}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
variables
|
||||||
color
|
color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function default_settings() {
|
||||||
UPD=$(
|
CT_TYPE="1"
|
||||||
whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 1 \
|
PW="-password alpine"
|
||||||
"1" "Check for Alpine Updates" ON \
|
CT_ID=$NEXTID
|
||||||
3>&1 1>&2 2>&3
|
HN=$NSAPP
|
||||||
)
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
header_info
|
function update_script() {
|
||||||
if [ "$UPD" == "1" ]; then
|
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 1 \
|
||||||
$STD apk -U upgrade
|
"1" "Check for Alpine Updates" ON \
|
||||||
exit
|
3>&1 1>&2 2>&3)
|
||||||
fi
|
|
||||||
|
header_info
|
||||||
|
if [ "$UPD" == "1" ]; then
|
||||||
|
apk update && apk upgrade
|
||||||
|
exit;
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
@@ -1,34 +1,64 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2024 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster)
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
# License: MIT
|
||||||
# Source: https://cassandra.apache.org/_/index.html
|
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
___ __ ______ __
|
||||||
|
/ | ____ ____ ______/ /_ ___ / ____/___ _______________ _____ ____/ /________ _
|
||||||
|
/ /| | / __ \/ __ `/ ___/ __ \/ _ \ / / / __ `/ ___/ ___/ __ `/ __ \/ __ / ___/ __ `/
|
||||||
|
/ ___ |/ /_/ / /_/ / /__/ / / / __/ / /___/ /_/ (__ |__ ) /_/ / / / / /_/ / / / /_/ /
|
||||||
|
/_/ |_/ .___/\__,_/\___/_/ /_/\___/ \____/\__,_/____/____/\__,_/_/ /_/\__,_/_/ \__,_/
|
||||||
|
/_/
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
APP="Apache-Cassandra"
|
APP="Apache-Cassandra"
|
||||||
var_tags="${var_tags:-database;NoSQL}"
|
var_disk="4"
|
||||||
var_cpu="${var_cpu:-1}"
|
var_cpu="1"
|
||||||
var_ram="${var_ram:-2048}"
|
var_ram="2048"
|
||||||
var_disk="${var_disk:-4}"
|
var_os="debian"
|
||||||
var_os="${var_os:-debian}"
|
var_version="12"
|
||||||
var_version="${var_version:-12}"
|
VERBOSE="yes"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
variables
|
||||||
color
|
color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
if [[ ! -f /etc/systemd/system/cassandra.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
check_container_resources
|
msg_error "There is currently no update path available."
|
||||||
if [[ ! -f /etc/systemd/system/cassandra.service ]]; then
|
exit
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
msg_error "Currently we don't provide an update function for this ${APP}."
|
|
||||||
exit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
@@ -36,4 +66,3 @@ build_container
|
|||||||
description
|
description
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
|
||||||
|
|||||||
@@ -1,34 +1,64 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2024 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster)
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
# License: MIT
|
||||||
# Source: https://couchdb.apache.org/
|
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
___ __ ______ __ ____ ____
|
||||||
|
/ | ____ ____ ______/ /_ ___ / ____/___ __ _______/ /_ / __ \/ __ )
|
||||||
|
/ /| | / __ \/ __ `/ ___/ __ \/ _ \ / / / __ \/ / / / ___/ __ \/ / / / __ |
|
||||||
|
/ ___ |/ /_/ / /_/ / /__/ / / / __/ / /___/ /_/ / /_/ / /__/ / / / /_/ / /_/ /
|
||||||
|
/_/ |_/ .___/\__,_/\___/_/ /_/\___/ \____/\____/\__,_/\___/_/ /_/_____/_____/
|
||||||
|
/_/
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
APP="Apache-CouchDB"
|
APP="Apache-CouchDB"
|
||||||
var_tags="${var_tags:-database}"
|
var_disk="10"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="2"
|
||||||
var_ram="${var_ram:-4096}"
|
var_ram="4096"
|
||||||
var_disk="${var_disk:-10}"
|
var_os="debian"
|
||||||
var_os="${var_os:-debian}"
|
var_version="12"
|
||||||
var_version="${var_version:-12}"
|
VERBOSE="yes"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
variables
|
||||||
color
|
color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
if [[ ! -f /etc/systemd/system/couchdb.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
check_container_resources
|
msg_error "There is currently no update path available."
|
||||||
if [[ ! -f /etc/systemd/system/couchdb.service ]]; then
|
exit
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
msg_error "Currently we don't provide an update function for this ${APP}."
|
|
||||||
exit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
@@ -36,6 +66,5 @@ build_container
|
|||||||
description
|
description
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${APP} should be reachable by going to the following URL.
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
${BL}http://${IP}:5984/_utils/${CL} \n"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5984/_utils/${CL}"
|
|
||||||
|
|||||||
@@ -1,41 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/refs/heads/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: Michel Roegl-Brunner (michelroegl-brunner)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://guacamole.apache.org/
|
|
||||||
|
|
||||||
APP="Apache-Guacamole"
|
|
||||||
var_tags="${var_tags:-webserver;remote}"
|
|
||||||
var_disk="${var_disk:-4}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-2048}"
|
|
||||||
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 /opt/apache-guacamole ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
msg_error "Currently we don't provide an update function for this ${APP}."
|
|
||||||
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}:8080/guacamole${CL}"
|
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: Andy Grunwald (andygrunwald)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/apache/tika/
|
|
||||||
|
|
||||||
APP="Apache-Tika"
|
|
||||||
var_tags="${var_tags:-document}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-2048}"
|
|
||||||
var_disk="${var_disk:-10}"
|
|
||||||
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 [[ ! -f /etc/systemd/system/apache-tika.service ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
RELEASE="$(curl -fsSL https://dlcdn.apache.org/tika/ | grep -oP '(?<=href=")[0-9]+\.[0-9]+\.[0-9]+(?=/")' | sort -V | tail -n1)"
|
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
|
||||||
msg_info "Stopping ${APP}"
|
|
||||||
systemctl stop apache-tika
|
|
||||||
msg_ok "Stopped ${APP}"
|
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
|
||||||
cd /opt/apache-tika
|
|
||||||
curl -fsSL -o tika-server-standard-${RELEASE}.jar "https://dlcdn.apache.org/tika/${RELEASE}/tika-server-standard-${RELEASE}.jar"
|
|
||||||
mv --force tika-server-standard.jar tika-server-standard-prev-version.jar
|
|
||||||
mv tika-server-standard-${RELEASE}.jar tika-server-standard.jar
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated ${APP} to v${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
|
||||||
systemctl start apache-tika
|
|
||||||
msg_ok "Started ${APP}"
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -rf /opt/apache-tika/tika-server-standard-prev-version.jar
|
|
||||||
msg_ok "Cleanup Completed"
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
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}:9998${CL}"
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: MickLesk (Canbiz)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://tomcat.apache.org/
|
|
||||||
|
|
||||||
APP="Apache-Tomcat"
|
|
||||||
var_tags="${var_tags:-webserver}"
|
|
||||||
var_disk="${var_disk:-5}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-1024}"
|
|
||||||
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 ! ls -d /opt/tomcat-* >/dev/null 2>&1; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
msg_error "Currently we don't provide an update function for this ${APP}."
|
|
||||||
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}:8080${CL}"
|
|
||||||
@@ -1,37 +1,66 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2024 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster)
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
# License: MIT
|
||||||
# Source: https://wiki.debian.org/AptCacherNg
|
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
___ __ ______ __ _ ________
|
||||||
|
/ | ____ / /_ / ____/___ ______/ /_ ___ _____ / | / / ____/
|
||||||
|
/ /| | / __ \/ __/__/ / / __ `/ ___/ __ \/ _ \/ ___/__/ |/ / / __
|
||||||
|
/ ___ |/ /_/ / /_/__/ /___/ /_/ / /__/ / / / __/ / /__/ /| / /_/ /
|
||||||
|
/_/ |_/ .___/\__/ \____/\__,_/\___/_/ /_/\___/_/ /_/ |_/\____/
|
||||||
|
/_/
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
APP="Apt-Cacher-NG"
|
APP="Apt-Cacher-NG"
|
||||||
var_tags="${var_tags:-caching}"
|
var_disk="2"
|
||||||
var_cpu="${var_cpu:-1}"
|
var_cpu="1"
|
||||||
var_ram="${var_ram:-512}"
|
var_ram="512"
|
||||||
var_disk="${var_disk:-2}"
|
var_os="debian"
|
||||||
var_os="${var_os:-debian}"
|
var_version="12"
|
||||||
var_version="${var_version:-12}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
variables
|
||||||
color
|
color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
check_container_resources
|
msg_info "Updating $APP LXC"
|
||||||
if [[ ! -d /var ]]; then
|
apt-get update &>/dev/null
|
||||||
msg_error "No ${APP} Installation Found!"
|
apt-get -y upgrade &>/dev/null
|
||||||
exit
|
msg_ok "Updated $APP LXC"
|
||||||
fi
|
exit
|
||||||
msg_info "Updating $APP LXC"
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get -y upgrade
|
|
||||||
msg_ok "Updated $APP LXC"
|
|
||||||
exit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
@@ -39,6 +68,5 @@ build_container
|
|||||||
description
|
description
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${APP} maintenance page should be reachable by going to the following URL.
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
${BL}http://${IP}:3142/acng-report.html${CL} \n"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3142/acng-report.html${CL}"
|
|
||||||
|
|||||||
@@ -1,55 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 tteck
|
|
||||||
# Author: tteck
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://archivebox.io/
|
|
||||||
|
|
||||||
APP="ArchiveBox"
|
|
||||||
var_tags="${var_tags:-archive;bookmark}"
|
|
||||||
var_cpu="${var_cpu:-2}"
|
|
||||||
var_ram="${var_ram:-1024}"
|
|
||||||
var_disk="${var_disk:-8}"
|
|
||||||
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 /opt/archivebox ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
msg_info "Stopping ${APP}"
|
|
||||||
systemctl stop archivebox
|
|
||||||
msg_ok "Stopped ${APP}"
|
|
||||||
|
|
||||||
msg_info "Updating ${APP}"
|
|
||||||
cd /opt/archivebox/data
|
|
||||||
pip install --upgrade --ignore-installed archivebox
|
|
||||||
sudo -u archivebox archivebox init
|
|
||||||
msg_ok "Updated ${APP}"
|
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
|
||||||
systemctl start archivebox
|
|
||||||
msg_ok "Started ${APP}"
|
|
||||||
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
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}:8000/admin/login${CL}"
|
|
||||||
56
ct/argus.sh
56
ct/argus.sh
@@ -1,56 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: MickLesk (CanbiZ)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://release-argus.io/
|
|
||||||
|
|
||||||
APP="Argus"
|
|
||||||
var_tags="${var_tags:-watcher}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-512}"
|
|
||||||
var_disk="${var_disk:-3}"
|
|
||||||
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 /opt/argus ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/release-argus/Argus/releases/latest | jq -r .tag_name | sed 's/^v//')
|
|
||||||
if [[ "${RELEASE}" != "$(cat ~/.Argus 2>/dev/null)" ]] || [[ ! -f ~/.Argus ]]; then
|
|
||||||
msg_info "Stopping service"
|
|
||||||
systemctl stop argus
|
|
||||||
msg_ok "Service stopped"
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "Argus" "release-argus/Argus" "singlefile" "latest" "/opt/argus" "Argus*linux-arm64"
|
|
||||||
|
|
||||||
msg_info "Starting service"
|
|
||||||
systemctl start argus
|
|
||||||
msg_ok "Service started"
|
|
||||||
|
|
||||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
|
||||||
else
|
|
||||||
msg_ok "${APP} is already up to date (${RELEASE})"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
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}:8080${CL}"
|
|
||||||
82
ct/aria2.sh
82
ct/aria2.sh
@@ -1,37 +1,64 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2024 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster)
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
# License: MIT
|
||||||
# Source: https://aria2.github.io/
|
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
___ _ ___
|
||||||
|
/ | _____(_)___ |__ \
|
||||||
|
/ /| | / ___/ / __ `/_/ /
|
||||||
|
/ ___ |/ / / / /_/ / __/
|
||||||
|
/_/ |_/_/ /_/\__,_/____/
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
APP="Aria2"
|
APP="Aria2"
|
||||||
var_tags="${var_tags:-download-utility}"
|
var_disk="8"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="2"
|
||||||
var_ram="${var_ram:-1024}"
|
var_ram="1028"
|
||||||
var_disk="${var_disk:-8}"
|
var_os="debian"
|
||||||
var_os="${var_os:-debian}"
|
var_version="12"
|
||||||
var_version="${var_version:-12}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
variables
|
||||||
color
|
color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
check_container_resources
|
msg_info "Updating $APP LXC"
|
||||||
if [[ ! -d /var ]]; then
|
apt-get update &>/dev/null
|
||||||
msg_error "No ${APP} Installation Found!"
|
apt-get -y upgrade &>/dev/null
|
||||||
exit
|
msg_ok "Updated $APP LXC"
|
||||||
fi
|
exit
|
||||||
msg_info "Updating $APP LXC"
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get -y upgrade
|
|
||||||
msg_ok "Updated $APP LXC"
|
|
||||||
exit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
@@ -39,6 +66,5 @@ build_container
|
|||||||
description
|
description
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${APP} should be reachable by going to the following URL.
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
${BL}http://${IP}:6880${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:6880${CL}"
|
|
||||||
|
|||||||
@@ -1,35 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: michelroegl-brunner
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://asterisk.org/
|
|
||||||
|
|
||||||
APP="Asterisk"
|
|
||||||
var_tags="${var_tags:-telephone;pbx}"
|
|
||||||
var_cpu="${var_cpu:-2}"
|
|
||||||
var_ram="${var_ram:-2048}"
|
|
||||||
var_disk="${var_disk:-4}"
|
|
||||||
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
|
|
||||||
msg_error "No Update function provided for ${APP} LXC"
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
|
|
||||||
start
|
|
||||||
build_container
|
|
||||||
description
|
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
|
||||||
@@ -1,34 +1,62 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2024 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster)
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
# License: MIT
|
||||||
# Source: https://www.audiobookshelf.org/
|
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
___ __ __ __ ______
|
||||||
|
____ ___ ______/ (_)___ / /_ ____ ____ / /_______/ /_ ___ / / __/
|
||||||
|
/ __ `/ / / / __ / / __ \/ __ \/ __ \/ __ \/ //_/ ___/ __ \/ _ \/ / /_
|
||||||
|
/ /_/ / /_/ / /_/ / / /_/ / /_/ / /_/ / /_/ / ,< (__ ) / / / __/ / __/
|
||||||
|
\__,_/\__,_/\__,_/_/\____/_.___/\____/\____/_/|_/____/_/ /_/\___/_/_/
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
APP="audiobookshelf"
|
APP="audiobookshelf"
|
||||||
var_tags="${var_tags:-podcast;audiobook}"
|
var_disk="4"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="2"
|
||||||
var_ram="${var_ram:-2048}"
|
var_ram="2048"
|
||||||
var_disk="${var_disk:-4}"
|
var_os="debian"
|
||||||
var_os="${var_os:-debian}"
|
var_version="12"
|
||||||
var_version="${var_version:-12}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
variables
|
||||||
color
|
color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
if [[ ! -f /etc/apt/trusted.gpg.d/audiobookshelf-ppa.asc ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
check_container_resources
|
echo "This application receives updates through the APT package manager."
|
||||||
if [[ ! -f /etc/apt/trusted.gpg.d/audiobookshelf-ppa.asc ]]; then
|
exit
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
echo "This application receives updates through the APT package manager."
|
|
||||||
exit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
@@ -36,6 +64,5 @@ build_container
|
|||||||
description
|
description
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${APP} should be reachable by going to the following URL.
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
${BL}http://${IP}:13378${CL} \n"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:13378${CL}"
|
|
||||||
|
|||||||
@@ -1,58 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: thost96 (thost96)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://www.authelia.com/
|
|
||||||
|
|
||||||
APP="Authelia"
|
|
||||||
TAGS=""
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-512}"
|
|
||||||
var_disk="${var_disk:-2}"
|
|
||||||
var_os="${var_os:-debian}"
|
|
||||||
var_version="${var_version:-12}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
base_settings
|
|
||||||
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
header_info
|
|
||||||
check_container_storage
|
|
||||||
check_container_resources
|
|
||||||
if [[ ! -d "/etc/authelia/" ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/authelia/authelia/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
|
||||||
if [[ "${RELEASE}" != "$(/usr/bin/authelia -v | awk '{print substr($3, 2, length($2)) }')" ]]; then
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get -y upgrade
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "authelia" "authelia/authelia" "binary"
|
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
$STD apt-get -y autoremove
|
|
||||||
$STD apt-get -y autoclean
|
|
||||||
msg_ok "Cleanup Completed"
|
|
||||||
|
|
||||||
msg_ok "Updated $APP to ${RELEASE}"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at ${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}https://YOUR_AUTHELIA_URL${CL}"
|
|
||||||
103
ct/autobrr.sh
103
ct/autobrr.sh
@@ -1,50 +1,76 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2024 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster)
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
# License: MIT
|
||||||
# Source: https://autobrr.com/
|
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
___ __ __
|
||||||
|
/ | __ __/ /_____ / /_ __________
|
||||||
|
/ /| |/ / / / __/ __ \/ __ \/ ___/ ___/
|
||||||
|
/ ___ / /_/ / /_/ /_/ / /_/ / / / /
|
||||||
|
/_/ |_\__,_/\__/\____/_.___/_/ /_/
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
APP="Autobrr"
|
APP="Autobrr"
|
||||||
var_tags="${var_tags:-arr;}"
|
var_disk="8"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="2"
|
||||||
var_ram="${var_ram:-2048}"
|
var_ram="2048"
|
||||||
var_disk="${var_disk:-8}"
|
var_os="debian"
|
||||||
var_os="${var_os:-debian}"
|
var_version="12"
|
||||||
var_version="${var_version:-12}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
variables
|
||||||
color
|
color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
if [[ ! -f /root/.config/autobrr/config.toml ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
check_container_resources
|
msg_info "Stopping ${APP} LXC"
|
||||||
if [[ ! -f /root/.config/autobrr/config.toml ]]; then
|
systemctl stop autobrr.service
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_ok "Stopped ${APP} LXC"
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/autobrr/autobrr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
msg_info "Updating ${APP} LXC"
|
||||||
if [[ "${RELEASE}" != "$(cat ~/.autobrr 2>/dev/null)" ]] || [[ ! -f ~/.autobrr ]]; then
|
rm -rf /usr/local/bin/*
|
||||||
msg_info "Stopping ${APP} LXC"
|
wget -q $(curl -s https://api.github.com/repos/autobrr/autobrr/releases/latest | grep download | grep linux_arm64 | cut -d\" -f4)
|
||||||
systemctl stop autobrr
|
tar -C /usr/local/bin -xzf autobrr*.tar.gz
|
||||||
msg_ok "Stopped ${APP} LXC"
|
rm -rf autobrr*.tar.gz
|
||||||
|
msg_ok "Updated ${APP} LXC"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "autobrr" "autobrr/autobrr" "prebuild" "latest" "/usr/local/bin" "autobrr_*_linux_x86_64.tar.gz"
|
msg_info "Starting ${APP} LXC"
|
||||||
|
systemctl start autobrr.service
|
||||||
msg_info "Starting ${APP} LXC"
|
msg_ok "Started ${APP} LXC"
|
||||||
systemctl start autobrr
|
msg_ok "Updated Successfully"
|
||||||
msg_ok "Started ${APP} LXC"
|
exit
|
||||||
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
|
||||||
fi
|
|
||||||
exit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
@@ -52,6 +78,5 @@ build_container
|
|||||||
description
|
description
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${APP} should be reachable by going to the following URL.
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
${BL}http://${IP}:7474${CL} \n"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:7474${CL}"
|
|
||||||
|
|||||||
@@ -1,80 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: MickLesk (CanbiZ)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/babybuddy/babybuddy
|
|
||||||
|
|
||||||
APP="Baby Buddy"
|
|
||||||
var_tags="${var_tags:-baby}"
|
|
||||||
var_disk="${var_disk:-5}"
|
|
||||||
var_cpu="${var_cpu:-2}"
|
|
||||||
var_ram="${var_ram:-2048}"
|
|
||||||
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 /opt/babybuddy ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/babybuddy/babybuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
if [[ "${RELEASE}" != "$(cat ~/.babybuddy 2>/dev/null)" ]] || [[ ! -f ~/.babybuddy ]]; then
|
|
||||||
setup_uv
|
|
||||||
|
|
||||||
msg_info "Stopping Services"
|
|
||||||
systemctl stop nginx
|
|
||||||
systemctl stop uwsgi
|
|
||||||
msg_ok "Services Stopped"
|
|
||||||
|
|
||||||
msg_info "Cleaning old files"
|
|
||||||
cp /opt/babybuddy/babybuddy/settings/production.py /tmp/production.py.bak
|
|
||||||
find . -mindepth 1 -maxdepth 1 ! -name '.venv' -exec rm -rf {} +
|
|
||||||
msg_ok "Cleaned old files"
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "babybuddy" "babybuddy/babybuddy"
|
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
|
||||||
cd /opt/babybuddy
|
|
||||||
mv /tmp/production.py.bak /opt/babybuddy/babybuddy/settings/production.py
|
|
||||||
source .venv/bin/activate
|
|
||||||
$STD uv pip install -r requirements.txt
|
|
||||||
$STD python manage.py migrate
|
|
||||||
msg_ok "Updated ${APP} to v${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Fixing permissions"
|
|
||||||
chown -R www-data:www-data /opt/data
|
|
||||||
chmod 640 /opt/data/db.sqlite3
|
|
||||||
chmod 750 /opt/data
|
|
||||||
msg_ok "Permissions fixed"
|
|
||||||
|
|
||||||
msg_info "Starting Services"
|
|
||||||
systemctl start uwsgi
|
|
||||||
systemctl start nginx
|
|
||||||
msg_ok "Services Started"
|
|
||||||
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
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}${CL}"
|
|
||||||
@@ -1,66 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: ksad (enirys31)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://garethgeorge.github.io/backrest/
|
|
||||||
|
|
||||||
APP="Backrest"
|
|
||||||
var_tags="${var_tags:-backup}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-512}"
|
|
||||||
var_disk="${var_disk:-8}"
|
|
||||||
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 /opt/backrest ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/garethgeorge/backrest/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
|
||||||
msg_info "Stopping ${APP}"
|
|
||||||
systemctl stop backrest
|
|
||||||
msg_ok "Stopped ${APP}"
|
|
||||||
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
|
||||||
temp_file=$(mktemp)
|
|
||||||
rm -f /opt/backrest/bin/backrest
|
|
||||||
curl -fsSL "https://github.com/garethgeorge/backrest/releases/download/v${RELEASE}/backrest_Linux_arm64.tar.gz" -o "$temp_file"
|
|
||||||
tar xzf $temp_file -C /opt/backrest/bin
|
|
||||||
chmod +x /opt/backrest/bin/backrest
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
|
||||||
systemctl start backrest
|
|
||||||
msg_ok "Started ${APP}"
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -f "$temp_file"
|
|
||||||
msg_ok "Cleaned up"
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at ${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}:9898${CL}"
|
|
||||||
74
ct/baikal.sh
74
ct/baikal.sh
@@ -1,74 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: bvdberg01
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://sabre.io/baikal/
|
|
||||||
|
|
||||||
APP="Baikal"
|
|
||||||
var_tags="${var_tags:-Dav}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-512}"
|
|
||||||
var_disk="${var_disk:-4}"
|
|
||||||
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 /opt/baikal ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/sabre-io/Baikal/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
|
||||||
if [[ "${RELEASE}" != "$(cat ~/.baikal 2>/dev/null)" ]] || [[ ! -f ~/.baikal ]]; then
|
|
||||||
msg_info "Stopping Service"
|
|
||||||
systemctl stop apache2
|
|
||||||
msg_ok "Stopped Service"
|
|
||||||
|
|
||||||
msg_info "Backing up data"
|
|
||||||
mv /opt/baikal /opt/baikal-backup
|
|
||||||
msg_ok "Backed up data"
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "baikal" "sabre-io/Baikal"
|
|
||||||
setup_composer
|
|
||||||
|
|
||||||
msg_info "Configuring Baikal"
|
|
||||||
cp -r /opt/baikal-backup/config/baikal.yaml /opt/baikal/config/
|
|
||||||
cp -r /opt/baikal-backup/Specific/ /opt/baikal/
|
|
||||||
chown -R www-data:www-data /opt/baikal/
|
|
||||||
chmod -R 755 /opt/baikal/
|
|
||||||
cd /opt/baikal
|
|
||||||
$STD composer install
|
|
||||||
msg_ok "Configured Baikal"
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
|
||||||
systemctl start apache2
|
|
||||||
msg_ok "Started Service"
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -rf /opt/baikal-backup
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
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}${CL}"
|
|
||||||
@@ -1,129 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: bvdberg01 | CanbiZ
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/karlomikus/bar-assistant
|
|
||||||
# Source: https://github.com/karlomikus/vue-salt-rim
|
|
||||||
# Source: https://www.meilisearch.com/
|
|
||||||
|
|
||||||
APP="Bar-Assistant"
|
|
||||||
var_tags="${var_tags:-cocktails;drinks}"
|
|
||||||
var_cpu="${var_cpu:-2}"
|
|
||||||
var_ram="${var_ram:-2048}"
|
|
||||||
var_disk="${var_disk:-4}"
|
|
||||||
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 /opt/bar-assistant ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
RELEASE_MEILISEARCH=$(curl -fsSL https://api.github.com/repos/meilisearch/meilisearch/releases/latest | jq -r '.tag_name | sub("^v"; "")')
|
|
||||||
RELEASE_BARASSISTANT=$(curl -fsSL https://api.github.com/repos/karlomikus/bar-assistant/releases/latest | jq -r '.tag_name | sub("^v"; "")')
|
|
||||||
RELEASE_SALTRIM=$(curl -fsSL https://api.github.com/repos/karlomikus/vue-salt-rim/releases/latest | jq -r '.tag_name | sub("^v"; "")')
|
|
||||||
|
|
||||||
if [[ "${RELEASE_BARASSISTANT}" != "$(cat ~/.bar-assistant 2>/dev/null)" ]] || [[ ! -f ~/.bar-assistant ]]; then
|
|
||||||
msg_info "Stopping nginx"
|
|
||||||
systemctl stop nginx
|
|
||||||
msg_ok "Stopped nginx"
|
|
||||||
|
|
||||||
msg_info "Backing up Bar Assistant"
|
|
||||||
mv /opt/bar-assistant /opt/bar-assistant-backup
|
|
||||||
msg_ok "Backed up Bar Assistant"
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "bar-assistant" "karlomikus/bar-assistant" "tarball" "latest" "/opt/bar-assistant"
|
|
||||||
setup_composer
|
|
||||||
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE_BARASSISTANT}"
|
|
||||||
cp -r /opt/bar-assistant-backup/.env /opt/bar-assistant/.env
|
|
||||||
cp -r /opt/bar-assistant-backup/storage/bar-assistant /opt/bar-assistant/storage/bar-assistant
|
|
||||||
cd /opt/bar-assistant
|
|
||||||
$STD composer install --no-interaction
|
|
||||||
$STD php artisan migrate --force
|
|
||||||
$STD php artisan storage:link
|
|
||||||
$STD php artisan bar:setup-meilisearch
|
|
||||||
$STD php artisan scout:sync-index-settings
|
|
||||||
$STD php artisan config:cache
|
|
||||||
$STD php artisan route:cache
|
|
||||||
$STD php artisan event:cache
|
|
||||||
chown -R www-data:www-data /opt/bar-assistant
|
|
||||||
msg_ok "Updated $APP to ${RELEASE_BARASSISTANT}"
|
|
||||||
|
|
||||||
msg_info "Starting nginx"
|
|
||||||
systemctl start nginx
|
|
||||||
msg_ok "Started nginx"
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -rf /opt/bar-assistant-backup
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE_BARASSISTANT}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "${RELEASE_SALTRIM}" != "$(cat ~/.vue-salt-rim 2>/dev/null)" ]] || [[ ! -f ~/.vue-salt-rim ]]; then
|
|
||||||
msg_info "Backing up Vue Salt Rim"
|
|
||||||
mv /opt/vue-salt-rim /opt/vue-salt-rim-backup
|
|
||||||
msg_ok "Backed up Vue Salt Rim"
|
|
||||||
|
|
||||||
msg_info "Stopping nginx"
|
|
||||||
systemctl stop nginx
|
|
||||||
msg_ok "Stopped nginx"
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "vue-salt-rim" "karlomikus/vue-salt-rim" "tarball" "latest" "/opt/vue-salt-rim"
|
|
||||||
|
|
||||||
msg_info "Updating Salt Rim to ${RELEASE_SALTRIM}"
|
|
||||||
cp /opt/vue-salt-rim-backup/public/config.js /opt/vue-salt-rim/public/config.js
|
|
||||||
cd /opt/vue-salt-rim
|
|
||||||
$STD npm install
|
|
||||||
$STD npm run build
|
|
||||||
msg_ok "Updated $APP to ${RELEASE_SALTRIM}"
|
|
||||||
|
|
||||||
msg_info "Starting nginx"
|
|
||||||
systemctl start nginx
|
|
||||||
msg_ok "Started nginx"
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -rf /opt/vue-salt-rim-backup
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
msg_ok "Updated"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. Salt Rim is already at ${RELEASE_SALTRIM}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "${RELEASE_MEILISEARCH}" != "$(cat ~/.meilisearch 2>/dev/null)" ]] || [[ ! -f ~/.meilisearch ]]; then
|
|
||||||
msg_info "Stopping Meilisearch"
|
|
||||||
systemctl stop meilisearch
|
|
||||||
msg_ok "Stopped Meilisearch"
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "meilisearch" "meilisearch/meilisearch" "binary"
|
|
||||||
|
|
||||||
msg_info "Starting Meilisearch"
|
|
||||||
systemctl start meilisearch
|
|
||||||
msg_ok "Started Meilisearch"
|
|
||||||
|
|
||||||
msg_ok "Updated Meilisearch"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. Meilisearch is already at ${RELEASE_MEILISEARCH}"
|
|
||||||
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}${CL}"
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: bvdberg01
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/Forceu/barcodebuddy
|
|
||||||
|
|
||||||
APP="Barcode-Buddy"
|
|
||||||
var_tags="${var_tags:-grocery;household}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-512}"
|
|
||||||
var_disk="${var_disk:-3}"
|
|
||||||
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 /opt/barcodebuddy ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Forceu/barcodebuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
if [[ "${RELEASE}" != "$(cat ~/.barcodebuddy 2>/dev/null)" ]] || [[ ! -f ~/.barcodebuddy ]]; then
|
|
||||||
msg_info "Stopping Service"
|
|
||||||
systemctl stop apache2
|
|
||||||
systemctl stop barcodebuddy
|
|
||||||
msg_ok "Stopped Service"
|
|
||||||
|
|
||||||
msg_info "Backing up data"
|
|
||||||
mv /opt/barcodebuddy/ /opt/barcodebuddy-backup
|
|
||||||
msg_ok "Backed up data"
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "barcodebuddy" "Forceu/barcodebuddy"
|
|
||||||
|
|
||||||
msg_info "Configuring ${APP}"
|
|
||||||
cp -r /opt/barcodebuddy-backup/data/. /opt/barcodebuddy/data
|
|
||||||
chown -R www-data:www-data /opt/barcodebuddy/data
|
|
||||||
msg_ok "Configured ${APP}"
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
|
||||||
systemctl start apache2
|
|
||||||
systemctl start barcodebuddy
|
|
||||||
msg_ok "Started Service"
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -r /opt/barcodebuddy-backup
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
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}${CL}"
|
|
||||||
83
ct/bazarr.sh
Normal file → Executable file
83
ct/bazarr.sh
Normal file → Executable file
@@ -1,37 +1,65 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2024 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster)
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
# License: MIT
|
||||||
# Source: https://www.bazarr.media/
|
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
____
|
||||||
|
/ __ )____ _____ ____ ___________
|
||||||
|
/ __ / __ `/_ / / __ `/ ___/ ___/
|
||||||
|
/ /_/ / /_/ / / /_/ /_/ / / / /
|
||||||
|
/_____/\__,_/ /___/\__,_/_/ /_/
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
APP="Bazarr"
|
APP="Bazarr"
|
||||||
var_tags="${var_tags:-arr}"
|
var_disk="4"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="2"
|
||||||
var_ram="${var_ram:-1024}"
|
var_ram="1024"
|
||||||
var_disk="${var_disk:-4}"
|
var_os="debian"
|
||||||
var_os="${var_os:-debian}"
|
var_version="12"
|
||||||
var_version="${var_version:-12}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
variables
|
||||||
color
|
color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
if [[ ! -d /var/lib/bazarr/ ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
check_container_resources
|
msg_info "Updating $APP LXC"
|
||||||
if [[ ! -d /var/lib/bazarr/ ]]; then
|
apt-get update &>/dev/null
|
||||||
msg_error "No ${APP} Installation Found!"
|
apt-get -y upgrade &>/dev/null
|
||||||
exit
|
msg_ok "Updated $APP LXC"
|
||||||
fi
|
exit
|
||||||
msg_info "Updating $APP LXC"
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get -y upgrade
|
|
||||||
msg_ok "Updated $APP LXC"
|
|
||||||
exit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
@@ -39,6 +67,5 @@ build_container
|
|||||||
description
|
description
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${APP} should be reachable by going to the following URL.
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
${BL}http://${IP}:6767${CL} \n"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:6767${CL}"
|
|
||||||
|
|||||||
52
ct/beszel.sh
52
ct/beszel.sh
@@ -1,52 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) community-scripts ORG
|
|
||||||
# Author: Michelle Zitzerman (Sinofage)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://beszel.dev/
|
|
||||||
|
|
||||||
APP="Beszel"
|
|
||||||
var_tags="${var_tags:-monitoring}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-512}"
|
|
||||||
var_disk="${var_disk:-5}"
|
|
||||||
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 /opt/beszel ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
msg_info "Stopping $APP"
|
|
||||||
systemctl stop beszel-hub
|
|
||||||
msg_ok "Stopped $APP"
|
|
||||||
|
|
||||||
msg_info "Updating $APP"
|
|
||||||
$STD /opt/beszel/beszel update
|
|
||||||
msg_ok "Updated $APP"
|
|
||||||
|
|
||||||
msg_info "Starting $APP"
|
|
||||||
systemctl start beszel-hub
|
|
||||||
msg_ok "Successfully started $APP"
|
|
||||||
msg_ok "Update Successful"
|
|
||||||
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 IP:${CL}"
|
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8090${CL}"
|
|
||||||
@@ -1,93 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: Slaviša Arežina (tremor021)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/bitmagnet/bitmagnet
|
|
||||||
|
|
||||||
APP="Bitmagnet"
|
|
||||||
var_tags="${var_tags:-os}"
|
|
||||||
var_cpu="${var_cpu:-2}"
|
|
||||||
var_ram="${var_ram:-1024}"
|
|
||||||
var_disk="${var_disk:-4}"
|
|
||||||
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 /opt/bitmagnet ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/bitmagnet-io/bitmagnet/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
if [[ "${RELEASE}" != "$(cat ~/.bitmagnet 2>/dev/null)" ]] || [[ ! -f ~/.bitmagnet ]]; then
|
|
||||||
msg_info "Stopping Service"
|
|
||||||
systemctl stop bitmagnet-web
|
|
||||||
msg_ok "Stopped Service"
|
|
||||||
|
|
||||||
msg_info "Backing up data"
|
|
||||||
rm -f /tmp/backup.sql
|
|
||||||
$STD sudo -u postgres pg_dump \
|
|
||||||
--column-inserts \
|
|
||||||
--data-only \
|
|
||||||
--on-conflict-do-nothing \
|
|
||||||
--rows-per-insert=1000 \
|
|
||||||
--table=metadata_sources \
|
|
||||||
--table=content \
|
|
||||||
--table=content_attributes \
|
|
||||||
--table=content_collections \
|
|
||||||
--table=content_collections_content \
|
|
||||||
--table=torrent_sources \
|
|
||||||
--table=torrents \
|
|
||||||
--table=torrent_files \
|
|
||||||
--table=torrent_hints \
|
|
||||||
--table=torrent_contents \
|
|
||||||
--table=torrent_tags \
|
|
||||||
--table=torrents_torrent_sources \
|
|
||||||
--table=key_values \
|
|
||||||
bitmagnet \
|
|
||||||
>/tmp/backup.sql
|
|
||||||
mv /tmp/backup.sql /opt/
|
|
||||||
[ -f /opt/bitmagnet/.env ] && cp /opt/bitmagnet/.env /opt/
|
|
||||||
[ -f /opt/bitmagnet/config.yml ] && cp /opt/bitmagnet/config.yml /opt/
|
|
||||||
msg_ok "Data backed up"
|
|
||||||
|
|
||||||
rm -rf /opt/bitmagnet
|
|
||||||
fetch_and_deploy_gh_release "bitmagnet" "bitmagnet-io/bitmagnet"
|
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
|
||||||
cd /opt/bitmagnet
|
|
||||||
VREL=v$RELEASE
|
|
||||||
$STD go build -ldflags "-s -w -X github.com/bitmagnet-io/bitmagnet/internal/version.GitTag=$VREL"
|
|
||||||
chmod +x bitmagnet
|
|
||||||
[ -f "/opt/.env" ] && cp "/opt/.env" /opt/bitmagnet/
|
|
||||||
[ -f "/opt/config.yml" ] && cp "/opt/config.yml" /opt/bitmagnet/
|
|
||||||
msg_ok "Updated $APP to v${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
|
||||||
systemctl start bitmagnet-web
|
|
||||||
msg_ok "Started Service"
|
|
||||||
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
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}:3333${CL}"
|
|
||||||
81
ct/blocky.sh
81
ct/blocky.sh
@@ -1,37 +1,65 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2024 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster)
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
# License: MIT
|
||||||
# Source: https://0xerr0r.github.io/blocky/latest/
|
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
____ __ __
|
||||||
|
/ __ )/ /___ _____/ /____ __
|
||||||
|
/ __ / / __ \/ ___/ //_/ / / /
|
||||||
|
/ /_/ / / /_/ / /__/ ,< / /_/ /
|
||||||
|
/_____/_/\____/\___/_/|_|\__, /
|
||||||
|
/____/
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
APP="Blocky"
|
APP="Blocky"
|
||||||
var_tags="${var_tags:-adblock}"
|
var_disk="2"
|
||||||
var_cpu="${var_cpu:-1}"
|
var_cpu="1"
|
||||||
var_ram="${var_ram:-512}"
|
var_ram="512"
|
||||||
var_disk="${var_disk:-2}"
|
var_os="debian"
|
||||||
var_os="${var_os:-debian}"
|
var_version="12"
|
||||||
var_version="${var_version:-12}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
variables
|
||||||
color
|
color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
check_container_resources
|
msg_info "Updating $APP LXC"
|
||||||
if [[ ! -d /var ]]; then
|
apt-get update &>/dev/null
|
||||||
msg_error "No ${APP} Installation Found!"
|
apt-get -y upgrade &>/dev/null
|
||||||
exit
|
msg_ok "Updated $APP LXC"
|
||||||
fi
|
exit
|
||||||
msg_info "Updating $APP LXC"
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get -y upgrade
|
|
||||||
msg_ok "Updated $APP LXC"
|
|
||||||
exit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
@@ -39,6 +67,3 @@ build_container
|
|||||||
description
|
description
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
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}:4000${CL}"
|
|
||||||
|
|||||||
@@ -1,80 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: MickLesk (CanbiZ)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/booklore-app/BookLore=======
|
|
||||||
|
|
||||||
|
|
||||||
APP="BookLore"
|
|
||||||
var_tags="${var_tags:-books;library}"
|
|
||||||
var_cpu="${var_cpu:-3}"
|
|
||||||
var_ram="${var_ram:-2048}"
|
|
||||||
var_disk="${var_disk:-7}"
|
|
||||||
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 /opt/booklore ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/booklore-app/BookLore/releases/latest | yq '.tag_name' | sed 's/^v//')
|
|
||||||
if [[ "${RELEASE}" != "$(cat ~/.booklore 2>/dev/null)" ]] || [[ ! -f ~/.booklore ]]; then
|
|
||||||
msg_info "Stopping $APP"
|
|
||||||
systemctl stop booklore
|
|
||||||
msg_ok "Stopped $APP"
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "booklore" "booklore-app/BookLore"
|
|
||||||
|
|
||||||
msg_info "Building Frontend"
|
|
||||||
cd /opt/booklore/booklore-ui
|
|
||||||
$STD npm install --force
|
|
||||||
$STD npm run build --configuration=production
|
|
||||||
msg_ok "Built Frontend"
|
|
||||||
|
|
||||||
msg_info "Building Backend"
|
|
||||||
cd /opt/booklore/booklore-api
|
|
||||||
APP_VERSION=$(curl -fsSL https://api.github.com/repos/booklore-app/BookLore/releases/latest | yq '.tag_name' | sed 's/^v//')
|
|
||||||
yq eval ".app.version = \"${APP_VERSION}\"" -i src/main/resources/application.yaml
|
|
||||||
$STD ./gradlew clean build --no-daemon
|
|
||||||
mkdir -p /opt/booklore/dist
|
|
||||||
JAR_PATH=$(find /opt/booklore/booklore-api/build/libs -maxdepth 1 -type f -name "booklore-api-*.jar" ! -name "*plain*" | head -n1)
|
|
||||||
if [[ -z "$JAR_PATH" ]]; then
|
|
||||||
msg_error "Backend JAR not found"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
cp "$JAR_PATH" /opt/booklore/dist/app.jar
|
|
||||||
msg_ok "Built Backend"
|
|
||||||
|
|
||||||
msg_info "Starting $APP"
|
|
||||||
systemctl start booklore
|
|
||||||
systemctl reload nginx
|
|
||||||
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}:6060${CL}"
|
|
||||||
@@ -1,85 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: MickLesk (Canbiz)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/BookStackApp/BookStack
|
|
||||||
|
|
||||||
APP="Bookstack"
|
|
||||||
var_tags="${var_tags:-organizer}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-1024}"
|
|
||||||
var_disk="${var_disk:-4}"
|
|
||||||
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 /opt/bookstack ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/BookStackApp/BookStack/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
if [[ "${RELEASE}" != "$(cat ~/.bookstack 2>/dev/null)" ]] || [[ ! -f ~/.bookstack ]]; then
|
|
||||||
msg_info "Stopping Apache2"
|
|
||||||
systemctl stop apache2
|
|
||||||
msg_ok "Services Stopped"
|
|
||||||
|
|
||||||
msg_info "Backing up data"
|
|
||||||
mv /opt/bookstack /opt/bookstack-backup
|
|
||||||
msg_ok "Backup finished"
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "bookstack" "BookStackApp/BookStack"
|
|
||||||
PHP_MODULE="ldap,tidy,bz2,mysqli" PHP_FPM="YES" PHP_APACHE="YES" PHP_VERSION="8.3" setup_php
|
|
||||||
setup_composer
|
|
||||||
|
|
||||||
msg_info "Restoring backup"
|
|
||||||
cp /opt/bookstack-backup/.env /opt/bookstack/.env
|
|
||||||
[[ -d /opt/bookstack-backup/public/uploads ]] && cp -a /opt/bookstack-backup/public/uploads/. /opt/bookstack/public/uploads/
|
|
||||||
[[ -d /opt/bookstack-backup/storage/uploads ]] && cp -a /opt/bookstack-backup/storage/uploads/. /opt/bookstack/storage/uploads/
|
|
||||||
[[ -d /opt/bookstack-backup/themes ]] && cp -a /opt/bookstack-backup/themes/. /opt/bookstack/themes/
|
|
||||||
msg_ok "Backup restored"
|
|
||||||
|
|
||||||
msg_info "Configuring BookStack"
|
|
||||||
cd /opt/bookstack
|
|
||||||
export COMPOSER_ALLOW_SUPERUSER=1
|
|
||||||
$STD composer install --no-dev
|
|
||||||
$STD php artisan migrate --force
|
|
||||||
chown www-data:www-data -R /opt/bookstack /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads /opt/bookstack/storage
|
|
||||||
chmod -R 755 /opt/bookstack /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads /opt/bookstack/storage
|
|
||||||
chmod -R 775 /opt/bookstack/storage /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads
|
|
||||||
chmod -R 640 /opt/bookstack/.env
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Configured BookStack"
|
|
||||||
|
|
||||||
msg_info "Starting Apache2"
|
|
||||||
systemctl start apache2
|
|
||||||
msg_ok "Started Apache2"
|
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -rf /opt/bookstack-backup
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
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}${CL}"
|
|
||||||
@@ -1,51 +1,65 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2024 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster)
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
# License: MIT
|
||||||
# Source: https://www.bunkerweb.io/
|
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
____ __ _ __ __
|
||||||
|
/ __ )__ ______ / /_____ ____| | / /__ / /_
|
||||||
|
/ __ / / / / __ \/ //_/ _ \/ ___/ | /| / / _ \/ __ \
|
||||||
|
/ /_/ / /_/ / / / / ,< / __/ / | |/ |/ / __/ /_/ /
|
||||||
|
/_____/\__,_/_/ /_/_/|_|\___/_/ |__/|__/\___/_.___/
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
APP="BunkerWeb"
|
APP="BunkerWeb"
|
||||||
var_tags="${var_tags:-webserver}"
|
var_disk="4"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="2"
|
||||||
var_ram="${var_ram:-8192}"
|
var_ram="1024"
|
||||||
var_disk="${var_disk:-4}"
|
var_os="debian"
|
||||||
var_os="${var_os:-debian}"
|
var_version="12"
|
||||||
var_version="${var_version:-12}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
variables
|
||||||
color
|
color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
if [[ ! -d /etc/bunkerweb ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
check_container_resources
|
msg_info "Updating $APP"
|
||||||
if [[ ! -d /etc/bunkerweb ]]; then
|
apt-get update &>/dev/null
|
||||||
msg_error "No ${APP} Installation Found!"
|
apt-get -y upgrade &>/dev/null
|
||||||
exit
|
msg_ok "Updated $APP"
|
||||||
fi
|
exit
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/bunkerity/bunkerweb/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
|
||||||
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
|
||||||
cat <<EOF >/etc/apt/preferences.d/bunkerweb
|
|
||||||
Package: bunkerweb
|
|
||||||
Pin: version ${RELEASE}
|
|
||||||
Pin-Priority: 1001
|
|
||||||
EOF
|
|
||||||
apt-get update
|
|
||||||
apt-mark unhold bunkerweb nginx
|
|
||||||
apt-get install -y --allow-downgrades bunkerweb=${RELEASE}
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
|
||||||
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
|
||||||
fi
|
|
||||||
exit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
@@ -53,6 +67,5 @@ build_container
|
|||||||
description
|
description
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${APP} setup should be reachable by going to the following URL.
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
${BL}http://${IP}/setup${CL} \n"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}/setup${CL}"
|
|
||||||
|
|||||||
@@ -1,73 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: Slaviša Arežina (tremor021)
|
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/jordan-dalby/ByteStash
|
|
||||||
|
|
||||||
APP="ByteStash"
|
|
||||||
var_tags="${var_tags:-code}"
|
|
||||||
var_disk="${var_disk:-4}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-1024}"
|
|
||||||
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 /opt/bytestash ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/jordan-dalby/ByteStash/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
if [[ "${RELEASE}" != "$(cat ~/.bytestash 2>/dev/null)" ]] || [[ ! -f ~/.bytestash ]]; then
|
|
||||||
|
|
||||||
read -rp "${TAB3}Did you make a backup via application WebUI? (y/n): " backuped
|
|
||||||
if [[ "$backuped" =~ ^[Yy]$ ]]; then
|
|
||||||
msg_info "Stopping Services"
|
|
||||||
systemctl stop bytestash-backend
|
|
||||||
systemctl stop bytestash-frontend
|
|
||||||
msg_ok "Services Stopped"
|
|
||||||
|
|
||||||
rm -rf /opt/bytestash
|
|
||||||
fetch_and_deploy_gh_release "bytestash" "jordan-dalby/ByteStash"
|
|
||||||
|
|
||||||
msg_info "Configuring ByteStash"
|
|
||||||
cd /opt/bytestash/server
|
|
||||||
$STD npm install
|
|
||||||
cd /opt/bytestash/client
|
|
||||||
$STD npm install
|
|
||||||
msg_ok "Updated ${APP}"
|
|
||||||
|
|
||||||
msg_info "Starting Services"
|
|
||||||
systemctl start bytestash-backend
|
|
||||||
systemctl start bytestash-frontend
|
|
||||||
msg_ok "Started Services"
|
|
||||||
else
|
|
||||||
msg_error "PLEASE MAKE A BACKUP FIRST!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at ${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}"
|
|
||||||
81
ct/caddy.sh
81
ct/caddy.sh
@@ -1,37 +1,65 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2024 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster)
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
# License: MIT
|
||||||
# Source: https://caddyserver.com/
|
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
______ __ __
|
||||||
|
/ ____/___ _____/ /___/ /_ __
|
||||||
|
/ / / __ `/ __ / __ / / / /
|
||||||
|
/ /___/ /_/ / /_/ / /_/ / /_/ /
|
||||||
|
\____/\__,_/\__,_/\__,_/\__, /
|
||||||
|
/____/
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
APP="Caddy"
|
APP="Caddy"
|
||||||
var_tags="${var_tags:-webserver}"
|
var_disk="2"
|
||||||
var_cpu="${var_cpu:-1}"
|
var_cpu="1"
|
||||||
var_ram="${var_ram:-512}"
|
var_ram="512"
|
||||||
var_disk="${var_disk:-4}"
|
var_os="debian"
|
||||||
var_os="${var_os:-debian}"
|
var_version="12"
|
||||||
var_version="${var_version:-12}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
variables
|
||||||
color
|
color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
if [[ ! -d /etc/caddy ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
check_container_resources
|
msg_info "Updating $APP LXC"
|
||||||
if [[ ! -d /etc/caddy ]]; then
|
apt-get update &>/dev/null
|
||||||
msg_error "No ${APP} Installation Found!"
|
apt-get -y upgrade &>/dev/null
|
||||||
exit
|
msg_ok "Updated $APP LXC"
|
||||||
fi
|
exit
|
||||||
msg_info "Updating $APP LXC"
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get -y upgrade
|
|
||||||
msg_ok "Updated $APP LXC"
|
|
||||||
exit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
@@ -39,6 +67,3 @@ build_container
|
|||||||
description
|
description
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
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}:80${CL}"
|
|
||||||
|
|||||||
@@ -1,106 +1,137 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2024 tteck
|
||||||
# Author: tteck (tteckster) | Co-Author: remz1337
|
# Author: tteck (tteckster)
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
# Co-Author: remz1337
|
||||||
# Source: https://github.com/janeczku/calibre-web
|
# License: MIT
|
||||||
|
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
______ ___ __ _ __ __
|
||||||
|
/ ____/___ _/ (_) /_ ________ | | / /__ / /_
|
||||||
|
/ / / __ `/ / / __ \/ ___/ _ \___| | /| / / _ \/ __ \
|
||||||
|
/ /___/ /_/ / / / /_/ / / / __/___/ |/ |/ / __/ /_/ /
|
||||||
|
\____/\__,_/_/_/_.___/_/ \___/ |__/|__/\___/_.___/
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
APP="Calibre-Web"
|
APP="Calibre-Web"
|
||||||
var_tags="${var_tags:-eBook}"
|
var_disk="4"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="2"
|
||||||
var_ram="${var_ram:-2048}"
|
var_ram="2048"
|
||||||
var_disk="${var_disk:-4}"
|
var_os="debian"
|
||||||
var_os="${var_os:-debian}"
|
var_version="12"
|
||||||
var_version="${var_version:-12}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
variables
|
||||||
color
|
color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
|
||||||
check_container_storage
|
|
||||||
check_container_resources
|
|
||||||
if [[ ! -f /etc/systemd/system/cps.service ]]; then
|
if [[ ! -f /etc/systemd/system/cps.service ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
msg_info "Stopping ${APP}"
|
header_info
|
||||||
|
msg_info "Updating $APP LXC"
|
||||||
systemctl stop cps
|
systemctl stop cps
|
||||||
msg_ok "Stopped ${APP}"
|
|
||||||
|
|
||||||
msg_info "Updating ${APP}"
|
|
||||||
cd /opt/kepubify
|
cd /opt/kepubify
|
||||||
rm -rf kepubify-linux-64bit
|
rm kepubify-linux-arm64
|
||||||
curl -fsSLO https://github.com/pgaskin/kepubify/releases/latest/download/kepubify-linux-64bit
|
curl -fsSLO https://github.com/pgaskin/kepubify/releases/latest/download/kepubify-linux-arm64 &>/dev/null
|
||||||
chmod +x kepubify-linux-64bit
|
chmod +x kepubify-linux-arm64
|
||||||
menu_array=("1" "Enables gdrive as storage backend for your ebooks" OFF
|
rm /opt/calibre-web/metadata.db
|
||||||
"2" "Enables sending emails via a googlemail account without enabling insecure apps" OFF
|
wget https://github.com/janeczku/calibre-web/raw/master/library/metadata.db -P /opt/calibre-web
|
||||||
"3" "Enables displaying of additional author infos on the authors page" OFF
|
menu_array=("1" "Enables gdrive as storage backend for your ebooks" OFF \
|
||||||
"4" "Enables login via LDAP server" OFF
|
"2" "Enables sending emails via a googlemail account without enabling insecure apps" OFF \
|
||||||
"5" "Enables login via google or github oauth" OFF
|
"3" "Enables displaying of additional author infos on the authors page" OFF \
|
||||||
"6" "Enables extracting of metadata from epub, fb2, pdf files, and also extraction of covers from cbr, cbz, cbt files" OFF
|
"4" "Enables login via LDAP server" OFF \
|
||||||
"7" "Enables extracting of metadata from cbr, cbz, cbt files" OFF
|
"5" "Enables login via google or github oauth" OFF \
|
||||||
"8" "Enables syncing with your kobo reader" OFF)
|
"6" "Enables extracting of metadata from epub, fb2, pdf files, and also extraction of covers from cbr, cbz, cbt files" OFF \
|
||||||
|
"7" "Enables extracting of metadata from cbr, cbz, cbt files" OFF \
|
||||||
|
"8" "Enables syncing with your kobo reader" OFF )
|
||||||
if [ -f "/opt/calibre-web/options.txt" ]; then
|
if [ -f "/opt/calibre-web/options.txt" ]; then
|
||||||
cps_options="$(cat /opt/calibre-web/options.txt)"
|
cps_options="$(cat /opt/calibre-web/options.txt)"
|
||||||
IFS=',' read -ra ADDR <<<"$cps_options"
|
IFS=',' read -ra ADDR <<< "$cps_options"
|
||||||
for i in "${ADDR[@]}"; do
|
for i in "${ADDR[@]}"; do
|
||||||
if [ $i == "gdrive" ]; then
|
if [ $i == "gdrive" ]; then
|
||||||
line=0
|
line=0
|
||||||
elif [ $i == "gmail" ]; then
|
elif [ $i == "gmail" ]; then
|
||||||
line=1
|
line=1
|
||||||
elif [ $i == "goodreads" ]; then
|
elif [ $i == "goodreads" ]; then
|
||||||
line=2
|
line=2
|
||||||
elif [ $i == "ldap" ]; then
|
elif [ $i == "ldap" ]; then
|
||||||
line=3
|
line=3
|
||||||
elif [ $i == "oauth" ]; then
|
elif [ $i == "oauth" ]; then
|
||||||
line=4
|
line=4
|
||||||
elif [ $i == "metadata" ]; then
|
elif [ $i == "metadata" ]; then
|
||||||
line=5
|
line=5
|
||||||
elif [ $i == "comics" ]; then
|
elif [ $i == "comics" ]; then
|
||||||
line=6
|
line=6
|
||||||
elif [ $i == "kobo" ]; then
|
elif [ $i == "kobo" ]; then
|
||||||
line=7
|
line=7
|
||||||
fi
|
fi
|
||||||
array_index=$((3 * line + 2))
|
array_index=$(( 3*line + 2 ))
|
||||||
menu_array[$array_index]=ON
|
menu_array[$array_index]=ON
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID >/dev/null; then kill $SPINNER_PID >/dev/null; fi
|
if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi
|
||||||
CHOICES=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "CALIBRE-WEB OPTIONS" --separate-output --checklist "Choose Additional Options" 15 125 8 "${menu_array[@]}" 3>&1 1>&2 2>&3)
|
CHOICES=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "CALIBRE-WEB OPTIONS" --separate-output --checklist "Choose Additional Options" 15 125 8 "${menu_array[@]}" 3>&1 1>&2 2>&3)
|
||||||
spinner &
|
spinner &
|
||||||
SPINNER_PID=$!
|
SPINNER_PID=$!
|
||||||
options=()
|
|
||||||
if [ ! -z "$CHOICES" ]; then
|
if [ ! -z "$CHOICES" ]; then
|
||||||
|
declare -a options
|
||||||
for CHOICE in $CHOICES; do
|
for CHOICE in $CHOICES; do
|
||||||
case "$CHOICE" in
|
case "$CHOICE" in
|
||||||
"1")
|
"1")
|
||||||
options+=(gdrive)
|
options+=( gdrive )
|
||||||
;;
|
;;
|
||||||
"2")
|
"2")
|
||||||
options+=(gmail)
|
options+=( gmail )
|
||||||
;;
|
;;
|
||||||
"3")
|
"3")
|
||||||
options+=(goodreads)
|
options+=( goodreads )
|
||||||
;;
|
;;
|
||||||
"4")
|
"4")
|
||||||
options+=(ldap)
|
options+=( ldap )
|
||||||
apt-get install -qqy libldap2-dev libsasl2-dev
|
apt-get install -qqy libldap2-dev libsasl2-dev
|
||||||
;;
|
;;
|
||||||
"5")
|
"5")
|
||||||
options+=(oauth)
|
options+=( oauth )
|
||||||
;;
|
;;
|
||||||
"6")
|
"6")
|
||||||
options+=(metadata)
|
options+=( metadata )
|
||||||
;;
|
;;
|
||||||
"7")
|
"7")
|
||||||
options+=(comics)
|
options+=( comics )
|
||||||
;;
|
;;
|
||||||
"8")
|
"8")
|
||||||
options+=(kobo)
|
options+=( kobo )
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Unsupported item $CHOICE!" >&2
|
echo "Unsupported item $CHOICE!" >&2
|
||||||
@@ -109,22 +140,16 @@ function update_script() {
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
if [ ${#options[@]} -gt 0 ]; then
|
if [ ! -z "$options" ] && [ ${#options[@]} -gt 0 ]; then
|
||||||
cps_options=$(
|
cps_options=$(IFS=, ; echo "${options[*]}")
|
||||||
IFS=,
|
echo $cps_options > /opt/calibre-web/options.txt
|
||||||
echo "${options[*]}"
|
pip install --upgrade calibreweb[$cps_options]
|
||||||
)
|
|
||||||
echo $cps_options >/opt/calibre-web/options.txt
|
|
||||||
$STD pip install --upgrade calibreweb[$cps_options]
|
|
||||||
else
|
else
|
||||||
rm -rf /opt/calibre-web/options.txt
|
rm /opt/calibre-web/options.txt 2> /dev/null
|
||||||
$STD pip install --upgrade calibreweb
|
pip install --upgrade calibreweb
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
|
||||||
systemctl start cps
|
systemctl start cps
|
||||||
msg_ok "Started ${APP}"
|
msg_ok "Updated $APP LXC"
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -132,7 +157,10 @@ start
|
|||||||
build_container
|
build_container
|
||||||
description
|
description
|
||||||
|
|
||||||
|
msg_info "Setting Container to Normal Resources"
|
||||||
|
pct set $CTID -memory 512
|
||||||
|
pct set $CTID -cores 1
|
||||||
|
msg_ok "Set Container to Normal Resources"
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${APP} should be reachable by going to the following URL.
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
${BL}http://${IP}:8083${CL} \n"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8083${CL}"
|
|
||||||
|
|||||||
83
ct/casaos.sh
83
ct/casaos.sh
@@ -1,37 +1,65 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2024 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster)
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
# License: MIT
|
||||||
# Source: https://casaos.io/
|
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
______ ____ _____
|
||||||
|
/ ____/___ __________ _/ __ \/ ___/
|
||||||
|
/ / / __ `/ ___/ __ `/ / / /\__ \
|
||||||
|
/ /___/ /_/ (__ ) /_/ / /_/ /___/ /
|
||||||
|
\____/\__,_/____/\__,_/\____//____/
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
APP="CasaOS"
|
APP="CasaOS"
|
||||||
var_tags="${var_tags:-cloud}"
|
var_disk="8"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="2"
|
||||||
var_ram="${var_ram:-2048}"
|
var_ram="2048"
|
||||||
var_disk="${var_disk:-8}"
|
var_os="debian"
|
||||||
var_os="${var_os:-debian}"
|
var_version="12"
|
||||||
var_version="${var_version:-12}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
variables
|
||||||
color
|
color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
check_container_resources
|
msg_info "Updating ${APP} LXC"
|
||||||
if [[ ! -d /var ]]; then
|
apt-get update &>/dev/null
|
||||||
msg_error "No ${APP} Installation Found!"
|
apt-get -y upgrade &>/dev/null
|
||||||
exit
|
msg_ok "Updated ${APP} LXC"
|
||||||
fi
|
exit
|
||||||
msg_info "Updating ${APP} LXC"
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get -y upgrade
|
|
||||||
msg_ok "Updated ${APP} LXC"
|
|
||||||
exit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
@@ -39,6 +67,5 @@ build_container
|
|||||||
description
|
description
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${APP} Setup should be reachable by going to the following URL.
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
${BL}http://${IP} ${CL} \n"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
|
|
||||||
|
|||||||
@@ -1,71 +1,70 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2024 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster)
|
||||||
# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE
|
# License: MIT
|
||||||
# Source: https://changedetection.io/
|
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
________ ____ __ __ _
|
||||||
|
/ ____/ /_ ____ _____ ____ ____ / __ \___ / /____ _____/ /_(_)___ ____
|
||||||
|
/ / / __ \/ __ `/ __ \/ __ `/ _ \ / / / / _ \/ __/ _ \/ ___/ __/ / __ \/ __ \
|
||||||
|
/ /___/ / / / /_/ / / / / /_/ / __/ / /_/ / __/ /_/ __/ /__/ /_/ / /_/ / / / /
|
||||||
|
\____/_/ /_/\__,_/_/ /_/\__, /\___/ /_____/\___/\__/\___/\___/\__/_/\____/_/ /_/
|
||||||
|
/____/
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
APP="Change Detection"
|
APP="Change Detection"
|
||||||
var_tags="${var_tags:-monitoring;crawler}"
|
var_disk="8"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="2"
|
||||||
var_ram="${var_ram:-2048}"
|
var_ram="1024"
|
||||||
var_disk="${var_disk:-10}"
|
var_os="debian"
|
||||||
var_os="${var_os:-debian}"
|
var_version="12"
|
||||||
var_version="${var_version:-12}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
variables
|
||||||
color
|
color
|
||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
if [[ ! -f /etc/systemd/system/changedetection.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
check_container_resources
|
msg_info "Updating ${APP} LXC"
|
||||||
|
if ! dpkg -s libjpeg-dev >/dev/null 2>&1; then
|
||||||
if [[ ! -f /etc/systemd/system/changedetection.service ]]; then
|
apt-get update
|
||||||
msg_error "No ${APP} Installation Found!"
|
apt-get install -y libjpeg-dev
|
||||||
exit
|
fi
|
||||||
fi
|
pip3 install changedetection.io --upgrade &>/dev/null
|
||||||
|
pip3 install playwright --upgrade &>/dev/null
|
||||||
if ! dpkg -s libjpeg-dev >/dev/null 2>&1; then
|
systemctl restart changedetection
|
||||||
msg_info "Installing Dependencies"
|
msg_ok "Updated Successfully"
|
||||||
$STD apt-get update
|
exit
|
||||||
$STD apt-get install -y libjpeg-dev
|
|
||||||
msg_ok "Updated Dependencies"
|
|
||||||
fi
|
|
||||||
|
|
||||||
msg_info "Updating ${APP}"
|
|
||||||
$STD pip3 install changedetection.io --upgrade
|
|
||||||
msg_ok "Updated ${APP}"
|
|
||||||
|
|
||||||
msg_info "Updating Playwright"
|
|
||||||
$STD pip3 install playwright --upgrade
|
|
||||||
msg_ok "Updated Playwright"
|
|
||||||
|
|
||||||
if [[ -f /etc/systemd/system/browserless.service ]]; then
|
|
||||||
msg_info "Updating Browserless (Patience)"
|
|
||||||
$STD git -C /opt/browserless/ fetch --all
|
|
||||||
$STD git -C /opt/browserless/ reset --hard origin/main
|
|
||||||
$STD npm update --prefix /opt/browserless
|
|
||||||
$STD /opt/browserless/node_modules/playwright-core/cli.js install --with-deps
|
|
||||||
# Update Chrome separately, as it has to be done with the force option. Otherwise the installation of other browsers will not be done if Chrome is already installed.
|
|
||||||
$STD /opt/browserless/node_modules/playwright-core/cli.js install --force chrome
|
|
||||||
$STD /opt/browserless/node_modules/playwright-core/cli.js install --force msedge
|
|
||||||
$STD /opt/browserless/node_modules/playwright-core/cli.js install chromium firefox webkit
|
|
||||||
$STD npm run build --prefix /opt/browserless
|
|
||||||
$STD npm run build:function --prefix /opt/browserless
|
|
||||||
$STD npm prune production --prefix /opt/browserless
|
|
||||||
systemctl restart browserless
|
|
||||||
msg_ok "Updated Browserless"
|
|
||||||
else
|
|
||||||
msg_error "No Browserless Installation Found!"
|
|
||||||
fi
|
|
||||||
|
|
||||||
systemctl restart changedetection
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
exit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
@@ -73,6 +72,5 @@ build_container
|
|||||||
description
|
description
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${APP} should be reachable by going to the following URL.
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
${BL}http://${IP}:5000${CL} \n"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5000${CL}"
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user