Razva
September 9, 2021, 5:02am
1
Hello,
I would like to install ERPNext Docker but without installing any kind of proxy and/or LetsEncrypt. I already have an external NGINX proxy which I want to use in order to connect to ERPNext.
I guess that I should comment erpnext-nginx
in the Docker-Compose file?
Can you please let me know:
what container is basically exposing the app to NGINX?
what port is exposed, in order for me to route traffic from NGINX to ERPNext?
Thank you
no! that is part of application.
comment the traefik.
erpnext-nginx port 80 is where app is served finally.
all proxies, letsencrypt happens after that.
if you observe, traefik service publishes 80 and 443 for letsencrypt and proxy. use and configure your proxy.
refer frappe_docker wiki for custom howtos
Razva
September 9, 2021, 10:33am
3
Thank you for the fast reply! I was really pleasantly surprised!
I cannot see Traefik on the Multi-Bench documentation . Does this type of deployment contain any proxy and/or LetsEncrypt integration? In my specific use case it should not.
docker-compose \
--project-name <project-name> \
-f installation/docker-compose-common.yml \
-f installation/docker-compose-erpnext.yml \
-f installation/docker-compose-networks.yml \
up -d
Is there any proxy/LE involved in this ^ deployment scenario?
Can you please let me know what variables are not required , in a external proxy environment, for Single Bench deployments when editing env-production
(.env
)? Here’s the full list, kindly let me know which ones should be commented out:
LETSENCRYPT_EMAIL=email@example.com
ERPNEXT_VERSION=edge
FRAPPE_VERSION=edge
MARIADB_HOST=mariadb
MYSQL_ROOT_PASSWORD=admin
SITE_NAME=erp.example.com
SITES=`erp.example.com`
DB_ROOT_USER=root
ADMIN_PASSWORD=admin
INSTALL_APPS=erpnext
ENTRYPOINT_LABEL=traefik.http.routers.erpnext-nginx.entrypoints=websecure
CERT_RESOLVER_LABEL=traefik.http.routers.erpnext-nginx.tls.certresolver=myresolver
HTTPS_REDIRECT_RULE_LABEL=traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)
HTTPS_REDIRECT_ENTRYPOINT_LABEL=traefik.http.routers.http-catchall.entrypoints=web
HTTPS_REDIRECT_MIDDLEWARE_LABEL=traefik.http.routers.http-catchall.middlewares=redirect-to-https
HTTPS_USE_REDIRECT_MIDDLEWARE_LABEL=traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
SKIP_NGINX_TEMPLATE_GENERATION=0
WORKER_CLASS=gthread
Thank you!
it is using GitHub - evertramos/nginx-proxy-automation: Automated docker nginx proxy integrated with letsencrypt. for proxy and letsencrypt
required variables
# needed for setting version tag
ERPNEXT_VERSION=edge
FRAPPE_VERSION=edge
# for Mariadb
MARIADB_HOST=mariadb
MYSQL_ROOT_PASSWORD=admin
# for site
SITE_NAME=erp.example.com
DB_ROOT_USER=root
ADMIN_PASSWORD=admin
INSTALL_APPS=erpnext
# for nginx config
SKIP_NGINX_TEMPLATE_GENERATION=0
# for gunicorn worker type
WORKER_CLASS=gthread
check this for port based sites GitHub - frappe/frappe_docker: Docker images for production and development setups of the Frappe framework and ERPNext
Razva
September 10, 2021, 7:29pm
5
Ok, last step I guess. What should I remove from erpnext-nginx
? I guess that everything from labels
?
erpnext-nginx:
image: frappe/erpnext-nginx:${ERPNEXT_VERSION}
restart: on-failure
environment:
- FRAPPE_PY=erpnext-python
- FRAPPE_PY_PORT=8000
- FRAPPE_SOCKETIO=frappe-socketio
- SOCKETIO_PORT=9000
- SKIP_NGINX_TEMPLATE_GENERATION=${SKIP_NGINX_TEMPLATE_GENERATION}
labels:
- "traefik.enable=true"
- "traefik.http.routers.erpnext-nginx.rule=Host(${SITES})"
- "${ENTRYPOINT_LABEL}"
- "${CERT_RESOLVER_LABEL}"
- "traefik.http.services.erpnext-nginx.loadbalancer.server.port=80"
volumes:
- sites-vol:/var/www/html/sites:rw
- assets-vol:/assets:rw
Razva
September 10, 2021, 9:20pm
6
Here’s everything I did:
I created a new docker-compose.yml
file with this exact content:
version: "3"
services:
erpnext-nginx:
image: frappe/erpnext-nginx:${ERPNEXT_VERSION}
restart: on-failure
environment:
- FRAPPE_PY=erpnext-python
- FRAPPE_PY_PORT=8000
- FRAPPE_SOCKETIO=frappe-socketio
- SOCKETIO_PORT=9000
- SKIP_NGINX_TEMPLATE_GENERATION=${SKIP_NGINX_TEMPLATE_GENERATION}
volumes:
- sites-vol:/var/www/html/sites:rw
- assets-vol:/assets:rw
erpnext-python:
image: frappe/erpnext-worker:${ERPNEXT_VERSION}
restart: on-failure
environment:
- MARIADB_HOST=${MARIADB_HOST}
- REDIS_CACHE=redis-cache:6379
- REDIS_QUEUE=redis-queue:6379
- REDIS_SOCKETIO=redis-socketio:6379
- SOCKETIO_PORT=9000
- AUTO_MIGRATE=1
- WORKER_CLASS=${WORKER_CLASS}
volumes:
- sites-vol:/home/frappe/frappe-bench/sites:rw
- assets-vol:/home/frappe/frappe-bench/sites/assets:rw
frappe-socketio:
image: frappe/frappe-socketio:${FRAPPE_VERSION}
restart: on-failure
depends_on:
- redis-socketio
volumes:
- sites-vol:/home/frappe/frappe-bench/sites:rw
- logs-vol:/home/frappe/frappe-bench/logs:rw
erpnext-worker-default:
image: frappe/erpnext-worker:${ERPNEXT_VERSION}
restart: on-failure
command: worker
depends_on:
- redis-queue
- redis-cache
volumes:
- sites-vol:/home/frappe/frappe-bench/sites:rw
- logs-vol:/home/frappe/frappe-bench/logs:rw
erpnext-worker-short:
image: frappe/erpnext-worker:${ERPNEXT_VERSION}
restart: on-failure
command: worker
environment:
- WORKER_TYPE=short
depends_on:
- redis-queue
- redis-cache
volumes:
- sites-vol:/home/frappe/frappe-bench/sites:rw
- logs-vol:/home/frappe/frappe-bench/logs:rw
erpnext-worker-long:
image: frappe/erpnext-worker:${ERPNEXT_VERSION}
restart: on-failure
command: worker
environment:
- WORKER_TYPE=long
depends_on:
- redis-queue
- redis-cache
volumes:
- sites-vol:/home/frappe/frappe-bench/sites:rw
erpnext-schedule:
image: frappe/erpnext-worker:${ERPNEXT_VERSION}
restart: on-failure
command: schedule
depends_on:
- redis-queue
- redis-cache
volumes:
- sites-vol:/home/frappe/frappe-bench/sites:rw
- logs-vol:/home/frappe/frappe-bench/logs:rw
redis-cache:
image: redis:latest
restart: on-failure
volumes:
- redis-cache-vol:/data
redis-queue:
image: redis:latest
restart: on-failure
volumes:
- redis-queue-vol:/data
redis-socketio:
image: redis:latest
restart: on-failure
volumes:
- redis-socketio-vol:/data
mariadb:
image: mariadb:10.3
restart: on-failure
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
volumes:
- ./installation/frappe-mariadb.cnf:/etc/mysql/conf.d/frappe.cnf
- mariadb-vol:/var/lib/mysql
site-creator:
image: frappe/erpnext-worker:${ERPNEXT_VERSION}
restart: "no"
command: new
depends_on:
- erpnext-python
environment:
- SITE_NAME=${SITE_NAME}
- DB_ROOT_USER=${DB_ROOT_USER}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- ADMIN_PASSWORD=${ADMIN_PASSWORD}
- INSTALL_APPS=${INSTALL_APPS}
volumes:
- sites-vol:/home/frappe/frappe-bench/sites:rw
- logs-vol:/home/frappe/frappe-bench/logs:rw
volumes:
mariadb-vol:
redis-cache-vol:
redis-queue-vol:
redis-socketio-vol:
assets-vol:
sites-vol:
cert-vol:
logs-vol:
I’ve created a /docker/erpnext/nginx.conf
file with this contents:
server {
listen 8001;
server_name $http_host;
location / {
rewrite ^(.+)/$ $1 permanent;
rewrite ^(.+)/index\.html$ $1 permanent;
rewrite ^(.+)\.html$ $1 permanent;
proxy_set_header X-Frappe-Site-Name mysite.localhost;
proxy_set_header Host erp.avocat-ludusan.ro;
proxy_pass http://erpnext-nginx;
}
}
I’ve ran docker-compose --project-name erp up -d
in order to start the ERPNext containers.
I’ve ran docker run --network=erp_default -p 8001:8001 --volume=/docker/erpnext/nginx.conf:/etc/nginx/conf.d/default.conf -d nginx
in order to start NGINX
I’ve forwarded http://erp.avocat-ludusan.ro
and https://erp.avocat-ludusan.ro
to http://192.168.1.203:8001
.
Unfortunately I’m getting this:
Not Found
erp.avocat-ludusan.ro does not exist
Any hints?
share access for me to check your servers
Razva
September 11, 2021, 2:56pm
8
Sent in PM. Thank you very much!
also change the site name here.
site name must be whatever you use for the new site created under the setup. e.g. erp.local
, or erp.avocat-ludusan.ro
exec into erpnext-python container and list contents of /home/frappe/frappe-bench/sites directory to find out created sites
@revant_one i have followed the same method but my challenge is that the below container is not able to connect with mariadb
Running schedule_1 container below
Mariadb Logs below
any thoughts !!
@Razva - do you also have similar issue ? Is your swarm working i have been trying for a while now i do have an Nginx Proxy Manager running already so i’m trying to use the app name “erpnext-nginx with port 80” to access with a domain + SSL
would love to know if it worked for you and how
it should connect to the frappe-network then it’ll be able to access mariadb
Hello @revant_one , all the containers are in the same network
nginx_default
but i am still getting this error, am i missing something
below is the yml i’m using in Portainer
version: "3"
networks:
default:
external:
name: nginx_default
services:
erpnext-nginx:
image: frappe/erpnext-nginx:v13.11.1
restart: on-failure
environment:
- FRAPPE_PY=erpnext-python
- FRAPPE_PY_PORT=8000
- FRAPPE_SOCKETIO=frappe-socketio
- SOCKETIO_PORT=9000
- SKIP_NGINX_TEMPLATE_GENERATION=0
volumes:
- sites-vol:/var/www/html/sites:rw
- assets-vol:/assets:rw
erpnext-python:
image: frappe/erpnext-worker:v13.11.1
restart: on-failure
environment:
- MARIADB_HOST=mariadb
- REDIS_CACHE=redis-cache:6379
- REDIS_QUEUE=redis-queue:6379
- REDIS_SOCKETIO=redis-socketio:6379
- SOCKETIO_PORT=9000
- AUTO_MIGRATE=1
- WORKER_CLASS=gthread
volumes:
- sites-vol:/home/frappe/frappe-bench/sites:rw
- assets-vol:/home/frappe/frappe-bench/sites/assets:rw
frappe-socketio:
image: frappe/frappe-socketio:v13.11.0
restart: on-failure
depends_on:
- redis-socketio
volumes:
- sites-vol:/home/frappe/frappe-bench/sites:rw
- logs-vol:/home/frappe/frappe-bench/logs:rw
erpnext-worker-default:
image: frappe/erpnext-worker:v13.11.1
restart: on-failure
command: worker
depends_on:
- redis-queue
- redis-cache
volumes:
- sites-vol:/home/frappe/frappe-bench/sites:rw
- logs-vol:/home/frappe/frappe-bench/logs:rw
erpnext-worker-short:
image: frappe/erpnext-worker:v13.11.1
restart: on-failure
command: worker
environment:
- WORKER_TYPE=short
depends_on:
- redis-queue
- redis-cache
volumes:
- sites-vol:/home/frappe/frappe-bench/sites:rw
- logs-vol:/home/frappe/frappe-bench/logs:rw
erpnext-worker-long:
image: frappe/erpnext-worker:v13.11.1
restart: on-failure
command: worker
environment:
- WORKER_TYPE=long
depends_on:
- redis-queue
- redis-cache
volumes:
- sites-vol:/home/frappe/frappe-bench/sites:rw
erpnext-schedule:
image: frappe/erpnext-worker:v13.11.1
restart: on-failure
command: schedule
depends_on:
- redis-queue
- redis-cache
volumes:
- sites-vol:/home/frappe/frappe-bench/sites:rw
- logs-vol:/home/frappe/frappe-bench/logs:rw
redis-cache:
image: redis:latest
restart: on-failure
volumes:
- redis-cache-vol:/data
redis-queue:
image: redis:latest
restart: on-failure
volumes:
- redis-queue-vol:/data
redis-socketio:
image: redis:latest
restart: on-failure
volumes:
- redis-socketio-vol:/data
mariadb:
image: mariadb:10.3
restart: on-failure
environment:
- MYSQL_ROOT_PASSWORD=frappe
volumes:
- ./installation/frappe-mariadb.cnf:/etc/mysql/conf.d/frappe.cnf
- mariadb-vol:/var/lib/mysql
site-creator:
image: frappe/erpnext-worker:v13.11.1
restart: "no"
command: new
depends_on:
- erpnext-python
environment:
- SITE_NAME=erp.ridemystyle.in
- DB_ROOT_USER=frappe
- MYSQL_ROOT_PASSWORD=frappe
- ADMIN_PASSWORD=frappe
- INSTALL_APPS=erpnext
volumes:
- sites-vol:/home/frappe/frappe-bench/sites:rw
- logs-vol:/home/frappe/frappe-bench/logs:rw
volumes:
mariadb-vol:
redis-cache-vol:
redis-queue-vol:
redis-socketio-vol:
assets-vol:
sites-vol:
logs-vol:
Please help !!
add admin user to your portainer and share access so I can check. Or give me ssh access.
I’m also behind a separately managed nginx reverse-proxy.
Instead of steps 2 and 4 I used the multi-bench, where installation/erpnext-publish.yml
exposes port 80 (can be changed by editing that file):
docker-compose \
--project-name <project-name> \
-f installation/docker-compose-common.yml \
-f installation/docker-compose-erpnext.yml \
-f installation/erpnext-publish.yml \
up -d
Thank you for the question! Multumesc pentru intrebare!