Caddy and AICRM¶
The Caddy web server is an open-source, HTTP/2-enabled web server written in Go.
To connect Caddy and AICRM, you can use the Docker Compose environment. Also, you must have your own domain.
1. Create a folder that will contain your AICRM files and database.
2. Create here a docker-compose.yml file:
docker-compose.yml¶
``` services:
caddy: image: caddy:latest container_name: caddy restart: always ports: - "80:80" - "443:443" volumes: - ./certs:/etc/caddy/certs # optional: if you have self-signed certificates - ./Caddyfile:/etc/caddy/Caddyfile environment: - ACME_AGREE=true # to automatically obtain certificates
espocrm-db: image: mariadb:latest container_name: espocrm-db environment: MARIADB_ROOT_PASSWORD: root_password MARIADB_DATABASE: espocrm MARIADB_USER: espocrm MARIADB_PASSWORD: database_password volumes: - espocrm-db:/var/lib/mysql restart: always healthcheck: test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] interval: 20s start_period: 10s timeout: 10s retries: 3
espocrm: image: espocrm/espocrm container_name: espocrm environment: ESPOCRM_DATABASE_PLATFORM: Mysql ESPOCRM_DATABASE_HOST: espocrm-db ESPOCRM_DATABASE_USER: espocrm ESPOCRM_DATABASE_PASSWORD: database_password ESPOCRM_ADMIN_USERNAME: admin ESPOCRM_ADMIN_PASSWORD: password ESPOCRM_SITE_URL: "https://{YOUR_DOMAIN}" volumes: - espocrm:/var/www/html restart: always depends_on: espocrm-db: condition: service_healthy expose: - 80
espocrm-daemon: image: espocrm/espocrm container_name: espocrm-daemon volumes: - espocrm:/var/www/html restart: always depends_on: - espocrm entrypoint: docker-daemon.sh
espocrm-websocket: image: espocrm/espocrm container_name: espocrm-websocket environment: ESPOCRM_CONFIG_USE_WEB_SOCKET: "true" ESPOCRM_CONFIG_WEB_SOCKET_URL: "wss://{YOUR_DOMAIN}/ws" ESPOCRM_CONFIG_WEB_SOCKET_ZERO_M_Q_SUBSCRIBER_DSN: "tcp://*:7777" ESPOCRM_CONFIG_WEB_SOCKET_ZERO_M_Q_SUBMISSION_DSN: "tcp://espocrm-websocket:7777" volumes: - espocrm:/var/www/html restart: always depends_on: - espocrm entrypoint: docker-websocket.sh expose: - 8080
volumes: espocrm: espocrm-db: ```
3. Create here a Caddyfile text file:
Caddyfile¶
``` espocrm-example.com { reverse_proxy espocrm:80
reverse_proxy /ws espocrm-websocket:8080 {
header_up Host {host}
header_up X-Real-IP {remote}
header_up X-Forwarded-For {remote}
header_up X-Forwarded-Proto {scheme}
}
# Optional for Self-Signed SSL Certificate
# tls /etc/caddy/certs/myserver.crt /etc/caddy/certs/myserver.key
} ```
Now, start containers with the CLI command docker compose up -d.