Tutoriais
Antes de começarmos a configuração das aplicações no Portainer.io com Docker Swarm, é essencial garantir um desempenho ótimo e tempo de resposta rápido. Recomendamos contratar um servidor VPS Linux, Ubuntu ou Debian.
Aprenda como instalar e tenha acesso as stack totalmente gratuitas nos links abaixo:
Sumário
#11 - Como Instalar o Mautic 5
A instalação do Mautic é bem simples, exigindo apenas um banco de dados MySQL
O Mautic, como outras aplicações, opera com três serviços principais:
- mautic_web
- mautic_worker
- mautic_cron
Além disso, é essencial mapear corretamente os volumes do Mautic, incluindo as crons, conforme listado abaixo:
- mautic_config: /var/www/html/config
- mautic_docroot: /var/www/html/docroot
- mautic_media: /var/www/html/docroot/media
- mautic_logs: /var/www/html/var/logs
- mautic_cron: /opt/mautic/cron
Você pode verificar cada volume no menu Volumes do Portainer.
A stack abaixo não inclui um banco de dados, pois nossa estrutura Docker já possui um banco de dados em uma rede específica. Você apenas precisa informar a mesma rede do banco de dados ou adaptá-la conforme necessário.
WORKER: As variáveis para processar números de processos vêm configuradas, por padrão, com o valor 2. Você pode alterar essas variáveis, mas isso aumentará o consumo de recursos.
- DOCKER_MAUTIC_WORKERS_CONSUME_EMAIL
- DOCKER_MAUTIC_WORKERS_CONSUME_HIT
- DOCKER_MAUTIC_WORKERS_CONSUME_FAILED
- Acesse o “Exec Console” do MYSQL pré-instalado e use o comando abaixo:
mysql -uroot -p
- Coloque sua senha (enter)
CREATE DATABASE mautic_db;
version: "3.8"
services:
#serviço principal web
mautic_web:
image: mautic/mautic:5-apache
ports:
- 8001:80
networks:
- traefik_public
- digital_network
volumes:
- mautic_config:/var/www/html/config
- mautic_docroot:/var/www/html/docroot
- mautic_media:/var/www/html/docroot/media
- mautic_logs:/var/www/html/var/logs
- mautic_cron:/opt/mautic/cron
environment:
DOCKER_MAUTIC_ROLE: mautic_web
#banco de dados
MAUTIC_DB_HOST: mysql
MAUTIC_DB_PORT: 3306
MAUTIC_DB_USER: root
MAUTIC_DB_PASSWORD:
PHP_INI_VALUE_DATE_TIMEZONE: "America/Sao_Paulo"
#numeros de processos do worker: email, hit e failed
DOCKER_MAUTIC_WORKERS_CONSUME_EMAIL: 2
DOCKER_MAUTIC_WORKERS_CONSUME_HIT: 2
DOCKER_MAUTIC_WORKERS_CONSUME_FAILED: 2
# DOCKER_MAUTIC_RUN_MIGRATIONS: "false"
# DOCKER_MAUTIC_LOAD_TEST_DATA: "false"
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager
resources:
limits:
cpus: "0.5"
memory: 1024M
labels:
- traefik.enable=true
- traefik.http.routers.mautic_web.rule=Host(`subdominio.digitalinterativo.com.br`)
- traefik.http.routers.mautic_web.entrypoints=websecure
- traefik.http.routers.mautic_web.tls=true
- traefik.http.routers.mautic_web.tls.certresolver=le
- traefik.http.routers.mautic_web.service=mautic_web
- traefik.http.services.mautic_web.loadbalancer.server.port=80
# Configurações de CORS
- traefik.http.middlewares.cors-headers.headers.accessControlAllowMethods=GET,OPTIONS,POST
- traefik.http.middlewares.cors-headers.headers.accessControlAllowOriginList=https://subdominio.digitalinterativo.com.br
- traefik.http.middlewares.cors-headers.headers.accessControlAllowCredentials=true
- traefik.http.middlewares.cors-headers.headers.accessControlAllowHeaders=Content-Type,Authorization,X-Requested-With
- traefik.http.middlewares.cors-headers.headers.accessControlMaxAge=100
- traefik.http.middlewares.cors-headers.headers.addVaryHeader=true
# Middleware de redirecionamento HTTP para HTTPS
- traefik.http.routers.mautic_insecure.rule=Host(`subdominio.digitalinterativo.com.br`)
- traefik.http.routers.mautic_insecure.entrypoints=web
- traefik.http.routers.mautic_insecure.middlewares=cors-headers,redirect-to-https
- traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
#serviço para worker
mautic_worker:
image: mautic/mautic:5-apache
networks:
- digital_network
volumes:
- mautic_config:/var/www/html/config
- mautic_docroot:/var/www/html/docroot
- mautic_media:/var/www/html/docroot/media
- mautic_logs:/var/www/html/var/logs
- mautic_cron:/opt/mautic/cron
environment:
DOCKER_MAUTIC_ROLE: mautic_worker
#banco de dados
MAUTIC_DB_HOST: mysql
MAUTIC_DB_PORT: 3306
MAUTIC_DB_USER: root
MAUTIC_DB_PASSWORD:
PHP_INI_VALUE_DATE_TIMEZONE: "America/Sao_Paulo"
#numeros de processos do worker: email, hit e failed
DOCKER_MAUTIC_WORKERS_CONSUME_EMAIL: 2
DOCKER_MAUTIC_WORKERS_CONSUME_HIT: 2
DOCKER_MAUTIC_WORKERS_CONSUME_FAILED: 2
#DOCKER_MAUTIC_RUN_MIGRATIONS: "false"
#DOCKER_MAUTIC_LOAD_TEST_DATA: "false"
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager
resources:
limits:
cpus: "0.5"
memory: 1024M
#serviço para cron
mautic_cron:
image: mautic/mautic:5-apache
networks:
- digital_network
volumes:
- mautic_config:/var/www/html/config
- mautic_docroot:/var/www/html/docroot
- mautic_media:/var/www/html/docroot/media
- mautic_logs:/var/www/html/var/logs
- mautic_cron:/opt/mautic/cron
environment:
DOCKER_MAUTIC_ROLE: mautic_cron
#banco de dados
MAUTIC_DB_HOST: mysql
MAUTIC_DB_PORT: 3306
MAUTIC_DB_USER: root
MAUTIC_DB_PASSWORD:
PHP_INI_VALUE_DATE_TIMEZONE: "America/Sao_Paulo"
#numeros de processos do worker: email, hit e failed
DOCKER_MAUTIC_WORKERS_CONSUME_EMAIL: 2
DOCKER_MAUTIC_WORKERS_CONSUME_HIT: 2
DOCKER_MAUTIC_WORKERS_CONSUME_FAILED: 2
#DOCKER_MAUTIC_RUN_MIGRATIONS: "false"
#DOCKER_MAUTIC_LOAD_TEST_DATA: "false"
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager
resources:
limits:
cpus: "0.2"
memory: 512M
volumes:
mautic_config:
external: true
mautic_docroot:
external: true
mautic_media:
external: true
mautic_logs:
external: true
mautic_cron:
external: true
networks:
traefik_public:
external: true
digital_network:
external: true
#12 - Como Instalar o Baserow
version: "3.8"
services:
baserow:
image: baserow/baserow:latest
networks:
- traefik_public
- digital_network
volumes:
- baserow_data:/baserow/data
environment:
BASEROW_PUBLIC_URL: https://baserow.SEU_DOMINIO.com.br
DATABASE_HOST: postgres
DATABASE_NAME: baserow
DATABASE_USER: postgres
DATABASE_PASSWORD:
BASEROW_TRIGGER_SYNC_TEMPLATES_AFTER_MIGRATION: "false"
BASEROW_ROW_PAGE_SIZE_LIMIT: 200
BATCH_ROWS_SIZE_LIMIT: 200
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager
resources:
limits:
cpus: "0.5"
memory: 1024M
labels:
- traefik.enable=true
- traefik.http.routers.baserow.rule=Host(`baserow.SEU_DOMINIO.com.br`)
- traefik.http.routers.baserow.entrypoints=websecure
- traefik.http.routers.baserow.tls.certresolver=le
- traefik.http.routers.baserow.service=baserow
- traefik.http.services.baserow.loadbalancer.server.port=80
volumes:
baserow_data:
external: true
networks:
traefik_public:
external: true
digital_network:
external: true
#13 - Como Instalar o MySQL
version: "3.8"
services:
mysql:
image: mysql:8.0
command:
[
--character-set-server=utf8mb4,
--collation-server=utf8mb4_general_ci,
--sql-mode=,
--authentication_policy=caching_sha2_password,
--max-allowed-packet=512MB,
--port=3306,
]
#ports:
#- 3306:3306
networks:
- digital_network
volumes:
- mysql_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD:
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager
resources:
limits:
cpus: "0.5"
memory: 512M
volumes:
mysql_data:
external: true
networks:
digital_network:
external: true
traefik_public:
external: true
#14 - Como Instalar o NocoBase
version: "3.8"
services:
nocobase:
image: nocobase/nocobase:main
networks:
- traefik_public
- digital_network
volumes:
- nocobase_data:/app/nocobase/storage
environment:
APP_KEY: SUA_CHAVE_KEY
DB_DIALECT: postgres
DB_HOST: postgres
DB_DATABASE: nocobase
DB_USER: postgres
DB_PASSWORD:
LOCAL_STORAGE_BASE_URL: /storage/uploads
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager
resources:
limits:
cpus: "1"
memory: 1024M
labels:
- traefik.enable=true
- traefik.http.routers.nocobase.rule=Host(`nocobase.SEU_DOMINIO.com.br`)
- traefik.http.routers.nocobase.entrypoints=websecure
- traefik.http.routers.nocobase.tls.certresolver=le
- traefik.http.routers.nocobase.service=nocobase
- traefik.http.services.nocobase.loadbalancer.server.port=80
volumes:
nocobase_data:
external: true
networks:
traefik_public:
external: true
digital_network:
external: true
#15 - Como Instalar o RabbitMQ
version: "3.8"
services:
rabbit_mq:
image: rabbitmq:management
command: rabbitmq-server
networks:
- traefik_public
hostname: rabbit_mq
volumes:
- rabbitmq_data:/var/lib/rabbitmq
environment:
RABBITMQ_ERLANG_COOKIE:
RABBITMQ_DEFAULT_VHOST: digitalinterativo
RABBITMQ_DEFAULT_USER:
RABBITMQ_DEFAULT_PASS:
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager
resources:
limits:
cpus: "0.5"
memory: 512M
labels:
- traefik.enable=true
- traefik.http.routers.rabbit_mq.rule=Host(`rabbit.SEU_DOMINIO.com.br`)
- traefik.http.routers.rabbit_mq.entrypoints=websecure
- traefik.http.routers.rabbit_mq.tls.certresolver=le
- traefik.http.routers.rabbit_mq.service=rabbit_mq
- traefik.http.services.rabbit_mq.loadbalancer.server.port=15672
volumes:
rabbitmq_data:
external: true
networks:
traefik_public:
external: true
#16 - Como Instalar o PGAdmin
version: "3.8"
services:
pgadmin:
image: dpage/pgadmin4:latest
environment:
PGADMIN_DEFAULT_EMAIL:
PGADMIN_DEFAULT_PASSWORD:
volumes:
- pgadmin_data:/var/lib/pgadmin
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager
resources:
limits:
cpus: "0.4"
memory: 256M
labels:
- traefik.enable=true
#SSL
- traefik.http.routers.pgadmin.rule=Host(`pg.SEU_DOMINIO.com.br`)
- traefik.http.routers.pgadmin.entrypoints=websecure
- traefik.http.routers.pgadmin.tls.certresolver=le
- traefik.http.routers.pgadmin.service=pgadmin
- traefik.http.services.pgadmin.loadbalancer.server.port=80
networks:
- traefik_public
- digital_network
networks:
traefik_public:
external: true
digital_network:
external: true
volumes:
pgadmin_data:
external: true
#17 - Como Instalar o PGBouncer
– Informe o pgbouncer como host nas configurações do banco.
version: "3.8"
services:
pgbouncer:
image: edoburu/pgbouncer:latest
networks:
- digital_network
environment:
DB_HOST: postgres
DB_USER:
DB_PASSWORD:
POOL_MODE: session
AUTH_TYPE: scram-sha-256
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager
networks:
digital_network:
external: true
#18 - Como Instalar o Cal.com
– Essa aplicação demora para ser processada devido seu tamanho de 4GB, então, espere o tempo suficiente para o SSL e todos os recursos estarem ativos.
version: "3.8"
services:
calcom:
image: calcom/cal.com:v4.2.5
networks:
- traefik_public
- digital_network
environment:
#NEXT_PUBLIC_LICENSE_CONSENT:
#LICENSE:
#Use `openssl rand -base64 32` to generate a key
NEXTAUTH_SECRET:
CALENDSO_ENCRYPTION_KEY:
#customização
NEXT_PUBLIC_APP_NAME: "digitalinterativo.com.br"
NEXT_PUBLIC_SUPPORT_MAIL_ADDRESS: ""
NEXT_PUBLIC_COMPANY_NAME: "ANW inc."
#URL da aplicação
NEXT_PUBLIC_WEBAPP_URL: https://agenda.SEU_DOMINIO.com.br
NEXT_PUBLIC_API_V2_URL: https://agenda.SEU_DOMINIO.com.br
#dados do banco
POSTGRES_USER: postgres
POSTGRES_PASSWORD:
POSTGRES_DB: calcom
DATABASE_HOST: postgres:5432
DATABASE_URL: postgresql://:@:5432/calcom
DATABASE_DIRECT_URL: postgresql://:@:5432/calcom
GOOGLE_API_CREDENTIALS: "{}"
# Set to '1' if you don't want Cal to collect anonymous
CALCOM_TELEMETRY_DISABLED: 1
# Configurações de E-mail
EMAIL_FROM:
#EMAIL_SERVER_HOST: smtp-relay.brevo.com
#EMAIL_SERVER_PORT: 587
#EMAIL_SERVER_USER: contato@digitalinterativo.com.br
#EMAIL_SERVER_PASSWORD:
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager
resources:
limits:
cpus: "0.5"
memory: "1.2G"
labels:
- traefik.enable=true
- traefik.http.routers.calcom.rule=Host(`agenda.SEU_DOMINIO.com.br`)
- traefik.http.routers.calcom.entrypoints=websecure
- traefik.http.routers.calcom.tls.certresolver=le
- traefik.http.routers.calcom.service=calcom
- traefik.http.services.calcom.loadbalancer.server.port=3000
networks:
traefik_public:
external: true
digital_network:
external: true
#19 - Como Instalar o Odoo
Requisitos para a Instalação
Para instalar o CRM Odoo, é necessário um banco de dados PostgreSQL.
Criando Usuário e Senha
Crie um usuário e uma senha distintos do padrão (postgres). Utilize o comando abaixo para realizar essa configuração rapidamente:
CREATE USER odoo WITH PASSWORD 'SUA_SENHA' SUPERUSER;
Este comando cria um usuário chamado odoo com uma senha definida e privilégio de SUPERUSER.
- odoo: nome do usuário do banco
- ‘SUA_SENHA’: substitua pelo valor desejado, mantendo as aspas simples
Nota: Esta configuração está mais relacionada ao banco de dados do que ao Docker. Embora o Docker forneça ferramentas para facilitar esse processo, existem outras formas de atingir o mesmo objetivo em diferentes ambientes.
version: "3.8"
services:
#serviço principal do odoo
odoo:
image: odoo:17.0
networks:
- traefik_public
- digital_network
volumes:
- odoo_web_data:/var/lib/odoo
- odoo_confg:/etc/odoo
- odoo_addons:/mnt/extra-addons
environment:
HOST: postgres
PORT: 5432
USER:
PASSWORD:
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager
resources:
limits:
cpus: "1"
memory: 1024M
labels:
- traefik.enable=true
# Rotas para http [porta 80]
- traefik.http.routers.odoo_not_ssl.rule=Host(`odoo.SEU_DOMINIO.com.br`)
- traefik.http.routers.odoo_not_ssl.entrypoints=web
# Redireciona para HTTPS INDIVIDUALMENTE
# So utilize se você NÃO tiver habilitado o redirecionamento GLOBAL do Traefik!
- traefik.http.middlewares.odoo_redirect_ssl.redirectscheme.scheme=https
- traefik.http.routers.odoo_not_ssl.middlewares=odoo_redirect_ssl
#Rotas para aplicar SSL [porta 443]
- traefik.http.routers.odoo.rule=Host(`odoo.SEU_DOMINIO.com.br`)
- traefik.http.routers.odoo.entrypoints=websecure
- traefik.http.routers.odoo.tls.certresolver=le
- traefik.http.routers.odoo.service=odoo
- traefik.http.services.odoo.loadbalancer.server.port=8069
volumes:
odoo_web_data:
external: true
odoo_confg:
external: true
odoo_addons:
external: true
networks:
traefik_public:
external: true
digital_network:
external: true
#20 - Como Instalar o Vaultwarden
Gerando PUSH_INSTALLATION_ID e PUSH_INSTALLATION_KEY
Para gerar um PUSH_INSTALLATION_ID e PUSH_INSTALLATION_KEY, siga as instruções abaixo:
- Acesse o link para criar seu Push ID.
- Insira seu e-mail e selecione a Data Region como bitwarden.com (United States).
- Copie as informações geradas e adicione ou descomente as variáveis de ambiente correspondentes no seu arquivo de configuração:
PUSH_INSTALLATION_ID: SEU_ID_GERADO
PUSH_INSTALLATION_KEY: SUA_KEY_GERADA
Lembre-se de substituir SEU_ID_GERADO e SUA_KEY_GERADA pelos valores que você obteve.
version: "3.8"
services:
vault:
image: vaultwarden/server:1.30.5-alpine
networks:
- traefik_public
volumes:
- vault_data:/data
- vault_web_static:/web-vault
environment:
DOMAIN: https://vault.SEU_DOMINIO.com.br
DATABASE_URL: URL_do_BANCO
YUBICO_CLIENT_ID: ID
YUBICO_SECRET_KEY: KEY
SIGNUPS_ALLOWED: "true"
push tem que gerar diretamente do bitwarden
PUSH_ENABLED: "true"
PUSH_INSTALLATION_ID: ID
PUSH_INSTALLATION_KEY: KEY
SMTP
SMTP_HOST: HOST
SMTP_FROM: FROM
SMTP_PORT: 587
SMTP_SECURITY: starttls
SMTP_USERNAME: USUARIO
SMTP_PASSWORD: SENHA
TZ: "America/Sao_Paulo"
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager
resources:
limits:
cpus: "0.5"
memory: 512M
labels:
- traefik.enable=true
# ROTA SEM SSL
- traefik.http.routers.vault_not_ssl.rule=Host(`vault.SEU_DOMINIO.com.br`)
- traefik.http.routers.vault_not_ssl.entrypoints=web
#MIDDLEWARE (Retire se já estiver habilitada GLOBALMENTE)
- traefik.http.middlewares.vault_redirect_ssl.redirectscheme.scheme=https
- traefik.http.routers.vault_not_ssl.middlewares=vault_redirect_ssl
# ROTA COM SSL
- traefik.http.routers.vault.rule=Host(`vault.SEU_DOMINIO.com.br`)
- traefik.http.routers.vault.entrypoints=websecure
- traefik.http.routers.vault.tls.certresolver=le
- traefik.http.routers.vault.service=vault
- traefik.http.services.vault.loadbalancer.server.port=80
volumes:
vault_data:
external: true
vault_web_static:
external: true
networks:
traefik_public:
external: true
Gostou do conteúdo? Quer apoiar nosso trabalho?
Você pode fazer uma doação e nos ajudar a continuar criando conteúdo de qualidade. Acesse o link para ver as formas de pagamento disponíveis: https://www.asaas.com/c/io73sms6maiim7ud
Chave Pix: (15) 99855-8323