This repository contains Docker images for various miscellaneous tools and applications. Each image is built from a corresponding Dockerfile and can be used for specific purposes like file organization, automation, etc.
Source URL: https://github.com/caddyserver/caddy
Description: A containerized version of Caddy, a powerful, enterprise-ready, open source web server with automatic HTTPS written in Go.
Changes vs. Vanilla Version:
- Built with additional modules: Layer 4 (TCP/UDP) support, Cloudflare DNS provider, authentication providers, GeoIP2, CrowdSec bouncer, Coraza WAF, and more.
- Conditional build: external (WAN) builds include GeoIP2, CrowdSec, and Coraza modules; internal (LAN) builds exclude them.
- Includes bash shell with custom profile.
- Metadata labels for build information.
- docker-compose.yml: Docker Compose configuration to run the Caddy container. Uses host networking, mounts Caddyfile and config volume. Requires environment variables for Cloudflare API token and target domain.
Source URL: https://github.com/jpillora/docker-dnsmasq
Description: A containerized version of dnsmasq, a lightweight DHCP and caching DNS server.
Changes vs. Vanilla Version:
- Includes webproc for web-based configuration interface.
- Pre-configured with example dnsmasq.conf for Cloudflare DNS servers.
- Supports multiple architectures: amd64, arm64, armv7, armv6.
- Includes bash shell with custom profile.
- Exposes ports for DNS (53), DHCP (67/udp, 68/udp), and webproc (8080).
- dnsmasq.conf: Configuration file for dnsmasq. Includes logging, upstream DNS servers (Cloudflare), and example domain-specific server and address mappings.
Source URL: https://github.com/tfeldmann/organize
Description: A containerized version of the organize-tool, a Python-based file organizer that can automatically sort, rename, and manage files based on rules.
Changes vs. Vanilla Version:
- Uses supercronic instead of cron for reliable scheduling.
- amd64 and arm64 only (supercronic does not publish armv7/armv6 binaries).
- PUID/PGID set at runtime via environment variables (LSIO-style); image defaults 911:911.
- Custom entrypoint validates config, maps UID/GID, prints the active crontab, and starts supercronic.
- Scheduled runs go through
run-organize.shsodocker logsshows start/end and organize output. - Healthcheck via heartbeat file under
/app/state.
programs/organize-tool/
├── config/
│ ├── crontab.default # Baked-in schedule (copied to /app/crontab.default)
│ └── organize.yaml.example # Example rules config
├── scripts_global/ # Built-in scripts (shipped with image)
│ ├── generic_webhook_sender.sh
│ └── run-organize.sh # Logged wrapper for scheduled organize runs
├── scripts_user/ # User-provided scripts (bind-mount)
├── docker-compose.yml # Run configuration
└── entrypoint.sh # Container entrypoint
/watched— root directory for files to organize. Create subdirectories for categories (e.g.,/watched/downloads,/watched/media)./app/scripts_global— built-in scripts shipped with the image./app/scripts_user— user-provided scripts, bind-mounted fromscripts_user/./app/config/organize.yaml— your rules file (mount a directory at/app/config)./app/config/crontab— optional override schedule; if missing,/app/crontab.defaultis used./app/crontab.default— built-in schedule (outside/app/config/so a config mount cannot hide it)./app/state/heartbeat— touched after each successful run (healthcheck).
- Put
organize.yaml(and optionallycrontab) in a host config directory. - Point compose at that directory:
.../config:/app/config:ro, plus your/watchedpath andorganize_statevolume. - Set
PUID/PGIDif needed for host volume ownership; setWEBHOOK_*if you use webhooks. - Run:
docker compose up -d - Logs:
docker logs -f organize-watcher(entrypoint dumps the crontab; each run is prefixed[run-organize]/[organize]). - Shell:
docker exec -u appuser -it organize-watcher bash(use-itso.bashrcaliases load; image entrypoint runs as root only for UID mapping). - Optional:
SUPERCRONIC_DEBUG=1for extra supercronic schedule logging.
The caddy-monitor.yml workflow runs weekly (Monday at 2:30 AM UTC) and on manual dispatch. It:
- Checks the GitHub Releases API for the latest Caddy version.
- Checks Docker Hub for existing LAN and WAN images.
- If new: builds and pushes both variants (
caddy-<version>-lan,caddy-<version>-wan). - If already up to date: exits cleanly.
- Clone this repository.
- Choose a Dockerfile (e.g.,
Dockerfile.caddy,Dockerfile.dnsmasq, orDockerfile.organize-tool). - Build the image using the GitHub/Gitea/Forgejo Actions workflow or manually:
docker build -f Dockerfile.caddy -t your-tag . - Run the container as per the examples in
programs/caddy/docker-compose.yml,programs/dnsmasq/, orprograms/organize-tool/docker-compose.yml.