Run Syncloop on Docker (Locally or Private Cloud)
Overview
Using Docker, developers can easily run the Syncloop AI Platform in a containerized environment. This ensures a consistent setup, simplifies deployment, and enables faster development workflows — all without manual configuration.
Prerequisites
Before running Syncloop on Docker, ensure the following
Docker Installation
- Install Docker CLI on your system.
- Network Access
- Docker images are pulled from a centralized public repository.
- Ensure that your system allows outbound network access to Docker Hub.
Docker Images
Syncloop provides two Docker image variants:
| Version | Docker Repository | Description |
| Enterprise Edition | nature9/syncloop | Full-featured enterprise version with advanced capabilities. |
| Community Edition | nature9/syncloop-community | Free-to-use community version for learning, testing, and development. |
Run on Docker CLI
Run the Enterprise Version
Execute the following command in your terminal or command prompt:
docker run -d -p 8080:8080 nature9/syncloop
Run the Community Version (Optional)
If you wish to run the Community Edition, use:
docker run -d -p 8080:8080 nature9/syncloop-community
Explanation:
| -d | runs the container in detached mode (in the background) |
| -p 8080:8080 | maps port 8080 from the container to port 8080 on your host system |
| nature9/syncloop | specifies the image name to run |
Verify Syncloop is Running
After running the command, verify that the container is active:
docker ps
You should see a running container with the image name **nature9/syncloop** or **nature9/syncloop-community.**
Run Syncloop Using the Browser
Once the container is up and running:
- Open a web browser on your local machine.
- Navigate to the following URL:
- You will be greeted with the Syncloop Web Interface (login or setup screen).
From here, you can:
- Log in to the Syncloop dashboard.
- Create and manage APIs.
- Configure agents and workflows.
- Access system health and runtime metrics.
http://localhost:8080
If you are running Syncloop on a remote server, replace localhost with the server’s IP address or domain name, for example:
http://<your-server-ip>:8080
Container Management Commands
-
View Running Containers
docker ps -
Stop Syncloop
docker stop -
Restart Syncloop
docker start -
Remove the Container
docker rm
Next Steps
- To configure your environment, users, and API endpoints, visit the Syncloop Configuration Guide.
- For persistent storage, environment variable setup, or connecting external databases, refer to the Advanced Docker Setup Guide.
- To access Syncloop’s API endpoints directly, you can use any REST client (e.g., Postman) with base URL:
http://localhost:8080/api/
Run Docker Compose
You can deploy and manage multi-container applications defined in the compose file. Create a file called docker-compose.YAML and add the following content:
version: '2.1'
services:
syncloop:
image: nature9/syncloop
environment:
- LOGGING_FILE=/logs/server.log
ports:
- "8080:8080"
volumes:
- eka_vol:/eka
volumes:
eka_vol:api/
Environmental variables:
**LOGGING_FILE:** This sets the path where Syncloop will save its log file. By default, it's set to /logs/server.log.
Use the following command to run docker.
docker compose up
Workspace default credentials
The default username and password for the workspace are:
Username: _admin_ \ Password: _admin_Troubleshooting Syncloop on Docker
Common Errors and Fixes
| Category | Error Message / Symptom | Possible Cause | Resolution / Fix |
|---|---|---|---|
| Image & Pull | pull access denied | Wrong image name or private image | Check image name (nature9/syncloop or nature9/syncloop-community); run docker login if private |
| manifest not found | Image tag or architecture not available | Use correct tag (latest); specify --platform linux/amd64 if needed |
|
| rate limit exceeded | Docker Hub anonymous pull limits | Run docker login or wait until limit resets |
|
| Network/DNS timeout | Proxy/firewall restrictions | Configure Docker proxy; test with docker pull hello-world |
|
| Daemon / Runtime | Cannot connect to the Docker daemon | Docker not running or insufficient permissions | Start Docker; ensure user is in docker group |
| Container exits immediately | Missing configs or OOM | Check logs: docker logs <id>; adjust memory or env vars |
|
| Healthcheck fails repeatedly | App not ready or wrong port | Extend startup timeout; verify port mapping | |
| Ports / Networking | bind: address already in use | Port 8080 already occupied | Use alternate port: -p 9090:8080 |
| Site not reachable at http://localhost:8080 | Port mapping/firewall issue | Check docker ps; ensure 0.0.0.0:8080->8080 mapping |
|
| Browser 502 / 504 errors | Proxy misconfiguration | Confirm backend container listens on 8080 |
|
| Volumes / Filesystem | Permission denied on mounted volume | UID/GID mismatch or SELinux restriction | Chown host dir; use :Z for SELinux-enabled systems |
| no space left on device | Disk full | Run docker system prune -af; clear unused images/volumes |
|
| Read-only file system | Rootless mode or mount flags | Remove :ro flag; check Docker permissions |
|
| Environment / Config | Startup crash | Missing environment variables | Add vars via -e or in docker-compose.yml |
| CORS or auth error in browser | API origin not allowed | Update allowed origins in Syncloop config | |
| Locale/timezone mismatch | Missing timezone variable | Add -e TZ=Asia/Kolkata (or your timezone) |
|
| CPU / Architecture | exec format error | Mismatched CPU architecture | Use --platform linux/amd64 on ARM machines |
| WSL2 network unreachable | Port not exposed correctly | Update Docker Desktop; use 127.0.0.1 instead of localhost |
|
| Networking Inside Container | No internet access from container | DNS/proxy misconfig | Add --dns flag or configure proxy env vars |
| Security / Policy | permission denied or blocked downloads | Corporate firewall / endpoint security | Whitelist Docker; ensure outbound access to Docker Hub |
| SELinux/AppArmor denial | OS security constraints | Relax profile; use :Z on volume mount |
|
| Compose / YAML | version is unsupported | Old Docker Compose version | Update to Compose v3.8+ |
| mapping values not allowed | YAML syntax error | Validate file with yamllint |
Run on AWS ECS
Developers can also deploy a docker container to the AWS ECS service from their local command tool. To do this read more in detail about how docker offers integration with AWS ECS.
To run Syncloop on AWS ECS follow these easy steps:
CS Architecture Diagram
- Create an IAM user with the following permissions
- ec2:AuthorizeSecurityGroupIngress
- application-autoscaling:*
- elasticfilesystem:*
- route53:GetHostedZone
- logs:*
- route53:GetHealthCheck
- iam:CreateRole
- iam:AttachRolePolicy
- iam:PutRolePolicy
- route53:ListHostedZonesByName
- ecs:DeregisterTaskDefinition
- servicediscovery:*
- ecs:UpdateService
- iam:GetRole
- iam:PassRole
- ecs:CreateService
- iam:DetachRolePolicy
- ec2:CreateSecurityGroup
- ecs:ListTasks
- iam:DeleteRolePolicy
- ecs:RegisterTaskDefinition
- ecs:DescribeServices
- route53:DeleteHostedZone
- logs:FilterLogEvents
- ec2:DescribeRouteTables
- ecs:DescribeTasks
- route53:CreateHostedZone
- logs:DescribeLogGroups
- logs:DeleteLogGroup
- ec2:CreateTags
- ecs:CreateCluster
- ecs:DeleteService
- ecs:DeleteCluster
- cloudformation:*
- iam:DeleteRole
- elasticloadbalancing:*
- logs:CreateLogGroup
- ec2:DescribeSecurityGroups
- ecs:DescribeClusters
- ec2:RevokeSecurityGroupIngress
- ecs:ListAccountSettings
- ec2:DescribeVpcs
- ec2:DeleteSecurityGroup
- ec2:DescribeSubnets
- Create aws ecs context by using command
docker context create ecs Syncloop-platform - Select the created context
Download fileversion: '2.1' services: syncloop: image: nature9/syncloop environment: - LOGGING_FILE=/logs/server.log ports: - "8080:8080" deploy: resources: limits: cpus: '0.5' memory: 1024M x-aws-autoscaling: min: 1 max: 10 #required cpu: 75 volumes: - eka_vol:/eka volumes: eka_vol: # external: true # name: fs-0d1781ddc5d739570 x-aws-cloudformation: Resources: SyncloopTCP80TargetGroup: Properties: HealthCheckPath: /tenant/default/files/gui/middleware/pub/server/ui/welcome/onboarding/login.html Matcher: HttpCode: 200-499 SyncloopTCP80Listener: Properties: Certificates: - CertificateArn: "arn:aws:acm:ap-south-1:776625503031:certificate/7a2b32cd-e894-4afd-b212-26f91ad31ce9" Protocol: HTTPS Port: 443 Default80Ingress: Properties: FromPort: 443 ToPort: 443
Deploy docker compose on ecs cluster.
docker compose up
- When the above command is successful. Go to aws ec2 load balancer.
- Select the newly created aws elb and option the DNS name in the browser.
- Syncloop will support both http & https. Read the docker ecs document to use your SSL certificate.