Installation

A production setup should involve an Apache/mod_wsgi installation and a RDBMS backend. The noclouddotnet server itself is deployed as a wheel and should be installed onto the host along with apache and mod_wsgi.

An example Apache configuration:

#
#  This file is part of NoCloud.Net.
#
#  Copyright (C) 2022 Last Bastion Network Pty Ltd
#
#  NoCloud.Net is free software: you can redistribute it and/or modify it under the
#  terms of the GNU General Public License as published by the Free Software
#  Foundation, either version 3 of the License, or (at your option) any later version.
#
#  NoCloud.Net is distributed in the hope that it will be useful, but WITHOUT ANY
#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
#  PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License along with
#  NoCloud.Net. If not, see <https://www.gnu.org/licenses/>. 
#


Listen 5000
<VirtualHost *:5000>
   ServerName nocloud.last-bastion.net
   DocumentRoot /var/www/html

   # TODO - you need these as env vars within systemd/init of Apache
   SetEnv  FLASK_APP noclouddotnet
   SetEnv  FLASK_ENV production
   SetEnv  NOCLOUDNET_SETTINGS /path/to/settings.yaml

   WSGIDaemonProcess nocloudnet display-name=%{GROUP} user=apache group=apache threads=5 request-timeout=30
   WSGIScriptAlias / /usr/lib/python3.8/site-packages/noclouddotnet/app.wsgi

   <Directory /usr/lib/python3.8/site-packages/noclouddotnet>
     WSGIProcessGroup nocloudnet
     WSGIApplicationGroup %{GLOBAL}
     #Order deny,allow
     #Allow from all
     Require all granted
   </Directory>
</VirtualHost>
  

The noclouddotnet application uses Dynaconf for configuration: thereare many ways to set/override variables. An example config is:

In order to create a/the RDBMS as per your configuration; you may need to do something along the lines of the following:

database setup
 export FLASK_APP=noclouddotnet.app
 export FLASK_ENV=production
 export NOCLOUD_DOT_NET_SETTINGS=<path to settings.yaml>
 flask createdb