New structure, additional setup

pull/1/head
Dominik Dzienia 2 years ago
parent de2468a5f3
commit 0093b72f76

@ -1,15 +0,0 @@
const fs = require('fs');
const regexDevRemove = /(\#dev\-begin.*?\#dev\-end)\n/mgs;
const regexInclude = /(#include\s+(\S+))/mgs;
try {
let data = fs.readFileSync('setup.sh', 'utf8');
data = data.replace(regexDevRemove, '');
data = data.replace(regexInclude, (_, _2, fileName) => {
const included = fs.readFileSync(fileName, 'utf8');
return included
});
fs.writeFileSync('install.sh', data);
} catch (err) {
console.error(err);
}

@ -264,6 +264,23 @@ exit_on_no_cancel() {
fi fi
} }
setup_users() {
id -u mongodb &>/dev/null
if [ $RESULT -eq 0 ]; then
msgcheck "Mongo DB user detected"
else
ohai "Configuring Mongo DB user"
useradd -u 1001 -g 0 mongodb
fi
}
setup_dir_structure() {
ohai "Configuring folder structure"
mkdir -p /srv/nightscout/data/mongodb
mkdir -p /srv/nightscout/config
chown -R mongodb:root /srv/nightscout/data/mongodb
}
MIKRUS_APIKEY='' MIKRUS_APIKEY=''
MIKRUS_HOST='' MIKRUS_HOST=''
@ -274,7 +291,7 @@ prompt_mikrus_host() {
if [[ "$MIKRUS_HOST" =~ [a-z][0-9]{3} ]]; then if [[ "$MIKRUS_HOST" =~ [a-z][0-9]{3} ]]; then
break; break;
else else
MIKRUS_NEW_HOST=$(whiptail --title "Podaj identyfikator serwera" --inputbox "\nNie udało się wykryć identyfikatora serwera,\npodaj go poniżej ręcznie.\n\nIdentyfikator składa się z jednej litery i trzech cyfr\n" 13 65 3>&1 1>&2 2>&3) MIKRUS_NEW_HOST=$(whiptail --title "Podaj identyfikator serwera" --inputbox "\nNie udało się wykryć identyfikatora serwera,\npodaj go poniżej ręcznie.\n\nIdentyfikator składa się z jednej litery i trzech cyfr\n" --cancel-button "Anuluj" 13 65 3>&1 1>&2 2>&3)
exit_on_no_cancel exit_on_no_cancel
if [[ "$MIKRUS_NEW_HOST" =~ [a-z][0-9]{3} ]]; then if [[ "$MIKRUS_NEW_HOST" =~ [a-z][0-9]{3} ]]; then
MIKRUS_HOST=$MIKRUS_NEW_HOST MIKRUS_HOST=$MIKRUS_NEW_HOST
@ -294,7 +311,7 @@ prompt_mikrus_apikey() {
exit_on_no_cancel exit_on_no_cancel
while : ; do while : ; do
MIKRUS_APIKEY=$(whiptail --title "Podaj klucz API" --inputbox "\nWpisz klucz API. Jeśli masz go skopiowanego w schowku,\nkliknij prawym przyciskiem i wybierz <wklej> z menu:" 11 65 3>&1 1>&2 2>&3) MIKRUS_APIKEY=$(whiptail --title "Podaj klucz API" --inputbox "\nWpisz klucz API. Jeśli masz go skopiowanego w schowku,\nkliknij prawym przyciskiem i wybierz <wklej> z menu:" --cancel-button "Anuluj" 11 65 3>&1 1>&2 2>&3)
exit_on_no_cancel exit_on_no_cancel
if [[ "$MIKRUS_APIKEY" =~ [0-9a-fA-F]{40} ]]; then if [[ "$MIKRUS_APIKEY" =~ [0-9a-fA-F]{40} ]]; then
MIKRUS_INFO_HOST=$(curl -s -d "srv=$MIKRUS_HOST&key=$MIKRUS_APIKEY" -X POST https://api.mikr.us/info | jq -r .server_id) MIKRUS_INFO_HOST=$(curl -s -d "srv=$MIKRUS_HOST&key=$MIKRUS_APIKEY" -X POST https://api.mikr.us/info | jq -r .server_id)
@ -321,14 +338,16 @@ prompt_mikrus_apikey() {
#======================================= #=======================================
#setup_update_repo setup_update_repo
#check_git check_git
#check_docker check_docker
#check_docker_compose check_docker_compose
#check_jq check_jq
#check_dotenv check_dotenv
#setup_packages setup_packages
#setup_node setup_node
setup_users
setup_dir_structure
whiptail --title "Witamy" --yesno "Ten skrypt zainstaluje Nightscout na bieżącym serwerze mikr.us\n\nJeśli na tym serwerze istnieje już instalacja Nightscout - ten skrypt spróbuje ją przekonfigurować" --yes-button "$uni_start" --no-button "$uni_exit" 12 70 whiptail --title "Witamy" --yesno "Ten skrypt zainstaluje Nightscout na bieżącym serwerze mikr.us\n\nJeśli na tym serwerze istnieje już instalacja Nightscout - ten skrypt spróbuje ją przekonfigurować" --yes-button "$uni_start" --no-button "$uni_exit" 12 70
exit_on_no_cancel exit_on_no_cancel

@ -4,7 +4,7 @@
"description": "Nightscout installer for mikr.us VPS", "description": "Nightscout installer for mikr.us VPS",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {
"build": "node ./build.js" "build": "node ./tools/build.js"
}, },
"author": "Dominik Dzienia <dominik.dzienia@gmail.com>", "author": "Dominik Dzienia <dominik.dzienia@gmail.com>",
"license": "MIT" "license": "MIT"

@ -261,6 +261,23 @@ exit_on_no_cancel() {
fi fi
} }
setup_users() {
id -u mongodb &>/dev/null
if [ $RESULT -eq 0 ]; then
msgcheck "Mongo DB user detected"
else
ohai "Configuring Mongo DB user"
useradd -u 1001 -g 0 mongodb
fi
}
setup_dir_structure() {
ohai "Configuring folder structure"
mkdir -p /srv/nightscout/data/mongodb
mkdir -p /srv/nightscout/config
chown -R mongodb:root /srv/nightscout/data/mongodb
}
MIKRUS_APIKEY='' MIKRUS_APIKEY=''
MIKRUS_HOST='' MIKRUS_HOST=''
@ -271,7 +288,7 @@ prompt_mikrus_host() {
if [[ "$MIKRUS_HOST" =~ [a-z][0-9]{3} ]]; then if [[ "$MIKRUS_HOST" =~ [a-z][0-9]{3} ]]; then
break; break;
else else
MIKRUS_NEW_HOST=$(whiptail --title "Podaj identyfikator serwera" --inputbox "\nNie udało się wykryć identyfikatora serwera,\npodaj go poniżej ręcznie.\n\nIdentyfikator składa się z jednej litery i trzech cyfr\n" 13 65 3>&1 1>&2 2>&3) MIKRUS_NEW_HOST=$(whiptail --title "Podaj identyfikator serwera" --inputbox "\nNie udało się wykryć identyfikatora serwera,\npodaj go poniżej ręcznie.\n\nIdentyfikator składa się z jednej litery i trzech cyfr\n" --cancel-button "Anuluj" 13 65 3>&1 1>&2 2>&3)
exit_on_no_cancel exit_on_no_cancel
if [[ "$MIKRUS_NEW_HOST" =~ [a-z][0-9]{3} ]]; then if [[ "$MIKRUS_NEW_HOST" =~ [a-z][0-9]{3} ]]; then
MIKRUS_HOST=$MIKRUS_NEW_HOST MIKRUS_HOST=$MIKRUS_NEW_HOST
@ -291,7 +308,7 @@ prompt_mikrus_apikey() {
exit_on_no_cancel exit_on_no_cancel
while : ; do while : ; do
MIKRUS_APIKEY=$(whiptail --title "Podaj klucz API" --inputbox "\nWpisz klucz API. Jeśli masz go skopiowanego w schowku,\nkliknij prawym przyciskiem i wybierz <wklej> z menu:" 11 65 3>&1 1>&2 2>&3) MIKRUS_APIKEY=$(whiptail --title "Podaj klucz API" --inputbox "\nWpisz klucz API. Jeśli masz go skopiowanego w schowku,\nkliknij prawym przyciskiem i wybierz <wklej> z menu:" --cancel-button "Anuluj" 11 65 3>&1 1>&2 2>&3)
exit_on_no_cancel exit_on_no_cancel
if [[ "$MIKRUS_APIKEY" =~ [0-9a-fA-F]{40} ]]; then if [[ "$MIKRUS_APIKEY" =~ [0-9a-fA-F]{40} ]]; then
MIKRUS_INFO_HOST=$(curl -s -d "srv=$MIKRUS_HOST&key=$MIKRUS_APIKEY" -X POST https://api.mikr.us/info | jq -r .server_id) MIKRUS_INFO_HOST=$(curl -s -d "srv=$MIKRUS_HOST&key=$MIKRUS_APIKEY" -X POST https://api.mikr.us/info | jq -r .server_id)

@ -13,14 +13,16 @@ if [[ ! -d "$DIR" ]]; then DIR="$PWD"; fi
#======================================= #=======================================
#setup_update_repo setup_update_repo
#check_git check_git
#check_docker check_docker
#check_docker_compose check_docker_compose
#check_jq check_jq
#check_dotenv check_dotenv
#setup_packages setup_packages
#setup_node setup_node
setup_users
setup_dir_structure
whiptail --title "Witamy" --yesno "Ten skrypt zainstaluje Nightscout na bieżącym serwerze mikr.us\n\nJeśli na tym serwerze istnieje już instalacja Nightscout - ten skrypt spróbuje ją przekonfigurować" --yes-button "$uni_start" --no-button "$uni_exit" 12 70 whiptail --title "Witamy" --yesno "Ten skrypt zainstaluje Nightscout na bieżącym serwerze mikr.us\n\nJeśli na tym serwerze istnieje już instalacja Nightscout - ten skrypt spróbuje ją przekonfigurować" --yes-button "$uni_start" --no-button "$uni_exit" 12 70
exit_on_no_cancel exit_on_no_cancel

@ -0,0 +1,8 @@
### version: 1.0.0
NS_NIGHTSCOUT_TAG=latest_dev
NS_MONGODB_TAG=4.4.2
NS_DBBACKUP_TAG=latest
NS_DATA_DIR=/srv/nightscout/data
NS_CONFIG_DIR=/srv/nightscout/config
NS_PORT=1330

@ -0,0 +1,58 @@
### version: 1.0.0
version: "2"
networks:
app-tier:
driver: bridge
services:
mongodb:
container_name: ns-database
mem_limit: 200m
mem_reservation: 100M
cpus: 0.25
restart: always
image: "bitnami/mongodb:${NS_MONGODB_TAG}"
volumes:
- "${NS_DATA_DIR}/mongodb:/bitnami/mongodb"
ports:
- 27017:27017
networks:
- ns-tier
dbbackup:
container_name: ns-database-backup
restart: always
image: "tiredofit/db-backup:${NS_DBBACKUP_TAG}"
volumes:
- "${NS_DATA_DIR}/dbbackup:/backup"
environment:
- COMPRESSION="GZ"
- COMPRESSION_LEVEL=9
- DB_TYPE=mongo
- DB_HOST=mongodb
- DB_PORT=27017
- DB_CLEANUP_TIME=10080
networks:
- ns-tier
depends_on:
- mongodb
nightscout:
container_name: ns-server
restart: always
mem_limit: 200m
mem_reservation: 100M
cpus: 0.25
image: "nightscout/cgm-remote-monitor:${NS_NIGHTSCOUT_TAG}"
env_file:
- ${NS_CONFIG_DIR}/nightscout.env
ports:
- ${NS_PORT}:1337
networks:
- ns-tier
depends_on:
- mongodb
profiles:
- admin

@ -0,0 +1,37 @@
### version: 1.0.0
########################################
# Unikalne ustawienia tej instancji
# - ustaw je pod siebie
########################################
API_SECRET=
CUSTOM_TITLE=Nightscout
########################################
# Konfiguracja działania NS
########################################
ENABLE=cors careportal boluscalc food bwp cage sage iage basal rawbg pushover bgi pump openaps dbsize
DEVICESTATUS_ADVANCED=true
SHOW_FORECAST=openaps
PUMP_FIELDS=reservoir battery clock
TIME_FORMAT=24
THEME=colors
LANGUAGE=pl
########################################
# Konfiguracja bezpieczeństwa
########################################
AUTH_DEFAULT_ROLES=denied
########################################
# Ustawienia specyficzne dla kontenera
# - lepiej ich nie modyfikować
########################################
MONGO_CONNECTION=mongodb://mongodb/admin
PORT=1337
INSECURE_USE_HTTP=true
DBSIZE_MAX=3000

@ -0,0 +1,19 @@
const fs = require('fs');
const path = require('path');
const regexDevRemove = /(\#dev\-begin.*?\#dev\-end)\n/mgs;
const regexInclude = /(#include\s+(\S+))/mgs;
const srcDir = fs.realpathSync(__dirname + path.sep + '..' + path.sep + 'src')
const baseDir = fs.realpathSync(__dirname + path.sep + '..' )
try {
let data = fs.readFileSync(srcDir + path.sep + 'setup.sh', 'utf8');
data = data.replace(regexDevRemove, '');
data = data.replace(regexInclude, (_, _2, fileName) => {
const included = fs.readFileSync(srcDir + path.sep + fileName, 'utf8');
return included
});
fs.writeFileSync(baseDir + path.sep + 'install.sh', data);
} catch (err) {
console.error(err);
}
Loading…
Cancel
Save