Small services, run from a small island.
A family of self-hosted projects operated from Guernsey in the Channel Islands — live environmental data, radio reception, and a personal AI platform, all served from local hardware.
Projects
An advanced website factory: build from templates or generate with AI, edit block-by-block, publish with instant rollback, attach custom domains with automatic DNS & certificates, and run customers, invoices and analytics.
The whole estate on one page: live weather and the SAGE forecast, tide state with countdowns, tonight's best satellite pass, sun and moon, and service health — a browser start page.
A private weather station reporting live conditions every minute — temperature, wind, rainfall and pressure trends, with charts, records and AI-written forecasts.
An automated ground station receiving METEOR-M satellite imagery on 137.9 MHz — pass predictions, reception statistics and decoded pictures of Europe from orbit.
Live aircraft tracking over the Channel Islands and beyond, received directly from transponders at 1090 MHz and plotted on an interactive map.
A personal AI agent platform. SAGE also works behind the scenes here — writing the daily forecasts on GUST and the reception briefings on ORBIT.
Tide times and heights for St Peter Port — live tide clock, today's curve, a 7-day high and low water table, sea state, and wind straight from the weather station.
What to look for tonight: visible ISS and satellite passes with sky tracks, darkness times, moonlight, cloud outlook, aurora chances and meteor showers — computed on our own server.
Self-hosted push notifications (ntfy). Weather warnings, receiver events and server alerts are delivered from here to the phone — no third party in the loop.
Runbooks and reference for the whole estate — how each site is built, deployed and monitored — rendered from a git repo, with search and a documentation-grounded SAGE assistant.
Browser speed test straight to this server in Guernsey — latency, jitter, download and upload with live gauges. Self-hosted LibreSpeed engine; nothing stored, no third parties.
Network toolbox: your public IP, network and TLS details as seen from Guernsey (with curl-friendly endpoints), plus private diagnostics and a LAN monitor for the operator.
Source code for every project on this page, hosted on our own Forgejo — repositories, history and the infrastructure configs that run the box.
The operator dashboard: server metrics, service restarts, network and LAN monitoring, alerting and the SAGE ops assistant.
A clearer Guernsey roadworks map — live closures, diversions and works on an interactive map with a searchable, filterable list. Reformatted from the States of Guernsey data.
Guernsey inflation, tracked and charted — RPI and RPIX from 2000 to today, quarterly changes, group-by-group price moves and UK/Jersey comparisons from official bulletins.
The States of Guernsey Assembly, tracked — upcoming sittings and billets, lodged propositions, written questions and answers, Hansard records and every serving deputy.
Guernsey beach conditions in one place — official bathing-water grades for every monitored bay, live sea temperature and waves, UV, air quality and pollen.
Estate analytics — daily visitors, page views, countries, devices and top pages for every site here, aggregated from server logs with no cookies or trackers.
Self-hosted file and snippet sharing — drag in a file or paste text, get a short unlisted link with optional password and expiry. Files never leave this box.
A wall-display mode for the whole estate — full-screen rotating slides of weather, tides, status, roadworks, beaches, satellites and more. Press F on a spare screen and leave it running.
Guernsey Airport arrivals and departures, live — a clean, fast flight board with delay and cancellation highlighting, straight from the official airport feed.
Short links under go.tough.services — custom or random codes, QR codes, pause/enable, and per-day click stats. Links are public; managing them isn't.
Guernsey planning applications on a map — every current application with its site outline, status colouring and a link to the official record, searchable and filterable.
Official Bailiwick weather warnings, the Jersey Met 6-day written forecast, live rain radar, satellite and sea-state charts — the severe-weather view of the islands.
Guernsey buses live — every bus on the island on a map, real-time departures at any stop, full timetables for all 61 routes and service alerts.
Condor sailings via Guernsey for today and the next two days — delays and cancellations as they are announced, and a running reliability ledger by ship and route.
A self-tracking satellite ground station — a catalogue of every satellite it can hear, every pass predicted and scored, the antenna pointed automatically and the results briefed by SAGE. Receive only.
An Android aurora app that answers whether the aurora is actually visible from where you are, rather than just reporting a Kp number — and the page recruiting testers for it. Built on NOAA space-weather data.
The release shelf for the tough.services Android apps: every signed build kept with its version, checksum and the commit it was cut from, downloadable straight to a phone. Privacy policies are served publicly for the Play Store.
Type a medicine — brand or generic, UK or US name — and see what's in it, what it does, how it's taken, what it looks like, side effects and warnings, straight from the official product label with a plain-English summary by SAGE.
Live health of every site and data feed here — 90-day uptime history, receiver status and an incident log with RSS and JSON feeds. Checked from the server itself every minute.
Toolbox
Small self-hosted utilities — copy a line and run it. Everything is served straight from this box; read-only unless tagged.
System
System info
OS, kernel, CPU, memory, disk and load at a glance.
curl -fsSL https://tough.services/sysinfo.sh | bashHealth check
Uptime, load, memory, disk, temperature, services, updates and TLS days.
curl -fsSL https://tough.services/healthcheck.sh | bashCleanup root
Non-destructive tidy of logs, caches, temp files and old kernels.
curl -fsSL https://tough.services/cleanup.sh | sudo bashDisk hogs
Largest files and directories under a path.
curl -fsSL https://tough.services/largest.sh | bash -s -- /varOpen ports
Everything listening on the machine (add sudo for process names).
curl -fsSL https://tough.services/ports.sh | bashReboot needed?
Whether a reboot is pending, and which packages need it.
curl -fsSL https://tough.services/reboot-check.sh | bashMaintenance
Update root
apt update, upgrade and autoremove in one shot.
curl -fsSL https://tough.services/update.sh | sudo bashHarden root
Firewall (ufw), fail2ban and automatic security updates.
curl -fsSL https://tough.services/harden.sh | sudo bashBackup root
Dump every database and archive data dirs to /root/backups (keeps 7).
curl -fsSL https://tough.services/backup.sh | sudo bashNetwork
My IP
Your public IP, network and country (via NEXUS).
curl -fsSL https://tough.services/myip.sh | bashPing test
Latency and packet loss to 1.1.1.1.
curl -fsSL https://tough.services/ping-test.sh | bashHTTP check
Status, redirects and full timing breakdown for a URL.
curl -fsSL https://tough.services/httpcheck.sh | bash -s -- https://example.comDNS lookup
A, AAAA, MX, NS and TXT records for a domain.
curl -fsSL https://tough.services/dns.sh | bash -s -- example.comSpeed test
Latency and download speed to the Guernsey server.
curl -fsSL https://tough.services/speedtest.sh | bashSSL check
Colour-coded certificate expiry for any domains.
curl -fsSL https://tough.services/ssl-check.sh | bash -s -- example.comGuernsey live
Weather live
Current Guernsey conditions from the GUST weather station.
curl -fsSL https://tough.services/gust.sh | bashTides live
St Peter Port tide state and next high/low water.
curl -fsSL https://tough.services/tide.sh | bashSky tonight live
The next bright satellite passes overhead, from NOVA.
curl -fsSL https://tough.services/nova.sh | bashFerries live
Today's Condor sailings via Guernsey and their status, from FERRY.
curl -fsSL https://tough.services/ferry.sh | bashBuses live
Buses on the road and the next departures from a stop (Town Terminus by default), from ROUTE.
curl -fsSL https://tough.services/buses.sh | bashSecurity
Ban list root
fail2ban jails and currently banned IP addresses.
curl -fsSL https://tough.services/bans.sh | sudo bashCert renew (test) root
Dry-run Let’s Encrypt renewal for every certificate.
curl -fsSL https://tough.services/cert-renew.sh | sudo bashGenerators
Passwords
Strong random passwords (length and count optional).
curl -fsSL https://tough.services/pwgen.sh | bashUUID
Generate v4 UUIDs.
curl -fsSL https://tough.services/uuid.sh | bashTime now
The time in unix, ISO, UTC and a few zones.
curl -fsSL https://tough.services/now.sh | bash