diff --git a/helpers/command.py b/helpers/command.py
index 61b84e7..8063d03 100644
--- a/helpers/command.py
+++ b/helpers/command.py
@@ -374,10 +374,11 @@ def start(cls, frontend_only=False, force_setup=False):
# Let's Encrypt NGINX container needs kobo-docker NGINX
# container to be started first
config.init_letsencrypt()
- else:
- proxy_command = run_docker_compose(dict_, ['up', '-d'])
- CLI.run_command(proxy_command,
- config.get_letsencrypt_repo_path())
+
+ proxy_command = run_docker_compose(dict_, ['up', '-d'])
+ CLI.run_command(
+ proxy_command, config.get_letsencrypt_repo_path()
+ )
if dict_['maintenance_enabled']:
CLI.colored_print(
diff --git a/helpers/template.py b/helpers/template.py
index 84d91cc..0814152 100644
--- a/helpers/template.py
+++ b/helpers/template.py
@@ -317,6 +317,13 @@ def _get_value(property_, true_value='', false_value='#',
if config.local_install
else _get_value('service_account_whitelisted_hosts')
),
+ 'DOCKER_COMPOSE_CMD': _get_value(
+ 'compose_version', 'docker-compose', 'docker', 'v1'
+ ),
+ # Keep leading space in front of suffix if any
+ 'DOCKER_COMPOSE_SUFFIX': _get_value(
+ 'compose_version', '', 'compose', 'v1'
+ )
}
@staticmethod
diff --git a/readme.md b/readme.md
index e0a6595..367d4ed 100644
--- a/readme.md
+++ b/readme.md
@@ -147,9 +147,9 @@ User can choose between 2 types of installations:
## Requirements
- Linux 5 / macOS 6
-- Python 3.7+
-- [Docker](https://www.docker.com/get-started "") & [Docker Compose](https://docs.docker.com/compose/install/ "")
-- Available TCP Ports: 7
+- Python 3.8+
+- [Docker](https://www.docker.com/get-started "") 7
+- Available TCP Ports: 8
1. 80 NGINX
1. 443 NGINX (if you use kobo-install with LetsEncrypt proxy)
@@ -163,11 +163,13 @@ User can choose between 2 types of installations:
- _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 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_
+5) _It has been tested with Ubuntu 18.04, 20.04 and 22.04_
6) _Docker on macOS is slow. First boot usually takes a while to be ready. You may have to answer `Yes` once or twice to question `Wait for another 600 seconds?` when prompted_
-7) _These are defaults but can be customized with advanced options_
+7) _Compose V1 is still supported but has reached its EOL from July 2023_
+
+8) _These are defaults but can be customized with advanced options_
## Tests
diff --git a/templates/nginx-certbot/init-letsencrypt.sh.tpl b/templates/nginx-certbot/init-letsencrypt.sh.tpl
index a05acb4..87e8d33 100644
--- a/templates/nginx-certbot/init-letsencrypt.sh.tpl
+++ b/templates/nginx-certbot/init-letsencrypt.sh.tpl
@@ -9,11 +9,11 @@ DATA_PATH="./data/certbot"
EMAIL="" # Adding a valid address is strongly recommended
STAGING=0 # Set to 1 if you're testing your setup to avoid hitting request limits
MKDIR_CMD=$$(which mkdir)
-DOCKER_COMPOSE_CMD=$$(which docker-compose)
+DOCKER_COMPOSE_CMD="$$(which ${DOCKER_COMPOSE_CMD})"
CURL_CMD=$$(which curl)
-if [ -d "$$DATA_PATH" ]; then
+if [ -d "$$DATA_PATH/conf/live/$$DOMAINS" ]; then
read -p "Existing data found for $$DOMAINS_CSV. Continue and replace existing certificate? (y/N) " decision
if [ "$$decision" != "Y" ] && [ "$$decision" != "y" ]; then
exit
@@ -31,7 +31,7 @@ fi
echo "### Creating dummy certificate for $${DOMAINS_CSV} ..."
DOMAINS_PATH="/etc/letsencrypt/live/$$DOMAINS"
$$MKDIR_CMD -p "$$DATA_PATH/conf/live/$$DOMAINS"
-$$DOCKER_COMPOSE_CMD run --rm --entrypoint "\
+$$DOCKER_COMPOSE_CMD ${DOCKER_COMPOSE_SUFFIX} run --rm --entrypoint "\
openssl req -x509 -nodes -newkey rsa:1024 -days 1\
-keyout '$$DOMAINS_PATH/privkey.pem' \
-out '$$DOMAINS_PATH/fullchain.pem' \
@@ -40,11 +40,11 @@ echo
echo "### Starting nginx ..."
-$$DOCKER_COMPOSE_CMD up --force-recreate -d nginx_ssl_proxy
+$$DOCKER_COMPOSE_CMD ${DOCKER_COMPOSE_SUFFIX} up --force-recreate -d nginx_ssl_proxy
echo
echo "### Deleting dummy certificate for $${DOMAINS_CSV} ..."
-$$DOCKER_COMPOSE_CMD run --rm --entrypoint "\
+$$DOCKER_COMPOSE_CMD ${DOCKER_COMPOSE_SUFFIX} run --rm --entrypoint "\
rm -Rf /etc/letsencrypt/live/$$DOMAINS && \
rm -Rf /etc/letsencrypt/archive/$$DOMAINS && \
rm -Rf /etc/letsencrypt/renewal/$$DOMAINS.conf" certbot
@@ -67,7 +67,7 @@ esac
# Enable staging mode if needed
if [ $$STAGING != "0" ]; then STAGING_ARG="--staging"; fi
-$$DOCKER_COMPOSE_CMD run --rm --entrypoint "\
+$$DOCKER_COMPOSE_CMD ${DOCKER_COMPOSE_SUFFIX} run --rm --entrypoint "\
certbot certonly --webroot -w /var/www/certbot \
$$STAGING_ARG \
$$EMAIL_ARG \
@@ -78,4 +78,4 @@ $$DOCKER_COMPOSE_CMD run --rm --entrypoint "\
echo
echo "### Reloading nginx ..."
-$$DOCKER_COMPOSE_CMD exec nginx_ssl_proxy nginx -s reload
+$$DOCKER_COMPOSE_CMD ${DOCKER_COMPOSE_SUFFIX} exec nginx_ssl_proxy nginx -s reload