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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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