Skip to content

Releases: yusing/godoxy

v0.9.8

18 Feb 16:38
Compare
Choose a tag to compare

What's changed

  • bug: Fix CloudflareRealIP not resolving correct remote IP
  • change: CloudflareRealIP middleware will now skip all local IPs when resolving
  • docker: GitHub Workflow update, image name change to ghcr.io/yusing/godoxy with tag latest for stable build and nightly for nightly build (while old one still works)

Full Changelog: 0.9.7...v0.9.8

v0.9.7

17 Feb 18:37
Compare
Choose a tag to compare

What's changed

  • fix: trim spaces and convert alias and host to lowercase to make containers with Capital letters in name work #65

Full Changelog: 0.9.6...0.9.7

v0.9.6

13 Feb 15:51
Compare
Choose a tag to compare

What's changed

  • Add porkbun cert provider (untested, discussion in #64)
    • autocert.provider: porkbun
    • autocert.provider.options
      • api_key
      • secret_api_key

Full Changelog: 0.9.5...0.9.6

v0.9.5

10 Feb 16:57
Compare
Choose a tag to compare

What's changed

  • bug: fixes the issue that wildcard alias proxy.*.port incorrectly throws the "missing proxy port" error.
  • upgrade dependencies that patches some CVEs

v0.9.4-1

06 Feb 17:13
Compare
Choose a tag to compare

What's Changed

  • Support file server route, see Wiki - Key File Server Properties
  • Routes will now fail when route idle watcher / health monitor fail to start
  • Rename bypass in rule.do to pass, but bypass with still work

Fixes

  • bug: Prometheus metrics not working properly with load-balanced routes
  • bug: extra output about loading icon cache on command like ls-config
  • webui: fix long line in Logs page messing up the page
  • webui: now WebUI works with custom GODOXY_API_ADDR. Thanks @Brandawg93, yusing/godoxy-frontend#6
  • code: cleanup route related code
  • bug: fix startup panic when no notification provider is set in v0.9.4-1

Full Changelog: 0.9.3...0.9.4-1

WebUI Changelog

  • 20250207: Fix incorrect description in file server editor dialog
  • 20250208: Fix cookie domain issue, login UI update, add "Docs" page (GoDoxy wiki directly inside WebUI)
  • 20250209:
    • Huge performance boost by significantly reduce re-rendering, from ~80 fps to stable 300+ fps
      {44617520-EF50-4960-978B-5E50C5D3E751}
    • Fix Autocert UI Editor bug

v0.9.3

05 Feb 22:04
Compare
Choose a tag to compare

What's changed

  • Fixed incorrect behavior when using YAML list string with only one element, e.g.
    proxy.foo.middlewares.cidr_whitelist.allow: |
      - 1.2.3.4
    was parsed into - 1.2.3.4, now it correctly parses to 1.2.3.4
  • Updated rules to allow checking if field exists, e.g.
    proxy.foo.rules: |
      name: on search params exists
      on: query searchParams | query searchparams

v0.9.2

03 Feb 23:10
Compare
Choose a tag to compare

What's new in v0.9.2

This release is mainly about bug and error message fixes.

Fixed

  • bug: servers not being restarted after config reload, introduced since 98443be
  • webui: saving file successfully in config editor will now show a toast
  • example: simplified and adjusted example config and docker compose
  • formatting: fix incorrect bullet dot "• " being shown on single line error
  • formatting: make the error message much clear when config reload failed

v0.9.1

01 Feb 19:52
Compare
Choose a tag to compare

What's Changed

  • Support Ntfy notification in #57
  • Moved Prometheus metrics server inside API server under /v1/metrics, instead of using a seperate port
    • GODOXY_PROMETHEUS_ADDR removed
    • GODOXY_PROMETHEUS_ENABLED added, default true
  • Updated Prometheus and Notifications Wiki Page
  • Added timeout per notification to prevent stuck
  • Notification fields is now properly sorted, e.g (Old vs New).
    {13C9D552-D98E-4859-BE89-DFA972A5652D} {4F3F677A-AA75-4324-A7C7-4904EF436F17}

Bug Fixes

  • WebUI no longer create / show empty category group
  • WebUI should now show "No result" when no icon found for keyword, instead of "e is null"

Full Changelog: 0.9...0.9.1

v0.9

30 Jan 16:29
Compare
Choose a tag to compare

GoDoxy v0.9.0 changes

What's New

  • Brand new rewritten WebUI

    • View logs directly from WebUI
    • Edit dashboard app config (e.g. icon, name, category, etc.)
    • Toggle show / hide apps
    • Health bubbles, latency, etc. rich info on dashboard items
    • UI config editor
      {7829FA41-5733-4BAD-8183-CDF093CEC6F2}
      {29A4608C-607F-43C9-A542-15EC6B9D024E}
      {88116730-76F5-44C4-ACDB-11FE1D27963C}
      {83118DF5-9D46-4D00-9CEF-C0F6C8D18C4B}
  • Support selfh.st icons: @selfhst/<reference>.<format> (e.g. @selfhst/adguard-home.webp)

  • GoDoxy server side favicon retreiving and caching

    • deliver smooth dashboard experience by caching favicons
    • correct icon can show without setting homepage.icon by parsing it from app's root path "/", selecting link[rel=icon] from HTML as default icon
  • Thanks polds
    Optionally allow a user to specify a “warm-up” endpoint to start the container, returning a 403 if the endpoint isn’t hit and the container has been stopped.

    This can help prevent bots from starting random containers, or allow health check systems to run some probes. Or potentially lock the start endpoints behind a different authentication mechanism, etc.

    Sample service showing this:

    hello-world:
      image: nginxdemos/hello
      container_name: hello-world
      restart: "no"
      ports:
        - "9100:80"
      labels:
        proxy.aliases: hello-world
        proxy.#1.port: 9100
        proxy.idle_timeout: 45s
        proxy.wake_timeout: 30s
        proxy.stop_method: stop
        proxy.stop_timeout: 10s
        proxy.stop_signal: SIGTERM
        proxy.start_endpoint: "/start"

    Hitting / on this service when the container is down:

    $ curl -sv -X GET -H "Host: hello-world.godoxy.local" http://localhost/
    * Host localhost:80 was resolved.
    * IPv6: ::1
    * IPv4: 127.0.0.1
    *   Trying [::1]:80...
    * Connected to localhost (::1) port 80
    > GET / HTTP/1.1
    > Host: hello-world.godoxy.local
    > User-Agent: curl/8.7.1
    > Accept: */*
    >
    * Request completely sent off
    < HTTP/1.1 403 Forbidden
    < Content-Type: text/plain; charset=utf-8
    < X-Content-Type-Options: nosniff
    < Date: Wed, 08 Jan 2025 02:04:51 GMT
    < Content-Length: 71
    <
    Forbidden: Container can only be started via configured start endpoint
    * Connection #0 to host localhost left intact
    

    Hitting /start when the container is down:

    curl -sv -X GET -H "Host: hello-world.godoxy.local" -H "X-Goproxy-Check-Redirect: skip" http://localhost/start
    * Host localhost:80 was resolved.
    * IPv6: ::1
    * IPv4: 127.0.0.1
    *   Trying [::1]:80...
    * Connected to localhost (::1) port 80
    > GET /start HTTP/1.1
    > Host: hello-world.godoxy.local
    > User-Agent: curl/8.7.1
    > Accept: */*
    > X-Goproxy-Check-Redirect: skip
    >
    * Request completely sent off
    < HTTP/1.1 200 OK
    < Date: Wed, 08 Jan 2025 02:13:39 GMT
    < Content-Length: 0
    <
    * Connection #0 to host localhost left intact
    
  • Thanks polds
    Support WebUI authentication via OIDC by setting these environment variables:

    • GODOXY_OIDC_ISSUER_URL e.g.:
      • Pocket ID: https://pocker-id.yourdomain.com
      • Authentik: https://authentik.yourdomain.com/application/o/<application_slug>/ The ending slash is required
    • GODOXY_OIDC_LOGOUT_URL (if your issuer supports it, e.g.)
      • Authentik: https://authentik.yourdomain.com/application/o/<application_slug>/end-session
    • GODOXY_OIDC_CLIENT_ID
    • GODOXY_OIDC_CLIENT_SECRET
    • GODOXY_OIDC_REDIRECT_URL
    • GODOXY_OIDC_SCOPES (optional)
    • GODOXY_OIDC_ALLOWED_USERS
    • GODOXY_OIDC_ALLOWED_GROUPS (optional)
  • Use OpenID Connect to authenticate GoDoxy's WebUI and all your services (SSO)

    # default
    labels:
      proxy.app.middlewares.oidc:
    
    # with overridden allowed users
    labels:
      proxy.app.middlewares.oidc.allowed_users: user1, user2
    
    # with overridden allowed groups
    labels:
      proxy.app.middlewares.oidc.allowed_groups: group1, group2
    
    # with both overridden (can use inline YAML string for less typing)
    labels:
      proxy.app.middlewares.oidc: |
        allowed_users: [user1, user2]
        allowed_groups: [group1, group2]
  • Caddyfile like rules (experimental)

    proxy.goaccess.rules: |
      - name: default
        do: |
          rewrite / /index.html
          serve /var/www/goaccess
      - name: ws
        on: |
          header Connection Upgrade
          header Upgrade websocket
        do: bypass # do nothing, pass to reverse proxy
    
    proxy.app.rules: |
      - name: default
        do: bypass # do nothing, pass to reverse proxy
      - name: block POST and PUT
        on: method POST | method PUT
        do: error 403 Forbidden

Behavior changes

  • config reload will now cause a server full restart (i.e. proxy, api, prometheus, etc), eliminating some incorrect behaviors

  • drop support of multiline string list without hyphen - prefix, e.g.

    # old
    proxy.app.middlewares.request.hide_headers: |
      X-Header1
      X-Header2
    
    # new
    proxy.app.middlewares.request.hide_headers: |
      - X-Header1
      - X-Header2
  • autocert now supports hot-reload

  • middleware compose now supports cross-referencing, e.g.

    foo:
      - use: RedirectHTTP
    bar: # in the same file or different file
      - use: foo@file
  • changed default ResponseHeaderTimeout to 60s

  • allow customizing ResponseHeaderTimeout for each app, e.g.

    proxy.<app>.response_header_timeout: 3m

Bug fixes

  • cert renewal failure no longer causes renew schdueler to stuck forever
  • access log writes to closed file after config reload

What's Changed

  • feat: Add optional StartEndpoint support for idle watcher by @polds in #34
  • feat: Add optional OIDC support by @yusing in #39
  • fix: allow oauth_state token to be cross-domain by @polds in #40
  • Feat/auto schemas by @yusing in #48
  • Feat/OIDC middleware by @yusing in #50
  • feat: add a add_prefix middleware by @polds in #51

Full Changelog: 0.8.1...0.9

v0.8.1

07 Jan 05:11
Compare
Choose a tag to compare

GoDoxy v0.8.1

Changes

  • breaking API update, please update GoDoxy together with WebUI

  • WebUI Config Editor update

    • UI and theme update
    • Linting support
      {A9F5A997-D44A-4259-8B82-71F90ECFF755}
  • healtcheck: notification no longer includes latency field in "Service went down" message

  • json schema updates

  • request and response middleware no longer canonicalize header key (i.e. X-Real-IP -> X-Real-Ip)

  • removed ratelimter middleware on api, one should set it on godoxy-frontend's docker labels

Fixes

  • bug: udp stream not stopping on error
  • panic: route without content in "include files" causes crash
  • panic: edge case that RefCounter closes it channel twice