Skip Navigation
🌟 Self-Hosting Journey Update! 🌟
  • @Xanza Not sure what you mean. I wanted to use my services with my domain. I tried a reverse proxy by itself and it wouldn't work because my ISP blocks ports, so I set up Cloudflare instead. Then I found out my services would work better with Caddy, so I set that up. I also originally wasn't using Unbound, but then I realized my services were having trouble communicating, and I thought it would help to have more control over DNS rules, which it has.

  • 🌟 Self-Hosting Journey Update! 🌟
  • @toastal My ISP blocks ports. Cloudflare was the only way I could get reverse proxying to work.

  • 🌟 Self-Hosting Journey Update! 🌟
  • @tofuwabohu Yes, I'm running Docker directly on the Raspberry Pi. IDrive automatically backs up the folders you specify at a time you choose. I think it uses Cron or something.

  • 🌟 Self-Hosting Journey Update! 🌟

    🌟 Self-Hosting Journey Update! 🌟

    After weeks of work, I'm excited to share my self-hosted setup! 🎉 I'm running everything on a Raspberry Pi 500 with Stormux (Arch Linux ARM-based), 8 GB RAM, and a 512 GB SD card (planning to upgrade to SSD or NAS as soon as I can afford it). Here's what I’ve built so far:

    🔧 Services in Action: \- Development: Forgejo, Code-Server, Woodpecker CI \- Productivity: Joplin Server, Monica CRM, Homepage dashboard \- Monitoring: Prometheus + Alertmanager, Grafana, Netdata, Uptime Kuma \- Networking: AdGuardHome + Unbound, Tailscale VPN \- Tools: MiniFlux, Linkding, TheLounge \- Management: Portainer, Cockpit, Watchtower

    🔒 Security & Access: \- Caddy + Cloudflare Zero Trust/Access for reverse proxy & SSO \- FirewallD + Fail2ban for extra protection

    📧 Emails Powered by Zoho ZeptoMail: All email-capable services (e.g., Forgejo, Joplin) are configured for reliable notifications.

    💾 Backups: Using IDrive's 5 TB plan for peace of mind.

    This journey has been challenging yet rewarding! 🚀 I'd love to hear your thoughts—especially tips on scaling storage or optimizing performance. Let's chat! 💬

    \#SelfHosting #RaspberryPi #Linux #ArchLinuxARM #Stormux #Tech #OpenSource #DIYTech #HomeLab #CloudComputing #AdGuardHome #Grafana #Prometheus #CodeServer #Portainer

    @selfhost @selfhosted @selfhosting

    10
    Help Needed: Homepage Configuration – Missing Widgets & API Errors
  • @NegativeLookBehind I updated the gist with some log files. There are a lot of 401 errors in the homepage logs. I know my API keys are correct so I'm not sure how to fix them.

  • Help Needed: Homepage Configuration – Missing Widgets & API Errors

    Help Needed: Homepage Configuration – Missing Widgets & API Errors

    Hi everyone,

    I'm running Homepage (v0.10.9) in Docker on Arch Linux ARM (Stormux) and encountering issues with missing widgets and API errors. Some widgets are showing as "Missing" on the dashboard, and I'm seeing repeated HTTP 401 errors for Portainer and Tailscale in the logs.

    Setup Details: \- Homepage Version: v0.10.9 \- Host OS: Arch Linux ARM (Stormux) \- Host IP: 192.168.1.137 \- Docker Network: All containers are on homepage\_net (gateway: 172.23.0.1) \- Docker Containers: Homepage, Portainer, Miniflux, Uptime Kuma, Glances, etc.

    Issues:

    1. Several widgets showing as "Missing": \- AdGuard (running on host, not in Docker) \- Netdata \- Uptime Kuma \- Docker \- Portainer \- Miniflux \- Tailscale
    2. Repeated HTTP 401 errors for Portainer and Tailscale in logs.

    What I've Tried:

    1. Separated service definitions (services.yaml) and widget configurations (widgets.yaml).
    2. Updated widget URLs to use appropriate addresses (host IP for AdGuard, container names or Docker network IPs for containerized services).
    3. Regenerated API keys for Portainer and Tailscale.
    4. Verified all containers are on the same network (homepage\_net).
    5. Enabled debug logging in Homepage.

    Configuration Files: I've uploaded my configuration files here: https://gist.github.com/Lanie-Carmelo/e01d973bc3b208e5082011e4b76532f6. API keys and passwords have been redacted.

    Any help troubleshooting this would be greatly appreciated! Let me know if you need additional details.

    Hashtags & Mentions: \#SelfHosting #Linux #ArchLinux #Docker #HomeLab #OpenSource #WebDashboard #ArchLinuxARM @selfhosted @linux @docker @opensource @selfhosting @selfhost

    3
    I'm new to self-hosting and struggling to get my services accessible externally. I'm using Traefik as a reverse proxy on a Raspberry Pi 500 running Stormux (Arch Linux ARM-based). My public IP
  • @jyarbrough @selfhost
    @bravemonkey @selfhosting @selfhosted @linux @MangoPenguin @geillescas Yeah, I'm very tempted to go back to the way I had things, which allowed me to access services with my Raspberry Pi's IP and a port number. Since I don't leave home much and I'm not the ISP account holder, this is starting to seem like more trouble than it's worth.

  • I'm new to self-hosting and struggling to get my services accessible externally. I'm using Traefik as a reverse proxy on a Raspberry Pi 500 running Stormux (Arch Linux ARM-based). My public IP
  • @bravemonkey The plan was to set it to low temporarily. The choices were high, medium, low, or off. One of the ports Traefik listens on is 80. I used portchecktool.com and it told me the connection was timing out.

  • I'm new to self-hosting and struggling to get my services accessible externally. I'm using Traefik as a reverse proxy on a Raspberry Pi 500 running Stormux (Arch Linux ARM-based). My public IP
  • @geillescas @selfhost @selfhosting @selfhosted @linux I'll have to see about this. I'm not the account holder and the one who is, my stepdad, isn't exactly tech-savvy. My router did have a firewall blocking traffic, but I changed its security level and looked at the rules, so that shouldn't be an issue anymore.

  • I'm new to self-hosting and struggling to get my services accessible externally. I'm using Traefik as a reverse proxy on a Raspberry Pi 500 running Stormux (Arch Linux ARM-based). My public IP

    I'm new to self-hosting and struggling to get my services accessible externally. I'm using Traefik as a reverse proxy on a Raspberry Pi 500 running Stormux (Arch Linux ARM-based). My public IP resolves correctly via Dynu DNS, and ports 80 and 8444 are forwarded in my router. I've configured Traefik to use port 8444 for HTTPS, but external connections time out. I’ve tried: • Forwarding ports 80 and 8444 in my router • Allowing ports in iptables and FirewallD • Setting my router's firewall to low security • Verifying Traefik is listening on port 8444 locally (works with curl) • Using Authelia for authentication (middleware configured in Traefik) Internal access works fine, but external access fails. Could this be an ISP block or something I’m missing? Any advice is appreciated! 🙏 \#SelfHosting #Traefik #RaspberryPi #DynuDNS #ReverseProxy #Networking #Help #Tech #Technology #Linux @selfhost @selfhosting @selfhosted @linux

    19
    Hi #SelfHosted community. I've figured out a lot of my setup. I now have a new domain, laniesplace.us, just for #HomeServer stuff. It's set up through Porkbun with Dynu for #DDNS. I've now got
  • @selfhost @selfhosting @selfhosted @linux Authelia configuration.yml:

    theme: light
    
    server:  
     address: 0.0.0.0:9091
    
    log:  
     level: debug  
     format: text  
     file\_path: /var/log/authelia/authelia.log
    
    totp:  
     issuer: laniesplace.us  
     period: 30  
     skew: 1
    
    authentication\_backend:  
     file:  
     path: /config/users\_database.yml  
     password:  
     algorithm: argon2id  
     iterations: 3  
     memory: 65536  
     parallelism: 4  
     salt\_length: 16  
     key\_length: 32
    
    access\_control:  
     default\_policy: deny  
     rules:  
     \# Public Access  
     \- domain:   
     \- "pihole.laniesplace.us"  
     \- "homer.laniesplace.us"  
     policy: bypass
    
     \# High Security (Two Factor)  
     \- domain:   
     \- "portainer.laniesplace.us"  
     \- "netdata.laniesplace.us"  
     \- "cockpit.laniesplace.us"  
     \- "glances.laniesplace.us"  
     \- "code.laniesplace.us"  
     policy: two\_factor  
     subject:  
     \- "group:admins"
    
     \# Medium Security (One Factor Admin)  
     \- domain:  
     \- "forgejo.laniesplace.us"  
     \- "files.laniesplace.us"  
     \- "uptime.laniesplace.us"  
     policy: one\_factor  
     subject:  
     \- "group:admins"
    
     \# Standard Auth (One Factor)  
     \- domain:  
     \- "thelounge.laniesplace.us"  
     \- "miniflux.laniesplace.us"  
     \- "linkding.laniesplace.us"  
     \- "wiki.laniesplace.us"  
     policy: one\_factor
    
     \# Catch-all rule  
     \- domain: "\*.laniesplace.us"  
     policy: one\_factor
    
    session:  
     name: authelia\_session  
     domain: laniesplace.us  
     same\_site: lax  
     expiration: 3600  
     inactivity: 300  
     remember\_me: 1M
    
    regulation:  
     max\_retries: 3  
     find\_time: 120  
     ban\_time: 300
    
    storage:  
     local:  
     path: /config/db.sqlite3
    
    notifier:  
     disable\_startup\_check: false  
     smtp:  
     address: submission://smtp.gmail.com:587  
     username: laniegcarmelo@gmail.com  
     password: rcig lqpk cbsg aqcm  
     sender: "Authelia \<laniegcarmelo@gmail.com\>"  
     identifier: auth.laniesplace.us  
     subject: "[Authelia] {title}"  
     startup\_check\_address: laniegcarmelo@gmail.com  
     timeout: 5s
    
    identity\_validation:  
     reset\_password:  
     jwt\_secret: ${AUTHELIA\_JWT\_SECRET\_FILE}  
    
  • Hi #SelfHosted community. I've figured out a lot of my setup. I now have a new domain, laniesplace.us, just for #HomeServer stuff. It's set up through Porkbun with Dynu for #DDNS. I've now got
  • @selfhost @selfhosting @selfhosted @linux Authelia docker-compose.yml:

    services:  
     authelia:  
     image: authelia/authelia:latest  
     container\_name: authelia  
     volumes:  
     \- ./config:/config  
     \- ./logs:/var/log/authelia  
     networks:  
     \- web  
     \- authelia\_internal  
     environment:  
     \- TZ=America/Chicago  
     \- AUTHELIA\_JWT\_SECRET\_FILE=/config/secrets/jwt\_secret  
     \- AUTHELIA\_SESSION\_SECRET\_FILE=/config/secrets/session\_secret  
     \- AUTHELIA\_STORAGE\_ENCRYPTION\_KEY\_FILE=/config/secrets/storage\_encryption\_key  
     labels:  
     \- "traefik.enable=true"  
     \- "traefik.http.routers.authelia.rule=Host(`auth.laniesplace.us`)"  
     \- "traefik.http.routers.authelia.entrypoints=websecure"  
     \- "traefik.http.routers.authelia.tls.certresolver=le"  
     \- "traefik.http.middlewares.authelia.forwardauth.authRequestHeaders=X-Forwarded-Proto,X-Forwarded-Host"  
     \- "traefik.http.middlewares.authelia-basic.forwardauth.authResponseHeaders=Remote-User,Remote-Name,Remote-Email"  
     \- "traefik.http.middlewares.authelia.forwardauth.tls.insecureSkipVerify=true"  
     \- "traefik.http.services.authelia.loadbalancer.server.port=9091"  
     \- "traefik.http.middlewares.authelia.forwardauth.address=http://authelia:9091/api/verify?rd=[https://auth.laniesplace.us](https://auth.laniesplace.us)"  
     \- "traefik.http.middlewares.authelia.forwardauth.trustForwardHeader=true"  
     \- "traefik.http.middlewares.authelia.forwardauth.authResponseHeaders=Remote-User,Remote-Groups,Remote-Name,Remote-Email"
    
     restart: unless-stopped  
     security\_opt:  
     \- no-new-privileges:true  
     depends\_on:  
     \- redis  
     healthcheck:  
     test: ["CMD", "wget", "--no-check-certificate", "--quiet", "--tries=1", "--spider", "http://localhost:9091/api/health"]  
     interval: 30s  
     timeout: 10s  
     retries: 3  
     start\_period: 60s
    
     redis:  
     image: redis:alpine  
     container\_name: authelia\_redis  
     networks:  
     \- authelia\_internal  
     restart: unless-stopped  
     volumes:  
     \- ./redis:/data  
     command: redis-server --save 60 1 --loglevel warning  
     healthcheck:  
     test: ["CMD", "redis-cli", "ping"]  
     interval: 30s  
     timeout: 10s  
     retries: 3  
     security\_opt:  
     \- no-new-privileges:true
    
    networks:  
     web:  
     external: true  
     authelia\_internal:  
     internal: true  
    
  • Hi #SelfHosted community. I've figured out a lot of my setup. I now have a new domain, laniesplace.us, just for #HomeServer stuff. It's set up through Porkbun with Dynu for #DDNS. I've now got
  • @selfhost @selfhosting @selfhosted @linux traefik services.yml:

    http:  
     services:  
     \# Docker Services  
     homer:  
     loadBalancer:  
     servers:  
     \- url: "http://homer:8080"
    
     glances:  
     loadBalancer:  
     servers:  
     \- url: "http://glances:61208"
    
     uptime-kuma:  
     loadBalancer:  
     servers:  
     \- url: "http://uptime-kuma:3001"
    
     miniflux:  
     loadBalancer:  
     servers:  
     \- url: "http://miniflux:8080"
    
     pihole:  
     loadBalancer:  
     servers:  
     \- url: "http://pihole:8088"
    
     portainer:  
     loadBalancer:  
     servers:  
     \- url: "http://portainer:9000"
    
     linkding:  
     loadBalancer:  
     servers:  
     \- url: "http://linkding:9090"
    
     \# Non-Docker Services  
     filebrowser:  
     loadBalancer:  
     servers:  
     \- url: "http://127.0.0.1:8085"
    
     netdata:  
     loadBalancer:  
     servers:  
     \- url: "http://127.0.0.1:19999"
    
     forgejo:  
     loadBalancer:  
     servers:  
     \- url: "http://127.0.0.1:3000"
    
     dokuwiki:  
     loadBalancer:  
     servers:  
     \- url: "http://127.0.0.1:81"
    
     cockpit:  
     loadBalancer:  
     servers:  
     \- url: "http://127.0.0.1:9090"  
    
  • Hi #SelfHosted community. I've figured out a lot of my setup. I now have a new domain, laniesplace.us, just for #HomeServer stuff. It's set up through Porkbun with Dynu for #DDNS. I've now got
  • @selfhost @selfhosting @selfhosted @linux traefik routers.yml:

    http:  
     routers:  
     dashboard:  
     rule: "Host(`traefik.laniesplace.us`) && (PathPrefix(`/api`) || PathPrefix(`/dashboard`))"  
     service: api@internal  
     entryPoints:  
     \- websecure  
     tls:  
     certResolver: le  
     middlewares:  
     \- dashboard-auth
    
     homer:  
     rule: "Host(`laniesplace.us`)"  
     service: homer  
     entryPoints:  
     \- websecure  
     tls:  
     certResolver: le  
     middlewares:  
     \- authelia@docker  
     headers:  
     customRequestHeaders:  
     X-Forwarded-Proto: "https"  
     X-Forwarded-Host: "laniesplace.us"  
     X-Forwarded-Uri: "/"  
     X-Forwarded-For: "true"
    
     glances:  
     rule: "Host(`glances.laniesplace.us`)"  
     service: glances  
     entryPoints:  
     \- websecure  
     tls:  
     certResolver: le  
     middlewares:  
     \- authelia@docker  
     headers:  
     customRequestHeaders:  
     X-Forwarded-Proto: "https"  
     X-Forwarded-Host: "glances.laniesplace.us"  
     X-Forwarded-Uri: "/"  
     X-Forwarded-For: "true"
    
     uptime-kuma:  
     rule: "Host(`uptime.laniesplace.us`)"  
     service: uptime-kuma  
     entryPoints:  
     \- websecure  
     tls:  
     certResolver: le  
     middlewares:  
     \- authelia@docker  
     headers:  
     customRequestHeaders:  
     X-Forwarded-Proto: "https"  
     X-Forwarded-Host: "uptime.laniesplace.us"  
     X-Forwarded-Uri: "/"  
     X-Forwarded-For: "true"
    
     miniflux:  
     rule: "Host(`rss.laniesplace.us`)"  
     service: miniflux  
     entryPoints:  
     \- websecure  
     tls:  
     certResolver: le  
     middlewares:  
     \- authelia@docker  
     headers:  
     customRequestHeaders:  
     X-Forwarded-Proto: "https"  
     X-Forwarded-Host: "rss.laniesplace.us"  
     X-Forwarded-Uri: "/"  
     X-Forwarded-For: "true"
    
     pihole:  
     rule: "Host(`pihole.laniesplace.us`)"  
     service: pihole  
     entryPoints:  
     \- websecure  
     tls:  
     certResolver: le  
     middlewares:  
     \- authelia@docker  
     \- pihole-redirect  
     headers:  
     customRequestHeaders:  
     X-Forwarded-Proto: "https"  
     X-Forwarded-Host: "pihole.laniesplace.us"  
     X-Forwarded-Uri: "/"  
     X-Forwarded-For: "true"
    
     portainer:  
     rule: "Host(`portainer.laniesplace.us`)"  
     service: portainer  
     entryPoints:  
     \- websecure  
     tls:  
     certResolver: le  
     middlewares:  
     \- authelia@docker  
     headers:  
     customRequestHeaders:  
     X-Forwarded-Proto: "https"  
     X-Forwarded-Host: "portainer.laniesplace.us"  
     X-Forwarded-Uri: "/"  
     X-Forwarded-For: "true"
    
     linkding:  
     rule: "Host(`bookmarks.laniesplace.us`)"  
     service: linkding  
     entryPoints:  
     \- websecure  
     tls:  
     certResolver: le  
     middlewares:  
     \- authelia@docker  
     headers:  
     customRequestHeaders:  
     X-Forwarded-Proto: "https"  
     X-Forwarded-Host: "bookmarks.laniesplace.us"  
     X-Forwarded-Uri: "/"  
     X-Forwarded-For: "true"  
     Remote-User: "{{ .Request.Headers.Remote-User }}"
    
     filebrowser:  
     rule: "Host(`files.laniesplace.us`)"  
     service: filebrowser  
     entryPoints:  
     \- websecure  
     tls:  
     certResolver: le  
     middlewares:  
     \- authelia@docker  
     headers:  
     customRequestHeaders:  
     X-Forwarded-Proto: "https"  
     X-Forwarded-Host: "files.laniesplace.us"  
     X-Forwarded-Uri: "/"  
     X-Forwarded-For: "true"
    
     netdata:  
     rule: "Host(`netdata.laniesplace.us`)"  
     service: netdata  
     entryPoints:  
     \- websecure  
     tls:  
     certResolver: le  
     middlewares:  
     \- authelia@docker  
     headers:  
     customRequestHeaders:  
     X-Forwarded-Proto: "https"  
     X-Forwarded-Host: "netdata.laniesplace.us"  
     X-Forwarded-Uri: "/"  
     X-Forwarded-For: "true"
    
     forgejo:  
     rule: "Host(`git.laniesplace.us`)"  
     service: forgejo  
     entryPoints:  
     \- websecure  
     tls:  
     certResolver: le  
     middlewares:  
     \- authelia@docker  
     headers:  
     customRequestHeaders:  
     X-Forwarded-Proto: "https"  
     X-Forwarded-Host: "git.laniesplace.us"  
     X-Forwarded-Uri: "/"  
     X-Forwarded-For: "true"
    
     dokuwiki:  
     rule: "Host(`wiki.laniesplace.us`)"  
     service: dokuwiki  
     entryPoints:  
     \- websecure  
     tls:  
     certResolver: le  
     middlewares:  
     \- authelia@docker  
     headers:  
     customRequestHeaders:  
     X-Forwarded-Proto: "https"  
     X-Forwarded-Host: "wiki.laniesplace.us"  
     X-Forwarded-Uri: "/"  
     X-Forwarded-For: "true"
    
     cockpit:  
     rule: "Host(`cockpit.laniesplace.us`)"  
     service: cockpit  
     entryPoints:  
     \- websecure  
     tls:  
     certResolver: le  
     middlewares:  
     \- authelia@docker  
     headers:  
     customRequestHeaders:  
     X-Forwarded-Proto: "https"  
     X-Forwarded-Host: "cockpit.laniesplace.us"  
     X-Forwarded-Uri: "/"  
     X-Forwarded-For: "true"  
    
  • Hi #SelfHosted community. I've figured out a lot of my setup. I now have a new domain, laniesplace.us, just for #HomeServer stuff. It's set up through Porkbun with Dynu for #DDNS. I've now got
  • @selfhost @selfhosting @selfhosted @linux traefik docker-compose.yml:
    networks:
    web:
    external: true

    services:
    traefik:
    image: traefik:v3.2.5
    container_name: traefik
    security_opt:
    - no-new-privileges:true
    ports:
    - "80:80"
    - "443:443"
    - "8080:8080"
    volumes:
    - /var/run/docker.sock:/var/run/docker.sock:ro
    - ./traefik.yml:/etc/traefik/traefik.yml:ro
    - ./acme.json:/acme.json
    - ./dynamic:/etc/traefik/dynamic:ro
    - ./logs:/etc/traefik/logs
    networks:
    - web
    restart: unless-stopped
    labels:
    - "traefik.enable=true"
    - "traefik.http.routers.dashboard.rule=Host(traefik.laniesplace.us)"
    - "traefik.http.routers.dashboard.service=api@internal"
    - "traefik.http.routers.dashboard.entrypoints=websecure"
    - "traefik.http.routers.dashboard.tls.certresolver=le"
    - "traefik.http.routers.dashboard.middlewares=dashboard-auth"

  • Hi #SelfHosted community. I've figured out a lot of my setup. I now have a new domain, laniesplace.us, just for #HomeServer stuff. It's set up through Porkbun with Dynu for #DDNS. I've now got
  • @selfhost @selfhosting @selfhosted @linux traefik.yml:

    global:  
     checkNewVersion: true  
     sendAnonymousUsage: false
    
    log:  
     level: DEBUG  
     filePath: /etc/traefik/logs/traefik.log
    
    accessLog:  
     filePath: /etc/traefik/logs/access.log
    
    entryPoints:  
     web:  
     address: :80  
     http:  
     redirections:  
     entryPoint:  
     to: websecure  
     scheme: https  
     websecure:  
     address: :443  
     http:  
     tls:  
     certResolver: le
    
    api:  
     dashboard: true  
     insecure: false
    
    providers:  
     file:  
     directory: /etc/traefik/dynamic  
     watch: true  
     docker:  
     endpoint: unix:///var/run/docker.sock  
     watch: true  
     exposedByDefault: false  
     network: web
    
    certificatesResolvers:  
     le:  
     acme:  
     email: laniegcarmelo@gmail.com  
     storage: /etc/traefik/acme.json  
     tlsChallenge: {}  
    
  • Hi #SelfHosted community. I've figured out a lot of my setup. I now have a new domain, laniesplace.us, just for #HomeServer stuff. It's set up through Porkbun with Dynu for #DDNS. I've now got
  • @selfhost @selfhosting @selfhosted @linux Web services docker-compose.yml, includes Linkding:

    services:  
     linkding:  
     image: sissbruecker/linkding:latest-plus  
     container\_name: linkding  
     environment:  
     LD\_ENABLE\_AUTH\_PROXY: "true"  
     LD\_AUTH\_PROXY\_HEADER: "Remote-User"  
     LD\_AUTH\_PROXY\_AUTO\_LOGIN: "true"  
     LD\_AUTH\_PROXY\_LOGOUT\_URL: "[https://auth.laniesplace.us/logout](https://auth.laniesplace.us/logout)"  
     volumes:  
     \- linkding\_data:/etc/linkding/data  
     healthcheck:  
     test: ["CMD", "node", "-e", "const http = require('http'); const options = {host: 'localhost', port: 9090, path: '/', timeout: 2000}; const request = http.request(options, (res) =\> { process.exit([200, 302].includes(res.statusCode) ? 0 : 1)}); request.on('error', () =\> process.exit(1)); request.end()"]  
     interval: 30s  
     timeout: 10s  
     retries: 3  
     networks:  
     \- web  
     labels:  
     \- "traefik.enable=true"  
     \- "traefik.http.routers.linkding.rule=Host(`bookmarks.laniesplace.us`)"  
     \- "traefik.http.routers.linkding.entrypoints=websecure"  
     \- "traefik.http.routers.linkding.tls.certresolver=le"  
     \- "traefik.http.services.linkding.loadbalancer.server.port=9090"  
     \- "traefik.http.routers.linkding.middlewares=authelia@docker"
    
    volumes:  
     linkding\_data:
    
    networks:  
     web:  
     external: true
    
    
  • Hi #SelfHosted community. I've figured out a lot of my setup. I now have a new domain, laniesplace.us, just for #HomeServer stuff. It's set up through Porkbun with Dynu for #DDNS. I've now got

    Hi #SelfHosted community. I've figured out a lot of my setup. I now have a new domain, laniesplace.us, just for #HomeServer stuff. It's set up through Porkbun with Dynu for #DDNS. I've now got #Traefik, #TailscaleVPN, #Linkding, #Forgejo, #Dokuwiki, Code-Server, #Portainer, #Netdata, #Watchtower, #Cockpit, #Pihole, #MiniFlux, #TheLounge, #Filebrowser, #UptimeKuma, and the #Homer dashboard service installed. I'm now trying to set up #Authelia so I can have single sign-on to my services. For some, it's working now, but I can't seem to get Linkding to work no matter what I do. This is on a #RaspberryPi 500 with 8 GB RAM and a 512 GB SD card, running #Stormux, which is based on #ArchlinuxARM. Can anyone help? I'll reply to this post with all my relevant config files in separate posts. What's happening is this: Linkding is supposed to be available at bookmarks.laniesplace.us. When I go there, I see a 401 unauthorized error and a link to sign into Authelia. Once I sign in, though, it redirects back to the page with the 401 error. I've been trying to figure this out for hours with no luck. Files will be in replies to this post. \#SelfHosting #Linux #HomeLab #RPi #RaspberryPi500 #RPi500 #Tech #Technology @selfhost @selfhosting @selfhosted @linux

    13
    Hi everyone! How are you all doing tonight? I just had a frustrating experience trying to set up a free #domain or #subdomain for my #SelfHosted services. Unfortunately, I can't use my

    Hi everyone! How are you all doing tonight? I just had a frustrating experience trying to set up a free #domain or #subdomain for my #SelfHosted services. Unfortunately, I can't use my laniecarmelo.tech domain because its current configuration doesn't allow me to add subdomains. I discovered EU.org, which offers free domains, and decided to give it a try. However, they require you to have authoritative #DNS #nameservers before requesting a domain. I tried using #Cloudflare, but it wasn't authoritative. Then I looked into Hostry.com, Hurricane Electric DNS, and FreeDNS. Hostry requires you to add DNS records for your domain before using their service—but how can I do that when my domain doesn’t exist yet? 🤦‍♀️ As for FreeDNS and Hurricane Electric, both have inaccessible #CAPTCHAs on their registration forms with no audio alternatives! 😡 At this point, I'm so frustrated that I've decided to take a break from figuring this out. If anyone has tips for setting up a free domain or knows of accessible DNS services, I’d really appreciate your advice! 🙏 \#Accessibility #TechFrustration #WebHosting #BlindTech #blind #DisabilityInTech #tech #Technology #SelfHosting @selfhost @selfhosting @selfhosted @mastoblind @main

    34
    #SelfHosting community, how do you get notifications about your projects?

    \#SelfHosting community, how do you get notifications about your projects?

    I'm setting up a couple of #BASH #Scripts to back things up and notify me about events on my #RaspberryPi, but I've hit some roadblocks. Here's my situation:

    \- I know #email is one option, but I'm not set up for it yet. My domain is on porkbun.com, but its nameservers point to vultr.com, where my #WordPress site is hosted. The Vultr server is managed by a friend, so I don't have access to add #DNSRecords for platforms like #Brevo. I've asked him to add the records but am waiting on that.

    \- I've been using a #Discord webhook, but I've run into issues with rate limiting when scripts send too many messages. Long messages also cause errors.

    Now, I'm exploring other ways to send notifications. Does anyone have suggestions for reliable methods or tools that work well in self-hosted setups?

    \#Linux #Tech #Technology #BASHScripts #SelfHosted #Notifications @selfhost @selfhosted @linux @selfhosting

    11
    @quanin

    @quanin

    After exploring #R2E, I've decided it might not be the best fit for my needs. Here's why:

    1. R2E doesn't support #Inoreader's #OPML format, requiring manual feed addition.
    2. I realized I have many feeds and need a more comprehensive solution.

    I'm now considering #Miniflux, which can manage #RSS feeds, #Podcasts, and #YouTube subscriptions in one place.

    Until I get my #RaspberryPi for Christmas, I'm weighing two options:

    1. Self-host Miniflux on my #Windows PC using #Docker
    2. Use their $15/year hosted plan temporarily

    Fellow #techies, especially those interested in #accessibility and #SelfHosting: What would you recommend? Your insights would be greatly appreciated!

    \#Tech #blind @mastoblind @main

    4
    RareBird15 Lanie Carmelo @caneandable.social

    \#Christian woman. #Aroace. Totally #blind and #autistic with multiple #chronicIllnesses. #UsabilityTester, aspiring #AccessibilityConsultant. #Disability rights advocate. Interests: #technology, #reading, #gaming, #food, #OpenSource. Human to Squeaker (MinPin). Creating a nonprofit for multiply disabled people. \#tfr, #Fedi22

    Posts 9
    Comments 27