Lanie Molinar Carmelo<p><strong><a href="https://allovertheplace.ca/tags/SelfHosted" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>SelfHosted</span></a> <a href="https://allovertheplace.ca/tags/LinkAce" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>LinkAce</span></a> Bookmark Manager Running, but Unable to Check for Updates or Generate a Cron Token</strong></p><p>Hi all. Hoping someone in the <a href="https://allovertheplace.ca/tags/SelfHosting" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>SelfHosting</span></a> community can help here. I'm running LinkAce in <a href="https://allovertheplace.ca/tags/Docker" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Docker</span></a> behind non-Dockerized <a href="https://allovertheplace.ca/tags/Caddy" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Caddy</span></a> and <a href="https://allovertheplace.ca/tags/Authelia" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Authelia</span></a>, 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 <a href="https://allovertheplace.ca/tags/PHP" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>PHP</span></a> applications.</p><p><strong>Logs</strong></p><pre><code>2025-02-22 23:25:26,460 INFO supervisord started with pid 1<br>2025-02-22 23:25:27,465 INFO spawned: 'php-fpm' with pid 8<br>2025-02-22 23:25:27,467 INFO spawned: 'caddy' with pid 9<br>[22-Feb-2025 23:25:27] NOTICE: [pool www] 'user' directive is ignored when FPM is not running as root<br>[22-Feb-2025 23:25:27] NOTICE: [pool www] 'group' directive is ignored when FPM is not running as root<br>[22-Feb-2025 23:25:27] NOTICE: fpm is running, pid 8<br>[22-Feb-2025 23:25:27] NOTICE: ready to handle connections<br>{"level":"info","ts":1740266727.5264525,"msg":"using config from file","file":"/etc/caddy/Caddyfile"}<br>{"level":"info","ts":1740266727.5280282,"msg":"adapted config to JSON","adapter":"caddyfile"}<br>{"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}<br>{"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"]}<br>{"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}<br>{"level":"info","ts":1740266727.5294206,"logger":"tls.cache.maintenance","msg":"started background certificate maintenance","cache":"0x40000bab00"}<br>{"level":"warn","ts":1740266727.530186,"logger":"http","msg":"HTTP/2 skipped because it requires TLS","network":"tcp","addr":":80"}<br>{"level":"warn","ts":1740266727.530195,"logger":"http","msg":"HTTP/3 skipped because it requires TLS","network":"tcp","addr":":80"}<br>{"level":"info","ts":1740266727.530198,"logger":"http.log","msg":"server running","name":"srv0","protocols":["h1","h2","h3"]}<br>{"level":"info","ts":1740266727.5412574,"msg":"autosaved config (load with --resume flag)","file":"/home/www-data/.config/caddy/autosave.json"}<br>{"level":"info","ts":1740266727.541271,"msg":"serving initial configuration"}<br>{"level":"info","ts":1740266727.5477707,"logger":"tls","msg":"cleaning storage unit","storage":"FileStorage:/home/www-data/.local/share/caddy"}<br>{"level":"info","ts":1740266727.5541356,"logger":"tls","msg":"finished cleaning storage units"}<br>2025-02-22 23:25:28,555 INFO success: php-fpm entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)<br>2025-02-22 23:25:28,555 INFO success: caddy entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)<br>::1 - 22/Feb/2025:23:25:34 +0000 "GET /index.php" 200<br>::1 - 22/Feb/2025:23:25:34 +0000 "GET /index.php" 404<br></code></pre><p><strong>Docker Compose file</strong></p><pre><code>services:<br> # --- LinkAce<br> linkace:<br> image: docker.io/linkace/linkace:latest<br> container_name: linkace<br> restart: unless-stopped<br> depends_on:<br> - linkace_db<br> ports:<br> - "0.0.0.0:3009:80"<br> volumes:<br> - ./.env:/app/.env<br> - ./backups:/app/storage/app/backups<br><br> # --- Database<br> linkace_db:<br> image: docker.io/library/mariadb:11.5<br> container_name: linkace_db<br> restart: unless-stopped<br> command: mariadbd --character-set-server=utf8mb4 --collation-server=utf8mb4_bin<br> environment:<br> - MYSQL_ROOT_PASSWORD=${DB_PASSWORD}<br> - MYSQL_USER=${DB_USERNAME}<br> - MYSQL_PASSWORD=${DB_PASSWORD}<br> - MYSQL_DATABASE=${DB_DATABASE}<br> volumes:<br> - db:/var/lib/mysql<br><br> # --- Cache<br> linkace_redis:<br> image: docker.io/bitnami/redis:7.4<br> container_name: linkace_redis<br> restart: unless-stopped<br> environment:<br> - REDIS_PASSWORD=${REDIS_PASSWORD}<br><br>volumes:<br> db:<br></code></pre><p><strong>.env (secrets redacted)</strong></p><pre><code>## LINKACE CONFIGURATION<br><br># The app key is generated later, please leave it like that<br>APP_KEY=redacted<br>APP_ENV=development<br><br>## Configuration of the database connection<br>## Attention: Those settings are configured during the web setup, please do not modify them now.<br># Set the database driver (mysql, pgsql, sqlsrv, sqlite)<br>DB_CONNECTION=mysql<br># Set the host of your database here<br>DB_HOST=linkace_db<br># Set the port of your database here<br>DB_PORT=3306<br># Set the database name here<br>DB_DATABASE=linkace<br># Set both username and password of the user accessing the database<br>DB_USERNAME=linkace<br># Wrap your password into quotes (") if it contains special characters<br>DB_PASSWORD=redacted<br><br>## Redis cache configuration<br># Set the Redis connection here if you want to use it<br>REDIS_HOST=linkace_redis<br>REDIS_PASSWORD=redacted<br>REDIS_PORT=6379<br>APP_DEBUG=true<br><br># SSO configuration<br>SSO_ENABLED=true<br>SSO_OIDC_ENABLED=true<br>SSO_REGISTRATION_ENABLED=true<br>REGULAR_LOGIN_DISABLED=true<br>SSO_OIDC_BASE_URL=https://auth.laniecarmelo.tech/ # Your Authelia base URL<br>SSO_OIDC_CLIENT_ID=linkace<br>SSO_OIDC_CLIENT_SECRET='redacted'<br>SSO_OIDC_SCOPES=openid,profile,email<br></code></pre><p><strong>Caddyfile snippet</strong></p><pre><code>{<br> email laniecarmelo@gmail.com<br> debug<br> acme_dns cloudflare redacted<br> http_port 80<br> https_port 443<br> admin :2019 {<br> origins 127.0.0.1:2019 0.0.0.0:2019 stormux:2019 caddy.laniecarmelo.tech<br> }<br>}<br><br>(logconfig) {<br> log {<br> output stdout<br> format json<br> }<br>}<br><br>(auth_headers) {<br> header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"<br>}<br><br>(proxy_config) {<br> header_up Host {http.request.host}<br> header_up X-Real-IP {http.request.remote}<br> header_up X-Forwarded-User {http.auth.user.id} # Pass user ID<br> header_up X-Forwarded-Email {http.auth.user.email} # Pass email<br>}<br><br>(authelia_middleware) {<br> forward_auth localhost:9091 {<br> uri /api/verify?rd=https://auth.laniecarmelo.tech<br> copy_headers Remote-User Remote-Email Remote-Groups Authorization<br> }<br>}<br><br>bookmarks.laniecarmelo.tech {<br> route {<br> import authelia_middleware<br> reverse_proxy localhost:3009 { # Directly proxy to LinkAce's web server<br> import proxy_config<br> }<br> }<br> import logconfig<br> import auth_headers<br>}<br></code></pre><p><strong>Authelia config snippet</strong></p><pre><code> - domain: "*.laniecarmelo.tech"<br> policy: bypass<br> networks:<br> - 192.168.1.0/24 # Local network<br> - 172.17.0.0/16 # Docker bridge network<br> - 100.64.0.0/10 # Tailscale network<br><br> - domain: "bookmarks.laniecarmelo.tech"<br> resources: ["^/api.*"]<br> policy: bypass<br><br> - domain: "*.laniecarmelo.tech"<br> policy: one_factor <br><br> - client_id: linkace<br> client_name: LinkAce bookmarking app<br> client_secret: redacted<br> public: false<br> authorization_policy: one_factor<br> scopes: [openid, groups, profile, email, offline_access]<br> redirect_uris:<br> - https://bookmarks.laniecarmelo.tech/auth/oidc/callback<br> grant_types: [authorization_code]<br> response_types: [code]<br> response_modes: [form_post, query]<br> userinfo_signed_response_alg: none<br> consent_mode: explicit<br> pre_configured_consent_duration: "1y"<br></code></pre><p>Does anyone know what might be causing this and how I can fix it?<br><a href="https://allovertheplace.ca/tags/Linux" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Linux</span></a> <a href="https://allovertheplace.ca/tags/ArchLinuxARM" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ArchLinuxARM</span></a> <a href="https://allovertheplace.ca/tags/Stormux" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Stormux</span></a> <a href="https://allovertheplace.ca/tags/RaspberryPi" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>RaspberryPi</span></a> <a href="https://allovertheplace.ca/tags/RaspberryPi500" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>RaspberryPi500</span></a> <a href="https://allovertheplace.ca/tags/RPi" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>RPi</span></a> <a href="https://allovertheplace.ca/tags/RPi500" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>RPi500</span></a> <a href="https://allovertheplace.ca/tags/tech" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>tech</span></a> <a href="https://allovertheplace.ca/tags/technology" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>technology</span></a> <br><span class="h-card" translate="no"><a href="https://lemmy.ml/c/selfhost" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>selfhost</span></a></span> <span class="h-card" translate="no"><a href="https://lemmy.world/c/selfhosted" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>selfhosted</span></a></span> <span class="h-card" translate="no"><a href="https://a.gup.pe/u/selfhosting" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>selfhosting</span></a></span></p>