#!/bin/bash # # Nginx Service PATH=$HOME/.docker/cli-plugins:/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin get_appvars config_nginx() { echo -ne "\n* Configuring /federated/apps/nginx container.." if [ ! -d "/federated/apps/nginx" ]; then mkdir -p /federated/apps/nginx/data/etc/nginx/conf.d fi cat > /federated/apps/nginx/docker-compose.yml <<EOF services: nginx: image: nginx:latest container_name: nginx hostname: nginx.$DOMAIN restart: always networks: core: ipv4_address: 192.168.0.40 volumes: - ./data/etc/nginx/conf.d/matrix.conf:/etc/nginx/conf.d/matrix.conf labels: - "traefik.enable=true" - "traefik.http.routers.nginx.rule=Host(\`matrix.$DOMAIN\`)" - "traefik.http.routers.nginx.entrypoints=websecure" - "traefik.http.routers.nginx.tls.certresolver=letsencrypt" networks: core: external: true EOF cat > /federated/apps/nginx/data/etc/nginx/conf.d/matrix.conf <<EOF server { listen 80 default_server; server_name matrix.$DOMAIN; location / { proxy_pass http://192.168.0.19:8008; proxy_set_header X-Forwarded-For \$remote_addr; client_max_body_size 128m; } location /_matrix { proxy_pass http://192.168.0.19:8008; proxy_set_header X-Forwarded-For \$remote_addr; client_max_body_size 128m; } location /.well-known/matrix/server { access_log off; add_header Access-Control-Allow-Origin *; default_type application/json; return 200 '{"m.server": "matrix.$DOMAIN:443"}'; } location /.well-known/matrix/client { access_log off; add_header Access-Control-Allow-Origin *; default_type application/json; return 200 '{"m.homeserver": {"base_url": "https://matrix.$DOMAIN"}}'; } } EOF echo -ne "done." } start_nginx() { # Start service with command to make sure it's up before proceeding start_service "nginx" "nc -z 192.168.0.40 80 &> /dev/null" "7" echo -ne "done." }