forked from forkanization/Proxmox-arm64
Compare commits
3 Commits
test
..
fix-updates
| Author | SHA1 | Date | |
|---|---|---|---|
| 1611df15b0 | |||
| a74611e979 | |||
| f0478feb12 |
@@ -1 +0,0 @@
|
|||||||
script*.py
|
|
||||||
+14
-136
@@ -3,149 +3,27 @@
|
|||||||
<img src="https://raw.githubusercontent.com/tteck/Proxmox/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>
|
||||||
<h1 align="center">Changelog</h1>
|
<h1 align="center">Change Log</h1>
|
||||||
|
|
||||||
<h3 align="center">All notable changes to this project will be documented in this file.</h3>
|
<h3 align="center">All notable changes to this project will be documented in this file.</h3>
|
||||||
|
|
||||||
> [!CAUTION]
|
- All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment.
|
||||||
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
|
|
||||||
|
|
||||||
> [!NOTE]
|
|
||||||
All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment.
|
|
||||||
|
|
||||||
## 2024-10-27
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
|
|
||||||
- **Open WebUI LXC** [(Commit)](https://github.com/tteck/Proxmox/commit/8a21f6e7f025a911865395d4c0fa9a001bd0d512)
|
|
||||||
- Refactor Script to add an option to install Ollama.
|
|
||||||
|
|
||||||
## 2024-10-26
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
|
|
||||||
- **AdventureLog LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/adventurelog-install.sh)
|
|
||||||
- NEW Script
|
|
||||||
|
|
||||||
## 2024-10-25
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
|
|
||||||
- **Zoraxy LXC** [(Commit)](https://github.com/tteck/Proxmox/commit/468a5d367ded4cf453a1507452e112ac3e234e2a)
|
|
||||||
- Switch built from source to a pre-compiled binary version.
|
|
||||||
- Breaking Change
|
|
||||||
|
|
||||||
## 2024-10-23
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
|
|
||||||
- **Wallos LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/wallos-install.sh)
|
|
||||||
- NEW Script
|
|
||||||
- **Open WebUI LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/openwebui-install.sh)
|
|
||||||
- NEW Script
|
|
||||||
|
|
||||||
## 2024-10-19
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
|
|
||||||
- **Cockpit LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/cockpit-install.sh)
|
|
||||||
- NEW Script
|
|
||||||
- **Neo4j LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/neo4j-install.sh)
|
|
||||||
- NEW Script
|
|
||||||
|
|
||||||
## 2024-10-18
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
|
|
||||||
- **ArchiveBox LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/archivebox-install.sh)
|
|
||||||
- NEW Script
|
|
||||||
|
|
||||||
## 2024-10-15
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
|
|
||||||
- **evcc LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/evcc-install.sh)
|
|
||||||
- NEW Script
|
|
||||||
|
|
||||||
## 2024-10-10
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
|
|
||||||
- **MySQL LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/mysql-install.sh)
|
|
||||||
- NEW Script
|
|
||||||
- **Tianji LXC** [(Commit)](https://github.com/tteck/Proxmox/commit/4c83a790ac9b040da1f11ad2cbe13d3fc5f480e9)
|
|
||||||
- Breaking Change
|
|
||||||
- Switch from `pm2` process management to `systemd`
|
|
||||||
|
|
||||||
## 2024-10-03
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
|
|
||||||
- **Home Assistant Core LXC** [(Commit)](https://github.com/tteck/Proxmox/commit/f2937febe69b2bad8b3a14eb84aa562a8f14cc6a) [(Commit)](https://github.com/tteck/Proxmox/commit/f2966ced7f457fd506f865f7f5b70ea12c4b0049)
|
|
||||||
- Refactor Code
|
|
||||||
- Breaking Change
|
|
||||||
- Home Assistant has transitioned to using `uv` for managing the virtual environment and installing additional modules.
|
|
||||||
|
|
||||||
## 2024-09-16
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
|
|
||||||
- **HomeBox LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/homebox-install.sh)
|
|
||||||
- NEW Script
|
|
||||||
- **Zipline LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/zipline-install.sh)
|
|
||||||
- NEW Script
|
|
||||||
|
|
||||||
## 2024-09-13
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
|
|
||||||
- **Tianji LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/tianji-install.sh)
|
|
||||||
- NEW Script
|
|
||||||
|
|
||||||
## 2024-08-21
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
|
|
||||||
- **WireGuard LXC** [(Commit)](https://github.com/tteck/Proxmox/commit/723365a79df7cc0fd29b1af8f7ef200a7e0921b1)
|
|
||||||
- Refactor Code
|
|
||||||
- Breaking Change
|
|
||||||
|
|
||||||
## 2024-08-19
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
|
|
||||||
- **CommaFeed LXC** [(Commit)](https://github.com/tteck/Proxmox/commit/0a33d1739ec3a49011411929bd46a260e92e99f9)
|
|
||||||
- Refactor Code
|
|
||||||
- Breaking Change
|
|
||||||
|
|
||||||
## 2024-08-06
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
|
|
||||||
- **lldap LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/lldap-install.sh)
|
|
||||||
- NEW Script
|
|
||||||
|
|
||||||
## 2024-07-26
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
|
|
||||||
- **Gitea LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/gitea-install.sh)
|
|
||||||
- NEW Script
|
|
||||||
|
|
||||||
## 2024-06-30
|
## 2024-06-30
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- **All Scripts** [(Commit)](https://github.com/tteck/Proxmox/commit/39ea1d4a20b83c07d084ebafdc811eec3548f289)
|
- **All Scripts**
|
||||||
- Requires Proxmox Virtual Environment version 8.1 or later.
|
- Requires Proxmox Virtual Environment version 8.1 or later.
|
||||||
|
|
||||||
## 2024-06-27
|
## 2024-06-27
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- **Kubo LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/kubo-install.sh)
|
- **Kubo LXC**
|
||||||
- NEW Script
|
- NEW Script
|
||||||
- **RabbitMQ LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/rabbitmq-install.sh)
|
- **RabbitMQ LXC**
|
||||||
- NEW Script
|
- NEW Script
|
||||||
- **Scrutiny LXC**
|
- **Scrutiny LXC**
|
||||||
- Removed from website, broken.
|
- Removed from website, broken.
|
||||||
@@ -161,27 +39,27 @@ All LXC instances created using this repository come pre-installed with Midnight
|
|||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- **MySpeed LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/myspeed-install.sh)
|
- **MySpeed LXC**
|
||||||
- NEW Script
|
- NEW Script
|
||||||
|
|
||||||
## 2024-06-13
|
## 2024-06-13
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- **PeaNUT LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/peanut-install.sh)
|
- **PeaNUT LXC**
|
||||||
- NEW Script
|
- NEW Script
|
||||||
- **Website**
|
- **Website**
|
||||||
- If the Changelog has changed recently, the link on the website will pulse.
|
- If the Changelog has changed recently, the link on the website will pulse.
|
||||||
- **Spoolman LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/spoolman-install.sh)
|
- **Spoolman LXC**
|
||||||
- NEW Script
|
- NEW Script
|
||||||
|
|
||||||
## 2024-06-12
|
## 2024-06-12
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- **MeTube LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/metube-install.sh)
|
- **MeTube LXC**
|
||||||
- NEW Script
|
- NEW Script
|
||||||
- **Matterbridge LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/matterbridge-install.sh)
|
- **Matterbridge LXC**
|
||||||
- NEW Script
|
- NEW Script
|
||||||
- **Website**
|
- **Website**
|
||||||
- Reopen the gh-pages site (https://tteck.github.io/Proxmox/)
|
- Reopen the gh-pages site (https://tteck.github.io/Proxmox/)
|
||||||
@@ -190,14 +68,14 @@ All LXC instances created using this repository come pre-installed with Midnight
|
|||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- **Zabbix LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/zabbix-install.sh)
|
- **Zabbix LXC**
|
||||||
- NEW Script
|
- NEW Script
|
||||||
|
|
||||||
## 2024-06-06
|
## 2024-06-06
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- **Petio LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/petio-install.sh)
|
- **Petio LXC**
|
||||||
- NEW Script
|
- NEW Script
|
||||||
- **Website**
|
- **Website**
|
||||||
- Important notices will now be displayed on the landing page.
|
- Important notices will now be displayed on the landing page.
|
||||||
@@ -206,14 +84,14 @@ All LXC instances created using this repository come pre-installed with Midnight
|
|||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- **FlareSolverr LXC** [(View Source)](https://github.com/tteck/Proxmox/blob/main/install/flaresolverr-install.sh)
|
- **FlareSolverr LXC**
|
||||||
- NEW Script
|
- NEW Script
|
||||||
|
|
||||||
## 2024-05-31
|
## 2024-05-31
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- **Advanced Settings** [(Commit)](https://github.com/tteck/Proxmox/commit/fc9dff220b4ea426d3a75178ad8accacae4683ca)
|
- **Advanced Settings**
|
||||||
- Passwords are now masked
|
- Passwords are now masked
|
||||||
|
|
||||||
## 2024-05-30
|
## 2024-05-30
|
||||||
|
|||||||
@@ -31,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 | ☑️ | |
|
||||||
|
|||||||
@@ -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,110 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2024 tteck
|
|
||||||
# Author: tteck
|
|
||||||
# Co-Author: MickLesk (Canbiz)
|
|
||||||
# License: MIT
|
|
||||||
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
|
||||||
|
|
||||||
function header_info {
|
|
||||||
clear
|
|
||||||
cat <<"EOF"
|
|
||||||
___ __ __ __
|
|
||||||
/ | ____/ / _____ ____ / /___ __________ / / ____ ____ _
|
|
||||||
/ /| |/ __ / | / / _ \/ __ \/ __/ / / / ___/ _ \/ / / __ \/ __ `/
|
|
||||||
/ ___ / /_/ /| |/ / __/ / / / /_/ /_/ / / / __/ /___/ /_/ / /_/ /
|
|
||||||
/_/ |_\__,_/ |___/\___/_/ /_/\__/\__,_/_/ \___/_____/\____/\__, /
|
|
||||||
/____/
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
header_info
|
|
||||||
echo -e "Loading..."
|
|
||||||
APP="AdventureLog"
|
|
||||||
var_disk="7"
|
|
||||||
var_cpu="2"
|
|
||||||
var_ram="2048"
|
|
||||||
var_os="debian"
|
|
||||||
var_version="12"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
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() {
|
|
||||||
header_info
|
|
||||||
if [[ ! -d /opt/adventurelog ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
|
||||||
if (( $(df /boot | awk 'NR==2{gsub("%","",$5); print $5}') > 80 )); then
|
|
||||||
read -r -p "Warning: Storage is dangerously low, continue anyway? <y/N> " prompt
|
|
||||||
[[ ${prompt,,} =~ ^(y|yes)$ ]] || exit
|
|
||||||
fi
|
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/seanmorley15/AdventureLog/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 Services"
|
|
||||||
systemctl stop adventurelog-backend
|
|
||||||
systemctl stop adventurelog-frontend
|
|
||||||
msg_ok "Services Stopped"
|
|
||||||
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
|
||||||
cp /opt/adventurelog/backend/server/.env /opt/server.env
|
|
||||||
cp /opt/adventurelog/frontend/env /opt/frontend.env
|
|
||||||
wget -q "https://github.com/seanmorley15/AdventureLog/archive/refs/tags/v${RELEASE}.zip"
|
|
||||||
unzip -q v${RELEASE}.zip
|
|
||||||
mv AdventureLog-${RELEASE} /opt/adventurelog
|
|
||||||
mv /opt/server.env /opt/adventurelog/backend/server/.env
|
|
||||||
cd /opt/adventurelog/backend/server
|
|
||||||
pip install --upgrade pip &>/dev/null
|
|
||||||
pip install -r requirements.txt &>/dev/null
|
|
||||||
python3 manage.py collectstatic --noinput &>/dev/null
|
|
||||||
python3 manage.py migrate &>/dev/null
|
|
||||||
|
|
||||||
mv /opt/frontend.env /opt/adventurelog/frontend/.env
|
|
||||||
cd /opt/adventurelog/frontend
|
|
||||||
pnpm install &>/dev/null
|
|
||||||
pnpm run build &>/dev/null
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated ${APP}"
|
|
||||||
|
|
||||||
msg_info "Starting Services"
|
|
||||||
systemctl start adventurelog-backend
|
|
||||||
systemctl start adventurelog-frontend
|
|
||||||
msg_ok "Started Services"
|
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -rf v${RELEASE}.zip
|
|
||||||
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 "${APP} Setup should be reachable by going to the following URL.
|
|
||||||
${BL}http://${IP}:3000${CL} \n"
|
|
||||||
@@ -71,7 +71,7 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
case $CHOICE in
|
case $CHOICE in
|
||||||
1)
|
1)
|
||||||
apk update && apk upgrade && rc-service vaultwarden restart -q
|
apk update && apk upgrade
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
2)
|
2)
|
||||||
|
|||||||
@@ -1,86 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2024 tteck
|
|
||||||
# Author: tteck
|
|
||||||
# License: MIT
|
|
||||||
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
|
||||||
|
|
||||||
function header_info {
|
|
||||||
clear
|
|
||||||
cat <<"EOF"
|
|
||||||
___ __ _ ____
|
|
||||||
/ | __________/ /_ (_) _____ / __ )____ _ __
|
|
||||||
/ /| | / ___/ ___/ __ \/ / | / / _ \/ __ / __ \| |/_/
|
|
||||||
/ ___ |/ / / /__/ / / / /| |/ / __/ /_/ / /_/ /> <
|
|
||||||
/_/ |_/_/ \___/_/ /_/_/ |___/\___/_____/\____/_/|_|
|
|
||||||
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
header_info
|
|
||||||
echo -e "Loading..."
|
|
||||||
APP="ArchiveBox"
|
|
||||||
var_disk="8"
|
|
||||||
var_cpu="2"
|
|
||||||
var_ram="1024"
|
|
||||||
var_os="debian"
|
|
||||||
var_version="12"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
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() {
|
|
||||||
header_info
|
|
||||||
if [[ ! -d /opt/archivebox ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
|
||||||
if (( $(df /boot | awk 'NR==2{gsub("%","",$5); print $5}') > 80 )); then
|
|
||||||
read -r -p "Warning: Storage is dangerously low, continue anyway? <y/N> " prompt
|
|
||||||
[[ ${prompt,,} =~ ^(y|yes)$ ]] || 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 "${APP} should be reachable by going to the following URL.
|
|
||||||
${BL}http://${IP}:8000/admin/login${CL} \n"
|
|
||||||
+5
-20
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -s 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-2024 tteck
|
# Copyright (c) 2021-2024 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster)
|
||||||
# License: MIT
|
# License: MIT
|
||||||
@@ -55,25 +55,10 @@ function default_settings() {
|
|||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
if [[ ! -d /etc/bunkerweb ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -d /etc/bunkerweb ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
|
msg_info "Updating $APP"
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/bunkerity/bunkerweb/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
apt-get update &>/dev/null
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
apt-get -y upgrade &>/dev/null
|
||||||
|
msg_ok "Updated $APP"
|
||||||
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-get install -y nginx=1.26.2*
|
|
||||||
apt-get install -y 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
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-1
@@ -65,6 +65,8 @@ function update_script() {
|
|||||||
rm kepubify-linux-arm64
|
rm kepubify-linux-arm64
|
||||||
curl -fsSLO https://github.com/pgaskin/kepubify/releases/latest/download/kepubify-linux-arm64 &>/dev/null
|
curl -fsSLO https://github.com/pgaskin/kepubify/releases/latest/download/kepubify-linux-arm64 &>/dev/null
|
||||||
chmod +x kepubify-linux-arm64
|
chmod +x kepubify-linux-arm64
|
||||||
|
rm /opt/calibre-web/metadata.db
|
||||||
|
wget https://github.com/janeczku/calibre-web/raw/master/library/metadata.db -P /opt/calibre-web
|
||||||
menu_array=("1" "Enables gdrive as storage backend for your ebooks" OFF \
|
menu_array=("1" "Enables gdrive as storage backend for your ebooks" OFF \
|
||||||
"2" "Enables sending emails via a googlemail account without enabling insecure apps" OFF \
|
"2" "Enables sending emails via a googlemail account without enabling insecure apps" OFF \
|
||||||
"3" "Enables displaying of additional author infos on the authors page" OFF \
|
"3" "Enables displaying of additional author infos on the authors page" OFF \
|
||||||
@@ -102,8 +104,8 @@ function update_script() {
|
|||||||
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")
|
||||||
|
|||||||
@@ -62,17 +62,6 @@ if ! dpkg -s libjpeg-dev >/dev/null 2>&1; then
|
|||||||
fi
|
fi
|
||||||
pip3 install changedetection.io --upgrade &>/dev/null
|
pip3 install changedetection.io --upgrade &>/dev/null
|
||||||
pip3 install playwright --upgrade &>/dev/null
|
pip3 install playwright --upgrade &>/dev/null
|
||||||
if [[ -f /etc/systemd/system/browserless.service ]]; then
|
|
||||||
git -C /opt/browserless/ fetch --all &>/dev/null
|
|
||||||
git -C /opt/browserless/ reset --hard origin/main &>/dev/null
|
|
||||||
npm update --prefix /opt/browserless &>/dev/null
|
|
||||||
npm run build --prefix /opt/browserless &>/dev/null
|
|
||||||
npm run build:function --prefix /opt/browserless &>/dev/null
|
|
||||||
npm prune production --prefix /opt/browserless &>/dev/null
|
|
||||||
systemctl restart browserless
|
|
||||||
else
|
|
||||||
msg_error "No Browserless Installation Found!"
|
|
||||||
fi
|
|
||||||
systemctl restart changedetection
|
systemctl restart changedetection
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
exit
|
exit
|
||||||
|
|||||||
-125
@@ -1,125 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2024 tteck
|
|
||||||
# Author: tteck
|
|
||||||
# Co-Author: havardthom
|
|
||||||
# License: MIT
|
|
||||||
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
|
||||||
|
|
||||||
function header_info {
|
|
||||||
clear
|
|
||||||
cat <<"EOF"
|
|
||||||
______ __ _ __
|
|
||||||
/ ____/___ _____/ /______ (_) /_
|
|
||||||
/ / / __ \/ ___/ //_/ __ \/ / __/
|
|
||||||
/ /___/ /_/ / /__/ ,< / /_/ / / /_
|
|
||||||
\____/\____/\___/_/|_/ .___/_/\__/
|
|
||||||
/_/
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
header_info
|
|
||||||
echo -e "Loading..."
|
|
||||||
APP="Cockpit"
|
|
||||||
var_disk="4"
|
|
||||||
var_cpu="2"
|
|
||||||
var_ram="1024"
|
|
||||||
var_os="debian"
|
|
||||||
var_version="12"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
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() {
|
|
||||||
if [[ ! -d /etc/cockpit ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
|
||||||
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 4 \
|
|
||||||
"1" "Update LXC" ON \
|
|
||||||
"2" "Install cockpit-file-sharing" OFF \
|
|
||||||
"3" "Install cockpit-identities" OFF \
|
|
||||||
"4" "Install cockpit-navigator" OFF \
|
|
||||||
3>&1 1>&2 2>&3)
|
|
||||||
|
|
||||||
header_info
|
|
||||||
if [ "$UPD" == "1" ]; then
|
|
||||||
msg_info "Updating ${APP} LXC"
|
|
||||||
apt-get update &>/dev/null
|
|
||||||
apt-get -y upgrade &>/dev/null
|
|
||||||
msg_ok "Updated ${APP} LXC"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
if [ "$UPD" == "2" ]; then
|
|
||||||
msg_info "Installing dependencies (patience)"
|
|
||||||
apt-get install -y attr &>/dev/null
|
|
||||||
apt-get install -y nfs-kernel-server &>/dev/null
|
|
||||||
apt-get install -y samba &>/dev/null
|
|
||||||
apt-get install -y samba-common-bin &>/dev/null
|
|
||||||
apt-get install -y winbind &>/dev/null
|
|
||||||
apt-get install -y gawk &>/dev/null
|
|
||||||
msg_ok "Installed dependencies"
|
|
||||||
msg_info "Installing Cockpit file sharing"
|
|
||||||
LATEST=$(curl -s https://api.github.com/repos/45Drives/cockpit-file-sharing/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
wget -q https://github.com/45Drives/cockpit-file-sharing/releases/download/v${LATEST}/cockpit-file-sharing_${LATEST}-1focal_all.deb
|
|
||||||
dpkg -i cockpit-file-sharing_${LATEST}-1focal_all.deb &>/dev/null
|
|
||||||
rm cockpit-file-sharing_${LATEST}-1focal_all.deb
|
|
||||||
msg_ok "Installed Cockpit file sharing"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
if [ "$UPD" == "3" ]; then
|
|
||||||
msg_info "Installing dependencies (patience)"
|
|
||||||
apt-get install -y psmisc &>/dev/null
|
|
||||||
apt-get install -y samba &>/dev/null
|
|
||||||
apt-get install -y samba-common-bin &>/dev/null
|
|
||||||
msg_ok "Installed dependencies"
|
|
||||||
msg_info "Installing Cockpit identities"
|
|
||||||
LATEST=$(curl -s https://api.github.com/repos/45Drives/cockpit-identities/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
wget -q https://github.com/45Drives/cockpit-identities/releases/download/v${LATEST}/cockpit-identities_${LATEST}-1focal_all.deb
|
|
||||||
dpkg -i cockpit-identities_${LATEST}-1focal_all.deb &>/dev/null
|
|
||||||
rm cockpit-identities_${LATEST}-1focal_all.deb
|
|
||||||
msg_ok "Installed Cockpit identities"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
if [ "$UPD" == "4" ]; then
|
|
||||||
msg_info "Installing dependencies"
|
|
||||||
apt-get install -y rsync &>/dev/null
|
|
||||||
apt-get install -y zip &>/dev/null
|
|
||||||
msg_ok "Installed dependencies"
|
|
||||||
msg_info "Installing Cockpit navigator"
|
|
||||||
LATEST=$(curl -s https://api.github.com/repos/45Drives/cockpit-navigator/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
wget -q https://github.com/45Drives/cockpit-navigator/releases/download/v${LATEST}/cockpit-navigator_${LATEST}-1focal_all.deb
|
|
||||||
dpkg -i cockpit-navigator_${LATEST}-1focal_all.deb &>/dev/null
|
|
||||||
rm cockpit-navigator_${LATEST}-1focal_all.deb
|
|
||||||
msg_ok "Installed Cockpit navigator"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
start
|
|
||||||
build_container
|
|
||||||
description
|
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
|
||||||
echo -e "${APP} should be reachable by going to the following URL.
|
|
||||||
${BL}http://${IP}:9090${CL} \n"
|
|
||||||
+11
-19
@@ -55,27 +55,19 @@ function default_settings() {
|
|||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
if [[ ! -d /opt/commafeed ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -d /opt/commafeed ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
RELEASE=$(curl -sL https://api.github.com/repos/Athou/commafeed/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
msg_info "Stopping CommaFeed"
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
systemctl stop commafeed
|
||||||
msg_info "Stopping ${APP}"
|
msg_ok "Stopped CommaFeed"
|
||||||
systemctl stop commafeed
|
|
||||||
msg_ok "Stopped ${APP}"
|
|
||||||
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
msg_info "Updating CommaFeed"
|
||||||
wget -q https://github.com/Athou/commafeed/releases/download/${RELEASE}/commafeed-${RELEASE}-h2-jvm.zip
|
cd /opt/commafeed
|
||||||
unzip -q commafeed-${RELEASE}-h2-jvm.zip
|
rm commafeed.jar
|
||||||
rsync -a --exclude 'data/' commafeed-${RELEASE}-h2/ /opt/commafeed/
|
wget -q https://github.com/Athou/commafeed/releases/latest/download/commafeed.jar
|
||||||
rm -rf commafeed-${RELEASE}-h2 commafeed-${RELEASE}-h2-jvm.zip
|
msg_ok "Updated CommaFeed"
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
msg_info "Starting CommaFeed"
|
||||||
systemctl start commafeed
|
systemctl start commafeed
|
||||||
msg_ok "Started ${APP}"
|
msg_ok "Update Completed Successfully"
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
|
||||||
fi
|
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -76,8 +76,8 @@ if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}
|
|||||||
mkdir -p /opt/dashy
|
mkdir -p /opt/dashy
|
||||||
wget -qO- https://github.com/Lissy93/dashy/archive/refs/tags/${RELEASE}.tar.gz | tar -xz -C /opt/dashy --strip-components=1
|
wget -qO- https://github.com/Lissy93/dashy/archive/refs/tags/${RELEASE}.tar.gz | tar -xz -C /opt/dashy --strip-components=1
|
||||||
cd /opt/dashy
|
cd /opt/dashy
|
||||||
npm install
|
npm install &>/dev/null
|
||||||
npm run build
|
npm run build &>/dev/null
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
msg_ok "Updated ${APP} to ${RELEASE}"
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -29,7 +29,7 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function default_settings() {
|
function default_settings() {
|
||||||
CT_TYPE="0"
|
CT_TYPE="1"
|
||||||
PW=""
|
PW=""
|
||||||
CT_ID=$NEXTID
|
CT_ID=$NEXTID
|
||||||
HN=$NSAPP
|
HN=$NSAPP
|
||||||
|
|||||||
+9
-7
@@ -32,7 +32,7 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function default_settings() {
|
function default_settings() {
|
||||||
CT_TYPE="0"
|
CT_TYPE="1"
|
||||||
PW=""
|
PW=""
|
||||||
CT_ID=$NEXTID
|
CT_ID=$NEXTID
|
||||||
HN=$NSAPP
|
HN=$NSAPP
|
||||||
@@ -57,20 +57,22 @@ function default_settings() {
|
|||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
if [[ ! -d /opt/ErsatzTV ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -d /opt/ErsatzTV ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
|
if (( $(df /boot | awk 'NR==2{gsub("%","",$5); print $5}') > 80 )); then
|
||||||
|
read -r -p "Warning: Storage is dangerously low, continue anyway? <y/N> " prompt
|
||||||
|
[[ ${prompt,,} =~ ^(y|yes)$ ]] || exit
|
||||||
|
fi
|
||||||
msg_info "Stopping ErsatzTV"
|
msg_info "Stopping ErsatzTV"
|
||||||
systemctl stop ersatzTV
|
systemctl stop ersatzTV
|
||||||
msg_ok "Stopped ErsatzTV"
|
msg_ok "Stopped ErsatzTV"
|
||||||
|
|
||||||
msg_info "Updating ErsatzTV"
|
msg_info "Updating ErsatzTV"
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/ErsatzTV/ErsatzTV/releases | grep -oP '"tag_name": "\K[^"]+' | head -n 1)
|
RELEASE=$(curl -s https://api.github.com/repos/ErsatzTV/ErsatzTV/releases | grep -oP '"tag_name": "\K[^"]+' | head -n 1)
|
||||||
cp -R /opt/ErsatzTV/ ErsatzTV-backup
|
if [ -d /opt/ErsatzTV/ErsatzTV_bak ]; then
|
||||||
rm ErsatzTV-backup/ErsatzTV
|
rm -rf /opt/ErsatzTV/ErsatzTV_bak
|
||||||
rm -rf /opt/ErsatzTV
|
fi
|
||||||
|
mv /opt/ErsatzTV/ErsatzTV /opt/ErsatzTV/ErsatzTV_bak
|
||||||
wget -qO- "https://github.com/ErsatzTV/ErsatzTV/releases/download/${RELEASE}/ErsatzTV-${RELEASE}-linux-arm64.tar.gz" | tar -xz -C /opt
|
wget -qO- "https://github.com/ErsatzTV/ErsatzTV/releases/download/${RELEASE}/ErsatzTV-${RELEASE}-linux-arm64.tar.gz" | tar -xz -C /opt
|
||||||
mv "/opt/ErsatzTV-${RELEASE}-linux-arm64" /opt/ErsatzTV
|
mv "/opt/ErsatzTV-${RELEASE}-linux-arm64" /opt/ErsatzTV
|
||||||
cp -R ErsatzTV-backup/* /opt/ErsatzTV/
|
|
||||||
rm -rf ErsatzTV-backup
|
|
||||||
msg_ok "Updated ErsatzTV"
|
msg_ok "Updated ErsatzTV"
|
||||||
|
|
||||||
msg_info "Starting ErsatzTV"
|
msg_info "Starting ErsatzTV"
|
||||||
|
|||||||
-70
@@ -1,70 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2024 tteck
|
|
||||||
# Author: MickLesk (Canbiz)
|
|
||||||
# License: MIT
|
|
||||||
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
|
||||||
|
|
||||||
function header_info {
|
|
||||||
clear
|
|
||||||
cat <<"EOF"
|
|
||||||
___ _ ____________
|
|
||||||
/ _ \ | / / ___/ ___/
|
|
||||||
/ __/ |/ / /__/ /__
|
|
||||||
\___/|___/\___/\___/
|
|
||||||
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
header_info
|
|
||||||
echo -e "Loading..."
|
|
||||||
APP="evcc"
|
|
||||||
var_disk="4"
|
|
||||||
var_cpu="1"
|
|
||||||
var_ram="1024"
|
|
||||||
var_os="debian"
|
|
||||||
var_version="12"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
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() {
|
|
||||||
header_info
|
|
||||||
if [[ ! -f /etc/apt/sources.list.d/evcc-stable.list ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
|
||||||
msg_info "Updating evcc LXC"
|
|
||||||
apt update &>/dev/null
|
|
||||||
apt --only-upgrade install -y evcc &>/dev/null
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
|
|
||||||
start
|
|
||||||
build_container
|
|
||||||
description
|
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
|
||||||
echo -e "${APP} Setup should be reachable by going to the following URL.
|
|
||||||
${BL}http://${IP}:7070${CL} \n"
|
|
||||||
@@ -56,7 +56,6 @@ function default_settings() {
|
|||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
if [[ ! -f /etc/systemd/system/flaresolverr.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -f /etc/systemd/system/flaresolverr.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "SET RESOURCES" "Please set the resources in your ${APP} LXC to ${var_cpu}vCPU and ${var_ram}RAM for the build process before continuing" 10 75
|
|
||||||
RELEASE=$(wget -q https://github.com/FlareSolverr/FlareSolverr/releases/latest -O - | grep "title>Release" | cut -d " " -f 4)
|
RELEASE=$(wget -q https://github.com/FlareSolverr/FlareSolverr/releases/latest -O - | grep "title>Release" | cut -d " " -f 4)
|
||||||
if [[ ! -d /opt/flaresolverr ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -d /opt/flaresolverr ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
msg_info "Updating $APP LXC"
|
msg_info "Updating $APP LXC"
|
||||||
|
|||||||
@@ -55,7 +55,6 @@ function default_settings() {
|
|||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
if [[ ! -f /etc/systemd/system/flowise.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -f /etc/systemd/system/flowise.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "SET RESOURCES" "Please set the resources in your ${APP} LXC to ${var_cpu}vCPU and ${var_ram}RAM for the build process before continuing" 10 75
|
|
||||||
msg_info "Updating ${APP}"
|
msg_info "Updating ${APP}"
|
||||||
systemctl stop flowise
|
systemctl stop flowise
|
||||||
npm install -g flowise --upgrade
|
npm install -g flowise --upgrade
|
||||||
|
|||||||
+3
-8
@@ -55,7 +55,7 @@ function default_settings() {
|
|||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
if [[ ! -f /etc/systemd/system/frigate.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -f /etc/systemd/system/frigate.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
msg_error "To update Frigate, create a new container and transfer your configuration."
|
msg_error "There is currently no update path available."
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,13 +64,8 @@ build_container
|
|||||||
description
|
description
|
||||||
|
|
||||||
msg_info "Setting Container to Normal Resources"
|
msg_info "Setting Container to Normal Resources"
|
||||||
STATUS=$(pct status $CTID | grep -oP '(?<=status: ).*')
|
pct set $CTID -memory 1024
|
||||||
if [ "$STATUS" == "running" ]; then
|
msg_ok "Set Container to Normal Resources"
|
||||||
pct set $CTID -memory 1024
|
|
||||||
else
|
|
||||||
echo -e " ⚠️ ${RD}Container is not running. Will need to change memory to 1024MB manually.${CL}"
|
|
||||||
fi
|
|
||||||
msg_ok "Set Normal Resources"
|
|
||||||
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}http://${IP}:5000${CL} \n"
|
${BL}http://${IP}:5000${CL} \n"
|
||||||
|
|||||||
-77
@@ -1,77 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2024 tteck
|
|
||||||
# Author: tteck (tteckster)
|
|
||||||
# Co-author: Rogue-King
|
|
||||||
# License: MIT
|
|
||||||
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
|
||||||
|
|
||||||
function header_info {
|
|
||||||
clear
|
|
||||||
cat <<"EOF"
|
|
||||||
______ _ __
|
|
||||||
/ ____/(_)/ /____ ____ _
|
|
||||||
/ / __// // __/ _ \/ __ /
|
|
||||||
/ /_/ // // /_/ __/ /_/ /
|
|
||||||
\____//_/ \__/\___/\__,_/
|
|
||||||
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
header_info
|
|
||||||
echo -e "Loading..."
|
|
||||||
APP="Gitea"
|
|
||||||
var_disk="8"
|
|
||||||
var_cpu="1"
|
|
||||||
var_ram="1024"
|
|
||||||
var_os="debian"
|
|
||||||
var_version="12"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
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() {
|
|
||||||
header_info
|
|
||||||
if [[ ! -f /usr/local/bin/gitea ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
|
||||||
RELEASE=$(wget -q https://github.com/go-gitea/gitea/releases/latest -O - | grep "title>Release" | cut -d " " -f 4 | sed 's/^v//')
|
|
||||||
msg_info "Updating $APP to ${RELEASE}"
|
|
||||||
wget -q https://github.com/go-gitea/gitea/releases/download/v$RELEASE/gitea-$RELEASE-linux-arm64
|
|
||||||
systemctl stop gitea
|
|
||||||
rm -rf /usr/local/bin/gitea
|
|
||||||
mv gitea* /usr/local/bin/gitea
|
|
||||||
chmod +x /usr/local/bin/gitea
|
|
||||||
systemctl start gitea
|
|
||||||
msg_ok "Updated $APP Successfully"
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
|
|
||||||
start
|
|
||||||
build_container
|
|
||||||
description
|
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
|
||||||
echo -e "${APP} should be reachable by going to the following URL.
|
|
||||||
${BL}http://${IP}:3000${CL} \n"
|
|
||||||
+1
-23
@@ -55,29 +55,7 @@ function default_settings() {
|
|||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
if [[ ! -d /opt/gotify ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -d /opt/gotify ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
|
msg_error "There is currently no update path available."
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/gotify/server/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 gotify
|
|
||||||
msg_ok "Stopped ${APP}"
|
|
||||||
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
|
||||||
cd /opt/gotify
|
|
||||||
wget -q https://github.com/gotify/server/releases/download/v${RELEASE}/gotify-linux-amd64.zip
|
|
||||||
unzip -oq gotify-linux-amd64.zip
|
|
||||||
rm -rf gotify-linux-amd64.zip
|
|
||||||
chmod +x gotify-linux-amd64
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
|
||||||
systemctl start gotify
|
|
||||||
msg_ok "Started ${APP}"
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
|
||||||
fi
|
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -s 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-2024 tteck
|
# Copyright (c) 2021-2024 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster)
|
||||||
# License: MIT
|
# License: MIT
|
||||||
@@ -63,9 +63,9 @@ if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}
|
|||||||
msg_ok "Stopped ${APP}"
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
msg_info "Updating $APP to v${RELEASE}"
|
msg_info "Updating $APP to v${RELEASE}"
|
||||||
wget -q https://github.com/juanfont/headscale/releases/download/v${RELEASE}/headscale_${RELEASE}_linux_arm64.deb
|
wget -q https://github.com/juanfont/headscale/releases/download/v${RELEASE}/headscale_${RELEASE}_linux_amd64.deb
|
||||||
dpkg -i headscale_${RELEASE}_linux_arm64.deb
|
dpkg -i headscale_${RELEASE}_linux_amd64.deb
|
||||||
rm headscale_${RELEASE}_linux_arm64.deb
|
rm headscale_${RELEASE}_linux_amd64.deb
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
msg_ok "Updated $APP to ${RELEASE}"
|
msg_ok "Updated $APP to ${RELEASE}"
|
||||||
|
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ function update_script() {
|
|||||||
|
|
||||||
msg_info "Updating Home Assistant"
|
msg_info "Updating Home Assistant"
|
||||||
source /srv/homeassistant/bin/activate
|
source /srv/homeassistant/bin/activate
|
||||||
uv pip install ${BR}--upgrade homeassistant &>/dev/null
|
pip install ${BR}--upgrade homeassistant &>/dev/null
|
||||||
msg_ok "Updated Home Assistant"
|
msg_ok "Updated Home Assistant"
|
||||||
|
|
||||||
msg_info "Starting Home Assistant"
|
msg_info "Starting Home Assistant"
|
||||||
@@ -121,7 +121,7 @@ function update_script() {
|
|||||||
else
|
else
|
||||||
filebrowser config init -a '0.0.0.0' &>/dev/null
|
filebrowser config init -a '0.0.0.0' &>/dev/null
|
||||||
filebrowser config set -a '0.0.0.0' &>/dev/null
|
filebrowser config set -a '0.0.0.0' &>/dev/null
|
||||||
filebrowser users add admin helper-scripts.com --perm.admin &>/dev/null
|
filebrowser users add admin changeme --perm.admin &>/dev/null
|
||||||
fi
|
fi
|
||||||
msg_ok "Installed FileBrowser"
|
msg_ok "Installed FileBrowser"
|
||||||
|
|
||||||
@@ -142,7 +142,7 @@ WantedBy=default.target" >$service_path
|
|||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "FileBrowser should be reachable by going to the following URL.
|
echo -e "FileBrowser should be reachable by going to the following URL.
|
||||||
${BL}http://$IP:8080${CL} admin|helper-scripts.com\n"
|
${BL}http://$IP:8080${CL} admin|changeme\n"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -105,7 +105,7 @@ function update_script() {
|
|||||||
curl -fsSL https://github.com/filebrowser/filebrowser/releases/download/v2.23.0/linux-arm64-filebrowser.tar.gz | tar -xzv -C /usr/local/bin &>/dev/null
|
curl -fsSL https://github.com/filebrowser/filebrowser/releases/download/v2.23.0/linux-arm64-filebrowser.tar.gz | tar -xzv -C /usr/local/bin &>/dev/null
|
||||||
filebrowser config init -a '0.0.0.0' &>/dev/null
|
filebrowser config init -a '0.0.0.0' &>/dev/null
|
||||||
filebrowser config set -a '0.0.0.0' &>/dev/null
|
filebrowser config set -a '0.0.0.0' &>/dev/null
|
||||||
filebrowser users add admin helper-scripts.com --perm.admin &>/dev/null
|
filebrowser users add admin changeme --perm.admin &>/dev/null
|
||||||
msg_ok "Installed FileBrowser"
|
msg_ok "Installed FileBrowser"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
@@ -125,7 +125,7 @@ WantedBy=default.target" >$service_path
|
|||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "FileBrowser should be reachable by going to the following URL.
|
echo -e "FileBrowser should be reachable by going to the following URL.
|
||||||
${BL}http://$IP:8080${CL} admin|helper-scripts.com\n"
|
${BL}http://$IP:8080${CL} admin|changeme\n"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,94 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2024 tteck
|
|
||||||
# Author: tteck
|
|
||||||
# Co-Author: MickLesk (Canbiz)
|
|
||||||
# License: MIT
|
|
||||||
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
|
||||||
|
|
||||||
function header_info {
|
|
||||||
clear
|
|
||||||
cat <<"EOF"
|
|
||||||
__ __ ____
|
|
||||||
/ / / /___ ____ ___ ___ / __ )____ _ __
|
|
||||||
/ /_/ / __ \/ __ `__ \/ _ \/ __ / __ \| |/_/
|
|
||||||
/ __ / /_/ / / / / / / __/ /_/ / /_/ /> <
|
|
||||||
/_/ /_/\____/_/ /_/ /_/\___/_____/\____/_/|_|
|
|
||||||
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
header_info
|
|
||||||
echo -e "Loading..."
|
|
||||||
APP="HomeBox"
|
|
||||||
var_disk="4"
|
|
||||||
var_cpu="1"
|
|
||||||
var_ram="1024"
|
|
||||||
var_os="debian"
|
|
||||||
var_version="12"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
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() {
|
|
||||||
header_info
|
|
||||||
if [[ ! -f /opt/homebox ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
|
||||||
if (( $(df /boot | awk 'NR==2{gsub("%","",$5); print $5}') > 80 )); then
|
|
||||||
read -r -p "Warning: Storage is dangerously low, continue anyway? <y/N> " prompt
|
|
||||||
[[ ${prompt,,} =~ ^(y|yes)$ ]] || exit
|
|
||||||
fi
|
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/sysadminsmedia/homebox/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
|
||||||
msg_info "Stopping ${APP}"
|
|
||||||
systemctl stop homebox
|
|
||||||
msg_ok "${APP} Stopped"
|
|
||||||
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
|
||||||
cd /opt
|
|
||||||
rm -rf homebox_bak
|
|
||||||
mv homebox homebox_bak
|
|
||||||
wget -qO- https://github.com/sysadminsmedia/homebox/releases/download/${RELEASE}/homebox_Linux_x86_64.tar.gz | tar -xzf - -C /opt
|
|
||||||
chmod +x /opt/homebox
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated Homebox"
|
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
|
||||||
systemctl start homebox
|
|
||||||
msg_ok "Started ${APP}"
|
|
||||||
|
|
||||||
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 "${APP} Setup should be reachable by going to the following URL.
|
|
||||||
${BL}http://${IP}:7745${CL} \n"
|
|
||||||
+1
-1
@@ -30,7 +30,7 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function default_settings() {
|
function default_settings() {
|
||||||
CT_TYPE="0"
|
CT_TYPE="1"
|
||||||
PW=""
|
PW=""
|
||||||
CT_ID=$NEXTID
|
CT_ID=$NEXTID
|
||||||
HN=$NSAPP
|
HN=$NSAPP
|
||||||
|
|||||||
+8
-36
@@ -20,7 +20,7 @@ header_info
|
|||||||
echo -e "Loading..."
|
echo -e "Loading..."
|
||||||
APP="Jellyseerr"
|
APP="Jellyseerr"
|
||||||
var_disk="8"
|
var_disk="8"
|
||||||
var_cpu="4"
|
var_cpu="2"
|
||||||
var_ram="4096"
|
var_ram="4096"
|
||||||
var_os="debian"
|
var_os="debian"
|
||||||
var_version="12"
|
var_version="12"
|
||||||
@@ -55,46 +55,19 @@ function default_settings() {
|
|||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
if [[ ! -d /opt/jellyseerr ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -d /opt/jellyseerr ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
if (( $(df /boot | awk 'NR==2{gsub("%","",$5); print $5}') > 80 )); then
|
|
||||||
read -r -p "Warning: Storage is dangerously low, continue anyway? <y/N> " prompt
|
|
||||||
[[ ${prompt,,} =~ ^(y|yes)$ ]] || exit
|
|
||||||
fi
|
|
||||||
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "SET RESOURCES" "Please set the resources in your Jellyseerr LXC to 4vcpu and 4096RAM for the build process before continuing" 10 75
|
|
||||||
if ! command -v pnpm &> /dev/null; then
|
|
||||||
msg_error "pnpm not found. Installing..."
|
|
||||||
npm install -g pnpm &>/dev/null
|
|
||||||
else
|
|
||||||
msg_ok "pnpm is already installed."
|
|
||||||
fi
|
|
||||||
msg_info "Updating $APP"
|
msg_info "Updating $APP"
|
||||||
|
systemctl stop jellyseerr
|
||||||
cd /opt/jellyseerr
|
cd /opt/jellyseerr
|
||||||
output=$(git pull --no-rebase)
|
output=$(git pull)
|
||||||
|
git pull &>/dev/null
|
||||||
if echo "$output" | grep -q "Already up to date."
|
if echo "$output" | grep -q "Already up to date."
|
||||||
then
|
then
|
||||||
msg_ok "$APP is already up to date."
|
msg_ok " $APP is already up to date."
|
||||||
|
systemctl start jellyseerr
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
systemctl stop jellyseerr
|
yarn install &>/dev/null
|
||||||
export CYPRESS_INSTALL_BINARY=0
|
yarn build &>/dev/null
|
||||||
pnpm install --frozen-lockfile &>/dev/null
|
|
||||||
export NODE_OPTIONS="--max-old-space-size=3072"
|
|
||||||
pnpm build &>/dev/null
|
|
||||||
cat <<EOF >/etc/systemd/system/jellyseerr.service
|
|
||||||
[Unit]
|
|
||||||
Description=jellyseerr Service
|
|
||||||
After=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
EnvironmentFile=/etc/jellyseerr/jellyseerr.conf
|
|
||||||
Environment=NODE_ENV=production
|
|
||||||
Type=exec
|
|
||||||
WorkingDirectory=/opt/jellyseerr
|
|
||||||
ExecStart=/usr/bin/node dist/index.js
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
systemctl daemon-reload
|
|
||||||
systemctl start jellyseerr
|
systemctl start jellyseerr
|
||||||
msg_ok "Updated $APP"
|
msg_ok "Updated $APP"
|
||||||
exit
|
exit
|
||||||
@@ -106,7 +79,6 @@ description
|
|||||||
|
|
||||||
msg_info "Setting Container to Normal Resources"
|
msg_info "Setting Container to Normal Resources"
|
||||||
pct set $CTID -memory 2048
|
pct set $CTID -memory 2048
|
||||||
pct set $CTID -cores 2
|
|
||||||
msg_ok "Set Container to Normal Resources"
|
msg_ok "Set Container to Normal Resources"
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
|
|||||||
+13
-16
@@ -1,30 +1,29 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -s 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
|
# Author: tteck (tteckster)
|
||||||
# Co-Author: havardthom
|
|
||||||
# License: MIT
|
# License: MIT
|
||||||
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||||
|
|
||||||
function header_info {
|
function header_info {
|
||||||
clear
|
clear
|
||||||
cat <<"EOF"
|
cat <<"EOF"
|
||||||
_ __ __ __ _
|
__ ____ __ __ __ __
|
||||||
/ | / /__ ____ / // / (_)
|
/ /__/ __ \_____ / //_/_ __/ /_ ___ _________ ___ / /____ _____
|
||||||
/ |/ / _ \/ __ \/ // /_/ /
|
/ //_/ / / / ___/ / ,< / / / / __ \/ _ \/ ___/ __ \/ _ \/ __/ _ \/ ___/
|
||||||
/ /| / __/ /_/ /__ __/ /
|
/ ,< / /_/ (__ ) / /| / /_/ / /_/ / __/ / / / / / __/ /_/ __(__ )
|
||||||
/_/ |_/\___/\____/ /_/_/ /
|
/_/|_|\____/____/ /_/ |_\__,_/_.___/\___/_/ /_/ /_/\___/\__/\___/____/
|
||||||
/___/
|
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
header_info
|
header_info
|
||||||
echo -e "Loading..."
|
echo -e "Loading..."
|
||||||
APP="Neo4j"
|
APP="k0s"
|
||||||
var_disk="4"
|
var_disk="4"
|
||||||
var_cpu="1"
|
var_cpu="2"
|
||||||
var_ram="1024"
|
var_ram="2048"
|
||||||
var_os="debian"
|
var_os="debian"
|
||||||
var_version="12"
|
var_version="11"
|
||||||
variables
|
variables
|
||||||
color
|
color
|
||||||
catch_errors
|
catch_errors
|
||||||
@@ -55,8 +54,8 @@ function default_settings() {
|
|||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
if [[ ! -d /etc/neo4j ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -f /etc/k0s/k0s.yaml ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
msg_info "Updating ${APP}"
|
msg_info "Updating ${APP} LXC"
|
||||||
apt-get update &>/dev/null
|
apt-get update &>/dev/null
|
||||||
apt-get -y upgrade &>/dev/null
|
apt-get -y upgrade &>/dev/null
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
@@ -68,5 +67,3 @@ build_container
|
|||||||
description
|
description
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${APP} Browser should be reachable by going to the following URL.
|
|
||||||
${BL}http://${IP}:7474${CL} \n"
|
|
||||||
+1
-25
@@ -57,32 +57,8 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
if [[ ! -f /etc/systemd/system/keycloak.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -f /etc/systemd/system/keycloak.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
msg_info "Updating ${APP} LXC"
|
msg_info "Updating ${APP} LXC"
|
||||||
|
|
||||||
msg_info "Updating packages"
|
|
||||||
apt-get update &>/dev/null
|
apt-get update &>/dev/null
|
||||||
apt-get -y upgrade &>/dev/null
|
apt-get -y upgrade &>/dev/null
|
||||||
|
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/keycloak/keycloak/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
|
||||||
msg_info "Downloading Keycloak v$RELEASE"
|
|
||||||
cd /opt
|
|
||||||
wget -q https://github.com/keycloak/keycloak/releases/download/$RELEASE/keycloak-$RELEASE.tar.gz
|
|
||||||
$STD tar -xvf keycloak-$RELEASE.tar.gz
|
|
||||||
|
|
||||||
msg_info "Merging configuration files"
|
|
||||||
cp -r keycloak/conf keycloak-$RELEASE
|
|
||||||
cp -r keycloak/providers keycloak-$RELEASE
|
|
||||||
cp -r keycloak/themes keycloak-$RELEASE
|
|
||||||
|
|
||||||
msg_info "Updating Keycloak"
|
|
||||||
mv keycloak keycloak.old
|
|
||||||
mv keycloak-$RELEASE keycloak
|
|
||||||
|
|
||||||
msg_info "Delete temporary installation files"
|
|
||||||
rm keycloak-$RELEASE.tar.gz
|
|
||||||
rm -rf keycloak.old
|
|
||||||
|
|
||||||
msg_info "Restating Keycloak"
|
|
||||||
systemctl restart keycloak
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
@@ -93,4 +69,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}http://${IP}:8080/admin${CL} \n"
|
${BL}http://${IP}:8080${CL} \n"
|
||||||
|
|||||||
@@ -67,7 +67,6 @@ if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}
|
|||||||
git pull
|
git pull
|
||||||
yarn
|
yarn
|
||||||
npx playwright install-deps
|
npx playwright install-deps
|
||||||
yarn playwright install
|
|
||||||
yarn prisma generate
|
yarn prisma generate
|
||||||
yarn build
|
yarn build
|
||||||
yarn prisma migrate deploy
|
yarn prisma migrate deploy
|
||||||
|
|||||||
-75
@@ -1,75 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# # Copyright (c) 2021-2024 tteck
|
|
||||||
# # Author: tteck (tteckster)
|
|
||||||
# # Co-Author: remz1337
|
|
||||||
# # License: MIT
|
|
||||||
# # https://github.com/tteck/Proxmox/raw/main/LICENSE
|
|
||||||
|
|
||||||
echo "Unsupported."
|
|
||||||
|
|
||||||
# function header_info {
|
|
||||||
# clear
|
|
||||||
# cat <<"EOF"
|
|
||||||
# ____ __
|
|
||||||
# / / /___/ /___ _____
|
|
||||||
# / / / __ / __ `/ __ \
|
|
||||||
# / / / /_/ / /_/ / /_/ /
|
|
||||||
# /_/_/\__,_/\__,_/ .___/
|
|
||||||
# /_/
|
|
||||||
|
|
||||||
# EOF
|
|
||||||
# }
|
|
||||||
# header_info
|
|
||||||
# echo -e "Loading..."
|
|
||||||
# APP="lldap"
|
|
||||||
# var_disk="4"
|
|
||||||
# var_cpu="1"
|
|
||||||
# var_ram="512"
|
|
||||||
# var_os="debian"
|
|
||||||
# var_version="12"
|
|
||||||
# variables
|
|
||||||
# color
|
|
||||||
# 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() {
|
|
||||||
# header_info
|
|
||||||
# if [[ ! -f /etc/systemd/system/lldap.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
|
||||||
# msg_info "Updating $APP"
|
|
||||||
# apt update
|
|
||||||
# apt upgrade -y lldap
|
|
||||||
# msg_ok "Updated $APP"
|
|
||||||
# exit
|
|
||||||
# }
|
|
||||||
|
|
||||||
# start
|
|
||||||
# build_container
|
|
||||||
# description
|
|
||||||
|
|
||||||
# msg_ok "Completed Successfully!\n"
|
|
||||||
# echo -e "${APP} should be reachable by going to the following URL.
|
|
||||||
# ${BL}http://${IP}:17170${CL} \n"
|
|
||||||
+1
-1
@@ -55,7 +55,7 @@ function default_settings() {
|
|||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
if [[ ! -d /opt/mafl ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -d /opt/mafl ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "SET RESOURCES" "Please set the resources in your ${APP} LXC to ${var_cpu}vCPU and ${var_ram}RAM for the build process before continuing" 10 75
|
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/hywax/mafl/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -s https://api.github.com/repos/hywax/mafl/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
msg_info "Updating Mafl to v${RELEASE} (Patience)"
|
msg_info "Updating Mafl to v${RELEASE} (Patience)"
|
||||||
systemctl stop mafl
|
systemctl stop mafl
|
||||||
|
|||||||
+31
-2
@@ -54,8 +54,37 @@ function default_settings() {
|
|||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
if [[ ! -d /root/Matterbridge ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -d /opt/matterbridge ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
msg_error "Update via the Matterbridge UI"
|
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/Luligu/matterbridge/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}')
|
||||||
|
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||||
|
msg_info "Stopping ${APP} Service"
|
||||||
|
systemctl stop matterbridge
|
||||||
|
msg_ok "Stopped ${APP} Service"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP} to ${RELEASE}"
|
||||||
|
cd /opt/matterbridge
|
||||||
|
wget -q "https://github.com/Luligu/matterbridge/archive/refs/tags/${RELEASE}.zip"
|
||||||
|
unzip -q ${RELEASE}.zip
|
||||||
|
mv matterbridge-${RELEASE} /opt/matterbridge
|
||||||
|
cd /opt/matterbridge
|
||||||
|
npm ci >/dev/null 2>&1
|
||||||
|
npm run build >/dev/null 2>&1
|
||||||
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
|
msg_ok "Updated ${APP} to ${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm /opt/${RELEASE}.zip
|
||||||
|
msg_ok "Cleaned"
|
||||||
|
|
||||||
|
msg_info "Starting ${APP} Service"
|
||||||
|
systemctl start matterbridge
|
||||||
|
sleep 1
|
||||||
|
msg_ok "Started ${APP} Service"
|
||||||
|
msg_ok "Updated Successfully!\n"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
-88
@@ -1,88 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2024 tteck
|
|
||||||
# Author: tteck
|
|
||||||
# Co-Author: MickLesk (Canbiz)
|
|
||||||
# License: MIT
|
|
||||||
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
|
||||||
|
|
||||||
function header_info {
|
|
||||||
clear
|
|
||||||
cat <<"EOF"
|
|
||||||
__ ___
|
|
||||||
/ |/ /__ ____ ___ ____ _____
|
|
||||||
/ /|_/ / _ \/ __ `__ \/ __ \/ ___/
|
|
||||||
/ / / / __/ / / / / / /_/ (__ )
|
|
||||||
/_/ /_/\___/_/ /_/ /_/\____/____/
|
|
||||||
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
header_info
|
|
||||||
echo -e "Loading..."
|
|
||||||
APP="Memos"
|
|
||||||
var_disk="7"
|
|
||||||
var_cpu="2"
|
|
||||||
var_ram="2048"
|
|
||||||
var_os="debian"
|
|
||||||
var_version="12"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
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() {
|
|
||||||
header_info
|
|
||||||
if [[ ! -d /opt/memos ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
|
||||||
msg_info "Updating $APP (Patience)"
|
|
||||||
cd /opt/memos
|
|
||||||
output=$(git pull --no-rebase)
|
|
||||||
if echo "$output" | grep -q "Already up to date."
|
|
||||||
then
|
|
||||||
msg_ok "$APP is already up to date."
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
systemctl stop memos
|
|
||||||
cd /opt/memos/web
|
|
||||||
pnpm i --frozen-lockfile &>/dev/null
|
|
||||||
pnpm build &>/dev/null
|
|
||||||
cd /opt/memos
|
|
||||||
mkdir -p /opt/memos/server/dist
|
|
||||||
cp -r web/dist/* /opt/memos/server/dist/
|
|
||||||
cp -r web/dist/* /opt/memos/server/router/frontend/dist/
|
|
||||||
go build -o /opt/memos/memos -tags=embed bin/memos/main.go &>/dev/null
|
|
||||||
systemctl start memos
|
|
||||||
msg_ok "Updated $APP"
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
start
|
|
||||||
build_container
|
|
||||||
description
|
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
|
||||||
echo -e "${APP} should be reachable by going to the following URL.
|
|
||||||
${BL}http://${IP}:9030${CL} \n"
|
|
||||||
-72
@@ -1,72 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# # Copyright (c) 2021-2024 tteck
|
|
||||||
# # Author: tteck
|
|
||||||
# # Co-Author: MickLesk (Canbiz)
|
|
||||||
# # License: MIT
|
|
||||||
# # https://github.com/tteck/Proxmox/raw/main/LICENSE
|
|
||||||
|
|
||||||
echo "Unsupported."
|
|
||||||
|
|
||||||
# function header_info {
|
|
||||||
# clear
|
|
||||||
# cat <<"EOF"
|
|
||||||
# __ ___ _____ ____ __
|
|
||||||
# / |/ /_ __/ ___// __ \ / /
|
|
||||||
# / /|_/ / / / /\__ \/ / / / / /
|
|
||||||
# / / / / /_/ /___/ / /_/ / / /___
|
|
||||||
# /_/ /_/\__, //____/\___\_\/_____/
|
|
||||||
# /____/
|
|
||||||
# EOF
|
|
||||||
# }
|
|
||||||
# header_info
|
|
||||||
# echo -e "Loading..."
|
|
||||||
# APP="MySQL"
|
|
||||||
# var_disk="4"
|
|
||||||
# var_cpu="1"
|
|
||||||
# var_ram="1024"
|
|
||||||
# var_os="debian"
|
|
||||||
# var_version="12"
|
|
||||||
# variables
|
|
||||||
# color
|
|
||||||
# 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() {
|
|
||||||
# header_info
|
|
||||||
# if [[ ! -f /usr/share/keyrings/mysql.gpg ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
|
||||||
# msg_info "Updating ${APP} LXC"
|
|
||||||
# apt-get update &>/dev/null
|
|
||||||
# apt-get -y upgrade &>/dev/null
|
|
||||||
# msg_ok "Updated Successfully"
|
|
||||||
# exit
|
|
||||||
# }
|
|
||||||
|
|
||||||
# start
|
|
||||||
# build_container
|
|
||||||
# description
|
|
||||||
|
|
||||||
# msg_ok "Completed Successfully!\n"
|
|
||||||
@@ -65,7 +65,6 @@ if [[ ! -f /etc/systemd/system/n8n.service ]]; then msg_error "No ${APP} Install
|
|||||||
fi
|
fi
|
||||||
msg_info "Updating ${APP} LXC"
|
msg_info "Updating ${APP} LXC"
|
||||||
npm update -g n8n &>/dev/null
|
npm update -g n8n &>/dev/null
|
||||||
systemctl restart n8n
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,8 +23,8 @@ APP="Nginx Proxy Manager"
|
|||||||
var_disk="4"
|
var_disk="4"
|
||||||
var_cpu="2"
|
var_cpu="2"
|
||||||
var_ram="1024"
|
var_ram="1024"
|
||||||
var_os="debian"
|
var_os="ubuntu"
|
||||||
var_version="12"
|
var_version="22.04"
|
||||||
variables
|
variables
|
||||||
color
|
color
|
||||||
catch_errors
|
catch_errors
|
||||||
@@ -61,7 +61,7 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
if ! command -v pnpm &> /dev/null; then
|
if ! command -v pnpm &> /dev/null; then
|
||||||
msg_info "Installing pnpm"
|
msg_info "Installing pnpm"
|
||||||
#export NODE_OPTIONS=--openssl-legacy-provider
|
export NODE_OPTIONS=--openssl-legacy-provider
|
||||||
npm install -g pnpm@8.15 &>/dev/null
|
npm install -g pnpm@8.15 &>/dev/null
|
||||||
msg_ok "Installed pnpm"
|
msg_ok "Installed pnpm"
|
||||||
fi
|
fi
|
||||||
@@ -168,7 +168,6 @@ EOF
|
|||||||
|
|
||||||
msg_info "Starting Services"
|
msg_info "Starting Services"
|
||||||
sed -i 's/user npm/user root/g; s/^pid/#pid/g' /usr/local/openresty/nginx/conf/nginx.conf
|
sed -i 's/user npm/user root/g; s/^pid/#pid/g' /usr/local/openresty/nginx/conf/nginx.conf
|
||||||
sed -i 's/su npm npm/su root root/g' /etc/logrotate.d/nginx-proxy-manager
|
|
||||||
sed -i 's/include-system-site-packages = false/include-system-site-packages = true/g' /opt/certbot/pyvenv.cfg
|
sed -i 's/include-system-site-packages = false/include-system-site-packages = true/g' /opt/certbot/pyvenv.cfg
|
||||||
systemctl enable -q --now openresty
|
systemctl enable -q --now openresty
|
||||||
systemctl enable -q --now npm
|
systemctl enable -q --now npm
|
||||||
@@ -186,6 +185,9 @@ start
|
|||||||
build_container
|
build_container
|
||||||
description
|
description
|
||||||
|
|
||||||
|
msg_info "Setting Container to Normal Resources"
|
||||||
|
pct set $CTID -cores 1
|
||||||
|
msg_ok "Set Container to Normal Resources"
|
||||||
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}http://${IP}:81${CL}\n"
|
${BL}http://${IP}:81${CL}\n"
|
||||||
|
|||||||
@@ -1,72 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2024 tteck
|
|
||||||
# Author: tteck
|
|
||||||
# Co-Author: havardthom
|
|
||||||
# License: MIT
|
|
||||||
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
|
||||||
|
|
||||||
function header_info {
|
|
||||||
clear
|
|
||||||
cat <<"EOF"
|
|
||||||
_ _______ ____ ______ __
|
|
||||||
/ | / /__ / / __ )/ ____/__ / /_
|
|
||||||
/ |/ / / / / __ / / __/ _ \/ __/
|
|
||||||
/ /| / / /__/ /_/ / /_/ / __/ /_
|
|
||||||
/_/ |_/ /____/_____/\____/\___/\__/
|
|
||||||
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
header_info
|
|
||||||
echo -e "Loading..."
|
|
||||||
APP="NZBGet"
|
|
||||||
var_disk="4"
|
|
||||||
var_cpu="2"
|
|
||||||
var_ram="2048"
|
|
||||||
var_os="debian"
|
|
||||||
var_version="12"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
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() {
|
|
||||||
header_info
|
|
||||||
if [[ ! -f /lib/systemd/system/nzbget.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
|
||||||
msg_info "Updating $APP LXC"
|
|
||||||
apt-get update &>/dev/null
|
|
||||||
apt-get -y upgrade &>/dev/null
|
|
||||||
msg_ok "Updated $APP LXC"
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
|
|
||||||
start
|
|
||||||
build_container
|
|
||||||
description
|
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
|
||||||
echo -e "${APP} should be reachable by going to the following URL.
|
|
||||||
${BL}http://${IP}:6789${CL} \n"
|
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2024 tteck
|
|
||||||
# Author: tteck
|
|
||||||
# Co-Author: havardthom
|
|
||||||
# License: MIT
|
|
||||||
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
|
||||||
|
|
||||||
function header_info {
|
|
||||||
clear
|
|
||||||
cat <<"EOF"
|
|
||||||
____ ____
|
|
||||||
/ __ \/ / /___ _____ ___ ____ _
|
|
||||||
/ / / / / / __ `/ __ `__ \/ __ `/
|
|
||||||
/ /_/ / / / /_/ / / / / / / /_/ /
|
|
||||||
\____/_/_/\__,_/_/ /_/ /_/\__,_/
|
|
||||||
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
header_info
|
|
||||||
echo -e "Loading..."
|
|
||||||
APP="Ollama"
|
|
||||||
var_disk="24"
|
|
||||||
var_cpu="4"
|
|
||||||
var_ram="4096"
|
|
||||||
var_os="ubuntu"
|
|
||||||
var_version="22.04"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
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() {
|
|
||||||
header_info
|
|
||||||
if [[ ! -d /opt/ollama ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
|
||||||
msg_info "Updating ${APP}"
|
|
||||||
apt-get update &>/dev/null
|
|
||||||
apt-get -y upgrade &>/dev/null
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
|
|
||||||
start
|
|
||||||
build_container
|
|
||||||
description
|
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
|
||||||
echo -e "${APP} should be reachable by going to the following URL.
|
|
||||||
${BL}http://${IP}:11434${CL} \n"
|
|
||||||
@@ -1,85 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2024 tteck
|
|
||||||
# Author: tteck
|
|
||||||
# Co-Author: havardthom
|
|
||||||
# License: MIT
|
|
||||||
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
|
||||||
|
|
||||||
function header_info {
|
|
||||||
clear
|
|
||||||
cat <<"EOF"
|
|
||||||
____ _ __ __ __ ______
|
|
||||||
/ __ \____ ___ ____ | | / /__ / /_ / / / / _/
|
|
||||||
/ / / / __ \/ _ \/ __ \ | | /| / / _ \/ __ \/ / / // /
|
|
||||||
/ /_/ / /_/ / __/ / / / | |/ |/ / __/ /_/ / /_/ // /
|
|
||||||
\____/ .___/\___/_/ /_/ |__/|__/\___/_.___/\____/___/
|
|
||||||
/_/
|
|
||||||
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
header_info
|
|
||||||
echo -e "Loading..."
|
|
||||||
APP="Open WebUI"
|
|
||||||
var_disk="16"
|
|
||||||
var_cpu="4"
|
|
||||||
var_ram="4096"
|
|
||||||
var_os="debian"
|
|
||||||
var_version="12"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
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() {
|
|
||||||
header_info
|
|
||||||
if [[ ! -d /opt/open-webui ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
|
||||||
msg_info "Updating ${APP} (Patience)"
|
|
||||||
cd /opt/open-webui
|
|
||||||
output=$(git pull --no-rebase)
|
|
||||||
if echo "$output" | grep -q "Already up to date."
|
|
||||||
then
|
|
||||||
msg_ok "$APP is already up to date."
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
systemctl stop open-webui.service
|
|
||||||
npm install &>/dev/null
|
|
||||||
export NODE_OPTIONS="--max-old-space-size=3584"
|
|
||||||
npm run build &>/dev/null
|
|
||||||
cd ./backend
|
|
||||||
pip install -r requirements.txt -U &>/dev/null
|
|
||||||
systemctl start open-webui.service
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
|
|
||||||
start
|
|
||||||
build_container
|
|
||||||
description
|
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
|
||||||
echo -e "${APP} should be reachable by going to the following URL.
|
|
||||||
${BL}http://${IP}:8080${CL} \n"
|
|
||||||
+1
-1
@@ -21,7 +21,7 @@ echo -e "Loading..."
|
|||||||
APP="Overseerr"
|
APP="Overseerr"
|
||||||
var_disk="8"
|
var_disk="8"
|
||||||
var_cpu="2"
|
var_cpu="2"
|
||||||
var_ram="3072"
|
var_ram="2048"
|
||||||
var_os="debian"
|
var_os="debian"
|
||||||
var_version="12"
|
var_version="12"
|
||||||
variables
|
variables
|
||||||
|
|||||||
@@ -67,18 +67,6 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
if [ "$UPD" == "1" ]; then
|
if [ "$UPD" == "1" ]; then
|
||||||
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
||||||
if [[ "$(gs --version 2>/dev/null)" != "10.04.0" ]]; then
|
|
||||||
msg_info "Updating Ghostscript"
|
|
||||||
cd /tmp
|
|
||||||
wget -q https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10040/ghostscript-10.04.0.tar.gz
|
|
||||||
tar -xzf ghostscript-10.04.0.tar.gz
|
|
||||||
cd ghostscript-10.04.0
|
|
||||||
./configure &>/dev/null
|
|
||||||
make &>/dev/null
|
|
||||||
sudo make install &>/dev/null
|
|
||||||
rm -rf /tmp/ghostscript*
|
|
||||||
msg_ok "Ghostscript updated to 10.04.0"
|
|
||||||
fi
|
|
||||||
msg_info "Stopping all Paperless-ngx Services"
|
msg_info "Stopping all Paperless-ngx Services"
|
||||||
systemctl stop paperless-consumer paperless-webserver paperless-scheduler paperless-task-queue.service
|
systemctl stop paperless-consumer paperless-webserver paperless-scheduler paperless-task-queue.service
|
||||||
msg_ok "Stopped all Paperless-ngx Services"
|
msg_ok "Stopped all Paperless-ngx Services"
|
||||||
|
|||||||
@@ -55,7 +55,6 @@ function default_settings() {
|
|||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
if [[ ! -f /etc/systemd/system/peanut.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -f /etc/systemd/system/peanut.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "SET RESOURCES" "Please set the resources in your ${APP} LXC to ${var_cpu}vCPU and ${var_ram}RAM for the build process before continuing" 10 75
|
|
||||||
RELEASE=$(curl -sL https://api.github.com/repos/Brandawg93/PeaNUT/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
RELEASE=$(curl -sL https://api.github.com/repos/Brandawg93/PeaNUT/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||||
msg_info "Updating $APP to ${RELEASE}"
|
msg_info "Updating $APP to ${RELEASE}"
|
||||||
@@ -67,8 +66,6 @@ function update_script() {
|
|||||||
pnpm i &>/dev/null
|
pnpm i &>/dev/null
|
||||||
pnpm run build &>/dev/null
|
pnpm run build &>/dev/null
|
||||||
cp -r .next/static .next/standalone/.next/
|
cp -r .next/static .next/standalone/.next/
|
||||||
mkdir -p /opt/peanut/.next/standalone/config
|
|
||||||
ln -sf /etc/peanut/settings.yml /opt/peanut/.next/standalone/config/settings.yml
|
|
||||||
systemctl start peanut
|
systemctl start peanut
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
msg_ok "Updated $APP to ${RELEASE}"
|
msg_ok "Updated $APP to ${RELEASE}"
|
||||||
|
|||||||
+2
-4
@@ -56,7 +56,7 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
if [[ ! -d /opt/pingvin-share ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -d /opt/pingvin-share ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
msg_info "Stopping Pingvin Share"
|
msg_info "Stopping Pingvin Share"
|
||||||
systemctl stop pm2-root.service
|
pm2 stop pingvin-share-backend pingvin-share-frontend &>/dev/null
|
||||||
msg_ok "Stopped Pingvin Share"
|
msg_ok "Stopped Pingvin Share"
|
||||||
|
|
||||||
msg_info "Updating Pingvin Share"
|
msg_info "Updating Pingvin Share"
|
||||||
@@ -64,15 +64,13 @@ cd /opt/pingvin-share
|
|||||||
git fetch --tags
|
git fetch --tags
|
||||||
git checkout $(git describe --tags `git rev-list --tags --max-count=1`) &>/dev/null
|
git checkout $(git describe --tags `git rev-list --tags --max-count=1`) &>/dev/null
|
||||||
cd backend
|
cd backend
|
||||||
npm install &>/dev/null
|
|
||||||
npm run build &>/dev/null
|
npm run build &>/dev/null
|
||||||
cd ../frontend
|
cd ../frontend
|
||||||
npm install &>/dev/null
|
|
||||||
npm run build &>/dev/null
|
npm run build &>/dev/null
|
||||||
msg_ok "Updated Pingvin Share"
|
msg_ok "Updated Pingvin Share"
|
||||||
|
|
||||||
msg_info "Starting Pingvin Share"
|
msg_info "Starting Pingvin Share"
|
||||||
systemctl start pm2-root.service
|
pm2 start pingvin-share-backend pingvin-share-frontend &>/dev/null
|
||||||
msg_ok "Started Pingvin Share"
|
msg_ok "Started Pingvin Share"
|
||||||
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
|
|||||||
+1
-1
@@ -29,7 +29,7 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function default_settings() {
|
function default_settings() {
|
||||||
CT_TYPE="0"
|
CT_TYPE="1"
|
||||||
PW=""
|
PW=""
|
||||||
CT_ID=$NEXTID
|
CT_ID=$NEXTID
|
||||||
HN=$NSAPP
|
HN=$NSAPP
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ if [ "$UPD" == "3" ]; then
|
|||||||
curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash &>/dev/null
|
curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash &>/dev/null
|
||||||
filebrowser config init -a '0.0.0.0' &>/dev/null
|
filebrowser config init -a '0.0.0.0' &>/dev/null
|
||||||
filebrowser config set -a '0.0.0.0' &>/dev/null
|
filebrowser config set -a '0.0.0.0' &>/dev/null
|
||||||
filebrowser users add admin helper-scripts.com --perm.admin &>/dev/null
|
filebrowser users add admin changeme --perm.admin &>/dev/null
|
||||||
msg_ok "Installed FileBrowser"
|
msg_ok "Installed FileBrowser"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
@@ -122,7 +122,7 @@ if [ "$UPD" == "3" ]; then
|
|||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "FileBrowser should be reachable by going to the following URL.
|
echo -e "FileBrowser should be reachable by going to the following URL.
|
||||||
${BL}http://$IP:8080${CL} admin|helper-scripts.com\n"
|
${BL}http://$IP:8080${CL} admin|changeme\n"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if [ "$UPD" == "4" ]; then
|
if [ "$UPD" == "4" ]; then
|
||||||
|
|||||||
+1
-23
@@ -55,29 +55,7 @@ function default_settings() {
|
|||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
if [[ ! -f /etc/systemd/system/prometheus.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -f /etc/systemd/system/prometheus.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/prometheus/prometheus/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
msg_error "There is currently no update path available."
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
|
||||||
msg_info "Stopping ${APP}"
|
|
||||||
systemctl stop prometheus
|
|
||||||
msg_ok "Stopped ${APP}"
|
|
||||||
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
|
||||||
wget -q https://github.com/prometheus/prometheus/releases/download/v${RELEASE}/prometheus-${RELEASE}.linux-amd64.tar.gz
|
|
||||||
tar -xf prometheus-${RELEASE}.linux-amd64.tar.gz
|
|
||||||
cd prometheus-${RELEASE}.linux-amd64
|
|
||||||
cp -rf prometheus promtool /usr/local/bin/
|
|
||||||
cd ~
|
|
||||||
rm -rf prometheus-${RELEASE}.linux-amd64 prometheus-${RELEASE}.linux-amd64.tar.gz
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
|
||||||
systemctl start prometheus
|
|
||||||
msg_ok "Started ${APP}"
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
|
||||||
fi
|
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-1
@@ -55,7 +55,10 @@ function default_settings() {
|
|||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
if [[ ! -d /var/lib/radarr/ ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -d /var/lib/radarr/ ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
msg_error "There is currently no update path available."
|
msg_info "Updating $APP LXC"
|
||||||
|
apt-get update &>/dev/null
|
||||||
|
apt-get -y upgrade &>/dev/null
|
||||||
|
msg_ok "Updated $APP LXC"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+9
-14
@@ -55,21 +55,16 @@ function default_settings() {
|
|||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
if [[ ! -d /opt/sabnzbd ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -d /opt/sabnzbd ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
|
msg_info "Updating $APP"
|
||||||
|
systemctl stop sabnzbd.service
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/sabnzbd/sabnzbd/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
RELEASE=$(curl -s https://api.github.com/repos/sabnzbd/sabnzbd/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
tar zxvf <(curl -fsSL https://github.com/sabnzbd/sabnzbd/releases/download/$RELEASE/SABnzbd-${RELEASE}-src.tar.gz) &>/dev/null
|
||||||
msg_info "Updating $APP to ${RELEASE}"
|
\cp -r SABnzbd-${RELEASE}/* /opt/sabnzbd &>/dev/null
|
||||||
systemctl stop sabnzbd.service
|
rm -rf SABnzbd-${RELEASE}
|
||||||
tar zxvf <(curl -fsSL https://github.com/sabnzbd/sabnzbd/releases/download/$RELEASE/SABnzbd-${RELEASE}-src.tar.gz) &>/dev/null
|
cd /opt/sabnzbd
|
||||||
\cp -r SABnzbd-${RELEASE}/* /opt/sabnzbd &>/dev/null
|
python3 -m pip install -r requirements.txt &>/dev/null
|
||||||
rm -rf SABnzbd-${RELEASE}
|
systemctl start sabnzbd.service
|
||||||
cd /opt/sabnzbd
|
msg_ok "Updated $APP"
|
||||||
python3 -m pip install -r requirements.txt &>/dev/null
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
systemctl start sabnzbd.service
|
|
||||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
|
||||||
else
|
|
||||||
msg_info "No update required. ${APP} is already at ${RELEASE}"
|
|
||||||
fi
|
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -30,7 +30,7 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function default_settings() {
|
function default_settings() {
|
||||||
CT_TYPE="0"
|
CT_TYPE="1"
|
||||||
PW=""
|
PW=""
|
||||||
CT_ID=$NEXTID
|
CT_ID=$NEXTID
|
||||||
HN=$NSAPP
|
HN=$NSAPP
|
||||||
|
|||||||
+1
-1
@@ -74,7 +74,7 @@ if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_v
|
|||||||
unzip -q spoolman.zip -d spoolman
|
unzip -q spoolman.zip -d spoolman
|
||||||
cd spoolman
|
cd spoolman
|
||||||
pip3 install -r requirements.txt >/dev/null 2>&1
|
pip3 install -r requirements.txt >/dev/null 2>&1
|
||||||
wget -q https://raw.githubusercontent.com/Donkie/Spoolman/master/.env.example -O .env
|
cp .env.example .env
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
msg_ok "Updated ${APP} to ${RELEASE}"
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -29,7 +29,7 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function default_settings() {
|
function default_settings() {
|
||||||
CT_TYPE="0"
|
CT_TYPE="1"
|
||||||
PW=""
|
PW=""
|
||||||
CT_ID=$NEXTID
|
CT_ID=$NEXTID
|
||||||
HN=$NSAPP
|
HN=$NSAPP
|
||||||
|
|||||||
-115
@@ -1,115 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2024 tteck
|
|
||||||
# Author: tteck
|
|
||||||
# Co-Author: MickLesk (Canbiz)
|
|
||||||
# License: MIT
|
|
||||||
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
|
||||||
|
|
||||||
function header_info {
|
|
||||||
clear
|
|
||||||
cat <<"EOF"
|
|
||||||
_______ _ _
|
|
||||||
/_ __(_)___ _____ (_|_)
|
|
||||||
/ / / / __ `/ __ \ / / /
|
|
||||||
/ / / / /_/ / / / / / / /
|
|
||||||
/_/ /_/\__,_/_/ /_/_/ /_/
|
|
||||||
/___/
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
header_info
|
|
||||||
echo -e "Loading..."
|
|
||||||
APP="Tianji"
|
|
||||||
var_disk="12"
|
|
||||||
var_cpu="4"
|
|
||||||
var_ram="4096"
|
|
||||||
var_os="debian"
|
|
||||||
var_version="12"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
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() {
|
|
||||||
header_info
|
|
||||||
if [[ ! -d /opt/tianji ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
|
||||||
if (( $(df /boot | awk 'NR==2{gsub("%","",$5); print $5}') > 80 )); then
|
|
||||||
read -r -p "Warning: Storage is dangerously low, continue anyway? <y/N> " prompt
|
|
||||||
[[ ${prompt,,} =~ ^(y|yes)$ ]] || exit
|
|
||||||
fi
|
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/msgbyte/tianji/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
|
|
||||||
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "SET RESOURCES" "Please set the resources in your ${APP} LXC to ${var_cpu}vCPU and ${var_ram}RAM for the build process before continuing" 10 75
|
|
||||||
msg_info "Stopping ${APP} Service"
|
|
||||||
systemctl stop tianji
|
|
||||||
msg_ok "Stopped ${APP} Service"
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
|
||||||
cd /opt
|
|
||||||
cp /opt/tianji/src/server/.env /opt/.env
|
|
||||||
mv /opt/tianji /opt/tianji_bak
|
|
||||||
wget -q "https://github.com/msgbyte/tianji/archive/refs/tags/v${RELEASE}.zip"
|
|
||||||
unzip -q v${RELEASE}.zip
|
|
||||||
mv tianji-${RELEASE} /opt/tianji
|
|
||||||
cd tianji
|
|
||||||
pnpm install --filter @tianji/client... --config.dedupe-peer-dependents=false --frozen-lockfile >/dev/null 2>&1
|
|
||||||
pnpm build:static >/dev/null 2>&1
|
|
||||||
pnpm install --filter @tianji/server... --config.dedupe-peer-dependents=false >/dev/null 2>&1
|
|
||||||
mkdir -p ./src/server/public >/dev/null 2>&1
|
|
||||||
cp -r ./geo ./src/server/public >/dev/null 2>&1
|
|
||||||
pnpm build:server >/dev/null 2>&1
|
|
||||||
mv /opt/.env /opt/tianji/src/server/.env
|
|
||||||
cd src/server
|
|
||||||
pnpm db:migrate:apply >/dev/null 2>&1
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
|
||||||
msg_info "Starting ${APP}"
|
|
||||||
systemctl start tianji
|
|
||||||
msg_ok "Started ${APP}"
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -R /opt/v${RELEASE}.zip
|
|
||||||
rm -rf /opt/tianji_bak
|
|
||||||
rm -rf /opt/tianji/src/client
|
|
||||||
rm -rf /opt/tianji/website
|
|
||||||
rm -rf /opt/tianji/reporter
|
|
||||||
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_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"
|
|
||||||
echo -e "${APP} Setup should be reachable by going to the following URL.
|
|
||||||
${BL}http://${IP}:12345${CL} \n"
|
|
||||||
+1
-2
@@ -55,14 +55,13 @@ function default_settings() {
|
|||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
if [[ ! -f /etc/systemd/system/traefik.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -f /etc/systemd/system/traefik.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/traefik/traefik/releases | grep -oP '"tag_name":\s*"v\K[\d.]+?(?=")' | sort -V | tail -n 1)
|
RELEASE=$(curl -s https://api.github.com/repos/traefik/traefik/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
msg_info "Updating $APP LXC"
|
msg_info "Updating $APP LXC"
|
||||||
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
||||||
wget -q https://github.com/traefik/traefik/releases/download/v${RELEASE}/traefik_v${RELEASE}_linux_arm64.tar.gz
|
wget -q https://github.com/traefik/traefik/releases/download/v${RELEASE}/traefik_v${RELEASE}_linux_arm64.tar.gz
|
||||||
tar -C /tmp -xzf traefik*.tar.gz
|
tar -C /tmp -xzf traefik*.tar.gz
|
||||||
mv /tmp/traefik /usr/bin/
|
mv /tmp/traefik /usr/bin/
|
||||||
rm -rf traefik*.tar.gz
|
rm -rf traefik*.tar.gz
|
||||||
systemctl restart traefik.service
|
|
||||||
msg_ok "Updated $APP LXC"
|
msg_ok "Updated $APP LXC"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
|||||||
+10
-8
@@ -1,11 +1,11 @@
|
|||||||
#!/usr/bin/env bash
|
# #!/usr/bin/env bash
|
||||||
# source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
|
# source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
|
||||||
# # Copyright (c) 2021-2024 tteck
|
# # Copyright (c) 2021-2024 tteck
|
||||||
# # Author: tteck (tteckster)
|
# # Author: tteck (tteckster)
|
||||||
# # License: MIT
|
# # License: MIT
|
||||||
# # https://github.com/tteck/Proxmox/raw/main/LICENSE
|
# # https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||||
|
|
||||||
echo "Unsupported."
|
echo "Unsupported. View notes on GitHub."
|
||||||
|
|
||||||
# function header_info {
|
# function header_info {
|
||||||
# clear
|
# clear
|
||||||
@@ -57,21 +57,23 @@ echo "Unsupported."
|
|||||||
# function update_script() {
|
# function update_script() {
|
||||||
# header_info
|
# header_info
|
||||||
# if [[ ! -d /opt/trilium ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
# if [[ ! -d /opt/trilium ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
# RELEASE=$(curl -s https://api.github.com/repos/TriliumNext/Notes/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
# RELEASE=$(curl -s https://api.github.com/repos/zadam/trilium/releases/latest |
|
||||||
|
# grep "tag_name" |
|
||||||
|
# awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
|
||||||
# msg_info "Stopping ${APP}"
|
# msg_info "Stopping ${APP}"
|
||||||
# systemctl stop trilium.service
|
# systemctl stop trilium.service
|
||||||
# sleep 1
|
# sleep 1
|
||||||
# msg_ok "Stopped ${APP}"
|
# msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
# msg_info "Updating to ${RELEASE}"
|
# msg_info "Updating to v${RELEASE}"
|
||||||
# wget -q https://github.com/TriliumNext/Notes/releases/download/${RELEASE}/TriliumNextNotes-${RELEASE}-server-linux-x64.tar.xz
|
# wget -q https://github.com/zadam/trilium/releases/download/v$RELEASE/trilium-linux-x64-server-$RELEASE.tar.xz
|
||||||
# tar -xf TriliumNextNotes-${RELEASE}-server-linux-x64.tar.xz
|
# tar -xvf trilium-linux-x64-server-$RELEASE.tar.xz &>/dev/null
|
||||||
# cp -r trilium-linux-x64-server/* /opt/trilium/
|
# cp -r trilium-linux-x64-server/* /opt/trilium/
|
||||||
# msg_ok "Updated to ${RELEASE}"
|
# msg_ok "Updated to v${RELEASE}"
|
||||||
|
|
||||||
# msg_info "Cleaning up"
|
# msg_info "Cleaning up"
|
||||||
# rm -rf TriliumNextNotes-${RELEASE}-server-linux-x64.tar.xz trilium-linux-x64-server
|
# rm -rf trilium-linux-x64-server-$RELEASE.tar.xz trilium-linux-x64-server
|
||||||
# msg_ok "Cleaned"
|
# msg_ok "Cleaned"
|
||||||
|
|
||||||
# msg_info "Starting ${APP}"
|
# msg_info "Starting ${APP}"
|
||||||
|
|||||||
@@ -55,7 +55,6 @@ function default_settings() {
|
|||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
if [[ ! -d /opt/umami ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -d /opt/umami ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "SET RESOURCES" "Please set the resources in your ${APP} LXC to ${var_cpu}vCPU and ${var_ram}RAM for the build process before continuing" 10 75
|
|
||||||
if (( $(df /boot | awk 'NR==2{gsub("%","",$5); print $5}') > 80 )); then
|
if (( $(df /boot | awk 'NR==2{gsub("%","",$5); print $5}') > 80 )); then
|
||||||
read -r -p "Warning: Storage is dangerously low, continue anyway? <y/N> " prompt
|
read -r -p "Warning: Storage is dangerously low, continue anyway? <y/N> " prompt
|
||||||
[[ ${prompt,,} =~ ^(y|yes)$ ]] || exit
|
[[ ${prompt,,} =~ ^(y|yes)$ ]] || exit
|
||||||
|
|||||||
@@ -17,10 +17,6 @@ cat <<"EOF"
|
|||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
header_info
|
header_info
|
||||||
if ! grep -q -m1 'avx[^ ]*' /proc/cpuinfo; then
|
|
||||||
echo "AVX instruction set is not supported on this CPU."
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
echo -e "Loading..."
|
echo -e "Loading..."
|
||||||
APP="Unifi"
|
APP="Unifi"
|
||||||
var_disk="8"
|
var_disk="8"
|
||||||
|
|||||||
+1
-5
@@ -57,7 +57,6 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
VAULT=$(curl -s https://api.github.com/repos/dani-garcia/vaultwarden/releases/latest |
|
VAULT=$(curl -s https://api.github.com/repos/dani-garcia/vaultwarden/releases/latest |
|
||||||
grep "tag_name" |
|
grep "tag_name" |
|
||||||
awk '{print substr($2, 2, length($2)-3) }')
|
awk '{print substr($2, 2, length($2)-3) }')
|
||||||
@@ -73,7 +72,7 @@ function update_script() {
|
|||||||
|
|
||||||
header_info
|
header_info
|
||||||
if [ "$UPD" == "1" ]; then
|
if [ "$UPD" == "1" ]; then
|
||||||
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "SET RESOURCES" "Please set the resources in your ${APP} LXC to ${var_cpu}vCPU and ${var_ram}RAM for the build process before continuing" 10 75
|
echo -e "\n ⚠️ Ensure you set 4vCPU & 4096MiB RAM minimum!!! \n"
|
||||||
msg_info "Stopping Vaultwarden"
|
msg_info "Stopping Vaultwarden"
|
||||||
systemctl stop vaultwarden.service
|
systemctl stop vaultwarden.service
|
||||||
msg_ok "Stopped Vaultwarden"
|
msg_ok "Stopped Vaultwarden"
|
||||||
@@ -129,9 +128,6 @@ function update_script() {
|
|||||||
if ! command -v argon2 >/dev/null 2>&1; then apt-get install -y argon2 &>/dev/null; fi
|
if ! command -v argon2 >/dev/null 2>&1; then apt-get install -y argon2 &>/dev/null; fi
|
||||||
TOKEN=$(echo -n ${NEWTOKEN} | argon2 "$(openssl rand -base64 32)" -t 2 -m 16 -p 4 -l 64 -e)
|
TOKEN=$(echo -n ${NEWTOKEN} | argon2 "$(openssl rand -base64 32)" -t 2 -m 16 -p 4 -l 64 -e)
|
||||||
sed -i "s|ADMIN_TOKEN=.*|ADMIN_TOKEN='${TOKEN}'|" /opt/vaultwarden/.env
|
sed -i "s|ADMIN_TOKEN=.*|ADMIN_TOKEN='${TOKEN}'|" /opt/vaultwarden/.env
|
||||||
if [[ -f /opt/vaultwarden/data/config.json ]]; then
|
|
||||||
sed -i "s|\"admin_token\":.*|\"admin_token\": \"${TOKEN}\"|" /opt/vaultwarden/data/config.json
|
|
||||||
fi
|
|
||||||
systemctl restart vaultwarden
|
systemctl restart vaultwarden
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
|
|||||||
@@ -1,99 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2024 tteck
|
|
||||||
# Author: tteck
|
|
||||||
# Co-Author: MickLesk (Canbiz)
|
|
||||||
# License: MIT
|
|
||||||
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
|
||||||
|
|
||||||
function header_info {
|
|
||||||
clear
|
|
||||||
cat <<"EOF"
|
|
||||||
_ __ ____
|
|
||||||
| | / /___ _/ / /___ _____
|
|
||||||
| | /| / / __ `/ / / __ \/ ___/
|
|
||||||
| |/ |/ / /_/ / / / /_/ (__ )
|
|
||||||
|__/|__/\__,_/_/_/\____/____/
|
|
||||||
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
header_info
|
|
||||||
echo -e "Loading..."
|
|
||||||
APP="Wallos"
|
|
||||||
var_disk="5"
|
|
||||||
var_cpu="1"
|
|
||||||
var_ram="1024"
|
|
||||||
var_os="debian"
|
|
||||||
var_version="12"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
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() {
|
|
||||||
header_info
|
|
||||||
if [[ ! -d /opt/wallos ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
|
||||||
if (( $(df /boot | awk 'NR==2{gsub("%","",$5); print $5}') > 80 )); then
|
|
||||||
read -r -p "Warning: Storage is dangerously low, continue anyway? <y/N> " prompt
|
|
||||||
[[ ${prompt,,} =~ ^(y|yes)$ ]] || exit
|
|
||||||
fi
|
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/ellite/Wallos/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}"
|
|
||||||
cd /opt
|
|
||||||
wget -q "https://github.com/ellite/Wallos/archive/refs/tags/v${RELEASE}.zip"
|
|
||||||
mv /opt/wallos/db/wallos.db /opt/wallos.db
|
|
||||||
unzip -q v${RELEASE}.zip
|
|
||||||
mv Wallos-${RELEASE} /opt/wallos
|
|
||||||
rm -rf /opt/wallos/db/wallos.empty.db
|
|
||||||
mv /opt/wallos.db /opt/wallos/db/wallos.db
|
|
||||||
chown -R www-data:www-data /opt/wallos
|
|
||||||
chmod -R 755 /opt/wallos
|
|
||||||
curl http://localhost/endpoints/db/migrate.php &>/dev/null
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated ${APP}"
|
|
||||||
|
|
||||||
msg_info "Reload Apache2"
|
|
||||||
systemctl reload apache2
|
|
||||||
msg_ok "Apache2 Reloaded"
|
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -R /opt/v${RELEASE}.zip
|
|
||||||
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 "${APP} should be reachable by going to the following URL.
|
|
||||||
${BL}http://${IP} ${CL} \n"
|
|
||||||
+38
-26
@@ -23,8 +23,8 @@ header_info
|
|||||||
echo -e "Loading..."
|
echo -e "Loading..."
|
||||||
APP="Wastebin"
|
APP="Wastebin"
|
||||||
var_disk="4"
|
var_disk="4"
|
||||||
var_cpu="1"
|
var_cpu="4"
|
||||||
var_ram="1024"
|
var_ram="2048"
|
||||||
var_os="debian"
|
var_os="debian"
|
||||||
var_version="12"
|
var_version="12"
|
||||||
variables
|
variables
|
||||||
@@ -58,31 +58,39 @@ function default_settings() {
|
|||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
if [[ ! -d /opt/wastebin ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -d /opt/wastebin ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/matze/wastebin/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
if (( $(df /boot | awk 'NR==2{gsub("%","",$5); print $5}') > 80 )); then
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
read -r -p "Warning: Storage is dangerously low, continue anyway? <y/N> " prompt
|
||||||
msg_info "Stopping Wastebin"
|
[[ ${prompt,,} =~ ^(y|yes)$ ]] || exit
|
||||||
systemctl stop wastebin
|
|
||||||
msg_ok "Wastebin Stopped"
|
|
||||||
|
|
||||||
msg_info "Updating Wastebin"
|
|
||||||
wget -q https://github.com/matze/wastebin/releases/download/${RELEASE}/wastebin_${RELEASE}_x86_64-unknown-linux-musl.tar.zst
|
|
||||||
tar -xf wastebin_${RELEASE}_x86_64-unknown-linux-musl.tar.zst
|
|
||||||
cp -f wastebin /opt/wastebin/
|
|
||||||
chmod +x /opt/wastebin/wastebin
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated Wastebin"
|
|
||||||
|
|
||||||
msg_info "Starting Wastebin"
|
|
||||||
systemctl start wastebin
|
|
||||||
msg_ok "Started Wastebin"
|
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -rf wastebin_${RELEASE}_x86_64-unknown-linux-musl.tar.zst
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
|
||||||
fi
|
fi
|
||||||
|
msg_info "Stopping Wastebin"
|
||||||
|
systemctl stop wastebin
|
||||||
|
msg_ok "Wastebin Stopped"
|
||||||
|
|
||||||
|
msg_info "Updating Wastebin"
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/matze/wastebin/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
|
cd /opt
|
||||||
|
if [ -d wastebin_bak ]; then
|
||||||
|
rm -rf wastebin_bak
|
||||||
|
fi
|
||||||
|
mv wastebin wastebin_bak
|
||||||
|
wget -q "https://github.com/matze/wastebin/archive/refs/tags/${RELEASE}.zip"
|
||||||
|
unzip -q ${RELEASE}.zip
|
||||||
|
mv wastebin-${RELEASE} /opt/wastebin
|
||||||
|
cd /opt/wastebin
|
||||||
|
cargo update -q
|
||||||
|
cargo build -q --release
|
||||||
|
msg_ok "Updated Wastebin"
|
||||||
|
|
||||||
|
msg_info "Starting Wastebin"
|
||||||
|
systemctl start wastebin
|
||||||
|
msg_ok "Started Wastebin"
|
||||||
|
|
||||||
|
msg_info "Cleaning Up"
|
||||||
|
cd /opt
|
||||||
|
rm -R ${RELEASE}.zip
|
||||||
|
rm -R wastebin_bak
|
||||||
|
msg_ok "Cleaned"
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -90,6 +98,10 @@ start
|
|||||||
build_container
|
build_container
|
||||||
description
|
description
|
||||||
|
|
||||||
|
msg_info "Setting Container to Normal Resources"
|
||||||
|
pct set $CTID -cores 2
|
||||||
|
msg_ok "Set Container to Normal Resources"
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${APP} Setup should be reachable by going to the following URL.
|
echo -e "${APP} Setup should be reachable by going to the following URL.
|
||||||
${BL}http://${IP}:8088${CL} \n"
|
${BL}http://${IP}:8088${CL} \n"
|
||||||
|
|||||||
@@ -57,7 +57,6 @@ header_info
|
|||||||
if [[ ! -f /usr/local/bin/whoogle-search ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -f /usr/local/bin/whoogle-search ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
msg_info "Updating ${APP} LXC"
|
msg_info "Updating ${APP} LXC"
|
||||||
pip3 install whoogle-search --upgrade &>/dev/null
|
pip3 install whoogle-search --upgrade &>/dev/null
|
||||||
systemctl restart whoogle.service
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|||||||
+67
-11
@@ -19,11 +19,11 @@ EOF
|
|||||||
header_info
|
header_info
|
||||||
echo -e "Loading..."
|
echo -e "Loading..."
|
||||||
APP="Wireguard"
|
APP="Wireguard"
|
||||||
var_disk="4"
|
var_disk="2"
|
||||||
var_cpu="1"
|
var_cpu="1"
|
||||||
var_ram="512"
|
var_ram="512"
|
||||||
var_os="debian"
|
var_os="ubuntu"
|
||||||
var_version="12"
|
var_version="20.04"
|
||||||
variables
|
variables
|
||||||
color
|
color
|
||||||
catch_errors
|
catch_errors
|
||||||
@@ -53,13 +53,71 @@ function default_settings() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
if [[ ! -d /etc/wireguard ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -d /etc/pivpn/wireguard ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
apt-get update
|
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 2 \
|
||||||
apt-get -y upgrade
|
"1" "Update ${APP} LXC" ON \
|
||||||
sleep 2
|
"2" "Install WGDashboard" OFF \
|
||||||
cd /etc/wgdashboard/src
|
3>&1 1>&2 2>&3)
|
||||||
./wgd.sh update
|
header_info
|
||||||
|
if [ "$UPD" == "1" ]; then
|
||||||
|
msg_info "Updating ${APP} LXC"
|
||||||
|
apt-get update &>/dev/null
|
||||||
|
apt-get -y upgrade &>/dev/null
|
||||||
|
msg_ok "Updated ${APP} LXC"
|
||||||
exit
|
exit
|
||||||
|
fi
|
||||||
|
if [ "$UPD" == "2" ]; then
|
||||||
|
if [[ -f /etc/systemd/system/wg-dashboard.service ]]; then
|
||||||
|
cd /etc/wgdashboard/src
|
||||||
|
chmod u+x wgd.sh
|
||||||
|
./wgd.sh update
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
IP=$(hostname -I | awk '{print $1}')
|
||||||
|
msg_info "Installing Python3-pip"
|
||||||
|
apt-get install -y python3-pip &>/dev/null
|
||||||
|
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||||
|
pip install flask &>/dev/null
|
||||||
|
pip install ifcfg &>/dev/null
|
||||||
|
pip install flask_qrcode &>/dev/null
|
||||||
|
pip install icmplib &>/dev/null
|
||||||
|
msg_ok "Installed Python3-pip"
|
||||||
|
|
||||||
|
msg_info "Installing WGDashboard"
|
||||||
|
WGDREL=$(curl -s https://api.github.com/repos/donaldzou/WGDashboard/releases/latest |
|
||||||
|
grep "tag_name" |
|
||||||
|
awk '{print substr($2, 2, length($2)-3) }')
|
||||||
|
|
||||||
|
git clone -b ${WGDREL} https://github.com/donaldzou/WGDashboard.git /etc/wgdashboard &>/dev/null
|
||||||
|
cd /etc/wgdashboard/src
|
||||||
|
chmod u+x wgd.sh
|
||||||
|
./wgd.sh install &>/dev/null
|
||||||
|
chmod -R 755 /etc/wireguard
|
||||||
|
msg_ok "Installed WGDashboard"
|
||||||
|
|
||||||
|
msg_info "Creating Service"
|
||||||
|
service_path="/etc/systemd/system/wg-dashboard.service"
|
||||||
|
echo "[Unit]
|
||||||
|
After=systemd-networkd.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
WorkingDirectory=/etc/wgdashboard/src
|
||||||
|
ExecStart=/usr/bin/python3 /etc/wgdashboard/src/dashboard.py
|
||||||
|
Restart=always
|
||||||
|
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=default.target" >$service_path
|
||||||
|
chmod 664 /etc/systemd/system/wg-dashboard.service
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl enable wg-dashboard.service &>/dev/null
|
||||||
|
systemctl start wg-dashboard.service &>/dev/null
|
||||||
|
msg_ok "Created Service"
|
||||||
|
echo -e "WGDashboard should be reachable by going to the following URL.
|
||||||
|
${BL}http://${IP}:10086${CL} admin|admin \n"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
@@ -67,5 +125,3 @@ build_container
|
|||||||
description
|
description
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "WGDashboard should be reachable by going to the following URL.
|
|
||||||
${BL}http://${IP}:10086${CL} admin|admin \n"
|
|
||||||
|
|||||||
@@ -58,7 +58,6 @@ if [[ ! -f /etc/zabbix/zabbix_server.conf ]]; then msg_error "No ${APP} Installa
|
|||||||
msg_info "Updating $APP LXC"
|
msg_info "Updating $APP LXC"
|
||||||
apt-get update &>/dev/null
|
apt-get update &>/dev/null
|
||||||
apt-get -y upgrade &>/dev/null
|
apt-get -y upgrade &>/dev/null
|
||||||
systemctl restart zabbix-server
|
|
||||||
msg_ok "Updated $APP LXC"
|
msg_ok "Updated $APP LXC"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|||||||
-101
@@ -1,101 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2024 tteck
|
|
||||||
# Author: tteck
|
|
||||||
# Co-Author: MickLesk (Canbiz)
|
|
||||||
# License: MIT
|
|
||||||
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
|
||||||
|
|
||||||
function header_info {
|
|
||||||
clear
|
|
||||||
cat <<"EOF"
|
|
||||||
_____ _ ___
|
|
||||||
/__ / (_)___ / (_)___ ___
|
|
||||||
/ / / / __ \/ / / __ \/ _ \
|
|
||||||
/ /__/ / /_/ / / / / / / __/
|
|
||||||
/____/_/ .___/_/_/_/ /_/\___/
|
|
||||||
/_/
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
header_info
|
|
||||||
echo -e "Loading..."
|
|
||||||
APP="Zipline"
|
|
||||||
var_disk="5"
|
|
||||||
var_cpu="2"
|
|
||||||
var_ram="2048"
|
|
||||||
var_os="debian"
|
|
||||||
var_version="12"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
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() {
|
|
||||||
header_info
|
|
||||||
if [[ ! -d /opt/zipline ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
|
||||||
if (( $(df /boot | awk 'NR==2{gsub("%","",$5); print $5}') > 80 )); then
|
|
||||||
read -r -p "Warning: Storage is dangerously low, continue anyway? <y/N> " prompt
|
|
||||||
[[ ${prompt,,} =~ ^(y|yes)$ ]] || exit
|
|
||||||
fi
|
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/diced/zipline/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 zipline
|
|
||||||
msg_ok "${APP} Stopped"
|
|
||||||
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
|
||||||
cp /opt/zipline/.env /opt/
|
|
||||||
rm -R /opt/zipline
|
|
||||||
wget -q "https://github.com/diced/zipline/archive/refs/tags/v${RELEASE}.zip"
|
|
||||||
unzip -q v${RELEASE}.zip
|
|
||||||
mv zipline-${RELEASE} /opt/zipline
|
|
||||||
cd /opt/zipline
|
|
||||||
mv /opt/.env /opt/zipline/.env
|
|
||||||
yarn install &>/dev/null
|
|
||||||
yarn build &>/dev/null
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated ${APP}"
|
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
|
||||||
systemctl start zipline
|
|
||||||
msg_ok "Started ${APP}"
|
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -rf v${RELEASE}.zip
|
|
||||||
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 "${APP} Setup should be reachable by going to the following URL.
|
|
||||||
${BL}http://${IP}:3000${CL} \n"
|
|
||||||
+17
-16
@@ -20,7 +20,7 @@ header_info
|
|||||||
echo -e "Loading..."
|
echo -e "Loading..."
|
||||||
APP="Zoraxy"
|
APP="Zoraxy"
|
||||||
var_disk="6"
|
var_disk="6"
|
||||||
var_cpu="2"
|
var_cpu="4"
|
||||||
var_ram="2048"
|
var_ram="2048"
|
||||||
var_os="debian"
|
var_os="debian"
|
||||||
var_version="12"
|
var_version="12"
|
||||||
@@ -54,28 +54,29 @@ function default_settings() {
|
|||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
if [[ ! -d /opt/zoraxy/ ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -d /opt/zoraxy/src ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/tobychui/zoraxy/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
msg_info "Updating $APP"
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
systemctl stop zoraxy
|
||||||
msg_info "Updating $APP to ${RELEASE}"
|
cd /opt/zoraxy/src
|
||||||
systemctl stop zoraxy
|
systemctl stop zoraxy
|
||||||
wget -q "https://github.com/tobychui/zoraxy/releases/download/${RELEASE}/zoraxy_linux_amd64"
|
if git pull | grep -q 'Already up to date.'; then
|
||||||
rm /opt/zoraxy/zoraxy
|
msg_ok "Already up to date. No update required."
|
||||||
mv zoraxy_linux_amd64 /opt/zoraxy/zoraxy
|
|
||||||
chmod +x /opt/zoraxy/zoraxy
|
|
||||||
systemctl start zoraxy
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated $APP"
|
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
go mod tidy
|
||||||
fi
|
go build
|
||||||
exit
|
msg_ok "Updated $APP"
|
||||||
|
fi
|
||||||
|
systemctl start zoraxy
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
build_container
|
build_container
|
||||||
description
|
description
|
||||||
|
|
||||||
|
msg_info "Setting Container to Normal Resources"
|
||||||
|
pct set $CTID -cores 2
|
||||||
|
msg_ok "Set Container to Normal Resources"
|
||||||
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}http://${IP}:8000${CL} \n"
|
${BL}http://${IP}:8000${CL} \n"
|
||||||
|
|||||||
@@ -1,125 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: jkrgr0
|
|
||||||
# License: MIT
|
|
||||||
# Source: https://docs.2fauth.app/
|
|
||||||
|
|
||||||
# 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 \
|
|
||||||
nginx \
|
|
||||||
composer \
|
|
||||||
php8.2-{bcmath,common,ctype,curl,fileinfo,fpm,gd,mbstring,mysql,xml,cli} \
|
|
||||||
mariadb-server \
|
|
||||||
wget \
|
|
||||||
openssh-server
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
# Template: MySQL Database
|
|
||||||
msg_info "Setting up Database"
|
|
||||||
DB_NAME=2fauth_db
|
|
||||||
DB_USER=2fauth
|
|
||||||
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 "2FAuth Credentials"
|
|
||||||
echo "Database User: $DB_USER"
|
|
||||||
echo "Database Password: $DB_PASS"
|
|
||||||
echo "Database Name: $DB_NAME"
|
|
||||||
} >> ~/2FAuth.creds
|
|
||||||
msg_ok "Set up Database"
|
|
||||||
|
|
||||||
# Setup App
|
|
||||||
msg_info "Setup 2FAuth"
|
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/Bubka/2FAuth/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
|
||||||
wget -q "https://github.com/Bubka/2FAuth/archive/refs/tags/${RELEASE}.zip"
|
|
||||||
unzip -q "${RELEASE}.zip"
|
|
||||||
mv "2FAuth-${RELEASE//v}/" /opt/2fauth
|
|
||||||
|
|
||||||
cd "/opt/2fauth" || return
|
|
||||||
cp .env.example .env
|
|
||||||
IPADDRESS=$(hostname -I | awk '{print $1}')
|
|
||||||
|
|
||||||
sed -i -e "s|^APP_URL=.*|APP_URL=http://$IPADDRESS|" \
|
|
||||||
-e "s|^DB_CONNECTION=$|DB_CONNECTION=mysql|" \
|
|
||||||
-e "s|^DB_DATABASE=$|DB_DATABASE=$DB_NAME|" \
|
|
||||||
-e "s|^DB_HOST=$|DB_HOST=127.0.0.1|" \
|
|
||||||
-e "s|^DB_PORT=$|DB_PORT=3306|" \
|
|
||||||
-e "s|^DB_USERNAME=$|DB_USERNAME=$DB_USER|" \
|
|
||||||
-e "s|^DB_PASSWORD=$|DB_PASSWORD=$DB_PASS|" .env
|
|
||||||
|
|
||||||
export COMPOSER_ALLOW_SUPERUSER=1
|
|
||||||
$STD composer update --no-plugins --no-scripts
|
|
||||||
$STD composer install --no-dev --prefer-source --no-plugins --no-scripts
|
|
||||||
|
|
||||||
$STD php artisan key:generate --force
|
|
||||||
|
|
||||||
$STD php artisan migrate:refresh
|
|
||||||
$STD php artisan passport:install -q -n
|
|
||||||
$STD php artisan storage:link
|
|
||||||
$STD php artisan config:cache
|
|
||||||
|
|
||||||
chown -R www-data: /opt/2fauth
|
|
||||||
chmod -R 755 /opt/2fauth
|
|
||||||
|
|
||||||
echo "${RELEASE}" >"/opt/2fauth_version.txt"
|
|
||||||
msg_ok "Setup 2fauth"
|
|
||||||
|
|
||||||
# Configure Service (NGINX)
|
|
||||||
msg_info "Configure Service"
|
|
||||||
cat <<EOF >/etc/nginx/conf.d/2fauth.conf
|
|
||||||
server {
|
|
||||||
listen 80;
|
|
||||||
root /opt/2fauth/public;
|
|
||||||
server_name $IPADDRESS;
|
|
||||||
index index.php;
|
|
||||||
charset utf-8;
|
|
||||||
|
|
||||||
location / {
|
|
||||||
try_files \$uri \$uri/ /index.php?\$query_string;
|
|
||||||
}
|
|
||||||
|
|
||||||
location = /favicon.ico { access_log off; log_not_found off; }
|
|
||||||
location = /robots.txt { access_log off; log_not_found off; }
|
|
||||||
|
|
||||||
error_page 404 /index.php;
|
|
||||||
|
|
||||||
location ~ \.php\$ {
|
|
||||||
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
|
|
||||||
fastcgi_param SCRIPT_FILENAME \$realpath_root\$fastcgi_script_name;
|
|
||||||
include fastcgi_params;
|
|
||||||
}
|
|
||||||
|
|
||||||
location ~ /\.(?!well-known).* {
|
|
||||||
deny all;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
systemctl reload nginx
|
|
||||||
msg_ok "Configured Service"
|
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
|
|
||||||
# Cleanup
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -f "/opt/v${RELEASE}.zip"
|
|
||||||
$STD apt-get -y autoremove
|
|
||||||
$STD apt-get -y autoclean
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
@@ -1,85 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: TheRealVira
|
|
||||||
# License: MIT
|
|
||||||
# Source: https://5e.tools/
|
|
||||||
|
|
||||||
# Import Functions und Setup
|
|
||||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
|
||||||
color
|
|
||||||
verb_ip6
|
|
||||||
catch_errors
|
|
||||||
setting_up_container
|
|
||||||
network_check
|
|
||||||
update_os
|
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
|
||||||
$STD apt-get install -y \
|
|
||||||
curl \
|
|
||||||
mc \
|
|
||||||
sudo \
|
|
||||||
git \
|
|
||||||
gpg \
|
|
||||||
ca-certificates \
|
|
||||||
apache2 \
|
|
||||||
wget \
|
|
||||||
openssh-server
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
msg_info "Setting up Node.js Repository"
|
|
||||||
mkdir -p /etc/apt/keyrings
|
|
||||||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
|
|
||||||
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
|
|
||||||
msg_ok "Set up Node.js Repository"
|
|
||||||
|
|
||||||
msg_info "Installing Node.js"
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get install -y nodejs
|
|
||||||
msg_ok "Installed Node.js"
|
|
||||||
|
|
||||||
# Setup App
|
|
||||||
msg_info "Set up 5etools Base"
|
|
||||||
cd /opt
|
|
||||||
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) }')
|
|
||||||
wget -q "https://github.com/5etools-mirror-3/5etools-src/archive/refs/tags/${RELEASE}.zip"
|
|
||||||
unzip -q "${RELEASE}.zip"
|
|
||||||
mv "5etools-src-${RELEASE:1}" /opt/5etools
|
|
||||||
cd /opt/5etools
|
|
||||||
$STD npm install
|
|
||||||
$STD npm run build
|
|
||||||
echo "${RELEASE}" >"/opt/5etools_version.txt"
|
|
||||||
msg_ok "Set up 5etools Base"
|
|
||||||
|
|
||||||
msg_info "Set up 5etools Image"
|
|
||||||
cd /opt
|
|
||||||
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) }')
|
|
||||||
curl -sSL "https://github.com/5etools-mirror-2/5etools-img/archive/refs/tags/${IMG_RELEASE}.zip" > "${IMG_RELEASE}.zip"
|
|
||||||
unzip -q "${IMG_RELEASE}.zip"
|
|
||||||
mv "5etools-img-${IMG_RELEASE:1}" /opt/5etools/img
|
|
||||||
echo "${IMG_RELEASE}" >"/opt/5etools_IMG_version.txt"
|
|
||||||
msg_ok "Set up 5etools Image"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
|
||||||
cat <<EOF >> /etc/apache2/apache2.conf
|
|
||||||
<Location /server-status>
|
|
||||||
SetHandler server-status
|
|
||||||
Order deny,allow
|
|
||||||
Allow from all
|
|
||||||
</Location>
|
|
||||||
EOF
|
|
||||||
rm -rf /var/www/html
|
|
||||||
ln -s "/opt/5etools" /var/www/html
|
|
||||||
chown -R www-data: "/opt/5etools"
|
|
||||||
chmod -R 755 "/opt/5etools"
|
|
||||||
msg_ok "Created Service"
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -rf /opt/${IMG_RELEASE}.zip
|
|
||||||
rm -rf /opt/${RELEASE}.zip
|
|
||||||
$STD apt-get -y autoremove
|
|
||||||
$STD apt-get -y autoclean
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
@@ -36,13 +36,6 @@ msg_ok "Installed Node.js"
|
|||||||
|
|
||||||
msg_info "Installing Actual Budget"
|
msg_info "Installing Actual Budget"
|
||||||
$STD git clone https://github.com/actualbudget/actual-server.git /opt/actualbudget
|
$STD git clone https://github.com/actualbudget/actual-server.git /opt/actualbudget
|
||||||
mkdir -p /opt/actualbudget/server-files
|
|
||||||
chown -R root:root /opt/actualbudget/server-files
|
|
||||||
chmod 755 /opt/actualbudget/server-files
|
|
||||||
cat <<EOF > /opt/actualbudget/.env
|
|
||||||
ACTUAL_UPLOAD_DIR=/opt/actualbudget/server-files
|
|
||||||
PORT=5006
|
|
||||||
EOF
|
|
||||||
cd /opt/actualbudget
|
cd /opt/actualbudget
|
||||||
$STD yarn install
|
$STD yarn install
|
||||||
msg_ok "Installed Actual Budget"
|
msg_ok "Installed Actual Budget"
|
||||||
@@ -54,14 +47,9 @@ Description=Actual Budget Service
|
|||||||
After=network.target
|
After=network.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=exec
|
||||||
User=root
|
|
||||||
Group=root
|
|
||||||
WorkingDirectory=/opt/actualbudget
|
WorkingDirectory=/opt/actualbudget
|
||||||
EnvironmentFile=/opt/actualbudget/.env
|
|
||||||
ExecStart=/usr/bin/yarn start
|
ExecStart=/usr/bin/yarn start
|
||||||
Restart=always
|
|
||||||
RestartSec=10
|
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
|
|||||||
@@ -1,175 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Copyright (c) 2021-2024 tteck
|
|
||||||
# Author: tteck
|
|
||||||
# Co-Author: MickLesk (Canbiz)
|
|
||||||
# License: MIT
|
|
||||||
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/seanmorley15/AdventureLog
|
|
||||||
|
|
||||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
|
|
||||||
color
|
|
||||||
verb_ip6
|
|
||||||
catch_errors
|
|
||||||
setting_up_container
|
|
||||||
network_check
|
|
||||||
update_os
|
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
|
||||||
$STD apt-get install -y \
|
|
||||||
gpg \
|
|
||||||
curl \
|
|
||||||
sudo \
|
|
||||||
mc \
|
|
||||||
gdal-bin \
|
|
||||||
libgdal-dev \
|
|
||||||
git \
|
|
||||||
python3-venv \
|
|
||||||
python3-pip
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
msg_info "Setting up Node.js Repository"
|
|
||||||
mkdir -p /etc/apt/keyrings
|
|
||||||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
|
|
||||||
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
|
|
||||||
msg_ok "Set up Node.js Repository"
|
|
||||||
|
|
||||||
msg_info "Setting up PostgreSQL Repository"
|
|
||||||
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
|
|
||||||
echo "deb https://apt.postgresql.org/pub/repos/apt bookworm-pgdg main" >/etc/apt/sources.list.d/pgdg.list
|
|
||||||
msg_ok "Set up PostgreSQL Repository"
|
|
||||||
|
|
||||||
msg_info "Installing Node.js"
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get install -y nodejs
|
|
||||||
$STD npm install -g pnpm
|
|
||||||
msg_ok "Installed Node.js"
|
|
||||||
|
|
||||||
msg_info "Install/Set up PostgreSQL Database"
|
|
||||||
$STD apt-get install -y postgresql-16 postgresql-16-postgis
|
|
||||||
DB_NAME="adventurelog_db"
|
|
||||||
DB_USER="adventurelog_user"
|
|
||||||
DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
|
|
||||||
SECRET_KEY="$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)"
|
|
||||||
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
|
|
||||||
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
|
|
||||||
$STD sudo -u postgres psql -c "CREATE EXTENSION IF NOT EXISTS postgis;" $DB_NAME
|
|
||||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
|
|
||||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
|
|
||||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC';"
|
|
||||||
{
|
|
||||||
echo "AdventureLog-Credentials"
|
|
||||||
echo "AdventureLog Database User: $DB_USER"
|
|
||||||
echo "AdventureLog Database Password: $DB_PASS"
|
|
||||||
echo "AdventureLog Database Name: $DB_NAME"
|
|
||||||
echo "AdventureLog Secret: $SECRET_KEY"
|
|
||||||
} >> ~/adventurelog.creds
|
|
||||||
msg_ok "Set up PostgreSQL"
|
|
||||||
|
|
||||||
msg_info "Installing AdventureLog (Patience)"
|
|
||||||
DJANGO_ADMIN_USER="djangoadmin"
|
|
||||||
DJANGO_ADMIN_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
|
|
||||||
LOCAL_IP="$(hostname -I | awk '{print $1}')"
|
|
||||||
cd /opt
|
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/seanmorley15/AdventureLog/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
wget -q "https://github.com/seanmorley15/AdventureLog/archive/refs/tags/v${RELEASE}.zip"
|
|
||||||
unzip -q v${RELEASE}.zip
|
|
||||||
mv AdventureLog-${RELEASE} /opt/adventurelog
|
|
||||||
cat <<EOF > /opt/adventurelog/backend/server/.env
|
|
||||||
PGHOST='localhost'
|
|
||||||
PGDATABASE='${DB_NAME}'
|
|
||||||
PGUSER='${DB_USER}'
|
|
||||||
PGPASSWORD='${DB_PASS}'
|
|
||||||
SECRET_KEY='${SECRET_KEY}'
|
|
||||||
PUBLIC_URL='http://$LOCAL_IP:8000'
|
|
||||||
DEBUG=True
|
|
||||||
FRONTEND_URL='http://$LOCAL_IP:3000'
|
|
||||||
CSRF_TRUSTED_ORIGINS='http://127.0.0.1:3000,http://localhost:3000,http://$LOCAL_IP:3000'
|
|
||||||
DJANGO_ADMIN_USERNAME='${DJANGO_ADMIN_USER}'
|
|
||||||
DJANGO_ADMIN_PASSWORD='${DJANGO_ADMIN_PASS}'
|
|
||||||
DISABLE_REGISTRATION=False
|
|
||||||
# EMAIL_BACKEND='email'
|
|
||||||
# EMAIL_HOST='smtp.gmail.com'
|
|
||||||
# EMAIL_USE_TLS=False
|
|
||||||
# EMAIL_PORT=587
|
|
||||||
# EMAIL_USE_SSL=True
|
|
||||||
# EMAIL_HOST_USER='user'
|
|
||||||
# EMAIL_HOST_PASSWORD='password'
|
|
||||||
# DEFAULT_FROM_EMAIL='user@example.com'
|
|
||||||
EOF
|
|
||||||
cd /opt/adventurelog/backend/server
|
|
||||||
mkdir -p /opt/adventurelog/backend/server/media
|
|
||||||
$STD pip install --upgrade pip
|
|
||||||
$STD pip install -r requirements.txt
|
|
||||||
$STD python3 manage.py collectstatic --noinput
|
|
||||||
$STD python3 manage.py migrate
|
|
||||||
$STD python3 manage.py download-countries
|
|
||||||
cat <<EOF > /opt/adventurelog/frontend/.env
|
|
||||||
PUBLIC_SERVER_URL=http://$LOCAL_IP:8000
|
|
||||||
BODY_SIZE_LIMIT=Infinity
|
|
||||||
ORIGIN='http://$LOCAL_IP:3000'
|
|
||||||
EOF
|
|
||||||
cd /opt/adventurelog/frontend
|
|
||||||
$STD pnpm i
|
|
||||||
$STD pnpm build
|
|
||||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
|
||||||
msg_ok "Installed AdventureLog"
|
|
||||||
|
|
||||||
msg_info "Setting up Django Admin"
|
|
||||||
$STD python3 /opt/adventurelog/backend/server/manage.py shell << EOF
|
|
||||||
from django.contrib.auth import get_user_model
|
|
||||||
UserModel = get_user_model()
|
|
||||||
user = UserModel.objects.create_user('$DJANGO_ADMIN_USER', password='$DJANGO_ADMIN_PASS')
|
|
||||||
user.is_superuser = True
|
|
||||||
user.is_staff = True
|
|
||||||
user.save()
|
|
||||||
EOF
|
|
||||||
{
|
|
||||||
echo ""
|
|
||||||
echo "Django-Credentials"
|
|
||||||
echo "Django Admin User: $DJANGO_ADMIN_USER"
|
|
||||||
echo "Django Admin Password: $DJANGO_ADMIN_PASS"
|
|
||||||
} >> ~/adventurelog.creds
|
|
||||||
msg_ok "Setup Django Admin"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
|
||||||
cat <<EOF >/etc/systemd/system/adventurelog-backend.service
|
|
||||||
[Unit]
|
|
||||||
Description=AdventureLog Backend Service
|
|
||||||
After=network.target postgresql.service
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
WorkingDirectory=/opt/adventurelog/backend/server
|
|
||||||
ExecStart=python3 manage.py runserver 0.0.0.0:8000
|
|
||||||
Restart=always
|
|
||||||
EnvironmentFile=/opt/adventurelog/backend/server/.env
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
cat <<EOF >/etc/systemd/system/adventurelog-frontend.service
|
|
||||||
[Unit]
|
|
||||||
Description=AdventureLog SvelteKit Frontend Service
|
|
||||||
After=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
WorkingDirectory=/opt/adventurelog/frontend
|
|
||||||
ExecStart=/usr/bin/node build 127.0.0.1:3000
|
|
||||||
Restart=always
|
|
||||||
EnvironmentFile=/opt/adventurelog/frontend/.env
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
systemctl enable -q --now adventurelog-backend.service
|
|
||||||
systemctl enable -q --now adventurelog-frontend.service
|
|
||||||
msg_ok "Created Service"
|
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -rf /opt/v${RELEASE}.zip
|
|
||||||
$STD apt-get -y autoremove
|
|
||||||
$STD apt-get -y autoclean
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
@@ -32,8 +32,8 @@ mkdir -p /opt/agentdvr/agent
|
|||||||
RELEASE=$(curl -s "https://www.ispyconnect.com/api/Agent/DownloadLocation4?platform=LinuxARM64&fromVersion=0" | grep -o 'https://.*\.zip')
|
RELEASE=$(curl -s "https://www.ispyconnect.com/api/Agent/DownloadLocation4?platform=LinuxARM64&fromVersion=0" | grep -o 'https://.*\.zip')
|
||||||
cd /opt/agentdvr/agent
|
cd /opt/agentdvr/agent
|
||||||
wget -q $RELEASE
|
wget -q $RELEASE
|
||||||
$STD unzip Agent_LinuxARM64*.zip
|
$STD unzip Agent_LinuARM64*.zip
|
||||||
rm -rf Agent_LinuxARM64*.zip
|
rm -rf Agent_Linux64*.zip
|
||||||
chmod +x ./Agent
|
chmod +x ./Agent
|
||||||
msg_ok "Installed AgentDVR"
|
msg_ok "Installed AgentDVR"
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2024 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster)
|
||||||
# License: MIT
|
# License: MIT
|
||||||
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||||
@@ -25,18 +25,18 @@ $STD apk add openssh
|
|||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing PHP/Redis"
|
msg_info "Installing PHP/Redis"
|
||||||
$STD apk add php83-opcache
|
$STD apk add php82-opcache
|
||||||
$STD apk add php83-redis
|
$STD apk add php82-redis
|
||||||
$STD apk add php83-apcu
|
$STD apk add php82-apcu
|
||||||
$STD apk add php83-fpm
|
$STD apk add php82-fpm
|
||||||
$STD apk add php83-sysvsem
|
$STD apk add php82-sysvsem
|
||||||
$STD apk add php83-ftp
|
$STD apk add php82-ftp
|
||||||
$STD apk add php83-pecl-smbclient
|
$STD apk add php82-pecl-smbclient
|
||||||
$STD apk add php83-pecl-imagick
|
$STD apk add php82-pecl-imagick
|
||||||
$STD apk add php83-pecl-vips
|
$STD apk add php82-pecl-vips
|
||||||
$STD apk add php83-exif
|
$STD apk add php82-exif
|
||||||
$STD apk add php83-sodium
|
$STD apk add php82-sodium
|
||||||
$STD apk add php83-bz2
|
$STD apk add php82-bz2
|
||||||
$STD apk add redis
|
$STD apk add redis
|
||||||
msg_ok "Installed PHP/Redis"
|
msg_ok "Installed PHP/Redis"
|
||||||
|
|
||||||
@@ -51,7 +51,7 @@ echo -e "Nextcloud Database Username: \e[32m$DB_USER\e[0m" >>~/nextcloud.creds
|
|||||||
echo -e "Nextcloud Database Password: \e[32m$DB_PASS\e[0m" >>~/nextcloud.creds
|
echo -e "Nextcloud Database Password: \e[32m$DB_PASS\e[0m" >>~/nextcloud.creds
|
||||||
echo -e "Nextcloud Database Name: \e[32m$DB_NAME\e[0m" >>~/nextcloud.creds
|
echo -e "Nextcloud Database Name: \e[32m$DB_NAME\e[0m" >>~/nextcloud.creds
|
||||||
$STD apk add nextcloud-mysql mariadb mariadb-client
|
$STD apk add nextcloud-mysql mariadb mariadb-client
|
||||||
$STD mariadb-install-db --user=mysql --datadir=/var/lib/mysql
|
$STD mysql_install_db --user=mysql --datadir=/var/lib/mysql
|
||||||
$STD service mariadb start
|
$STD service mariadb start
|
||||||
$STD rc-update add mariadb
|
$STD rc-update add mariadb
|
||||||
mysql -uroot -p"$ADMIN_PASS" -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '$ADMIN_PASS' WITH GRANT OPTION; DELETE FROM mysql.user WHERE User=''; DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1'); DROP DATABASE test; DELETE FROM mysql.db WHERE Db='test' OR Db='test\_%'; CREATE DATABASE $DB_NAME; GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS'; GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost.localdomain' IDENTIFIED BY '$DB_PASS'; FLUSH PRIVILEGES;"
|
mysql -uroot -p"$ADMIN_PASS" -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '$ADMIN_PASS' WITH GRANT OPTION; DELETE FROM mysql.user WHERE User=''; DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1'); DROP DATABASE test; DELETE FROM mysql.db WHERE Db='test' OR Db='test\_%'; CREATE DATABASE $DB_NAME; GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS'; GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost.localdomain' IDENTIFIED BY '$DB_PASS'; FLUSH PRIVILEGES;"
|
||||||
@@ -104,8 +104,6 @@ server {
|
|||||||
listen 80;
|
listen 80;
|
||||||
return 301 https://$host$request_uri;
|
return 301 https://$host$request_uri;
|
||||||
server_name localhost;
|
server_name localhost;
|
||||||
client_max_body_size 16G;
|
|
||||||
fastcgi_read_timeout 120s;
|
|
||||||
}
|
}
|
||||||
server {
|
server {
|
||||||
listen 443 ssl http2;
|
listen 443 ssl http2;
|
||||||
@@ -130,8 +128,6 @@ server {
|
|||||||
fastcgi_pass unix:/run/nextcloud/fastcgi.sock; # From the nextcloud-initscript package
|
fastcgi_pass unix:/run/nextcloud/fastcgi.sock; # From the nextcloud-initscript package
|
||||||
fastcgi_index index.php;
|
fastcgi_index index.php;
|
||||||
include fastcgi.conf;
|
include fastcgi.conf;
|
||||||
fastcgi_read_timeout 120s;
|
|
||||||
client_max_body_size 16G;
|
|
||||||
}
|
}
|
||||||
location ^~ /.well-known/carddav { return 301 /remote.php/dav/; }
|
location ^~ /.well-known/carddav { return 301 /remote.php/dav/; }
|
||||||
location ^~ /.well-known/caldav { return 301 /remote.php/dav/; }
|
location ^~ /.well-known/caldav { return 301 /remote.php/dav/; }
|
||||||
@@ -139,13 +135,11 @@ server {
|
|||||||
location ^~ /.well-known/nodeinfo { return 301 /index.php/.well-known/nodeinfo; }
|
location ^~ /.well-known/nodeinfo { return 301 /index.php/.well-known/nodeinfo; }
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
sed -i -e 's|memory_limit = 128M|memory_limit = 512M|; $aapc.enable_cli=1' /etc/php83/php.ini
|
sed -i -e 's|memory_limit = 128M|memory_limit = 512M|; $aapc.enable_cli=1' /etc/php82/php.ini
|
||||||
sed -i -e 's|upload_max_file_size = 2M|upload_max_file_size = 16G|' /etc/php83/php.ini
|
sed -i -E '/^php_admin_(flag|value)\[opcache/s/^/;/' /etc/php82/php-fpm.d/nextcloud.conf
|
||||||
sed -i -E '/^php_admin_(flag|value)\[opcache/s/^/;/' /etc/php83/php-fpm.d/nextcloud.conf
|
|
||||||
msg_ok "Installed Nextcloud"
|
msg_ok "Installed Nextcloud"
|
||||||
|
|
||||||
msg_info "Adding Additional Nextcloud Packages"
|
msg_info "Adding Additional Nextcloud Packages"
|
||||||
$STD apk add nextcloud-occ
|
|
||||||
$STD apk add nextcloud-default-apps
|
$STD apk add nextcloud-default-apps
|
||||||
$STD apk add nextcloud-activity
|
$STD apk add nextcloud-activity
|
||||||
$STD apk add nextcloud-admin_audit
|
$STD apk add nextcloud-admin_audit
|
||||||
@@ -170,10 +164,9 @@ msg_ok "Added Additional Nextcloud Packages"
|
|||||||
msg_info "Starting Services"
|
msg_info "Starting Services"
|
||||||
$STD rc-service redis start
|
$STD rc-service redis start
|
||||||
$STD rc-update add redis default
|
$STD rc-update add redis default
|
||||||
$STD rc-service php-fpm83 start
|
$STD rc-service php-fpm82 start
|
||||||
chown -R nextcloud:www-data /var/log/nextcloud/
|
chown -R nextcloud:www-data /var/log/nextcloud/
|
||||||
chown -R nextcloud:www-data /usr/share/webapps/nextcloud/
|
$STD rc-service php-fpm82 restart
|
||||||
$STD rc-service php-fpm83 restart
|
|
||||||
$STD rc-service nginx start
|
$STD rc-service nginx start
|
||||||
$STD rc-service nextcloud start
|
$STD rc-service nextcloud start
|
||||||
$STD rc-update add nginx default
|
$STD rc-update add nginx default
|
||||||
@@ -183,16 +176,16 @@ msg_ok "Started Services"
|
|||||||
msg_info "Start Nextcloud Setup-Wizard"
|
msg_info "Start Nextcloud Setup-Wizard"
|
||||||
echo -e "export VISUAL=nano\nexport EDITOR=nano" >>/etc/profile
|
echo -e "export VISUAL=nano\nexport EDITOR=nano" >>/etc/profile
|
||||||
cd /usr/share/webapps/nextcloud
|
cd /usr/share/webapps/nextcloud
|
||||||
$STD su nextcloud -s /bin/sh -c "php83 occ maintenance:install \
|
$STD su nextcloud -s /bin/sh -c "php82 occ maintenance:install \
|
||||||
--database='mysql' --database-name $DB_NAME \
|
--database='mysql' --database-name $DB_NAME \
|
||||||
--database-user '$DB_USER' --database-pass '$DB_PASS' \
|
--database-user '$DB_USER' --database-pass '$DB_PASS' \
|
||||||
--admin-user '$ADMIN_USER' --admin-pass '$ADMIN_PASS' \
|
--admin-user '$ADMIN_USER' --admin-pass '$ADMIN_PASS' \
|
||||||
--data-dir '/var/lib/nextcloud/data'"
|
--data-dir '/var/lib/nextcloud/data'"
|
||||||
$STD su nextcloud -s /bin/sh -c 'php83 occ background:cron'
|
$STD su nextcloud -s /bin/sh -c 'php82 occ background:cron'
|
||||||
rm -rf /usr/share/webapps/nextcloud/apps/serverinfo
|
rm -rf /usr/share/webapps/nextcloud/apps/serverinfo
|
||||||
IP4=$(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1)
|
IP4=$(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1)
|
||||||
sed -i "/0 => \'localhost\',/a \ \1 => '$IP4'," /usr/share/webapps/nextcloud/config/config.php
|
sed -i "/0 => \'localhost\',/a \ \1 => '$IP4'," /usr/share/webapps/nextcloud/config/config.php
|
||||||
su nextcloud -s /bin/sh -c 'php83 -f /usr/share/webapps/nextcloud/cron.php'
|
su nextcloud -s /bin/sh -c 'php82 -f /usr/share/webapps/nextcloud/cron.php'
|
||||||
msg_ok "Finished Nextcloud Setup-Wizard"
|
msg_ok "Finished Nextcloud Setup-Wizard"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2024 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster)
|
||||||
# License: MIT
|
# License: MIT
|
||||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
|
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
|
||||||
|
|
||||||
color
|
color
|
||||||
@@ -26,9 +26,7 @@ msg_ok "Installed Dependencies"
|
|||||||
|
|
||||||
msg_info "Installing Alpine-Vaultwarden"
|
msg_info "Installing Alpine-Vaultwarden"
|
||||||
$STD apk add vaultwarden
|
$STD apk add vaultwarden
|
||||||
sed -i -e 's|export WEB_VAULT_ENABLED=.*|export WEB_VAULT_ENABLED=true|' /etc/conf.d/vaultwarden
|
sed -i -e 's/# export ADMIN_TOKEN=.*/export ADMIN_TOKEN='\'''\''/' -e '/^# export ROCKET_ADDRESS=0\.0\.0\.0/s/^# //' -e 's|export WEB_VAULT_ENABLED=.*|export WEB_VAULT_ENABLED=true|' /etc/conf.d/vaultwarden
|
||||||
echo -e "export ADMIN_TOKEN=''" >>/etc/conf.d/vaultwarden
|
|
||||||
echo -e "export ROCKET_ADDRESS=0.0.0.0" >>/etc/conf.d/vaultwarden
|
|
||||||
msg_ok "Installed Alpine-Vaultwarden"
|
msg_ok "Installed Alpine-Vaultwarden"
|
||||||
|
|
||||||
msg_info "Installing Web-Vault"
|
msg_info "Installing Web-Vault"
|
||||||
|
|||||||
@@ -1,156 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
#Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: Michel Roegl-Brunner (michelroegl-brunner) | MickLesk (CanbiZ)
|
|
||||||
# License: MIT
|
|
||||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
|
|
||||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
|
||||||
color
|
|
||||||
verb_ip6
|
|
||||||
catch_errors
|
|
||||||
setting_up_container
|
|
||||||
network_check
|
|
||||||
update_os
|
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
|
||||||
$STD apt-get install -y \
|
|
||||||
build-essential \
|
|
||||||
curl \
|
|
||||||
jq \
|
|
||||||
libcairo2-dev \
|
|
||||||
libturbojpeg0 \
|
|
||||||
libpng-dev \
|
|
||||||
libtool-bin \
|
|
||||||
libossp-uuid-dev \
|
|
||||||
libvncserver-dev \
|
|
||||||
freerdp2-dev \
|
|
||||||
libssh2-1-dev \
|
|
||||||
libtelnet-dev \
|
|
||||||
libwebsockets-dev \
|
|
||||||
libpulse-dev \
|
|
||||||
libvorbis-dev \
|
|
||||||
libwebp-dev \
|
|
||||||
libssl-dev \
|
|
||||||
libpango1.0-dev \
|
|
||||||
libswscale-dev \
|
|
||||||
libavcodec-dev \
|
|
||||||
libavutil-dev \
|
|
||||||
libavformat-dev \
|
|
||||||
mariadb-server \
|
|
||||||
default-jdk \
|
|
||||||
wget \
|
|
||||||
openssh-server
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
msg_info "Setup Apache Tomcat"
|
|
||||||
RELEASE=$(wget -qO- https://dlcdn.apache.org/tomcat/tomcat-9/ | grep -oP '(?<=href=")v[^"/]+(?=/")' | sed 's/^v//')
|
|
||||||
mkdir -p /opt/apache-guacamole/tomcat9
|
|
||||||
mkdir -p /opt/apache-guacamole/server
|
|
||||||
wget -qO- "https://dlcdn.apache.org/tomcat/tomcat-9/v${RELEASE}/bin/apache-tomcat-${RELEASE}.tar.gz" | tar -xz -C /opt/apache-guacamole/tomcat9 --strip-components=1
|
|
||||||
useradd -r -d /opt/apache-guacamole/tomcat9 -s /bin/false tomcat
|
|
||||||
chown -R tomcat: /opt/apache-guacamole/tomcat9
|
|
||||||
chmod -R g+r /opt/apache-guacamole/tomcat9/conf
|
|
||||||
chmod g+x /opt/apache-guacamole/tomcat9/conf
|
|
||||||
msg_ok "Setup Apache Tomcat"
|
|
||||||
|
|
||||||
msg_info "Setup Apache Guacamole"
|
|
||||||
mkdir -p /etc/guacamole/{extensions,lib}
|
|
||||||
RELEASE_SERVER=$(curl -sL https://api.github.com/repos/apache/guacamole-server/tags | jq -r '.[0].name')
|
|
||||||
wget -qO- https://api.github.com/repos/apache/guacamole-server/tarball/refs/tags/${RELEASE_SERVER} | tar -xz --strip-components=1 -C /opt/apache-guacamole/server
|
|
||||||
cd /opt/apache-guacamole/server
|
|
||||||
$STD autoreconf -fi
|
|
||||||
$STD ./configure --with-init-dir=/etc/init.d --enable-allow-freerdp-snapshots
|
|
||||||
$STD make
|
|
||||||
$STD make install
|
|
||||||
$STD ldconfig
|
|
||||||
RELEASE_CLIENT=$(curl -sL https://api.github.com/repos/apache/guacamole-client/tags | jq -r '.[0].name')
|
|
||||||
wget -q -O /opt/apache-guacamole/tomcat9/webapps/guacamole.war https://downloads.apache.org/guacamole/${RELEASE_CLIENT}/binary/guacamole-${RELEASE_CLIENT}.war
|
|
||||||
cd /root
|
|
||||||
wget -q --directory-prefix=/root/ https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.26.tar.gz
|
|
||||||
$STD tar -xf ~/mysql-connector-java-8.0.26.tar.gz
|
|
||||||
mv ~/mysql-connector-java-8.0.26/mysql-connector-java-8.0.26.jar /etc/guacamole/lib/
|
|
||||||
wget -q --directory-prefix=/root/ https://downloads.apache.org/guacamole/1.5.5/binary/guacamole-auth-jdbc-1.5.5.tar.gz
|
|
||||||
$STD tar -xf ~/guacamole-auth-jdbc-1.5.5.tar.gz
|
|
||||||
mv ~/guacamole-auth-jdbc-1.5.5/mysql/guacamole-auth-jdbc-mysql-1.5.5.jar /etc/guacamole/extensions/
|
|
||||||
msg_ok "Setup Apache Guacamole"
|
|
||||||
|
|
||||||
msg_info "Setup Database"
|
|
||||||
DB_NAME=guacamole_db
|
|
||||||
DB_USER=guacamole_user
|
|
||||||
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
|
||||||
mysql -u root -e "CREATE DATABASE $DB_NAME;"
|
|
||||||
mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');"
|
|
||||||
mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
|
||||||
{
|
|
||||||
echo "Guacamole-Credentials"
|
|
||||||
echo "Database User: $DB_USER"
|
|
||||||
echo "Database Password: $DB_PASS"
|
|
||||||
echo "Database Name: $DB_NAME"
|
|
||||||
} >> ~/guacamole.creds
|
|
||||||
cd guacamole-auth-jdbc-1.5.5/mysql/schema
|
|
||||||
cat *.sql | mysql -u root ${DB_NAME}
|
|
||||||
{
|
|
||||||
echo "mysql-hostname: 127.0.0.1"
|
|
||||||
echo "mysql-port: 3306"
|
|
||||||
echo "mysql-database: $DB_NAME"
|
|
||||||
echo "mysql-username: $DB_USER"
|
|
||||||
echo "mysql-password: $DB_PASS"
|
|
||||||
|
|
||||||
} >> /etc/guacamole/guacamole.properties
|
|
||||||
msg_ok "Setup Database"
|
|
||||||
|
|
||||||
msg_info "Setup Service"
|
|
||||||
cat <<EOF >/etc/guacamole/guacd.conf
|
|
||||||
[server]
|
|
||||||
bind_host = 127.0.0.1
|
|
||||||
bind_port = 4822
|
|
||||||
EOF
|
|
||||||
JAVA_HOME=$(update-alternatives --query javadoc | grep Value: | head -n1 | sed 's/Value: //' | sed 's@bin/javadoc$@@')
|
|
||||||
cat <<EOF >/etc/systemd/system/tomcat.service
|
|
||||||
[Unit]
|
|
||||||
Description=Apache Tomcat Web Application Container
|
|
||||||
After=network.target
|
|
||||||
[Service]
|
|
||||||
Type=forking
|
|
||||||
Environment="JAVA_HOME=${JAVA_HOME}"
|
|
||||||
Environment="CATALINA_PID=/opt/apache-guacamole/tomcat9/temp/tomcat.pid"
|
|
||||||
Environment="CATALINA_HOME=/opt/apache-guacamole/tomcat9/"
|
|
||||||
Environment="CATALINA_BASE=/opt/apache-guacamole/tomcat9/"
|
|
||||||
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
|
|
||||||
Environment="JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom"
|
|
||||||
ExecStart=/opt/apache-guacamole/tomcat9/bin/startup.sh
|
|
||||||
ExecStop=/opt/apache-guacamole/tomcat9/bin/shutdown.sh
|
|
||||||
User=tomcat
|
|
||||||
Group=tomcat
|
|
||||||
UMask=0007
|
|
||||||
RestartSec=10
|
|
||||||
Restart=always
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
cat <<EOF >/etc/systemd/system/guacd.service
|
|
||||||
[Unit]
|
|
||||||
Description=Guacamole Proxy Daemon (guacd)
|
|
||||||
After=mysql.service tomcat.service
|
|
||||||
Requires=mysql.service tomcat.service
|
|
||||||
[Service]
|
|
||||||
Type=forking
|
|
||||||
ExecStart=/etc/init.d/guacd start
|
|
||||||
ExecStop=/etc/init.d/guacd stop
|
|
||||||
ExecReload=/etc/init.d/guacd restart
|
|
||||||
PIDFile=/var/run/guacd.pid
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
systemctl -q enable --now mysql tomcat guacd
|
|
||||||
msg_ok "Setup Service"
|
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -rf ~/mysql-connector-java-8.0.26{,.tar.gz}
|
|
||||||
rm -rf ~/guacamole-auth-jdbc-1.5.5{,.tar.gz}
|
|
||||||
$STD apt-get -y autoremove
|
|
||||||
$STD apt-get -y autoclean
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
@@ -1,112 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Copyright (c) 2021-2025 tteck
|
|
||||||
# Author: tteck
|
|
||||||
# License: MIT
|
|
||||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
|
|
||||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
|
|
||||||
color
|
|
||||||
verb_ip6
|
|
||||||
catch_errors
|
|
||||||
setting_up_container
|
|
||||||
network_check
|
|
||||||
update_os
|
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
|
||||||
$STD apt-get install -y \
|
|
||||||
curl \
|
|
||||||
sudo \
|
|
||||||
mc \
|
|
||||||
git \
|
|
||||||
expect \
|
|
||||||
libssl-dev \
|
|
||||||
libldap2-dev \
|
|
||||||
libsasl2-dev \
|
|
||||||
procps \
|
|
||||||
dnsutils \
|
|
||||||
ripgrep \
|
|
||||||
wget \
|
|
||||||
openssh-server
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
msg_info "Installing Python Dependencies"
|
|
||||||
$STD apt-get install -y \
|
|
||||||
python3-pip \
|
|
||||||
python3-ldap \
|
|
||||||
python3-msgpack \
|
|
||||||
python3-regex
|
|
||||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
|
||||||
msg_ok "Installed Python Dependencies"
|
|
||||||
|
|
||||||
msg_info "Setting up Node.js Repository"
|
|
||||||
mkdir -p /etc/apt/keyrings
|
|
||||||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
|
|
||||||
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
|
|
||||||
msg_ok "Set up Node.js Repository"
|
|
||||||
|
|
||||||
msg_info "Installing Node.js"
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get install -y nodejs
|
|
||||||
msg_ok "Installed Node.js"
|
|
||||||
|
|
||||||
msg_info "Installing Playwright"
|
|
||||||
$STD pip install playwright
|
|
||||||
$STD playwright install-deps chromium
|
|
||||||
msg_ok "Installed Playwright"
|
|
||||||
|
|
||||||
msg_info "Installing Chromium and ArchiveBox"
|
|
||||||
mkdir -p /opt/archivebox/{data,.npm,.cache,.local}
|
|
||||||
$STD adduser --system --shell /bin/bash --gecos 'Archive Box User' --group --disabled-password --home /home/archivebox archivebox
|
|
||||||
chown -R archivebox:archivebox /opt/archivebox/{data,.npm,.cache,.local}
|
|
||||||
chmod -R 755 /opt/archivebox/data
|
|
||||||
$STD pip install archivebox
|
|
||||||
cd /opt/archivebox/data
|
|
||||||
expect <<EOF
|
|
||||||
set timeout -1
|
|
||||||
log_user 0
|
|
||||||
|
|
||||||
spawn sudo -u archivebox playwright install chromium
|
|
||||||
spawn sudo -u archivebox archivebox setup
|
|
||||||
|
|
||||||
expect "Username"
|
|
||||||
send "\r"
|
|
||||||
|
|
||||||
expect "Email address"
|
|
||||||
send "\r"
|
|
||||||
|
|
||||||
expect "Password"
|
|
||||||
send "helper-scripts.com\r"
|
|
||||||
|
|
||||||
expect "Password (again)"
|
|
||||||
send "helper-scripts.com\r"
|
|
||||||
|
|
||||||
expect eof
|
|
||||||
EOF
|
|
||||||
msg_ok "Installed ArchiveBox"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
|
||||||
cat <<EOF >/etc/systemd/system/archivebox.service
|
|
||||||
[Unit]
|
|
||||||
Description=ArchiveBox Server
|
|
||||||
After=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
User=archivebox
|
|
||||||
WorkingDirectory=/opt/archivebox/data
|
|
||||||
ExecStart=/usr/local/bin/archivebox server 0.0.0.0:8000
|
|
||||||
Restart=always
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
systemctl enable -q --now archivebox.service
|
|
||||||
msg_ok "Created Service"
|
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
$STD apt-get -y autoremove
|
|
||||||
$STD apt-get -y autoclean
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
@@ -1,197 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: remz1337
|
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
|
|
||||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
|
||||||
color
|
|
||||||
verb_ip6
|
|
||||||
catch_errors
|
|
||||||
setting_up_container
|
|
||||||
network_check
|
|
||||||
update_os
|
|
||||||
|
|
||||||
msg_info "Installing Dependencies (Patience)"
|
|
||||||
$STD apt-get install -y \
|
|
||||||
curl \
|
|
||||||
sudo \
|
|
||||||
mc \
|
|
||||||
gpg \
|
|
||||||
pkg-config \
|
|
||||||
libffi-dev \
|
|
||||||
build-essential \
|
|
||||||
libpq-dev \
|
|
||||||
libkrb5-dev \
|
|
||||||
libssl-dev \
|
|
||||||
libsqlite3-dev \
|
|
||||||
tk-dev \
|
|
||||||
libgdbm-dev \
|
|
||||||
libc6-dev \
|
|
||||||
libbz2-dev \
|
|
||||||
zlib1g-dev \
|
|
||||||
libxmlsec1 \
|
|
||||||
libxmlsec1-dev \
|
|
||||||
libxmlsec1-openssl \
|
|
||||||
libmaxminddb0 \
|
|
||||||
python3-pip \
|
|
||||||
git \
|
|
||||||
wget \
|
|
||||||
openssh-server
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
msg_info "Installing yq"
|
|
||||||
cd /tmp
|
|
||||||
YQ_LATEST="$(wget -qO- "https://api.github.com/repos/mikefarah/yq/releases/latest" | grep -Po '"tag_name": "\K.*?(?=")')"
|
|
||||||
wget -q "https://github.com/mikefarah/yq/releases/download/${YQ_LATEST}/yq_linux_amd64" -qO /usr/bin/yq
|
|
||||||
chmod +x /usr/bin/yq
|
|
||||||
msg_ok "Installed yq"
|
|
||||||
|
|
||||||
msg_info "Installing GeoIP"
|
|
||||||
cd /tmp
|
|
||||||
GEOIP_RELEASE=$(curl -s https://api.github.com/repos/maxmind/geoipupdate/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
wget -qO geoipupdate.deb https://github.com/maxmind/geoipupdate/releases/download/v${GEOIP_RELEASE}/geoipupdate_${GEOIP_RELEASE}_linux_amd64.deb
|
|
||||||
$STD dpkg -i geoipupdate.deb
|
|
||||||
cat <<EOF >/etc/GeoIP.conf
|
|
||||||
#GEOIPUPDATE_EDITION_IDS="GeoLite2-City GeoLite2-ASN"
|
|
||||||
#GEOIPUPDATE_VERBOSE="1"
|
|
||||||
#GEOIPUPDATE_ACCOUNT_ID_FILE="/run/secrets/GEOIPUPDATE_ACCOUNT_ID"
|
|
||||||
#GEOIPUPDATE_LICENSE_KEY_FILE="/run/secrets/GEOIPUPDATE_LICENSE_KEY"
|
|
||||||
EOF
|
|
||||||
msg_ok "Installed GeoIP"
|
|
||||||
|
|
||||||
msg_info "Setting up Python 3"
|
|
||||||
cd /tmp
|
|
||||||
wget -q https://www.python.org/ftp/python/3.12.1/Python-3.12.1.tgz -O Python.tgz
|
|
||||||
tar -zxf Python.tgz
|
|
||||||
cd Python-3.12.1
|
|
||||||
$STD ./configure --enable-optimizations
|
|
||||||
$STD make altinstall
|
|
||||||
cd ~
|
|
||||||
$STD update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.12 1
|
|
||||||
msg_ok "Setup Python 3"
|
|
||||||
|
|
||||||
msg_info "Setting up Node.js Repository"
|
|
||||||
mkdir -p /etc/apt/keyrings
|
|
||||||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
|
|
||||||
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
|
|
||||||
msg_ok "Set up Node.js Repository"
|
|
||||||
|
|
||||||
msg_info "Installing Node.js"
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get install -y nodejs
|
|
||||||
msg_ok "Installed Node.js"
|
|
||||||
|
|
||||||
msg_info "Installing Golang"
|
|
||||||
cd /tmp
|
|
||||||
set +o pipefail
|
|
||||||
GO_RELEASE=$(curl -s https://go.dev/dl/ | grep -o -m 1 "go.*\linux-amd64.tar.gz")
|
|
||||||
wget -q https://golang.org/dl/${GO_RELEASE}
|
|
||||||
tar -xzf ${GO_RELEASE} -C /usr/local
|
|
||||||
ln -s /usr/local/go/bin/go /usr/bin/go
|
|
||||||
set -o pipefail
|
|
||||||
msg_ok "Installed Golang"
|
|
||||||
|
|
||||||
msg_info "Installing Redis"
|
|
||||||
$STD apt-get install -y redis-server
|
|
||||||
systemctl enable -q --now redis-server
|
|
||||||
msg_ok "Installed Redis"
|
|
||||||
|
|
||||||
msg_info "Installing PostgreSQL"
|
|
||||||
$STD apt-get install -y postgresql postgresql-contrib
|
|
||||||
DB_NAME="authentik"
|
|
||||||
DB_USER="authentik"
|
|
||||||
DB_PASS="$(openssl rand -base64 18 | cut -c1-13)"
|
|
||||||
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME;"
|
|
||||||
$STD sudo -u postgres psql -c "CREATE USER $DB_USER WITH PASSWORD '$DB_PASS';"
|
|
||||||
$STD sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $DB_USER;"
|
|
||||||
$STD sudo -u postgres psql -c "ALTER DATABASE $DB_NAME OWNER TO $DB_USER;"
|
|
||||||
$STD sudo -u postgres psql -c "ALTER USER $DB_USER WITH SUPERUSER;"
|
|
||||||
msg_ok "Installed PostgreSQL"
|
|
||||||
|
|
||||||
msg_info "Installing authentik"
|
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/goauthentik/authentik/releases/latest | grep "tarball_url" | awk '{print substr($2, 2, length($2)-3)}')
|
|
||||||
mkdir -p /opt/authentik
|
|
||||||
wget -qO authentik.tar.gz "${RELEASE}"
|
|
||||||
tar -xzf authentik.tar.gz -C /opt/authentik --strip-components 1 --overwrite
|
|
||||||
cd /opt/authentik/website
|
|
||||||
$STD npm install
|
|
||||||
$STD npm run build-bundled
|
|
||||||
cd /opt/authentik/web
|
|
||||||
$STD npm install
|
|
||||||
$STD npm run build
|
|
||||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
|
||||||
cd /opt/authentik
|
|
||||||
$STD go mod download
|
|
||||||
$STD go build -o /go/authentik ./cmd/server
|
|
||||||
$STD go build -o /opt/authentik/authentik-server /opt/authentik/cmd/server/
|
|
||||||
cd /opt/authentik
|
|
||||||
$STD pip3 install --upgrade pip
|
|
||||||
$STD pip3 install poetry poetry-plugin-export
|
|
||||||
ln -s /usr/local/bin/poetry /usr/bin/poetry
|
|
||||||
$STD poetry install --only=main --no-ansi --no-interaction --no-root
|
|
||||||
$STD poetry export --without-hashes --without-urls -f requirements.txt --output requirements.txt
|
|
||||||
$STD pip install --no-cache-dir -r requirements.txt
|
|
||||||
$STD pip install .
|
|
||||||
mkdir -p /etc/authentik
|
|
||||||
mv /opt/authentik/authentik/lib/default.yml /etc/authentik/config.yml
|
|
||||||
$STD yq -i ".secret_key = \"$(openssl rand -hex 32)\"" /etc/authentik/config.yml
|
|
||||||
$STD yq -i ".postgresql.password = \"${DB_PASS}\"" /etc/authentik/config.yml
|
|
||||||
$STD yq -i ".geoip = \"/opt/authentik/tests/GeoLite2-City-Test.mmdb\"" /etc/authentik/config.yml
|
|
||||||
cp -r /opt/authentik/authentik/blueprints /opt/authentik/blueprints
|
|
||||||
$STD yq -i ".blueprints_dir = \"/opt/authentik/blueprints\"" /etc/authentik/config.yml
|
|
||||||
ln -s /usr/bin/python3 /usr/bin/python
|
|
||||||
ln -s /usr/local/bin/gunicorn /usr/bin/gunicorn
|
|
||||||
ln -s /usr/local/bin/celery /usr/bin/celery
|
|
||||||
$STD bash /opt/authentik/lifecycle/ak migrate
|
|
||||||
cd ~
|
|
||||||
msg_ok "Installed authentik"
|
|
||||||
|
|
||||||
msg_info "Creating Services"
|
|
||||||
cat <<EOF >/etc/systemd/system/authentik-server.service
|
|
||||||
[Unit]
|
|
||||||
Description = authentik Server
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
ExecStart=/opt/authentik/authentik-server
|
|
||||||
WorkingDirectory=/opt/authentik/
|
|
||||||
Restart=always
|
|
||||||
RestartSec=5
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat <<EOF >/etc/systemd/system/authentik-worker.service
|
|
||||||
[Unit]
|
|
||||||
Description = authentik Worker
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Environment=DJANGO_SETTINGS_MODULE="authentik.root.settings"
|
|
||||||
ExecStart=celery -A authentik.root.celery worker -Ofair --max-tasks-per-child=1 --autoscale 3,1 -E -B -s /tmp/celerybeat-schedule -Q authentik,authentik_scheduled,authentik_events
|
|
||||||
WorkingDirectory=/opt/authentik/authentik
|
|
||||||
Restart=always
|
|
||||||
RestartSec=5
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
systemctl enable -q --now authentik-server
|
|
||||||
sleep 2
|
|
||||||
systemctl enable -q --now authentik-worker
|
|
||||||
msg_ok "Created Services"
|
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -rf /tmp/Python-3.12.1
|
|
||||||
rm -rf /tmp/Python.tgz
|
|
||||||
rm -rf go/
|
|
||||||
rm -rf /tmp/${GO_RELEASE}
|
|
||||||
rm -rf /tmp/geoipupdate.deb
|
|
||||||
rm -rf authentik.tar.gz
|
|
||||||
$STD apt-get -y remove yq
|
|
||||||
$STD apt-get -y autoremove
|
|
||||||
$STD apt-get -y autoclean
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
+216
-21
@@ -1,9 +1,9 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2024 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster)
|
||||||
# License: MIT
|
# License: MIT
|
||||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||||
|
|
||||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
|
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
|
||||||
color
|
color
|
||||||
@@ -30,46 +30,241 @@ RELEASE=$(curl -s https://api.github.com/repos/0xERR0R/blocky/releases/latest |
|
|||||||
wget -qO- https://github.com/0xERR0R/blocky/releases/download/v${RELEASE}/blocky_v${RELEASE}_Linux_arm64.tar.gz | tar -xzf - -C /opt/blocky/
|
wget -qO- https://github.com/0xERR0R/blocky/releases/download/v${RELEASE}/blocky_v${RELEASE}_Linux_arm64.tar.gz | tar -xzf - -C /opt/blocky/
|
||||||
|
|
||||||
cat <<EOF >/opt/blocky/config.yml
|
cat <<EOF >/opt/blocky/config.yml
|
||||||
# configuration documentation: https://0xerr0r.github.io/blocky/latest/configuration/
|
upstream:
|
||||||
|
|
||||||
upstreams:
|
|
||||||
groups:
|
|
||||||
# these external DNS resolvers will be used. Blocky picks 2 random resolvers from the list for each query
|
# these external DNS resolvers will be used. Blocky picks 2 random resolvers from the list for each query
|
||||||
# format for resolver: [net:]host:[port][/path]. net could be empty (default, shortcut for tcp+udp), tcp+udp, tcp, udp, tcp-tls or https (DoH). If port is empty, default port will be used (53 for udp and tcp, 853 for tcp-tls, 443 for https (Doh))
|
# format for resolver: [net:]host:[port][/path]. net could be empty (default, shortcut for tcp+udp), tcp+udp, tcp, udp, tcp-tls or https (DoH). If port is empty, default port will be used (53 for udp and tcp, 853 for tcp-tls, 443 for https (Doh))
|
||||||
# this configuration is mandatory, please define at least one external DNS resolver
|
# this configuration is mandatory, please define at least one external DNS resolver
|
||||||
default:
|
default:
|
||||||
|
# example for tcp+udp IPv4 server (https://digitalcourage.de/)
|
||||||
|
#- 5.9.164.112
|
||||||
# Cloudflare
|
# Cloudflare
|
||||||
- 1.1.1.1
|
- 1.1.1.1
|
||||||
# Quad9 DNS-over-TLS server (DoT)
|
# example for DNS-over-TLS server (DoT)
|
||||||
- tcp-tls:dns.quad9.net
|
#- tcp-tls:fdns1.dismail.de:853
|
||||||
|
# example for DNS-over-HTTPS (DoH)
|
||||||
|
#- https://dns.digitale-gesellschaft.ch/dns-query
|
||||||
|
# optional: use client name (with wildcard support: * - sequence of any characters, [0-9] - range)
|
||||||
|
# or single ip address / client subnet as CIDR notation
|
||||||
|
#laptop*:
|
||||||
|
#- 123.123.123.123
|
||||||
|
|
||||||
# optional: use allow/denylists to block queries (for example ads, trackers, adult pages etc.)
|
# optional: timeout to query the upstream resolver. Default: 2s
|
||||||
|
#upstreamTimeout: 2s
|
||||||
|
|
||||||
|
# optional: If true, blocky will fail to start unless at least one upstream server per group is reachable. Default: false
|
||||||
|
#startVerifyUpstream: true
|
||||||
|
|
||||||
|
# optional: Determines how blocky will create outgoing connections. This impacts both upstreams, and lists.
|
||||||
|
# accepted: dual, v4, v6
|
||||||
|
# default: dual
|
||||||
|
#connectIPVersion: dual
|
||||||
|
|
||||||
|
# optional: custom IP address(es) for domain name (with all sub-domains). Multiple addresses must be separated by a comma
|
||||||
|
# example: query "printer.lan" or "my.printer.lan" will return 192.168.178.3
|
||||||
|
#customDNS:
|
||||||
|
#customTTL: 1h
|
||||||
|
# optional: if true (default), return empty result for unmapped query types (for example TXT, MX or AAAA if only IPv4 address is defined).
|
||||||
|
# if false, queries with unmapped types will be forwarded to the upstream resolver
|
||||||
|
#filterUnmappedTypes: true
|
||||||
|
# optional: replace domain in the query with other domain before resolver lookup in the mapping
|
||||||
|
#rewrite:
|
||||||
|
#example.com: printer.lan
|
||||||
|
#mapping:
|
||||||
|
#printer.lan: 192.168.178.3,2001:0db8:85a3:08d3:1319:8a2e:0370:7344
|
||||||
|
|
||||||
|
# optional: definition, which DNS resolver(s) should be used for queries to the domain (with all sub-domains). Multiple resolvers must be separated by a comma
|
||||||
|
# Example: Query client.fritz.box will ask DNS server 192.168.178.1. This is necessary for local network, to resolve clients by host name
|
||||||
|
#conditional:
|
||||||
|
# optional: if false (default), return empty result if after rewrite, the mapped resolver returned an empty answer. If true, the original query will be sent to the upstream resolver
|
||||||
|
# Example: The query "blog.example.com" will be rewritten to "blog.fritz.box" and also redirected to the resolver at 192.168.178.1. If not found and if was set to , the original query "blog.example.com" will be sent upstream.
|
||||||
|
# Usage: One usecase when having split DNS for internal and external (internet facing) users, but not all subdomains are listed in the internal domain.
|
||||||
|
#fallbackUpstream: false
|
||||||
|
# optional: replace domain in the query with other domain before resolver lookup in the mapping
|
||||||
|
#rewrite:
|
||||||
|
#example.com: fritz.box
|
||||||
|
#mapping:
|
||||||
|
#fritz.box: 192.168.178.1
|
||||||
|
#lan.net: 192.168.178.1,192.168.178.2
|
||||||
|
|
||||||
|
# optional: use black and white lists to block queries (for example ads, trackers, adult pages etc.)
|
||||||
blocking:
|
blocking:
|
||||||
# definition of denylist groups. Can be external link (http/https) or local file
|
# definition of blacklist groups. Can be external link (http/https) or local file
|
||||||
denylists:
|
blackLists:
|
||||||
ads:
|
ads:
|
||||||
|
- https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt
|
||||||
- https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
|
- https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
|
||||||
|
- http://sysctl.org/cameleon/hosts
|
||||||
|
- https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt
|
||||||
|
- |
|
||||||
|
# inline definition with YAML literal block scalar style
|
||||||
|
# hosts format
|
||||||
|
someadsdomain.com
|
||||||
|
special:
|
||||||
|
- https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews/hosts
|
||||||
|
# definition of whitelist groups. Attention: if the same group has black and whitelists, whitelists will be used to disable particular blacklist entries. If a group has only whitelist entries -> this means only domains from this list are allowed, all other domains will be blocked
|
||||||
|
whiteLists:
|
||||||
|
ads:
|
||||||
|
- whitelist.txt
|
||||||
|
- |
|
||||||
|
# inline definition with YAML literal block scalar style
|
||||||
|
# hosts format
|
||||||
|
whitelistdomain.com
|
||||||
|
# this is a regex
|
||||||
|
/^banners?[_.-]/
|
||||||
# definition: which groups should be applied for which client
|
# definition: which groups should be applied for which client
|
||||||
clientGroupsBlock:
|
clientGroupsBlock:
|
||||||
# default will be used, if no special definition for a client name exists
|
# default will be used, if no special definition for a client name exists
|
||||||
default:
|
default:
|
||||||
- ads
|
- ads
|
||||||
|
- special
|
||||||
|
# use client name (with wildcard support: * - sequence of any characters, [0-9] - range)
|
||||||
|
# or single ip address / client subnet as CIDR notation
|
||||||
|
#laptop*:
|
||||||
|
#- ads
|
||||||
|
#192.168.178.1/24:
|
||||||
|
#- special
|
||||||
|
# which response will be sent, if query is blocked:
|
||||||
|
# zeroIp: 0.0.0.0 will be returned (default)
|
||||||
|
# nxDomain: return NXDOMAIN as return code
|
||||||
|
# comma separated list of destination IP addresses (for example: 192.100.100.15, 2001:0db8:85a3:08d3:1319:8a2e:0370:7344). Should contain ipv4 and ipv6 to cover all query types. Useful with running web server on this address to display the "blocked" page.
|
||||||
|
blockType: zeroIp
|
||||||
|
# optional: TTL for answers to blocked domains
|
||||||
|
# default: 6h
|
||||||
|
blockTTL: 1m
|
||||||
|
# optional: automatically list refresh period (in duration format). Default: 4h.
|
||||||
|
# Negative value -> deactivate automatically refresh.
|
||||||
|
# 0 value -> use default
|
||||||
|
refreshPeriod: 4h
|
||||||
|
# optional: timeout for list download (each url). Default: 60s. Use large values for big lists or slow internet connections
|
||||||
|
downloadTimeout: 4m
|
||||||
|
# optional: Download attempt timeout. Default: 60s
|
||||||
|
downloadAttempts: 5
|
||||||
|
# optional: Time between the download attempts. Default: 1s
|
||||||
|
downloadCooldown: 10s
|
||||||
|
# optional: if failOnError, application startup will fail if at least one list can't be downloaded / opened. Default: blocking
|
||||||
|
#startStrategy: failOnError
|
||||||
|
|
||||||
|
# optional: configuration for caching of DNS responses
|
||||||
|
caching:
|
||||||
|
# duration how long a response must be cached (min value).
|
||||||
|
# If <=0, use response's TTL, if >0 use this value, if TTL is smaller
|
||||||
|
# Default: 0
|
||||||
|
minTime: 5m
|
||||||
|
# duration how long a response must be cached (max value).
|
||||||
|
# If <0, do not cache responses
|
||||||
|
# If 0, use TTL
|
||||||
|
# If > 0, use this value, if TTL is greater
|
||||||
|
# Default: 0
|
||||||
|
maxTime: 30m
|
||||||
|
# Max number of cache entries (responses) to be kept in cache (soft limit). Useful on systems with limited amount of RAM.
|
||||||
|
# Default (0): unlimited
|
||||||
|
maxItemsCount: 0
|
||||||
|
# if true, will preload DNS results for often used queries (default: names queried more than 5 times in a 2-hour time window)
|
||||||
|
# this improves the response time for often used queries, but significantly increases external traffic
|
||||||
|
# default: false
|
||||||
|
prefetching: true
|
||||||
|
# prefetch track time window (in duration format)
|
||||||
|
# default: 120
|
||||||
|
prefetchExpires: 2h
|
||||||
|
# name queries threshold for prefetch
|
||||||
|
# default: 5
|
||||||
|
prefetchThreshold: 5
|
||||||
|
# Max number of domains to be kept in cache for prefetching (soft limit). Useful on systems with limited amount of RAM.
|
||||||
|
# Default (0): unlimited
|
||||||
|
#prefetchMaxItemsCount: 0
|
||||||
|
|
||||||
|
# optional: configuration of client name resolution
|
||||||
|
clientLookup:
|
||||||
|
# optional: this DNS resolver will be used to perform reverse DNS lookup (typically local router)
|
||||||
|
#upstream: 192.168.178.1
|
||||||
|
# optional: some routers return multiple names for client (host name and user defined name). Define which single name should be used.
|
||||||
|
# Example: take second name if present, if not take first name
|
||||||
|
#singleNameOrder:
|
||||||
|
#- 2
|
||||||
|
#- 1
|
||||||
|
# optional: custom mapping of client name to IP addresses. Useful if reverse DNS does not work properly or just to have custom client names.
|
||||||
|
#clients:
|
||||||
|
#laptop:
|
||||||
|
#- 192.168.178.29
|
||||||
|
# optional: configuration for prometheus metrics endpoint
|
||||||
|
prometheus:
|
||||||
|
# enabled if true
|
||||||
|
#enable: true
|
||||||
|
# url path, optional (default '/metrics')
|
||||||
|
#path: /metrics
|
||||||
|
|
||||||
# optional: write query information (question, answer, client, duration etc.) to daily csv file
|
# optional: write query information (question, answer, client, duration etc.) to daily csv file
|
||||||
queryLog:
|
queryLog:
|
||||||
# optional one of: mysql, postgresql, csv, csv-client. If empty, log to console
|
# optional one of: mysql, postgresql, csv, csv-client. If empty, log to console
|
||||||
type:
|
#type: mysql
|
||||||
|
# directory (should be mounted as volume in docker) for csv, db connection string for mysql/postgresql
|
||||||
|
#target: db_user:db_password@tcp(db_host_or_ip:3306)/db_name?charset=utf8mb4&parseTime=True&loc=Local
|
||||||
|
#postgresql target: postgres://user:password@db_host_or_ip:5432/db_name
|
||||||
|
# if > 0, deletes log files which are older than ... days
|
||||||
|
#logRetentionDays: 7
|
||||||
|
# optional: Max attempts to create specific query log writer, default: 3
|
||||||
|
#creationAttempts: 1
|
||||||
|
# optional: Time between the creation attempts, default: 2s
|
||||||
|
#creationCooldown: 2s
|
||||||
|
|
||||||
# optional: use these DNS servers to resolve denylist urls and upstream DNS servers. It is useful if no system DNS resolver is configured, and/or to encrypt the bootstrap queries.
|
# optional: Blocky can synchronize its cache and blocking state between multiple instances through redis.
|
||||||
bootstrapDns:
|
redis:
|
||||||
- upstream: tcp-tls:one.one.one.one
|
# Server address and port
|
||||||
ips:
|
#address: redis:6379
|
||||||
- 1.1.1.1
|
# Password if necessary
|
||||||
|
#password: passwd
|
||||||
|
# Database, default: 0
|
||||||
|
#database: 2
|
||||||
|
# Connection is required for blocky to start. Default: false
|
||||||
|
#required: true
|
||||||
|
# Max connection attempts, default: 3
|
||||||
|
#connectionAttempts: 10
|
||||||
|
# Time between the connection attempts, default: 1s
|
||||||
|
#connectionCooldown: 3s
|
||||||
|
|
||||||
# optional: logging configuration
|
# optional: DNS listener port(s) and bind ip address(es), default 53 (UDP and TCP). Example: 53, :53, "127.0.0.1:5353,[::1]:5353"
|
||||||
log:
|
port: 553
|
||||||
# optional: Log level (one from trace, debug, info, warn, error). Default: info
|
# optional: Port(s) and bind ip address(es) for DoT (DNS-over-TLS) listener. Example: 853, 127.0.0.1:853
|
||||||
level: info
|
#tlsPort: 853
|
||||||
|
# optional: HTTPS listener port(s) and bind ip address(es), default empty = no http listener. If > 0, will be used for prometheus metrics, pprof, REST API, DoH... Example: 443, :443, 127.0.0.1:443
|
||||||
|
#httpPort: 4000
|
||||||
|
#httpsPort: 443
|
||||||
|
# optional: Mininal TLS version that the DoH and DoT server will use
|
||||||
|
#minTlsServeVersion: 1.3
|
||||||
|
# if https port > 0: path to cert and key file for SSL encryption. if not set, self-signed certificate will be generated
|
||||||
|
#certFile: server.crt
|
||||||
|
#keyFile: server.key
|
||||||
|
# optional: use this DNS server to resolve blacklist urls and upstream DNS servers. Useful if no DNS resolver is configured and blocky needs to resolve a host name. Format net:IP:port, net must be udp or tcp
|
||||||
|
#bootstrapDns: tcp+udp:1.1.1.1
|
||||||
|
|
||||||
|
filtering:
|
||||||
|
# optional: drop all queries with following query types. Default: empty
|
||||||
|
#queryTypes:
|
||||||
|
#- AAAA
|
||||||
|
|
||||||
|
# optional: if path defined, use this file for query resolution (A, AAAA and rDNS). Default: empty
|
||||||
|
hostsFile:
|
||||||
|
# optional: Path to hosts file (e.g. /etc/hosts on Linux)
|
||||||
|
#filePath: /etc/hosts
|
||||||
|
# optional: TTL, default: 1h
|
||||||
|
#hostsTTL: 60m
|
||||||
|
# optional: Time between hosts file refresh, default: 1h
|
||||||
|
#refreshPeriod: 30m
|
||||||
|
# optional: Whether loopback hosts addresses (127.0.0.0/8 and ::1) should be filtered or not, default: false
|
||||||
|
#filterLoopback: true
|
||||||
|
# optional: Log level (one from debug, info, warn, error). Default: info
|
||||||
|
#logLevel: info
|
||||||
|
# optional: Log format (text or json). Default: text
|
||||||
|
#logFormat: text
|
||||||
|
# optional: log timestamps. Default: true
|
||||||
|
#logTimestamp: true
|
||||||
|
# optional: obfuscate log output (replace all alphanumeric characters with *) for user sensitive data like request domains or responses to increase privacy. Default: false
|
||||||
|
#logPrivacy: false
|
||||||
|
|
||||||
|
# optional: add EDE error codes to dns response
|
||||||
|
#ede:
|
||||||
|
# enabled if true, Default: false
|
||||||
|
#enable: true
|
||||||
EOF
|
EOF
|
||||||
msg_ok "Installed Blocky"
|
msg_ok "Installed Blocky"
|
||||||
|
|
||||||
|
|||||||
@@ -1,122 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: MickLesk (Canbiz)
|
|
||||||
# License: MIT
|
|
||||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
|
|
||||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
|
|
||||||
color
|
|
||||||
verb_ip6
|
|
||||||
catch_errors
|
|
||||||
setting_up_container
|
|
||||||
network_check
|
|
||||||
update_os
|
|
||||||
|
|
||||||
msg_info "Installing Dependencies (Patience)"
|
|
||||||
$STD apt-get install -y \
|
|
||||||
unzip \
|
|
||||||
mariadb-server \
|
|
||||||
apache2 \
|
|
||||||
curl \
|
|
||||||
sudo \
|
|
||||||
php8.2-{mbstring,gd,fpm,curl,intl,ldap,tidy,bz2,mysql,zip,xml} \
|
|
||||||
composer \
|
|
||||||
libapache2-mod-php \
|
|
||||||
make \
|
|
||||||
mc \
|
|
||||||
wget \
|
|
||||||
openssh-server
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
msg_info "Setting up Database"
|
|
||||||
DB_NAME=bookstack
|
|
||||||
DB_USER=bookstack
|
|
||||||
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
|
||||||
$STD sudo mysql -u root -e "CREATE DATABASE $DB_NAME;"
|
|
||||||
$STD sudo mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');"
|
|
||||||
$STD sudo mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
|
||||||
{
|
|
||||||
echo "Bookstack-Credentials"
|
|
||||||
echo "Bookstack Database User: $DB_USER"
|
|
||||||
echo "Bookstack Database Password: $DB_PASS"
|
|
||||||
echo "Bookstack Database Name: $DB_NAME"
|
|
||||||
} >> ~/bookstack.creds
|
|
||||||
msg_ok "Set up database"
|
|
||||||
|
|
||||||
msg_info "Setup Bookstack (Patience)"
|
|
||||||
LOCAL_IP="$(hostname -I | awk '{print $1}')"
|
|
||||||
cd /opt
|
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/BookStackApp/BookStack/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
wget -q "https://github.com/BookStackApp/BookStack/archive/refs/tags/v${RELEASE}.zip"
|
|
||||||
unzip -q v${RELEASE}.zip
|
|
||||||
mv BookStack-${RELEASE} /opt/bookstack
|
|
||||||
cd /opt/bookstack
|
|
||||||
cp .env.example .env
|
|
||||||
sudo sed -i "s|APP_URL=.*|APP_URL=http://$LOCAL_IP|g" /opt/bookstack/.env
|
|
||||||
sudo sed -i "s/DB_DATABASE=.*/DB_DATABASE=$DB_NAME/" /opt/bookstack/.env
|
|
||||||
sudo sed -i "s/DB_USERNAME=.*/DB_USERNAME=$DB_USER/" /opt/bookstack/.env
|
|
||||||
sudo sed -i "s/DB_PASSWORD=.*/DB_PASSWORD=$DB_PASS/" /opt/bookstack/.env
|
|
||||||
$STD composer install --no-dev --no-plugins --no-interaction
|
|
||||||
$STD php artisan key:generate --no-interaction --force
|
|
||||||
$STD php artisan migrate --no-interaction --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
|
|
||||||
$STD a2enmod rewrite
|
|
||||||
$STD a2enmod php8.2
|
|
||||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
|
||||||
msg_ok "Installed Bookstack"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
|
||||||
cat <<EOF >/etc/apache2/sites-available/bookstack.conf
|
|
||||||
<VirtualHost *:80>
|
|
||||||
ServerAdmin webmaster@localhost
|
|
||||||
DocumentRoot /opt/bookstack/public/
|
|
||||||
|
|
||||||
<Directory /opt/bookstack/public/>
|
|
||||||
Options -Indexes +FollowSymLinks
|
|
||||||
AllowOverride None
|
|
||||||
Require all granted
|
|
||||||
<IfModule mod_rewrite.c>
|
|
||||||
<IfModule mod_negotiation.c>
|
|
||||||
Options -MultiViews -Indexes
|
|
||||||
</IfModule>
|
|
||||||
|
|
||||||
RewriteEngine On
|
|
||||||
|
|
||||||
# Handle Authorization Header
|
|
||||||
RewriteCond %{HTTP:Authorization} .
|
|
||||||
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
|
|
||||||
|
|
||||||
# Redirect Trailing Slashes If Not A Folder...
|
|
||||||
RewriteCond %{REQUEST_FILENAME} !-d
|
|
||||||
RewriteCond %{REQUEST_URI} (.+)/$
|
|
||||||
RewriteRule ^ %1 [L,R=301]
|
|
||||||
|
|
||||||
# Handle Front Controller...
|
|
||||||
RewriteCond %{REQUEST_FILENAME} !-d
|
|
||||||
RewriteCond %{REQUEST_FILENAME} !-f
|
|
||||||
RewriteRule ^ index.php [L]
|
|
||||||
</IfModule>
|
|
||||||
</Directory>
|
|
||||||
|
|
||||||
ErrorLog /var/log/apache2/error.log
|
|
||||||
CustomLog /var/log/apache2/access.log combined
|
|
||||||
|
|
||||||
</VirtualHost>
|
|
||||||
EOF
|
|
||||||
$STD a2ensite bookstack.conf
|
|
||||||
$STD a2dissite 000-default.conf
|
|
||||||
$STD systemctl reload apache2
|
|
||||||
msg_ok "Created Services"
|
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -rf /opt/v${RELEASE}.zip
|
|
||||||
$STD apt-get autoremove
|
|
||||||
$STD apt-get autoclean
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
@@ -17,34 +17,26 @@ msg_info "Installing Dependencies"
|
|||||||
$STD apt-get install -y curl
|
$STD apt-get install -y curl
|
||||||
$STD apt-get install -y sudo
|
$STD apt-get install -y sudo
|
||||||
$STD apt-get install -y mc
|
$STD apt-get install -y mc
|
||||||
$STD apt-get install -y gpg
|
$STD apt-get install -y gnupg2
|
||||||
$STD apt-get install -y apt-transport-https
|
$STD apt-get install -y ca-certificates
|
||||||
$STD apt-get install -y lsb-release
|
$STD apt-get install -y lsb-release
|
||||||
|
$STD apt-get install -y debian-archive-keyring
|
||||||
$STD apt-get install -y openssh-server
|
$STD apt-get install -y openssh-server
|
||||||
$STD apt-get install -y wget
|
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing Nginx"
|
msg_info "Installing Nginx v1.20.0"
|
||||||
wget -qO- https://nginx.org/keys/nginx_signing.key | gpg --dearmor >/usr/share/keyrings/nginx-archive-keyring.gpg
|
wget -qO- https://nginx.org/keys/nginx_signing.key | gpg --dearmor >/usr/share/keyrings/nginx-archive-keyring.gpg
|
||||||
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/debian $(lsb_release -cs) nginx" >/etc/apt/sources.list.d/nginx.list
|
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/debian `lsb_release -cs` nginx" >/etc/apt/sources.list.d/nginx.list
|
||||||
$STD apt-get update
|
$STD apt-get update
|
||||||
$STD apt-get install -y nginx=1.26.2*
|
$STD apt-get install -y nginx=1.24.0-1~$(lsb_release -cs)
|
||||||
msg_ok "Installed Nginx"
|
msg_ok "Installed Nginx v1.20.0"
|
||||||
|
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/bunkerity/bunkerweb/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
msg_info "Installing BunkerWeb v1.5.7"
|
||||||
msg_info "Installing BunkerWeb v${RELEASE} (Patience)"
|
|
||||||
curl -fsSL "https://repo.bunkerweb.io/bunkerity/bunkerweb/gpgkey" | gpg --dearmor >/etc/apt/keyrings/bunkerity_bunkerweb-archive-keyring.gpg
|
|
||||||
echo "deb [signed-by=/etc/apt/keyrings/bunkerity_bunkerweb-archive-keyring.gpg] https://repo.bunkerweb.io/bunkerity/bunkerweb/debian/ bookworm main" >/etc/apt/sources.list.d/bunkerity_bunkerweb.list
|
|
||||||
$STD apt-get update
|
|
||||||
export UI_WIZARD=1
|
export UI_WIZARD=1
|
||||||
$STD apt-get install -y bunkerweb=${RELEASE}
|
curl -sSL https://packagecloud.io/install/repositories/bunkerity/bunkerweb/script.deb.sh | bash &>/dev/null
|
||||||
cat <<EOF >/etc/apt/preferences.d/bunkerweb
|
$STD apt-get install -y bunkerweb=1.5.7
|
||||||
Package: bunkerweb
|
#$STD apt-mark hold nginx bunkerweb
|
||||||
Pin: version ${RELEASE}
|
msg_ok "Installed BunkerWeb v1.5.7"
|
||||||
Pin-Priority: 1001
|
|
||||||
EOF
|
|
||||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
|
||||||
msg_ok "Installed BunkerWeb v${RELEASE}"
|
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
|||||||
@@ -76,15 +76,14 @@ msg_ok "Installed Change Detection"
|
|||||||
msg_info "Installing Browserless & Playwright"
|
msg_info "Installing Browserless & Playwright"
|
||||||
mkdir /opt/browserless
|
mkdir /opt/browserless
|
||||||
$STD python3 -m pip install playwright
|
$STD python3 -m pip install playwright
|
||||||
$STD git clone https://github.com/browserless/chrome /opt/browserless
|
$STD git clone -b v1 https://github.com/browserless/chrome /opt/browserless
|
||||||
$STD npm install --prefix /opt/browserless
|
$STD npm install --prefix /opt/browserless
|
||||||
$STD /opt/browserless/node_modules/playwright-core/cli.js install --with-deps chrome chromium firefox webkit
|
|
||||||
$STD npm run build --prefix /opt/browserless
|
$STD npm run build --prefix /opt/browserless
|
||||||
$STD npm run build:function --prefix /opt/browserless
|
|
||||||
$STD npm prune production --prefix /opt/browserless
|
$STD npm prune production --prefix /opt/browserless
|
||||||
msg_ok "Installed Browserless & Playwright"
|
msg_ok "Installed Browserless & Playwright"
|
||||||
|
|
||||||
msg_info "Installing Font Packages"
|
msg_info "Installing Font Packages"
|
||||||
|
DEBIAN_FRONTEND=noninteractive
|
||||||
$STD apt-get install -y \
|
$STD apt-get install -y \
|
||||||
fontconfig \
|
fontconfig \
|
||||||
libfontconfig1 \
|
libfontconfig1 \
|
||||||
@@ -127,8 +126,8 @@ Wants=browserless.service
|
|||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
WorkingDirectory=/opt/changedetection
|
WorkingDirectory=/opt/changedetection
|
||||||
Environment=WEBDRIVER_URL=http://127.0.0.1:4444/wd/hub
|
Environment="WEBDRIVER_URL=http://127.0.0.1:4444/wd/hub"
|
||||||
Environment=PLAYWRIGHT_DRIVER_URL=ws://localhost:3000/chrome?launch={"defaultViewport":{"height":720,"width":1280},"headless":false,"stealth":true}&blockAds=true
|
Environment="PLAYWRIGHT_DRIVER_URL=ws://127.0.0.1:3000/?stealth=1&--disable-web-security=true"
|
||||||
ExecStart=changedetection.io -d /opt/changedetection -p 5000
|
ExecStart=changedetection.io -d /opt/changedetection -p 5000
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
@@ -139,8 +138,16 @@ cat <<EOF >/etc/systemd/system/browserless.service
|
|||||||
Description=browserless service
|
Description=browserless service
|
||||||
After=network.target
|
After=network.target
|
||||||
[Service]
|
[Service]
|
||||||
|
Environment=APP_DIR=/opt/browserless
|
||||||
|
Environment=PLAYWRIGHT_BROWSERS_PATH=/opt/browserless
|
||||||
|
Environment=CONNECTION_TIMEOUT=60000
|
||||||
|
Environment=HOST=127.0.0.1
|
||||||
|
Environment=LANG="C.UTF-8"
|
||||||
|
Environment=NODE_ENV=production
|
||||||
|
Environment=PORT=3000
|
||||||
|
Environment=WORKSPACE_DIR=/opt/browserless/workspace
|
||||||
WorkingDirectory=/opt/browserless
|
WorkingDirectory=/opt/browserless
|
||||||
ExecStart=/opt/browserless/scripts/start.sh
|
ExecStart=/opt/browserless/start.sh
|
||||||
SyslogIdentifier=browserless
|
SyslogIdentifier=browserless
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=default.target
|
WantedBy=default.target
|
||||||
|
|||||||
@@ -1,50 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
#Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: Michel Roegl-Brunner (michelroegl-brunner)
|
|
||||||
# License: MIT
|
|
||||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
|
|
||||||
|
|
||||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
|
||||||
color
|
|
||||||
verb_ip6
|
|
||||||
catch_errors
|
|
||||||
setting_up_container
|
|
||||||
network_check
|
|
||||||
update_os
|
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
|
||||||
$STD apt-get install -y \
|
|
||||||
curl \
|
|
||||||
sudo \
|
|
||||||
mc \
|
|
||||||
wget \
|
|
||||||
openssh-server
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
msg_info "Install Checkmk"
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/checkmk/checkmk/tags | grep "name" | awk '{print substr($2, 3, length($2)-4) }' | grep -v "*-rc" | tail -n +2 | head -n 1)
|
|
||||||
wget -q https://download.checkmk.com/checkmk/${RELEASE}/check-mk-raw-${RELEASE}_0.bookworm_arm64.deb -O /opt/checkmk.deb
|
|
||||||
$STD apt-get install -y /opt/checkmk.deb
|
|
||||||
echo "${RELEASE}" >"/opt/checkmk_version.txt"
|
|
||||||
msg_ok "Installed Checkmk"
|
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
|
||||||
PASSWORD=$(omd create monitoring | grep "password:" | awk '{print $NF}')
|
|
||||||
$STD omd start
|
|
||||||
{
|
|
||||||
echo "Application-Credentials"
|
|
||||||
echo "Username: cmkadmin"
|
|
||||||
echo "Password: $PASSWORD"
|
|
||||||
} >> ~/checkmk.creds
|
|
||||||
msg_ok "Created Service"
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -rf /opt/checkmk.deb
|
|
||||||
$STD apt-get -y autoremove
|
|
||||||
$STD apt-get -y autoclean
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
@@ -30,41 +30,6 @@ $STD apt-get update
|
|||||||
$STD apt-get install -y cloudflared
|
$STD apt-get install -y cloudflared
|
||||||
msg_ok "Installed Cloudflared"
|
msg_ok "Installed Cloudflared"
|
||||||
|
|
||||||
read -r -p "Would you like to configure cloudflared as a DNS-over-HTTPS (DoH) proxy? <y/N> " prompt
|
|
||||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
|
||||||
msg_info "Creating Service"
|
|
||||||
cat <<EOF >/usr/local/etc/cloudflared/config.yml
|
|
||||||
proxy-dns: true
|
|
||||||
proxy-dns-address: 0.0.0.0
|
|
||||||
proxy-dns-port: 53
|
|
||||||
proxy-dns-max-upstream-conns: 5
|
|
||||||
proxy-dns-upstream:
|
|
||||||
- https://1.1.1.1/dns-query
|
|
||||||
- https://1.0.0.1/dns-query
|
|
||||||
#- https://8.8.8.8/dns-query
|
|
||||||
#- https://8.8.4.4/dns-query
|
|
||||||
#- https://9.9.9.9/dns-query
|
|
||||||
#- https://149.112.112.112/dns-query
|
|
||||||
EOF
|
|
||||||
cat <<EOF >/etc/systemd/system/cloudflared.service
|
|
||||||
[Unit]
|
|
||||||
Description=cloudflared DNS-over-HTTPS (DoH) proxy
|
|
||||||
After=syslog.target network-online.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
ExecStart=/usr/local/bin/cloudflared --config /usr/local/etc/cloudflared/config.yml
|
|
||||||
Restart=on-failure
|
|
||||||
RestartSec=10
|
|
||||||
KillMode=process
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
systemctl enable -q --now cloudflared.service
|
|
||||||
msg_ok "Created Service"
|
|
||||||
fi
|
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
|
||||||
|
|||||||
@@ -1,40 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Copyright (c) 2021-2024 tteck
|
|
||||||
# Author: tteck
|
|
||||||
# Co-Author: havardthom
|
|
||||||
# License: MIT
|
|
||||||
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/cockpit-project/cockpit
|
|
||||||
|
|
||||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
|
|
||||||
color
|
|
||||||
verb_ip6
|
|
||||||
catch_errors
|
|
||||||
setting_up_container
|
|
||||||
network_check
|
|
||||||
update_os
|
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
|
||||||
$STD apt-get install -y curl
|
|
||||||
$STD apt-get install -y sudo
|
|
||||||
$STD apt-get install -y mc
|
|
||||||
$STD apt-get install -y wget
|
|
||||||
$STD apt-get install -y openssh-server
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
msg_info "Installing Cockpit"
|
|
||||||
source /etc/os-release
|
|
||||||
echo "deb http://deb.debian.org/debian ${VERSION_CODENAME}-backports main" >/etc/apt/sources.list.d/backports.list
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get install -t ${VERSION_CODENAME}-backports cockpit --no-install-recommends -y
|
|
||||||
sed -i "s/root//g" /etc/cockpit/disallowed-users
|
|
||||||
msg_ok "Installed Cockpit"
|
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
$STD apt-get -y autoremove
|
|
||||||
$STD apt-get -y autoclean
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
@@ -19,7 +19,6 @@ $STD apt-get install -y sudo
|
|||||||
$STD apt-get install -y mc
|
$STD apt-get install -y mc
|
||||||
$STD apt-get install -y wget
|
$STD apt-get install -y wget
|
||||||
$STD apt-get install -y openssh-server
|
$STD apt-get install -y openssh-server
|
||||||
$STD apt-get install -y rsync
|
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing Azul Zulu"
|
msg_info "Installing Azul Zulu"
|
||||||
@@ -30,14 +29,11 @@ $STD apt-get update
|
|||||||
$STD apt-get -y install zulu17-jdk
|
$STD apt-get -y install zulu17-jdk
|
||||||
msg_ok "Installed Azul Zulu"
|
msg_ok "Installed Azul Zulu"
|
||||||
|
|
||||||
RELEASE=$(curl -sL https://api.github.com/repos/Athou/commafeed/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
msg_info "Installing CommaFeed"
|
||||||
msg_info "Installing CommaFeed ${RELEASE}"
|
mkdir /opt/commafeed && cd /opt/commafeed
|
||||||
mkdir /opt/commafeed
|
wget -q https://github.com/Athou/commafeed/releases/latest/download/commafeed.jar
|
||||||
wget -q https://github.com/Athou/commafeed/releases/download/${RELEASE}/commafeed-${RELEASE}-h2-jvm.zip
|
wget -q https://github.com/Athou/commafeed/releases/latest/download/config.yml.example -O config.yml
|
||||||
unzip -q commafeed-${RELEASE}-h2-jvm.zip
|
msg_ok "Installed CommaFeed"
|
||||||
mv commafeed-${RELEASE}-h2/* /opt/commafeed/
|
|
||||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
|
||||||
msg_ok "Installed CommaFeed ${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/systemd/system/commafeed.service
|
cat <<EOF >/etc/systemd/system/commafeed.service
|
||||||
@@ -46,7 +42,7 @@ Description=CommaFeed Service
|
|||||||
After=network.target
|
After=network.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
ExecStart=java -jar quarkus-run.jar
|
ExecStart=/usr/bin/java -Djava.net.preferIPv4Stack=true -jar /opt/commafeed/commafeed.jar server /opt/commafeed/config.yml
|
||||||
WorkingDirectory=/opt/commafeed/
|
WorkingDirectory=/opt/commafeed/
|
||||||
Restart=always
|
Restart=always
|
||||||
|
|
||||||
@@ -60,7 +56,7 @@ motd_ssh
|
|||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -rf commafeed-${RELEASE}-h2 commafeed-${RELEASE}-h2-jvm.zip zulu-repo_1.0.0-3_all.deb
|
rm -rf zulu-repo_1.0.0-3_all.deb
|
||||||
$STD apt-get -y autoremove
|
$STD apt-get -y autoremove
|
||||||
$STD apt-get -y autoclean
|
$STD apt-get -y autoclean
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
|||||||
@@ -63,7 +63,15 @@ else
|
|||||||
msg_ok "Installed Portainer Agent $PORTAINER_AGENT_LATEST_VERSION"
|
msg_ok "Installed Portainer Agent $PORTAINER_AGENT_LATEST_VERSION"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
read -r -p "Would you like to add Docker Compose? <y/N> " prompt
|
||||||
|
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||||
|
msg_info "Installing Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
|
||||||
|
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
|
||||||
|
mkdir -p $DOCKER_CONFIG/cli-plugins
|
||||||
|
curl -sSL https://github.com/docker/compose/releases/download/$DOCKER_COMPOSE_LATEST_VERSION/docker-compose-linux-aarch64 -o ~/.docker/cli-plugins/docker-compose
|
||||||
|
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
|
||||||
|
msg_ok "Installed Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
|
||||||
|
fi
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
|||||||
+15
-31
@@ -15,40 +15,24 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies (Patience)"
|
||||||
$STD apt-get install -y curl
|
$STD apt-get install -y --no-install-recommends \
|
||||||
$STD apt-get install -y sudo
|
ffmpeg \
|
||||||
$STD apt-get install -y mc
|
build-essential \
|
||||||
$STD apt-get install -y wget
|
unzip \
|
||||||
$STD apt-get install -y ca-certificates
|
pkg-config \
|
||||||
$STD apt-get install -y openssh-server
|
curl \
|
||||||
|
sudo \
|
||||||
|
git \
|
||||||
|
make \
|
||||||
|
mc \
|
||||||
|
wget \
|
||||||
|
ca-certificates \
|
||||||
|
openssh-server
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing FFmpeg (Patience)"
|
|
||||||
wget -q https://www.deb-multimedia.org/pool/main/d/deb-multimedia-keyring/deb-multimedia-keyring_2016.8.1_all.deb
|
|
||||||
$STD dpkg -i deb-multimedia-keyring_2016.8.1_all.deb
|
|
||||||
cat <<EOF >/etc/apt/sources.list.d/backports.list
|
|
||||||
deb https://www.deb-multimedia.org bookworm main non-free
|
|
||||||
deb https://www.deb-multimedia.org bookworm-backports main
|
|
||||||
EOF
|
|
||||||
$STD apt update
|
|
||||||
DEBIAN_FRONTEND=noninteractive $STD apt-get install -t bookworm-backports ffmpeg -y
|
|
||||||
rm -rf /etc/apt/sources.list.d/backports.list deb-multimedia-keyring_2016.8.1_all.deb
|
|
||||||
$STD apt update
|
|
||||||
msg_ok "Installed FFmpeg"
|
|
||||||
|
|
||||||
msg_info "Setting Up Hardware Acceleration"
|
msg_info "Installing ErsatzTV "
|
||||||
$STD apt-get -y install {va-driver-all,ocl-icd-libopencl1,intel-opencl-icd,vainfo,intel-gpu-tools}
|
|
||||||
if [[ "$CTTYPE" == "0" ]]; then
|
|
||||||
chgrp video /dev/dri
|
|
||||||
chmod 755 /dev/dri
|
|
||||||
chmod 660 /dev/dri/*
|
|
||||||
$STD adduser $(id -u -n) video
|
|
||||||
$STD adduser $(id -u -n) render
|
|
||||||
fi
|
|
||||||
msg_ok "Set Up Hardware Acceleration"
|
|
||||||
|
|
||||||
msg_info "Installing ErsatzTV"
|
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/ErsatzTV/ErsatzTV/releases | grep -oP '"tag_name": "\K[^"]+' | head -n 1)
|
RELEASE=$(curl -s https://api.github.com/repos/ErsatzTV/ErsatzTV/releases | grep -oP '"tag_name": "\K[^"]+' | head -n 1)
|
||||||
wget -qO- "https://github.com/ErsatzTV/ErsatzTV/releases/download/${RELEASE}/ErsatzTV-${RELEASE}-linux-arm64.tar.gz" | tar -xz -C /opt
|
wget -qO- "https://github.com/ErsatzTV/ErsatzTV/releases/download/${RELEASE}/ErsatzTV-${RELEASE}-linux-arm64.tar.gz" | tar -xz -C /opt
|
||||||
mv "/opt/ErsatzTV-${RELEASE}-linux-arm64" /opt/ErsatzTV
|
mv "/opt/ErsatzTV-${RELEASE}-linux-arm64" /opt/ErsatzTV
|
||||||
|
|||||||
@@ -1,46 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Copyright (c) 2021-2024 tteck
|
|
||||||
# Author: tteck
|
|
||||||
# Co-Author: MickLesk (Canbiz)
|
|
||||||
# License: MIT
|
|
||||||
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/evcc-io/evcc
|
|
||||||
|
|
||||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
|
|
||||||
color
|
|
||||||
verb_ip6
|
|
||||||
catch_errors
|
|
||||||
setting_up_container
|
|
||||||
network_check
|
|
||||||
update_os
|
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
|
||||||
$STD apt-get install -y \
|
|
||||||
curl \
|
|
||||||
sudo \
|
|
||||||
mc \
|
|
||||||
lsb-release \
|
|
||||||
gpg \
|
|
||||||
wget \
|
|
||||||
openssh-server
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
msg_info "Setting up evcc Repository"
|
|
||||||
curl -fsSL https://dl.evcc.io/public/evcc/stable/gpg.EAD5D0E07B0EC0FD.key | gpg --dearmor -o /etc/apt/keyrings/evcc-stable.gpg
|
|
||||||
echo "deb [signed-by=/etc/apt/keyrings/evcc-stable.gpg] https://dl.evcc.io/public/evcc/stable/deb/debian $(lsb_release -cs) main" >/etc/apt/sources.list.d/evcc-stable.list
|
|
||||||
$STD apt update
|
|
||||||
msg_ok "evcc Repository setup sucessfully"
|
|
||||||
|
|
||||||
msg_info "Installing evcc"
|
|
||||||
$STD apt install -y evcc
|
|
||||||
systemctl enable -q --now evcc.service
|
|
||||||
msg_ok "Installed evcc"
|
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
$STD apt-get -y autoremove
|
|
||||||
$STD apt-get -y autoclean
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
@@ -1,103 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: quantumryuu
|
|
||||||
# License: MIT
|
|
||||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
|
|
||||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
|
||||||
color
|
|
||||||
verb_ip6
|
|
||||||
catch_errors
|
|
||||||
setting_up_container
|
|
||||||
network_check
|
|
||||||
update_os
|
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
|
||||||
$STD apt-get install -y \
|
|
||||||
curl \
|
|
||||||
mc \
|
|
||||||
sudo \
|
|
||||||
wget \
|
|
||||||
openssh-server
|
|
||||||
curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
|
|
||||||
echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ bookworm main" >/etc/apt/sources.list.d/php.list
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get install -y \
|
|
||||||
apache2 \
|
|
||||||
libapache2-mod-php8.4 \
|
|
||||||
php8.4-{bcmath,cli,intl,curl,zip,gd,xml,mbstring,mysql} \
|
|
||||||
mariadb-server \
|
|
||||||
composer
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
msg_info "Setting up database"
|
|
||||||
DB_NAME=firefly
|
|
||||||
DB_USER=firefly
|
|
||||||
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
|
||||||
MYSQL_VERSION=$(mysql --version | grep -oP 'Distrib \K[0-9]+\.[0-9]+\.[0-9]+')
|
|
||||||
mysql -u root -e "CREATE DATABASE $DB_NAME;"
|
|
||||||
mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');"
|
|
||||||
mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
|
||||||
{
|
|
||||||
echo "Firefly-Credentials"
|
|
||||||
echo "Firefly Database User: $DB_USER"
|
|
||||||
echo "Firefly Database Password: $DB_PASS"
|
|
||||||
echo "Firefly Database Name: $DB_NAME"
|
|
||||||
} >> ~/firefly.creds
|
|
||||||
msg_ok "Set up database"
|
|
||||||
|
|
||||||
msg_info "Installing Firefly III (Patience)"
|
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/firefly-iii/firefly-iii/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
|
|
||||||
cd /opt
|
|
||||||
wget -q "https://github.com/firefly-iii/firefly-iii/releases/download/v${RELEASE}/FireflyIII-v${RELEASE}.tar.gz"
|
|
||||||
mkdir -p /opt/firefly
|
|
||||||
tar -xzf FireflyIII-v${RELEASE}.tar.gz -C /opt/firefly
|
|
||||||
chown -R www-data:www-data /opt/firefly
|
|
||||||
chmod -R 775 /opt/firefly/storage
|
|
||||||
cd /opt/firefly
|
|
||||||
cp .env.example .env
|
|
||||||
sed -i "s/DB_HOST=.*/DB_HOST=localhost/" /opt/firefly/.env
|
|
||||||
sed -i "s/DB_PASSWORD=.*/DB_PASSWORD=$DB_PASS/" /opt/firefly/.env
|
|
||||||
echo "export COMPOSER_ALLOW_SUPERUSER=1" >> ~/.bashrc
|
|
||||||
source ~/.bashrc
|
|
||||||
$STD composer install --no-dev --no-plugins --no-interaction
|
|
||||||
$STD php artisan firefly:upgrade-database
|
|
||||||
$STD php artisan firefly:correct-database
|
|
||||||
$STD php artisan firefly:report-integrity
|
|
||||||
$STD php artisan firefly:laravel-passport-keys
|
|
||||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
|
||||||
msg_ok "Installed Firefly III"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
|
||||||
cat <<EOF >/etc/apache2/sites-available/firefly.conf
|
|
||||||
<VirtualHost *:80>
|
|
||||||
ServerAdmin webmaster@localhost
|
|
||||||
DocumentRoot /opt/firefly/public/
|
|
||||||
|
|
||||||
<Directory /opt/firefly/public>
|
|
||||||
Options FollowSymLinks
|
|
||||||
AllowOverride All
|
|
||||||
Require all granted
|
|
||||||
</Directory>
|
|
||||||
|
|
||||||
ErrorLog /var/log/apache2/error.log
|
|
||||||
CustomLog /var/log/apache2/access.log combined
|
|
||||||
|
|
||||||
</VirtualHost>
|
|
||||||
EOF
|
|
||||||
$STD a2enmod php8.4
|
|
||||||
$STD a2enmod rewrite
|
|
||||||
$STD a2ensite firefly.conf
|
|
||||||
$STD a2dissite 000-default.conf
|
|
||||||
$STD systemctl reload apache2
|
|
||||||
msg_ok "Created Service"
|
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -rf /opt/FireflyIII-v${RELEASE}.tar.gz
|
|
||||||
$STD apt-get -y autoremove
|
|
||||||
$STD apt-get -y autoclean
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
@@ -23,9 +23,8 @@ $STD apt-get install -y gpg
|
|||||||
$STD apt-get install -y xvfb
|
$STD apt-get install -y xvfb
|
||||||
$STD apt-get install -y wget
|
$STD apt-get install -y wget
|
||||||
$STD apt-get install -y git
|
$STD apt-get install -y git
|
||||||
|
$STD apt-get install -y chromium
|
||||||
$STD apt-get install -y openssh-server
|
$STD apt-get install -y openssh-server
|
||||||
$STD apt-get install -y chromium-common
|
|
||||||
$STD apt-mark hold chromium
|
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Updating Python3"
|
msg_info "Updating Python3"
|
||||||
@@ -41,13 +40,6 @@ $STD git clone https://github.com/FlareSolverr/FlareSolverr /opt/flaresolverr
|
|||||||
$STD pip install -r /opt/flaresolverr/requirements.txt
|
$STD pip install -r /opt/flaresolverr/requirements.txt
|
||||||
msg_ok "Installed FlareSolverr"
|
msg_ok "Installed FlareSolverr"
|
||||||
|
|
||||||
msg_info "Installing Chrome Webdriver"
|
|
||||||
wget -q https://github.com/electron/electron/releases/download/v33.2.0/chromedriver-v33.2.0-linux-arm64.zip -O /opt/flaresolverr/webdriver.zip
|
|
||||||
cd /opt/flaresolverr
|
|
||||||
unzip -q webdriver.zip chromedriver
|
|
||||||
sed -i 's|^PATCHED_DRIVER_PATH = None|PATCHED_DRIVER_PATH = "/opt/flaresolverr/chromedriver"|' ./src/utils.py
|
|
||||||
msg_ok "Installed Chrome Webdriver"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/systemd/system/flaresolverr.service
|
cat <<EOF >/etc/systemd/system/flaresolverr.service
|
||||||
[Unit]
|
[Unit]
|
||||||
@@ -61,7 +53,7 @@ Type=simple
|
|||||||
Environment="LOG_LEVEL=info"
|
Environment="LOG_LEVEL=info"
|
||||||
Environment="CAPTCHA_SOLVER=none"
|
Environment="CAPTCHA_SOLVER=none"
|
||||||
WorkingDirectory=/opt/flaresolverr
|
WorkingDirectory=/opt/flaresolverr
|
||||||
ExecStart=python3 /opt/flaresolverr/src/flaresolverr.py
|
ExecStart=python /opt/flaresolverr/src/flaresolverr.py
|
||||||
TimeoutStopSec=30
|
TimeoutStopSec=30
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
@@ -73,7 +65,6 @@ motd_ssh
|
|||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm /opt/flaresolverr/webdriver.zip
|
|
||||||
$STD apt-get -y autoremove
|
$STD apt-get -y autoremove
|
||||||
$STD apt-get -y autoclean
|
$STD apt-get -y autoclean
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
|||||||
+10
-19
@@ -1,8 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# Copyright (c) 2021-2024 tteck
|
# Copyright (c) 2021-2024 tteck
|
||||||
# Author: tteck (tteckster)
|
# Authors: tteck (tteckster)
|
||||||
# Co-Author: remz1337
|
|
||||||
# License: MIT
|
# License: MIT
|
||||||
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||||
|
|
||||||
@@ -15,12 +14,11 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies (Patience)"
|
msg_info "Installing Dependencies (Patience)"
|
||||||
$STD apt-get install -y {curl,sudo,mc,git,gpg,automake,build-essential,xz-utils,libtool,ccache,pkg-config,libgtk-3-dev,libavcodec-dev,libavformat-dev,libswscale-dev,libv4l-dev,libxvidcore-dev,libx264-dev,libjpeg-dev,libpng-dev,libtiff-dev,gfortran,openexr,libatlas-base-dev,libssl-dev,libtbb2,libtbb-dev,libdc1394-22-dev,libopenexr-dev,libgstreamer-plugins-base1.0-dev,libgstreamer1.0-dev,gcc,gfortran,libopenblas-dev,liblapack-dev,libusb-1.0-0-dev,jq,moreutils,wget,openssh-server,ca-certificates}
|
$STD apt-get install -y {curl,sudo,mc,git,gpg,automake,build-essential,xz-utils,libtool,ccache,pkg-config,libgtk-3-dev,libavcodec-dev,libavformat-dev,libswscale-dev,libv4l-dev,libxvidcore-dev,libx264-dev,libjpeg-dev,libpng-dev,libtiff-dev,gfortran,openexr,libatlas-base-dev,libssl-dev,libtbb2,libtbb-dev,libdc1394-22-dev,libopenexr-dev,libgstreamer-plugins-base1.0-dev,libgstreamer1.0-dev,gcc,gfortran,libopenblas-dev,liblapack-dev,libusb-1.0-0-dev,jq,wget,openssh-server}
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing Python3 Dependencies"
|
msg_info "Installing Python3 Dependencies"
|
||||||
$STD apt-get install -y {python3,python3-dev,python3-setuptools,python3-distutils,python3-pip}
|
$STD apt-get install -y {python3,python3-dev,python3-setuptools,python3-distutils,python3-pip}
|
||||||
$STD pip install --upgrade pip
|
|
||||||
msg_ok "Installed Python3 Dependencies"
|
msg_ok "Installed Python3 Dependencies"
|
||||||
|
|
||||||
msg_info "Installing Node.js"
|
msg_info "Installing Node.js"
|
||||||
@@ -63,7 +61,6 @@ cp -a /opt/frigate/docker/main/rootfs/. /
|
|||||||
export TARGETARCH="arm64"
|
export TARGETARCH="arm64"
|
||||||
echo 'libc6 libraries/restart-without-asking boolean true' | debconf-set-selections
|
echo 'libc6 libraries/restart-without-asking boolean true' | debconf-set-selections
|
||||||
$STD /opt/frigate/docker/main/install_deps.sh
|
$STD /opt/frigate/docker/main/install_deps.sh
|
||||||
$STD apt update
|
|
||||||
$STD ln -svf /usr/lib/btbn-ffmpeg/bin/ffmpeg /usr/local/bin/ffmpeg
|
$STD ln -svf /usr/lib/btbn-ffmpeg/bin/ffmpeg /usr/local/bin/ffmpeg
|
||||||
$STD ln -svf /usr/lib/btbn-ffmpeg/bin/ffprobe /usr/local/bin/ffprobe
|
$STD ln -svf /usr/lib/btbn-ffmpeg/bin/ffprobe /usr/local/bin/ffprobe
|
||||||
$STD pip3 install -U /wheels/*.whl
|
$STD pip3 install -U /wheels/*.whl
|
||||||
@@ -104,7 +101,7 @@ fi
|
|||||||
echo "tmpfs /tmp/cache tmpfs defaults 0 0" >> /etc/fstab
|
echo "tmpfs /tmp/cache tmpfs defaults 0 0" >> /etc/fstab
|
||||||
msg_ok "Installed Frigate $RELEASE"
|
msg_ok "Installed Frigate $RELEASE"
|
||||||
|
|
||||||
if grep -q -o -m1 -E 'avx[^ ]*' /proc/cpuinfo; then
|
if grep -q -o -m1 'avx[^ ]*' /proc/cpuinfo; then
|
||||||
msg_ok "AVX Support Detected"
|
msg_ok "AVX Support Detected"
|
||||||
msg_info "Installing Openvino Object Detection Model (Resilience)"
|
msg_info "Installing Openvino Object Detection Model (Resilience)"
|
||||||
$STD pip install -r /opt/frigate/docker/main/requirements-ov.txt
|
$STD pip install -r /opt/frigate/docker/main/requirements-ov.txt
|
||||||
@@ -120,7 +117,7 @@ if grep -q -o -m1 -E 'avx[^ ]*' /proc/cpuinfo; then
|
|||||||
detectors:
|
detectors:
|
||||||
ov:
|
ov:
|
||||||
type: openvino
|
type: openvino
|
||||||
device: CPU
|
device: AUTO
|
||||||
model:
|
model:
|
||||||
path: /openvino-model/FP16/ssdlite_mobilenet_v2.xml
|
path: /openvino-model/FP16/ssdlite_mobilenet_v2.xml
|
||||||
model:
|
model:
|
||||||
@@ -170,16 +167,11 @@ msg_ok "Installed Coral Object Detection Model"
|
|||||||
|
|
||||||
msg_info "Building Nginx with Custom Modules"
|
msg_info "Building Nginx with Custom Modules"
|
||||||
$STD /opt/frigate/docker/main/build_nginx.sh
|
$STD /opt/frigate/docker/main/build_nginx.sh
|
||||||
sed -e '/s6-notifyoncheck/ s/^#*/#/' -i /opt/frigate/docker/main/rootfs/etc/s6-overlay/s6-rc.d/nginx/run
|
sed -i 's/exec nginx/exec \/usr\/local\/nginx\/sbin\/nginx/g' /opt/frigate/docker/main/rootfs/etc/s6-overlay/s6-rc.d/nginx/run
|
||||||
ln -sf /usr/local/nginx/sbin/nginx /usr/local/bin/nginx
|
sed -i 's/error_log \/dev\/stdout warn\;/error_log \/dev\/shm\/logs\/nginx\/current warn\;/' /usr/local/nginx/conf/nginx.conf
|
||||||
|
sed -i 's/access_log \/dev\/stdout main\;/access_log \/dev\/shm\/logs\/nginx\/current main\;/' /usr/local/nginx/conf/nginx.conf
|
||||||
msg_ok "Built Nginx"
|
msg_ok "Built Nginx"
|
||||||
|
|
||||||
msg_info "Installing Tempio"
|
|
||||||
sed -i 's|/rootfs/usr/local|/usr/local|g' /opt/frigate/docker/main/install_tempio.sh
|
|
||||||
$STD /opt/frigate/docker/main/install_tempio.sh
|
|
||||||
ln -sf /usr/local/tempio/bin/tempio /usr/local/bin/tempio
|
|
||||||
msg_ok "Installed Tempio"
|
|
||||||
|
|
||||||
msg_info "Creating Services"
|
msg_info "Creating Services"
|
||||||
cat <<EOF >/etc/systemd/system/create_directories.service
|
cat <<EOF >/etc/systemd/system/create_directories.service
|
||||||
[Unit]
|
[Unit]
|
||||||
@@ -207,7 +199,7 @@ Restart=always
|
|||||||
RestartSec=1
|
RestartSec=1
|
||||||
User=root
|
User=root
|
||||||
ExecStartPre=+rm /dev/shm/logs/go2rtc/current
|
ExecStartPre=+rm /dev/shm/logs/go2rtc/current
|
||||||
ExecStart=/bin/bash -c "bash /opt/frigate/docker/main/rootfs/etc/s6-overlay/s6-rc.d/go2rtc/run 2> >(/usr/bin/ts '%%Y-%%m-%%d %%H:%%M:%%.S ' >&2) | /usr/bin/ts '%%Y-%%m-%%d %%H:%%M:%%.S '"
|
ExecStart=bash /opt/frigate/docker/main/rootfs/etc/s6-overlay/s6-rc.d/go2rtc/run
|
||||||
StandardOutput=file:/dev/shm/logs/go2rtc/current
|
StandardOutput=file:/dev/shm/logs/go2rtc/current
|
||||||
StandardError=file:/dev/shm/logs/go2rtc/current
|
StandardError=file:/dev/shm/logs/go2rtc/current
|
||||||
|
|
||||||
@@ -228,9 +220,8 @@ Type=simple
|
|||||||
Restart=always
|
Restart=always
|
||||||
RestartSec=1
|
RestartSec=1
|
||||||
User=root
|
User=root
|
||||||
# Environment=PLUS_API_KEY=
|
|
||||||
ExecStartPre=+rm /dev/shm/logs/frigate/current
|
ExecStartPre=+rm /dev/shm/logs/frigate/current
|
||||||
ExecStart=/bin/bash -c "bash /opt/frigate/docker/main/rootfs/etc/s6-overlay/s6-rc.d/frigate/run 2> >(/usr/bin/ts '%%Y-%%m-%%d %%H:%%M:%%.S ' >&2) | /usr/bin/ts '%%Y-%%m-%%d %%H:%%M:%%.S '"
|
ExecStart=bash /opt/frigate/docker/main/rootfs/etc/s6-overlay/s6-rc.d/frigate/run
|
||||||
StandardOutput=file:/dev/shm/logs/frigate/current
|
StandardOutput=file:/dev/shm/logs/frigate/current
|
||||||
StandardError=file:/dev/shm/logs/frigate/current
|
StandardError=file:/dev/shm/logs/frigate/current
|
||||||
|
|
||||||
@@ -252,7 +243,7 @@ Restart=always
|
|||||||
RestartSec=1
|
RestartSec=1
|
||||||
User=root
|
User=root
|
||||||
ExecStartPre=+rm /dev/shm/logs/nginx/current
|
ExecStartPre=+rm /dev/shm/logs/nginx/current
|
||||||
ExecStart=/bin/bash -c "bash /opt/frigate/docker/main/rootfs/etc/s6-overlay/s6-rc.d/nginx/run 2> >(/usr/bin/ts '%%Y-%%m-%%d %%H:%%M:%%.S ' >&2) | /usr/bin/ts '%%Y-%%m-%%d %%H:%%M:%%.S '"
|
ExecStart=bash /opt/frigate/docker/main/rootfs/etc/s6-overlay/s6-rc.d/nginx/run
|
||||||
StandardOutput=file:/dev/shm/logs/nginx/current
|
StandardOutput=file:/dev/shm/logs/nginx/current
|
||||||
StandardError=file:/dev/shm/logs/nginx/current
|
StandardError=file:/dev/shm/logs/nginx/current
|
||||||
|
|
||||||
|
|||||||
@@ -1,81 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Copyright (c) 2021-2024 tteck
|
|
||||||
# Author: tteck (tteckster)
|
|
||||||
# Co-author: Rogue-King
|
|
||||||
# License: MIT
|
|
||||||
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
|
||||||
|
|
||||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
|
|
||||||
color
|
|
||||||
verb_ip6
|
|
||||||
catch_errors
|
|
||||||
setting_up_container
|
|
||||||
network_check
|
|
||||||
update_os
|
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
|
||||||
$STD apt-get install -y git
|
|
||||||
$STD apt-get install -y curl
|
|
||||||
$STD apt-get install -y sudo
|
|
||||||
$STD apt-get install -y mc
|
|
||||||
$STD apt-get install -y sqlite3
|
|
||||||
$STD apt-get install -y openssh-server
|
|
||||||
$STD apt-get install -y wget
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
msg_info "Installing Gitea"
|
|
||||||
RELEASE=$(wget -q https://github.com/go-gitea/gitea/releases/latest -O - | grep "title>Release" | cut -d " " -f 4 | sed 's/^v//')
|
|
||||||
wget -q https://github.com/go-gitea/gitea/releases/download/v$RELEASE/gitea-$RELEASE-linux-arm64
|
|
||||||
mv gitea* /usr/local/bin/gitea
|
|
||||||
chmod +x /usr/local/bin/gitea
|
|
||||||
adduser --system --group --disabled-password --shell /bin/bash --home /etc/gitea gitea > /dev/null
|
|
||||||
mkdir -p /var/lib/gitea/{custom,data,log}
|
|
||||||
chown -R gitea:gitea /var/lib/gitea/
|
|
||||||
chmod -R 750 /var/lib/gitea/
|
|
||||||
chown root:gitea /etc/gitea
|
|
||||||
chmod 770 /etc/gitea
|
|
||||||
sudo -u gitea ln -s /var/lib/gitea/data/.ssh/ /etc/gitea/.ssh
|
|
||||||
msg_ok "Installed Gitea"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
|
||||||
cat <<EOF >/etc/systemd/system/gitea.service
|
|
||||||
[Unit]
|
|
||||||
Description=Gitea (Git with a cup of tea)
|
|
||||||
After=syslog.target
|
|
||||||
After=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
# Uncomment notify and watchdog if you want to use them
|
|
||||||
# Uncomment the next line if you have repos with lots of files and get a HTTP 500 error because of that
|
|
||||||
# LimitNOFILE=524288:524288
|
|
||||||
RestartSec=2s
|
|
||||||
Type=simple
|
|
||||||
#Type=notify
|
|
||||||
User=gitea
|
|
||||||
Group=gitea
|
|
||||||
#The mount point we added to the container
|
|
||||||
WorkingDirectory=/var/lib/gitea
|
|
||||||
#Create directory in /run
|
|
||||||
RuntimeDirectory=gitea
|
|
||||||
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
|
|
||||||
Restart=always
|
|
||||||
Environment=USER=gitea HOME=/var/lib/gitea/data GITEA_WORK_DIR=/var/lib/gitea
|
|
||||||
#WatchdogSec=30s
|
|
||||||
#Capabilities to bind to low-numbered ports
|
|
||||||
#CapabilityBoundingSet=CAP_NET_BIND_SERVICE
|
|
||||||
#AmbientCapabilities=CAP_NET_BIND_SERVICE
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
systemctl enable -q --now gitea
|
|
||||||
msg_ok "Created Service"
|
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
$STD apt-get -y autoremove
|
|
||||||
$STD apt-get -y autoclean
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
@@ -1,83 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: kristocopani
|
|
||||||
# License: MIT
|
|
||||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
|
|
||||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
|
||||||
color
|
|
||||||
verb_ip6
|
|
||||||
catch_errors
|
|
||||||
setting_up_container
|
|
||||||
network_check
|
|
||||||
update_os
|
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
|
||||||
$STD apt-get install -y \
|
|
||||||
curl \
|
|
||||||
sudo \
|
|
||||||
mc \
|
|
||||||
wget \
|
|
||||||
openssh-server
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
|
|
||||||
msg_info "Installing Glance"
|
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/glanceapp/glance/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
cd /opt
|
|
||||||
wget -q https://github.com/glanceapp/glance/releases/download/v${RELEASE}/glance-linux-arm64.tar.gz
|
|
||||||
mkdir -p /opt/glance
|
|
||||||
tar -xzf glance-linux-arm64.tar.gz -C /opt/glance
|
|
||||||
cat <<EOF >/opt/glance/glance.yml
|
|
||||||
pages:
|
|
||||||
- name: Startpage
|
|
||||||
width: slim
|
|
||||||
hide-desktop-navigation: true
|
|
||||||
center-vertically: true
|
|
||||||
columns:
|
|
||||||
- size: full
|
|
||||||
widgets:
|
|
||||||
- type: search
|
|
||||||
autofocus: true
|
|
||||||
- type: bookmarks
|
|
||||||
groups:
|
|
||||||
- title: General
|
|
||||||
links:
|
|
||||||
- title: Google
|
|
||||||
url: https://www.google.com/
|
|
||||||
- title: Helper Scripts
|
|
||||||
url: https://github.com/community-scripts/ProxmoxVE
|
|
||||||
EOF
|
|
||||||
|
|
||||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
|
||||||
msg_ok "Installed Glance"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
|
||||||
service_path="/etc/systemd/system/glance.service"
|
|
||||||
echo "[Unit]
|
|
||||||
Description=Glance Daemon
|
|
||||||
After=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
WorkingDirectory=/opt/glance
|
|
||||||
ExecStart=/opt/glance/glance --config /opt/glance/glance.yml
|
|
||||||
TimeoutStopSec=20
|
|
||||||
KillMode=process
|
|
||||||
Restart=on-failure
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target" >$service_path
|
|
||||||
|
|
||||||
systemctl enable -q --now glance.service
|
|
||||||
msg_ok "Created Service"
|
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -rf /opt/glance-linux-arm64.tar.gz
|
|
||||||
$STD apt-get -y autoremove
|
|
||||||
$STD apt-get -y autoclean
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
@@ -1,153 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: Nícolas Pastorello (opastorello)
|
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
|
|
||||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
|
||||||
color
|
|
||||||
verb_ip6
|
|
||||||
catch_errors
|
|
||||||
setting_up_container
|
|
||||||
network_check
|
|
||||||
update_os
|
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
|
||||||
$STD apt-get install -y \
|
|
||||||
curl \
|
|
||||||
git \
|
|
||||||
sudo \
|
|
||||||
mc \
|
|
||||||
apache2 \
|
|
||||||
php8.2-{apcu,cli,common,curl,gd,imap,ldap,mysql,xmlrpc,xml,mbstring,bcmath,intl,zip,redis,bz2,soap} \
|
|
||||||
php-cas \
|
|
||||||
libapache2-mod-php \
|
|
||||||
mariadb-server \
|
|
||||||
wget \
|
|
||||||
openssh-server
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
msg_info "Setting up database"
|
|
||||||
DB_NAME=glpi_db
|
|
||||||
DB_USER=glpi
|
|
||||||
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
|
||||||
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql mysql
|
|
||||||
mysql -u root -e "CREATE DATABASE $DB_NAME;"
|
|
||||||
mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
|
||||||
mysql -u root -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost';"
|
|
||||||
mysql -u root -e "GRANT SELECT ON \`mysql\`.\`time_zone_name\` TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
|
||||||
{
|
|
||||||
echo "GLPI Database Credentials"
|
|
||||||
echo "Database: $DB_NAME"
|
|
||||||
echo "Username: $DB_USER"
|
|
||||||
echo "Password: $DB_PASS"
|
|
||||||
} >> ~/glpi_db.creds
|
|
||||||
msg_ok "Set up database"
|
|
||||||
|
|
||||||
msg_info "Installing GLPi"
|
|
||||||
cd /opt
|
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/glpi-project/glpi/releases/latest | grep '"tag_name"' | sed -E 's/.*"tag_name": "([^"]+)".*/\1/')
|
|
||||||
wget -q "https://github.com/glpi-project/glpi/releases/download/${RELEASE}/glpi-${RELEASE}.tgz"
|
|
||||||
$STD tar -xzvf glpi-${RELEASE}.tgz
|
|
||||||
cd /opt/glpi
|
|
||||||
$STD php bin/console db:install --db-name=$DB_NAME --db-user=$DB_USER --db-password=$DB_PASS --no-interaction
|
|
||||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
|
||||||
msg_ok "Installed GLPi"
|
|
||||||
|
|
||||||
msg_info "Setting Downstream file"
|
|
||||||
cat <<EOF > /opt/glpi/inc/downstream.php
|
|
||||||
<?php
|
|
||||||
define('GLPI_CONFIG_DIR', '/etc/glpi/');
|
|
||||||
if (file_exists(GLPI_CONFIG_DIR . '/local_define.php')) {
|
|
||||||
require_once GLPI_CONFIG_DIR . '/local_define.php';
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
mv /opt/glpi/config /etc/glpi
|
|
||||||
mv /opt/glpi/files /var/lib/glpi
|
|
||||||
mv /var/lib/glpi/_log /var/log/glpi
|
|
||||||
|
|
||||||
cat <<EOF > /etc/glpi/local_define.php
|
|
||||||
<?php
|
|
||||||
define('GLPI_VAR_DIR', '/var/lib/glpi');
|
|
||||||
define('GLPI_DOC_DIR', GLPI_VAR_DIR);
|
|
||||||
define('GLPI_CRON_DIR', GLPI_VAR_DIR . '/_cron');
|
|
||||||
define('GLPI_DUMP_DIR', GLPI_VAR_DIR . '/_dumps');
|
|
||||||
define('GLPI_GRAPH_DIR', GLPI_VAR_DIR . '/_graphs');
|
|
||||||
define('GLPI_LOCK_DIR', GLPI_VAR_DIR . '/_lock');
|
|
||||||
define('GLPI_PICTURE_DIR', GLPI_VAR_DIR . '/_pictures');
|
|
||||||
define('GLPI_PLUGIN_DOC_DIR', GLPI_VAR_DIR . '/_plugins');
|
|
||||||
define('GLPI_RSS_DIR', GLPI_VAR_DIR . '/_rss');
|
|
||||||
define('GLPI_SESSION_DIR', GLPI_VAR_DIR . '/_sessions');
|
|
||||||
define('GLPI_TMP_DIR', GLPI_VAR_DIR . '/_tmp');
|
|
||||||
define('GLPI_UPLOAD_DIR', GLPI_VAR_DIR . '/_uploads');
|
|
||||||
define('GLPI_CACHE_DIR', GLPI_VAR_DIR . '/_cache');
|
|
||||||
define('GLPI_LOG_DIR', '/var/log/glpi');
|
|
||||||
EOF
|
|
||||||
msg_ok "Configured Downstream file"
|
|
||||||
|
|
||||||
msg_info "Setting Folder and File Permissions"
|
|
||||||
chown root:root /opt/glpi/ -R
|
|
||||||
chown www-data:www-data /etc/glpi -R
|
|
||||||
chown www-data:www-data /var/lib/glpi -R
|
|
||||||
chown www-data:www-data /var/log/glpi -R
|
|
||||||
chown www-data:www-data /opt/glpi/marketplace -Rf
|
|
||||||
find /opt/glpi/ -type f -exec chmod 0644 {} \;
|
|
||||||
find /opt/glpi/ -type d -exec chmod 0755 {} \;
|
|
||||||
find /etc/glpi -type f -exec chmod 0644 {} \;
|
|
||||||
find /etc/glpi -type d -exec chmod 0755 {} \;
|
|
||||||
find /var/lib/glpi -type f -exec chmod 0644 {} \;
|
|
||||||
find /var/lib/glpi -type d -exec chmod 0755 {} \;
|
|
||||||
find /var/log/glpi -type f -exec chmod 0644 {} \;
|
|
||||||
find /var/log/glpi -type d -exec chmod 0755 {} \;
|
|
||||||
msg_ok "Configured Folder and File Permissions"
|
|
||||||
|
|
||||||
msg_info "Setup Service"
|
|
||||||
cat <<EOF >/etc/apache2/sites-available/glpi.conf
|
|
||||||
<VirtualHost *:80>
|
|
||||||
ServerName localhost
|
|
||||||
DocumentRoot /opt/glpi/public
|
|
||||||
|
|
||||||
<Directory /opt/glpi/public>
|
|
||||||
Require all granted
|
|
||||||
RewriteEngine On
|
|
||||||
RewriteCond %{HTTP:Authorization} ^(.+)$
|
|
||||||
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
|
|
||||||
RewriteCond %{REQUEST_FILENAME} !-f
|
|
||||||
RewriteRule ^(.*)$ index.php [QSA,L]
|
|
||||||
</Directory>
|
|
||||||
|
|
||||||
ErrorLog \${APACHE_LOG_DIR}/glpi_error.log
|
|
||||||
CustomLog \${APACHE_LOG_DIR}/glpi_access.log combined
|
|
||||||
</VirtualHost>
|
|
||||||
EOF
|
|
||||||
$STD a2dissite 000-default.conf
|
|
||||||
$STD a2enmod rewrite
|
|
||||||
$STD a2ensite glpi.conf
|
|
||||||
msg_ok "Setup Service"
|
|
||||||
|
|
||||||
msg_info "Setup Cronjob"
|
|
||||||
echo "* * * * * php /opt/glpi/front/cron.php" | crontab -
|
|
||||||
msg_ok "Setup Cronjob"
|
|
||||||
|
|
||||||
msg_info "Update PHP Params"
|
|
||||||
PHP_VERSION=$(ls /etc/php/ | grep -E '^[0-9]+\.[0-9]+$' | head -n 1)
|
|
||||||
PHP_INI="/etc/php/$PHP_VERSION/apache2/php.ini"
|
|
||||||
sed -i 's/^upload_max_filesize = .*/upload_max_filesize = 20M/' $PHP_INI
|
|
||||||
sed -i 's/^post_max_size = .*/post_max_size = 20M/' $PHP_INI
|
|
||||||
sed -i 's/^max_execution_time = .*/max_execution_time = 60/' $PHP_INI
|
|
||||||
sed -i 's/^max_input_vars = .*/max_input_vars = 5000/' $PHP_INI
|
|
||||||
sed -i 's/^memory_limit = .*/memory_limit = 256M/' $PHP_INI
|
|
||||||
sed -i 's/^;\?\s*session.cookie_httponly\s*=.*/session.cookie_httponly = On/' $PHP_INI
|
|
||||||
systemctl restart apache2
|
|
||||||
msg_ok "Update PHP Params"
|
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -rf /opt/glpi/install
|
|
||||||
rm -rf /opt/glpi-${RELEASE}.tgz
|
|
||||||
$STD apt-get -y autoremove
|
|
||||||
$STD apt-get -y autoclean
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
@@ -29,10 +29,7 @@ wget -q https://github.com/gotify/server/releases/download/v${RELEASE}/gotify-li
|
|||||||
$STD unzip gotify-linux-arm64.zip
|
$STD unzip gotify-linux-arm64.zip
|
||||||
rm -rf gotify-linux-arm64.zip
|
rm -rf gotify-linux-arm64.zip
|
||||||
chmod +x gotify-linux-arm64
|
chmod +x gotify-linux-arm64
|
||||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
|
||||||
msg_ok "Installed Gotify"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
|
||||||
cat <<EOF >/etc/systemd/system/gotify.service
|
cat <<EOF >/etc/systemd/system/gotify.service
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Gotify
|
Description=Gotify
|
||||||
@@ -51,7 +48,7 @@ RestartSec=3
|
|||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
systemctl enable -q --now gotify
|
systemctl enable -q --now gotify
|
||||||
msg_ok "Created Service"
|
msg_ok "Installed Gotify"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
|||||||
@@ -1,85 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: cfurrow
|
|
||||||
# License: MIT
|
|
||||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/gristlabs/grist-core
|
|
||||||
|
|
||||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
|
||||||
color
|
|
||||||
verb_ip6
|
|
||||||
catch_errors
|
|
||||||
setting_up_container
|
|
||||||
network_check
|
|
||||||
update_os
|
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
|
||||||
$STD apt-get install -y \
|
|
||||||
curl \
|
|
||||||
sudo \
|
|
||||||
make \
|
|
||||||
gnupg \
|
|
||||||
ca-certificates \
|
|
||||||
mc \
|
|
||||||
unzip \
|
|
||||||
python3.11-venv \
|
|
||||||
wget \
|
|
||||||
openssh-server
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
msg_info "Installing Node.js"
|
|
||||||
mkdir -p /etc/apt/keyrings
|
|
||||||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
|
|
||||||
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get install -y nodejs
|
|
||||||
$STD npm install -g yarn
|
|
||||||
msg_ok "Installed Node.js"
|
|
||||||
|
|
||||||
msg_info "Installing Grist"
|
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/gristlabs/grist-core/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
export CYPRESS_INSTALL_BINARY=0
|
|
||||||
export NODE_OPTIONS="--max-old-space-size=2048"
|
|
||||||
cd /opt
|
|
||||||
wget -q https://github.com/gristlabs/grist-core/archive/refs/tags/v${RELEASE}.zip
|
|
||||||
unzip -q v$RELEASE.zip
|
|
||||||
mv grist-core-${RELEASE} grist
|
|
||||||
cd grist
|
|
||||||
$STD yarn install
|
|
||||||
$STD yarn run build:prod
|
|
||||||
$STD yarn run install:python
|
|
||||||
cat <<EOF >/opt/grist/.env
|
|
||||||
NODE_ENV=production
|
|
||||||
GRIST_HOST=0.0.0.0
|
|
||||||
EOF
|
|
||||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
|
||||||
msg_ok "Installed Grist"
|
|
||||||
|
|
||||||
msg_info "Create Service"
|
|
||||||
cat <<EOF >/etc/systemd/system/grist.service
|
|
||||||
[Unit]
|
|
||||||
Description=Grist
|
|
||||||
After=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=exec
|
|
||||||
WorkingDirectory=/opt/grist
|
|
||||||
ExecStart=/usr/bin/yarn run start:prod
|
|
||||||
EnvironmentFile=-/opt/grist/.env
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
|
|
||||||
systemctl enable -q --now grist.service
|
|
||||||
msg_ok "Created Service"
|
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -rf /opt/v${RELEASE}.zip
|
|
||||||
$STD apt-get -y autoremove
|
|
||||||
$STD apt-get -y autoclean
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
@@ -18,13 +18,12 @@ $STD apt-get install -y curl
|
|||||||
$STD apt-get install -y sudo
|
$STD apt-get install -y sudo
|
||||||
$STD apt-get install -y mc
|
$STD apt-get install -y mc
|
||||||
$STD apt-get install -y openssh-server
|
$STD apt-get install -y openssh-server
|
||||||
$STD apt-get install -y wget
|
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/juanfont/headscale/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -s https://api.github.com/repos/juanfont/headscale/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
msg_info "Installing ${APPLICATION} v${RELEASE}"
|
msg_info "Installing ${APPLICATION} v${RELEASE}"
|
||||||
wget -q https://github.com/juanfont/headscale/releases/download/v${RELEASE}/headscale_${RELEASE}_linux_arm64.deb
|
wget -q https://github.com/juanfont/headscale/releases/download/v${RELEASE}/headscale_${RELEASE}_linux_amd64.deb
|
||||||
$STD dpkg -i headscale_${RELEASE}_linux_arm64.deb
|
$STD dpkg -i headscale_${RELEASE}_linux_amd64.deb
|
||||||
systemctl enable -q --now headscale
|
systemctl enable -q --now headscale
|
||||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
||||||
msg_ok "Installed ${APPLICATION} v${RELEASE}"
|
msg_ok "Installed ${APPLICATION} v${RELEASE}"
|
||||||
@@ -33,7 +32,7 @@ motd_ssh
|
|||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm headscale_${RELEASE}_linux_arm64.deb
|
rm headscale_${RELEASE}_linux_amd64.deb
|
||||||
$STD apt-get -y autoremove
|
$STD apt-get -y autoremove
|
||||||
$STD apt-get -y autoclean
|
$STD apt-get -y autoclean
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
|||||||
@@ -1,183 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Copyright (c) 2021-2025 tteck
|
|
||||||
# Author: MickLesk (Canbiz) & vhsdream
|
|
||||||
# License: MIT
|
|
||||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
|
|
||||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
|
|
||||||
color
|
|
||||||
verb_ip6
|
|
||||||
catch_errors
|
|
||||||
setting_up_container
|
|
||||||
network_check
|
|
||||||
update_os
|
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
|
||||||
$STD apt-get install -y \
|
|
||||||
g++ \
|
|
||||||
build-essential \
|
|
||||||
curl \
|
|
||||||
git \
|
|
||||||
sudo \
|
|
||||||
gnupg \
|
|
||||||
ca-certificates \
|
|
||||||
chromium/stable \
|
|
||||||
chromium-common/stable \
|
|
||||||
mc \
|
|
||||||
wget \
|
|
||||||
openssh-server
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
msg_info "Installing Additional Tools"
|
|
||||||
wget -q https://github.com/Y2Z/monolith/releases/latest/download/monolith-gnu-linux-x86_64 -O /usr/bin/monolith
|
|
||||||
chmod +x /usr/bin/monolith
|
|
||||||
wget -q https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_linux -O /usr/bin/yt-dlp
|
|
||||||
chmod +x /usr/bin/yt-dlp
|
|
||||||
msg_ok "Installed Additional Tools"
|
|
||||||
|
|
||||||
msg_info "Installing Meilisearch"
|
|
||||||
cd /tmp
|
|
||||||
wget -q https://github.com/meilisearch/meilisearch/releases/latest/download/meilisearch.deb
|
|
||||||
$STD dpkg -i meilisearch.deb
|
|
||||||
wget -q https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml -O /etc/meilisearch.toml
|
|
||||||
MASTER_KEY=$(openssl rand -base64 12)
|
|
||||||
sed -i \
|
|
||||||
-e 's|^env =.*|env = "production"|' \
|
|
||||||
-e "s|^# master_key =.*|master_key = \"$MASTER_KEY\"|" \
|
|
||||||
-e 's|^db_path =.*|db_path = "/var/lib/meilisearch/data"|' \
|
|
||||||
-e 's|^dump_dir =.*|dump_dir = "/var/lib/meilisearch/dumps"|' \
|
|
||||||
-e 's|^snapshot_dir =.*|snapshot_dir = "/var/lib/meilisearch/snapshots"|' \
|
|
||||||
-e 's|^# no_analytics = true|no_analytics = true|' \
|
|
||||||
/etc/meilisearch.toml
|
|
||||||
msg_ok "Installed Meilisearch"
|
|
||||||
|
|
||||||
msg_info "Installing Node.js"
|
|
||||||
mkdir -p /etc/apt/keyrings
|
|
||||||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
|
|
||||||
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get install -y nodejs
|
|
||||||
msg_ok "Installed Node.js"
|
|
||||||
|
|
||||||
msg_info "Installing Hoarder"
|
|
||||||
cd /opt
|
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/hoarder-app/hoarder/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
wget -q "https://github.com/hoarder-app/hoarder/archive/refs/tags/v${RELEASE}.zip"
|
|
||||||
unzip -q v${RELEASE}.zip
|
|
||||||
mv hoarder-${RELEASE} /opt/hoarder
|
|
||||||
cd /opt/hoarder
|
|
||||||
corepack enable
|
|
||||||
export PUPPETEER_SKIP_DOWNLOAD="true"
|
|
||||||
export NEXT_TELEMETRY_DISABLED=1
|
|
||||||
export CI="true"
|
|
||||||
cd /opt/hoarder/apps/web
|
|
||||||
$STD pnpm install --frozen-lockfile
|
|
||||||
$STD pnpm exec next build --experimental-build-mode compile
|
|
||||||
cp -r /opt/hoarder/apps/web/.next/standalone/apps/web/server.js /opt/hoarder/apps/web
|
|
||||||
cd /opt/hoarder/apps/workers
|
|
||||||
$STD pnpm install --frozen-lockfile
|
|
||||||
|
|
||||||
export DATA_DIR=/opt/hoarder_data
|
|
||||||
HOARDER_SECRET=$(openssl rand -base64 36 | cut -c1-24)
|
|
||||||
cat <<EOF >/opt/hoarder/.env
|
|
||||||
SERVER_VERSION=$RELEASE
|
|
||||||
NEXTAUTH_SECRET="$HOARDER_SECRET"
|
|
||||||
NEXTAUTH_URL="http://localhost:3000"
|
|
||||||
DATA_DIR="$DATA_DIR"
|
|
||||||
MEILI_ADDR="http://127.0.0.1:7700"
|
|
||||||
MEILI_MASTER_KEY="$MASTER_KEY"
|
|
||||||
BROWSER_WEB_URL="http://127.0.0.1:9222"
|
|
||||||
|
|
||||||
# If you're planning to use OpenAI for tagging. Uncomment the following line:
|
|
||||||
# OPENAI_API_KEY="<API_KEY>"
|
|
||||||
|
|
||||||
# If you're planning to use ollama for tagging, uncomment the following lines:
|
|
||||||
# OLLAMA_BASE_URL="<OLLAMA_ADDR>"
|
|
||||||
|
|
||||||
# You can change the models used by uncommenting the following lines, and changing them according to your needs:
|
|
||||||
# INFERENCE_TEXT_MODEL="gpt-4o-mini"
|
|
||||||
# INFERENCE_IMAGE_MODEL="gpt-4o-mini"
|
|
||||||
EOF
|
|
||||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
|
||||||
msg_ok "Installed Hoarder"
|
|
||||||
|
|
||||||
msg_info "Running Database Migration"
|
|
||||||
mkdir -p ${DATA_DIR}
|
|
||||||
cd /opt/hoarder/packages/db
|
|
||||||
$STD pnpm migrate
|
|
||||||
msg_ok "Database Migration Completed"
|
|
||||||
|
|
||||||
msg_info "Creating Services"
|
|
||||||
cat <<EOF >/etc/systemd/system/meilisearch.service
|
|
||||||
[Unit]
|
|
||||||
Description=Meilisearch
|
|
||||||
After=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
ExecStart=/usr/bin/meilisearch --config-file-path /etc/meilisearch.toml
|
|
||||||
Restart=always
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat <<EOF >/etc/systemd/system/hoarder-web.service
|
|
||||||
[Unit]
|
|
||||||
Description=Hoarder Web
|
|
||||||
Wants=network.target hoarder-workers.service
|
|
||||||
After=network.target hoarder-workers.service
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
ExecStart=pnpm start
|
|
||||||
WorkingDirectory=/opt/hoarder/apps/web
|
|
||||||
EnvironmentFile=/opt/hoarder/.env
|
|
||||||
Restart=always
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat <<EOF >/etc/systemd/system/hoarder-browser.service
|
|
||||||
[Unit]
|
|
||||||
Description=Hoarder Headless Browser
|
|
||||||
After=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
User=root
|
|
||||||
ExecStart=/usr/bin/chromium --headless --no-sandbox --disable-gpu --disable-dev-shm-usage --remote-debugging-address=127.0.0.1 --remote-debugging-port=9222 --hide-scrollbars
|
|
||||||
Restart=always
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat <<EOF >/etc/systemd/system/hoarder-workers.service
|
|
||||||
[Unit]
|
|
||||||
Description=Hoarder Workers
|
|
||||||
Wants=network.target hoarder-browser.service meilisearch.service
|
|
||||||
After=network.target hoarder-browser.service meilisearch.service
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
ExecStart=pnpm start:prod
|
|
||||||
WorkingDirectory=/opt/hoarder/apps/workers
|
|
||||||
EnvironmentFile=/opt/hoarder/.env
|
|
||||||
Restart=always
|
|
||||||
TimeoutStopSec=5
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
|
|
||||||
systemctl -q enable --now meilisearch.service hoarder-browser.service hoarder-workers.service hoarder-web.service
|
|
||||||
msg_ok "Created Services"
|
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -rf /tmp/meilisearch.deb
|
|
||||||
rm -f /opt/v${RELEASE}.zip
|
|
||||||
$STD apt-get autoremove -y
|
|
||||||
$STD apt-get autoclean -y
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
+12
-21
@@ -1,11 +1,9 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2024 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster)
|
||||||
# Co-Author: MickLesk (Canbiz)
|
|
||||||
# License: MIT
|
# License: MIT
|
||||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||||
# Source: https://github.com/ajnart/homarr
|
|
||||||
|
|
||||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
|
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
|
||||||
color
|
color
|
||||||
@@ -16,17 +14,14 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt-get install -y \
|
$STD apt-get install -y curl
|
||||||
sudo \
|
$STD apt-get install -y sudo
|
||||||
mc \
|
$STD apt-get install -y mc
|
||||||
curl \
|
$STD apt-get install -y git
|
||||||
ca-certificates \
|
$STD apt-get install -y ca-certificates
|
||||||
gnupg \
|
$STD apt-get install -y gnupg
|
||||||
make \
|
$STD apt-get install -y wget
|
||||||
g++ \
|
$STD apt-get install -y openssh-server
|
||||||
build-essential \
|
|
||||||
wget \
|
|
||||||
openssh-server
|
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Setting up Node.js Repository"
|
msg_info "Setting up Node.js Repository"
|
||||||
@@ -38,15 +33,12 @@ msg_ok "Set up Node.js Repository"
|
|||||||
msg_info "Installing Node.js/Yarn"
|
msg_info "Installing Node.js/Yarn"
|
||||||
$STD apt-get update
|
$STD apt-get update
|
||||||
$STD apt-get install -y nodejs
|
$STD apt-get install -y nodejs
|
||||||
|
$STD npm install -g npm@latest
|
||||||
$STD npm install -g yarn
|
$STD npm install -g yarn
|
||||||
msg_ok "Installed Node.js/Yarn"
|
msg_ok "Installed Node.js/Yarn"
|
||||||
|
|
||||||
msg_info "Installing Homarr (Patience)"
|
msg_info "Installing Homarr (Patience)"
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/ajnart/homarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
$STD git clone -b dev https://github.com/ajnart/homarr.git /opt/homarr
|
||||||
wget -q "https://github.com/ajnart/homarr/archive/refs/tags/v${RELEASE}.zip"
|
|
||||||
unzip -q v${RELEASE}.zip
|
|
||||||
rm -rf v${RELEASE}.zip
|
|
||||||
mv homarr-${RELEASE} /opt/homarr
|
|
||||||
cat <<EOF >/opt/homarr/.env
|
cat <<EOF >/opt/homarr/.env
|
||||||
DATABASE_URL="file:./database/db.sqlite"
|
DATABASE_URL="file:./database/db.sqlite"
|
||||||
NEXTAUTH_URL="http://localhost:3000"
|
NEXTAUTH_URL="http://localhost:3000"
|
||||||
@@ -58,7 +50,6 @@ cd /opt/homarr
|
|||||||
$STD yarn install
|
$STD yarn install
|
||||||
$STD yarn build
|
$STD yarn build
|
||||||
$STD yarn db:migrate
|
$STD yarn db:migrate
|
||||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
|
||||||
msg_ok "Installed Homarr"
|
msg_ok "Installed Homarr"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2024 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster)
|
||||||
# License: MIT
|
# License: MIT
|
||||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||||
|
|
||||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
color
|
color
|
||||||
@@ -14,67 +14,21 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies (Patience)"
|
msg_info "Installing Dependencies (Patience)"
|
||||||
$STD apt-get install -y \
|
$STD apt-get install -y {git,curl,sudo,mc,bluez,libffi-dev,libssl-dev,libjpeg-dev,zlib1g-dev,autoconf,build-essential,libopenjp2-7,libturbojpeg0-dev,ffmpeg,liblapack3,liblapack-dev,dbus-broker,libpcap-dev,libavdevice-dev,libavformat-dev,libavcodec-dev,libavutil-dev,libavfilter-dev,libmariadb-dev-compat,libatlas-base-dev,python3-pip,python3.12-venv,wget,openssh-server}
|
||||||
curl \
|
|
||||||
git \
|
|
||||||
sudo \
|
|
||||||
mc \
|
|
||||||
gnupg \
|
|
||||||
ca-certificates \
|
|
||||||
bluez \
|
|
||||||
libtiff6 \
|
|
||||||
tzdata \
|
|
||||||
libffi-dev \
|
|
||||||
libssl-dev \
|
|
||||||
libjpeg-dev \
|
|
||||||
zlib1g-dev \
|
|
||||||
autoconf \
|
|
||||||
build-essential \
|
|
||||||
libopenjp2-7 \
|
|
||||||
libturbojpeg0-dev \
|
|
||||||
ffmpeg \
|
|
||||||
liblapack3 \
|
|
||||||
liblapack-dev \
|
|
||||||
dbus-broker \
|
|
||||||
libpcap-dev \
|
|
||||||
libavdevice-dev \
|
|
||||||
libavformat-dev \
|
|
||||||
libavcodec-dev \
|
|
||||||
libavutil-dev \
|
|
||||||
libavfilter-dev \
|
|
||||||
libmariadb-dev-compat \
|
|
||||||
libatlas-base-dev \
|
|
||||||
software-properties-common \
|
|
||||||
wget \
|
|
||||||
openssh-server
|
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Setup Python3"
|
msg_info "Installing Home Assistant-Core"
|
||||||
$STD add-apt-repository -y ppa:deadsnakes/ppa
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get install -y \
|
|
||||||
python3.13-* \
|
|
||||||
python3-pip \
|
|
||||||
python3.13-dev \
|
|
||||||
python3.13-venv
|
|
||||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
|
||||||
msg_ok "Setup Python3"
|
|
||||||
|
|
||||||
msg_info "Installing UV"
|
|
||||||
$STD pip install uv
|
|
||||||
msg_ok "Installed UV"
|
|
||||||
|
|
||||||
msg_info "Setting up Home Assistant-Core environment"
|
|
||||||
mkdir /srv/homeassistant
|
mkdir /srv/homeassistant
|
||||||
cd /srv/homeassistant
|
cd /srv/homeassistant
|
||||||
uv venv . &>/dev/null
|
python3 -m venv .
|
||||||
source bin/activate
|
source bin/activate
|
||||||
msg_ok "Created virtual environment with UV"
|
$STD pip install webrtcvad
|
||||||
|
$STD python3 -m pip install wheel
|
||||||
msg_info "Installing Home Assistant-Core and packages"
|
$STD pip install homeassistant
|
||||||
$STD uv pip install webrtcvad wheel homeassistant mysqlclient psycopg2-binary isal
|
$STD pip install mysqlclient
|
||||||
|
$STD pip install psycopg2-binary
|
||||||
mkdir -p /root/.homeassistant
|
mkdir -p /root/.homeassistant
|
||||||
msg_ok "Installed Home Assistant-Core and required packages"
|
msg_ok "Installed Home Assistant-Core"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/systemd/system/homeassistant.service
|
cat <<EOF >/etc/systemd/system/homeassistant.service
|
||||||
@@ -84,8 +38,7 @@ After=network-online.target
|
|||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
WorkingDirectory=/root/.homeassistant
|
WorkingDirectory=/root/.homeassistant
|
||||||
Environment="PATH=/srv/homeassistant/bin:/usr/local/bin:/usr/bin:/usr/local/bin/uv"
|
ExecStart=/srv/homeassistant/bin/hass -c "/root/.homeassistant"
|
||||||
ExecStart=/srv/homeassistant/bin/python3 -m homeassistant --config /root/.homeassistant
|
|
||||||
Restart=always
|
Restart=always
|
||||||
RestartForceExitStatus=100
|
RestartForceExitStatus=100
|
||||||
[Install]
|
[Install]
|
||||||
|
|||||||
@@ -1,64 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Copyright (c) 2021-2025 tteck
|
|
||||||
# Author: tteck
|
|
||||||
# Co-Author: MickLesk (Canbiz)
|
|
||||||
# License: MIT
|
|
||||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/sysadminsmedia/homebox
|
|
||||||
|
|
||||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
|
|
||||||
color
|
|
||||||
verb_ip6
|
|
||||||
catch_errors
|
|
||||||
setting_up_container
|
|
||||||
network_check
|
|
||||||
update_os
|
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
|
||||||
$STD apt-get install -y \
|
|
||||||
curl \
|
|
||||||
sudo \
|
|
||||||
mc \
|
|
||||||
wget \
|
|
||||||
openssh-server
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
msg_info "Installing Homebox"
|
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/sysadminsmedia/homebox/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
|
||||||
wget -qO- https://github.com/sysadminsmedia/homebox/releases/download/${RELEASE}/homebox_Linux_arm64.tar.gz | tar -xzf - -C /opt
|
|
||||||
chmod +x /opt/homebox
|
|
||||||
cat <<EOF >/opt/.env
|
|
||||||
# For possible environment variables check here: https://homebox.software/en/configure-homebox
|
|
||||||
HBOX_MODE=production
|
|
||||||
HBOX_WEB_PORT=7745
|
|
||||||
HBOX_WEB_HOST=0.0.0.0
|
|
||||||
EOF
|
|
||||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
|
||||||
msg_ok "Installed Homebox"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
|
||||||
cat <<EOF >/etc/systemd/system/homebox.service
|
|
||||||
[Unit]
|
|
||||||
Description=Start Homebox Service
|
|
||||||
After=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
WorkingDirectory=/opt
|
|
||||||
ExecStart=/opt/homebox
|
|
||||||
EnvironmentFile=/opt/.env
|
|
||||||
Restart=on-failure
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
systemctl enable -q --now homebox.service
|
|
||||||
msg_ok "Created Service"
|
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
$STD apt-get -y autoremove
|
|
||||||
$STD apt-get -y autoclean
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2024 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster)
|
||||||
# License: MIT
|
# License: MIT
|
||||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||||
|
|
||||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
|
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
|
||||||
color
|
color
|
||||||
@@ -17,7 +17,11 @@ msg_info "Installing Dependencies"
|
|||||||
$STD apt-get install -y curl
|
$STD apt-get install -y curl
|
||||||
$STD apt-get install -y sudo
|
$STD apt-get install -y sudo
|
||||||
$STD apt-get install -y mc
|
$STD apt-get install -y mc
|
||||||
|
$STD apt-get install -y make
|
||||||
|
$STD apt-get install -y g++
|
||||||
|
$STD apt-get install -y gcc
|
||||||
$STD apt-get install -y ca-certificates
|
$STD apt-get install -y ca-certificates
|
||||||
|
$STD apt-get install -y gnupg
|
||||||
$STD apt-get install -y wget
|
$STD apt-get install -y wget
|
||||||
$STD apt-get install -y gpg
|
$STD apt-get install -y gpg
|
||||||
$STD apt-get install -y openssh-server
|
$STD apt-get install -y openssh-server
|
||||||
@@ -46,8 +50,6 @@ rm -rf homepage-${RELEASE}
|
|||||||
cd /opt/homepage
|
cd /opt/homepage
|
||||||
cp /opt/homepage/src/skeleton/* /opt/homepage/config
|
cp /opt/homepage/src/skeleton/* /opt/homepage/config
|
||||||
$STD pnpm install
|
$STD pnpm install
|
||||||
export NEXT_PUBLIC_VERSION="v$RELEASE"
|
|
||||||
export NEXT_PUBLIC_REVISION="source"
|
|
||||||
$STD pnpm build
|
$STD pnpm build
|
||||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
||||||
msg_ok "Installed Homepage v${RELEASE}"
|
msg_ok "Installed Homepage v${RELEASE}"
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user