{"timestamp":"2026-07-07 11:43:00.698","source":"Server.js:220","message":"=== Starting Server ===","levelName":"INFO","level":2} {"timestamp":"2026-07-07 11:43:00.699","source":"Server.js:143","message":"[Server] Init v2.35.1","levelName":"INFO","level":2} {"timestamp":"2026-07-07 11:43:00.699","source":"Server.js:144","message":"[Server] Node.js Version: v20.20.2","levelName":"INFO","level":2} {"timestamp":"2026-07-07 11:43:00.699","source":"Server.js:145","message":"[Server] Platform: linux","levelName":"INFO","level":2} {"timestamp":"2026-07-07 11:43:00.700","source":"Server.js:146","message":"[Server] Arch: x64","levelName":"INFO","level":2} {"timestamp":"2026-07-07 11:43:00.708","source":"Database.js:217","message":"[Database] Initializing db at \"/config/absdatabase.sqlite\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 11:43:00.747","source":"Database.js:292","message":"[Database] Loading extension /usr/local/lib/nusqlite3/libnusqlite3.so","levelName":"INFO","level":2} {"timestamp":"2026-07-07 11:43:00.747","source":"Database.js:300","message":"[Database] Successfully loaded extension /usr/local/lib/nusqlite3/libnusqlite3.so","levelName":"INFO","level":2} {"timestamp":"2026-07-07 11:43:00.748","source":"Database.js:269","message":"[Database] Db supports unaccent and unicode foldings","levelName":"INFO","level":2} {"timestamp":"2026-07-07 11:43:00.748","source":"Database.js:273","message":"[Database] Db connection was successful","levelName":"INFO","level":2} {"timestamp":"2026-07-07 11:43:00.758","source":"MigrationManager.js:82","message":"[MigrationManager] Database is already up to date.","levelName":"INFO","level":2} {"timestamp":"2026-07-07 11:43:00.930","source":"Database.js:201","message":"[Database] Db initialized with models: user, session, apiKey, library, libraryFolder, book, podcast, podcastEpisode, libraryItem, mediaProgress, series, bookSeries, author, bookAuthor, collection, collectionBook, playlist, playlistMediaItem, device, playbackSession, feed, feedEpisode, setting, customMetadataProvider, mediaItemShare","levelName":"INFO","level":2} {"timestamp":"2026-07-07 11:43:00.982","source":"Database.js:207","message":"[Database] running ANALYZE","levelName":"INFO","level":2} {"timestamp":"2026-07-07 11:43:00.987","source":"Database.js:209","message":"[Database] ANALYZE completed","levelName":"INFO","level":2} {"timestamp":"2026-07-07 11:43:00.988","source":"LogManager.js:71","message":"[LogManager] Init current daily log filename: 2026-07-07.txt","levelName":"INFO","level":2} {"timestamp":"2026-07-07 11:43:00.995","source":"BackupManager.js:327","message":"[BackupManager] 0 Backups Found","levelName":"INFO","level":2} {"timestamp":"2026-07-07 11:43:01.019","source":"Server.js:423","message":"Listening on port :80","levelName":"INFO","level":2} {"timestamp":"2026-07-07 11:44:38.184","source":"LocalAuthStrategy.js:107","message":"[LocalAuth] Failed login attempt for username \"admin\" from ip ::ffff:70.133.255.59 (User not found)","levelName":"ERROR","level":4} {"timestamp":"2026-07-07 11:46:00.734","source":"LocalAuthStrategy.js:107","message":"[LocalAuth] Failed login attempt for username \"admin\" from ip ::ffff:70.133.255.59 (User not found)","levelName":"ERROR","level":4} {"timestamp":"2026-07-07 11:46:05.648","source":"LocalAuthStrategy.js:107","message":"[LocalAuth] Failed login attempt for username \"admin\" from ip ::ffff:70.133.255.59 (User not found)","levelName":"ERROR","level":4} {"timestamp":"2026-07-07 11:49:40.111","source":"LocalAuthStrategy.js:107","message":"[LocalAuth] Failed login attempt for username \"coze\" from ip ::ffff:70.133.255.59 (User not found)","levelName":"ERROR","level":4} {"timestamp":"2026-07-07 11:49:45.861","source":"LocalAuthStrategy.js:107","message":"[LocalAuth] Failed login attempt for username \"coze\" from ip ::ffff:70.133.255.59 (User not found)","levelName":"ERROR","level":4} {"timestamp":"2026-07-07 11:49:52.087","source":"LocalAuthStrategy.js:107","message":"[LocalAuth] Failed login attempt for username \"admin\" from ip ::ffff:70.133.255.59 (User not found)","levelName":"ERROR","level":4} {"timestamp":"2026-07-07 11:49:58.252","source":"LocalAuthStrategy.js:107","message":"[LocalAuth] Failed login attempt for username \"admin\" from ip ::ffff:70.133.255.59 (User not found)","levelName":"ERROR","level":4} {"timestamp":"2026-07-07 11:50:19.630","source":"LocalAuthStrategy.js:88","message":"[LocalAuth] User \"root\" logged in from ip ::ffff:70.133.255.59","levelName":"INFO","level":2} {"timestamp":"2026-07-07 11:50:20.261","source":"SocketAuthority.js:185","message":"[SocketAuthority] Socket Connected to /audiobookshelf/socket.io lKSTaV-vnLnMPzSEAAAB","levelName":"INFO","level":2} {"timestamp":"2026-07-07 11:51:54.559","source":"Watcher.js:58","message":"[Watcher] Initializing watcher for \"Podcasts\".","levelName":"INFO","level":2} {"timestamp":"2026-07-07 11:51:54.567","source":"Watcher.js:89","message":"[Watcher] \"Podcasts\" Ready","levelName":"INFO","level":2} {"timestamp":"2026-07-07 11:53:05.570","source":"Watcher.js:58","message":"[Watcher] Initializing watcher for \"Audiobooks\".","levelName":"INFO","level":2} {"timestamp":"2026-07-07 11:53:05.573","source":"Watcher.js:89","message":"[Watcher] \"Audiobooks\" Ready","levelName":"INFO","level":2} {"timestamp":"2026-07-07 11:55:33.149","source":"CoverManager.js:325","message":"[CoverManager] Downloaded libraryItem cover \"/podcasts/We Can Do Hard Things/cover.jpg\" from url \"https://is1-ssl.mzstatic.com/image/thumb/Podcasts211/v4/25/04/1c/25041c54-a94b-4c84-3d79-129f8f0bdc27/mza_10132198868361967560.jpeg/600x600bb.jpg\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 11:57:26.128","source":"CoverManager.js:325","message":"[CoverManager] Downloaded libraryItem cover \"/podcasts/Scrubbing In with Becca Tilley & Tanya Rad/cover.jpg\" from url \"https://is1-ssl.mzstatic.com/image/thumb/Podcasts211/v4/76/d9/d9/76d9d94e-ffac-9f90-540b-485d4f569d4c/mza_15440100067544903659.jpg/600x600bb.jpg\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 11:57:42.950","source":"CoverManager.js:325","message":"[CoverManager] Downloaded libraryItem cover \"/podcasts/Culture Study Podcast/cover.jpg\" from url \"https://is1-ssl.mzstatic.com/image/thumb/Podcasts221/v4/e1/e9/94/e1e994a8-4a05-9447-f3b4-a68cd3325a2f/mza_190305956483207942.jpg/600x600bb.jpg\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 11:57:54.561","source":"CoverManager.js:325","message":"[CoverManager] Downloaded libraryItem cover \"/podcasts/Every Single Album/cover.jpg\" from url \"https://is1-ssl.mzstatic.com/image/thumb/Podcasts211/v4/04/58/0e/04580ee6-ee63-5ad4-45c9-8dfc44c7ab43/mza_2754386282431277199.jpg/600x600bb.jpg\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 11:58:06.511","source":"CoverManager.js:325","message":"[CoverManager] Downloaded libraryItem cover \"/podcasts/You're Wrong About/cover.jpg\" from url \"https://is1-ssl.mzstatic.com/image/thumb/Podcasts211/v4/d4/8c/6a/d48c6a49-8844-3d04-b04a-9de686be3531/mza_13897592476765911690.jpg/600x600bb.jpg\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 11:58:21.009","source":"CoverManager.js:325","message":"[CoverManager] Downloaded libraryItem cover \"/podcasts/A Bit Fruity with Matt Bernstein/cover.jpg\" from url \"https://is1-ssl.mzstatic.com/image/thumb/Podcasts211/v4/98/d3/c1/98d3c124-7fbb-aa42-d5b2-28a596f25a3b/mza_14052923922847099016.jpeg/600x600bb.jpg\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 11:58:30.842","source":"podcastUtils.js:162","message":"[podcastUtils] Invalid podcast episode data","levelName":"ERROR","level":4} {"timestamp":"2026-07-07 11:58:32.780","source":"CoverManager.js:325","message":"[CoverManager] Downloaded libraryItem cover \"/podcasts/This Ends at Prom/cover.jpg\" from url \"https://is1-ssl.mzstatic.com/image/thumb/Podcasts115/v4/b2/23/ad/b223ad53-acfe-834e-59f2-e68eda5d544c/mza_4530543550892806463.jpg/600x600bb.jpg\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 11:58:47.092","source":"CoverManager.js:325","message":"[CoverManager] Downloaded libraryItem cover \"/podcasts/You Are Good/cover.jpg\" from url \"https://is1-ssl.mzstatic.com/image/thumb/Podcasts116/v4/e2/1f/32/e21f323b-bc41-57b4-d33c-5ed80cc65eca/mza_1641041298328856258.jpg/600x600bb.jpg\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 11:59:06.838","source":"CoverManager.js:325","message":"[CoverManager] Downloaded libraryItem cover \"/podcasts/The Bechdel Cast/cover.jpg\" from url \"https://is1-ssl.mzstatic.com/image/thumb/Podcasts211/v4/8f/b0/ba/8fb0baa5-4cc0-52b9-904c-e620afd4716d/mza_4716026261265533189.jpg/600x600bb.jpg\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:01:39.724","source":"PodcastManager.js:163","message":"[PodcastManager] Successfully downloaded podcast episode \"Kiki's Delivery Service w. Livia Tsang \"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:01:43.292","source":"PodcastManager.js:163","message":"[PodcastManager] Successfully downloaded podcast episode \"The Fast and the Furious (2001) w. Kasai Richardson and Samuel James \"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:01:47.161","source":"PodcastManager.js:163","message":"[PodcastManager] Successfully downloaded podcast episode \"Fast & Furious (2009) w. Samuel James and Kasai Richardson\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:02:43.641","source":"PodcastManager.js:163","message":"[PodcastManager] Successfully downloaded podcast episode \"The Mel Robbins Griftpocalypse (with Princess Weekes + Kat Tenbarge)\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:02:48.997","source":"PodcastManager.js:163","message":"[PodcastManager] Successfully downloaded podcast episode \"The Campaign To Crush Chappell Roan\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:03:28.969","source":"PodcastManager.js:163","message":"[PodcastManager] Successfully downloaded podcast episode \"What Made Our Boomer Moms... Like This?\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:03:34.349","source":"PodcastManager.js:163","message":"[PodcastManager] Successfully downloaded podcast episode \"Intergenerational Friendships Rule\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:03:37.395","source":"PodcastManager.js:163","message":"[PodcastManager] Successfully downloaded podcast episode \"What's With All The Nostalgia For 2008?\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:05:09.267","source":"PodcastManager.js:163","message":"[PodcastManager] Successfully downloaded podcast episode \"'Dancing on the Wall' | Every Single Album: MUNA\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:05:38.199","source":"PodcastManager.js:163","message":"[PodcastManager] Successfully downloaded podcast episode \"Taylor Swift's Songwriting and Noah Kahan's 'The Great Divide'\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:05:44.111","source":"podcastUtils.js:162","message":"[podcastUtils] Invalid podcast episode data","levelName":"ERROR","level":4} {"timestamp":"2026-07-07 12:06:05.214","source":"PodcastManager.js:163","message":"[PodcastManager] Successfully downloaded podcast episode \"'You Seem Pretty Sad for a Girl So in Love' | Every Single Album: Olivia Rodrigo\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:06:38.160","source":"PodcastManager.js:163","message":"[PodcastManager] Successfully downloaded podcast episode \"Album Swap: 'Autobiography' by Ashlee Simpson and 'Not a Pretty Girl' by Ani DiFranco\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:07:00.478","source":"PodcastManager.js:163","message":"[PodcastManager] Successfully downloaded podcast episode \"'This Music May Contain Hope' | Every Single Album: RAYE\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:07:08.649","source":"PodcastManager.js:163","message":"[PodcastManager] Successfully downloaded podcast episode \"Album Swap: 'The Spirit Room' by Michelle Branch vs. 'So' by Peter Gabriel\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:07:16.592","source":"PodcastManager.js:163","message":"[PodcastManager] Successfully downloaded podcast episode \"'luck... or something' | Every Single Album: Hilary Duff\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:07:20.802","source":"PodcastManager.js:163","message":"[PodcastManager] Successfully downloaded podcast episode \"So It’s Gonna Be Forever…\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:07:23.398","source":"PodcastManager.js:163","message":"[PodcastManager] Successfully downloaded podcast episode \"Dear Banya: There Could Be 100 People in a Room\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:07:27.211","source":"PodcastManager.js:163","message":"[PodcastManager] Successfully downloaded podcast episode \"Must Be Nice\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:07:30.337","source":"PodcastManager.js:163","message":"[PodcastManager] Successfully downloaded podcast episode \"Dear Banya: Not Cool Enough for These Eyepatches\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:07:36.231","source":"PodcastManager.js:163","message":"[PodcastManager] Successfully downloaded podcast episode \"Captain America: The First Avenger\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:07:39.696","source":"PodcastManager.js:163","message":"[PodcastManager] Successfully downloaded podcast episode \"Desert Hearts with Emily Mills\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:07:42.927","source":"PodcastManager.js:163","message":"[PodcastManager] Successfully downloaded podcast episode \"High School Musical 3: Senior Year (2008)\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:07:45.992","source":"PodcastManager.js:163","message":"[PodcastManager] Successfully downloaded podcast episode \"The Sisterhood of the Traveling Pants (2005)\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:07:49.198","source":"PodcastManager.js:163","message":"[PodcastManager] Successfully downloaded podcast episode \"The Runaways (2010)\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:07:54.380","source":"PodcastManager.js:163","message":"[PodcastManager] Successfully downloaded podcast episode \"The Real Minority Rule Conspiracy | Amanda with Rep. Justin J. Pearson \"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:07:58.524","source":"PodcastManager.js:163","message":"[PodcastManager] Successfully downloaded podcast episode \"Do You Ever Feel Like a Total Loser? \"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:08:05.115","source":"PodcastManager.js:163","message":"[PodcastManager] Successfully downloaded podcast episode \"The Cost of Truth Telling (And Why We Paid It)\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:08:08.426","source":"PodcastManager.js:163","message":"[PodcastManager] Successfully downloaded podcast episode \"Crying in Baseball with Julie Kliegman\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:08:11.396","source":"PodcastManager.js:163","message":"[PodcastManager] Successfully downloaded podcast episode \"Rainbows with Lulu Miller\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:08:14.130","source":"PodcastManager.js:163","message":"[PodcastManager] Successfully downloaded podcast episode \"What to Carry, What to Burn with Blair Braverman\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:08:17.942","source":"PodcastManager.js:163","message":"[PodcastManager] Successfully downloaded podcast episode \"The Great American Spelling Bee with Gabe Henry\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:14:00.960","source":"LocalAuthStrategy.js:88","message":"[LocalAuth] User \"root\" logged in from ip ::ffff:70.133.255.59","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:14:01.597","source":"SocketAuthority.js:185","message":"[SocketAuthority] Socket Connected to /socket.io ZmclQ9EAAq9RvWHeAAAD","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:15:40.223","source":"SocketAuthority.js:227","message":"[SocketAuthority] Socket ZmclQ9EAAq9RvWHeAAAD disconnected from client \"root\" after 98626ms (Reason: transport close)","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:35:43.443","source":"SocketAuthority.js:227","message":"[SocketAuthority] Socket lKSTaV-vnLnMPzSEAAAB disconnected from client \"root\" after 2723183ms (Reason: transport close)","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:35:51.750","source":"SocketAuthority.js:185","message":"[SocketAuthority] Socket Connected to /audiobookshelf/socket.io sBHrCVcIYrptPWs3AAAF","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:44:33.343","source":"SocketAuthority.js:227","message":"[SocketAuthority] Socket sBHrCVcIYrptPWs3AAAF disconnected from client \"root\" after 521592ms (Reason: transport close)","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:46:24.111","source":"SocketAuthority.js:185","message":"[SocketAuthority] Socket Connected to /audiobookshelf/socket.io oMeGAIVKdvTyl4zmAAAH","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:48:40.939","source":"SocketAuthority.js:227","message":"[SocketAuthority] Socket oMeGAIVKdvTyl4zmAAAH disconnected from client \"root\" after 136828ms (Reason: transport close)","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:48:41.926","source":"SocketAuthority.js:185","message":"[SocketAuthority] Socket Connected to /audiobookshelf/socket.io 3c1gbe_Qp1nAfPWHAAAJ","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:48:45.341","source":"SocketAuthority.js:227","message":"[SocketAuthority] Socket 3c1gbe_Qp1nAfPWHAAAJ disconnected from client \"root\" after 3415ms (Reason: transport close)","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:53:39.642","source":"Auth.js:341","message":"[Auth] Failed to refresh token. No refresh token provided","levelName":"ERROR","level":4} {"timestamp":"2026-07-07 12:53:51.667","source":"LocalAuthStrategy.js:88","message":"[LocalAuth] User \"root\" logged in from ip ::ffff:70.133.255.59","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:53:52.207","source":"SocketAuthority.js:185","message":"[SocketAuthority] Socket Connected to /audiobookshelf/socket.io egoUSFZtQ2yOD4cYAAAL","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:54:46.123","source":"SocketAuthority.js:227","message":"[SocketAuthority] Socket egoUSFZtQ2yOD4cYAAAL disconnected from client \"root\" after 53916ms (Reason: transport close)","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:56:03.129","source":"SocketAuthority.js:185","message":"[SocketAuthority] Socket Connected to /audiobookshelf/socket.io ryotwhGnMCSXxnGHAAAN","levelName":"INFO","level":2} {"timestamp":"2026-07-07 12:56:07.120","source":"SocketAuthority.js:227","message":"[SocketAuthority] Socket ryotwhGnMCSXxnGHAAAN disconnected from client \"root\" after 3991ms (Reason: transport close)","levelName":"INFO","level":2} {"timestamp":"2026-07-07 13:00:27.928","source":"SocketAuthority.js:185","message":"[SocketAuthority] Socket Connected to /audiobookshelf/socket.io Alsku9ojZfnrl4oJAAAP","levelName":"INFO","level":2} {"timestamp":"2026-07-07 13:01:07.317","source":"SocketAuthority.js:227","message":"[SocketAuthority] Socket Alsku9ojZfnrl4oJAAAP disconnected from client \"root\" after 39388ms (Reason: transport close)","levelName":"INFO","level":2} {"timestamp":"2026-07-07 13:01:08.585","source":"SocketAuthority.js:185","message":"[SocketAuthority] Socket Connected to /audiobookshelf/socket.io 7DBYXE45WMgXAQFfAAAR","levelName":"INFO","level":2} {"timestamp":"2026-07-07 13:01:13.862","source":"SocketAuthority.js:227","message":"[SocketAuthority] Socket 7DBYXE45WMgXAQFfAAAR disconnected from client \"root\" after 5276ms (Reason: client namespace disconnect)","levelName":"INFO","level":2} {"timestamp":"2026-07-07 13:01:13.864","source":"Auth.js:488","message":"[Auth] logout: No refresh token on request","levelName":"INFO","level":2} {"timestamp":"2026-07-07 13:01:22.984","source":"LocalAuthStrategy.js:88","message":"[LocalAuth] User \"root\" logged in from ip ::ffff:70.133.255.59","levelName":"INFO","level":2} {"timestamp":"2026-07-07 13:01:23.527","source":"SocketAuthority.js:185","message":"[SocketAuthority] Socket Connected to /audiobookshelf/socket.io sgFjHbKb06G5-kYQAAAT","levelName":"INFO","level":2} {"timestamp":"2026-07-07 13:01:40.704","source":"SocketAuthority.js:227","message":"[SocketAuthority] Socket sgFjHbKb06G5-kYQAAAT disconnected from client \"root\" after 17176ms (Reason: transport close)","levelName":"INFO","level":2} {"timestamp":"2026-07-07 13:22:50.086","source":"SocketAuthority.js:185","message":"[SocketAuthority] Socket Connected to /audiobookshelf/socket.io bMQ8DjDoIcAwSYOsAAAV","levelName":"INFO","level":2} {"timestamp":"2026-07-07 13:22:54.026","source":"SocketAuthority.js:227","message":"[SocketAuthority] Socket bMQ8DjDoIcAwSYOsAAAV disconnected from client \"root\" after 3939ms (Reason: transport close)","levelName":"INFO","level":2} {"timestamp":"2026-07-07 13:24:44.477","source":"Server.js:220","message":"=== Starting Server ===","levelName":"INFO","level":2} {"timestamp":"2026-07-07 13:24:44.478","source":"Server.js:143","message":"[Server] Init v2.35.1","levelName":"INFO","level":2} {"timestamp":"2026-07-07 13:24:44.478","source":"Server.js:144","message":"[Server] Node.js Version: v20.20.2","levelName":"INFO","level":2} {"timestamp":"2026-07-07 13:24:44.479","source":"Server.js:145","message":"[Server] Platform: linux","levelName":"INFO","level":2} {"timestamp":"2026-07-07 13:24:44.479","source":"Server.js:146","message":"[Server] Arch: x64","levelName":"INFO","level":2} {"timestamp":"2026-07-07 13:24:44.505","source":"Database.js:217","message":"[Database] Initializing db at \"/config/absdatabase.sqlite\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 13:24:44.560","source":"Database.js:292","message":"[Database] Loading extension /usr/local/lib/nusqlite3/libnusqlite3.so","levelName":"INFO","level":2} {"timestamp":"2026-07-07 13:24:44.562","source":"Database.js:300","message":"[Database] Successfully loaded extension /usr/local/lib/nusqlite3/libnusqlite3.so","levelName":"INFO","level":2} {"timestamp":"2026-07-07 13:24:44.562","source":"Database.js:269","message":"[Database] Db supports unaccent and unicode foldings","levelName":"INFO","level":2} {"timestamp":"2026-07-07 13:24:44.563","source":"Database.js:273","message":"[Database] Db connection was successful","levelName":"INFO","level":2} {"timestamp":"2026-07-07 13:24:44.576","source":"MigrationManager.js:82","message":"[MigrationManager] Database is already up to date.","levelName":"INFO","level":2} {"timestamp":"2026-07-07 13:24:44.755","source":"Database.js:201","message":"[Database] Db initialized with models: user, session, apiKey, library, libraryFolder, book, podcast, podcastEpisode, libraryItem, mediaProgress, series, bookSeries, author, bookAuthor, collection, collectionBook, playlist, playlistMediaItem, device, playbackSession, feed, feedEpisode, setting, customMetadataProvider, mediaItemShare","levelName":"INFO","level":2} {"timestamp":"2026-07-07 13:24:44.822","source":"Database.js:207","message":"[Database] running ANALYZE","levelName":"INFO","level":2} {"timestamp":"2026-07-07 13:24:44.841","source":"Database.js:209","message":"[Database] ANALYZE completed","levelName":"INFO","level":2} {"timestamp":"2026-07-07 13:24:44.844","source":"LogManager.js:71","message":"[LogManager] Init current daily log filename: 2026-07-07.txt","levelName":"INFO","level":2} {"timestamp":"2026-07-07 13:24:44.860","source":"BackupManager.js:327","message":"[BackupManager] 0 Backups Found","levelName":"INFO","level":2} {"timestamp":"2026-07-07 13:24:44.886","source":"Watcher.js:58","message":"[Watcher] Initializing watcher for \"Podcasts\".","levelName":"INFO","level":2} {"timestamp":"2026-07-07 13:24:44.888","source":"Watcher.js:58","message":"[Watcher] Initializing watcher for \"Audiobooks\".","levelName":"INFO","level":2} {"timestamp":"2026-07-07 13:24:44.899","source":"Server.js:423","message":"Listening on port :80","levelName":"INFO","level":2} {"timestamp":"2026-07-07 13:24:44.908","source":"Watcher.js:89","message":"[Watcher] \"Audiobooks\" Ready","levelName":"INFO","level":2} {"timestamp":"2026-07-07 13:24:44.917","source":"Watcher.js:89","message":"[Watcher] \"Podcasts\" Ready","levelName":"INFO","level":2} {"timestamp":"2026-07-07 15:17:01.508","source":"Auth.js:341","message":"[Auth] Failed to refresh token. No refresh token provided","levelName":"ERROR","level":4} {"timestamp":"2026-07-07 15:49:40.206","source":"Server.js:220","message":"=== Starting Server ===","levelName":"INFO","level":2} {"timestamp":"2026-07-07 15:49:40.206","source":"Server.js:143","message":"[Server] Init v2.35.1","levelName":"INFO","level":2} {"timestamp":"2026-07-07 15:49:40.207","source":"Server.js:144","message":"[Server] Node.js Version: v20.20.2","levelName":"INFO","level":2} {"timestamp":"2026-07-07 15:49:40.207","source":"Server.js:145","message":"[Server] Platform: linux","levelName":"INFO","level":2} {"timestamp":"2026-07-07 15:49:40.207","source":"Server.js:146","message":"[Server] Arch: x64","levelName":"INFO","level":2} {"timestamp":"2026-07-07 15:49:40.232","source":"Database.js:217","message":"[Database] Initializing db at \"/config/absdatabase.sqlite\"","levelName":"INFO","level":2} {"timestamp":"2026-07-07 15:49:40.283","source":"Database.js:292","message":"[Database] Loading extension /usr/local/lib/nusqlite3/libnusqlite3.so","levelName":"INFO","level":2} {"timestamp":"2026-07-07 15:49:40.285","source":"Database.js:300","message":"[Database] Successfully loaded extension /usr/local/lib/nusqlite3/libnusqlite3.so","levelName":"INFO","level":2} {"timestamp":"2026-07-07 15:49:40.286","source":"Database.js:269","message":"[Database] Db supports unaccent and unicode foldings","levelName":"INFO","level":2} {"timestamp":"2026-07-07 15:49:40.286","source":"Database.js:273","message":"[Database] Db connection was successful","levelName":"INFO","level":2} {"timestamp":"2026-07-07 15:49:40.303","source":"MigrationManager.js:82","message":"[MigrationManager] Database is already up to date.","levelName":"INFO","level":2} {"timestamp":"2026-07-07 15:49:40.469","source":"Database.js:201","message":"[Database] Db initialized with models: user, session, apiKey, library, libraryFolder, book, podcast, podcastEpisode, libraryItem, mediaProgress, series, bookSeries, author, bookAuthor, collection, collectionBook, playlist, playlistMediaItem, device, playbackSession, feed, feedEpisode, setting, customMetadataProvider, mediaItemShare","levelName":"INFO","level":2} {"timestamp":"2026-07-07 15:49:40.520","source":"Database.js:207","message":"[Database] running ANALYZE","levelName":"INFO","level":2} {"timestamp":"2026-07-07 15:49:40.527","source":"Database.js:209","message":"[Database] ANALYZE completed","levelName":"INFO","level":2} {"timestamp":"2026-07-07 15:49:40.528","source":"LogManager.js:71","message":"[LogManager] Init current daily log filename: 2026-07-07.txt","levelName":"INFO","level":2} {"timestamp":"2026-07-07 15:49:40.545","source":"BackupManager.js:327","message":"[BackupManager] 0 Backups Found","levelName":"INFO","level":2} {"timestamp":"2026-07-07 15:49:40.564","source":"Watcher.js:58","message":"[Watcher] Initializing watcher for \"Podcasts\".","levelName":"INFO","level":2} {"timestamp":"2026-07-07 15:49:40.565","source":"Watcher.js:58","message":"[Watcher] Initializing watcher for \"Audiobooks\".","levelName":"INFO","level":2} {"timestamp":"2026-07-07 15:49:40.574","source":"Server.js:423","message":"Listening on port :80","levelName":"INFO","level":2} {"timestamp":"2026-07-07 15:49:40.580","source":"Watcher.js:89","message":"[Watcher] \"Audiobooks\" Ready","levelName":"INFO","level":2} {"timestamp":"2026-07-07 15:49:40.587","source":"Watcher.js:89","message":"[Watcher] \"Podcasts\" Ready","levelName":"INFO","level":2} {"timestamp":"2026-07-07 17:25:11.500","source":"SocketAuthority.js:185","message":"[SocketAuthority] Socket Connected to /socket.io wTbanzminZv1gWZ1AAAB","levelName":"INFO","level":2} {"timestamp":"2026-07-07 17:53:31.172","source":"SocketAuthority.js:227","message":"[SocketAuthority] Socket wTbanzminZv1gWZ1AAAB disconnected from client \"root\" after 1699672ms (Reason: transport close)","levelName":"INFO","level":2}