Skip to content

Cloudron package for remote Docker logs by Dozzle with SSO config UI and SSH/TCP remotes

License

Notifications You must be signed in to change notification settings

jbjardine/dozzle-remote-cloudron

Repository files navigation

Remote Log Proxy for Cloudron

Release GHCR Cloudron Go Dozzle License: MIT


If this project is useful to you, you can support its development here:

Support

Overview

Remote Log Proxy is a Cloudron-ready package that exposes a secure, SSO‑protected configuration UI for connecting a log viewer to a remote Docker Engine. It supports TCP or SSH remotes and uses a lightweight proxy so you don’t need shell access to the Cloudron host.

Highlights

  • Cloudron‑ready package with built‑in /config UI
  • SSH tunnel support for ssh://user@host (no SSH support needed in the viewer)
  • Healthcheck wired to the config UI
  • Secrets stored in Cloudron local storage

How It Works

A tiny Go proxy runs on port 8080 and reverse-proxies Dozzle on 8081.

  • TCP remote: Dozzle connects directly to tcp://host:port.
  • SSH remote: the startup script opens a local SSH tunnel to the remote socket and Dozzle connects to tcp://127.0.0.1:2375.

Quick Start

  1. Install the app on Cloudron
  2. Open the config page:
https://<your-app-domain>/config
  1. Set Remote Docker Host to one of:
tcp://10.0.0.10:2375
ssh://user@10.0.0.10
  1. (SSH only) Paste your private key
  2. Optional: set Display Name for a friendly label
  3. Click Save & Apply

Configuration Details

For SSH:

  • Paste a private key (OpenSSH format) in the UI.
  • The key is stored in /app/data/.ssh/id_rsa inside the container.
  • Click Save & Apply to reload without restarting the Cloudron app.

Security Notes

  • TCP: Only use tcp:// on trusted networks.
  • SSH: The remote host must expose /var/run/docker.sock (default on most Docker installs).
  • SSH keys are stored in Cloudron local storage (/app/data/.ssh).

The SSH tunnel forwards:

127.0.0.1:2375 -> /var/run/docker.sock

Repository Structure

.
├── CloudronManifest.json
├── Dockerfile
├── start.sh
├── config-proxy
│   ├── go.mod
│   └── main.go
└── README.md

Build and Deploy (Cloudron)

Install the Cloudron CLI:

npm install -g cloudron

Log in to your Cloudron:

cloudron login my.cloudron.example

Build the image:

cloudron build

Then install or update:

cloudron install --image <image-tag> --location dozzle.example.com
# or
cloudron update --app dozzle.example.com --image <image-tag>

Release Tarball

Releases are created manually (workflow dispatch) and attach a tarball of the Cloudron package.

From GitHub Actions, run the release workflow and set the tag (e.g. v0.1.0). The workflow creates a draft release with the tarball. The tarball is the Cloudron package ready to download and install.

GHCR Images

When a release is published, a GHCR image is built and pushed:

ghcr.io/jbjardine/dozzle-remote-proxy:<tag>
ghcr.io/jbjardine/dozzle-remote-proxy:latest

You can install directly from GHCR with Cloudron:

cloudron install --image ghcr.io/jbjardine/dozzle-remote-proxy:<tag> --location <app-domain>

Contributing

PRs are welcome. Keep changes minimal and documented. Run builds via Cloudron CLI when possible.

License

MIT. See LICENSE.

Credits

Built on top of Dozzle.