Skip to content

Upgrading

xNifty edited this page Oct 11, 2026 · 3 revisions

Schema migrations run automatically when the process starts. You do not run a separate migrate step.

App version is the git tag, reported by GET /api/v2/health and Admin → Site version. GitHub Release binaries are already stamped. A git pull checkout reports the latest reachable tag. A binary copied out of the tree (systemd) must be built with -ldflags or it stays "dev" and the changelog is empty; see Building-the-server. npm run build:web does not set the Go version.

Operator changes to expect

When moving a host forward, check these. They are the ones that need a config or process change, not just a binary swap:

  • .env is mandatory. The process exits if the file is missing or required variables are empty.
  • Redis is required for API auth, rate limits, device SSO, undo, and live updates. Health JSON includes redis_ok.
  • Listen address. The server binds to HOST, default 127.0.0.1. Older builds listened on every interface. If phones, containers, or another machine connected to the port directly, set HOST=0.0.0.0.
  • ORDRYN_* names. ORDRYN_MODE and ORDRYN_BOOTSTRAP_* replace GOTODO_MODE and GOTODO_BOOTSTRAP_*. The old names still work, so renaming is optional.
  • API v2. The API moved to /api/v2. /api/v1 remains a working alias, so existing clients and scripts don't break. New integrations should use /api/v2. In-app docs moved to /docs/api/v2.
  • Email lives in Admin. Older MAILGUN_API_KEY / MAILGUN_DOMAIN / FROM_EMAIL env values are imported into Admin → Email once, then ignored.
  • Extensions moved out of the server repo into Ordryn-Extensions. Copy updated folders into data/extensions/ and click Reload Extensions. MODS_DIR still works as an alias for EXTENSIONS_DIR. See Extensions.
  • Site roles moved to organizations and projects. On first start after that upgrade, the old Editor/Viewer/Developer/QA site roles are copied into every organization and project that used them, then removed. Nobody's access changes. After that, inviting someone requires picking a role, and a project with no roles must create one first.
  • Uploads and attachments. Task attachments (stored in PostgreSQL) are off until enabled in Admin. If you turn them on, raise your proxy's client_max_body_size; see Reverse-proxy.
  • Search indexes. Ordryn adds pg_trgm trigram indexes for search on start. If the database role cannot CREATE EXTENSION, the log says so and search still works, just slower. Run CREATE EXTENSION pg_trgm; as a superuser to get the indexes.
  • Vue UI. full mode needs a built web/dist. Rebuild after UI changes (npm run build:web). Missing dist → 503 on the UI path.
  • UI URL. The SPA is at / (or BASE_PATH). Old /app/... URLs redirect. Bookmarks and proxy rules that assume /app/ as the mount should be updated.
  • SESSION_KEY rotation. Re-enter the Mailgun API key or SMTP password, the S3 secret key, and the GitHub OAuth client secret in Admin after changing the key.
  • API enablement. REST is off until an admin enables it or ORDRYN_BOOTSTRAP_ENABLE_API=true. Clients see failures that look like "API missing" while it is off.
  • OpenAPI info.version in openapi.yaml is independent of the app version. It is bumped only for large or breaking API contract changes.

After replacing the binary

  1. Keep the same .env (and Postgres / Redis).
  2. Rebuild the SPA if you run full mode and the release includes UI changes.
  3. Restart the process (migrations apply on boot).
  4. curl -s http://HOST:PORT/api/v2/health and confirm version, mode, api_enabled, and redis_ok.
  5. If you use extensions, copy any updated folders and click Reload Extensions.

Cutting a server release (maintainers): merge to main, then publish a GitHub Release named vX.Y.Z. See Local-development. Operators who build on the host: Building-the-server.

Clone this wiki locally