ProxmoxVED/install/verdaccio-install.sh
2025-09-22 20:41:37 +02:00

118 lines
2.4 KiB
Bash

#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: BrynnJKnight
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://verdaccio.org/
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 \
ca-certificates \
build-essential
msg_ok "Installed Dependencies"
NODE_VERSION="22" setup_nodejs
msg_info "Installing Verdaccio"
$STD npm install --global verdaccio
msg_ok "Installed Verdaccio"
msg_info "Configuring Verdaccio"
HOST_IP=$(hostname -I | awk '{print $1}')
mkdir -p /etc/verdaccio
mkdir -p /var/lib/verdaccio
cat <<EOF >/etc/verdaccio/config.yaml
# Verdaccio configuration
storage: /var/lib/verdaccio
auth:
htpasswd:
file: /var/lib/verdaccio/htpasswd
max_users: 1000
uplinks:
npmjs:
url: https://registry.npmjs.org/
packages:
'@*/*':
access: \$all
publish: \$authenticated
proxy: npmjs
'**':
access: \$all
publish: \$authenticated
proxy: npmjs
middlewares:
audit:
enabled: true
logs:
- {type: stdout, format: pretty, level: http}
listen:
- 0.0.0.0:4873
web:
enable: true
title: Verdaccio
gravatar: true
sort_packages: asc
login: true
EOF
chown -R root:root /etc/verdaccio
chown -R root:root /var/lib/verdaccio
chmod -R 755 /etc/verdaccio
chmod -R 755 /var/lib/verdaccio
msg_ok "Configured Verdaccio"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/verdaccio.service
[Unit]
Description=Verdaccio lightweight private npm proxy registry
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/verdaccio --config /etc/verdaccio/config.yaml
Restart=on-failure
StandardOutput=journal
StandardError=journal
SyslogIdentifier=verdaccio
KillMode=control-group
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now verdaccio
msg_ok "Created Service"
msg_info "Creating Update Script"
cat <<'EOF' >/usr/bin/update
#!/bin/bash
set -euo pipefail
NODE_VERSION="22"
export NVM_DIR="/opt/nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
nvm use $NODE_VERSION >/dev/null 2>&1
echo "Updating Verdaccio..."
npm update -g verdaccio
systemctl restart verdaccio
echo "Verdaccio has been updated successfully."
EOF
chmod +x /usr/bin/update
msg_ok "Created Update Script"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"