GIF endpoints return 503 after upgrading a self-hosted instance to the latest v1

(#693) Bug Fixed api self-hosting

Summary

Upgrading a self-hosted instance to the latest v1 tag causes the /api/v1/gifs endpoints to return 503. Rolling back to admin:2026.616.51531 and api:2026.626.83930 resolves the issue.

Steps to reproduce

Setup a self-hosted instance using older container images then upgrade the images to the latest v1 tags.

Logs or screenshots

API error log shows below for 'https://mydomain/api/v1/gifs/search?q=eea&locale=en-US%27 query
{
  "level": "warn",
  "time": "2026-07-01T15:16:25.620Z",
  "service": "fluxer-api",
  "env": "production",
  "error": {
    "type": "NatsError",
    "message": "503",
    "stack": "NatsError: 503\n    at NatsError.errorForCode (/usr/src/app/fluxer_api/node_modules/.pnpm/nats@2.29.3/node_modules/nats/nats-base-client/core.ts:170:12)\n    at isRequestError (/usr/src/app/fluxer_api/node_modules/.pnpm/nats@2.29.3/node_modules/nats/nats-base-client/msg.ts:34:22)\n    at SubscriptionImpl.callback (/usr/src/app/fluxer_api/node_modules/.pnpm/nats@2.29.3/node_modules/nats/nats-base-client/muxsubscription.ts:92:33)\n    at ProtocolHandler.processMsg (/usr/src/app/fluxer_api/node_modules/.pnpm/nats@2.29.3/node_modules/nats/nats-base-client/protocol.ts:741:11)\n    at ProtocolHandler.push (/usr/src/app/fluxer_api/node_modules/.pnpm/nats@2.29.3/node_modules/nats/nats-base-client/protocol.ts:863:14)\n    at Parser.parse (/usr/src/app/fluxer_api/node_modules/.pnpm/nats@2.29.3/node_modules/nats/nats-base-client/parser.ts:241:29)\n    at ProtocolHandler.<anonymous> (/usr/src/app/fluxer_api/node_modules/.pnpm/nats@2.29.3/node_modules/nats/nats-base-client/protocol.ts:564:25)\n    at Generator.next (<anonymous>)\n    at fulfilled (/usr/src/app/fluxer_api/node_modules/.pnpm/nats@2.29.3/node_modules/nats/lib/nats-base-client/protocol.js:5:58)\n    at process.processTicksAndRejections (node:internal/process/task_queues:104:5)\n\nError\n    at new BaseRequest (/usr/src/app/fluxer_api/node_modules/.pnpm/nats@2.29.3/node_modules/nats/nats-base-client/request.ts:45:18)\n    at new RequestOne (/usr/src/app/fluxer_api/node_modules/.pnpm/nats@2.29.3/node_modules/nats/nats-base-client/request.ts:142:5)\n    at NatsConnectionImpl.request (/usr/src/app/fluxer_api/node_modules/.pnpm/nats@2.29.3/node_modules/nats/nats-base-client/nats.ts:417:17)\n    at NatsGifProvider.request (/usr/src/app/fluxer_api/src/api/gif/NatsGifProvider.ts:262:38)\n    at NatsGifProvider.suggest (/usr/src/app/fluxer_api/src/api/gif/NatsGifProvider.ts:219:15)\n    at process.processTicksAndRejections (node:internal/process/task_queues:104:5)\n    at async Object.handler (/usr/src/app/fluxer_api/src/api/gif/GifController.ts:177:20)\n    at async dispatch (file:///usr/src/app/fluxer_api/node_modules/.pnpm/hono@4.12.2/node_modules/hono/dist/compose.js:22:17)\n    at async handler (file:///usr/src/app/fluxer_api/node_modules/.pnpm/hono@4.12.2/node_modules/hono/dist/hono-base.js:118:39)\n    at async dispatch (file:///usr/src/app/fluxer_api/node_modules/.pnpm/hono@4.12.2/node_modules/hono/dist/compose.js:22:17)",
    "name": "NatsError",
    "code": "503"
  },
  "op": "Suggest",
  "msg": "[gif-service] request failed"
}
{
  "level": "info",
  "time": "2026-07-01T15:16:25.621Z",
  "service": "fluxer-api",
  "env": "production",
  "method": "GET",
  "path": "/v1/gifs/suggest",
  "status": 503,
  "durationMs": 19,
  "msg": "Request completed"
}
{
  "level": "warn",
  "time": "2026-07-01T15:16:25.707Z",
  "service": "fluxer-api",
  "env": "production",
  "error": {
    "type": "NatsError",
    "message": "503",
    "stack": "NatsError: 503\n    at NatsError.errorForCode (/usr/src/app/fluxer_api/node_modules/.pnpm/nats@2.29.3/node_modules/nats/nats-base-client/core.ts:170:12)\n    at isRequestError (/usr/src/app/fluxer_api/node_modules/.pnpm/nats@2.29.3/node_modules/nats/nats-base-client/msg.ts:34:22)\n    at SubscriptionImpl.callback (/usr/src/app/fluxer_api/node_modules/.pnpm/nats@2.29.3/node_modules/nats/nats-base-client/muxsubscription.ts:92:33)\n    at ProtocolHandler.processMsg (/usr/src/app/fluxer_api/node_modules/.pnpm/nats@2.29.3/node_modules/nats/nats-base-client/protocol.ts:741:11)\n    at ProtocolHandler.push (/usr/src/app/fluxer_api/node_modules/.pnpm/nats@2.29.3/node_modules/nats/nats-base-client/protocol.ts:863:14)\n    at Parser.parse (/usr/src/app/fluxer_api/node_modules/.pnpm/nats@2.29.3/node_modules/nats/nats-base-client/parser.ts:241:29)\n    at ProtocolHandler.<anonymous> (/usr/src/app/fluxer_api/node_modules/.pnpm/nats@2.29.3/node_modules/nats/nats-base-client/protocol.ts:564:25)\n    at Generator.next (<anonymous>)\n    at fulfilled (/usr/src/app/fluxer_api/node_modules/.pnpm/nats@2.29.3/node_modules/nats/lib/nats-base-client/protocol.js:5:58)\n    at process.processTicksAndRejections (node:internal/process/task_queues:104:5)\n\nError\n    at new BaseRequest (/usr/src/app/fluxer_api/node_modules/.pnpm/nats@2.29.3/node_modules/nats/nats-base-client/request.ts:45:18)\n    at new RequestOne (/usr/src/app/fluxer_api/node_modules/.pnpm/nats@2.29.3/node_modules/nats/nats-base-client/request.ts:142:5)\n    at NatsConnectionImpl.request (/usr/src/app/fluxer_api/node_modules/.pnpm/nats@2.29.3/node_modules/nats/nats-base-client/nats.ts:417:17)\n    at NatsGifProvider.request (/usr/src/app/fluxer_api/src/api/gif/NatsGifProvider.ts:262:38)\n    at NatsGifProvider.search (/usr/src/app/fluxer_api/src/api/gif/NatsGifProvider.ts:166:31)\n    at process.processTicksAndRejections (node:internal/process/task_queues:104:5)\n    at async Object.handler (/usr/src/app/fluxer_api/src/api/gif/GifController.ts:77:20)\n    at async dispatch (file:///usr/src/app/fluxer_api/node_modules/.pnpm/hono@4.12.2/node_modules/hono/dist/compose.js:22:17)\n    at async handler (file:///usr/src/app/fluxer_api/node_modules/.pnpm/hono@4.12.2/node_modules/hono/dist/hono-base.js:118:39)\n    at async dispatch (file:///usr/src/app/fluxer_api/node_modules/.pnpm/hono@4.12.2/node_modules/hono/dist/compose.js:22:17)",
    "name": "NatsError",
    "code": "503"
  },
  "op": "Search",
  "msg": "[gif-service] request failed"
}

Merged posts

These posts were merged into this one. Their comments are now part of the conversation below, marked with where they came from.

Merged from #687 [Self-hosted] GIFs won't load since release 2026.630.20736

RexSystemoriginally by @DerP4si on GitHub

Report details

Summary

When clicking on GIF I expected to see KLIPY GIFs (as I did before upgrading) but now I only see "GIFs could not load"

Steps to reproduce

  1. Selfhost Fluxer (behind traefik with :80 caddy)
  2. Fill in KLIPY API-Key.
  3. Try to send GIFs via chat.

Environment

Win11 Chrome 149.0.7827.103 Release 2026.630.20736

Logs or screenshots

image
  • 615115891-e355cb67-2288-447e-8250-6b0f2b8ba9da.png

    615115891-e355cb67-2288-447e-8250-6b0f2b8ba9da.png

    645×617 | 26 kB

3 comments

Sign in with Fluxer to comment and vote.
Comment by @Jiralite
RexSystem 1 vote Merged from #687 originally by @Jiralite on GitHub
Have you synchronised your Docker Compose file?
Comment by @DerP4si
RexSystem 1 vote Merged from #687 originally by @DerP4si on GitHub
oof, sorry... No, I didn't... Now it works. Sorry for bothering you. o0