diff --git a/CHANGELOG.md b/CHANGELOG.md index 517cda16e..f8f1fb140 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,12 @@ - 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-07-26 + +### Changed + +- **Gitea LXC** [(View Source)](https://raw.githubusercontent.com/tteck/Proxmox/main/install/gitea-install.sh) + - NEW Script ## 2024-06-30 diff --git a/README.md b/README.md index 5ee7633b8..867ba2bc0 100644 --- a/README.md +++ b/README.md @@ -40,17 +40,17 @@ If you would like to offer support, I would appreciate a star on the repository, | ❌ | 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. | +| 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 @@ -181,7 +181,7 @@ If you would like to offer support, I would appreciate a star on the repository, | Runtipi | ☑️ | | | SABnzbd | ☑️ | | | Scrypted | ☑️ | | -| Scrutiny | ☑️ | | +| Scrutiny | ☑️ | | | SFTPGo | ☑️ | | | Shinobi NVR | ☑️ | | | SmokePing | ☑️ | | diff --git a/ct/gitea.sh b/ct/gitea.sh new file mode 100644 index 000000000..6ab816151 --- /dev/null +++ b/ct/gitea.sh @@ -0,0 +1,77 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/tteck/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-amd64 +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" diff --git a/ct/keycloak.sh b/ct/keycloak.sh index ea2051860..58fb1c5ca 100644 --- a/ct/keycloak.sh +++ b/ct/keycloak.sh @@ -69,4 +69,4 @@ description msg_ok "Completed Successfully!\n" echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8080${CL} \n" + ${BL}http://${IP}:8080/admin${CL} \n" diff --git a/ct/radarr.sh b/ct/radarr.sh index afe1bdfa1..aaf94d44d 100644 --- a/ct/radarr.sh +++ b/ct/radarr.sh @@ -55,10 +55,7 @@ function default_settings() { function update_script() { header_info if [[ ! -d /var/lib/radarr/ ]]; 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" +msg_error "There is currently no update path available." exit } diff --git a/ct/traefik.sh b/ct/traefik.sh index 00f4ad51b..a6a5c7796 100644 --- a/ct/traefik.sh +++ b/ct/traefik.sh @@ -55,7 +55,7 @@ function default_settings() { function update_script() { header_info if [[ ! -f /etc/systemd/system/traefik.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -RELEASE=3.0.4 #$(curl -s https://api.github.com/repos/traefik/traefik/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') +RELEASE=$(curl -s https://api.github.com/repos/traefik/traefik/releases | grep -oP '"tag_name":\s*"v\K[\d.]+?(?=")' | sort -V | tail -n 1) msg_info "Updating $APP LXC" 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 diff --git a/install/bunkerweb-install.sh b/install/bunkerweb-install.sh index 91659d253..2092ae514 100644 --- a/install/bunkerweb-install.sh +++ b/install/bunkerweb-install.sh @@ -17,10 +17,9 @@ 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 gnupg2 -$STD apt-get install -y ca-certificates +$STD apt-get install -y gpg +$STD apt-get install -y apt-transport-https $STD apt-get install -y lsb-release -$STD apt-get install -y debian-archive-keyring $STD apt-get install -y openssh-server msg_ok "Installed Dependencies" @@ -32,9 +31,11 @@ $STD apt-get install -y nginx msg_ok "Installed Nginx" 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 v${RELEASE}" +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 -curl -sSL https://packagecloud.io/install/repositories/bunkerity/bunkerweb/script.deb.sh | bash &>/dev/null $STD apt-get install -y bunkerweb=${RELEASE} cat </etc/apt/preferences.d/bunkerweb Package: bunkerweb diff --git a/install/ersatztv-install.sh b/install/ersatztv-install.sh index 1efc9ad04..59e1e4dd1 100644 --- a/install/ersatztv-install.sh +++ b/install/ersatztv-install.sh @@ -15,24 +15,24 @@ setting_up_container network_check update_os -msg_info "Installing Dependencies (Patience)" -$STD apt-get install -y --no-install-recommends \ - ffmpeg \ - build-essential \ - unzip \ - pkg-config \ - curl \ - sudo \ - git \ - make \ - mc \ - wget \ - ca-certificates \ - openssh-server +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 ca-certificates +$STD apt-get install -y openssh-server msg_ok "Installed Dependencies" +msg_info "Installing FFmpeg (Patience)" +echo "deb http://deb.debian.org/debian/ sid main" >/etc/apt/sources.list.d/sid.list +$STD apt update +DEBIAN_FRONTEND=noninteractive $STD apt install -t sid ffmpeg -y +rm /etc/apt/sources.list.d/sid.list +$STD apt update +msg_ok "Installed FFmpeg" -msg_info "Installing ErsatzTV " +msg_info "Installing ErsatzTV" 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 mv "/opt/ErsatzTV-${RELEASE}-linux-arm64" /opt/ErsatzTV diff --git a/install/gitea-install.sh b/install/gitea-install.sh new file mode 100644 index 000000000..2ed5e7514 --- /dev/null +++ b/install/gitea-install.sh @@ -0,0 +1,78 @@ +#!/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 +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-amd64 +mv gitea* /usr/local/bin/gitea +chmod +x /usr/local/bin/gitea +adduser --system --group --disabled-password --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 +msg_ok "Installed Gitea" + +msg_info "Creating Service" +cat </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" diff --git a/install/traefik-install.sh b/install/traefik-install.sh index ca2aa6900..a157dea7b 100644 --- a/install/traefik-install.sh +++ b/install/traefik-install.sh @@ -23,7 +23,7 @@ $STD apt-get install -y wget $STD apt-get install -y openssh-server msg_ok "Installed Dependencies" -RELEASE=3.0.4 #$(curl -s https://api.github.com/repos/traefik/traefik/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') +RELEASE=$(curl -s https://api.github.com/repos/traefik/traefik/releases | grep -oP '"tag_name":\s*"v\K[\d.]+?(?=")' | sort -V | tail -n 1) msg_info "Installing Traefik v${RELEASE}" mkdir -p /etc/traefik/{conf.d,ssl} wget -q https://github.com/traefik/traefik/releases/download/v${RELEASE}/traefik_v${RELEASE}_linux_arm64.tar.gz diff --git a/misc/update-lxcs-cron.sh b/misc/update-lxcs-cron.sh index 23c448520..04827734c 100644 --- a/misc/update-lxcs-cron.sh +++ b/misc/update-lxcs-cron.sh @@ -35,7 +35,6 @@ for container in $(pct list | awk '{if(NR>1) print $1}'); do fi done if [ "$excluded" == true ]; then - header_info echo -e "[Info] Skipping $container" sleep 1 else diff --git a/misc/update-lxcs.sh b/misc/update-lxcs.sh index 9167186e9..1ad3b5cd9 100644 --- a/misc/update-lxcs.sh +++ b/misc/update-lxcs.sh @@ -101,7 +101,7 @@ for container in $(pct list | awk '{if(NR>1) print $1}'); do done wait header_info -echo -e "${GN}The process is complete, and the selected containers have been updated.${CL}\n" +echo -e "${GN}The process is complete, and the containers have been successfully updated.${CL}\n" if [ "${#containers_needing_reboot[@]}" -gt 0 ]; then echo -e "${RD}The following containers require a reboot:${CL}" for container_name in "${containers_needing_reboot[@]}"; do