Quick Start¶
It had three ways to install maestro. The quick one is to use a standalone docker [easy way], if you like more control over the installation, you can run multiple docker images per service [Recommended], and the last you can install from the source [Dev].
Running locally¶
You can use a standalone docker to spin up a single maestro instance.
docker run -p 80:80 -p 8888:8888 -p 8000:8000 -p 9999:9999 maestroserver/standalone-maestro
- You need to expose ports 80, 8888, 8000 and 9999
- You can access by browser over 80 port.
Persistent data¶
Docker have a empheral disk, with means if you remove the container all data will be lost. You can handle it making volumes, the list of folder to expose are:
- /data/db: It is all data recorded on mongo db.
- /data/server-app/public/: Profile images uploaded
- /data/analytics-front/public: Architecture artifacts exposed externally.
mkdir ./db ./server/public ./analytics/public
docker run
-v ./db:/data/db
-v ./server/public:/data/server-app/public/
-v ./analytics/public:/data/analytics-front/public
maestroserver/standalone-maestro
Using external Database¶
It do recommend to spin up a mongodb externally, you can set the MAESTRO_MONGO_URI
env variable.
Env Variables | Default | Description |
MAESTRO_MONGO_URI | mongodb://localhost:27017 | Can be mongodb or mongo+srv:// |
As an example
docker run -p 80:80 -p 8888:8888 -p 8000:8000 -p 9999:9999 -e MAESTRO_MONGO_URI=mongodb://external.mongo.com:27017 maestroserver/standalone-maestro
Optionally, you can replace the db name, setting the MAESTRO_MONGO_DATABASE
env var.
Env Variables | Default | Description |
MAESTRO_MONGO_DATABASE | maestro-client | Database name |
Using external RabbitMQ¶
You can spin up a rabbitmq externally, it’s uses CELERY_BROKER_URL env variable.
Env Variables | Default | Description |
CELERY_BROKER_URL | amqp://localhost:5672 | Amqp endpoint |
docker run -p 80:80 -p 8888:8888 -p 8000:8000 -p 9999:9999 -e CELERY_BROKER_URL=amqp://external.rabbitmq.com:5672 maestroserver/standalone-maestro
Using S3 to store files¶
You can use S3 Amazon storage object service to store artifacts and profiles images over a reliable storage system.
Env variables
UPLOAD_TYPE S3 AWS_ACCESS_KEY_ID XXXXXXXXXX AWS_SECRET_ACCESS_KEY XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX AWS_DEFAULT_REGION us-east-1 AWS_S3_BUCKET_NAME maestroserver docker run -e AWS_ACCESS_KEY_ID='XXXXXXXXXX' -e AWS_SECRET_ACCESS_KEY='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' -e AWS_DEFAULT_REGION='us-east-1' maestroserver/standalone-maestro
Using external SMTP¶
You can use a external smtp service as SendGrid, AWS SeS or any smtp server. Go to server application and set:
SMTP_PORT | |
SMTP_HOST | |
SMTP_SENDER | |
SMTP_USERNAME | |
SMTP_PASSWORD | |
SMTP_USETSL | Enable TLS connect |
SMTP_IGNORE | Ignore the validation of security connection |
docker run -e SMTP_PORT=465 -e SMTP_HOST=smtp.gmail.com -e SMTP_SENDER='mysender@gmail.com' -e SMTP_USERNAME=myusername -e SMTP_PASSWORD=mysecret -e SMTP_USETSL=true maestroserver/standalone-maestro
Complete docker compose¶
Minimal setup
services:
maestro:
image: maestroserver/standalone-maestro
ports:
- 80:80
- 8888:8888
- 8000:8000
- 9999:9999
volumes:
- mongodata:/data/db
- artifacts_server:/data/server-app/public/
- artifacts_analytics:/data/artifacts
volumes:
mongodata: {}
artifacts_server: {}
artifacts_analytics: {}
Recommended reliable setup, using a mongodb, rabbitmq, smtp and store file set externally.
services:
maestro:
image: maestroserver/standalone-maestro
ports:
- 80:80
- 8888:8888
- 8000:8000
- 9999:9999
environment:
- AWS_ACCESS_KEY_ID='XXXXXXXXXX'
- AWS_SECRET_ACCESS_KEY='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
- AWS_DEFAULT_REGION='us-east-1'
- MAESTRO_MONGO_URI=mongodb://external.mongo.com:27017
- CELERY_BROKER_URL=amqp://external.rabbitmq.com:5672
- SMTP_PORT=465
- SMTP_HOST=smtp.gmail.com
- SMTP_SENDER='mysender@gmail.com'
- SMTP_USERNAME=myusername
- SMTP_PASSWORD=mysecret
- SMTP_USETSL=true
Nota
Standalone docker use the same env vars found it in all services.
Nota
Standalone uses supervisord to manage all services inside of one docker, if you like to spin up one docker per service, go to installation.
Aviso
Don’t spin up a multiple standalone docker, it will duplicate the schedule tasks, if you need to make a production high availability setup, go to installation per service.