Skip to content

One-line installer support: macOS (Docker Desktop) #82

Description

@JuansesDev

Goal

Extend scripts/setup.sh so the one-line install path works on macOS (Intel + Apple Silicon) for developers running SendDock locally for evaluation, dev or testing. Today the script's first preflight check (uname -s == Linux) hard-fails on Darwin.

Tracking the broader multi-distro effort under #79. This issue covers macOS specifically — it's a distinct work item from the Linux distros because the package manager, the Docker install path, and the service-supervision model are all different.

Why macOS

The fastest path for a developer to try SendDock is to run it locally. macOS is the dominant dev platform among indie hackers + small SaaS teams, exactly the audience SendDock is positioned for. Today's flow forces them to either spin up a Linux VM or assemble the manual Docker Compose path by hand — both of which they're likely to skip in favor of just opening the Cloud signup instead.

This is an evaluation install, not a production one. The doc should explicitly say so — broadcasts won't work from a residential ISP (port 25/465/587 blocked) and there's no realistic story for PUBLIC_URL on a laptop. Mailpit is the right SMTP target for the local-test path.

Scope

  • Detect Darwin (uname -s == Darwin) and branch the install logic.
  • Check that Docker Desktop is installed and the daemon is reachable. If not, halt with a clear pointer to https://www.docker.com/products/docker-desktop rather than trying to install it ourselves (Docker Desktop has a GUI installer, EULA, and is licensed differently — scripting around all that is brittle).
    • Optional follow-up: also detect OrbStack / Colima / Rancher Desktop as valid Docker daemons.
  • Skip the Linux-only steps:
    • No systemctl (launchd, but Docker Desktop manages its own service).
    • No apt-get / pacmanbrew install curl openssl if missing.
    • No /opt/senddock default (/Applications is wrong too; default to ~/senddock).
  • Default PUBLIC_URL handling: hard-error explicitly saying "macOS installs are for local evaluation — set SENDDOCK_PUBLIC_URL=http://localhost:8080 and SENDDOCK_ALLOW_LOCALHOST=yes to proceed", or interactively confirm "this is a local-only install, broadcasts won't work".
  • Point the user at the Mailpit profile in the compose file for local SMTP testing.

Out of scope

  • Production self-hosting on macOS Server. Not a real audience and the SMTP story makes it pointless.
  • Native (non-Docker) install on macOS. The whole appeal is the Docker-managed stack — recreating it via Homebrew formulas isn't worth the maintenance burden.

Open questions

  • Should the installer also auto-launch Docker Desktop if it's installed but not running? (open -a Docker works but waiting for the daemon adds another loop.)
  • Should we ship a separate install-mac.sh for clarity, or branch inside the existing setup.sh? Branching keeps one canonical file and one URL to remember, but makes the script meaningfully more complex.

Acceptance

  • Running curl -fsSL https://senddock.dev/install.sh | bash on a fresh macOS install with Docker Desktop already installed brings up SendDock at http://localhost:8080.
  • Without Docker Desktop, the script halts with a clear, actionable error pointing at the download.
  • Docs explicitly position the macOS install as local-evaluation-only.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions