Floatplane-Downloader icon indicating copy to clipboard operation
Floatplane-Downloader copied to clipboard

Docker container "crashes" every 30 min

Open Mindless999 opened this issue 1 month ago • 7 comments

It looks like every 30 min the docker will stop and aut-restart due to a Error 403 no permission. After this, the docker does a re-authentication and a restart and it will work again.

Below error and re-login.

FP-Downloader: Version 5.19.2 Docker Version: 29.1.0 (build 360952c) OS: Debian 13

Docker compose file (redacted)

services:
  floatplane-downloader:
    image: inrix/floatplane-downloader:dev
    container_name: floatplane-downloader
    environment:
      - headless=true
      - username=<username>
      - password=<password>
      - token=123456
      - plexUsername=<username>
      - plexPassword=<password>
    volumes:
      - /fp/db:/fp/db
      - /mnt/media/FP:/fp/videos
    ports:
      - "8080:8080"
    restart: unless-stopped
    networks:
      - monitoring

  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    volumes:
      - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus_data:/prometheus
    ports:
      - "9090:9090"
    networks:
      - monitoring
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--storage.tsdb.retention.time=10y'

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=<password>
    volumes:
      - grafana_data:/var/lib/grafana
    ports:
      - "3000:3000"
    depends_on:
      - prometheus
    networks:
      - monitoring

volumes:
  prometheus_data:
    driver: local  # Persistent volume for Prometheus data
  grafana_data:
    driver: local  # Persistent volume for Grafana data

networks:
  monitoring:
    driver: bridge

Error / log output:

[12/6/2025, 10:15:53 PM] Checking for new videos in 5 minutes...
[12/6/2025, 10:20:53 PM] Fetching user subscriptions...
node:internal/process/promises:332
    triggerUncaughtException(err, true /* fromPromise */);
    ^

