-
Notifications
You must be signed in to change notification settings - Fork 0
Home
The document covers the deployment and configuration of docker services in a manual fashion. The document also assumes you to be having a valid domain and subdomains with appropriate “ADDRESS” and “CNAME” entries. Values with ${VARIABLE_NAME} should be replaced with intended appropriate values. e.g. ${DOMAIN_NAME} should be replaced with “example.com”
- Ubuntu/Debian
- USER=ubuntu #use your logged in user
- sudo apt-get update -y && sudo apt-get upgrade -y
- sudo apt install -y docker && sudo usermod -aG docker ${USER} && sudo chown -R ${USER}:${USER} ~/.docker
- sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && sudo chmod +x /usr/local/bin/docker-compose && sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
- CentOS7/RHEL7
- USER=rhel #use your logged in user
- sudo yum upgrade -y && sudo yum update -y && sudo yum install git
- curl -fsSL https://get.docker.com/ | sh && sudo usermod -aG docker ${USER} && sudo systemctl start docker
- sudo firewall-cmd --add-service=https
- Create directories
- mkdir -p ~/workspace && mkdir -p ~/workspace/certificates
- Clone the “Docker-Services” GitHub repositoryThis directory contains all the required yaml files for “Docker-Services” - use your GIT_USER and GIT_PWD
- cd ~/workspace && git clone git clone https://${GIT_USER}@github.com/SmartMaaS-Services/2019.smartmaas.services.git && cd
- Container “quantumleap_crate” needs a specific “max_map_count” to be in the running state. Perform the following steps
- sudo bash -c 'echo "vm.max_map_count=262144" > /etc/sysctl.d/10-Docker-Services.conf' && sudo sysctl -p /etc/sysctl.d/10-Docker-Services.conf
- Mandatory changes in repository files - domain name and cert path
- grep -rl 'DOMAIN_NAME' ~/workspace/Docker-Services/* | xargs -i@ sed -i "s/DOMAIN_NAME/${DOMAIN_NAME}/g" @
- grep -rl 'WSDIR'
/workspace/Docker-Services/* | xargs -i@ sed -i "s_WSDIR_/workspace/certificates_g" @
1. Ubuntu
- sudo apt-get update -y && sudo apt-get install software-properties-common -y
- sudo add-apt-repository universe -y && sudo add-apt-repository ppa:certbot/certbot -y && sudo apt-get update -y && sudo apt-get install certbot python-certbot-nginx -y
- sudo docker run -it --rm -v ~/workspace/certificates/etc/letsencrypt:/etc/letsencrypt -v ~/workspace/certificates/var/lib/letsencrypt:/var/lib/letsencrypt -v ~/workspace/certificates/website:/data/letsencrypt -v ~/workspace/certificates/var/log/letsencrypt:/var/log/letsencrypt certbot/certbot certonly --webroot --email ${EMAIL} --agree-tos --no-eff-email --webroot-path=/data/letsencrypt -d *.${DOMAIN_NAME} OR
- certbot certonly -n --webroot --agree-tos --no-eff-email --webroot-path ~/workspace/certificates --email ${EMAIL} --config-dir ~/workspace/certificates --work-dir ~/workspace/certificates --logs-dir ~/workspace/certificates -d *.${DOMAIN_NAME}
**2. CENTOS7/RHEL7 **
- https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F
- sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
- sudo subscription-manager repos --enable "rhel--optional-rpms" --enable "rhel--extras-rpms" --enable "rhel-ha-for-rhel-*-server-rpms"
- sudo yum install epel-release && sudo yum -y install yum-utils && sudo yum install certbot python2-certbot-nginx
- sudo docker run -it --rm -v ~/workspace/certificates/etc/letsencrypt:/etc/letsencrypt -v ~/workspace/certificates/var/lib/letsencrypt:/var/lib/letsencrypt -v ~/workspace/certificates/website:/data/letsencrypt -v ~/workspace/certificates/var/log/letsencrypt:/var/log/letsencrypt certbot/certbot certonly --webroot --email ${EMAIL} --agree-tos --no-eff-email --webroot-path=/data/letsencrypt -d *.${DOMAIN}
3. MANUAL INSTALLATION:
- sudo certbot certonly --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory --email xyz@test.com --manual-public-ip-logging-ok --agree-tos -d *.${DOMAIN_NAME}
- Deploy a DNS TXT record provided by Let’s Encrypt certbot after running the above command = send stuff to Chandra, this bit: the _acme challenge and the hash. Wait 2 minutes and press enter.
- RENEWAL:-
- sudo docker service rm ${STACK_NAME}_umbrella
- sudo certbot certonly --force-renew --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory --email xyz@test.com --manual-public-ip-logging-ok --agree-tos -d *.${DOMAIN_NAME}
- vim ~/workspace/Docker-Services/services/umbrella.yml
- Change certificate name under “secrets” section
- OLD:-
- umbrella.crt:name: umbrella.crt-v9
- umbrella.key:name: umbrella.key-v9
- NEW:-
- umbrella.crt:name: umbrella.crt-v10
- umbrella.key:name: umbrella.key-v10
- docker stack deploy -c ~/workspace/Docker-Services/services/umbrella.yml ${STACK_NAME}
-
AUTOMATED (Recommended):- If you own a mail server(Recommended)
- grep -rl 'SMTP_USER' ~/workspace/Docker-Services/* | xargs -i@ sed -i "s/SMTP_USER/${SMTP_USER}/g" @
- grep -rl 'SMTP_PASS' ~/workspace/Docker-Services/* | xargs -i@ sed -i "s/SMTP_PASS/${SMTP_PASS}/g" @
- grep -rl 'SMTP_SERVER' ~/workspace/Docker-Services/* | xargs -i@ sed -i "s/SMTP_SERVER/${SMTP_SERVER}/g" @
-
MANUAL(Deprecated):- If you don’t own a mail server
- mkdir ~/workspace/mailgun && cd ~/workspace/mailgun
- curl http://www.jetmore.org/john/code/swaks/files/swaks-20130209.0/swaks -o swaks && chmod +x swaks && apt-get -y install perl
- ./swaks --auth --server smtp.mailgun.org --au postmaster@DOMAIN_NAME --ap 3kh9umujora5 --to bar@example.com --h-Subject: "Hello" --body 'Testing some Mailgun awesomeness!'
-
Grab your SMTP credentials: (this is in my case)
- SMTP hostname: smtp.eu.mailgun.org
- Port: 587 (recommended)
- Username: postmaster@${DOMAIN_NAME}
- Default password: aae653f3afa4f59dd7885085cfa33131-baa55c84-6f3f0f92
-
ManageSMTP credentials - {SHA512-CRYPT}$6$NBX1U6qSoZ1QfpFF$EJfnvJclM/18/adnGJk38Wqcts7eTE/zwVBxb2wrRPvH1.8Om1TWlelBcKLx2i4YDvKpGeYanJnPUYxZ8k0CH.
-
Make changes in services/keyrock.yml & services/ckan.yml & services/apinf.yml
-
Make changes in config/keyrock.js in “config.mail” * host: ‘smtp.eu.mailgun.org’,
- Swarm Initialization - docker swarm init
- Deployment in order docker stack deploy -c ~/workspace/Docker-Services/services/mongo.yml -c ~/workspace/Docker-Services/services/nginx.yml -c ~/workspace/Docker-Services/services/mail.yml -c ~/workspace/Docker-Services/services/ngsiproxy.yml -c ~/workspace/Docker-Services/services/orion.yml -c ~/workspace/Docker-Services/services/quantumleap.yml -c ~/workspace/Docker-Services/services/keyrock.yml -c ~/workspace/Docker-Services/services/umbrella.yml -c ~/workspace/Docker-Services/services/apinf.yml -c ~/workspace/Docker-Services/services/grafana.yml -c ~/workspace/Docker-Services/services/iotagent.yml -c ~/workspace/Docker-Services/services/iotagent-lora.yml -c ~/workspace/Docker-Services/services/kurento.yml -c ~/workspace/Docker-Services/services/nifi.yml -c ~/workspace/Docker-Services/services/orion-ld.yml -c ~/workspace/Docker-Services/services/perseo.yml -c ~/workspace/Docker-Services/services/cosmos.yml -c ~/workspace/Docker-Services/services/cadvisor.yml ${STACK_NAME}
- Visit “https://umbrella.${DOMAIN_NAME}/admin” and signup and then login
- Add website backends
- Configuration -> Website Backends
-
Add Website Backend
- Frontend Host: ${DOMAIN_NAME}
- Backend Protocol: http
- Backend Server: nginx
- Backend Port: 80
-
SAVE
-
Add Website Backend
- Frontend Host: accounts.${DOMAIN_NAME}
- Backend Protocol: http
- Backend Server: keyrock
- Backend Port: 3000
-
SAVE
-
Add Website Backend
- Frontend Host: apis.${DOMAIN_NAME}
- Backend Protocol: http
- Backend Server: apinf
- Backend Port: 3000
-
SAVE
-
Add Website Backend
- Frontend Host: cadvisor.${DOMAIN_NAME}
- Backend Protocol: http
- Backend Server: cadvisor
- Backend Port: 8085
-
SAVE
-
Add Website Backend
- Frontend Host: charts.${DOMAIN_NAME}
- Backend Protocol: http
- Backend Server: grafana
- Backend Port: 3000
-
SAVE
-
Add Website Backend
- Frontend Host: dashboards.${DOMAIN_NAME}
- Backend Protocol: http
- Backend Server: wirecloudnginx
- Backend Port: 80
-
SAVE
-
Add Website Backend
- Frontend Host: data.${DOMAIN_NAME}
- Backend Protocol: http
- Backend Server: ckan
- Backend Port: 5000
-
SAVE
-
Add Website Backend
- Frontend Host: knowage.${DOMAIN_NAME}
- Backend Protocol: http
- Backend Server: knowage.docker
- Backend Port: 8083
-
SAVE
-
Add Website Backend
- Frontend Host: market.${DOMAIN_NAME}
- Backend Protocol: http
- Backend Server: bae
- Backend Port: 8004
-
SAVE
-
Add Website Backend
- Frontend Host: ngsiproxy.${DOMAIN_NAME}
- Backend Protocol: http
- Backend Server: ngsiproxy
- Backend Port: 3000
-
SAVE
-
Add Website Backend
- Frontend Host: nifi.${DOMAIN_NAME}
- Backend Protocol: http
- Backend Server: nifi
- Backend Port: 8080
-
SAVE
-
Add Website Backend
- Frontend Host: perseo.${DOMAIN_NAME}
- Backend Protocol: http
- Backend Server: perseo-fe
- Backend Port: 9090
-
SAVE
-
Add Website Backend
- Frontend Host: umbrella.${DOMAIN_NAME}
- Backend Protocol: http
- Backend Server: nginx
- Backend Port: 80
-
SAVE
-
Configuration -> Publish changes