Skip to content
Back to site

Install with Docker

Both methods run the same docker-compose.yml. The installer also generates secrets and checks the configuration before starting anything.

  1. Run the installer

    Terminal window
    curl -fsSL https://railhook.io/install.sh | bash

    It checks Docker, Compose, memory, disk and the port, then writes ~/railhook: a docker-compose.yml pinned to the latest release, a .env with generated secrets, and a railhook helper script. It starts the stack and waits for the API. The first start runs the migrations, so it can take a few minutes.

  2. Open the dashboard

    Go to http://localhost (or http://<server-ip>; add :<port> if you installed with --port) and register. With no mail server configured, the account is active immediately.

  3. Back up .env

    WEBHOOK_ENCRYPTION_KEY and WEBHOOK_ENCRYPTION_SALT in it encrypt every endpoint secret in the database. A database backup restored without this file gives you rows nothing can read.

Pass options through the pipe with bash -s --:

Terminal window
curl -fsSL https://railhook.io/install.sh | bash -s -- --dir /opt/railhook --port 8080
Option Effect
--dir <path> Where to install. Default ~/railhook
--version <tag> Release to pin, v2.12.0 or newer. Default: the latest release
--port <port> The one published port. Default 80, or 8080 with --behind-proxy
--domain <host> Serve on this domain over HTTPS. See Domain and HTTPS
--behind-proxy With --domain: your own reverse proxy terminates TLS, and the dashboard listens on 127.0.0.1 for it
--email <address> Where Let’s Encrypt sends expiry warnings
--no-start Write the files, start nothing
--admin-email <address> Platform admins, comma-separated. Also works with --refresh
--yes Install into a non-empty directory. Without it the installer refuses
--check Run the system and configuration checks only
--refresh Rewrite the ./railhook helper and the Caddyfile of an existing installation
--uninstall Stop the stack and remove the containers. Data volumes are kept
--purge Uninstall and delete the data volumes too

Run these from the install directory:

Command Does
./railhook status Lists the containers and their health
./railhook logs [service] Follows logs, for example ./railhook logs api
./railhook start / stop / restart Starts, stops or restarts the stack
./railhook upgrade [version] Backs up, then upgrades. See Upgrade and backup
./railhook backup Writes a database dump into the directory
./railhook settings < file Merges NAME=value lines into .env. Secrets and image tags are refused
./railhook doctor Re-runs every check against the files on disk

Any other argument goes to Docker Compose, so ./railhook ps or ./railhook up -d work.