From 824911eda45b07ac90ce4b4c9b89d3eede94e722 Mon Sep 17 00:00:00 2001 From: Andrei Jiroh Halili Date: Fri, 11 Oct 2024 09:14:51 +0800 Subject: [PATCH] chore(docker): add base Caddyfile Signed-off-by: Andrei Jiroh Halili --- docker/localdev/.env.localdev | 16 +++++- docker/localdev/.gitignore | 1 + docker/localdev/caddy/Caddyfile | 50 +++++++++++++++++++ docker/localdev/docker-compose.yml | 12 ++++- .../stellapent-cier.docker-compose.yml | 38 ++++++++++++++ 5 files changed, 114 insertions(+), 3 deletions(-) create mode 100644 docker/localdev/.gitignore create mode 100644 docker/localdev/caddy/Caddyfile create mode 100644 docker/localdev/stellapent-cier.docker-compose.yml diff --git a/docker/localdev/.env.localdev b/docker/localdev/.env.localdev index b2a752d..3cadbea 100644 --- a/docker/localdev/.env.localdev +++ b/docker/localdev/.env.localdev @@ -24,5 +24,19 @@ POSTGRES_PASSWORD="encrypted:BPar1VivqYOQwuF6KwFbITkn5fkSZTzRNU7oQaSVKydyL+wBU1q POSTGRES_DATABASE=ajhalili2006 # Tailscale -TAILSCALE_AUTHKEY="encrypted:BDb/zMwVDtlwpXlb3TnHBd6SrNpt9Y2uqRqgZe+zQGnXZwniiiNfnKaHzBOFbrIDibydsrqfEB9YKz7tQ3d2N2jy6GpyucA8O6mofMMlPidWbX8mSaiI1Og79O5FoO85IHXQsw1nk7+NrH+q7MxOWt6r28uhSkYC67KkUI0vtQLV5rsAIHblkQvJcrT0t1F9LOS7bV6Kll/UqAM6un9sYIY=" +TAILSCALE_AUTHKEY="encrypted:BJcRD+FCosuxqPXSchQo7J419QD0rzuFGne2E5Pdb3S9kZFdFe8QA2WY6mB9CrZCNDJO1znZ1IGhD2GeWlg3SMJQEpDi/y4hZBHfLO4SyFr5VTjOwXgJqyjTO1Q6P6Tea7RexTq5Hovg1T8oJHsdM/Bd5rLnwxKTqFqXmepH0r9IFe8RT4EFT3qc7t++hIv0J+0h11dKxFBXG0Nfjg5v9aX0hx+A0lfDsPgtuKLBGiBH/Gsu0mfsjugliLLiM4kmmTKFEg==" TAILSCALE_DATADIR_MOUNTED=1 + +# Caddy +STORJ_DCS_GATEWAY_ACCESS_ID="encrypted:BCQ9fike/Z/JvIrx6QerkF8xyaN/lli21hWWvb9UBrrRjkCOQWzHnCiBnhDA5soxwDyusNiPqcavDRQ8AopIWNytWEWq1/nuH0KND+Tg+GcFvBRYs2Q11RRC+OL/o6QPGnqcc1yeUNi1ARk1k3hLGndsg31jx/pqXC8aw90=" +STORJ_DCS_GATEWAY_ACCESS_SECRET="encrypted:BBCXTlEZLKsGjazS8jirw7LScqjxZZ1oLUyCk9G1TsCeKyOyru1P3RiXv0ikcqAJbzVjFqm+bfMAKc2+DZ+6nJb1SS4o+3iRpBJL4F2z8ugHrDbaC+dHPPzF6okoUl0BPMphctcPVBGZR1QDtuawoWynW4hy8t7tsklkJRDsbU1T/57XCgvtnxspfaqUD15VLTR3bv40" +CLOUDFLARE_API_TOKEN="encrypted:BPOr2EG1cZRwJiPNKcQK8CTsDwewcjQEBeXfQfa5Y/WFSJrfNliaOVoE5aCNak1YltccS24Ai26S+3sgPbRZbI7ASRwmY4bRLNwLu0p64HTDc6TYmm0W3jB791p1wXilQZ1xhIlYBzvPQvDMnIpCXVC+emEYsrq7UfPGU7qEEZDN62qaRLQGxHo=" + +# Keycloak +KC_DB=postgres +KC_DB_URL_HOST=postgres +KC_DB_URL_PORT=5432 +KC_DB_URL_DATABASE=keycloak_localdev +KC_DB_USERNAME=$POSTGRES_USER +KC_DB_PASSWORD=$POSTGRES_PASSWORD +KC_DB_SCHEMA=public \ No newline at end of file diff --git a/docker/localdev/.gitignore b/docker/localdev/.gitignore new file mode 100644 index 0000000..2eea525 --- /dev/null +++ b/docker/localdev/.gitignore @@ -0,0 +1 @@ +.env \ No newline at end of file diff --git a/docker/localdev/caddy/Caddyfile b/docker/localdev/caddy/Caddyfile new file mode 100644 index 0000000..f1a31ee --- /dev/null +++ b/docker/localdev/caddy/Caddyfile @@ -0,0 +1,50 @@ +{ + admin :2019 + email ajhalili2006@tuta.io + + # use Storj DCS for storing SSL keys via S3 API + storage s3 { + host "gateway.storjshare.io" + bucket "docker-mounts" + access_id {$STORJ_DCS_GATEWAY_ACCESS_ID} + secret_key {$STORJ_DCS_GATEWAY_ACCESS_SECRET} + prefix "caddy/localdev" + } +} + +{$TAILSCALE_HOSTNAME}.{$TAILSCALE_TLS_SUBDOMAIN}.ts.net { + respond "Hello world!" + handle_errors { + respond "{err.status_code} {err.status_text}" + } +} + +*.localdev.andreijiroh.dev localdev.andreijiroh.dev { + tls { + dns cloudflare {$CLOUDFLARE_API_TOKEN} + } + respond "Hello world!" + handle_errors { + respond "{err.status_code} {err.status_text}" + } + + @keycloak host sso.localdev.andreijiroh.dev + handle @keycloak { + reverse_proxy keycloak-lab:8080 + } +} + +*.stellapent.tailnet.andreijiroh.dev stellapent.tailnet.andreijiroh.dev { + tls { + dns cloudflare {$CLOUDFLARE_API_TOKEN} + } + respond "Hello world!" + handle_errors { + respond "{err.status_code} {err.status_text}" + } + + @keycloak host sso.stellapent.tailnet.andreijiroh.dev + handle @keycloak { + reverse_proxy keycloak-lab:8080 + } +} diff --git a/docker/localdev/docker-compose.yml b/docker/localdev/docker-compose.yml index c9466ba..73dc9e6 100644 --- a/docker/localdev/docker-compose.yml +++ b/docker/localdev/docker-compose.yml @@ -7,6 +7,7 @@ services: image: ghcr.io/andreijiroh-dev/docker-images/caddy volumes: - ./caddy:/etc/caddy + - /run/tailscale/tailscaled.sock:/run/tailscale/tailscaled.sock - caddy:/data/caddy cap_add: - NET_ADMIN @@ -14,11 +15,15 @@ services: ports: - 80:80 - 443:443 - - 2019:2019 + - 127.0.0.1:2019:2019 networks: - tailscale - proxyparty-router - command: caddy run --environ --resume + command: caddy run --environ --resume --watch --config /etc/caddy/Caddyfile + restart: unless-stopped + env_file: + - .env + - .env.localdev.decrypted bastion: build: @@ -26,10 +31,12 @@ services: volumes: # TODO: Update this path if you're rootless - /var/run/docker.sock:/var/run/docker.sock + - ../..:/var/lib/infraops env_file: - .env.localdev.decrypted networks: - tailscale + restart: unless-stopped redis: image: bitnami/redis:7.4 @@ -41,6 +48,7 @@ services: - db-redis:/bitnami/redis/data networks: - tailscale + restart: unless-stopped mysql: image: mysql:8.0 diff --git a/docker/localdev/stellapent-cier.docker-compose.yml b/docker/localdev/stellapent-cier.docker-compose.yml new file mode 100644 index 0000000..f8da15e --- /dev/null +++ b/docker/localdev/stellapent-cier.docker-compose.yml @@ -0,0 +1,38 @@ +services: + keycloak-lab: + image: quay.io/phasetwo/phasetwo-keycloak + restart: unless-stopped + networks: + - proxyparty-router + - tailscale + entrypoint: [ + "/opt/keycloak/bin/kc.sh", + "start", + "--spi-email-template-provider=freemarker-plus-mustache", + "--spi-email-template-freemarker-plus-mustache-enabled=true", + "--spi-theme-cache-themes=false" + ] + env_file: + - .env.localdev.decrypted + environment: + - KEYCLOAK_USER=ajhalili2006 + - KEYCLOAK_PASSWORD=changeThisKeyToSomethingElse + - KEYCLOAK_ADMIN=localdevops + - KEYCLOAK_ADMIN_PASSWORD=admin + - KC_HTTP_ENABLED=true + - KC_PROXY=edge + - KC_LOG_LEVEL=INFO + - PROXY_ADDRESS_FORWARDING=true + - KC_HOSTNAME_STRICT=false + - KC_HOSTNAME_URL=https://sso.stellapent.tailnet.andreijiroh.dev + - KC_HOSTNAME_ADMIN_URL=https://sso.stellapent.tailnet.andreijiroh.dev + +networks: + proxyparty-router: + enable_ipv6: true + name: proxyparty-docker + external: true + tailscale: + enable_ipv6: true + name: tsnet-router + external: true \ No newline at end of file -- 2.51.2