Eh [HTTPError]: Request failed with status code 403 (Forbidden): GET https://www.floatplane.com/api/v3/user/subscriptions
    at t.<anonymous> (/fp/float.cjs:311:51487)
    at process.processTicksAndRejections (node:internal/process/task_queues:103:5) {
  code: 'ERR_NON_2XX_3XX_RESPONSE',
  input: undefined,
  timings: {
    start: 1765059653785,
    socket: 1765059653785,
    lookup: 1765059653786,
    connect: 1765059653791,
    secureConnect: 1765059653800,
    upload: 1765059653800,
    response: 1765059653915,
    end: 1765059653916,
    error: undefined,
    abort: undefined,
    phases: {
      wait: 0,
      dns: 1,
      tcp: 5,
      tls: 9,
      request: 0,
      firstByte: 115,
      download: 1,
      total: 131
    }
  },
  options: t {
    _unixOptions: undefined,
    _internals: {
      request: undefined,
      agent: { http: undefined, https: undefined, http2: undefined },
      h2session: undefined,
      decompress: true,
      timeout: {
        connect: undefined,
        lookup: undefined,
        read: undefined,
        request: undefined,
        response: undefined,
        secureConnect: undefined,
        send: undefined,
        socket: undefined
      },
      prefixUrl: '',
      body: undefined,
      form: undefined,
      json: undefined,
      cookieJar: undefined,
      ignoreInvalidCookies: false,
      searchParams: undefined,
      dnsLookup: undefined,
      dnsCache: undefined,
      context: {},
      hooks: {
        init: [],
        beforeRequest: [ [AsyncFunction (anonymous)], [Function (anonymous)] ],
        beforeError: [],
        beforeRedirect: [],
        beforeRetry: [],
        beforeCache: [],
        afterResponse: [ [Function (anonymous)] ]
      },
      followRedirect: true,
      maxRedirects: 10,
      cache: undefined,
      throwHttpErrors: true,
      username: '',
      password: '',
      http2: false,
      allowGetBody: false,
      copyPipedHeaders: true,
      headers: {
        'user-agent': 'Floatplane-Downloader/5.19.2 (Inrix, +https://github.com/Inrixia/Floatplane-Downloader), CFNetwork',
        accept: 'application/json',
        connection: 'keep-alive',
        'accept-encoding': 'gzip, deflate, br, zstd',
        authorization: 'Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJicEZ3WC10MkhIUjNCR1ZoUzd1YWx3RWw5UnNHbVdjTDMydUpNS1R1U1RvIn0.eyJleHAiOjE3NjUwNTk2NDMsImlhdCI6MTc2NTA1Nzg0MywiYXV0aF90aW1lIjoxNzY1MDE0MzU1LCJqdGkiOiJvZnJ0cnQ6ZjRlMDYwNzktODkyOC1mMjc0LWQwNjQtMmIyOTk5YTVmNDI1IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLmZsb2F0cGxhbmUuY29tL3JlYWxtcy9mbG9hdHBsYW5lIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjY0M2JmZjRhZDA5NjVmN2I3NDc4YmIzMCIsInR5cCI6IkJlYXJlciIsImF6cCI6ImZsb2F0cGxhbmUtZG93bmxvYWRlciIsInNpZCI6IjUzM2FlNzA3LTFkZTYtZTc4Yy04YTk5LTdlOTQ3ODU2MzMzNiIsImFjciI6IjEiLCJhbGxvd2VkLW9yaWdpbnMiOlsiLyoiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwiZGVmYXVsdC1yb2xlcy1mbG9hdHBsYW5lIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIG9mZmxpbmVfYWNjZXNzIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsInByZWZlcnJlZF91c2VybmFtZSI6Im1pbmRsZXNzOTk5IiwiZW1haWwiOiJtaW5kbGVzc0BtaW5kbGVzczk5OS5uZXQifQ.Sit3CZEYWsmEzZeDmN-2k7Xax0bBjC2k0EGaPxgczNjNlxZ6FlyOcgrnBx34fRqykIB3nhAIiCJ7j1KGlBMzeVpTOiQYv6mZePaAWacBWe6jwV5Ey8sAxcGL9nUJOIaPrjWfDy5lK3Q2mRPw4NAtUBtVRpG92YFTvyWvkLIemuGbe-RB4iTw4NoPZy-ClaLcdD3HrnMVrOYPvmKIkfXsR1OQfL3YrJjeagNx2Z8cFELOOjsiq5LbVf9hb1u_aMn8iFmhHuZ4tKraR_1wtSvoMmvROUTVVwvOJkuoZs37ypWYHChYp4bPdlOyIXEc5zYSxX4e1L3Ve8KoNZ7KWxO31w'
      },
      methodRewriting: false,
      dnsLookupIpVersion: undefined,
      parseJson: [Function: parse],
      stringifyJson: [Function: stringify],
      retry: {
        limit: 5,
        methods: [ 'GET', 'PUT', 'HEAD', 'DELETE', 'OPTIONS', 'TRACE' ],
        statusCodes: [
          408, 413, 429, 500,
          502, 503, 504, 521,
          522, 524
        ],
        errorCodes: [
          'ETIMEDOUT',
          'ECONNRESET',
          'EADDRINUSE',
          'ECONNREFUSED',
          'EPIPE',
          'ENOTFOUND',
          'ENETUNREACH',
          'EAI_AGAIN'
        ],
        maxRetryAfter: undefined,
        calculateDelay: [Function: calculateDelay],
        backoffLimit: Infinity,
        noise: 100,
        enforceRetryRules: false
      },
      localAddress: undefined,
      method: 'GET',
      createConnection: undefined,
      cacheOptions: {
        shared: undefined,
        cacheHeuristic: undefined,
        immutableMinTimeToLive: undefined,
        ignoreCargoCult: undefined
      },
      https: {
        alpnProtocols: undefined,
        rejectUnauthorized: undefined,
        checkServerIdentity: undefined,
        serverName: undefined,
        certificateAuthority: undefined,
        key: undefined,
        certificate: undefined,
        passphrase: undefined,
        pfx: undefined,
        ciphers: undefined,
        honorCipherOrder: undefined,
        minVersion: undefined,
        maxVersion: undefined,
        signatureAlgorithms: undefined,
        tlsSessionLifetime: undefined,
        dhparam: undefined,
        ecdhCurve: undefined,
        certificateRevocationLists: undefined,
        secureOptions: undefined
      },
      encoding: undefined,
      resolveBodyOnly: false,
      isStream: false,
      responseType: 'text',
      url: https://www.floatplane.com/api/v3/user/subscriptions,
      pagination: {
        transform: [Function: transform],
        paginate: [Function: paginate],
        filter: [Function: filter],
        shouldContinue: [Function: shouldContinue],
        countLimit: Infinity,
        backoff: 0,
        requestLimit: 10000,
        stackAllItems: false
      },
      setHost: true,
      maxHeaderSize: undefined,
      signal: undefined,
      enableUnixSockets: false,
      strictContentLength: false
    },
    _merging: false,
    _init: [
      {
        headers: {
          'User-Agent': 'Floatplane-Downloader/5.19.2 (Inrix, +https://github.com/Inrixia/Floatplane-Downloader), CFNetwork',
          accept: 'application/json',
          connection: 'keep-alive'
        },
        retry: { limit: 5 },
        hooks: { beforeRequest: [ [AsyncFunction (anonymous)] ] }
      },
      {
        hooks: {
          beforeRequest: [ [Function (anonymous)] ],
          afterResponse: [ [Function (anonymous)] ]
        }
      }
    ],
    _startTime: 1765059653784
  },
  [cause]: {}
}

Node.js v25.2.1
(node:1) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
[12/6/2025, 10:20:54 PM] Unable to authenticate with floatplane... Request failed with status code 403 (Forbidden): GET https://www.floatplane.com/api/v3/user/self
Please login to floatplane...
[12/6/2025, 10:20:55 PM]
Signed in as <username>!

[12/6/2025, 10:20:55 PM] Initalized! Running version 5.19.2 instance 643bff4ad0965f7b7478bb30
[12/6/2025, 10:20:55 PM] Fetching user subscriptions...
[12/6/2025, 10:20:55 PM] Fetching LTT Supporter's channels...

Mindless999 avatar Dec 07 '25 09:12 Mindless999