mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-11-04 18:32:51 +00:00
Compare commits
26 Commits
2024-12-26
...
2024-12-28
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5f39bb66a5 | ||
|
|
773b2fcc79 | ||
|
|
938f0f76fa | ||
|
|
611a14b55f | ||
|
|
304db812a8 | ||
|
|
678206768c | ||
|
|
92d2e421ee | ||
|
|
fe3ff916b6 | ||
|
|
d4c95779bf | ||
|
|
8c0794c2bb | ||
|
|
cdb121a55f | ||
|
|
b22d66da1b | ||
|
|
87ff677ed7 | ||
|
|
d3eaf6eaf5 | ||
|
|
26e4017d76 | ||
|
|
406bb57d74 | ||
|
|
f97e932205 | ||
|
|
395d1086ea | ||
|
|
517b19a62b | ||
|
|
ab292927e6 | ||
|
|
6bae0d71ea | ||
|
|
1378e9a2e9 | ||
|
|
71d21f3bfe | ||
|
|
12f087932f | ||
|
|
8d96c5135d | ||
|
|
0c31f43789 |
37
CHANGELOG.md
37
CHANGELOG.md
@@ -16,6 +16,43 @@ All LXC instances created using this repository come pre-installed with Midnight
|
|||||||
> [!IMPORTANT]
|
> [!IMPORTANT]
|
||||||
Do not break established syntax in this file, as it is automatically updated by a Github Workflow
|
Do not break established syntax in this file, as it is automatically updated by a Github Workflow
|
||||||
|
|
||||||
|
## 2024-12-28
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
### 💥 Breaking Changes
|
||||||
|
|
||||||
|
- Add Figlet into Repo | Creation of local ASCII Header [@MickLesk](https://github.com/MickLesk) ([#1072](https://github.com/community-scripts/ProxmoxVE/pull/1072))
|
||||||
|
- Add an IP-Update for MOTD if IP Changed [@MickLesk](https://github.com/MickLesk) ([#1067](https://github.com/community-scripts/ProxmoxVE/pull/1067))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Zabbix: Fix SQL Path for 7.2 [@MickLesk](https://github.com/MickLesk) ([#1069](https://github.com/community-scripts/ProxmoxVE/pull/1069))
|
||||||
|
- Authentik: added missing port to access url [@TheRealVira](https://github.com/TheRealVira) ([#1065](https://github.com/community-scripts/ProxmoxVE/pull/1065))
|
||||||
|
|
||||||
|
## 2024-12-27
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
### ✨ New Scripts
|
||||||
|
|
||||||
|
- new scripts for Authentik [@remz1337](https://github.com/remz1337) ([#291](https://github.com/community-scripts/ProxmoxVE/pull/291))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Add 8.0 for MongoDB Installation [@MickLesk](https://github.com/MickLesk) ([#1046](https://github.com/community-scripts/ProxmoxVE/pull/1046))
|
||||||
|
- Update Zabbix to 7.2. Release [@MickLesk](https://github.com/MickLesk) ([#1048](https://github.com/community-scripts/ProxmoxVE/pull/1048))
|
||||||
|
- Apache-Guacamole script bug fix [@sannier3](https://github.com/sannier3) ([#1039](https://github.com/community-scripts/ProxmoxVE/pull/1039))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- Updated SAB documentation based on RAM increase [@TheRealVira](https://github.com/TheRealVira) ([#1035](https://github.com/community-scripts/ProxmoxVE/pull/1035))
|
||||||
|
|
||||||
|
### ❔ Unlabelled
|
||||||
|
|
||||||
|
- Patch Figlet Repo if missing [@MickLesk](https://github.com/MickLesk) ([#1044](https://github.com/community-scripts/ProxmoxVE/pull/1044))
|
||||||
|
- fix Tags for Advanced Settings [@MickLesk](https://github.com/MickLesk) ([#1042](https://github.com/community-scripts/ProxmoxVE/pull/1042))
|
||||||
|
|
||||||
## 2024-12-26
|
## 2024-12-26
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|||||||
85
ct/authentik.sh
Normal file
85
ct/authentik.sh
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: remz1337
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
# App Default Values
|
||||||
|
APP="Authentik"
|
||||||
|
var_tags="identity-provider"
|
||||||
|
var_disk="15"
|
||||||
|
var_cpu="6"
|
||||||
|
var_ram="8192"
|
||||||
|
var_os="debian"
|
||||||
|
var_version="12"
|
||||||
|
var_unprivileged="1"
|
||||||
|
|
||||||
|
# App Output & Base Settings
|
||||||
|
header_info "$APP"
|
||||||
|
base_settings
|
||||||
|
|
||||||
|
# Core
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
if [[ ! -f /etc/systemd/system/authentik-server.service ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/goauthentik/authentik/releases/latest | grep "tarball_url" | awk '{print substr($2, 2, length($2)-3)}')
|
||||||
|
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
||||||
|
msg_info "Stopping ${APP}"
|
||||||
|
systemctl stop authentik-server
|
||||||
|
systemctl stop authentik-worker
|
||||||
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
|
msg_info "Building ${APP} website"
|
||||||
|
mkdir -p /opt/authentik
|
||||||
|
wget -qO authentik.tar.gz "${RELEASE}"
|
||||||
|
tar -xzf authentik.tar.gz -C /opt/authentik --strip-components 1 --overwrite
|
||||||
|
rm -rf authentik.tar.gz
|
||||||
|
cd /opt/authentik/website
|
||||||
|
npm install &>/dev/null
|
||||||
|
npm run build-bundled &>/dev/null
|
||||||
|
cd /opt/authentik/web
|
||||||
|
npm install &>/dev/null
|
||||||
|
npm run build &>/dev/null
|
||||||
|
msg_ok "Built ${APP} website"
|
||||||
|
|
||||||
|
msg_info "Installing Python Dependencies"
|
||||||
|
cd /opt/authentik
|
||||||
|
poetry install --only=main --no-ansi --no-interaction --no-root &>/dev/null
|
||||||
|
poetry export --without-hashes --without-urls -f requirements.txt --output requirements.txt &>/dev/null
|
||||||
|
pip install --no-cache-dir -r requirements.txt &>/dev/null
|
||||||
|
pip install . &>/dev/null
|
||||||
|
msg_ok "Installed Python Dependencies"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP} to v${RELEASE} (Patience)"
|
||||||
|
cp -r /opt/authentik/authentik/blueprints /opt/authentik/blueprints
|
||||||
|
bash /opt/authentik/lifecycle/ak migrate &>/dev/null
|
||||||
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
|
msg_ok "Updated ${APP} to v${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Starting ${APP}"
|
||||||
|
systemctl start authentik-server
|
||||||
|
systemctl start authentik-worker
|
||||||
|
msg_ok "Started ${APP}"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9000/if/flow/initial-setup/${CL}"
|
||||||
@@ -28,7 +28,7 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -f /etc/apt/sources.list.d/mariadb.list ]]; then
|
if [[ ! -d /etc/mysql/mariadb.conf.d ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -f /etc/apt/sources.list.d/mongodb-org-7.0.list ]]; then
|
if [[ ! -f /etc/apt/sources.list.d/mongodb-org-7.0.list && ! -f /etc/apt/sources.list.d/mongodb-org-8.0.list ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
@@ -44,4 +44,4 @@ build_container
|
|||||||
description
|
description
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ function update_script() {
|
|||||||
cp -R /usr/share/zabbix-* /opt/zabbix-backup/
|
cp -R /usr/share/zabbix-* /opt/zabbix-backup/
|
||||||
rm -Rf /etc/apt/sources.list.d/zabbix.list
|
rm -Rf /etc/apt/sources.list.d/zabbix.list
|
||||||
cd /tmp
|
cd /tmp
|
||||||
wget -q https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb
|
wget -q https://repo.zabbix.com/zabbix/7.2/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb
|
||||||
dpkg -i zabbix-release_latest+debian12_all.deb &>/dev/null
|
dpkg -i zabbix-release_latest+debian12_all.deb &>/dev/null
|
||||||
apt-get update &>/dev/null
|
apt-get update &>/dev/null
|
||||||
apt-get install --only-upgrade zabbix-server-pgsql zabbix-frontend-php zabbix-agent2 zabbix-agent2-plugin-* &>/dev/null
|
apt-get install --only-upgrade zabbix-server-pgsql zabbix-frontend-php zabbix-agent2 zabbix-agent2-plugin-* &>/dev/null
|
||||||
@@ -68,4 +68,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}/zabbix${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}/zabbix${CL}"
|
||||||
|
|||||||
@@ -98,6 +98,11 @@ cat *.sql | mysql -u root ${DB_NAME}
|
|||||||
msg_ok "Setup Database"
|
msg_ok "Setup Database"
|
||||||
|
|
||||||
msg_info "Setup Service"
|
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$@@')
|
JAVA_HOME=$(update-alternatives --query javadoc | grep Value: | head -n1 | sed 's/Value: //' | sed 's@bin/javadoc$@@')
|
||||||
cat <<EOF >/etc/systemd/system/tomcat.service
|
cat <<EOF >/etc/systemd/system/tomcat.service
|
||||||
[Unit]
|
[Unit]
|
||||||
|
|||||||
195
install/authentik-install.sh
Normal file
195
install/authentik-install.sh
Normal file
@@ -0,0 +1,195 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2024 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
|
||||||
|
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"
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# Copyright (c) 2021-2024 tteck
|
# Copyright (c) 2021-2024 tteck
|
||||||
@@ -20,14 +21,22 @@ $STD apt-get install -y sudo
|
|||||||
$STD apt-get install -y mc
|
$STD apt-get install -y mc
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing MongoDB"
|
# Abfrage für die MongoDB-Version
|
||||||
wget -qO- https://www.mongodb.org/static/pgp/server-7.0.asc | gpg --dearmor >/usr/share/keyrings/mongodb-server-7.0.gpg
|
read -p "Do you want to install MongoDB 8.0 instead of 7.0? [y/N]: " install_mongodb_8
|
||||||
echo "deb [signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg] http://repo.mongodb.org/apt/debian $(grep '^VERSION_CODENAME=' /etc/os-release | cut -d'=' -f2)/mongodb-org/7.0 main" >/etc/apt/sources.list.d/mongodb-org-7.0.list
|
if [[ "$install_mongodb_8" =~ ^[Yy]$ ]]; then
|
||||||
|
MONGODB_VERSION="8.0"
|
||||||
|
else
|
||||||
|
MONGODB_VERSION="7.0"
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg_info "Installing MongoDB $MONGODB_VERSION"
|
||||||
|
wget -qO- https://www.mongodb.org/static/pgp/server-${MONGODB_VERSION}.asc | gpg --dearmor >/usr/share/keyrings/mongodb-server-${MONGODB_VERSION}.gpg
|
||||||
|
echo "deb [signed-by=/usr/share/keyrings/mongodb-server-${MONGODB_VERSION}.gpg] http://repo.mongodb.org/apt/debian $(grep '^VERSION_CODENAME=' /etc/os-release | cut -d'=' -f2)/mongodb-org/${MONGODB_VERSION} main" >/etc/apt/sources.list.d/mongodb-org-${MONGODB_VERSION}.list
|
||||||
$STD apt-get update
|
$STD apt-get update
|
||||||
$STD apt-get install -y mongodb-org
|
$STD apt-get install -y mongodb-org
|
||||||
sed -i 's/bindIp: 127.0.0.1/bindIp: 0.0.0.0/' /etc/mongod.conf
|
sed -i 's/bindIp: 127.0.0.1/bindIp: 0.0.0.0/' /etc/mongod.conf
|
||||||
systemctl enable -q --now mongod.service
|
systemctl enable -q --now mongod.service
|
||||||
msg_ok "Installed MongoDB"
|
msg_ok "Installed MongoDB $MONGODB_VERSION"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ msg_ok "Installed Dependencies"
|
|||||||
|
|
||||||
msg_info "Installing Zabbix"
|
msg_info "Installing Zabbix"
|
||||||
cd /tmp
|
cd /tmp
|
||||||
wget -q https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb
|
wget -q https://repo.zabbix.com/zabbix/7.2/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb
|
||||||
$STD dpkg -i /tmp/zabbix-release_latest+debian12_all.deb
|
$STD dpkg -i /tmp/zabbix-release_latest+debian12_all.deb
|
||||||
$STD apt-get update
|
$STD apt-get update
|
||||||
$STD apt-get install -y zabbix-server-pgsql zabbix-frontend-php php8.2-pgsql zabbix-apache-conf zabbix-sql-scripts
|
$STD apt-get install -y zabbix-server-pgsql zabbix-frontend-php php8.2-pgsql zabbix-apache-conf zabbix-sql-scripts
|
||||||
@@ -39,7 +39,7 @@ $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCO
|
|||||||
$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 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 default_transaction_isolation TO 'read committed';"
|
||||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC'"
|
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC'"
|
||||||
zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u $DB_USER psql $DB_NAME &>/dev/null
|
zcat /usr/share/zabbix/sql-scripts/postgresql/server.sql.gz | sudo -u $DB_USER psql $DB_NAME &>/dev/null
|
||||||
sed -i "s/^DBName=.*/DBName=$DB_NAME/" /etc/zabbix/zabbix_server.conf
|
sed -i "s/^DBName=.*/DBName=$DB_NAME/" /etc/zabbix/zabbix_server.conf
|
||||||
sed -i "s/^DBUser=.*/DBUser=$DB_USER/" /etc/zabbix/zabbix_server.conf
|
sed -i "s/^DBUser=.*/DBUser=$DB_USER/" /etc/zabbix/zabbix_server.conf
|
||||||
sed -i "s/^# DBPassword=.*/DBPassword=$DB_PASS/" /etc/zabbix/zabbix_server.conf
|
sed -i "s/^# DBPassword=.*/DBPassword=$DB_PASS/" /etc/zabbix/zabbix_server.conf
|
||||||
|
|||||||
39
json/authentik.json
Normal file
39
json/authentik.json
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
{
|
||||||
|
"name": "authentik",
|
||||||
|
"slug": "authentik",
|
||||||
|
"categories": [
|
||||||
|
11
|
||||||
|
],
|
||||||
|
"date_created": "2024-12-27",
|
||||||
|
"type": "ct",
|
||||||
|
"updateable": true,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": 9000,
|
||||||
|
"documentation": "https://docs.goauthentik.io/docs/",
|
||||||
|
"website": "https://goauthentik.io/",
|
||||||
|
"logo": "https://raw.githubusercontent.com/goauthentik/authentik/refs/heads/main/website/static/img/icon.png",
|
||||||
|
"description": "authentik is an IdP (Identity Provider) and SSO (single sign on) that is built with security at the forefront of every piece of code, every feature, with an emphasis on flexibility and versatility.",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "ct/authentik.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 6,
|
||||||
|
"ram": 8192,
|
||||||
|
"hdd": 12,
|
||||||
|
"os": "debian",
|
||||||
|
"version": "12"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": null,
|
||||||
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "Authentik is very resource-heavy, it is recommended to use at least 8GB RAM anytime!",
|
||||||
|
"type": "warning"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
"script": "ct/sabnzbd.sh",
|
"script": "ct/sabnzbd.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 2,
|
"cpu": 2,
|
||||||
"ram": 2048,
|
"ram": 4096,
|
||||||
"hdd": 8,
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
@@ -31,4 +31,4 @@
|
|||||||
"password": null
|
"password": null
|
||||||
},
|
},
|
||||||
"notes": []
|
"notes": []
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -157,26 +157,76 @@ arch_check() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Function to get the current IP address based on the distribution
|
||||||
|
get_current_ip() {
|
||||||
|
if [ -f /etc/os-release ]; then
|
||||||
|
# Check for Debian/Ubuntu (uses hostname -I)
|
||||||
|
if grep -qE 'ID=debian|ID=ubuntu' /etc/os-release; then
|
||||||
|
CURRENT_IP=$(hostname -I | awk '{print $1}')
|
||||||
|
# Check for Alpine (uses ip command)
|
||||||
|
elif grep -q 'ID=alpine' /etc/os-release; then
|
||||||
|
CURRENT_IP=$(ip -4 addr show eth0 | awk '/inet / {print $2}' | cut -d/ -f1 | head -n 1)
|
||||||
|
else
|
||||||
|
CURRENT_IP="Unknown"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
echo "$CURRENT_IP"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to update the IP address in the MOTD file
|
||||||
|
update_motd_ip() {
|
||||||
|
MOTD_FILE="/etc/motd"
|
||||||
|
|
||||||
|
if [ -f "$MOTD_FILE" ]; then
|
||||||
|
# Remove existing IP Address lines to prevent duplication
|
||||||
|
sed -i '/IP Address:/d' "$MOTD_FILE"
|
||||||
|
|
||||||
|
IP=$(get_current_ip)
|
||||||
|
# Add the new IP address
|
||||||
|
echo -e "${TAB}${NETWORK}${YW} IP Address: ${GN}${IP}${CL}" >> "$MOTD_FILE"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# This function sets the APP-Name into an ASCII Header in Slant, figlet needed on proxmox main node.
|
# This function sets the APP-Name into an ASCII Header in Slant, figlet needed on proxmox main node.
|
||||||
header_info() {
|
header_info() {
|
||||||
if [ -f /etc/debian_version ]; then
|
# Check if figlet is installed
|
||||||
# Debian/Ubuntu
|
if ! command -v figlet &> /dev/null; then
|
||||||
apt-get install -y figlet &> /dev/null
|
echo -e "${INFO}${BOLD}${DGN}Figlet for ASCII-Header not found. Installing... ${CL}"
|
||||||
elif [ -f /etc/alpine-release ]; then
|
|
||||||
# Alpine Linux
|
|
||||||
apk add --no-cache figlet ncurses &> /dev/null
|
|
||||||
export TERM=xterm
|
|
||||||
else
|
|
||||||
echo "Unsupported OS"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
term_width=$(tput cols 2>/dev/null || echo 120) # Fallback to 120 columns
|
# Install necessary dependencies and figlet
|
||||||
|
if [ -f /etc/debian_version ] || [ -f /etc/lsb-release ]; then
|
||||||
|
apt-get update -y &> /dev/null
|
||||||
|
apt-get install -y tar build-essential &> /dev/null
|
||||||
|
elif [ -f /etc/alpine-release ]; then
|
||||||
|
apk add --no-cache tar build-base &> /dev/null
|
||||||
|
export TERM=xterm
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
temp_dir=$(mktemp -d)
|
||||||
|
curl -sL https://github.com/community-scripts/ProxmoxVE/raw/refs/heads/main/misc/figlet.tar.xz -o "$temp_dir/figlet.tar.xz"
|
||||||
|
mkdir -p /tmp/figlet
|
||||||
|
tar -xf "$temp_dir/figlet.tar.xz" -C /tmp/figlet --strip-components=1
|
||||||
|
cd /tmp/figlet
|
||||||
|
# Run make to compile the figlet binary
|
||||||
|
make >/dev/null
|
||||||
|
# Check if the figlet binary exists
|
||||||
|
if [ -f "figlet" ]; then
|
||||||
|
chmod +x figlet
|
||||||
|
# Move figlet to /usr/local/bin if not already there
|
||||||
|
if [ ! -e /usr/local/bin/figlet ]; then
|
||||||
|
mv figlet /usr/local/bin/
|
||||||
|
mkdir -p /usr/local/share/figlet
|
||||||
|
cp -r /tmp/figlet/fonts/*.flf /usr/local/share/figlet/
|
||||||
|
fi
|
||||||
|
echo -e "${CM}${BOLD}${DGN}Figlet successfully installed. ${CL}"
|
||||||
|
fi
|
||||||
|
rm -rf "$temp_dir"
|
||||||
|
fi
|
||||||
|
term_width=$(tput cols 2>/dev/null || echo 120)
|
||||||
ascii_art=$(figlet -f slant -w "$term_width" "$APP")
|
ascii_art=$(figlet -f slant -w "$term_width" "$APP")
|
||||||
clear
|
clear
|
||||||
cat <<EOF
|
echo "$ascii_art"
|
||||||
$ascii_art
|
|
||||||
EOF
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# This function checks if the script is running through SSH and prompts the user to confirm if they want to proceed or exit.
|
# This function checks if the script is running through SSH and prompts the user to confirm if they want to proceed or exit.
|
||||||
@@ -317,7 +367,7 @@ advanced_settings() {
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
# Setting Default Tag for Advanced Settings
|
# Setting Default Tag for Advanced Settings
|
||||||
TAGS="community-script;"
|
TAGS="community-script;${var_tags:-}"
|
||||||
|
|
||||||
CT_TYPE=""
|
CT_TYPE=""
|
||||||
while [ -z "$CT_TYPE" ]; do
|
while [ -z "$CT_TYPE" ]; do
|
||||||
|
|||||||
BIN
misc/figlet.tar.xz
Normal file
BIN
misc/figlet.tar.xz
Normal file
Binary file not shown.
Reference in New Issue
Block a user