1 Commits
Author SHA1 Message Date
Ferrule release 6787d3fa98 Ferrule dev 2026-10-17 20:47:29 +00:00
4 changed files with 23 additions and 12 deletions

No files matched your search

+15 -8
View File
@@ -11,7 +11,7 @@ with a webhook.
on your Docker host. Portainer reads only the compose file from the
repository.
- Portainer must reach
`https://git.uglyhousesneedlove.com/steve/ferrule-deploy`. It is public,
`https://github.com/ferrulehq/ferrule-deploy`. It is public,
so no account or token is needed.
- The Docker host needs outbound internet to pull the Ferrule and
VictoriaMetrics images. A licensed install also fetches
@@ -50,9 +50,9 @@ console.
## Step 2 — The image
The image is public: Portainer pulls it with no registry login. It holds
the built binary only, never the source. Before launch it is published at
`git.uglyhousesneedlove.com/steve/ferrule`; at launch it moves to Docker Hub,
and `FERRULE_IMAGE` is the one line that changes.
the built binary only, never the source. It is published on GitHub's
container registry, `ghcr.io/ferrulehq/ferrule`. If it ever moves,
`FERRULE_IMAGE` is the one line that changes.
---
@@ -65,7 +65,7 @@ and `FERRULE_IMAGE` is the one line that changes.
3. Choose **Repository** as the build method.
4. Fill in:
- **Repository URL** —
`https://git.uglyhousesneedlove.com/steve/ferrule-deploy`
`https://github.com/ferrulehq/ferrule-deploy`
- **Repository reference** — `refs/heads/main`
- **Compose path** — `docker-compose.yml`
- **Authentication** — off; the repository is public. Turn it on only
@@ -116,7 +116,7 @@ Add these only if you need them:
| Name | Default | When to change it |
|---|---|---|
| `FERRULE_VERSION` | **required** | the release to run, such as `0.9.0`; `qa` for what is under test. Never `latest` |
| `FERRULE_IMAGE` | `git.uglyhousesneedlove.com/steve/ferrule` | where the image is published; change it only if told to |
| `FERRULE_IMAGE` | `ghcr.io/ferrulehq/ferrule` | where the image is published; change it only if told to |
| `WEB_PORT` | `8090` | something else already has 8090 |
| `UNIFI_ENABLED` | `true` | `false` to watch only hypervisors and storage, or to try this stack beside an existing one without polling the controller twice |
| `SOURCE_1` … `SOURCE_8` | empty | a hypervisor or storage system per slot, see below |
@@ -696,13 +696,20 @@ profile so neither starts unless asked:
COMPOSE_PROFILES=gotify,igotify # or just igotify, beside an existing Gotify
GOTIFY_ADMIN_USER=admin # the default
GOTIFY_ADMIN_PASSWORD=<choose one> # unset, Gotify's admin password is "admin"
GOTIFY_ALERTS_PASSWORD=<choose one> # the shared account everyone signs in as
GOTIFY_URL=http://gotify
GOTIFY_PORT=8091 # host ports, for a tunnel or proxy to use
IGOTIFY_PORT=8092
```
Deploy once, open Gotify, create an application, put its token in
`GOTIFY_TOKEN`, and update the stack. iGotify relays to the iPhone app
The setup wizard writes all of this for you. With `GOTIFY_ALERTS_PASSWORD`
and no `GOTIFY_TOKEN`, Ferrule makes a Gotify account, `ferrule-alerts`, and
its own app in it, the first time it sends. Everyone who should get alerts
signs in to the Gotify app (or iGotify) as `ferrule-alerts`, and the admin
account stays private. In Gotify an app belongs to one user and only that
user's phones see it, which is why alerts go to a shared account. For a
team, ntfy or Pushover groups suit better. To use your own app instead,
create one in Gotify and set `GOTIFY_TOKEN`. iGotify relays to the iPhone app
through Apple's push service; the phone has to reach Gotify and iGotify, so
away from home put them behind a tunnel or reverse proxy. `IGOTIFY_GOTIFY_URLS`,
`IGOTIFY_CLIENT_TOKENS` and `IGOTIFY_SECNTFY_TOKENS` are only needed when
+2 -2
View File
@@ -31,12 +31,12 @@ so nothing is built on your host.
[Connect your gear](https://docs.ferrulehq.dev/connect/unifi-network/).
2. **Get the stack:**
- **Portainer:** Stacks → Add stack → name `ferrule` → **Repository**,
with URL `https://git.uglyhousesneedlove.com/steve/ferrule-deploy`,
with URL `https://github.com/ferrulehq/ferrule-deploy`,
reference `refs/heads/main`, compose path `docker-compose.yml`, and
authentication **off**.
- **Docker Compose:**
```sh
git clone https://git.uglyhousesneedlove.com/steve/ferrule-deploy.git ferrule
git clone https://github.com/ferrulehq/ferrule-deploy.git ferrule
cd ferrule
cp stack.env.example .env
```
+5 -1
View File
@@ -23,7 +23,7 @@ services:
# version nobody chose, and never latest. FERRULE_IMAGE is the registry
# path, one line to change when it moves. Its own container names keep
# it apart from an earlier stack of this project on the same host.
image: ${FERRULE_IMAGE:-git.uglyhousesneedlove.com/steve/ferrule}:${FERRULE_VERSION:?set FERRULE_VERSION to the release to run, such as 0.9.0}
image: ${FERRULE_IMAGE:-git.uglyhousesneedlove.com/steve/ferrule}:${FERRULE_VERSION:-dev}
# Ask the registry on every deploy. A fixed release costs one quick
# request; qa moves, and this is how a redeploy picks it up.
pull_policy: always
@@ -135,6 +135,10 @@ services:
# force; see PORTAINER.md for what each variable means.
GOTIFY_URL: ${GOTIFY_URL:-}
GOTIFY_TOKEN: ${GOTIFY_TOKEN:-}
# With the bundled Gotify and no token, Ferrule makes a shared
# ferrule-alerts account and its own app, using the admin password.
GOTIFY_ALERTS_PASSWORD: ${GOTIFY_ALERTS_PASSWORD:-}
GOTIFY_ADMIN_PASSWORD: ${GOTIFY_ADMIN_PASSWORD:-}
NTFY_URL: ${NTFY_URL:-}
NTFY_TOKEN: ${NTFY_TOKEN:-}
PUSHOVER_TOKEN: ${PUSHOVER_TOKEN:-}
+1 -1
View File
@@ -2,7 +2,7 @@
# variable, this file's and the rest, from what the stack is running with.
# Required: the release to run, such as 0.9.0, or qa for the build under test.
FERRULE_VERSION=0.0.1
FERRULE_VERSION=dev
# false watches only hypervisors and storage, with no UniFi console at all,
# and is what to set while trying this stack beside an existing one.