netbox インストール on raspberry pi - ぶやかー

Postgresql インストール

sudo apt-get update && sudo apt-get upgrade -y &&
sudo apt-get install -y postgresql libpq-dev

netbox用DB作成

sudo -E -u postgres psql -c "CREATE DATABASE netbox;"
sudo -E -u postgres psql -c "CREATE USER netbox WITH PASSWORD 'netbox';"
sudo -E -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;"

Redisサーバ インストール

sudo apt install -y redis-server &&
redis-cli ping

Python3 インストール

sudo apt-get install -y python3 python3-pip python3-dev python3-venv python3-launchpadlib python3-testresources\
  build-essential libxml2-dev libxslt1-dev libffi-dev graphviz\
  libpq-dev libssl-dev zlib1g-dev git &&
sudo python3 -mpip install --upgrade pip wheel setuptools

netbox用ユーザ作成

外部からログインとかしない(させない)のでパスワードは要らない気がする

sudo useradd -s /bin/bash -m -r netbox
sudo su - netbox
set -o vi &&
mkdir -p ~/.ssh &&
echo -e "\nset -o vi" | tee -a  ~/.bashrc  > /dev/null &&
cat <<EOF | tee ~/.ssh/config > /dev/null &&
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null
EOF
chmod 700 .ssh &&
chmod 600 .ssh/config &&
exit

netboxをGitから取得

sudo git clone -b master https://github.com/netbox-community/netbox.git /opt/netbox

netboxユーザのhomeを強引に変更

sudo ls -1a /home/netbox | sudo tee -a /opt/netbox/.gitignore
echo .gitignore | sudo tee -a /opt/netbox/.gitignore
sudo cp -r /home/netbox/. /opt/netbox
sudo chown -R netbox. /opt/netbox
sudo usermod -d /opt/netbox netbox
sudo rm -rf /home/netbox

netbox configuration.py 設定

sudo su - netbox
cp /opt/netbox/netbox/netbox/configuration.example.py /opt/netbox/netbox/netbox/configuration.py
python3 /opt/netbox/netbox/generate_secret_key.py
vi /opt/netbox/netbox/netbox/configuration.py

最低限以下修正

ALLOWED_HOSTS = ['*']
DATABASE = {
    'NAME': 'netbox',         # Database name
    'USER': 'netbox',         # PostgreSQL username
    'PASSWORD': 'netbox',     # PostgreSQL password
    'HOST': 'localhost',      # Database server
    'PORT': '',               # Database port (leave blank for default)
    'CONN_MAX_AGE': 300,      # Max database connection age
}
SECRET_KEY = 'ZqZsfk*=juLQ4s5#I9UD-J5gyv#fd+GJ2Mc5Hv@9wDiKh2Z34b'
TIME_ZONE = 'Asia/Tokyo'

netboxセットアップ

いつのまにかセットアップ用のスクリプトが同梱されているのでぜひ使う

./upgrade.sh
cp /opt/netbox/contrib/gunicorn.py /opt/netbox/.

superuser作成

source /opt/netbox/venv/bin/activate
cd /opt/netbox/netbox
python manage.py createsuperuser

テスト

python manage.py runserver 0.0.0.0:8000 --insecure
exit

サービス登録

デフォルトだとgunicornで動かしてる。

sudo cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py
sudo cp /opt/netbox/contrib/*.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl start netbox netbox-rq
sudo systemctl enable netbox netbox-rq

nginx

デフォルトのnginx.confだとhttps必須になっちゃうので、検証用にhttp
のnginx.confで動かしてみる

sudo su - netbox
cp contrib/nginx.conf contrib/nginx_tls.conf
cat << 'EOF' > contrib/nginx.conf
server {
    listen [::]:80 ipv6only=off;
    server_name _;

    client_max_body_size 25m;

    location /static/ {
        alias /opt/netbox/netbox/static/;
    }

    location / {
        proxy_pass http://127.0.0.1:8001;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
EOF
exit
sudo apt install -y nginx
sudo rm /etc/nginx/sites-enabled/default
sudo ln -s /opt/netbox/contrib/nginx.conf /etc/nginx/sites-enabled/netbox
sudo nginx -t
sudo systemctl restart nginx

Housekeeping

日々のお掃除追加

sudo cp /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/

backup restore

https://netbox.readthedocs.io/en/stable/administration/replicating-netbox/

sqlデータベースをまるっと置き換えるかんじ

この記事を書いた人 Wrote this article

kmatsunuma

TOP