diff --git a/contrib/just/start/Justfile b/contrib/just/start/Justfile index 92ac202438..7f5aeb018f 100644 --- a/contrib/just/start/Justfile +++ b/contrib/just/start/Justfile @@ -70,9 +70,9 @@ josm: @echo "\033[0;33m ############################################### \033[0m" @echo -# Start FMTM with tunnels +# Externally accessible ODK Central for tests [no-cd] -tunnel: +odk-tunnel: #!/usr/bin/env sh docker compose \ @@ -85,36 +85,25 @@ tunnel: # Wait until services ready without HEALTHCHECK sleep 5 - fmtm_url=$(just --unstable start _get-tunnel-url 'frontend') - api_url=$(just --unstable start _get-tunnel-url 'api') odk_url=$(just --unstable start _get-tunnel-url 'central') - s3_url=$(just --unstable start _get-tunnel-url 's3') - just --unstable dotenv update "EXTRA_CORS_ORIGINS" "${fmtm_url}" - just --unstable dotenv update "S3_ENDPOINT" "${s3_url}" - - # Restart the containers with env vars set - # (API url for frontend, domain for Central form download urls) + # Restart Central with DOMAIN var set to new tunnel URL. + # Is is required to correctly download forms from Collect CENTRAL_DOMAIN_OVERRIDE="$(echo "${odk_url}" | sed 's|^https://||')" \ - API_URL="$(echo "${api_url}" | sed 's|^https://||')" \ docker compose \ -f docker-compose.yml \ -f contrib/tunnel/docker-compose.yml \ - up -d api ui central + up -d central - just --unstable start _print-tunnel-urls "$fmtm_url" "$api_url" "$odk_url" "$s3_url" + just --unstable start _print-tunnel-url "$odk_url" # View the URLs for created tunnels [no-cd] -view-tunnel-urls: +view-tunnel-url: #!/usr/bin/env sh - fmtm_url=$(just --unstable start _get-tunnel-url 'frontend') - api_url=$(just --unstable start _get-tunnel-url 'api') odk_url=$(just --unstable start _get-tunnel-url 'central') - s3_url=$(just --unstable start _get-tunnel-url 's3') - - just --unstable start _print-tunnel-urls "$fmtm_url" "$api_url" "$odk_url" "$s3_url" + just --unstable start _print-tunnel-url "$odk_url" [no-cd] _get-tunnel-url service_name: @@ -130,24 +119,12 @@ _get-tunnel-url service_name: echo "$service_url" [no-cd] -_print-tunnel-urls fmtm_url api_url odk_url s3_url: +_print-tunnel-url odk_url: @echo @echo "\033[0;33m ############################################### \033[0m" @echo - @echo "\033[0;34m FMTM URL: \033[0m" - @echo " {{fmtm_url}}" - @echo - @echo "\033[0;34m API URL: \033[0m" - @echo " {{api_url}}" - @echo @echo "\033[0;34m ODK Central URL: \033[0m" @echo " {{odk_url}}" @echo - @echo "\033[0;34m S3 URL: \033[0m" - @echo " {{s3_url}}" - @echo @echo "\033[0;33m ############################################### \033[0m" @echo - - - diff --git a/contrib/tunnel/docker-compose.yml b/contrib/tunnel/docker-compose.yml index 3b29b9fb0d..192a5e979b 100644 --- a/contrib/tunnel/docker-compose.yml +++ b/contrib/tunnel/docker-compose.yml @@ -1,4 +1,4 @@ -# Copyright (c) 2022, 2023 Humanitarian OpenStreetMap Team +# Copyright (c) Humanitarian OpenStreetMap Team # This file is part of FMTM. # # FMTM is free software: you can redistribute it and/or modify @@ -20,26 +20,6 @@ networks: name: fmtm-${GIT_BRANCH:-local} services: - frontend-tunnel: - image: "docker.io/cloudflare/cloudflared:2024.10.1" - depends_on: - proxy: - condition: service_healthy - networks: - - fmtm-net - restart: "unless-stopped" - command: tunnel --url http://proxy:80 - - api-tunnel: - image: "docker.io/cloudflare/cloudflared:2024.10.1" - depends_on: - api: - condition: service_healthy - networks: - - fmtm-net - restart: "unless-stopped" - command: tunnel --url http://api:8000 - central-tunnel: image: "docker.io/cloudflare/cloudflared:2024.10.1" depends_on: @@ -49,13 +29,3 @@ services: - fmtm-net restart: "unless-stopped" command: tunnel --url http://central:8383 - - s3-tunnel: - image: "docker.io/cloudflare/cloudflared:2024.10.1" - depends_on: - s3: - condition: service_healthy - networks: - - fmtm-net - restart: "unless-stopped" - command: tunnel --url http://s3:9000 diff --git a/docs/dev/Backend.md b/docs/dev/Backend.md index 0602dc84a4..50658c9fd3 100644 --- a/docs/dev/Backend.md +++ b/docs/dev/Backend.md @@ -277,29 +277,20 @@ This adds JOSM to the docker compose stack for local development. You can now call the JOSM API from FMTM and changes will be reflected in the GUI. -### Debugging local services on mobile +### Debugging ODK forms when running on localhost -- It's difficult to debug services running on localhost from your mobile phone. -- An easy way to do this is by tunneling: Cloudflare provides a great free - solution for this (an alternative is Ngrok). -- We may also wish to debug our local ODK Central instance forms on our mobile ODK - Collect. -- To handle both of these instances set up tunnels for all services with: +- ODK Collect requires an externally accessible instance of Central. +- To achieve this for local development / debugging, a good solution is Cloudflare + tunnelling (alternative to Ngrok). +- There is a helper script to do this automatically for you: -```bash -just start tunnel -``` - -To complete this setup, two additional steps must be complete: - -- **Requirement 1**: For login to work, use the temporary login. - -- **Requirement 2**: During project creation, set the ODK Central server URL - to the provided tunnel URL for the ODK Central API. + ```bash + just start odk-tunnel + ``` - > The credentials for the local ODK Central instance are: - > Username: - > Password: Password1234 +Once started, use the output ODK Central URL from the terminal during +project creation. The QRCode should now work in ODK Collect. -Now when you access the project via a QRCode on mobile, the connection to ODK -Central should work. +> The credentials for the local ODK Central instance are: +> Username: +> Password: Password1234