home.social

#linkace — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #linkace, aggregated by home.social.

  1. @jonno ich glaube, die Kombi ist das, was ich gesucht habe… #readeck für die Artikel und Dinge, die ich aktiv konsumiere, nur das landet auch da, um z.B. beim Lesen Markierungen zu setzen Oder etwas in eine Sammlung zu packen.

    Links die ich nur sammeln möchte, aber nicht konsumiere, landen in #LinkAce. Manchmal muss man sich entscheiden, weil ein Link in beides passen würde, aber im Prinzip geht das so schon ziemlich gut und ist für mich intuitiv.

  2. mit jedem Tag, den ich #LinkAce nutze, habe ich mehr Freude an diesem Tool. Das ist tatsächlich genau das was ich gesucht habe, um Links dauerhaft und sortiert für mich aufzubewahren.

    Empfehlung für jeden, der sowas in seinem #homelab selbst betreiben möchte.

    #selfhosting #tooltip

  3. Moin mit ☕️aus dem Bett. Zwischen 2 Tassen habe ich mal eben #LinkAce in die Docker Umgebung geschmissen, um es zu testen. Nutzt das jemand aus der #homelab und #selfhosting Bubble hier? Ich überlege, ob sich das sinnvoll mit #readeck ergänzt, wenn man #readeck eher für „read it later“ verwendet, während #LinkAce einfach nur Linkhalde mit gut organisierten Listen ist, z.B. für Reiselinks, Produktlinks und alles in der Art. Nutzt das jemand so? Berichtet doch mal.

  4. Менеджер закладок на своём сервере

    Хранить тысячи закладок в браузере — совершенно неблагодарная задача. Там отсутствуют даже офлайн-предпросмотр и автоматические теги, не говоря о полнотекстовом поиске и автоматическом скачивании/архивировании по RSS. Для нормального управления закладками нужно специализированное решение. Тут много вариантов, а одно из лучших — это опенсорсное приложение Hoarder («Копилка информации»). Оно устанавливается на сервер и выступает единой БД для доступа из любых клиентов: Android, iOS, Chrome, Firefox и т. д. Рассмотрим базовые функции этого приложения и как установить его на машине, где хранится личный информационный архив. Это может быть или домашний сервер, или VPS.

    habr.com/ru/companies/ruvds/ar

    #ruvds_статьи #Hoarder #хранилище_закладок #информационный_архив #персональное_хранилище #NextJS #Drizzle #NextAuth #tRPC #Puppeteer #OpenAI #Meilisearch #youtubedl #Ollama #Monolith #Shaarli #LinkAce #Linkding

  5. Менеджер закладок на своём сервере

    Хранить тысячи закладок в браузере — совершенно неблагодарная задача. Там отсутствуют даже офлайн-предпросмотр и автоматические теги, не говоря о полнотекстовом поиске и автоматическом скачивании/архивировании по RSS. Для нормального управления закладками нужно специализированное решение. Тут много вариантов, а одно из лучших — это опенсорсное приложение Hoarder («Копилка информации»). Оно устанавливается на сервер и выступает единой БД для доступа из любых клиентов: Android, iOS, Chrome, Firefox и т. д. Рассмотрим базовые функции этого приложения и как установить его на машине, где хранится личный информационный архив. Это может быть или домашний сервер, или VPS.

    habr.com/ru/companies/ruvds/ar

    #ruvds_статьи #Hoarder #хранилище_закладок #информационный_архив #персональное_хранилище #NextJS #Drizzle #NextAuth #tRPC #Puppeteer #OpenAI #Meilisearch #youtubedl #Ollama #Monolith #Shaarli #LinkAce #Linkding

  6. Менеджер закладок на своём сервере

    Хранить тысячи закладок в браузере — совершенно неблагодарная задача. Там отсутствуют даже офлайн-предпросмотр и автоматические теги, не говоря о полнотекстовом поиске и автоматическом скачивании/архивировании по RSS. Для нормального управления закладками нужно специализированное решение. Тут много вариантов, а одно из лучших — это опенсорсное приложение Hoarder («Копилка информации»). Оно устанавливается на сервер и выступает единой БД для доступа из любых клиентов: Android, iOS, Chrome, Firefox и т. д. Рассмотрим базовые функции этого приложения и как установить его на машине, где хранится личный информационный архив. Это может быть или домашний сервер, или VPS.

    habr.com/ru/companies/ruvds/ar

    #ruvds_статьи #Hoarder #хранилище_закладок #информационный_архив #персональное_хранилище #NextJS #Drizzle #NextAuth #tRPC #Puppeteer #OpenAI #Meilisearch #youtubedl #Ollama #Monolith #Shaarli #LinkAce #Linkding

  7. Менеджер закладок на своём сервере

    Хранить тысячи закладок в браузере — совершенно неблагодарная задача. Там отсутствуют даже офлайн-предпросмотр и автоматические теги, не говоря о полнотекстовом поиске и автоматическом скачивании/архивировании по RSS. Для нормального управления закладками нужно специализированное решение. Тут много вариантов, а одно из лучших — это опенсорсное приложение Hoarder («Копилка информации»). Оно устанавливается на сервер и выступает единой БД для доступа из любых клиентов: Android, iOS, Chrome, Firefox и т. д. Рассмотрим базовые функции этого приложения и как установить его на машине, где хранится личный информационный архив. Это может быть или домашний сервер, или VPS.

    habr.com/ru/companies/ruvds/ar

    #ruvds_статьи #Hoarder #хранилище_закладок #информационный_архив #персональное_хранилище #NextJS #Drizzle #NextAuth #tRPC #Puppeteer #OpenAI #Meilisearch #youtubedl #Ollama #Monolith #Shaarli #LinkAce #Linkding

  8. #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 1
    2025-02-22 23:25:27,465 INFO spawned: 'php-fpm' with pid 8
    2025-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 that
    APP_KEY=redacted
    APP_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 here
    DB_HOST=linkace_db
    # Set the port of your database here
    DB_PORT=3306
    # Set the database name here
    DB_DATABASE=linkace
    # Set both username and password of the user accessing the database
    DB_USERNAME=linkace
    # Wrap your password into quotes (") if it contains special characters
    DB_PASSWORD=redacted

    ## Redis cache configuration
    # Set the Redis connection here if you want to use it
    REDIS_HOST=linkace_redis
    REDIS_PASSWORD=redacted
    REDIS_PORT=6379
    APP_DEBUG=true

    # SSO configuration
    SSO_ENABLED=true
    SSO_OIDC_ENABLED=true
    SSO_REGISTRATION_ENABLED=true
    REGULAR_LOGIN_DISABLED=true
    SSO_OIDC_BASE_URL=https://auth.laniecarmelo.tech/ # Your Authelia base URL
    SSO_OIDC_CLIENT_ID=linkace
    SSO_OIDC_CLIENT_SECRET='redacted'
    SSO_OIDC_SCOPES=openid,profile,email

    Caddyfile snippet

    {
    email [email protected]
    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