Skip to content

Commit 60da4ee

Browse files
bvdberg01havardthom
authored andcommitted
Update json/netbox.json
Co-Authored-By: Håvard Gjøby Thom <[email protected]>
1 parent 515eb30 commit 60da4ee

File tree

3 files changed

+106
-85
lines changed

3 files changed

+106
-85
lines changed

ct/netbox.sh

Lines changed: 45 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,17 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
88
function header_info {
99
clear
1010
cat <<"EOF"
11-
__ __
12-
____ ___ / /_/ /_ ____ _ __
13-
/ __ \/ _ \/ __/ __ \/ __ \| |/_/
14-
/ / / / __/ /_/ /_/ / /_/ /> <
15-
/_/ /_/\___/\__/_.___/\____/_/|_|
11+
_ __ __ ____
12+
/ | / /__ / /_/ __ )____ _ __
13+
/ |/ / _ \/ __/ __ / __ \| |/_/
14+
/ /| / __/ /_/ /_/ / /_/ /> <
15+
/_/ |_/\___/\__/_____/\____/_/|_|
1616
1717
EOF
1818
}
1919
header_info
2020
echo -e "Loading..."
21-
APP="Netbox"
21+
APP="NetBox"
2222
var_disk="4"
2323
var_cpu="2"
2424
var_ram="2048"
@@ -54,39 +54,53 @@ function default_settings() {
5454

5555
function update_script() {
5656
header_info
57-
if [[ ! -f /opt/netbox/netbox/netbox/configuration.py ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
57+
check_container_storage
58+
check_container_resources
59+
if [[ ! -f /etc/systemd/system/netbox.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
60+
5861
RELEASE=$(curl -s https://api.github.com/repos/netbox-community/netbox/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
59-
if [ ! -d "/opt/netbox-${RELEASE}" ]; then
60-
msg_info "Updating $APP LXC"
61-
apt-get update &>/dev/null
62-
apt-get -y upgrade &>/dev/null
63-
64-
OLD_VERSION_PATH=$(ls -d /opt/netbox-*/)
65-
wget -q "https://github.com/netbox-community/netbox/archive/refs/tags/v${RELEASE}.tar.gz"
66-
tar -xzf "v${RELEASE}.tar.gz" -C /opt
67-
ln -sfn "/opt/netbox-${RELEASE}/" /opt/netbox
68-
rm "v${RELEASE}.tar.gz"
62+
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
63+
64+
msg_info "Stopping ${APP}"
65+
systemctl stop netbox netbox-rq
66+
msg_ok "Stopped ${APP}"
67+
68+
msg_info "Updating $APP to v${RELEASE}"
69+
mv /opt/netbox/ /opt/netbod-oldversion
70+
cd /opt
71+
wget -q "https://github.com/netbox-community/netbox/archive/refs/tags/v${RELEASE}.zip"
72+
unzip -q "v${RELEASE}.zip"
73+
mv /opt/netbox-${RELEASE}/ /opt/netbox/
6974

70-
cp "${OLD_VERSION_PATH}netbox/netbox/configuration.py" /opt/netbox/netbox/netbox/
71-
cp -pr "${OLD_VERSION_PATH}netbox/media/" /opt/netbox/netbox/
72-
cp -r "${OLD_VERSION_PATH}netbox/scripts" /opt/netbox/netbox/
73-
cp -r "${OLD_VERSION_PATH}netbox/reports" /opt/netbox/netbox/
74-
cp "${OLD_VERSION_PATH}gunicorn.py" /opt/netbox/
75+
cp -r /opt/netbod-oldversion/netbox/netbox/configuration.py /opt/netbox/netbox/netbox/
76+
cp -r /opt/netbod-oldversion/netbox/media/ /opt/netbox/netbox/
77+
cp -r /opt/netbod-oldversion/netbox/scripts /opt/netbox/netbox/
78+
cp -r /opt/netbod-oldversion/netbox/reports /opt/netbox/netbox/
79+
cp -r /opt/netbod-oldversion/gunicorn.py /opt/netbox/
7580

76-
if [ -d "${OLD_VERSION_PATH}local_requirements.txt" ]; then
77-
cp "${OLD_VERSION_PATH}local_requirements.txt" /opt/netbox/
81+
if [ -d /opt/netbod-oldversion/local_requirements.txt ]; then
82+
cp -r /opt/netbod-oldversion/local_requirements.txt /opt/netbox/
7883
fi
7984

80-
if [ -d "${OLD_VERSION_PATH}netbox/netbox/ldap_config.py" ]; then
81-
cp "${OLD_VERSION_PATH}netbox/netbox/ldap_config.py" /opt/netbox/netbox/netbox/
85+
if [ -d /opt/netbod-oldversion/netbox/netbox/ldap_config.py ]; then
86+
cp -r /opt/netbod-oldversion/netbox/netbox/ldap_config.py /opt/netbox/netbox/netbox/
8287
fi
83-
84-
rm -r "${OLD_VERSION_PATH}"
88+
8589
/opt/netbox/upgrade.sh &>/dev/null
86-
systemctl restart --now netbox netbox-rq
87-
msg_ok "Updated $APP LXC"
90+
echo "${RELEASE}" >/opt/${APP}_version.txt
91+
msg_ok "Updated $APP to v${RELEASE}"
92+
93+
msg_info "Starting ${APP}"
94+
systemctl start netbox netbox-rq
95+
msg_ok "Started ${APP}"
96+
97+
msg_info "Cleaning up"
98+
rm -r "/opt/v${RELEASE}.zip"
99+
rm -r /opt/netbod-oldversion
100+
msg_ok "Cleaned"
101+
msg_ok "Updated Successfully"
88102
else
89-
msg_ok "No update required. ${APP} is already at ${RELEASE}"
103+
msg_ok "No update required. ${APP} is already at v${RELEASE}"
90104
fi
91105
exit
92106
}

install/netbox-install.sh

Lines changed: 54 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -14,24 +14,24 @@ network_check
1414
update_os
1515

1616
msg_info "Installing Dependencies"
17-
$STD apt-get update
18-
$STD apt-get install -y curl
19-
$STD apt-get install -y sudo
20-
$STD apt-get install -y mc
21-
$STD apt-get install -y apache2
22-
$STD apt-get install -y redis-server
23-
$STD apt-get install -y postgresql
24-
$STD apt-get install -y python3
25-
$STD apt-get install -y python3-pip
26-
$STD apt-get install -y python3-venv
27-
$STD apt-get install -y python3-dev
28-
$STD apt-get install -y build-essential
29-
$STD apt-get install -y libxml2-dev
30-
$STD apt-get install -y libxslt1-dev
31-
$STD apt-get install -y libffi-dev
32-
$STD apt-get install -y libpq-dev
33-
$STD apt-get install -y libssl-dev
34-
$STD apt-get install -y zlib1g-dev
17+
$STD apt-get install -y \
18+
curl \
19+
sudo \
20+
mc \
21+
apache2 \
22+
redis-server \
23+
postgresql \
24+
python3 \
25+
python3-pip \
26+
python3-venv \
27+
python3-dev \
28+
build-essential \
29+
libxml2-dev \
30+
libxslt1-dev \
31+
libffi-dev \
32+
libpq-dev \
33+
libssl-dev \
34+
zlib1g-dev
3535
msg_ok "Installed Dependencies"
3636

3737
msg_info "Setting up PostgreSQL"
@@ -40,76 +40,83 @@ DB_USER=netbox
4040
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
4141
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
4242
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMPLATE template0;"
43+
{
44+
echo "Netbox-Credentials"
45+
echo -e "Netbox Database User: \e[32m$DB_USER\e[0m"
46+
echo -e "Netbox Database Password: \e[32m$DB_PASS\e[0m"
47+
echo -e "Netbox Database Name: \e[32m$DB_NAME\e[0m"
48+
} >> ~/netbox.creds
4349
msg_ok "Set up PostgreSQL"
4450

45-
msg_info "Installing NetBox"
51+
msg_info "Installing NetBox"
52+
cd /opt
4653
RELEASE=$(curl -s https://api.github.com/repos/netbox-community/netbox/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
47-
wget -q "https://github.com/netbox-community/netbox/archive/refs/tags/v${RELEASE}.tar.gz"
48-
tar -xzf "v${RELEASE}.tar.gz" -C /opt
49-
ln -s "/opt/netbox-${RELEASE}/" /opt/netbox
50-
rm "v${RELEASE}.tar.gz"
54+
wget -q "https://github.com/netbox-community/netbox/archive/refs/tags/v${RELEASE}.zip"
55+
unzip -q "v${RELEASE}.zip"
56+
mv /opt/netbox-${RELEASE}/ /opt/netbox
5157

5258
$STD adduser --system --group netbox
5359
chown --recursive netbox /opt/netbox/netbox/media/
5460
chown --recursive netbox /opt/netbox/netbox/reports/
5561
chown --recursive netbox /opt/netbox/netbox/scripts/
5662

57-
cp /opt/netbox/netbox/netbox/configuration_example.py /opt/netbox/netbox/netbox/configuration.py
63+
mv /opt/netbox/netbox/netbox/configuration_example.py /opt/netbox/netbox/netbox/configuration.py
5864

59-
secret=$(python3 /opt/netbox/netbox/generate_secret_key.py)
60-
escaped_secret=$(printf '%s\n' "$secret" | sed 's/[&/\]/\\&/g')
65+
SECRET_KEY=$(python3 /opt/netbox/netbox/generate_secret_key.py)
66+
ESCAPED_SECRET_KEY=$(printf '%s\n' "$SECRET_KEY" | sed 's/[&/\]/\\&/g')
6167

6268
sed -i 's/ALLOWED_HOSTS = \[\]/ALLOWED_HOSTS = ["*"]/' /opt/netbox/netbox/netbox/configuration.py
63-
sed -i "s|SECRET_KEY = ''|SECRET_KEY = '${escaped_secret}'|" /opt/netbox/netbox/netbox/configuration.py
69+
sed -i "s|SECRET_KEY = ''|SECRET_KEY = '${ESCAPED_SECRET_KEY}'|" /opt/netbox/netbox/netbox/configuration.py
6470
sed -i "/DATABASE = {/,/}/s/'USER': '[^']*'/'USER': '$DB_USER'/" /opt/netbox/netbox/netbox/configuration.py
6571
sed -i "/DATABASE = {/,/}/s/'PASSWORD': '[^']*'/'PASSWORD': '$DB_PASS'/" /opt/netbox/netbox/netbox/configuration.py
6672

67-
$STD /opt/netbox/upgrade.sh &>/dev/null
68-
sudo ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping
73+
$STD /opt/netbox/upgrade.sh
74+
ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping
6975

70-
sudo cp /opt/netbox/contrib/apache.conf /etc/apache2/sites-available/netbox.conf
71-
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/netbox.key -out /etc/ssl/certs/netbox.crt -subj "/C=US/O=NetBox/OU=Certificate/CN=localhost" &>/dev/null
76+
mv /opt/netbox/contrib/apache.conf /etc/apache2/sites-available/netbox.conf
77+
$STD openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/netbox.key -out /etc/ssl/certs/netbox.crt -subj "/C=US/O=NetBox/OU=Certificate/CN=localhost"
7278
$STD a2enmod ssl proxy proxy_http headers rewrite
7379
$STD a2ensite netbox
7480
systemctl restart apache2
7581

76-
cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py
77-
cp /opt/netbox/contrib/*.service /etc/systemd/system/
82+
mv /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py
83+
mv /opt/netbox/contrib/*.service /etc/systemd/system/
7884
systemctl daemon-reload
7985
systemctl enable -q --now netbox netbox-rq
8086

87+
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
88+
{
89+
echo -e "Netbox Secret: \e[32m$SECRET_KEY\e[0m"
90+
} >> ~/netbox.creds
91+
msg_ok "Set up PostgreSQL"
8192
msg_ok "Installed NetBox"
8293

8394
msg_info "Setting up Django Admin"
84-
NetBox_USER=Admin
85-
NetBox_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
95+
DJANGO_USER=Admin
96+
DJANGO_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
8697

8798
source /opt/netbox/venv/bin/activate
8899
$STD python3 /opt/netbox/netbox/manage.py shell << EOF
89100
from django.contrib.auth import get_user_model
90101
UserModel = get_user_model()
91-
user = UserModel.objects.create_user('$NetBox_USER', password='$NetBox_PASS')
102+
user = UserModel.objects.create_user('$DJANGO_USER', password='$DJANGO_PASS')
92103
user.is_superuser = True
93104
user.is_staff = True
94105
user.save()
95106
EOF
107+
{
108+
echo ""
109+
echo "Netbox-Django-Credentials"
110+
echo -e "Django User: \e[32m$DJANGO_USER\e[0m"
111+
echo -e "Django Password: \e[32m$DJANGO_PASS\e[0m"
112+
} >> ~/netbox.creds
96113
msg_ok "Setup Django Admin"
97114

98-
msg_info "Save credential file"
99-
echo "" >~/NetBox.creds
100-
echo "NetBox Database Credentials" >>~/NetBox.creds
101-
echo "" >>~/NetBox.creds
102-
echo -e "NetBox Database User: \e[32m$DB_USER\e[0m" >>~/NetBox.creds
103-
echo -e "NetBox Database Password: \e[32m$DB_PASS\e[0m" >>~/NetBox.creds
104-
echo -e "NetBox Database Name: \e[32m$DB_NAME\e[0m" >>~/NetBox.creds
105-
echo -e "NetBox Admin user: \e[32m$NetBox_USER\e[0m" >>~/NetBox.creds
106-
echo -e "NetBox Admin Password: \e[32m$NetBox_PASS\e[0m" >>~/NetBox.creds
107-
msg_ok "Save cred file"
108-
109115
motd_ssh
110116
customize
111117

112118
msg_info "Cleaning up"
119+
rm "/opt/v${RELEASE}.zip"
113120
$STD apt-get -y autoremove
114121
$STD apt-get -y autoclean
115122
msg_ok "Cleaned"

json/netbox.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66
],
77
"date_created": "2024-11-17",
88
"type": "ct",
9-
"updateable": false,
9+
"updateable": true,
1010
"privileged": false,
1111
"interface_port": "443",
1212
"documentation": "https://netboxlabs.com/docs/netbox/en/stable/",
13-
"website": "https://github.com/netbox-community/netbox",
14-
"logo": "https://netboxlabs.com/wp-content/uploads/2023/10/logo_netboxlabs_bright_teal.svg",
13+
"website": "https://netboxlabs.com/",
14+
"logo": "https://github.com/netbox-community/netbox/wiki/images/logos/netbox_icon.svg",
1515
"description": "NetBox is the source of truth for everything on your network, from physical components like power systems and cabling to virtual assets like IP addresses and VLANs. Network automation and observability tools depend on NetBox’s authoritative data to roll out configurations, monitor changes, and accelerate operations across the enterprise",
1616
"install_methods": [
1717
{
@@ -27,13 +27,13 @@
2727
}
2828
],
2929
"default_credentials": {
30-
"username": "Admin",
31-
"password": "See output: cat NetBox.creds"
30+
"username": null,
31+
"password": null
3232
},
3333
"notes": [
3434
{
35-
"text": "Generated database & admin credentials see output: `cat NetBox.creds`",
36-
"type": "warning"
35+
"text": "Show login and database credentials: `cat netbox.creds`",
36+
"type": "info"
3737
}
3838
]
3939
}

0 commit comments

Comments
 (0)