From 47637f0f0d7d83c8593c7b24f5423c9458c6ebd2 Mon Sep 17 00:00:00 2001 From: deadcxap <36386824+deadcxap@users.noreply.github.com> Date: Thu, 12 Mar 2026 22:39:00 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D1=82=D0=BE=D1=87=D0=BD=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20=D0=BF=D1=80=D0=B0=D0=B2=D0=B0=20my-aliases.sh=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D0=B2=D1=81=D0=B5=D1=85=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=D0=B5?= =?UTF-8?q?=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- setup.sh | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 69 insertions(+), 3 deletions(-) diff --git a/setup.sh b/setup.sh index 924ad07..83bc0c3 100644 --- a/setup.sh +++ b/setup.sh @@ -72,6 +72,12 @@ print_summary() { cleanup() { local rc=$? + + if [[ -n "${CURL_HOME:-}" ]]; then + rm -rf "$CURL_HOME" + fi + unset CURL_HOME GITHUB_TOKEN GH_AUTH_HEADER GIT_TERMINAL_PROMPT + if [[ $rc -ne 0 ]]; then log "Скрипт завершился с ошибкой (код $rc)" else @@ -95,6 +101,7 @@ Usage: $0 --user NAME --sshkey KEY [options] -n, --netbird-key KEY (optional) Netbird setup key -i, --netbird-ip IP (optional) Netbird central server IP -p, --netbird-port PORT (optional) Netbird central server port + -o, --hostname NAME (optional) Hostname to set on server USAGE } @@ -107,11 +114,12 @@ ROLE="" NETBIRD_KEY="" NETBIRD_IP="" NETBIRD_PORT="" +HOSTNAME_VALUE="" parse_args() { local opts if ! opts=$(getopt \ - -o u:k:s:m:v:r:n:i:p:h \ - --long user:,sshkey:,ssh-ip:,monitor-ip:,vector:,role:,netbird-key:,netbird-ip:,netbird-port:,help \ + -o u:k:s:m:v:r:n:i:p:o:h \ + --long user:,sshkey:,ssh-ip:,monitor-ip:,vector:,role:,netbird-key:,netbird-ip:,netbird-port:,hostname:,help \ -n "$0" -- "$@"); then usage exit 1 @@ -128,6 +136,7 @@ parse_args() { -n|--netbird-key) NETBIRD_KEY="$2"; shift 2 ;; -i|--netbird-ip) NETBIRD_IP="$2"; shift 2 ;; -p|--netbird-port) NETBIRD_PORT="$2"; shift 2 ;; + -o|--hostname) HOSTNAME_VALUE="$2"; shift 2 ;; -h|--help) usage; exit 0 ;; --) shift; break ;; *) log "Unknown parameter: $1"; usage; exit 1 ;; @@ -150,7 +159,20 @@ fi install_packages() { run "Waiting for apt lock" wait_for_apt run "Updating package index" apt-get update -y - run "Installing base packages" apt-get install -y --no-install-recommends sudo curl wget git ufw logrotate unattended-upgrades ca-certificates gnupg lsb-release apt-transport-https jq + run "Installing base packages" apt-get install -y --no-install-recommends sudo curl wget git ufw logrotate unattended-upgrades ca-certificates gnupg lsb-release apt-transport-https jq hstr bat eza duf +} + +setup_hostname() { + [[ -z "$HOSTNAME_VALUE" ]] && return + + run "Setting hostname to $HOSTNAME_VALUE" hostnamectl set-hostname "$HOSTNAME_VALUE" + run "Updating /etc/hosts with hostname $HOSTNAME_VALUE" bash -c " + if grep -qE '^127\.0\.1\.1[[:space:]]+' /etc/hosts; then + sed -i -E 's/^127\\.0\\.1\\.1[[:space:]].*/127.0.1.1 ${HOSTNAME_VALUE}/' /etc/hosts + else + printf '127.0.1.1 %s\\n' '$HOSTNAME_VALUE' >> /etc/hosts + fi + " } setup_timezone() { @@ -269,6 +291,46 @@ configure_logrotate() { EOF" } +configure_hstr() { + run "Enabling HSTR bash configuration for $USERNAME" sudo -u "$USERNAME" -H bash -lc "hstr --show-bash-configuration >> ~/.bashrc && source ~/.bashrc" +} + +install_custom_motd() { + run "Installing custom MOTD" bash -c "curl -sSL https://raw.githubusercontent.com/Skrepysh/remnawave-motd/refs/heads/main/install-motd.sh | sudo bash" + run "Ensuring SSH MOTD is enabled" bash -c " + cfg='/etc/ssh/sshd_config.d/99-motd.conf' + install -d -m 755 /etc/ssh/sshd_config.d + printf '%s\n' 'PrintMotd yes' 'UsePAM yes' > "\$cfg" + chmod 0644 "\$cfg" + chown root:root "\$cfg" + sshd -t + systemctl reload sshd 2>/dev/null || systemctl reload ssh 2>/dev/null || systemctl restart sshd 2>/dev/null || systemctl restart ssh + " +} + +create_aliases_file() { + run "Creating /etc/profile.d/my-aliases.sh" bash -c "cat >/etc/profile.d/my-aliases.sh <<'EOF' +export PATH=\"/home/deadcxap/.local/bin:\$PATH\" + +alias dc='docker compose' +alias dcu='docker compose up -d' +alias dcd='docker compose down' +alias dcl='docker compose logs -f -t' +alias dcp='docker compose pull' +dcr() { + docker compose down && docker compose up -d && docker compose logs -f -t +} +dcur() { + docker compose pull && docker compose down && docker compose up -d && docker compose logs -f -t +} +alias ..='cd ..' +alias ll='eza -lahgF --icons --group-directories-first' +alias bat='batcat' +EOF +# /etc/profile подхватывает readable *.sh из /etc/profile.d для всех пользователей +chmod 0644 /etc/profile.d/my-aliases.sh" +} + configure_sysctl() { run "Configuring sysctl parameters" bash -c "tee /etc/sysctl.d/90-vrbee.conf >/dev/null <<'EOF' net.core.default_qdisc = fq @@ -384,12 +446,16 @@ main() { install_packages configure_sysctl setup_timezone + setup_hostname create_user configure_ssh configure_ufw install_docker configure_fail2ban configure_logrotate + configure_hstr + create_aliases_file + install_custom_motd install_netbird setup_vector setup_role