If you're seeing this error when deploying to Render:
==> No open ports detected, continuing to scan...
==> Docs on specifying a port: https://render.com/docs/web-services#port-binding
And you see output from start.sh with "MYCELIUM - Unified Startup" in the logs, YOUR SERVICE IS MISCONFIGURED.
Render is treating your service as a Python application instead of a Docker service. This happens when:
- The service was created manually in the Render dashboard as "Python" environment
- Or the
render.yamlblueprint wasn't used - Or the service was migrated/recreated incorrectly
- Delete the current misconfigured service in Render Dashboard
- Go to Render Dashboard → "New" → "Blueprint"
- Connect your GitHub repository
- Select the repository containing this code
- Render will automatically detect
render.yamland create the service correctly - Click "Apply" to deploy
✅ This automatically configures the service as Docker with all correct settings
If you prefer manual setup:
- Delete the current service
- Create "New" → "Web Service"
- Connect repository and branch
⚠️ CRITICAL: In "Environment" dropdown → Select "Docker" (NOT "Python"!)- Set Dockerfile Path:
./Dockerfile.dev - Set Docker Context:
.(dot, meaning root directory) - Set Docker Command:
supervisord -c /etc/supervisor/supervisord.conf - Add Persistent Disk:
- Name:
user-data - Mount Path:
/freqtrade/user_data - Size: 1 GB
- Name:
- Set environment variables (see RENDER_DEPLOYMENT.md)
- Click "Create Web Service"
After recreating the service, check the deployment logs:
#1 [internal] load build definition from Dockerfile.dev
#2 [internal] load metadata for docker.io/library/python:3.12-slim
...
🚀 Freqtrade Docker Development Environment
=============================================
📁 Setting up user_data directory structure...
✅ Initialization complete!
🚀 Starting services with supervisord...
==> Checking Python installation...
✓ Python 3.13.4 detected
✓ Running in virtual environment: /opt/render/project/src/.venv
==========================================================
MYCELIUM - Unified Startup
==========================================================
==> No open ports detected, continuing to scan...
- Render has two different deployment modes: Native buildpacks (Python, Node, etc.) and Docker
- When you have
requirements.txt,package.json, or other language files, Render auto-detects the language - If the service is created as "Python" environment, it ignores Dockerfile and tries to run Python directly
- The
render.yamlonly works when you create the service via "Blueprint" or manually select "Docker"
start.shis for local development only - it should NEVER run on Render- The
.renderignorefile excludesstart.sh, but that only works in Docker mode - In Python mode, Render ignores
.renderignoreand uses.gitignoreinstead - You MUST delete and recreate the service - you cannot change from Python to Docker in settings
For complete deployment instructions, see:
- RENDER_DEPLOYMENT.md - Full deployment guide with all options
- ARCHITECTURE.md - System architecture overview
- README.md - Project overview and local development
If you've followed these steps and still have problems:
- Check that
Dockerfile.devexists in the repository root - Verify the
render.yamlfile exists and has no syntax errors - Make sure you selected the correct branch in Render
- Check Render logs for any Docker build errors
- Ensure your GitHub repository is properly connected to Render
TL;DR: Delete the service, create new one as "Docker" (not "Python"), or use Blueprint. The service MUST run in Docker mode.