mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-04-25 08:46:22 +02:00
feat: enhance installation script to include automatic Watchtower setup with customizable interval
This commit is contained in:
parent
48ee5e86aa
commit
4e401fdb92
3 changed files with 68 additions and 16 deletions
17
README.md
17
README.md
|
|
@ -85,22 +85,9 @@ Run SurfSense on your own infrastructure for full data control and privacy.
|
||||||
curl -fsSL https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scripts/install.sh | bash
|
curl -fsSL https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scripts/install.sh | bash
|
||||||
```
|
```
|
||||||
|
|
||||||
For Docker Compose and other deployment options, see the [Docker Installation docs](https://www.surfsense.com/docs/docker-installation).
|
The install script sets up [Watchtower](https://github.com/nicholas-fedor/watchtower) automatically for daily auto-updates. To skip it, add the `--no-watchtower` flag.
|
||||||
|
|
||||||
**Update (recommended — Watchtower):**
|
For Docker Compose, manual installation, and other deployment options, see the [docs](https://www.surfsense.com/docs/).
|
||||||
|
|
||||||
```bash
|
|
||||||
docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock nickfedor/watchtower --label-enable --interval 86400
|
|
||||||
```
|
|
||||||
|
|
||||||
**Update (manual):**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd surfsense # or SurfSense/docker if you used Option 2
|
|
||||||
docker compose pull && docker compose up -d
|
|
||||||
```
|
|
||||||
|
|
||||||
For manual installation and other deployment options, check the [docs](https://www.surfsense.com/docs/).
|
|
||||||
|
|
||||||
### How to Realtime Collaborate (Beta)
|
### How to Realtime Collaborate (Beta)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,14 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
# SurfSense — One-line Install Script
|
# SurfSense — One-line Install Script
|
||||||
|
#
|
||||||
|
#
|
||||||
# Usage: curl -fsSL https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scripts/install.sh | bash
|
# Usage: curl -fsSL https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scripts/install.sh | bash
|
||||||
#
|
#
|
||||||
|
# Flags:
|
||||||
|
# --no-watchtower Skip automatic Watchtower setup
|
||||||
|
# --watchtower-interval=SECS Check interval in seconds (default: 86400 = 24h)
|
||||||
|
#
|
||||||
# Handles two cases automatically:
|
# Handles two cases automatically:
|
||||||
# 1. Fresh install — no prior SurfSense data detected
|
# 1. Fresh install — no prior SurfSense data detected
|
||||||
# 2. Migration from the legacy all-in-one container (surfsense-data volume)
|
# 2. Migration from the legacy all-in-one container (surfsense-data volume)
|
||||||
|
|
@ -23,6 +29,17 @@ OLD_VOLUME="surfsense-data"
|
||||||
DUMP_FILE="./surfsense_migration_backup.sql"
|
DUMP_FILE="./surfsense_migration_backup.sql"
|
||||||
KEY_FILE="./surfsense_migration_secret.key"
|
KEY_FILE="./surfsense_migration_secret.key"
|
||||||
MIGRATION_MODE=false
|
MIGRATION_MODE=false
|
||||||
|
SETUP_WATCHTOWER=true
|
||||||
|
WATCHTOWER_INTERVAL=86400
|
||||||
|
WATCHTOWER_CONTAINER="watchtower"
|
||||||
|
|
||||||
|
# ── Parse flags ─────────────────────────────────────────────────────────────
|
||||||
|
for arg in "$@"; do
|
||||||
|
case "$arg" in
|
||||||
|
--no-watchtower) SETUP_WATCHTOWER=false ;;
|
||||||
|
--watchtower-interval=*) WATCHTOWER_INTERVAL="${arg#*=}" ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
CYAN='\033[1;36m'
|
CYAN='\033[1;36m'
|
||||||
YELLOW='\033[1;33m'
|
YELLOW='\033[1;33m'
|
||||||
|
|
@ -231,6 +248,34 @@ else
|
||||||
success "All services started."
|
success "All services started."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# ── Watchtower (auto-update) ─────────────────────────────────────────────────
|
||||||
|
|
||||||
|
if $SETUP_WATCHTOWER; then
|
||||||
|
step "Setting up Watchtower (auto-updates every $((WATCHTOWER_INTERVAL / 3600))h)"
|
||||||
|
|
||||||
|
WT_STATE=$(docker inspect -f '{{.State.Running}}' "${WATCHTOWER_CONTAINER}" 2>/dev/null || echo "missing")
|
||||||
|
|
||||||
|
if [[ "${WT_STATE}" == "true" ]]; then
|
||||||
|
success "Watchtower is already running — skipping."
|
||||||
|
else
|
||||||
|
if [[ "${WT_STATE}" != "missing" ]]; then
|
||||||
|
info "Removing stopped Watchtower container..."
|
||||||
|
docker rm -f "${WATCHTOWER_CONTAINER}" >/dev/null 2>&1 || true
|
||||||
|
fi
|
||||||
|
docker run -d \
|
||||||
|
--name "${WATCHTOWER_CONTAINER}" \
|
||||||
|
--restart unless-stopped \
|
||||||
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||||
|
nickfedor/watchtower \
|
||||||
|
--label-enable \
|
||||||
|
--interval "${WATCHTOWER_INTERVAL}" >/dev/null 2>&1 \
|
||||||
|
&& success "Watchtower started — labeled SurfSense containers will auto-update." \
|
||||||
|
|| warn "Could not start Watchtower. You can set it up manually or use: docker compose pull && docker compose up -d"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
info "Skipping Watchtower setup (--no-watchtower flag)."
|
||||||
|
fi
|
||||||
|
|
||||||
# ── Done ─────────────────────────────────────────────────────────────────────
|
# ── Done ─────────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
|
|
@ -267,6 +312,13 @@ info " Stop: cd ${INSTALL_DIR} && ${DC} down"
|
||||||
info " Update: cd ${INSTALL_DIR} && ${DC} pull && ${DC} up -d"
|
info " Update: cd ${INSTALL_DIR} && ${DC} pull && ${DC} up -d"
|
||||||
info ""
|
info ""
|
||||||
|
|
||||||
|
if $SETUP_WATCHTOWER; then
|
||||||
|
info " Watchtower: auto-updates every $((WATCHTOWER_INTERVAL / 3600))h (stop: docker rm -f ${WATCHTOWER_CONTAINER})"
|
||||||
|
else
|
||||||
|
warn " Watchtower skipped. For auto-updates, re-run without --no-watchtower."
|
||||||
|
fi
|
||||||
|
info ""
|
||||||
|
|
||||||
if $MIGRATION_MODE; then
|
if $MIGRATION_MODE; then
|
||||||
warn " Migration complete! Open frontend and verify your data."
|
warn " Migration complete! Open frontend and verify your data."
|
||||||
warn " Once verified, clean up the legacy volume and dump file:"
|
warn " Once verified, clean up the legacy volume and dump file:"
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ This guide explains how to run SurfSense using Docker, with options ranging from
|
||||||
|
|
||||||
### Option 1 — Install Script (recommended)
|
### Option 1 — Install Script (recommended)
|
||||||
|
|
||||||
Downloads the compose files, generates a `SECRET_KEY`, and starts all services automatically:
|
Downloads the compose files, generates a `SECRET_KEY`, starts all services, and sets up [Watchtower](https://github.com/nicholas-fedor/watchtower) for automatic daily updates:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -fsSL https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scripts/install.sh | bash
|
curl -fsSL https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scripts/install.sh | bash
|
||||||
|
|
@ -17,6 +17,14 @@ curl -fsSL https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scr
|
||||||
|
|
||||||
This creates a `./surfsense/` directory with `docker-compose.yml` and `.env`, then runs `docker compose up -d`.
|
This creates a `./surfsense/` directory with `docker-compose.yml` and `.env`, then runs `docker compose up -d`.
|
||||||
|
|
||||||
|
To skip Watchtower (e.g. in production where you manage updates yourself):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -fsSL https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scripts/install.sh | bash -s -- --no-watchtower
|
||||||
|
```
|
||||||
|
|
||||||
|
To customise the check interval (default 24h), use `--watchtower-interval=SECONDS`.
|
||||||
|
|
||||||
### Option 2 — Manual Docker Compose
|
### Option 2 — Manual Docker Compose
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|
@ -40,8 +48,13 @@ After starting, access SurfSense at:
|
||||||
|
|
||||||
**Option 1 — Watchtower daemon (recommended, auto-updates every 24 h):**
|
**Option 1 — Watchtower daemon (recommended, auto-updates every 24 h):**
|
||||||
|
|
||||||
|
If you used the install script (Option 1 above), Watchtower is already running. No extra setup needed.
|
||||||
|
|
||||||
|
For manual Docker Compose installs (Option 2), start Watchtower separately:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker run -d --name watchtower \
|
docker run -d --name watchtower \
|
||||||
|
--restart unless-stopped \
|
||||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||||
nickfedor/watchtower \
|
nickfedor/watchtower \
|
||||||
--label-enable \
|
--label-enable \
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue