60
submitted 4 months ago* (last edited 4 months ago) by RareBird15@allovertheplace.ca to c/programming@programming.dev

Let's talk CLI/TUI and Developer Workflows!

I’m looking to refresh my local toolkit and I’m curious: what are the absolute "must-have" CLI or TUI programs in your current rotation?

Whether it's a specialized utility for a specific language, a terminal-based interface for a common service, or a workflow-changing alias, I want to hear about it. I’m especially interested in tools that prioritize keyboard-driven navigation and accessibility.

My Current Favorites:

To get the ball rolling, here are a few tools I’ve been leaning on lately:

  • uv — Fast, reliable Python package and project management.
  • fzf & ripgrep — The classic duo for fuzzy finding and searching.
  • tmux — For session management and persistent terminal workspaces.
  • jq / yq — Essential for wrangling JSON and YAML without leaving the prompt.

What about you?

  1. What is one tool you've discovered recently that you can't live without?
  2. Are there any TUI-based clients for web services (like Mastodon, GitHub, or RSS) that you recommend?
  3. Do you have a favorite "hidden gem" script or small utility?

Mentions & Groups

@programming
@linux @terminal_u_i@lemmy.ml @selfhosted

Hashtags

#CLI #TUI #Terminal #OpenSource #FOSS #Programming #DevTools #Linux #SysAdmin #Workflow #Python #Backend #ArchLinux #KeyboardDriven #Accessibility #SoftwareDevelopment #TechTalk

16

This week, while trying to catch up on schoolwork, I've been discovering all the things that put my body into nap mode, and wow, it’s a lot. Pillows, recliner angles, even kicking my feet up can flip the switch from "study" to "sleep."
It's been like running my own ergonomic lab this week, testing what keeps me awake vs. what puts me to sleep.
Turns out I focus way better with my feet supported, but that's tricky when you’re short and most setups aren't built for you. Fully kicking my feet up feels nice… until I wake up two hours later wondering what happened.
I can't tell you how many hours I've lost to nap mode when I was trying to study, but maybe now that won't happen anymore.
#disability #DisabilityLife #ChronicIllness #Fibromyalgia #RheumatoidArthritis #Neurodivergent #Fatigue #Accessibility #StudyStruggles #Ergonomics #ShortPeopleProblems #DisabledAndStudying #NapMode #ActuallyAutistic #Spoonie #CollegeStudent
@disability @autistics @spoonies @chronicillness @accessibility

1

Just talked with #DisabilityServices at Colorado Christian University. They’re encouraging me to use #MicrosoftWord instead of #LaTeX for schoolwork, since Word has built-in dictation that could help when my #RheumatoidArthritis flares up and typing gets hard.

To other #Blind folks: how do you remember all of Word’s keyboard shortcuts? I swear I spend more time navigating the ribbon than actually writing. I stick with LaTeX because I can remember commands better than shortcuts.

They said Word’s dictation is accessible, so I’m giving it a shot. But I’m also wondering: what reference managers do you use? I’ve been using #Zotero since it works with #VSCode and LaTeX, but I don’t know how well it integrates with Word — and definitely not with #PowerPoint. My school has me doing a lot of #APA-style presentations lately.

Would love tips from anyone juggling accessibility, citations, and academic workflows.

@mastoblind@a.gup.pe @mastoblind @main

#Accessibility #AcademicAccess #ScreenReader #DictationTools #ChronicIllness #NeurodivergentAcademia #AcademicWriting #TechForGood #InclusiveTech #PresentationTools #CitationTools #AcademicWorkflow #DisabledAndAcademic #LaTeXCommunity #MicrosoftAccessibility #ZoteroTips

1

To #blind people with experience with #PowerPoint, I need help! My school wants me to create a #presentation with speaker notes and graphics, and I'm having extreme trouble even getting started. My info text box with my name, school, and date covers everything up, and I can't figure out moving it or how to get to speaker notes. I normally create assignments with #LaTeX, but I kept running into issues making a presentation that way. I'm on #Windows using #NVDA. Disability services made this sound doable and even easy, but so far that doesn't seem to be the case.
#accessibility #MicrosoftPowerPoint #BlindStudent @mastoblind @main

1

To #blind #Windows users, what #ClipboardManager do you use? I've been trying Ditto, but the keyboard shortcuts page seems inaccessible. I can't tell what edit field goes with what option.
#accessibility #Windows11 #clipboard #productivity
@mastoblind @main

16

Help Needed: Homepage Dashboard "Failed to construct 'URL'" Error

Hi everyone! 👋

I'm encountering a persistent issue with my self-hosted Homepage dashboard (v1.1.1). Some tabs with bookmarks fail to load, showing the error:

TypeError: Failed to construct 'URL': Invalid URL

