Installation by Script¶
This script automatically installs EspoCRM as a Docker image with Nginx server and MariaDB database.
Requirements¶
-
Operating system:
- Ubuntu
- Debian
- Linux Mint
-
Access via command line.
-
Root or sudo access.
Installation¶
Open your server's command line and run the commands:
wget https://github.com/espocrm/espocrm-installer/releases/latest/download/install.sh
sudo bash install.sh
Installation with SSL/TLS certificate¶
wget https://github.com/espocrm/espocrm-installer/releases/latest/download/install.sh
sudo bash install.sh --ssl
Installation without prompts¶
wget https://github.com/espocrm/espocrm-installer/releases/latest/download/install.sh
sudo bash install.sh -y --ssl --letsencrypt --domain=my-espocrm.com --email=email@my-domain.com
Available options¶
-y
or --yes
¶
Skip confirmation prompts during installation.
--ssl
¶
Installation with SSL/TLS certificate. Ex. --ssl
. See installation modes.
--letsencrypt
¶
Installation with a Let's Encrypt free certificate. Ex. --ssl --letsencrypt
. See installation modes.
--owncertificate
¶
Installation with an own SSL/TLS certificate. Ex. --ssl --owncertificate
. See installation modes.
--domain
¶
Define your domain. Ex. --domain=my-domain.com
or --domain=192.168.1.10
.
--email
¶
Email address for Let's Encrypt certificate. Ex. --email=email@my-domain.com
.
--clean
¶
Clean the existing EspoCRM installation and start a new one. This option can be used if you have already installed EspoCRM. Ex. --clean
.
--public-ip
¶
Note: For HTTP mode only.
Indicate a public IP address that will be used for EspoCRM installation. Ex. --public-ip
.
--private-ip
¶
Note: For HTTP mode only.
Indicate a private (local) IP address that will be used for EspoCRM installation. Ex. --private-ip
.
--db-root-password
¶
Define your own MySQL root password instead of the automatically generated one. Ex. --db-root-password=my-password
.
--db-password
¶
Define your own MySQL password for EspoCRM installation. Ex. --db-password=my-password
.
--admin-username
¶
Define a username of your EspoCRM administrator. Ex. --admin-username=admin
.
--admin-password
¶
Define a password of EspoCRM administrator. Ex. --admin-password=admin-password
.
--command
¶
Update the command.sh
for the existing installation. Ex. --command
.
--backup-path
¶
A path for the backup. Ex. --backup-path ="/backup"
.
Server management¶
The operation of EspoCRM consists of several services, such as nginx
, mariadb
, daemon
.
In order to update the command tool, see update the command.sh.
Help¶
In order to display a list of available commands.
sudo /var/www/espocrm/command.sh help
Status of services¶
sudo /var/www/espocrm/command.sh status
Restart services¶
sudo /var/www/espocrm/command.sh restart
Start services¶
sudo /var/www/espocrm/command.sh start
Build and start services¶
In order to apply changes in docker-compose.yml
.
sudo /var/www/espocrm/command.sh build
Stop services¶
sudo /var/www/espocrm/command.sh stop
EspoCRM rebuild¶
sudo /var/www/espocrm/command.sh rebuild
EspoCRM upgrade¶
sudo /var/www/espocrm/command.sh upgrade
EspoCRM logs¶
sudo /var/www/espocrm/command.sh logs
Backup¶
Create a full backup of EspoCRM.
sudo /var/www/espocrm/command.sh backup "BACKUP_DIRECTORY"
An example: sudo /var/www/espocrm/command.sh backup /var/www/espocrm-backup
.
Restore¶
Restore the backup created by the backup command.
sudo /var/www/espocrm/command.sh restore "BACKUP_ARCHIVE"
An example: sudo /var/www/espocrm/command.sh restore "/var/www/espocrm-backup/2024-01-01_142051.tar.gz"
.
Restore on a fresh server¶
Restore the backup created by the backup command.
1. Configure the environment¶
wget -N https://github.com/espocrm/espocrm-installer/releases/latest/download/install.sh
sudo bash install.sh --environment
2. Restore a backup¶
sudo /var/www/espocrm/command.sh restore "BACKUP_ARCHIVE"
An example: sudo /var/www/espocrm/command.sh restore "/var/www/espocrm-backup/2024-01-01_142051.tar.gz"
.
Troubleshooting¶
In order to fix the Error response from daemon: network external not found
, run:
sudo bash install.sh --network
and then run the Step 2
again.
Clean¶
Delete old and unnecessary files.
sudo /var/www/espocrm/command.sh clean
Import SQL dump¶
Import the database from the SQL dump created by mariadb-dump
, mysqldump
, phpMyAdmin
, etc.
sudo /var/www/espocrm/command.sh import-sql "PATH/DB.sql"
An example: sudo /var/www/espocrm/command.sh import-sql "/var/www/espocrm-backup/db.sql"
.
Import SQL dump for one / several tables¶
Import the database with enabled DROP TABLE
statement in the SQL dump created by mariadb-dump
, mysqldump
, phpMyAdmin
, etc.
sudo /var/www/espocrm/command.sh import-sql --skip-drop "PATH/DB.sql"
An example: sudo /var/www/espocrm/command.sh import-sql "/var/www/espocrm-backup/db.sql" --skip-drop
.
Export a database into the SQL dump¶
Export the database structure and data into a .sql dump.
sudo /var/www/espocrm/command.sh export-sql "PATH"
An example: sudo /var/www/espocrm/command.sh export-sql "/var/www/espocrm-backup"
.
Export a database table into the SQL dump¶
Export the single database table structure and data into a .sql dump.
Notice: the database tables have different names than Entities. Ex. TargetList
entity has the target_list
table.
sudo /var/www/espocrm/command.sh export-table-sql "PATH" "TABLE_NAME"
An example: sudo /var/www/espocrm/command.sh export-table-sql "/var/www/espocrm-backup" account
.
Certificate generation¶
Generate a new Let's Encrypt certificate. It can be used to create a certificate for the first time or after a domain change.
sudo /var/www/espocrm/command.sh cert-generate
Certificate renewal¶
Renew an existing Let's Encrypt certificate. It can be used in crontab to automatically renewal.
sudo /var/www/espocrm/command.sh cert-renew
Apply a domain change¶
Applying a domain change described here.
sudo /var/www/espocrm/command.sh apply-domain
Enable automatic certificate renewal¶
Note: This item is relevant only for the Let's Encrypt mode.
Enable automatic certificate renewal. This should be done after moving to another server only.
sudo /var/www/espocrm/command.sh cert-cron-add
Disable automatic certificate renewal¶
Note: This item is relevant only for the Let's Encrypt mode.
Disable automatic certificate renewal. This command should be run after changing the installation mode (ex. to own SSL certificate).
sudo /var/www/espocrm/command.sh cert-cron-remove
Add a cronjob for VoIP Integration connector¶
Add a cronjob for a VoIP Integration extension after configuring the connector (ex. Asterisk).
sudo /var/www/espocrm/command.sh voip-cron-add CONNECTOR
where CONNECTOR
is your connector ID, ex. Asterisk
.
Remove a cronjob for VoIP Integration connector¶
Remove a cronjob for a VoIP Integration extension after disabling the connector (ex. Asterisk).
sudo /var/www/espocrm/command.sh voip-cron-remove CONNECTOR
where CONNECTOR
is your connector ID, ex. Asterisk
.
Data¶
Structure¶
.
├── data
│ ├── espocrm
│ ├── mariadb
│ └── nginx
├── docker-compose.yaml
├── command.sh
Storage location¶
All data are stored at:
/var/www/espocrm
Installation modes¶
1. Let's Encrypt certificate¶
This certificate is a free of charge and can be used by providing an email address.
2. Own SSL/TLS certificate¶
If you need a high-security connection, you have to use your own SSL/TLS certificate. In this mode, EspoCRM will be installed with dummy certificates which should be replaced by real ones.
Post installation steps:
1. Go to your server directory /var/www/espocrm/data/nginx/ssl/cert/
.
2. Replace the following certificates with your own:
- fullchain.pem
- privkey.pem
Important! Your own certificates have to substitute the existing certificates and must have the same names.
3. Restart nginx server:
/var/www/espocrm/restart.sh espocrm-nginx
3. HTTP mode¶
This mode is recommended to use only if you don't have a domain name or want to use your IP address as a domain name.
Changing installed mode¶
All the actions can be applied to already installed EspoCRM instance.
From HTTP to Own SSL/TLS certificate¶
wget https://github.com/espocrm/espocrm-installer/releases/latest/download/install.sh
sudo bash install.sh --ssl --owncertificate --domain=my-espocrm.com
From HTTP to Let's Encrypt certificate¶
wget https://github.com/espocrm/espocrm-installer/releases/latest/download/install.sh
sudo bash install.sh --ssl --letsencrypt --domain=my-espocrm.com --email=email@my-domain.com
From Own SSL/TLS certificate to Let's Encrypt certificate¶
wget https://github.com/espocrm/espocrm-installer/releases/latest/download/install.sh
sudo bash install.sh --ssl --letsencrypt --domain=my-espocrm.com --email=email@my-domain.com
Manually (advanced users only)¶
1. Stop your existing EspoCRM instance.
sudo /var/www/espocrm/command.sh stop
2. Rename your existing directory:
mv /var/www/espocrm /var/www/espocrm-old
3. Run the installer in the required mode, e.g. Let's Encrypt certificate
mode:
wget https://github.com/espocrm/espocrm-installer/releases/latest/download/install.sh
sudo bash install.sh --ssl --letsencrypt --domain=my-espocrm.com --email=email@my-domain.com
4. Copy your existing data to a new installation:
rm -rf /var/www/espocrm/data/espocrm
rm -rf /var/www/espocrm/data/mariadb
cp -rp /var/www/espocrm-old/data/espocrm /var/www/espocrm/data
cp -rp /var/www/espocrm-old/data/mariadb /var/www/espocrm/data
5. Update your /var/www/espocrm/docker-compose.yml
file. You have to copy your existing options from /var/www/espocrm-old/docker-compose.yml
for the services:
- espocrm-db
- espocrm
6. Restart services via the command:
sudo /var/www/espocrm/command.sh restart
7. Login as administrator and update your new Site URL
in Administration > Settings.
Logs¶
Nginx logs¶
/var/www/espocrm/data/nginx/logs
EspoCRM logs¶
/var/www/espocrm/data/espocrm/data/logs
Update the command.sh¶
In order to load the latest version of the command.sh
, run the command:
wget -N https://github.com/espocrm/espocrm-installer/releases/latest/download/install.sh
sudo bash install.sh --command
Modify PHP settings¶
This can be achieved by mounting the PHP configuration file and restarting the container.
1. Login via terminal to your server and open EspoCRM directory /var/www/espocrm
:
cd /var/www/espocrm
2. Create the PHP configuration file:
mkdir -p data/php; \
nano data/php/espocrm.ini
with the content:
expose_php = Off
display_errors = Off
display_startup_errors = Off
log_errors = On
memory_limit=256M
max_execution_time=180
max_input_time=180
post_max_size=30M
upload_max_filesize=30M
date.timezone=UTC
then press Ctrl + 0
and Ctrl + X
3. Mount the created PHP configuration file to the container:
sudo nano docker-compose.yml
add ./data/php/espocrm.ini:/usr/local/etc/php/conf.d/espocrm.ini
option for espocrm
container as displayed below:
espocrm:
...
volumes:
- ./data/espocrm:/var/www/html
- ./data/php/espocrm.ini:/usr/local/etc/php/conf.d/espocrm.ini
...
then press Ctrl + 0
and Ctrl + X
4. Restart the container to apply the changes:
sudo ./command.sh restart espocrm
Modify Nginx settings¶
1. Login via terminal to your server and open EspoCRM directory /var/www/espocrm
:
cd /var/www/espocrm
2. Edit the file ./data/nginx/conf.d/default.conf.template
sudo nano ./data/nginx/conf.d/default.conf.template
3. Restart the container to apply the changes:
sudo ./command.sh restart espocrm-nginx
Change a domain name¶
1. Login via terminal to your server and open EspoCRM directory /var/www/espocrm
:
cd /var/www/espocrm
2. Find and replace the old domain name with the new one in the file ./docker-compose.yml
sudo nano ./docker-compose.yml
Options to change:
NGINX_HOST
.ESPOCRM_CONFIG_SITE_URL
.command
under theespocrm-certbot
service (required only for the letsencrypt mode).
3. Run the command:
sudo ./command.sh apply-domain
Note: You have to clear your browser cache for this change to take effect.
Installer migration from v1 to v2¶
1. Export the MySQL database from the corresponding Docker container:
mkdir -p /var/www/backup
cd /var/www/backup
sudo docker exec -i espocrm-mysql /usr/bin/mysqldump -uroot -pYOUR_ROOT_PASSWORD espocrm > db.sql
Notes:
- Replace the YOUR_ROOT_PASSWORD with your MySQL root password.
2. Copy data
and custom
folders from espocrm directory:
cp -a /var/www/espocrm/data/espocrm/data /var/www/backup/data
cp -a /var/www/espocrm/data/espocrm/custom /var/www/backup/custom
3. Install a fresh EspoCRM by a script:
wget https://github.com/espocrm/espocrm-installer/releases/latest/download/install.sh
sudo bash install.sh --db-root-password=YOUR_ROOT_PASSWORD --db-password=YOUR_ESPOCRM_DB_PASSWORD --admin-password=YOUR_ADMIN_PASSWORD --clean
Notes:
- Replace the YOUR_ROOT_PASSWORD with your MySQL root password.
- Replace the YOUR_ESPOCRM_DB_PASSWORD with your MySQL espocrm user password.
- Replace the YOUR_ADMIN_PASSWORD with your EspoCRM admin user password.
4. Replace data
and custom
folders in the /var/www/espocrm/data/espocrm directory with the previously exported ones.
cp -a /var/www/backup/data /var/www/espocrm/data/espocrm/data
cp -a /var/www/backup/custom /var/www/espocrm/data/espocrm/custom
5. Replace 'host' => 'espocrm-mysql'
line with 'host' => 'espocrm-db'
one in the /var/www/espocrm/data/espocrm/config-internal.php file.
6. Import previously exported database to MariaDB container:
sudo /var/www/espocrm/command.sh import-sql /var/www/backup/db.sql
7. Make a rebuild:
sudo /var/www/espocrm/command.sh rebuild
8. Log in to your instance and check if everything is working well.