# Non-graphical installer ## Requirements - Server running Ubuntu 24.04 - Internet connection - SSH terminal access - Root access ## Installation process Log in to the machine where you want to install as root. ![Imagen1.png](../assets/images/screenshots/Imagen1.png) Run the following commands: ```bash curl -q -k https://ognproject.evlt.uma.es/gitea/api/v1/repos/opengnsys/oginstaller/raw/non_graf_installer/python-installer/opengnsys_installer-v2.sh?ref=main -o opengnsys_installer.sh chmod 755 opengnsys_installer.sh ./opengnsys_installer.sh ``` If you want to install the latest packages built from each repository’s main branch, run: ```bash curl -q -k https://ognproject.evlt.uma.es/gitea/api/v1/repos/opengnsys/oginstaller/raw/non_graf_installer/python-installer/opengnsys_installer-v2.sh?ref=main -o opengnsys_installer.sh chmod 755 opengnsys_installer.sh ./opengnsys_installer.sh nightly ``` ![Imagen2.png](../assets/images/screenshots/Imagen2.png) A screen appears showing the components to install and the version to install. Select the desired components and the required product version. In this example we’ll select all components and the version opengnsys_devel-0.0.10. ![Imagen3.png](../assets/images/screenshots/Imagen3.png) ### Installation type selection Next you’ll choose whether to install all components on a single node or across multiple nodes. #### Single-node installation If you select the single-node option: ![select_mono](../assets/images/screenshots/Installatiion_type_selection.png) You’ll then be prompted to enter the IP address where all components will communicate. ![mononode_ip](../assets/images/screenshots/mononode_ip.png) Next you’ll see a screen listing all selected components; just press OK. ![mononode_comp_select](../assets/images/screenshots/mononode_comp_selection.png) #### Multi-node installation For a multi-node installation, where each component can reside on separate machines: ![select_multi](../assets/images/screenshots/select_multinode.png) You’ll be prompted to enter the IPs of the machines where each component will be deployed. ![multinode_ip](../assets/images/screenshots/multinode_ip.png) Once these steps are completed for either single-node or multi-node, you’ll be shown screens to confirm the input parameters. If they’re correct, pressing OK is sufficient. Details for each component follow. ### ogCore For the ogCore service the required data are: - Administrator user: default value ogadmin - User password: default value 12345678 ![ogcore_install.png](../assets/images/screenshots/ogcore_install.png) ### ogGui For the graphical interface service, the required data are: - ogCore server connection URL: default https://\:8443 - Mercure connection URL: default https://\:3000/.well-known/mercure ![oggui_install](../assets/images/screenshots/oggui_install.png) ### ogDHCP For the DHCP service the parameters requested are: - Network interfaces to serve DHCP. A list of available interfaces is shown; select the ones you want to provide IPs on. - ogBoot server IP (default: IP of the default-route interface) - DHCP server IP (default: IP of the default-route interface) ![ogdhcp_install.png](../assets/images/screenshots/ogdhcp_install.png) ### ogBoot (PXE) Required parameters: - ogLive to install on the boot server. The list comes from the ogLives available in the downloads directory. - ogBoot server IP (default: IP of the default-route interface) - Port for ogBoot service (default: 8082) - ogCore URL (default: IP of the default-route interface) - Samba export user (note: this is embedded in the ogLive, so don’t change it unless your ogLive was created with a custom user) - Samba user password (note: as above, embedded in the ogLive) ![ogboot_install](../assets/images/screenshots/ogboot_install.png) ### ogRepository Required parameters: - ogRepository service IP (default: IP of the default-route interface) - ogCore service IP (default: IP of the default-route interface) - Samba export user (note: embedded in the ogLive) - Samba user password (note: embedded in the ogLive) ![ogrepository_install](../assets/images/screenshots/ogrepository_install.png) ## Installation Once all forms are completed, the installation process begins and a screen shows progress: ![Imagen30.png](../assets/images/screenshots/Imagen30.png) When installation finishes, a summary appears: ![Imagen31.png](../assets/images/screenshots/Imagen31.png) The file /opt/opengnsys/release is created with the installed version: ```sh (og) root@install:~# cat /opt/opengnsys/release Installed version: opengnsys-1.6.0-beta ``` ***NOTE: If installing from the nightly repository, the release file is not created*** ## Service check After installation completes, verify that services installed correctly and are functioning as expected. ### User permissions All components are installed under /opt/opengnsys/, where is: - ogboot - ogdhcp - ogrepository - ogcore - oggui - ogclient There is also a folder named ogclient_log used for client-mounted logs; this will be removed in future releases. All directories belong to user opengnsys and group www-data, except ogclient and ogclient_log which belong to group opengnsys. ![Imagen9a.png](../assets/images/screenshots/Imagen9a.png) In /run/php/ you’ll find the sockets serving the ogboot and ogdhcp APIs. If services are running, these files must belong to user opengnsys. ![Imagen9.png](../assets/images/screenshots/Imagen9.png) In /etc/sudoers.d/ you’ll find an opengnsys file with the following configuration: ![Imagen10.png](../assets/images/screenshots/Imagen10.png) ## Stopping and starting services All services run behind their own API and are managed as standard Linux services, though each has its particulars. ### ogCore #### Description The ogCore service comprises three components: - API - Database - Mercure Both the API and Mercure run behind an nginx reverse proxy. The architecture of ogCore is shown in this diagram: ![ogcore-schema](../assets/images/screenshots/opengsys-ogcore.png) #### Stopping and starting ```bash # Arranque root@qindel-box:~# systemctl start nginx # Parada root@qindel-box:~# systemctl stop nginx # Estado root@qindel-box:~# systemctl status nginx # Logs del servicio root@qindel-box:~# journalctl -f SYSLOG_IDENTIFIER=ogcore ``` #### Configuration files Located in **/opt/opengnsys/ogcore/** | File | Description | |---------------------------------------------|--------------------------------------------------------------------| | /opt/opengnsys/ogcore/api/env.json | Definition of endpoints ogCore connects to | | /opt/opengnsys/ogcore/api/.env.local.php | Internal Symfony file | | /etc/nginx/sites-enabled/ogcore.conf | nginx config for the ogCore API | | /etc/nginx/sites-enabled/mercure.conf | nginx config for the Mercure service | #### Accessing the service The ogCore API is available on the installation IP at port 8443. To access the service API, go to: https://**ip**:8443/ ![imagen11](../assets/images/screenshots/Imagen11.png) You can test endpoints via Swagger: ![imagen12](../assets/images/screenshots/Imagen12.png) ### ogGui #### Description A static Angular application served by nginx. #### Stopping and starting ```bash # Arranque root@qindel-box:~# systemctl start nginx # Parada root@qindel-box:~# systemctl stop nginx # Estado root@qindel-box:~# systemctl status nginx ``` As a client-side app, logs appear in the browser’s debug console, and you can view nginx logs for access and errors. #### Configuration files | File | Description | |-------------------------------------------|---------------------------------------------| | /etc/nginx/sites-enabled/oggui.conf | URL of the endpoint pointing to ogCore | | /opt/opengnsys/oggui/etc/config.json | Mercure and ogCore endpoints | #### Accessing the service To access the GUI, go to port 4200 on the deployment host: https://**ip**:4200/ ![imagen13](../assets/images/screenshots/Imagen13.png) Enter the user and password configured during installation: ![imagen14](../assets/images/screenshots/Imagen14.png) ### ogBoot This service includes multiple components running on the deployment host. The API runs under nginx, handling HTTP/S, Samba exports, and TFTP boot. The ogBoot code is in /opt/opengnsys/ogboot/, with key directories: - client: Samba-exported images and cloning engine - tftpboot: Samba-exported iPXE kernels and ogLive images - Other folders are the API itself #### Stopping and starting - nginx ```bash # Arranque systemctl start nginx systemctl start tftpd-ha systemctl start samba # Parada systemctl stop nginx systemctl stop tftpd-ha systemctl stop samba # Reinicio systemctl restart nginx systemctl restart tftpd-ha systemctl restart samba # Status systemctl status nginx systemctl restart tftpd-ha systemctl restart samba ``` Logs for nginx and the API are in: - /var/log/nginx/ogboot_access.log - /var/log/nginx/ogboot_error.log #### Configuration files | Location | File | Description | |---------------------------------|----------------------|---------------------------------------| | /opt/opengnsys/ogboot/ | .env | Symfony configuration file | | /etc/nginx/sites-available/ | ogboot.conf | nginx configuration file | | /etc/samba | smb-ogboot.conf | Samba configuration file | | /etc/samba | smb-ogclient.conf | Samba config for the clone engine | #### Accessing the service The ogBoot API listens on port 8082 via HTTP. To view the API docs: http://**ip**:8082/ogboot/api/doc ![imagen15](../assets/images/screenshots/Imagen15.png) If all is well, the status endpoint returns something like: ![imagen16](../assets/images/screenshots/Imagen16.png) ### ogDHCP #### Description Manages DHCP using Kea, controlled by a Symfony API running under nginx. #### Stopping and starting ```bash # Arranque systemctl start nginx systemctl start kea-dhcp4-server systemctl start kea-ctrl-agent # Parada systemctl stop nginx systemctl stop kea-dhcp4-server systemctl stop kea-ctrl-agent # Restart systemctl restart nginx systemctl restart kea-dhcp4-server systemctl restart kea-ctrl-agent # Status systemctl status nginx systemctl status kea-dhcp4-server systemctl status kea-ctrl-agent ``` #### Log files - nginx: /var/log/nginx/ogdhcp_access.log /var/log/nginx/ogdhcperror.log #### Configuration files | Location | File | Description | |---------------------------------|----------------------|----------------------------------| | /opt/opengnsys/ogdhcp/ | .env | Symfony configuration file | | /etc/nginx/sites-available/ | ogdhcp.conf | nginx configuration file | #### Accessing the service The ogDHCP API listens on port 8081 via HTTP. To view the API docs: http://**ip**:8081/ogdhcp/api/doc ![imagen17](../assets/images/screenshots/Imagen17.png) If all is well, the status endpoint returns something like: ![imagen18](../assets/images/screenshots/Imagen18.png) ### ogRepository #### Description Includes multiple components on the deployment host. The API runs under Gunicorn with Flask, and Samba serves /opt/opengnsys/ogrepository/images under user opengnsys. #### Stopping and starting ```bash # Arranque systemctl start ogrepo-api systemctl start samba # Parada systemctl stop ogrepo-api systemctl stop samba # Status systemctl status ogrepo-api systemctl status samba # Revisión de logs journalctl -xeu ogrepo-api journalctl -xeu samba ``` #### Configuration | Location | File | Description | |-----------------------------------|---------------------------|---------------------------------------| | /opt/opengnsys/ogrepository/ | .ogAdmRepo.cfg | ogRepository configuration file | | /etc/samba/ | smb.conf.ogrepository | Samba configuration file | #### Accessing the service The ogRepository API listens on port 8006. To access the service: http://**ip**:8006/apidocs/ ![imagen19](../assets/images/screenshots/Imagen19.png) If installation was successful, the status returns something like: ![imagen20](../assets/images/screenshots/Imagen20.png) ## First steps To begin, configure ogCore via the GUI to verify ogCore can reach all components. On the machine where ogCore is installed, edit /opt/opengnsys/ogCore/etc/env.json: ![imagen21](../assets/images/screenshots/Imagen21.png) Adjust **OG_BOOT_API_URL**, **OG_DHCP_API_URL**, and **OG_CORE_IP** to the correct values for your setup, for example: ![imagen22](../assets/images/screenshots/Imagen22.png) Once done, restart ogCore and log in to the GUI: ![imagen23](../assets/images/screenshots/Imagen23.png) Viewing DHCP service status: ![imagen24](../assets/images/screenshots/Imagen24.png) Viewing ogBoot service status: ![imagen25](../assets/images/screenshots/Imagen25.png) To verify ogRepository connectivity, add the repository via “Repositories”: ![imagen26](../assets/images/screenshots/Imagen26.png) Fill in the required details: ![imagen27](../assets/images/screenshots/Imagen27.png) Click the pencil icon to view the repository: ![imagen28](../assets/images/screenshots/Imagen28.png) ![imagen29](../assets/images/screenshots/Imagen29.png)