diff --git a/helpers/command.py b/helpers/command.py index 9e1c5ed..dad2fca 100644 --- a/helpers/command.py +++ b/helpers/command.py @@ -175,7 +175,7 @@ def info(cls, timeout=600): CLI.colored_print( '\nSometimes front-end containers cannot ' 'communicate with back-end containers.\n' - 'Restarting the frontend containers usually ' + 'Restarting the front-end containers usually ' 'fixes it.\n', CLI.COLOR_INFO) question = 'Would you like to try?' response = CLI.yes_no_question(question) @@ -304,7 +304,7 @@ def start(cls, frontend_only=False): cls.stop(output=False, frontend_only=frontend_only) if frontend_only: - CLI.colored_print('Launching frontend containers', CLI.COLOR_INFO) + CLI.colored_print('Launching front-end containers', CLI.COLOR_INFO) else: CLI.colored_print('Launching environment', CLI.COLOR_INFO) @@ -392,7 +392,7 @@ def start(cls, frontend_only=False): cls.info() else: CLI.colored_print( - ('{} backend server is starting up and should be ' + ('{} back-end server is starting up and should be ' 'up & running soon!\nPlease look at docker logs for ' 'further information: `python3 run.py -cb logs -f`'.format( dict_['backend_server_role'])), @@ -418,7 +418,7 @@ def stop(cls, output=True, frontend_only=False): CLI.run_command(maintenance_down_command, dict_['kobodocker_path']) - # Shut down frontend containers + # Shut down front-end containers frontend_command = ['docker-compose', '-f', 'docker-compose.frontend.yml', '-f', 'docker-compose.frontend.override.yml', diff --git a/helpers/config.py b/helpers/config.py index 1bb9904..6c37296 100644 --- a/helpers/config.py +++ b/helpers/config.py @@ -31,7 +31,7 @@ class Config(metaclass=Singleton): DEFAULT_NGINX_PORT = '80' DEFAULT_NGINX_HTTPS_PORT = '443' KOBO_DOCKER_BRANCH = '2.020.49-pre' - KOBO_INSTALL_VERSION = '4.4.0' + KOBO_INSTALL_VERSION = '4.4.1' MAXIMUM_AWS_CREDENTIAL_ATTEMPTS = 3 def __init__(self): @@ -67,7 +67,7 @@ def auto_detect_network(self): @property def aws(self): """ - Checks whether questions are backend only + Checks whether questions are back end only Returns: bool @@ -157,7 +157,7 @@ def get_upgraded_dict(self): @property def backend_questions(self): """ - Checks whether questions are backend only + Checks whether questions are back end only Returns: bool @@ -250,7 +250,7 @@ def first_time(self): @property def frontend(self): """ - Checks whether setup is running on a frontend server + Checks whether setup is running on a front-end server Returns: dict: all values from user's responses needed to create @@ -262,7 +262,7 @@ def frontend(self): @property def frontend_questions(self): """ - Checks whether questions are frontend only + Checks whether questions are front-end only Returns: bool @@ -470,7 +470,7 @@ def maintenance(self): @property def primary_backend(self): """ - Checks whether setup is running on a primary backend server + Checks whether setup is running on a primary back-end server Returns: bool @@ -482,7 +482,8 @@ def primary_backend(self): @property def multi_servers(self): """ - Checks whether installation is for separate frontend and backend servers + Checks whether installation is for separate front-end and back-end + servers Returns: bool @@ -556,7 +557,7 @@ def read_unique_id(self): @property def secondary_backend(self): """ - Checks whether setup is running on a secondary backend server + Checks whether setup is running on a secondary back-end server Returns: bool @@ -1110,7 +1111,7 @@ def __questions_dev_mode(self): default=self.__dict['debug'] ) - # Frontend development + # Front-end development self.__dict['npm_container'] = CLI.yes_no_question( 'How do you want to run `npm`?', default=self.__dict['npm_container'], @@ -1224,7 +1225,7 @@ def _round_nearest_quarter(dt): def __questions_mongo(self): """ Ask for MongoDB credentials only when server is for: - - primary backend + - primary back end - single server installation """ if self.primary_backend or not self.multi_servers: @@ -1313,10 +1314,10 @@ def __questions_mongo(self): def __questions_multi_servers(self): """ Asks if installation is for only one server - or different frontend and backend servers. + or different front-end and back-end servers. """ self.__dict['multi'] = CLI.yes_no_question( - 'Do you want to use separate servers for frontend and backend?', + 'Do you want to use separate servers for front end and back end?', default=self.__dict['multi'] ) @@ -1572,7 +1573,7 @@ def reset_ports(): if not self.multi_servers: self.__dict['expose_backend_ports'] = CLI.yes_no_question( - 'Do you want to expose backend container ports ' + 'Do you want to expose back-end container ports ' '(`PostgreSQL`, `MongoDB`, `redis`)?', default=self.__dict['expose_backend_ports'] ) @@ -1583,13 +1584,14 @@ def reset_ports(): reset_ports() return - message = ( - 'WARNING!\n\n' - 'When exposing backend container ports, it is STRONGLY ' - 'recommended to use a firewall to grant access to frontend ' - 'containers only.' - ) - CLI.framed_print(message) + if self.backend: + message = ( + 'WARNING!\n\n' + 'When exposing back-end container ports, it is STRONGLY ' + 'recommended to use a firewall to grant access to front-end ' + 'containers only.' + ) + CLI.framed_print(message) self.__dict['customized_ports'] = CLI.yes_no_question( 'Do you want to customize service ports?', @@ -1619,7 +1621,7 @@ def reset_ports(): def __questions_private_routes(self): """ Asks if configuration uses a DNS for private domain names - for communication between frontend and backend. + for communication between front end and back end. Otherwise, it will create entries in `extra_hosts` in composer file based on the provided ip. """ @@ -1628,7 +1630,7 @@ def __questions_private_routes(self): default=self.__dict['use_private_dns'] ) if self.__dict['use_private_dns'] is False: - CLI.colored_print('IP address (IPv4) of primary backend server?', + CLI.colored_print('IP address (IPv4) of primary back-end server?', CLI.COLOR_QUESTION) self.__dict['primary_backend_ip'] = CLI.get_response( r'~\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}', @@ -1697,7 +1699,7 @@ def __questions_raven(self): def __questions_redis(self): """ Ask for redis password only when server is for: - - primary backend + - primary back end - single server installation """ if self.primary_backend or not self.multi_servers: @@ -1836,7 +1838,7 @@ def __questions_roles(self): if self.__dict['server_role'] == 'backend': CLI.colored_print( - 'Which role do you want to assign to this backend server?', + 'Which role do you want to assign to this back-end server?', CLI.COLOR_QUESTION) CLI.colored_print('\t1) primary') CLI.colored_print('\t2) secondary') @@ -1844,7 +1846,7 @@ def __questions_roles(self): ['primary', 'secondary'], self.__dict['backend_server_role']) else: - # It may be useless to force backend role when using multi servers. + # It may be useless to force back-end role when using multi servers. self.__dict['backend_server_role'] = 'primary' def __questions_secret_keys(self): diff --git a/readme.md b/readme.md index 926d077..ebb134d 100644 --- a/readme.md +++ b/readme.md @@ -56,10 +56,10 @@ Get version: Build kpi and kobocat (dev mode): `$kobo-install> python3 run.py --build` -Run docker commands on frontend containers: +Run docker commands on front-end containers: `$kobo-install> python run.py --compose-frontend [docker-compose arguments]` -Run docker commands on backend containers: +Run docker commands on back-end containers: `$kobo-install> python run.py --compose-backend [docker-compose arguments]` Start maintenance mode: @@ -79,48 +79,48 @@ User can choose between 2 types of installations: |Option|Default|Workstation|Server |---|---|---|---| |Installation directory| **../kobo-docker** | ✓ | ✓ | -|SMTP information| | ✓ | ✓ (frontend only) | -|Public domain name| **kobo.local** | | ✓ (frontend only) | -|Subdomain names| **kf, kc, ee** | | ✓ (frontend only) | -|Use HTTPS1| **False** (Workstation)
**True** (Server) | | ✓ (frontend only) | -|Super user's username| **super_admin** | ✓ | ✓ (frontend only) | -|Super user's password| **Random string** | ✓ | ✓ (frontend only) | -|Activate backups2| **False** | ✓ | ✓ (backend only) | +|SMTP information| | ✓ | ✓ (front end only) | +|Public domain name| **kobo.local** | | ✓ (front end only) | +|Subdomain names| **kf, kc, ee** | | ✓ (front end only) | +|Use HTTPS1| **False** (Workstation)
**True** (Server) | | ✓ (front end only) | +|Super user's username| **super_admin** | ✓ | ✓ (front end only) | +|Super user's password| **Random string** | ✓ | ✓ (front end only) | +|Activate backups2| **False** | ✓ | ✓ (back end only) | ### Advanced Options |Option|Default|Workstation|Server |---|---|---|---| |Webserver port| **80** | ✓ | | -|Reverse proxy interal port| **8080** | | ✓ (frontend only) | -|Network interface| **Autodetected** | ✓ | ✓ (frontend only) | +|Reverse proxy interal port| **8080** | | ✓ (front end only) | +|Network interface| **Autodetected** | ✓ | ✓ (front end only) | |Use separate servers| **No** | | ✓ | -|Use DNS for private routes| **No** | | ✓ (frontend only) | -|Primary backend IP _(if previous answer is no)_| **Local IP** | | ✓ (frontend only) | +|Use DNS for private routes| **No** | | ✓ (front end only) | +|Primary back end IP _(if previous answer is no)_| **Local IP** | | ✓ (front end only) | |PostgreSQL DB| **kobo** | ✓ | ✓ | |PostgreSQL user's username| **kobo** | ✓ | ✓ | |PostgreSQL user's password| **Autogenerate** | ✓ | ✓ | -|PostgreSQL number of connections3| **100** | ✓ | ✓ (backend only) | -|PostgreSQL RAM3| **2** | ✓ | ✓ (backend only) | -|PostgreSQL Application Profile3| **Mixed** | ✓ | ✓ (backend only) | -|PostgreSQL Storage3| **HDD** | ✓ | ✓ (backend only) | +|PostgreSQL number of connections3| **100** | ✓ | ✓ (back end only) | +|PostgreSQL RAM3| **2** | ✓ | ✓ (back end only) | +|PostgreSQL Application Profile3| **Mixed** | ✓ | ✓ (back end only) | +|PostgreSQL Storage3| **HDD** | ✓ | ✓ (back end only) | |MongoDB super user's username| **root** | ✓ | ✓ | |MongoDB super user's password| **Autogenerate** | ✓ | ✓ | |MongoDB user's username| **kobo** | ✓ | ✓ | |MongoDB user's password| **Autogenerate** | ✓ | ✓ | |Redis password4| **Autogenerate** | ✓ | ✓ | |Use AWS storage5| **No** | ✓ | ✓ | -|Use WAL-E PostgreSQL backups6 | **No** | ✓ | ✓ (backend only) | -|uWGI workers| **start: 2, max: 4** | ✓ | ✓ (frontend only) | -|uWGI memory limit| **128 MB** | ✓ | ✓ (frontend only) | -|uWGI harakiri timeout | **120s** | ✓ | ✓ (frontend only) | -|uWGI worker reload timeout | **120s** | ✓ | ✓ (frontend only) | -|Google UA| | ✓ | ✓ (frontend only) | -|Google API Key| | ✓ | ✓ (frontend only) | -|Raven tokens| | ✓ | ✓ (frontend only) | +|Use WAL-E PostgreSQL backups6 | **No** | ✓ | ✓ (back end only) | +|uWGI workers| **start: 2, max: 4** | ✓ | ✓ (front end only) | +|uWGI memory limit| **128 MB** | ✓ | ✓ (front end only) | +|uWGI harakiri timeout | **120s** | ✓ | ✓ (front end only) | +|uWGI worker reload timeout | **120s** | ✓ | ✓ (front end only) | +|Google UA| | ✓ | ✓ (front end only) | +|Google API Key| | ✓ | ✓ (front end only) | +|Raven tokens| | ✓ | ✓ (front end only) | |Debug| **False** | ✓ | | |Developer mode| **False** | ✓ | | -|Staging mode| **False** | | ✓ (frontend only) | +|Staging mode| **False** | | ✓ (front end only) | 1) _HTTPS certificates must be installed on a Reverse Proxy. `kobo-install` can install one and use `Let's Encrypt` to generate certificates @@ -156,7 +156,7 @@ User can choose between 2 types of installations: _**WARNING:**_ - _If you use a firewall, be sure to open traffic publicly on NGINX port, otherwise kobo-install cannot work_ - - _By default, additional ports are not exposed except when using multi servers configuration. If you choose to expose them, **be sure to not expose them publicly** (e.g. use a firewall and allow traffic between frontend and backend containers only. NGINX port still has to stay publicly opened though)._ + - _By default, additional ports are not exposed except when using multi servers configuration. If you choose to expose them, **be sure to not expose them publicly** (e.g. use a firewall and allow traffic between front-end and back-end containers only. NGINX port still has to stay publicly opened though)._ 5) _It has been tested with Ubuntu 14.04, 16.04 and 18.04, CentOS 8_