diff --git a/build.json b/build.json index 78aae05..38b3701 100644 --- a/build.json +++ b/build.json @@ -1,117 +1,113 @@ { - "variables": { - "user": "root", - "password": "laser", - "disk_size": "100000", - "domain": "" - }, - "builders": [ - - - { - "type": "lxc", - "name": "teamlaser-lj-lxc", - "config_file": "files/lxc/config", - "template_name": "debian", - "template_environment_vars": ["SUITE=buster"], - "output_directory": "output-lxc" - }, - - - { - - "headless": false, - "name": "teamlaser-lj", - "type": "qemu", - "format": "qcow2", - "accelerator": "kvm", - "disk_size": "{{ user `disk_size` }}", - "output_directory": "output", - "boot_key_interval": "20ms", - "iso_url": "http://cdimage.debian.org/debian-cd/10.5.0/amd64/iso-cd/debian-10.5.0-amd64-netinst.iso", - "iso_checksum": "sha256:93863e17ac24eeaa347dfb91dddac654f214c189e0379d7c28664a306e0301e7", - "http_directory": "http", - "ssh_username": "{{ user `user` }}", - "ssh_password": "{{ user `password` }}", - "shutdown_command": "echo '{{ user `password` }}' | sudo -S shutdown -h now", - - "ssh_wait_timeout": "60m", - "qemuargs": [ - [ "-m", "2048M" ] - ], - - "boot_wait": "2s", - "boot_command": [ - "", - "install ", - "auto=true ", - "priority=critical ", - "interface=auto ", - "url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/preseed.cfg ", - "" + "variables":{ + "user":"root", + "password":"laser", + "disk_size":"5G", + "domain":"" + }, + "builders":[ + { + "type":"lxc", + "name":"teamlaser-lj-lxc", + "config_file":"files/lxc/config", + "template_name":"debian", + "template_environment_vars":[ + "SUITE=buster" + ], + "output_directory":"output-lxc" + }, + { + "headless":false, + "name":"teamlaser-lj", + "type":"qemu", + "format":"qcow2", + "accelerator":"kvm", + "disk_size":"{{ user `disk_size` }}", + "output_directory":"output", + "boot_key_interval":"20ms", + "iso_url":"http://cdimage.debian.org/debian-cd/10.5.0/amd64/iso-cd/debian-10.5.0-amd64-netinst.iso", + "iso_checksum":"sha256:93863e17ac24eeaa347dfb91dddac654f214c189e0379d7c28664a306e0301e7", + "http_directory":"http", + "ssh_username":"{{ user `user` }}", + "ssh_password":"{{ user `password` }}", + "shutdown_command":"echo '{{ user `password` }}' | sudo -S shutdown -h now", + "ssh_wait_timeout":"60m", + "qemuargs":[ + [ + "-m", + "2048M" ] - }, - - - { - - "headless": false, - "name": "teamlaser-lj-xfce", - "type": "qemu", - "format": "qcow2", - "accelerator": "kvm", - "disk_size": "{{ user `disk_size` }}", - "output_directory": "output-xfce", - "boot_key_interval": "20ms", - "iso_url": "http://cdimage.debian.org/debian-cd/10.5.0/amd64/iso-cd/debian-10.5.0-amd64-xfce-CD-1.iso", - "iso_checksum": "sha256:14ca00bafcaf124ef2cab9da2f51d75044232ba9630a067d8664fabcb5e26ec2", - "http_directory": "http", - "ssh_username": "{{ user `user` }}", - "ssh_password": "{{ user `password` }}", - "shutdown_command": "echo '{{ user `password` }}' | sudo -S shutdown -h now", - - "ssh_wait_timeout": "60m", - "qemuargs": [ - [ "-m", "2048M" ] - ], - - "boot_wait": "2s", - "boot_command": [ - "", - "install ", - "auto=true ", - "priority=critical ", - "interface=auto ", - "url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/preseed.cfg ", - "" + ], + "boot_wait":"2s", + "boot_command":[ + "", + "install ", + "auto=true ", + "priority=critical ", + "interface=auto ", + "url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/preseed.cfg ", + "" + ] + }, + { + "headless":false, + "name":"teamlaser-lj-xfce", + "type":"qemu", + "format":"qcow2", + "accelerator":"kvm", + "disk_size":"{{ user `disk_size` }}", + "output_directory":"output-xfce", + "boot_key_interval":"20ms", + "iso_url":"http://cdimage.debian.org/debian-cd/10.5.0/amd64/iso-cd/debian-10.5.0-amd64-xfce-CD-1.iso", + "iso_checksum":"sha256:14ca00bafcaf124ef2cab9da2f51d75044232ba9630a067d8664fabcb5e26ec2", + "http_directory":"http", + "ssh_username":"{{ user `user` }}", + "ssh_password":"{{ user `password` }}", + "shutdown_command":"echo '{{ user `password` }}' | sudo -S shutdown -h now", + "ssh_wait_timeout":"60m", + "qemuargs":[ + [ + "-m", + "2048M" ] - } - ], - - "provisioners": [ - { - "type": "shell", - "inline": [ - "sleep 3", - "apt update", - "apt install -y --no-install-recommends cmake git libasound2-dev libjack-dev libsdl1.2-dev network-manager nginx portaudio19-dev python3-dev python3-pip python3-rtmidi redis-server screen ssh ssl-cert ", - "pip3 install setuptools", - "pip3 install DMXEnttecPro mido numpy pysimpledmx redis scipy ", - "git clone https://github.com/ptone/pyosc --depth 1 /tmp/pyosc && cd /tmp/pyosc && ./setup.py install ", - "cd /tmp && git clone https://github.com/Ableton/link.git && cd link && git submodule update --init --recursive && mkdir build && cd build && cmake .. && cmake --build . ", - "cd /tmp/ && git clone --recursive https://github.com/gonzaloflirt/link-python.git && cd link-python && mkdir build && cd build && cmake .. && cmake --build . ", - "cd /opt/ && git clone https://git.interhacker.space/teamlaser/LJ " - ] - }, - { - "type": "file", - "source": "files/nginx/laser.conf", - "destination": "/etc/nginx/sites-enabled/laser.conf" - }, - { - "type": "file", - "source": "files/root/.bashrc", - "destination": "/root/.bashrc" - } - ] + ], + "boot_wait":"2s", + "boot_command":[ + "", + "install ", + "auto=true ", + "priority=critical ", + "interface=auto ", + "url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/preseed.cfg ", + "" + ] + } + ], + "provisioners":[ + { + "type":"shell", + "inline":[ + "sleep 3", + "apt update", + "apt install -y --no-install-recommends cmake git libasound2-dev libjack-dev libsdl1.2-dev network-manager nginx portaudio19-dev python3-dev python3-pip python3-rtmidi redis-server screen ssh ssl-cert ", + "rm -f /etc/nginx/sites-enabled/default", + "pip3 install setuptools", + "pip3 install DMXEnttecPro mido numpy pysimpledmx redis scipy ", + "git clone https://github.com/ptone/pyosc --depth 1 /tmp/pyosc && cd /tmp/pyosc && ./setup.py install ", + "cd /tmp && git clone https://github.com/Ableton/link.git && cd link && git submodule update --init --recursive && mkdir build && cd build && cmake .. && cmake --build . ", + "cd /tmp/ && git clone --recursive https://github.com/gonzaloflirt/link-python.git && cd link-python && mkdir build && cd build && cmake .. && cmake --build . ", + "cd /opt/ && git clone https://git.interhacker.space/teamlaser/LJ " + ] + }, + { + "type":"file", + "source":"files/nginx/laser.conf", + "destination":"/etc/nginx/sites-enabled/laser.conf" + }, + { + "type":"file", + "source":"files/root/.bashrc", + "destination":"/root/.bashrc" + } + ] } diff --git a/files/nginx/laser.conf b/files/nginx/laser.conf index 88cfaeb..402b69e 100644 --- a/files/nginx/laser.conf +++ b/files/nginx/laser.conf @@ -1,12 +1,21 @@ server { - listen 443 ssl; - listen [::]:443 ssl; - ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem; - ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key; - + listen 80; + listen [::]:80; server_name _; root /opt/LJ/www; - index index.html index.htm index.nginx-debian.html; + return 301 https://localhost$request_uri; + +} +server { + listen 443 ssl; + listen [::]:443 ssl; + server_name _; + + ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem; + ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key; + + root /opt/LJ/www; + index index.html index.htm; } diff --git a/files/root/.bashrc b/files/root/.bashrc new file mode 100644 index 0000000..ad962b6 --- /dev/null +++ b/files/root/.bashrc @@ -0,0 +1,87 @@ +cd /opt/LJ +echo -e "\n\e[1;31m" +cat << HEREDOC + \ \ / | | | | + \ \ \ / _ \ | __| _ \ __ \__ \ _ \ __| _ \ | | + \ \ \ / __/ | ( ( | | | | __/ | ( | | \ | + \_/\_/ \___| _| \___| \___/ _| _| _| \___| \__| \___/ _____| \___/ +HEREDOC +echo -e "\e[0m\n" + +# Check the ip address on the machine +checkNetwork(){ + + echo -e "\Checking network connectivity..." + ping=$( ping 1.1.1.1 -c 1 -W 2 &>/dev/null; echo $?;) + + # Net is working, escape + if [[ 0 -eq $ping ]] ; then + echo -e "\n OK, Use this IP Address for GUEST_IP : $( ip address show | grep global | awk '{print $2}'|sed -e 's=/.*==' ) \n" + return + fi + + echo -e "\nSeems you can't reach internet..." + + # Get the ethernet interface + # 772 is the loopback device, cf. http://lxr.linux.no/linux+v3.0/include/linux/if_arp.h#L67 + for f in /sys/class/net/* ; do + [[ 772 != $(cat "$f/type" ) ]] && interface=$(basename $f) + done + + if [[ -z "$interface" ]] ; then + echo -e "\e[31mFatal Error : no network interface configured."; + # Eventually, use nm-tui for a graphical (ncurses install) + read -e -p "(Experts only) Do you want to set up network via network-manager UI? [yN]: " + [[ "${REPLY^^}" == "Y" ]] && { nmtui; return; } + + else + echo "OK, network interface '$interface' found" + fi + + # Ensure the interface is up + ip l set $interface up + + ipList=$( ip address show | grep global ) + ipRoute=$( ip route show | grep default ) + + [[ -z "$ipList" ]] && { + echo -e "\nNo IP address configured. Please set one." + read -e -i '192.168.1.90/24' -p "Which address and range do you want to use (or 'x' to skip)? " ipAddr + [[ 'x' != "$ipAddr" ]] && { + ip address add $ipAddr dev $interface + } + } + [[ -z "$ipRoute" ]] && { + echo -e "\nNo IP route configured. Please set one." + read -e -i '192.168.1.1' -p "Which routing address do you want to use (or 'x' to skip)? " ipAddr + [[ 'x' != "$ipAddr" ]] && { + ip route add default via $ipAddr dev $interface + } + } + + +} +checkNetwork +[[ ! -f /tmp/.first_run ]] && { + touch /tmp/.first_run ; + echo -e "\e[1mCaution! configuring the server and lasers network is mandatory for the app to work." + echo -e "Type the "c" key immediately to start the configuration." + echo -e "\e[0m" + echo -e "Everytime you will login, the configure and documentation options will be offered to you." + echo -e "Or use the commands 'config' or 'usage' any time to access the same functions." + echo -e "\e[0m" +} +config(){ cd /opt/LJ ; /usr/bin/python3 configure.py; } +usage(){ cat /opt/LJ/README.md; } + +echo -e "\e[1m" +read -e -n 1 -p "Do you want to (c)onfigure the app, (r)ead documentation, or (n)othing: " +echo -e "\e[0m" +case $REPLY in + (c): + config + ;; + (r): + usage + ;; +esac diff --git a/files/supervisor-syncthing.conf b/files/supervisor-syncthing.conf deleted file mode 100644 index f0374e4..0000000 --- a/files/supervisor-syncthing.conf +++ /dev/null @@ -1,6 +0,0 @@ -[program:syncthing] -autorestart = True -directory = /home/teamlaser15/codesync -user = teamlaser15 -command = /usr/bin/syncthing -no-browser -home="/home/teamlaser15/codesync/.config/syncthing" -environment = STNORESTART="1", HOME="/home/teamlaser15/codesync/"