1
#SelfHosted #LinkAce Bookmark Manager Running, but Unable to Check for Updates or Generate a Cron Token
(allovertheplace.ca)
#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
@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.