Issue
I am trying to host a docker-compose based install of Appsmith on a Digital Ocean droplet that already has ports 80 and 443 occupied. Although Appsmith is working great on port 80 over HTTP, connection to port 8443 over HTTPS is being refused. Upon investigation, I found out that Appsmith is not listening on port 443 and has not provisioned a SSL certificate. I have tried various options of ports, forwarding, custom domains, and X-Forwarded headers but nothing has worked. I need help in properly configuring SSL for Appsmith and making it work with my existing Caddy server as a reverse proxy.
Resolution
-
Modify your Appsmith
docker-compose.ymlto listen on alternative ports:ports: - "8080:80" - "8443:443" -
Add the environment variable
APPSMITH_CUSTOM_DOMAINto yourdocker-compose.ymlto allow Appsmith to provision an SSL certificate:APPSMITH_CUSTOM_DOMAIN=yourappsmithdomain.com - Temporarily make ports 80 and 443 available for a few minutes.
- Run
docker-compose upto start Appsmith and let it provision the SSL certificate. Once SSL provisioning is complete, close ports 80 and 443 again. - Add an
extra_hostsentry for Caddy in yourdocker-compose.ymlfor services like n8n, so that Caddy can resolve the Docker host: -
extra_hosts: - "host.docker.internal:172.17.0.1" -
Update your Caddy file to reverse proxy traffic to Appsmith, using the following configuration:
yourappsmithdomain.com { reverse_proxy http://host.docker.internal:8080 } - Restart Caddy to apply the updated Caddy file.
- Navigate to your Appsmith domain (
yourappsmithdomain.com) to test the configuration.