0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

一人アドカレ 19日目: Linkwardenの紹介

Posted at

イントロ

ブックマーク管理、どうやっていますか?
よく使うサイトをブラウザのブックマークに入れるだけなら問題ありませんが、
あとから読みたい記事や、参考にしたい技術記事、あるいは資料サイトなど、増えてくると管理が大変ですよね。
(リーディングリストとか使いこなせてる人いるのだろうか...)
そんなときに便利なのがLinkwardenです。

Linkwardenはセルフホスティング可能なブックマーク管理ツールです。
タグ付けやフォルダ管理、PDFや画像によるサイトのスナップショット保存、さらにはブラウザ拡張機能を使ったワンクリック保存など、便利な機能が揃っています。

Linkwardenの使い方

環境情報
$ docker version
Client: Docker Engine - Community
 Version:           29.1.3
 API version:       1.52
 Go version:        go1.25.5
 Git commit:        f52814d
 Built:             Fri Dec 12 14:49:51 2025
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          29.1.3
  API version:      1.52 (minimum version 1.44)
  Go version:       go1.25.5
  Git commit:        fbf3ed2
  Built:            Fri Dec 12 14:49:51 2025
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v2.2.0
  GitCommit:        1c4457e00facac03ce1d75f7b6777a7a851e5c41
 runc:
  Version:          1.3.4
  GitCommit:        v1.3.4-0-gd6d73eb8
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

前提条件

  • Docker がインストールされていること
  • Traefik が導入されていること(リバースプロキシサーバー)

手順

  1. compose.ymlを作成します

    domain.tldはあなたのドメインに置き換えてください。

    compose.yml
    services:
      postgres:
        image: postgres:16-alpine
        container_name: linkwarden-db
        env_file: .env
        restart: always
        volumes:
          - ./pgdata:/var/lib/postgresql/data
        networks:
          - default
          - postgres-backup-network
        labels:
          glance.name: PostgreSQL
          glance.parent: linkwarden
      linkwarden:
        image: ghcr.io/linkwarden/linkwarden
        container_name: linkwarden
        env_file: .env
        environment:
          - DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/postgres
        restart: always
        expose:
          - 3000
        volumes:
          - ./data:/data/data
        depends_on:
          - postgres
        labels:
          traefik.enable: true
          traefik.host: linkwarden
          traefik.http.services.linkwarden.loadbalancer.server.port: 3000
          traefik.http.routers.linkwarden.entrypoints: websecure
          traefik.http.routers.linkwarden.tls: true
          traefik.http.routers.linkwarden.tls.certResolver: cloudflare
          traefik.docker.network: traefik-network
          glance.name: Linkwarden
          glance.icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/linkwarden.png
          glance.url: https://linkwarden.domain.tld/
          glance.description: Bookmark manager
          glance.id: linkwarden
        networks:
          - default
          - traefik-network
    
    networks:
      default:
      traefik-network:
        external: true
      postgres-backup-network:
        external: true
    
  2. .envファイルを作成します

    .env
    NEXTAUTH_SECRET=""
    POSTGRES_USER=linkwarden
    POSTGRES_PASSWORD=your_password_here
    # PocketIDによるOIDC認証
    NEXT_PUBLIC_KEYCLOAK_ENABLED=true
    KEYCLOAK_CUSTOM_NAME=PocketID
    KEYCLOAK_ISSUER=https://auth.domain.tld
    KEYCLOAK_CLIENT_ID=""
    KEYCLOAK_CLIENT_SECRET=""
    
  3. Docker Composeで起動します

    docker compose up -d
    

Linkwardenの感想

  • 良いところ
    • ブックマークのタグ付けやフォルダ管理が便利
      • AIタグ付け機能もある
    • PDFや画像でのスナップショット保存が可能
    • ブラウザ拡張機能でワンクリック保存ができる
    • OIDC認証に対応している
    • 公式のモバイルアプリが登場した
  • イマイチなところ
    • リソース消費がやや大きい
      • 常時メモリ700MB程度

以上、Linkwardenの紹介でした。
私としてはスナップショットの機能はあまりいらないのですが、リンク管理として使いやすいので重宝しています。
フォルダ管理(コレクション)もAI管理してくれないかなぁという期待があります。。。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?