3
Local HTTPS Production Simulation Setup
Linden Crandall edited this page 2025-02-06 22:56:43 +00:00

Automatisch only serves the app over http and doesn't have an out-of-the box https setup, so this guide shows how to setup a local https production simulation environment.

Note:

We can't publish any Automatisch flows locally either via https or http since Twilio can't access the localhost, so this guide is kind of a pointless. But writing docs anyways just in case.

Create Self-Signed SSL Certs using OpenSSL:

  • edit hosts file: sudo nano /etc/hosts
  • create a new sitename and bind it to localhost. Something like: 127.0.0.1 shiloh_automatisch.local
  • save /etc/hosts file and exit
  • cd to /shiloh_automatisch dir and create the .crt and .key files using openssl: openssl req -x509 -newkey rsa:4096 -keyout https/certs/ssl.key -out certs/<>ssl.crt -days 365 -nodes -subj "/CN=<YOUR LOCAL SITE NAME i.e. shiloh_automatisch.local>"
  • edit /https/nginx/automatisch_letsencrypt_nginx.conf file and add your site name, .crt and .key file names and save the file:
events {}

http {
    server {
        listen 443 ssl;
        server_name <ADD LOCAL HOSTNAME HERE i.e. shiloh_automatisch.local>;

        ssl_certificate /etc/nginx/certs/<ADD YOUR .CRT FILE HERE>;
        ssl_certificate_key /etc/nginx/certs/<ADD YOUR .KEY FILE HERE>;

        location / {
            proxy_pass http://main:7757;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto https;
        }
    }
}

  • In docker-compose.yml, uncomment the local https nginx service:
  # for local https development using self-signed certs via openssl
  # nginx:
  #   image: nginx:latest
  #   depends_on:
  #     - main    
  #   ports:
  #     - "443:443"
  #   volumes:
  #     - ./https/certs/${SSL_SELF_SIGNED_CRT}:/etc/nginx/certs/${SSL_SELF_SIGNED_CRT}:ro
  #     - ./https/certs/${SSL_SELF_SIGNED_KEY}:/etc/nginx/certs/${SSL_SELF_SIGNED_KEY}:ro
  #     - ./https/nginx/automatisch_self_signed_nginx.conf:/etc/nginx/conf.d/

  • Comment out production https letsencrypt nginx service
  • Create a .env file at the project root and add your .crt and .key files as env vars:
sudo nano .env
SSL_SELF_SIGNED_CRT=shiloh_automatisch.local.crt
SSL_SELF_SIGNED_KEY=shiloh_automatisch.local.key
  • Save .env file. Then run docker: sudo docker compose up
  • You should now be able to pull up Automatisch locally at https://<YOUR SITE NAME>