Some systems are experiencing issues

About This Site

Announcements and status/progress updates about upgrades will be posted here.

This website runs on a dedicated host and will be up even if everything else is down.

Past Incidents

5th September 2026

Platform maintenance: moving all services to an unprivileged container runtime

As the final step of this week's security hardening, every DragonHive / derg.nz service is being moved from a root-level container runtime to an unprivileged one.

During this window each service restarts once. Expect short, intermittent outages: typically 1-5 minutes per service, up to ~10 minutes for GitLab, Mastodon, Nextcloud and Seafile. No data is modified, and the previous setup is kept intact for an instant rollback.

This entry stays open until the migration is complete and verified; progress updates follow below.

  • All 31 services were moved to the unprivileged container runtime and re-verified after the updater's first cycle (18 services re-created onto freshly pulled images, all healthy). Nothing was rolled back. From now on, feature upgrades of Mastodon, Seafile and Nextcloud will be announced on this page a day in advance, with a summary of what changes.

  • All 31 services have moved to the unprivileged runtime and pass their health checks. The automatic updater now runs there too; its first cycle (20:50) re-creates a number of containers onto freshly pulled copies of the same images, so expect one more short restart per service. This entry closes once that round is verified.

  • Progress: 27 of 31 services have moved and are verified healthy (all sites, games, calling, streaming, Matrix). Remaining: GitLab, Nextcloud, Seafile and Mastodon, which move one at a time as their images finish copying; each will be unavailable for roughly 3-10 minutes during its move.

  • Migration window started. The reverse proxy moves first, then each service in turn; a service is unreachable from the moment its old copy stops until its new copy is up (usually 1-3 minutes).

  • dragonhive-seafile Seafile upgraded to 13.0 — brief outages tonight

    Seafile (seafile.dragonhive.net) was upgraded tonight from 11.0.13 to 12.0.14 and then to 13.0.25, with database backups and a ZFS snapshot taken before each step. Seafile is now on the current major version, using Redis instead of memcached, and its 27 known critical vulnerabilities from the old image are gone.

    Downtime: Seafile was unavailable roughly 01:11–01:18 CEST for the 12.0 step (a database health-check mismatch cost about four of those minutes) and about 01:26–01:28 for the 13.0 step.

    Separately, at 01:27 a Docker engine package upgrade restarted the container engine on the host. All services restarted; most were back within a minute, but the reverse proxy and one small site did not come back on their own and were restarted by hand, so every site was unreachable for roughly three to five minutes around 01:30–01:33. The engine is now configured to keep containers running across engine restarts so this cannot repeat.

    Also completed today: host firewall, sandboxed automation, vulnerability scanning of every update, and unprivileged containers for most services. Everything is up.

    4th September 2026

    dragonhive-gitliz Outage: dragonhive-gitliz

    dragonhive-gitliz recovered after about 24 minutes of downtime.

  • Incident responder: root cause is gitliz's own in-app rate limiter, not a crash. Container was running (no OOM, 0 restarts) but the health URL returned HTTP 429. The app keys its brute-force block on request.remote_addr, which behind the nginx proxy is always the proxy IP 172.22.0.34, so all clients share one bucket. A burst of 4xx at 15:10:59 (likely a scanner) tripped the >10/min limit. Because the after_request hook also counts the 429 itself as a 4xx and re-extends blocked_until by 10 min on every request, the once-a-minute health probe kept the block alive indefinitely (self-perpetuating in-memory state, same mechanism as the 13:37 and yesterday's 13:52 outages). ACTION: restarted gitliz once at 15:32:36 to clear the in-memory block table; gunicorn came up cleanly with 4 workers. Health verified HTTP 200 twice (15:32 and ~15:34), no new block lines since. Follow-up needed in code (gitliz/web/app_factory.py ~L79-107): use X-Forwarded-For/ProxyFix so the real client IP is keyed, and do not count 429 responses toward the block or extend blocked_until while already blocked. Until fixed, this will recur whenever any scanner sends >10 4xx/min through the proxy.

  • dragonhive-gitliz Outage: dragonhive-gitliz

    dragonhive-gitliz recovered after about 19 minutes of downtime.

    3rd September 2026

    dragonhive-gitliz Outage: dragonhive-gitliz

    dragonhive-gitliz recovered after about 25 minutes of downtime.

    6th August 2026

    dergnz-semibox Update rolled back: dergnz-semibox

    An automatic update of dergnz-semibox was rolled back (failed the post-update health check; previous version restored). The service is running the previous version.

    Related Mastodon account