SWAG (PI)

Einführung

Erstellen eines Docker Containers für Secure-Webserver-and-Gateway. 

Voraussetzung

  • Raspberry Pi mit Raspbian OS
  • Docker
  • Docker-Compose

Container erstellen

Docker-Compose File:

version: "2"
services:
  swag:
    image: linuxserver/swag
    container_name: swag
    cap_add:
      - NET_ADMIN
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Berlin
      - URL=duckdns.org
      - SUBDOMAINS=sub1,sub2
      - VALIDATION=http
      - EMAIL=<name@tbd>
      - DHLEVEL=2048
      - ONLY_SUBDOMAINS=true
    volumes:
      - /sharefolder/AppDataSD/swag:/config
    ports:
      - 450:443
      - 90:80
    restart: unless-stopped
networks:
  default:
    external:
      name: my-net 

Erstelle Docker Network:

docker network create my-net

Reverse-Proxy Configs, die nach  /config/nginx/proxy-confs  kopiert werden müssen (z.B. wordpress.subdomain.conf):

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    #listen 80;
    #listen [::]:80;
    server_name <subdomain>.*;
    include /config/nginx/ssl.conf;
    #client_max_body_size 0;
    location / {
        include /config/nginx/proxy.conf;
        resolver 127.0.0.11 valid=30s;
        #proxy_max_temp_file_size 2048m;
        proxy_pass  http://192.168.xx.xx:<wordpress-port>;
    }
} 

oder nextcloud.subdomain.conf:

# make sure that your dns has a cname set for nextcloud
# assuming this container is called "letsencrypt", edit your nextcloud container's config
# located at /config/www/nextcloud/config/config.php and add the following lines before the ");":
#  'trusted_proxies' => ['letsencrypt'],
#  'overwrite.cli.url' => 'https://nextcloud.your-domain.com/',
#  'overwritehost' => 'nextcloud.your-domain.com',
#  'overwriteprotocol' => 'https',
#
# Also don't forget to add your domain name to the trusted domains array. It should look somewhat like this:
#  array (
#    0 => '192.168.0.1:444', # This line may look different on your setup, don't modify it.
#    1 => 'nextcloud.your-domain.com',
#  ),

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name <subdomain>.*;

    include /config/nginx/ssl.conf;

    client_max_body_size 0;

    location / {
        include /config/nginx/proxy.conf;
        resolver 127.0.0.11 valid=30s;
        set $upstream_nextcloud nextcloud;
        #proxy_max_temp_file_size 1024m;
        #proxy_pass https://$upstream_nextcloud:447;
        proxy_pass https://192.168.xx.xx:<nextcloud-port>;
    }
} 

Installationsskript:

#!/bin/sh
docker rm -f swag
docker-compose -f swag_docker-compose.yml up -d
cp swag_nginx_proxy-confs/* /sharefolder/AppDataSD/swag/nginx/proxy-confs/ 
Container starten:

./installationsskript.sh