Operating System Setup ====================== QuadlogSCADA is currently tested to operate on a Debian GNU/Linux, both stable and testing versions. In time, it is expected testing will be extended to other systems such as Mac OS X and BSD variants. It is not expected that QuadlogSCADA will operate on Microsoft Windows due to some of the modules not supporting Windows. Server and Display Client ^^^^^^^^^^^^^^^^^^^^^^^^^ It is possible to have a single computer setup as the SCADA server as well as a user client for display purposes. In this instance, it is advised that a separate user is created as the display client user. The user name can be anything appropriate, and is only used to run a web browser to view the local SCADA system. Headless Server ^^^^^^^^^^^^^^^ Alternatively, the SCADA server may reside on its own system, headless with no keyboard or display. In this case, the user must then connect to the server via another system connected by network or Internet. OS Install ^^^^^^^^^^ This installation follows the former, where the computer requires a display and keyboard/mouse, so a fairly typical computer hardware setup. Download and install latest stable Debian GNU/Linux with desktop environment as appropriate. Install according to the instructions outlined on the Debian site. Setup quadlog account ^^^^^^^^^^^^^^^^^^^^^^ During the installation process, set up a main user account with username `quadlog` with root privileges. This will be the main administrative account for the quadlogSCADA install and where the installation of various software components will be. Once the operating system is installed, login with the quadlog account. Alternatively, if your system is already setup, then create the quadlog account. The quadlog account needs to be in the sudoers group to allow administrative functions. .. code:: console $ useradd -m quadlog $ usermod -a -G sudo quadlog Once the OS install is complete, log into this account to then perform the remainder of the installation. SSH ^^^^ During installation, it is possible to also enable the ssh server. Do this as having ssh access is always a worthwhile thing to do, especially on any server to allow remote access. For headless servers, having ssh is virtually a must. GRUB Boot Loader ^^^^^^^^^^^^^^^^ For starting up the system a little quicker at boot time, which is sometimes a needed where every second counts, in terms of reduced down time in a control system, the GRUB boot loader configuration can be modified. We will make the GRUB boot loader hidden with a time out of zero seconds as well as not starting up any graphical interface, just a simple console, which will be hidden. While we are editing the GRUB configuration, we will also place in there a command that is generally required by the Redis server, ``transparent_hugepage = never``. For a little distraction or if you just wish to know more about GRUB. https://en.wikipedia.org/wiki/GNU_GRUB .. Note:: | Editing system files requires administrative permissions, such as root. | As such, you can proceed each command with ``sudo``. .. Hint:: The text editor `nano` is used, but feel free to use your preferred editor. .. code:: console $ nano /etc/default/grub .. code:: console GRUB_HIDDEN_TIMEOUT=0 GRUB_TIMEOUT=0 GRUB_CMDLINE_LINUX_DEFAULT=”transparent_hugepage=never quiet” GRUB_TERMINAL=console Then update the GRUB bootloader. .. code:: console $ update-grub Auto Login ^^^^^^^^^^ If the system is to be configured as a dedicated full time server, then there some options around how the system boots up. If it is required to have the client user logged in at all times, then we can set this client user to be automatically logged in on system boot. If not, then the client user will need to log in when the system is accessed by them. To auto login a client user, edit the display manager daemon configuration file. By default, Debian uses the 'lightdm' display manager, though it is possible to use other display managers such as 'gdm3' as well. While 'gdm3' is light-weight and is a lovely greeter display manager, it will need to unlock the keyring during login, which can make auto login of the client user more problematic. Using the default 'lightdm' works well, so we will use this. For example, if using gdm3, edit .. code:: console $ nano /etc/gdm3/daemon.conf .. code:: console AutomaticLoginEnable = true AutomaticLogin = user, where user is the display client user. Or alternatively, setup timed login which then allows admin or other users to grab the login greeter on system boot. Network Interface ^^^^^^^^^^^^^^^^^ To be able to remotely access this system via SSH and since this system will be a HTTP web server, a static IP address will be need to be configured.