192 lines
3.7 KiB
Markdown
192 lines
3.7 KiB
Markdown
# ERPLibre production guide
|
|
|
|
## Requirement
|
|
|
|
- 5Go of disk space
|
|
|
|
## Production installation procedure
|
|
|
|
### 1. Clone the project:
|
|
|
|
```bash
|
|
git clone https://github.com/ERPLibre/ERPLibre.git
|
|
cd ERPLibre
|
|
```
|
|
|
|
### 2. Modify the parameters
|
|
|
|
Modify the file env_var.sh for production installation. Enable nginx if you need a proxy with `EL_INSTALL_NGINX` at
|
|
True. Redirect your DNS to the proxy's ip and add your A and AAAA into `WL_WEBSITE_NAME` with space between.
|
|
|
|
### 3. Execute the scripts:
|
|
|
|
#### With proxy nginx production, install certbot before for SSL
|
|
|
|
```bash
|
|
# Snap installation
|
|
# https://snapcraft.io/docs/installing-snap-on-debian
|
|
sudo apt install -y snapd
|
|
sudo snap install core
|
|
sudo snap refresh core
|
|
|
|
# https://certbot.eff.org/lets-encrypt/debianbuster-nginx
|
|
# Cerbot
|
|
sudo snap install --classic certbot
|
|
sudo ln -s /snap/bin/certbot /usr/bin/certbot
|
|
```
|
|
|
|
#### Ubuntu 18.04 server
|
|
|
|
```bash
|
|
./script/install_dev.sh
|
|
./script/install_production.sh
|
|
```
|
|
|
|
A service is runned by SystemD. You can access it with the DNS name found in `env_var.sh`
|
|
|
|
#### Ubuntu 20.04 server
|
|
|
|
Apply fix libpng12-0: https://www.linuxuprising.com/2018/05/fix-libpng12-0-missing-in-ubuntu-1804.html
|
|
|
|
```bash
|
|
./script/install_dev.sh
|
|
./script/install_production.sh
|
|
```
|
|
|
|
A service is runned by SystemD, you can access it with the DNS name found in `env_var.sh`
|
|
|
|
### 4. SSL:
|
|
|
|
Generate a ssl certificate
|
|
|
|
```bash
|
|
sudo certbot --nginx
|
|
```
|
|
|
|
## Watch log
|
|
|
|
```bash
|
|
sudo systemctl -feu [EL_USER]
|
|
```
|
|
|
|
## Run by address ip
|
|
|
|
Comment the following line in `/[EL_USER]/erplibre/config.conf`
|
|
|
|
```
|
|
#xmlrpc_interface = 127.0.0.1
|
|
#netrpc_interface = 127.0.0.1
|
|
#proxy_mode = True
|
|
```
|
|
|
|
Add your address ip server_name in nginx config `/etc/nginx/sites-available/[EL_WEBSITE_NAME]`
|
|
|
|
Restart daemon:
|
|
|
|
```bash
|
|
sudo systemctl restart nginx
|
|
sudo systemctl restart [EL_USER]
|
|
```
|
|
|
|
## Production execution
|
|
|
|
```bash
|
|
cd /[EL_USER]/erplibre
|
|
./run.sh -d [DATABASE] --no-database-list
|
|
```
|
|
|
|
## Move prod database to dev
|
|
|
|
When moving prod database to your dev environment, you want to remove email servers and install user test to test the
|
|
database. WARNING, this is not safe for production, you will expose all data. Run:
|
|
|
|
```bash
|
|
./script/migrate_prod_to_test.sh DATABASE
|
|
```
|
|
|
|
## Update production
|
|
|
|
Update all features.
|
|
|
|
```bash
|
|
./run.sh --limit-time-real 99999 --stop-after-init -u all -d DATABASE
|
|
```
|
|
|
|
# Postgresql
|
|
|
|
To show config files:
|
|
> psql -U postgres -c 'SHOW config_file'
|
|
|
|
Edit this file to accept interface from all networks:
|
|
> /var/lib/postgres/data/postgresql.conf
|
|
|
|
# Delete an instance in production
|
|
|
|
CAUTION, this will delete user's home, it's irrevocable.
|
|
|
|
```bash
|
|
./script/delete_production.sh
|
|
```
|
|
|
|
# Update ip when public ip change with CloudFlare and crontab
|
|
|
|
```bash
|
|
mkdir ~/.cloudflare
|
|
```
|
|
|
|
Edit ~/.cloudflare/cloudflare.cfg
|
|
|
|
```
|
|
[PROFILE_NAME]
|
|
email=EMAIL
|
|
token=TOKEN
|
|
```
|
|
|
|
Add your cron
|
|
|
|
```bash
|
|
vim /etc/crontab
|
|
# Add
|
|
*/5 * * * * USER cd PATH && ./script/deployment/update_dns_cloudflare.py --profile PROFILE_NAME --zone_name CLOUDFLARE_ZONE_NAME --dns_name DNS_NAME --auto_sync
|
|
```
|
|
|
|
Check log with
|
|
|
|
```bash
|
|
sudo journalctl -feu cron
|
|
```
|
|
|
|
# Docker
|
|
|
|
## Update
|
|
|
|
When update a docker, you need to update the list of module.
|
|
|
|
Run script to update configuration :
|
|
|
|
```bash
|
|
./script/docker/docker_gen_config.sh
|
|
```
|
|
|
|
Edit the docker-compose.yml and update the command line (change DATABASE) to :
|
|
|
|
```yaml
|
|
command: odoo --workers 2 -u erplibre_info -d DATABASE
|
|
```
|
|
|
|
Note, the goal is to call `env['ir.module.module'].update_list()`.
|
|
|
|
Restart the docker :
|
|
|
|
```bash
|
|
docker-compose down
|
|
docker-compose up -d
|
|
```
|
|
|
|
Revert the command in docker-compose.yml.
|
|
|
|
You can validate in log the update, you need to find `odoo.modules.loading: updating modules list`, check
|
|
|
|
```bash
|
|
docker-compose logs -f
|
|
```
|