This happens on multiple tabs, including Accessibility_Resources and Shopping. I've tried troubleshooting by:

  • Validating my YAML files (all are valid).

  • Using lowercase tab names without special characters.

  • Ensuring all URLs in bookmarks.yaml are absolute (http:// or https://).

  • Clearing browser cache and testing in multiple browsers.

Despite these efforts, the issue persists. The error appears in the browser console as follows:

TypeError: Failed to construct 'URL': Invalid URL    at F (index-3a04b80eb558747c.js:1:42899)    at af (framework-bbeeca9707659ffa.js:1:65163)    ...

I suspect the issue might be related to how Homepage processes bookmarks or tab names internally. Below are my full configuration files for reference (API keys and sensitive data redacted):

widgets.yaml

- search:    provider: custom    url: https://search.laniecarmelo.tech/search?q=%25s    target: _blank    suggestionUrl: https://search.laniecarmelo.tech/autocompleter?q=%25s    showSearchSuggestions: true- datetime:    format:        dateStyle: full        timeStyle: long        hour12: true- openmeteo:    label: Pipe Creek, TX    latitude: 29.538    longitude: -98.524    units: imperial    timezone: America/Chicago

docker.yaml

my-docker:  socket: /var/run/docker.sock

bookmarks.yaml

---- Accessibility_Resources:    - WebAIM Accessibility Tools:        abbr: WT        href: https://webaim.org/resources/        description: Tools and resources for web accessibility testing.    - A11Y Project:        abbr: AP        href: https://www.a11yproject.com/        description: Community-driven effort to make web accessibility easier.    - W3C Web Accessibility Initiative:        abbr: WA        href: https://www.w3.org/WAI/        description: Guidelines and resources for web accessibility.    - WCAG Guidelines:        abbr: WG        href: https://www.w3.org/WAI/WCAG22/quickref/        description: Quick reference for WCAG 2.1 guidelines.    - Accessibility Resources:        abbr: AR        href: https://www.w3.org/WAI/resources/        description: Comprehensive resources for web accessibility.    - Accessibility Tools:        abbr: AT        href: https://www.w3.org/WAI/test-evaluate/        description: Tools for testing and evaluating web accessibility.    - Accessibility Tutorials:        abbr: TU        href: https://www.w3.org/WAI/tutorials/        description: Tutorials on web accessibility best practices.    - WebAlign:        abbr: WL        href: https://members.convergeaccessibility.com/member-log-in/        description: Online tool for creating accessible web content.    - Contrast Checker:        abbr: CC        href: https://webaim.org/resources/contrastchecker/        description: Tool for checking color contrast ratios for accessibility.- Automation:    - Apprise Documentation:        abbr: AD        href: https://github.com/caronc/apprise/wiki/        description: Notification management tool supporting multiple services.    - Home Assistant Community:        abbr: HC        href: https://community.home-assistant.io/        description: Forum for Home Assistant users to discuss automation setups.    - Home Assistant Documentation:        abbr: HD        href: https://www.home-assistant.io/docs/        description: Official documentation for Home Assistant.    - Home Assistant Blog:        abbr: HB        href: https://www.home-assistant.io/blog/        description: Updates and news about Home Assistant.- Communication:    - Shlink Documentation:        abbr: SD        href: https://shlink.io/documentation/        description: Learn how to set up and manage Shlink.    - Element:        abbr: EL        href: https://chat.tchncs.de/        description: Secure messaging and collaboration platform.    - Outlook:        abbr: OL        href: https://outlook.office365.com/        description: Email and calendar service from Microsoft.    - Google Messages:        abbr: GM        href: https://messages.google.com/        description: SMS and MMS messaging service from Google.    - Enafore:        abbr: EN        href: https://enafore.social/        description: Alternative frontend for Mastodon, a decentralized social network.    - Mastodon:        abbr: MA        href: https://allovertheplace.ca/        description: Decentralized social network platform.    - Discord:        abbr: DC        href: https://discord.com/        description: Voice, video, and text chat platform for communities.- Developer:    - freeCodeCamp:        abbr: FC        href: https://www.freecodecamp.org/        description: Learn to code with free tutorials and projects.    - MDN Web Docs:        abbr: MD        href: https://developer.mozilla.org/        description: Comprehensive web development documentation.    - GitHub:        abbr: GH        href: https://github.com/        description: Code hosting, collaboration, and version control.    - Stack Overflow:        abbr: SO        href: https://stackoverflow.com/        description: Community-driven Q&A for programmers.    - GitLab:        abbr: GL        href: https://gitlab.com/        description: Web-based DevOps lifecycle tool providing a Git repository manager.- Information_Management:    - AppleVis:        abbr: AV        href: https://www.applevis.com/        description: Community for blind and low-vision users of Apple products.    - BibleGateway:        abbr: BG        href: https://www.biblegateway.com/        description: Search and read the Bible in multiple translations.    - Bible Resources:        abbr: BR        href: https://biblehub.com/        description: Online Bible study tools and comprehensive resources.    - YouVersion:        abbr: YV        href: https://www.youversion.com/        description: Bible app with various translations and reading plans.    - Bible Study Fellowship:        abbr: BS        href: https://www.bsfinternational.org/        description: Bible study resources and community.    - Bookshare:        abbr: BK        href: https://www.bookshare.org/        description: Accessible online library for people with print disabilities.    - BARD:        abbr: BD        href: https://nlsbard.loc.gov/        description: Braille and Audio Reading Download service for eligible users.    - Audible:        abbr: AU        href: https://www.audible.com/        description: Audiobook and spoken word entertainment service.- Productivity:    - CCU Library:        abbr: CL        href: https://www.ccu.edu/academics/library/        description: Access CCU library resources for research and study.    - ReadWorks:        abbr: RW        href: https://www.readworks.org/        description: Reading passages and comprehension activities.    - Perplexity AI:        abbr: PA        href: https://perplexity.ai/        description: AI-powered search with detailed, conversational responses.- Education:    - Codecademy:        abbr: CA        href: https://www.codecademy.com/        description: Interactive coding lessons for various languages.    - NFB:        abbr: NF        href: https://nfb.org/        description: Resources for Braille transcription and blind community.    - Canvas:        abbr: CV        href: https://canvas.instructure.com/        description: Learning management system for online courses.- Gaming_Entertainment:    - AudioGames:        abbr: AG        href: https://forum.audiogames.net/        description: Community for audio-based and accessible games.    - IncrementalDB:        abbr: ID        href: https://incrementaldb.com/        description: Database of incremental games.    - Galaxy Click:        abbr: GC        href: https://galaxy.click/        description: Open-source website for finding incremental games.- Shopping:    - InnoSearch AI:        abbr: IS        href: https://innosearch.ai/        description: Accessible e-commerce platform designed for blind users.    - Amazon:        abbr: AZ        href: https://www.amazon.com/        description: Online shopping platform with a wide range of products.    - eBay:        abbr: EB        href: https://www.ebay.com/        description: Online auction and shopping website.    - Walmart:        abbr: WM        href: https://www.walmart.com/        description: Online shopping platform with a wide range of products.    - Best Buy:        abbr: BB        href: https://www.bestbuy.com/        description: Online shopping platform for electronics and appliances.

services.yaml

---- Automation:    - Home Assistant:        href: https://homeassistant.laniecarmelo.tech/        description: Home automation platform        server: my-docker        container: homeassistant    - N8N:        href: https://n8n.laniecarmelo.tech/        description: Workflow automation tool        server: my-docker        container: n8n    - Ntfy:        href: https://ntfy.laniecarmelo.tech/        description: Self-hosted notification service        server: my-docker        container: ntfy- Communication:    - Shlink:        href: https://app.shlink.io/        description: URL shortener and link management        server: my-docker        container: shlink    - TheLounge:        href: https://irc.laniecarmelo.tech/        description: Web-based IRC client- Developer:    - Forgejo:        href: https://git.laniecarmelo.tech/        description: My Git server        widget:            type: gitea            url: https://git.laniecarmelo.tech/            key: redacted    - PrivateBin:        href: https://paste.laniecarmelo.tech/        description: Pastebin for sharing code snippets- Information_Management:    - Linkding:        href: https://bookmarks.laniecarmelo.tech/        description: Self-hosted bookmark manager        server: my-docker        container: linkding    - MiniFlux:        href: https://rss.laniecarmelo.tech/        description: Self-hosted RSS feed reader        widget:                 type: miniflux            url: https://rss.laniecarmelo.tech/            key: redacted    - RSS-Bridge:        href: https://rss-bridge.laniecarmelo.tech/        description: RSS feed generator for various websites        server: my-docker        container: rss-bridge    - SearXNG:        href: https://search.laniecarmelo.tech/        description: Self-hosted metasearch engine    - Wallabag:        href: https://read.laniecarmelo.tech/        description: Self-hosted read-it-later service        server: my-docker        container: wallabag- Monitoring:    - Beszel:        href: https://beszel.laniecarmelo.tech/        description: Server monitoring and alerts        widget:            type: beszel            url: https://beszel.laniecarmelo.tech/            version: 2            username: redacted            password: redacted            systemId: redacted    - Caddy:        href: https://caddy.laniecarmelo.tech/        description: Reverse proxy and SSL management        widget:            type: caddy            url: https://caddy.laniecarmelo.tech/    - Uptime Kuma:        href: https://uptime.laniecarmelo.tech/        description: Uptime monitoring and status page        server: my-docker        container: uptime-kuma        widget:            type: uptimekuma            url: https://uptime.laniecarmelo.tech/            slug: home    - Watchtower:        description: Docker container update monitoring        server: my-docker        container: watchtower        widget:            type: watchtower            url: http://192.168.1.137:3014/            key: redacted- Productivity:    - Beaver Habit Tracker:        href: https://habits.laniecarmelo.tech/        description: Habit tracking and productivity        server: my-docker        container: beaverhabits    - Calendar:        description: My Outlook calendar        widget:            type: calendar            firstDayInWeek: sunday            view: agenda            showTime: true            timezone: America/Chicago            integrations:                - type: ical                  url: redacted                  name: Outlook    - Joplin Server:        href: https://notes.laniecarmelo.tech/        description: Notes and knowledge management        server: my-docker        container: joplin_server    - Mealie:        href: https://recipes.laniecarmelo.tech/        description: Recipe management and meal planning        server: my-docker        container: mealie        widget:            type: mealie            url: https://recipes.laniecarmelo.tech/            key: redacted            version: 2- Server_Management:    - Cockpit:        href: https://cockpit.laniecarmelo.tech/        description: Web-based server management interface    - Dockge:        href: https://dockge.laniecarmelo.tech/        description: Docker management interface        server: my-docker        container: stacks-dockge-1    - Dozzle:        href: https://dozzle.laniecarmelo.tech/        description: Docker container logs viewer        server: my-docker        container: dozzle    - Tailscale (Raspberry Pi):        href: https://login.tailscale.com/        description: Zero-config mesh VPN        widget:            type: tailscale            deviceid: redacted            key: redacted    - Tailscale (Mini PC):        href: https://login.tailscale.com/        description: Zero-config mesh VPN        widget:            type: tailscale            deviceid: redacted            key: redacted    - Tailscale (iPhone):        href: https://login.tailscale.com/        description: Zero-config mesh VPN        widget:            type: tailscale            deviceid: redacted            key: redacted    - Tailscale (Google Pixel 9 Pro):        href: https://login.tailscale.com/        description: Zero-config mesh VPN        widget:            type: tailscale            deviceid: redacted            key: redacted

settings.yaml

title: Stormux Dashboarddescription: Links to and information about my self-hosted services and most-used sitesbase: https://home.laniecarmelo.techtheme/: darklanguage: entarget: _blankquicklaunch:  searchDescriptions: true  showSearchSuggestions: true  provider: custom  url: https://search.laniecarmelo.tech/search?q=%25s  suggestionUrl: https://search.laniecarmelo.tech/autocompleter?q=%25slayout:  # Assign each group to a tab  Accessibility_Resources:    tab: Accessibility_Resources  Automation:    tab: Automation  Communication:    tab: Communication  Developer:    tab: Developer  Education:    tab: Education  Gaming_Entertainment:    tab: Gaming_Entertainment  Information_Management:    tab: Information_Management  Monitoring:    tab: Monitoring  Productivity:    tab: Productivity  Server_Management:    tab: Server_Management  Shopping:    tab: ShoppingshowStats: true

compose.yaml

services:  homepage:    image: ghcr.io/gethomepage/homepage:latest    container_name: homepage    ports:      - 3000:3000    volumes:      - ./config:/app/config # Make sure your local config directory exists      - /var/run/docker.sock:/var/run/docker.sock # (optional) For docker integrations    environment:      HOMEPAGE_ALLOWED_HOSTS: home.laniecarmelo.tech,192.168.1.137:3000,stormux:3000      LOG_LEVEL: debug    restart: unless-stopped

If you’ve encountered this issue before or have insights into resolving it, I’d greatly appreciate your help! 🙏

Hashtags:

#SelfHosting #HomepageDashboard #WebDev #Accessibility #YAML #Bookmarks #OpenSource

Thank you in advance! 😊

@selfhosted @selfhost @selfhosting@slrpnk.net @selfhosting@a.gup.pe

[-] RareBird15@allovertheplace.ca 0 points 1 year ago

@just_another_person I don't yet have HA installed. I was trying to figure out the best way to do it when I saw that in the docs. Good to know that's not so true anymore.

[-] RareBird15@allovertheplace.ca 0 points 1 year ago

@just_another_person I read a little on the HomeAssistant website, and it didn't sound like you could use addons if you installed in Docker.

-1

Wondering if I should switch my #RaspberryPi OS from #Stormux, based on #ArchLinuxARM, to #HomeAssistantOS. I mostly work with it over SSH anyway and this might allow me to do more with it. What do others who #SelfHost think?
#SelfHosting #SelfHosted #Linux
@selfhost @selfhosting @selfhosted

27

I'm curious to hear what others are #SelfHosting! Here's my current setup:

Hardware & OS

Infrastructure & Networking

Security & Monitoring

Authentication & Identity Management

  • Authelia (Docker): Just set this up for two-factor authentication and single sign-on. Seems to be working well so far!

  • LLDAP (Docker): Lightweight LDAP server for managing authentication. Also seems to be working pretty well!
    #AuthenticationTools #IdentityManagement

Productivity & Personal Tools

Notifications & Development Workflow

  • Notifications via: #Ntfy (Docker) and Zoho's ZeptoMail (#Zoho)
  • Development Environment: Mostly using VSCode connected to my server via Remote-SSH extension. #VSCodeRemote

Accessibility Focus ♿️🖥️

Accessibility heavily influences my choices—I use a screen reader full-time (#ScreenReader), so I prioritize services usable without sight (#InclusiveDesign#DigitalAccessibility). Always open to discussing accessibility experiences or recommendations!

I've also experimented with:

  • Ollama (#Ollama): Not enough RAM on my Pi.
  • Habit trackers like Beaver Habit Tracker (#HabitTracking): Accessibility issues made it unusable for me.

I don't really have a media collection, so no Plex or Jellyfin here (#MediaServer)—but I'm always open to suggestions! I've gotten a bit addicted to exploring new self-hosted services! 😄

What's your setup like? Any cool services you'd recommend I try?

#SelfHosted #LinuxSelfHost #OpenSource #TechCommunity #FOSS #TechDIY

@selfhost @selfhosted @selfhosting

[-] RareBird15@allovertheplace.ca -1 points 2 years ago

@just_another_person These latest logs are from the service in docker, not the browser.

linkwarden03/08/202508:02:06 PM[0]   code: 'ERR_STREAM_WRITE_AFTER_END'linkwarden03/08/202508:02:06 PM[0] }linkwarden03/08/202508:02:06 PM[0] linkwarden03/08/202508:02:06 PM[0] Node.js v18.18.2linkwarden03/08/202508:02:18 PM[0] Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the clientlinkwarden03/08/202508:02:18 PM[0]     at new NodeError (node:internal/errors:405:5)linkwarden03/08/202508:02:18 PM[0]     at ServerResponse.setHeader (node:_http_outgoing:648:11)linkwarden03/08/202508:02:18 PM[0]     at _res.setHeader (/data/node_modules/next/dist/server/base-server.js:306:24)linkwarden03/08/202508:02:18 PM[0]     at sendJson (/data/node_modules/next/dist/server/api-utils/node.js:226:9)linkwarden03/08/202508:02:18 PM[0]     at apiRes.json (/data/node_modules/next/dist/server/api-utils/node.js:445:31)linkwarden03/08/202508:02:18 PM[0]     at users (/data/.next/server/pages/api/v1/users.js:325:43)linkwarden03/08/202508:02:18 PM[0]     at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {linkwarden03/08/202508:02:18 PM[0]   code: 'ERR_HTTP_HEADERS_SENT'linkwarden03/08/202508:02:18 PM[0] }linkwarden03/08/202508:02:18 PM[0] node:events:495linkwarden03/08/202508:02:18 PM[0]       throw er; // Unhandled 'error' eventlinkwarden03/08/202508:02:18 PM[0]       ^linkwarden03/08/202508:02:18 PM[0] linkwarden03/08/202508:02:18 PM[0] Error [ERR_STREAM_WRITE_AFTER_END]: write after endlinkwarden03/08/202508:02:18 PM[0]     at new NodeError (node:internal/errors:405:5)linkwarden03/08/202508:02:18 PM[0]     at ServerResponse.end (node:_http_outgoing:1017:15)linkwarden03/08/202508:02:18 PM[0]     at ServerResponse.end (/data/node_modules/next/dist/compiled/compression/index.js:22:783)linkwarden03/08/202508:02:18 PM[0]     at apiRes.end (/data/node_modules/next/dist/server/api-utils/node.js:441:32)linkwarden03/08/202508:02:18 PM[0]     at sendError (/data/node_modules/next/dist/server/api-utils/index.js:165:9)linkwarden03/08/202508:02:18 PM[0]     at apiResolver (/data/node_modules/next/dist/server/api-utils/node.js:489:34)linkwarden03/08/202508:02:18 PM[0]     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)linkwarden03/08/202508:02:18 PM[0]     at async NextNodeServer.runApi (/data/node_modules/next/dist/server/next-server.js:674:9)linkwarden03/08/202508:02:18 PM[0]     at async Object.fn (/data/node_modules/next/dist/server/next-server.js:1141:35)linkwarden03/08/202508:02:18 PM[0]     at async Router.execute (/data/node_modules/next/dist/server/router.js:315:32)linkwarden03/08/202508:02:18 PM[0] Emitted 'error' event on ServerResponse instance at:linkwarden03/08/202508:02:18 PM[0]     at emitErrorNt (node:_http_outgoing:853:9)linkwarden03/08/202508:02:18 PM[0]     at process.processTicksAndRejections (node:internal/process/task_queues:83:21) {linkwarden03/08/202508:02:18 PM[0]   code: 'ERR_STREAM_WRITE_AFTER_END'linkwarden03/08/202508:02:18 PM[0] }linkwarden03/08/202508:02:18 PM[0] linkwarden03/08/202508:02:18 PM[0] Node.js v18.18.2linkwarden03/08/202508:04:20 PM[0] Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the clientlinkwarden03/08/202508:04:20 PM[0]     at new NodeError (node:internal/errors:405:5)linkwarden03/08/202508:04:20 PM[0]     at ServerResponse.setHeader (node:_http_outgoing:648:11)linkwarden03/08/202508:04:20 PM[0]     at _res.setHeader (/data/node_modules/next/dist/server/base-server.js:306:24)linkwarden03/08/202508:04:20 PM[0]     at sendJson (/data/node_modules/next/dist/server/api-utils/node.js:226:9)linkwarden03/08/202508:04:20 PM[0]     at apiRes.json (/data/node_modules/next/dist/server/api-utils/node.js:445:31)linkwarden03/08/202508:04:20 PM[0]     at users (/data/.next/server/pages/api/v1/users.js:325:43)linkwarden03/08/202508:04:20 PM[0]     at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {linkwarden03/08/202508:04:20 PM[0]   code: 'ERR_HTTP_HEADERS_SENT'linkwarden03/08/202508:04:20 PM[0] }linkwarden03/08/202508:04:20 PM[0] node:events:495linkwarden03/08/202508:04:20 PM[0]       throw er; // Unhandled 'error' eventlinkwarden03/08/202508:04:20 PM[0]       ^linkwarden03/08/202508:04:20 PM[0] linkwarden03/08/202508:04:20 PM[0] Error [ERR_STREAM_WRITE_AFTER_END]: write after endlinkwarden03/08/202508:04:20 PM[0]     at new NodeError (node:internal/errors:405:5)linkwarden03/08/202508:04:20 PM[0]     at ServerResponse.end (node:_http_outgoing:1017:15)linkwarden03/08/202508:04:20 PM[0]     at ServerResponse.end (/data/node_modules/next/dist/compiled/compression/index.js:22:783)linkwarden03/08/202508:04:20 PM[0]     at apiRes.end (/data/node_modules/next/dist/server/api-utils/node.js:441:32)linkwarden03/08/202508:04:20 PM[0]     at sendError (/data/node_modules/next/dist/server/api-utils/index.js:165:9)linkwarden03/08/202508:04:20 PM[0]     at apiResolver (/data/node_modules/next/dist/server/api-utils/node.js:489:34)linkwarden03/08/202508:04:20 PM[0]     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)linkwarden03/08/202508:04:20 PM[0]     at async NextNodeServer.runApi (/data/node_modules/next/dist/server/next-server.js:674:9)linkwarden03/08/202508:04:20 PM[0]     at async Object.fn (/data/node_modules/next/dist/server/next-server.js:1141:35)linkwarden03/08/202508:04:20 PM[0]     at async Router.execute (/data/node_modules/next/dist/server/router.js:315:32)linkwarden03/08/202508:04:20 PM[0] Emitted 'error' event on ServerResponse instance at:linkwarden03/08/202508:04:20 PM[0]     at emitErrorNt (node:_http_outgoing:853:9)linkwarden03/08/202508:04:20 PM[0]     at process.processTicksAndRejections (node:internal/process/task_queues:83:21) {linkwarden03/08/202508:04:20 PM[0]   code: 'ERR_STREAM_WRITE_AFTER_END'linkwarden03/08/202508:04:20 PM[0] }linkwarden03/08/202508:04:20 PM[0] linkwarden03/08/202508:04:20 PM[0] Node.js v18.18.2linkwarden03/08/202508:08:11 PM[0] Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the clientlinkwarden03/08/202508:08:11 PM[0]     at new NodeError (node:internal/errors:405:5)linkwarden03/08/202508:08:11 PM[0]     at ServerResponse.setHeader (node:_http_outgoing:648:11)linkwarden03/08/202508:08:11 PM[0]     at _res.setHeader (/data/node_modules/next/dist/server/base-server.js:306:24)linkwarden03/08/202508:08:11 PM[0]     at sendJson (/data/node_modules/next/dist/server/api-utils/node.js:226:9)linkwarden03/08/202508:08:11 PM[0]     at apiRes.json (/data/node_modules/next/dist/server/api-utils/node.js:445:31)linkwarden03/08/202508:08:11 PM[0]     at users (/data/.next/server/pages/api/v1/users.js:325:43)linkwarden03/08/202508:08:11 PM[0]     at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {linkwarden03/08/202508:08:11 PM[0]   code: 'ERR_HTTP_HEADERS_SENT'linkwarden03/08/202508:08:11 PM[0] }linkwarden03/08/202508:08:11 PM[0] node:events:495linkwarden03/08/202508:08:11 PM[0]       throw er; // Unhandled 'error' eventlinkwarden03/08/202508:08:11 PM[0]       ^linkwarden03/08/202508:08:11 PM[0] linkwarden03/08/202508:08:11 PM[0] Error [ERR_STREAM_WRITE_AFTER_END]: write after endlinkwarden03/08/202508:08:11 PM[0]     at new NodeError (node:internal/errors:405:5)linkwarden03/08/202508:08:11 PM[0]     at ServerResponse.end (node:_http_outgoing:1017:15)linkwarden03/08/202508:08:11 PM[0]     at ServerResponse.end (/data/node_modules/next/dist/compiled/compression/index.js:22:783)linkwarden03/08/202508:08:11 PM[0]     at apiRes.end (/data/node_modules/next/dist/server/api-utils/node.js:441:32)linkwarden03/08/202508:08:11 PM[0]     at sendError (/data/node_modules/next/dist/server/api-utils/index.js:165:9)linkwarden03/08/202508:08:11 PM[0]     at apiResolver (/data/node_modules/next/dist/server/api-utils/node.js:489:34)linkwarden03/08/202508:08:11 PM[0]     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)linkwarden03/08/202508:08:11 PM[0]     at async NextNodeServer.runApi (/data/node_modules/next/dist/server/next-server.js:674:9)linkwarden03/08/202508:08:11 PM[0]     at async Object.fn (/data/node_modules/next/dist/server/next-server.js:1141:35)linkwarden03/08/202508:08:11 PM[0]     at async Router.execute (/data/node_modules/next/dist/server/router.js:315:32)linkwarden03/08/202508:08:11 PM[0] Emitted 'error' event on ServerResponse instance at:linkwarden03/08/202508:08:11 PM[0]     at emitErrorNt (node:_http_outgoing:853:9)linkwarden03/08/202508:08:11 PM[0]     at process.processTicksAndRejections (node:internal/process/task_queues:83:21) {linkwarden03/08/202508:08:11 PM[0]   code: 'ERR_STREAM_WRITE_AFTER_END'linkwarden03/08/202508:08:11 PM[0] }linkwarden03/08/202508:08:11 PM[0] linkwarden03/08/202508:08:11 PM[0] Node.js v18.18.2linkwarden03/08/202508:14:32 PM[0] Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the clientlinkwarden03/08/202508:14:32 PM[0]     at new NodeError (node:internal/errors:405:5)linkwarden03/08/202508:14:32 PM[0]     at ServerResponse.setHeader (node:_http_outgoing:648:11)linkwarden03/08/202508:14:32 PM[0]     at _res.setHeader (/data/node_modules/next/dist/server/base-server.js:306:24)linkwarden03/08/202508:14:32 PM[0]     at sendJson (/data/node_modules/next/dist/server/api-utils/node.js:226:9)linkwarden03/08/202508:14:32 PM[0]     at apiRes.json (/data/node_modules/next/dist/server/api-utils/node.js:445:31)linkwarden03/08/202508:14:32 PM[0]     at users (/data/.next/server/pages/api/v1/users.js:325:43)linkwarden03/08/202508:14:32 PM[0]     at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {linkwarden03/08/202508:14:32 PM[0]   code: 'ERR_HTTP_HEADERS_SENT'linkwarden03/08/202508:14:32 PM[0] }linkwarden03/08/202508:14:32 PM[0] node:events:495linkwarden03/08/202508:14:32 PM[0]       throw er; // Unhandled 'error' eventlinkwarden03/08/202508:14:32 PM[0]       ^linkwarden03/08/202508:14:32 PM[0] linkwarden03/08/202508:14:32 PM[0] Error [ERR_STREAM_WRITE_AFTER_END]: write after endlinkwarden03/08/202508:14:32 PM[0]     at new NodeError (node:internal/errors:405:5)linkwarden03/08/202508:14:32 PM[0]     at ServerResponse.end (node:_http_outgoing:1017:15)linkwarden03/08/202508:14:32 PM[0]     at ServerResponse.end (/data/node_modules/next/dist/compiled/compression/index.js:22:783)linkwarden03/08/202508:14:32 PM[0]     at apiRes.end (/data/node_modules/next/dist/server/api-utils/node.js:441:32)linkwarden03/08/202508:14:32 PM[0]     at sendError (/data/node_modules/next/dist/server/api-utils/index.js:165:9)linkwarden03/08/202508:14:32 PM[0]     at apiResolver (/data/node_modules/next/dist/server/api-utils/node.js:489:34)linkwarden03/08/202508:14:32 PM[0]     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)linkwarden03/08/202508:14:32 PM[0]     at async NextNodeServer.runApi (/data/node_modules/next/dist/server/next-server.js:674:9)linkwarden03/08/202508:14:32 PM[0]     at async Object.fn (/data/node_modules/next/dist/server/next-server.js:1141:35)linkwarden03/08/202508:14:32 PM[0]     at async Router.execute (/data/node_modules/next/dist/server/router.js:315:32)linkwarden03/08/202508:14:32 PM[0] Emitted 'error' event on ServerResponse instance at:linkwarden03/08/202508:14:32 PM[0]     at emitErrorNt (node:_http_outgoing:853:9)linkwarden03/08/202508:14:32 PM[0]     at process.processTicksAndRejections (node:internal/process/task_queues:83:21) {linkwarden03/08/202508:14:32 PM[0]   code: 'ERR_STREAM_WRITE_AFTER_END'linkwarden03/08/202508:14:32 PM[0] }linkwarden03/08/202508:14:32 PM[0] linkwarden03/08/202508:14:32 PM[0] Node.js v18.18.2linkwarden03/08/202508:14:32 PM[0] Error: socket hang uplinkwarden03/08/202508:14:32 PM[0]     at connResetException (node:internal/errors:720:14)linkwarden03/08/202508:14:32 PM[0]     at Socket.socketOnEnd (node:_http_client:525:23)linkwarden03/08/202508:14:32 PM[0]     at Socket.emit (node:events:529:35)linkwarden03/08/202508:14:32 PM[0]     at endReadableNT (node:internal/streams/readable:1368:12)linkwarden03/08/202508:14:32 PM[0]     at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {linkwarden03/08/202508:14:32 PM[0]   code: 'ECONNRESET'linkwarden03/08/202508:14:32 PM[0] }linkwarden03/08/202508:14:32 PM[0] Error: socket hang uplinkwarden03/08/202508:14:32 PM[0]     at connResetException (node:internal/errors:720:14)linkwarden03/08/202508:14:32 PM[0]     at Socket.socketOnEnd (node:_http_client:525:23)linkwarden03/08/202508:14:32 PM[0]     at Socket.emit (node:events:529:35)linkwarden03/08/202508:14:32 PM[0]     at endReadableNT (node:internal/streams/readable:1368:12)linkwarden03/08/202508:14:32 PM[0]     at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {linkwarden03/08/202508:14:32 PM[0]   code: 'ECONNRESET'linkwarden03/08/202508:14:32 PM[0] }linkwarden03/08/202508:14:32 PM[0] Error: socket hang uplinkwarden03/08/202508:14:32 PM[0]     at connResetException (node:internal/errors:720:14)linkwarden03/08/202508:14:32 PM[0]     at Socket.socketOnEnd (node:_http_client:525:23)linkwarden03/08/202508:14:32 PM[0]     at Socket.emit (node:events:529:35)linkwarden03/08/202508:14:32 PM[0]     at endReadableNT (node:internal/streams/readable:1368:12)linkwarden03/08/202508:14:32 PM[0]     at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {linkwarden03/08/202508:14:32 PM[0]   code: 'ECONNRESET'linkwarden03/08/202508:14:32 PM[0] }
[-] RareBird15@allovertheplace.ca 1 points 2 years ago

@catloaf Once I create an account, I plan to turn off registrations. I wanted to be able to access it with an easy to remember domain rather than an IP address and port. That's why I'm exposing it.

[-] RareBird15@allovertheplace.ca 0 points 2 years ago

@nick Thanks. I thought I redacted all of that.

[-] RareBird15@allovertheplace.ca -1 points 2 years ago

@just_another_person All I knowthat all of my other services work fine. Nothing changes in the docker logs but when I click the sign up button this shows up in the console.
Error
POST https://bookmarks.laniecarmelo.tech/api/v1/users 400 (Bad Request) Stack table collapsed
t.js:1 Click to open the network panel and show request for URL: https://bookmarks.laniecarmelo.tech/api/v1/users Failed to load resource: the server responded with a status of 400 () POST https://bookmarks.laniecarmelo.tech/api/v1/users 400 (Bad Request)
[Violation] Added non-passive event listener to a scroll-blocking 'wheel' event. Consider marking event handler as 'passive' to make the page more responsive. See https://www.chromestatus.com/feature/5745543795965952 Stack table collapsed
menu.js:6 [Violation] Added non-passive event listener to a scroll-blocking 'wheel' event. Consider marking event handler as 'passive' to make the page more responsive. See https://www.chromestatus.com/feature/5745543795965952
[Violation] Added non-passive event listener to a scroll-blocking 'wheel' event. Consider marking event handler as 'passive' to make the page more responsive. See https://www.chromestatus.com/feature/5745543795965952 Stack table collapsed
menu.js:6 [Violation] Added non-passive event listener to a scroll-blocking 'wheel' event. Consider marking event handler as 'passive' to make the page more responsive. See https://www.chromestatus.com/feature/5745543795965952
[Violation] Forced reflow while executing JavaScript took 30ms
menu.js:6 [Violation] Added non-passive event listener to a scroll-blocking 'wheel' event. Consider marking event handler as 'passive' to make the page more responsive. See https://www.chromestatus.com/feature/5745543795965952

I can try taking the services out of the wildcard block and see if that helps.

9

Hi all. Hoping someone in the #SelfHosting community can help. I'm trying to set up #Linkwarden in #Docker behind #Caddy. The service is running, but I'm unable to create a user account. This is what I see in my browser console when I try:

register:1 [Intervention] Images loaded lazily and replaced with placeholders. Load events are deferred. See https://go.microsoft.com/fwlink/?linkid=2048113register%3A1 [DOM] Input elements should have autocomplete attributes (suggested: "new-password"): (More info: https://www.chromium.org/developers/design-documents/create-amazing-password-forms) <input data-testid=​"password-input" type=​"password" placeholder=​"••••••••••••••" class=​"w-full rounded-md p-2 border-neutral-content border-solid border outline-none focus:​border-primary duration-100 bg-base-100" value=​"tyq5ghp!QVH-mva1agc">register:1 [DOM] Input elements should have autocomplete attributes (suggested: "new-password"): (More info: https://www.chromium.org/developers/design-documents/create-amazing-password-forms) <input data-testid=​"password-confirm-input" type=​"password" placeholder=​"••••••••••••••" class=​"w-full rounded-md p-2 border-neutral-content border-solid border outline-none focus:​border-primary duration-100 bg-base-100" value=​"tyq5ghp!QVH-mva1agc">Errorapi/v1/users:1 Request unavailable in the network panel, try reloading the inspected page Failed to load resource: the server responded with a status of 400 () Failed to load resource: the server responded with a status of 400 ()

compose file:

services:  postgres:    image: postgres:16-alpine    container_name: linkwarden_postgres    env_file: .env    restart: always    volumes:      - ./pgdata:/var/lib/postgresql/data    networks:      - linkwarden_net  linkwarden:    env_file: .env    environment:      - DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@linkwarden_postgres:5432/postgres    restart: always    # build: . # uncomment this line to build from source    image: ghcr.io/linkwarden/linkwarden:latest # comment this line to build from source    container_name: linkwarden    ports:      - 3009:3000    volumes:      - ./data:/data/data    networks:      - linkwarden_net    depends_on:      - postgresnetworks:  linkwarden_net:    driver: bridge

Relevant part of .env file:

NEXTAUTH_URL=https://bookmarks.laniecarmelo.tech/api/v1/authNEXTAUTH_SECRET=x8az9q9w8ofAxnrVcer2vsPHeMmKSPbf Manual installation database settings# Example: DATABASE_URL=postgresql://user:password@localhost:5432/linkwardenDATABASE_URL= Docker installation database settingsPOSTGRES_PASSWORD=redacted# Additional Optional SettingsPAGINATION_TAKE_COUNT=STORAGE_FOLDER=AUTOSCROLL_TIMEOUT=NEXT_PUBLIC_DISABLE_REGISTRATION=falseNEXT_PUBLIC_CREDENTIALS_ENABLED=true

Caddyfile snippet

*.laniecarmelo.tech {    tls redacted {        dns cloudflare redacted    }    header {        Content-Security-Policy "default-src 'self' https: 'unsafe-inline' 'unsafe-eval';             img-src https: data:;             font-src 'self' https: data:;             frame-src 'self' https:;             object-src 'none'"        Referrer-Policy "strict-origin-when-cross-origin"        Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"        X-Content-Type-Options "nosniff"        X-Xss-Protection "1; mode=block"    }    encode br gzip    # Bookmarks    @bookmarks host bookmarks.laniecarmelo.tech    handle @bookmarks {        reverse_proxy 127.0.0.1:3009    }}

Can anyone help? I have no idea how to fix this.
#SelfHosted #CaddyServer #Linux #Tech #Technology
@selfhost @selfhosted @selfhosting

[-] RareBird15@allovertheplace.ca 0 points 2 years ago

@selfhost @selfhosting @selfhosted Got help on #IRC. Trick was to move trusted_proxies out of site blocks and into a global servers block and use uri /api/authz/forward-auth
instead of uri /api/verify.

8
Hi everyone, (allovertheplace.ca)

Hi everyone,

I'm encountering an issue with my self-hosted setup using Caddy 2.9.1 and Authelia 4.38.19. All domains except auth.laniecarmelo.tech return a 401 Unauthorized error. Journald logs suggest issues with insecure schemes ('') instead of https or wss.

Details:

  • Setup: Caddy as reverse proxy, Authelia for authentication
  • Domains: AdGuard Home, Forgejo, LinkAce, MiniFlux, TheLounge, Homepage, Beszel, Glances, Uptime Kuma, Tandoor Recipes, BookStack, Watchtower, Portainer
  • Logs:
    Authelia:
    Feb 24 21:01:47 stormux authelia[2932]: level=error msg="Target URL '/' has an insecure scheme '', only 'https' and 'wss' are supported"Caddy:
    Feb 24 21:19:41 stormux caddy[48845]: {"msg":"handled request","method":"GET","host":"adguard.laniecarmelo.tech","status":200}

Configurations:

Curl Output:

HTTP Request:

$ curl home.laniecarmelo.tech -v< HTTP/1.1 308 Permanent Redirect< Location: https://home.laniecarmelo.tech/

HTTPS Request:

$ curl https://home.laniecarmelo.tech/ -v< HTTP/2 401 < content-type: text/plain; charset=utf-8< server: Caddy401 Unauthorized

Does anyone know what might be causing this? I suspect it could be related to forward_auth or trusted proxies.

Thanks in advance! 🙏

#SelfHosting #CaddyServer #Authelia #ReverseProxy #TechHelp #Linux #HomeLab
@selfhost @selfhosting @selfhosted

[-] RareBird15@allovertheplace.ca 1 points 2 years ago

@offby1 @selfhost @selfhosted @selfhosting Hmm, I suspected it might be that block. Not sure how to fix it though.

6
submitted 2 years ago* (last edited 2 years ago) by RareBird15@allovertheplace.ca to c/selfhost@lemmy.ml

Need help with #Caddy configuration. Getting error:
"Error: adapting config using caddyfile: /etc/caddy/Caddyfile:20: parsed 'header' as a site address, but it is a known directive; directives must appear in a site block"

Running #LinkAce behind Caddy. Config has global options block, site blocks for subdomains, and snippets for common configs. Error persists despite:

  • Proper indentation
  • Blank lines between blocks
  • Snippets after global block
  • Valid header directives

Full config: https://privatebin.io/?e2b50660d40b8463#Awoq9mqdg5nyNB25xvd1zB8L7mX5m9e9sZJDguegJL2G
Password: bka@zhj@btc4FPR!emr

#SelfHosted #Docker #ReverseProxy #WebDev #Linux #HomeLab
@selfhost @selfhosted @selfhosting

3

#SelfHosted #LinkAce Bookmark Manager Running, but Unable to Check for Updates or Generate a Cron Token

Hi all. Hoping someone in the #SelfHosting community can help here. I'm running LinkAce in #Docker behind non-Dockerized #Caddy and #Authelia, and most things are working, but I'm seeing "Could not check for updates" at the bottom of each page, and when I tried to generate a cron token, nothing happened except for the generate button graying out. I am seeing one or two 404 errors in my logs, but I don't know if that's causing the problem or not. I don't know much about #PHP applications.

Logs

2025-02-22 23:25:26,460 INFO supervisord started with pid 12025-02-22 23:25:27,465 INFO spawned: 'php-fpm' with pid 82025-02-22 23:25:27,467 INFO spawned: 'caddy' with pid 9[22-Feb-2025 23:25:27] NOTICE: [pool www] 'user' directive is ignored when FPM is not running as root[22-Feb-2025 23:25:27] NOTICE: [pool www] 'group' directive is ignored when FPM is not running as root[22-Feb-2025 23:25:27] NOTICE: fpm is running, pid 8[22-Feb-2025 23:25:27] NOTICE: ready to handle connections{"level":"info","ts":1740266727.5264525,"msg":"using config from file","file":"/etc/caddy/Caddyfile"}{"level":"info","ts":1740266727.5280282,"msg":"adapted config to JSON","adapter":"caddyfile"}{"level":"warn","ts":1740266727.5280406,"msg":"Caddyfile input is not formatted; run 'caddy fmt --overwrite' to fix inconsistencies","adapter":"caddyfile","file":"/etc/caddy/Caddyfile","line":2}{"level":"info","ts":1740266727.529092,"logger":"admin","msg":"admin endpoint started","address":"localhost:2019","enforce_origin":false,"origins":["//localhost:2019","//[::1]:2019","//127.0.0.1:2019"]}{"level":"warn","ts":1740266727.529331,"logger":"http.auto_https","msg":"server is listening only on the HTTP port, so no automatic HTTPS will be applied to this server","server_name":"srv0","http_port":80}{"level":"info","ts":1740266727.5294206,"logger":"tls.cache.maintenance","msg":"started background certificate maintenance","cache":"0x40000bab00"}{"level":"warn","ts":1740266727.530186,"logger":"http","msg":"HTTP/2 skipped because it requires TLS","network":"tcp","addr":":80"}{"level":"warn","ts":1740266727.530195,"logger":"http","msg":"HTTP/3 skipped because it requires TLS","network":"tcp","addr":":80"}{"level":"info","ts":1740266727.530198,"logger":"http.log","msg":"server running","name":"srv0","protocols":["h1","h2","h3"]}{"level":"info","ts":1740266727.5412574,"msg":"autosaved config (load with --resume flag)","file":"/home/www-data/.config/caddy/autosave.json"}{"level":"info","ts":1740266727.541271,"msg":"serving initial configuration"}{"level":"info","ts":1740266727.5477707,"logger":"tls","msg":"cleaning storage unit","storage":"FileStorage:/home/www-data/.local/share/caddy"}{"level":"info","ts":1740266727.5541356,"logger":"tls","msg":"finished cleaning storage units"}2025-02-22 23:25:28,555 INFO success: php-fpm entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)2025-02-22 23:25:28,555 INFO success: caddy entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)::1 -  22/Feb/2025:23:25:34 +0000 "GET /index.php" 200::1 -  22/Feb/2025:23:25:34 +0000 "GET /index.php" 404

Docker Compose file

services:  #
***
LinkAce  linkace:    image: docker.io/linkace/linkace:latest    container_name: linkace    restart: unless-stopped    depends_on:      - linkace_db    ports:      - "0.0.0.0:3009:80"    volumes:      - ./.env:/app/.env      - ./backups:/app/storage/app/backups  #
***
Database  linkace_db:    image: docker.io/library/mariadb:11.5    container_name: linkace_db    restart: unless-stopped    command: mariadbd --character-set-server=utf8mb4 --collation-server=utf8mb4_bin    environment:      - MYSQL_ROOT_PASSWORD=${DB_PASSWORD}      - MYSQL_USER=${DB_USERNAME}      - MYSQL_PASSWORD=${DB_PASSWORD}      - MYSQL_DATABASE=${DB_DATABASE}    volumes:      - db:/var/lib/mysql  #
***
Cache  linkace_redis:    image: docker.io/bitnami/redis:7.4    container_name: linkace_redis    restart: unless-stopped    environment:      - REDIS_PASSWORD=${REDIS_PASSWORD}volumes:  db:

.env (secrets redacted)

## LINKACE CONFIGURATION# The app key is generated later, please leave it like thatAPP_KEY=redactedAPP_ENV=development## Configuration of the database connection## Attention: Those settings are configured during the web setup, please do not modify them now.# Set the database driver (mysql, pgsql, sqlsrv, sqlite)DB_CONNECTION=mysql# Set the host of your database hereDB_HOST=linkace_db# Set the port of your database hereDB_PORT=3306# Set the database name hereDB_DATABASE=linkace# Set both username and password of the user accessing the databaseDB_USERNAME=linkace# Wrap your password into quotes (") if it contains special charactersDB_PASSWORD=redacted## Redis cache configuration# Set the Redis connection here if you want to use itREDIS_HOST=linkace_redisREDIS_PASSWORD=redactedREDIS_PORT=6379APP_DEBUG=true# SSO configurationSSO_ENABLED=trueSSO_OIDC_ENABLED=trueSSO_REGISTRATION_ENABLED=trueREGULAR_LOGIN_DISABLED=trueSSO_OIDC_BASE_URL=https://auth.laniecarmelo.tech/  # Your Authelia base URLSSO_OIDC_CLIENT_ID=linkaceSSO_OIDC_CLIENT_SECRET='redacted'SSO_OIDC_SCOPES=openid,profile,email

Caddyfile snippet

{    email laniecarmelo@gmail.com    debug    acme_dns cloudflare redacted    http_port 80    https_port 443    admin :2019 {        origins 127.0.0.1:2019 0.0.0.0:2019 stormux:2019 caddy.laniecarmelo.tech    }}(logconfig) {    log {        output stdout        format json    }}(auth_headers) {    header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"}(proxy_config) {    header_up Host {http.request.host}    header_up X-Real-IP {http.request.remote}    header_up X-Forwarded-User {http.auth.user.id} # Pass user ID    header_up X-Forwarded-Email {http.auth.user.email} # Pass email}(authelia_middleware) {    forward_auth localhost:9091 {        uri /api/verify?rd=https://auth.laniecarmelo.tech/        copy_headers Remote-User Remote-Email Remote-Groups Authorization    }}bookmarks.laniecarmelo.tech {    route {        import authelia_middleware        reverse_proxy localhost:3009 {  # Directly proxy to LinkAce's web server            import proxy_config        }    }    import logconfig    import auth_headers}

Authelia config snippet

    - domain: "*.laniecarmelo.tech"      policy: bypass      networks:        - 192.168.1.0/24    # Local network        - 172.17.0.0/16     # Docker bridge network        - 100.64.0.0/10     # Tailscale network    - domain: "bookmarks.laniecarmelo.tech"      resources: ["^/api.*"]      policy: bypass    - domain: "*.laniecarmelo.tech"      policy: one_factor            - client_id: linkace        client_name: LinkAce bookmarking app        client_secret: redacted         public: false        authorization_policy: one_factor        scopes: [openid, groups, profile, email, offline_access]        redirect_uris:          - https://bookmarks.laniecarmelo.tech/auth/oidc/callback        grant_types: [authorization_code]        response_types: [code]        response_modes: [form_post, query]        userinfo_signed_response_alg: none        consent_mode: explicit        pre_configured_consent_duration: "1y"

Does anyone know what might be causing this and how I can fix it?
#Linux #ArchLinuxARM #Stormux #RaspberryPi #RaspberryPi500 #RPi #RPi500 #tech #technology
@selfhost @selfhosted @selfhosting

[-] RareBird15@allovertheplace.ca 0 points 2 years ago

@just_another_person Someone else helped me figure it out. My proxy rule for MiniFlux was a bit off. It works now. Lol now trying to get ReactFlux working.

[-] RareBird15@allovertheplace.ca 0 points 2 years ago

@just_another_person I've looked at my console log, and it's blank. Nothing comes up when I get redirected.

[-] RareBird15@allovertheplace.ca -1 points 2 years ago

@just_another_person I've looked into it a little, and I don't think I need to add paths to my Caddyfile since MiniFlux has its own subdomain with nothing else on it. From what I've gathered, adding paths is most useful if you have different services running on one subdomain.

[-] RareBird15@allovertheplace.ca -1 points 2 years ago

@just_another_person Not sure what paths to add or how. I don't know the MiniFlux UI that well to know every path it needs. I didn't think you had to add paths to the reverse proxy, just the subdomain. That's how all of my services are configured.

view more: next ›

RareBird15

0 post score
0 comment score
joined 2 years ago