Skip to content

Commit

Permalink
build: update just tunnel config for remote ODK server
Browse files Browse the repository at this point in the history
  • Loading branch information
spwoodcock committed Dec 6, 2024
1 parent bc51568 commit a044ddf
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 85 deletions.
41 changes: 9 additions & 32 deletions contrib/just/start/Justfile
Original file line number Diff line number Diff line change
Expand Up @@ -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 \
Expand All @@ -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:
Expand All @@ -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



32 changes: 1 addition & 31 deletions contrib/tunnel/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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:
Expand All @@ -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
35 changes: 13 additions & 22 deletions docs/dev/Backend.md
Original file line number Diff line number Diff line change
Expand Up @@ -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: <[email protected]>
> 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: <[email protected]>
> Password: Password1234

0 comments on commit a044ddf

Please sign in to comment.