No description
  • Shell 61.7%
  • Dockerfile 38.3%
Find a file
Ryan Grippeling 9347eb9c2e ci: move mkcert image build to Forgejo Actions
Manual-dispatch-only DockerHub build, moved .github -> .forgejo:
runs-on docker (dind sidecar provides the daemon; privileged, so
setup-qemu can install binfmt for the arm64 half).

DOCKER_USERNAME/DOCKER_TOKEN are not yet provisioned as Forgejo org
secrets (VIK-316) — nothing runs until dispatched, so this is inert
until then. The GitHub original targeted self-hosted runners that no
longer exist and could not execute at all.

VIK-318
2026-07-18 14:34:48 +02:00
.forgejo/workflows ci: move mkcert image build to Forgejo Actions 2026-07-18 14:34:48 +02:00
docs/mermaid Added jeager and otel-collector, and some docs. Moved some stuff around 2024-06-16 12:23:13 +02:00
ops/docker fix(docker): Remove otel collector, and use the one in monitoring-platform 2025-03-03 17:15:20 +01:00
.gitignore Moved some stuff around 2024-06-15 18:07:29 +02:00
.htpasswd Cleanup and added .htpasswd instead of using .env 2024-06-09 22:54:14 +02:00
catalog-info.yaml Fixed github slug of dnsmask catalog-info.yaml 2024-11-17 21:15:13 +01:00
docker-compose.yml fix: webgrip 2025-03-03 21:29:33 +01:00
readme.md Added linux instructions 2025-06-26 10:25:10 +02:00
renovate.json chore: add renovate.json to disable changelog fetching 2026-05-20 05:02:17 +00:00

How it works

docker-compose runs the services traefik routes the traffic to the correct service within the docker network dnsmasq makes sure certain domains are routed to localhost mkcert generates a root CA and installs it in ~/.config/mkcert on YOUR local machine (!!!) mkcert generates a certificate for the domains that are passed as arguments to the entrypoint.sh script entrypoint.sh builds a configuration file with the entries of the certificates that it just generated in ssl.yml traefik watches for changes in ssl.yml and reloads the certificates automatically

Where it runs

https://dashboard.traefik.test

How to run

echo $(htpasswd -nB admin) > .htpasswd 
docker-compose up

How to trust your generated root certificate on macOS

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/.config/mkcert/rootCA.pem

How to trust your generated root certificate on Windows

# Run as administrator
certutil -addstore -f "ROOT" ${HOME}/.config/mkcert/rootCA.pem

How to trust your generated root certificate on Linux

cp ~/.config/mkcert/rootCA.pem /usr/local/share/ca-certificates/rootCA.crt
sudo update-ca-certificates

You may need to restart your browser (a few times)

How to enable my docker-compose container to be sent through traefik-local-development?

services:
  YOUR-SERVICE:
    container_name: YOUR-SERVICE-NAME
    # etc... 
    labels:
    - "traefik.enable=true"
    - "traefik.http.middlewares.traefik-https-redirect.redirectscheme.scheme=https"
    - "traefik.http.middlewares.sslheaders.headers.customrequestheaders.X-Forwarded-Proto=https"
    - "traefik.http.routers.YOUR-SERVICE.entrypoints=http"
    - "traefik.http.routers.YOUR-SERVICE.rule=Host(`YOUR-DOMAIN.test`)"
    - "traefik.http.routers.YOUR-SERVICE.middlewares=traefik-https-redirect"
    - "traefik.http.routers.YOUR-SERVICE-secure.entrypoints=https"
    - "traefik.http.routers.YOUR-SERVICE-secure.rule=Host(`YOUR-DOMAIN.test`)"
    - "traefik.http.routers.YOUR-SERVICE-secure.tls=true"
    - "traefik.http.routers.YOUR-SERVICE-secure.tls.domains[0].main=YOUR-DOMAIN.test"
    - "traefik.http.routers.YOUR-SERVICE-secure.tls.domains[0].sans=*.YOUR-DOMAIN.test"
    - "traefik.http.routers.YOUR-SERVICE-secure.service=YOUR-SERVICE"
    - "traefik.http.services.YOUR-SERVICE.loadbalancer.server.scheme=https"
    - "traefik.http.services.YOUR-SERVICE.loadbalancer.server.port=YOUR-PORT"

How to add certificates for new domains

The preferred way it to add the following in the docker-compose.yml file of your project:

services:
    # ...
    YOUR-PROJECT-mkcert:
      container_name: YOUR-PROJECT-mkcert
      image: webgrip/traefik-local-development-mkcert:latest
      pull_policy: always
      volumes:
        - ~/.config/mkcert:/root/.local/share/mkcert:ro
        - certificate-data:/certificate-data:rw
      entrypoint: [ "/app/entrypoint.sh", "YOURDOMAIN.test" ]
    # ...

Don't forget to add the volume and the external network to the docker-compose.yml file of your project:

volumes:
  certificate-data:
    external: true

networks:
  default:
    external: true
    name: webgrip