Skip to content

Docker container "crashes" every 30 min #261

@Mindless999

Description

@Mindless999

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...

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions