Skip to content

History

Revisions

  • say plainly what the rest of the wiki is for The home page described the other pages as covering everything after first boot, which reads as though they are the next thing to work through. They are not: they are gotchas and technical detail for when something is not straightforward. Saying so sends people to the setup guide and leaves the wiki as the place to come back to.

    @cyberb cyberb committed Aug 29, 2026
    975a292
  • Point the home page at the setup guide instead of listing images The board table hardcoded twenty seven download urls at a fixed version, so it was serving 26.06.01 while 26.07.01 had been current for weeks, and nothing here updates it -- it drifts on every release and has done so quietly for years. The setup guide on syncloud.org reads the release list from github, so it cannot go stale, and it walks through writing the image and activating the device rather than handing over a file and wishing you luck. Every board that was in the table is still offered there. What is left here is what a wiki home page is for: what the project is, where to start, what the other pages cover, and where to ask.

    @cyberb cyberb committed Aug 29, 2026
    d8cc6cf
  • porting guide: lessons from the openvpn rewrite All six cost a CI cycle or a production outage: - OIDC discovery must not be fatal. Exiting on failure crash-loops the backend and serves 502 for the whole app, not just sign-in. Retry in the background, serve regardless, and assert /auth/login returns 302 - once the crash loop is gone a broken OIDC is otherwise invisible. - Reach Authelia over GetAuthLocalSocket(), because plenty of devices cannot resolve their own subdomains. The X-Forwarded-* headers are mandatory: without them Authelia advertises http://localhost as the issuer and discovery fails anyway. - Go is not exempt from the platform CA. It reads the OS trust store, but the platform CA is never installed into it. - refresh.hold does not stop an auto-refresh already running, so the documented entrypoint hold is necessary but not sufficient; abort it, do not wait. - Pin @playwright/test to the CI image version, and shoot screenshots explicitly since only-on-failure leaves a green run with nothing to show. - Quote device commands so the SNAP env prefix stays legal and $1 is not eaten by the local shell; expect slow first boots on armv7. Plus a note that 'previously released' becomes your own app once you publish, which breaks fixtures reaching into the predecessor's layout.

    @cyberb cyberb committed Aug 20, 2026
    7356378
  • nextcloud: one full command per version, nothing to assemble The revisions were in a table, which left the reader to paste a number into a command line - the exact step where a typo silently sends a device to the wrong major. Each version now carries its own complete line, matching how the old ladder read before it went stale. Also says how to check the current version first, and how to tell an upgrade has finished rather than starting the next one on top of a running migration.

    @cyberb cyberb committed Aug 17, 2026
    ad9bc54
  • nextcloud: replace the dead sideload ladder with snap refresh --revision Every wget line in 'Cannot upgrade from UI' 404s. The revisions it listed - 19102646, 588, 621, 676, 706, 747, 775, 815, covering v15 to v29 - are all gone from the store, which keeps only the most recent ones. The ladder also stopped five majors short of where offline devices actually sit, with nothing for 30 to 34. Sideloading is no longer the way either. The store now serves the revision snapd asks for, so stepping through majors is a plain refresh that stays asserted and keeps auto-updating, instead of wget plus snap install --devmode. Lists the revisions that exist today - 968 for 32, 996 for 33, 1011 for 34 - points at repair-status for checking an upgrade finished, and says plainly that a device older than the oldest retained revision has no path left through the store.

    @cyberb cyberb committed Aug 17, 2026
    58d7a55
  • porting guide: no version step, packaging call matches current mattermost

    @cyberb cyberb committed Aug 16, 2026
    2268fdd
  • porting guide: hooks-as-binaries, OIDC slice signature, e2e layouts, CI retries The RegisterOIDCClient snippet no longer compiled — golib moved the redirect argument to a slice. The hooks section read as if install/configure/pre-refresh/ post-refresh were cobra subcommands of bin/cli; every app builds them as separate main packages into meta/hooks/ because snapd dispatches by filename. Adds the test/e2e/run.sh layout used by apps with no web/ SPA, the five-step upgrade e2e chain, wait-app.sh, apt/download retry wrappers, and push-only triggers. Refreshes the store-publisher and platform pins. Trimmed the example lists to one app per pattern throughout.

    @cyberb cyberb committed Aug 16, 2026
    d72d409
  • Correct snap.yaml location: it lives at meta/snap.yaml (all apps + store-publisher default), not repo root

    @cyberb cyberb committed Jul 16, 2026
    67640e8
  • porting guide: drop legacy arch-named image migration notes

    @cyberb cyberb committed Jul 15, 2026
    bd54ee3
  • porting guide: multi-arch platform images from 26.07.01 Platform/bootstrap images are now multi-arch manifest lists; app pipelines reference syncloud/platform-<distro>:<version> without the arch. Bump example to 26.07.01, document the migration (old versions stay arch-in-repo-name, bump + name change land together).

    @cyberb cyberb committed Jul 15, 2026
    a6ab7af
  • CI/testing: drop version step, per-distro binary+device tests, upstream-UI Playwright via SSO

    @cyberb cyberb committed Jul 13, 2026
    c0ef0ad
  • Logging: bundled nginx/php-fpm must use syslog, not /dev/stdout (ENXIO crash-loop under systemd)

    @cyberb cyberb committed Jul 13, 2026
    cc45f96
  • Testing: use syncloud-lib>=366 without selenium (Playwright-only UI tests)

    @cyberb cyberb committed Jul 13, 2026
    d5118a9
  • porting guide: add License section (GPL-3.0, not MIT)

    @cyberb cyberb committed Jun 29, 2026
    369e82b
  • Home: bump image download links to 26.06.01

    @cyberb cyberb committed Jun 7, 2026
    ccf7249
  • App-porting-guide: drop the runtime-bootstrap bullet (too app-specific for now)

    @cyberb cyberb committed Jun 3, 2026
    660ed9f
  • App-porting-guide: add patterns learned from actual-budget - Non-Go runtimes: bundle the whole runtime + loader (cp /usr /lib, launch via bundled ld-linux) for no host-OS lib dependency; fixes buster + arm/v7. - Wrapping an upstream's own OIDC: register client + template its config + runtime bootstrap from configure; Authelia RFC 9207 iss gotcha -> oauth2 path. - Trust the platform CA for runtimes that ignore the OS store (NODE_EXTRA_CA_CERTS / REQUESTS_CA_BUNDLE -> syncloud.ca.crt). - Hold snapd auto-refresh via the platform-service entrypoint (photoprism). - App icon: meta/gui/icon.png 128x128. - Note: TCP-only upstreams may accept a unix socket path (Node listen(path)).

    @cyberb cyberb committed Jun 3, 2026
    19e9956
  • App-porting-guide: document syncloud/store-publisher publish step; mark syncloud-release deployer + AWS keys obsolete; add repo secrets table

    @cyberb cyberb committed Jun 1, 2026
    2a84991
  • Photoprism: drop options.yml IndexSchedule edit; it ships in the default config

    @cyberb cyberb committed May 15, 2026
    b1b2590
  • Report-problems: lead with web UI Send logs; modernise SSH command list; fenced code blocks; PuTTY typo

    @cyberb cyberb committed May 15, 2026
    cd9be7f
  • Add Photoprism page: index Nextcloud photos via symlink, auto-index, replacing Recognize

    @cyberb cyberb committed May 15, 2026
    765a1ad
  • External access: fix DNS rebind protection section Replace the inaccurate one-liner about browser caching with an accurate description of router-level DNS rebind protection. Add FRITZ!Box-specific steps (the most common consumer router that ships with rebind protection on by default) and a public-resolver workaround for users who can not change router settings.

    @cyberb cyberb committed May 6, 2026
    7199e72
  • add OnlyOffice page

    @cyberb cyberb committed May 3, 2026
    0fad775
  • App porting guide: upstream version usually lives in .drone.jsonnet; show jsonnet vs build.sh examples and point users at the forum first if neither matches

    @cyberb cyberb committed May 2, 2026
    dc6ee46
  • App porting guide: expand upstream-version-bump section, explain what upstream means and how GitHub users can contribute version bumps

    @cyberb cyberb committed May 2, 2026
    c2e644d
  • App porting guide: link to GitHub for drone.jsonnet references, not local paths

    @cyberb cyberb committed May 2, 2026
    3b567a7
  • App porting guide: drop buster pin pattern; rootfs now publishes refreshed buster docker per release

    @cyberb cyberb committed May 2, 2026
    23a056a
  • Bump image links 26.04.7 -> 26.04.9; add legacy HC4 image entry Older non-LCD HC4 boards now have a dedicated legacy image (older kernel, same rootfs) shipped in current releases, replacing the 25.12.1 fallback. HC4 page no longer hardcodes distro/kernel versions or a specific image version, so future migrations only require updating Home.md.

    @cyberb cyberb committed Apr 29, 2026
    37b9cef
  • Home: bump image links 26.03.2 -> 26.04.7

    @cyberb cyberb committed Apr 24, 2026
    60afa89
  • Odroid-HC4: point older-board users at 25.12.1 (last Buster/5.11 image) as Petitboot fallback

    @cyberb cyberb committed Apr 23, 2026
    ce378cf