Giter Site home page Giter Site logo

linkwarden / linkwarden Goto Github PK

View Code? Open in Web Editor NEW
6.1K 6.1K 216.0 28.19 MB

⚡️⚡️⚡️Self-hosted collaborative bookmark manager to collect, organize, and preserve webpages and articles.

Home Page: https://linkwarden.app

License: GNU Affero General Public License v3.0

TypeScript 95.26% JavaScript 3.83% CSS 0.82% Dockerfile 0.09%
bookmark-manager collaboration nextjs self-hosted typescript

linkwarden's Introduction

Linkwarden

Discord Twitter

GitHub commits since latest release

Intro & motivation

Linkwarden is a self-hosted, open-source collaborative bookmark manager to collect, organize and archive webpages.

The objective is to organize useful webpages and articles you find across the web in one place, and since useful webpages can go away (see the inevitability of Link Rot), Linkwarden also saves a copy of each webpage as a Screenshot and PDF, ensuring accessibility even if the original content is no longer available.

Additionally, Linkwarden is designed with collaboration in mind, sharing links with the public and/or allowing multiple users to work together seamlessly.

Tip

Our official Cloud offering provides the simplest way to begin using Linkwarden and it's the preferred choice for many due to its time-saving benefits.
Your subscription supports our hosting infrastructure and ongoing development.
Alternatively, if you prefer self-hosting Linkwarden, no problem! You'll still have access to all the premium features.

A bit of a "history" Linkwarden has been completely rebuilt and redesigned from ground up, so pretty much the only thing it has in common with its predecessor is the idea behind it - bookmark management.

What happened to the old version? We've forked the old version from the current repository into this repo.

Features

  • 📸 Auto capture a screenshot, PDF, and readable view of each webpage.
  • 🏛️ Send your webpage to Wayback Machine (archive.org) for a snapshot. (Optional)
  • 📂 Organize links by collection, sub-collection, name, description and multiple tags.
  • 👥 Collaborate on gathering links in a collection.
  • 🎛️ Customize the permissions of each member.
  • 🌐 Share your collected links and preserved formats with the world.
  • 📌 Pin your favorite links to dashboard.
  • 🔍 Full text search, filter and sort for easy retrieval.
  • 📱 Responsive design and supports most modern browsers.
  • 🌓 Dark/Light mode support.
  • 🧩 Browser extension, managed by the community. Star it here!
  • ⬇️ Import and export your bookmarks.
  • 🔐 SSO integration. (Enterprise and Self-hosted users only)
  • 📦 Installable Progressive Web App (PWA).
  • 🍎 iOS Shortcut to save links to Linkwarden.
  • 🔑 API keys.
  • ✅ Bulk actions.
  • ✨ And so many more features!

Like what we're doing? Give us a Star ⭐

Star Us

We're building our Community 🌐

Join and follow us in the following platforms to stay up to date about the most recent features and for support:

Discord

Twitter

Mastodon

Suggestions

We usually go after the popular suggestions. Feel free to open a new issue to suggest one - others might be interested too! :)

Roadmap

Make sure to check out our public roadmap.

Docs

For information on how to get started or to set up your own instance, please visit the documentation.

Development

If you want to contribute, Thanks! Start by checking our public roadmap, there you'll see a README for contributers for the rest of the info on how to contribute and the main tech stack.

Security

If you found a security vulnerability, please do not create a public issue, instead send an email to [email protected] stating the vulnerability. Thanks!

Support ❤

Other than using our official Cloud offering, any donations are highly appreciated as well!

Here are the other ways to support/cheer this project:

  • Starring this repository.
  • Joining us on Discord.
  • Referring Linkwarden to a friend.

If you did any of the above, Thanksss! Otherwise thanks.

Thanks to All the Contributors 💪

Huge thanks to these guys for spending their time helping Linkwarden grow. They rock! ⚡️

Contributors

linkwarden's People

Contributors

bijeebuss avatar crkos avatar daniel31x13 avatar dependabot[bot] avatar g1sbi avatar gardner avatar go-compile avatar isaacwise06 avatar jacq avatar jan-tee avatar modem7 avatar paulhovey avatar peschmae avatar qacomet avatar qts8n avatar shxshxshxshx avatar siccous avatar treyg avatar yeejiawei avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

linkwarden's Issues

Bug report

Describe the bug
Unable to run npm install with node v 14, v16, or v18

To Reproduce
Steps to reproduce the behavior:

$ node --version
v14.19.2
$ npm i
npm ERR! code ERESOLVE
npm ERR! ERESOLVE could not resolve
npm ERR!
npm ERR! While resolving: [email protected]
npm ERR! Found: [email protected]
npm ERR! node_modules/react
npm ERR!   react@"^18.0.0" from the root project
npm ERR!   peer react@">=16.8.0" from @emotion/[email protected]
npm ERR!   node_modules/@emotion/react
npm ERR!     @emotion/react@"^11.8.1" from [email protected]
npm ERR!     node_modules/react-select
npm ERR!       react-select@"^5.3.2" from the root project
npm ERR!   9 more (@testing-library/react, react-dom, react-pro-sidebar, ...)
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer react@"^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" from [email protected]
npm ERR! node_modules/react-lazyload
npm ERR!   react-lazyload@"^3.2.0" from the root project
npm ERR!
npm ERR! Conflicting peer dependency: [email protected]
npm ERR! node_modules/react
npm ERR!   peer react@"^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" from [email protected]
npm ERR!   node_modules/react-lazyload
npm ERR!     react-lazyload@"^3.2.0" from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
npm ERR!
npm ERR! See /Users/gardner/.npm/eresolve-report.txt for a full report.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/gardner/.npm/_logs/2022-06-17T21_50_37_257Z-debug-0.log

Device info (please complete the following information):
macOs Monterey (M1 hardware)

Additional context
I was just trying to dockerize the code and noticed it's not getting passed npm i on any recent version of node.

Authentication issue. The new user cannot log in to the website.

After creating a new user, it is not possible to authenticate using their credentials.

System: CentOS
Method: Docker Swarm - Portainer

Own build docker image without any changes.

Message: Server error. There is a problem with the server configuration. Check the server logs for more information.

version: "3.5"
services:
  postgres:
    image: postgres
    environment:
      - POSTGRES_PASSWORD=password
    volumes:
      - /portainer/linkwarden/pgdata:/var/lib/postgresql/data
  linkwarden:
    environment:
      - DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@postgres:5432/linkwardendb
    image: creogenesis/linkwarden:latest
    ports:
      - 3003:3000
    volumes:
      - /portainer/linkwarden/data:/data/data
    depends_on:
      - postgres

Logs:

prisma:query SELECT "public"."User"."id", "public"."User"."name", "public"."User"."username", "public"."User"."email", "public"."User"."emailVerified", "public"."User"."image", "public"."User"."password", "public"."User"."isPrivate", "public"."User"."createdAt" FROM "public"."User" WHERE "public"."User"."username" = $1 LIMIT $2 OFFSET $3

prisma:query BEGIN

prisma:query INSERT INTO "public"."User" ("name","username","password","isPrivate","createdAt") VALUES ($1,$2,$3,$4,$5) RETURNING "public"."User"."id"

prisma:query SELECT "public"."User"."id", "public"."User"."name", "public"."User"."username", "public"."User"."email", "public"."User"."emailVerified", "public"."User"."image", "public"."User"."password", "public"."User"."isPrivate", "public"."User"."createdAt" FROM "public"."User" WHERE "public"."User"."id" = $1 LIMIT $2 OFFSET $3

prisma:query COMMIT

[next-auth][error][NO_SECRET]

https://next-auth.js.org/errors#no_secret Please define a secret in production. MissingSecret [MissingSecretError]: Please define a secret in production.

at assertConfig (/data/node_modules/next-auth/core/lib/assert.js:42:12)

at AuthHandler (/data/node_modules/next-auth/core/index.js:77:52)

at process.processTicksAndRejections (node:internal/process/task_queues:95:5)

at async NextAuthApiHandler (/data/node_modules/next-auth/next/index.js:22:19)

at async NextAuth._args$ (/data/node_modules/next-auth/next/index.js:106:14) {

code: 'NO_SECRET'

}

It would be nice to be able to visit the target page by clicking somewhere on the link card.

A possibility to access the website directly via the "card" of the link would be super. I would expect to be able to access the target page either by clicking on the link title or by clicking on the text that appears next to the "link icon". At the moment it looks like I have to call up the edit dialogue first to get to the clickable page URL. Thanks & keep up the good work :-)

Screenshot 2023-09-20 140344

Clickable tags, title and more suggestions

First, this looks really great! I just have a couple suggestions.

Clickable tags so we can see each link in that tag like categories.

Clickable title to go to the link.

Lists where we can further define groups of links.

Public links are great but only allow admins to add links.

Browser Extension - Enable web-clipping feature

Hi There,

I am just taking a first look at linkwarden. So far, it looks very nice.

However, just for my understanding: If I am using the browser extension, linkwarden server will take the clip of the target web page, not the extension locally from my local browser.

Therefore, if I want to store an article, that is behind paywall (paid), linkwarden will not be able to do it, as it cannot login and get behind paywall...? That would be a sad fact...

Thanks

Deploy with Portainer

Is this the right compose to deploy thru Portainer as a stack ?

version: "3.5"
services:
postgres:
image: postgres
environment:
- POSTGRES_PASSWORD=password
volumes:
- /specifiedpath/pgdata:/var/lib/postgresql/data
linkwarden:
environment:
- DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@postgres:5432/linkwardendb
- NEXTAUTH_SECRET=syperstrongpassword
- POSTGRES_PASSWORD=syperstrongpassword
- NEXTAUTH_URL=http://localhost:3003
image: creogenesis/linkwarden:latest
ports:
- 3003:3000
volumes:
- /specifiedpath/data:/data/data
depends_on:
- postgres

Contribution: Create docker-image.yml

Hi!

Rather than building the docker image locally wouldn't be better to build and publish it to Docker hub directly using a Github actions? I can provide an example if needed :D

Docker build failure

Describe the bug
Unable to self-host with Docker

To Reproduce
Steps to reproduce the behavior:
Followed the Docker self hosting instructions here : https://docs.linkwarden.app/getting-started/self-hosting#docker-

Expected behavior
Server running at port 3000.

Logs

WARN[0000] The "DC" variable is not set. Defaulting to a blank string.
WARN[0000] The "DC" variable is not set. Defaulting to a blank string.
WARN[0000] The "DC" variable is not set. Defaulting to a blank string.
WARN[0000] The "DC" variable is not set. Defaulting to a blank string.
WARN[0000] The "DC" variable is not set. Defaulting to a blank string.
[+] Building 1.3s (10/16)
 => [linkwarden internal] load .dockerignore                                                                                              0.1s
 => => transferring context: 119B                                                                                                         0.0s
 => [linkwarden internal] load build definition from Dockerfile                                                                           0.0s
 => => transferring dockerfile: 644B                                                                                                      0.0s
 => [linkwarden internal] load metadata for docker.io/library/ubuntu:focal                                                                0.4s
 => [linkwarden  1/12] FROM docker.io/library/ubuntu:focal@sha256:33a5cc25d22c45900796a1aca487ad7a7cb09f09ea00b779e3b2026b4fc2faba        0.0s
 => [linkwarden internal] load build context                                                                                              0.1s
 => => transferring context: 10.51kB                                                                                                      0.0s
 => CACHED [linkwarden  2/12] RUN apt-get update && apt-get install wget xz-utils -y                                                      0.0s
 => CACHED [linkwarden  3/12] RUN mkdir /data                                                                                             0.0s
 => CACHED [linkwarden  4/12] WORKDIR /data                                                                                               0.0s
 => CACHED [linkwarden  5/12] RUN wget https://nodejs.org/dist/v20.5.0/node-v20.5.0-linux-x64.tar.xz -O nodejs.tar.xz   && mkdir /opt/no  0.0s
 => ERROR [linkwarden  6/12] RUN npm install -g yarn                                                                                      0.8s
------
 > [linkwarden  6/12] RUN npm install -g yarn:
#0 0.483 /opt/nodejs/bin/node: 1: Syntax error: "(" unexpected
------
failed to solve: process "/bin/sh -c npm install -g yarn" did not complete successfully: exit code: 2

Setup Github Action to publish container images

Is your feature request related to a problem? Please describe.
Currently linkwarden doesn't publish any container/docker images.

Using Github actions, it's possible to automatically build container images if a new release is created, and automatiaclly publish it to the github registry.

Describe the solution you'd like
I would propose to enable the github actions for the repository, and would be willing to contribute to required github actions/workflows to automatically publish releases as new images.

Describe alternatives you've considered
It's also possible to publish to dockerhub, but this would require a organization account on docker hub as well, and just using the github registry would work fine as well.

Additional context
There seems to have been some discussions in #11 but it's unclear what the outcome of that was.

SingleFile archive and/or arbitrary files linked to an entry

Is your feature request related to a problem? Please describe.
My problem is twofold (might be overloading this issue but didn't want to spam). Firstly the PDF extractor isn't perfect (although it's pretty good) - some deferred images in pages didn't get picked up. Also sometimes I want to save an interactive page (although not sure any tool will do that super reliably). Secondly, some pages I want to keep are originally not HTML (e.g. PDF, or video), and it doesn't look like the conversion process works for at least PDFs (understandable that the PDF converter would find PDF->PDF a confusing request).

Describe the solution you'd like
Pages to be processed with SingleFile or similar and that to be added to an entry - and/or - the ability to upload arbitrary files (consider Calibre-Web's functionality to upload various formats of a book).

API problem - restarting status

Hi,

I have a problem with the application, namely the API. I still have restarting status. What could be wrong?

image
image

I tried to restart with the command "docker docker compose restart" but it doesn't help.

Can someone help me?

How to get in touch regarding a security concern

Hello 👋

I run a security community that finds and fixes vulnerabilities in OSS. A researcher (@TasosY2K) has found a potential issue, which I would be eager to share with you.

Could you add a SECURITY.md file with an e-mail address for me to send further details to? GitHub recommends a security policy to ensure issues are responsibly disclosed, and it would help direct researchers in the future.

Looking forward to hearing from you 👍

(cc @huntr-helper)

Moving bookmark to another collection break download links

Hi,

If you save a link to a collection and decide later to move it to another collection, png/pdf files are note moved to the new collection's folder leading to broken links as they are dynamically generated for the current bookmark's collection.

If you save a new bookmark to the default "unnamed collection", move it after to another collection and then delete the "unnamed collection", you lose the files and need to delete and recreate the bookmark to generate again the files.

Expected behavior:

  • Move files accordingly when changing the collection
  • Offer option to regenerate png/pdf files

NixOS support

Currently building fails on NixOS because of Prisma does not compile under NixOS and there are not precompiled nixos binaries offered:

image

There are various mitigations that are known for this (although I am just coming to them fresh and don't really yet understand them):

https://github.com/pimeys/nix-prisma-example/blob/main/flake.nix

steinerkelvin/alfred@3f84b61

prisma/prisma#3026

Someone (possibly myself) should get this building on NixOS and submit a PR consisting of a flake.nix, etc.

[Feature Request] Authentication

Hi,
altough it would be possible to run this behind some sort of external authentication provider (.htaccess/authelia/similar), it would be good to have some sort of privacy/login method like many services have.
Like I can choose if sharing the links in a public way or to require a password to unlock the dashboard.

Have you considered anything like this? I am actually considering about deploying this in my self-hosted fleet, but would like to know if anyghing like that might be implemented :)

Provide docker image for m1 mac

Describe the bug
Currently the docker image only works on amd64 platforms, mostly due to the fact that generating the website snapshots crashes.

There are a few issues at playwright about similar issues, for example playwright#11150, which hint at chrome beeing a possible culprit.

Using firefox to create the renderings, might solve this issue.

To Reproduce
Steps to reproduce the behavior:

  1. Use macOS M1
  2. Build container image (without plattform flag)
  3. Start container
  4. Try to scrape website

Expected behavior
The website should be scrapped properly without the container crashing

Desktop (please complete the following information):

  • OS: macOS on Appli silicon

Mixed content when running link-warden with reverse proxy and https

Issue

Hello again!

Now I'm getting mixed content error in browser, when frontend trying to talk to backend.

Prerequisites:

link-warden in docker behind reverse proxy, serving https.

Steps to reproduce:

  1. Run link-warden behind reverse proxy (traefik, in my case);
  2. Try to add bookmark with "+" button.

Result:

I'm getting error in browser console:

send.js:30 Mixed Content: The page at 'https://domain.com' was loaded over HTTPS, but requested an insecure resource 'http://link-warden-api:5500/api'. This request has been blocked; the content must be served over HTTPS.
addItem @ send.js:30
send.js:30          Uncaught (in promise) TypeError: Failed to fetch
    at addItem (send.js:30:1)
    at newItem (AddItem.js:24:1)
    at AwesomeButton.action (index.js:1:1)
    at AwesomeButton.pressOut (index.js:1:1)
    at onMouseUp (index.js:1:1)
    at HTMLUnknownElement.callCallback (react-dom.development.js:4157:1)
    at Object.invokeGuardedCallbackDev (react-dom.development.js:4206:1)
    at invokeGuardedCallback (react-dom.development.js:4270:1)
    at invokeGuardedCallbackAndCatchFirstError (react-dom.development.js:4284:1)
    at executeDispatch (react-dom.development.js:9011:1)

Also I've got websocket error:

WebSocketClient.js:16 WebSocket connection to 'wss://domain.com:3000/ws' failed: 

But that's probably because I exposed port 3000 only to reverse proxy, I don't have a possibility to open that port to internet on that VM.

Local archive and mode "View Readable" for links

Is your feature request related to a problem? Please describe.

I think it's a good idea to have a screenshot of the page and a PDF format in case you need it. However, I don't think it's very practical or user-friendly. An additional approach would be welcome

Describe the solution you'd like
I am currently using Shiori in collaboration, and it has two functions that I consider indispensable for a good link manager.

Since it creates a local archive, we are not required to leave the site to view the content.

It also offers a reading mode that is quite valuable for quick information retrieval.

example : https://zpl.cous.re/u/Y4DmE.gif

I think that would be a highly appreciated addition.

In any case, I will closely follow this project. 😁

Archive.org snapshot option

Having the ability to trigger an archive.org snapshot and a link to that snapshot would be a helpful enhancement. To avoid triggering multiple builds from lots of people, a feature could also be added to check if a snapshot has been created for that page within a certain time frame.

Unable to run link-warden through docker-compose

I followed the steps from README.md and tried to run it through docker-compose
The only thing I modified in docker-compose.yml is

    ports:
      - 13000:3000

as I have another app using 3000 port

Once it's up, I can see link-warden and link-warden-api keep restarting

docker ps | grep link-warden
19f293c1d366   link-warden_link-warden        "docker-entrypoint.s…"   35 seconds ago       Restarting (127) 4 seconds ago                                                                                                                                                                               link-warden_link-warden_1
a75e107d1c1b   link-warden_link-warden-api    "docker-entrypoint.s…"   About a minute ago   Restarting (1) 8 seconds ago                                                                                                                                                                                 link-warden_link-warden-api_1
58b51a340f39   mongo                          "docker-entrypoint.s…"   About a minute ago   Up About a minute                0.0.0.0:27017->27017/tcp, :::27017->27017/tcp                                                                                                                               link-warden_mongo_1

By checking the logs:

api docker log

    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (/home/node/server.js:1:17)
    at Module._compile (node:internal/modules/cjs/loader:1112:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1166:10)
    at Module.load (node:internal/modules/cjs/loader:988:32)
    at Module._load (node:internal/modules/cjs/loader:834:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [ '/home/node/server.js' ]
}

Node.js v18.4.0
node:internal/modules/cjs/loader:949
�
  throw err;
  ^

Error: Cannot find module 'express'
Require stack:
- /home/node/server.js
    at Module._resolveFilename (node:internal/modules/cjs/loader:946:15)
    at Module._load (node:internal/modules/cjs/loader:787:27)
    at Module.require (node:internal/modules/cjs/loader:1012:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (/home/node/server.js:1:17)
    at Module._compile (node:internal/modules/cjs/loader:1112:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1166:10)
    at Module.load (node:internal/modules/cjs/loader:988:32)
    at Module._load (node:internal/modules/cjs/loader:834:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [ '/home/node/server.js' ]
}

link-warden log


> [email protected] go
> react-scripts start

/tmp/go65699788867.sh: line 2: react-scripts: not found

Did I miss anything to config?

Thanks

NEXTAUTH_URL port number not in effect

Describe the bug
I defined the url in the .env file.
NEXTAUTH_URL=http://localhost:3535

When I tried to start by running yarn start, it yields the following errors. How to rectify the issue?

  • error Failed to start server
    Error: listen EADDRINUSE: address already in use :::3000
    at Server.setupListenHandle [as _listen2] (node:net:1463:16)
    at listenInCluster (node:net:1511:12)
    at Server.listen (node:net:1599:7)
    at /root/linkwarden/node_modules/next/dist/server/lib/start-server.js:153:16
    at new Promise ()
    at startServer (/root/linkwarden/node_modules/next/dist/server/lib/start-server.js:134:11)
    at nextStart (/root/linkwarden/node_modules/next/dist/cli/next-start.js:77:40) {
    code: 'EADDRINUSE',
    errno: -98,
    syscall: 'listen',
    address: '::',
    port: 3000
    }

Not building

=> ERROR [12/12] RUN yarn build                                                                                                                        4.5s
------                                                                                                                                                       
 > [12/12] RUN yarn build:                                                                                                                                   
#0 2.004 yarn run v1.22.19                                                                                                                                   
#0 2.197 $ next build                                                                                                                                        
#0 3.377 uncaughtException /data/node_modules/next/dist/server/base-http/index.js:1                                                                          
#0 3.377                                                                                                                                                     
#0 3.377 
#0 3.377 
#0 3.377 SyntaxError: Invalid or unexpected token
#0 3.377     at internalCompileFunction (node:internal/vm:73:18)
#0 3.377     at wrapSafe (node:internal/modules/cjs/loader:1153:20)
#0 3.377     at Module._compile (node:internal/modules/cjs/loader:1197:27)
#0 3.377     at Module._extensions..js (node:internal/modules/cjs/loader:1287:10)
#0 3.377     at Module.load (node:internal/modules/cjs/loader:1091:32)
#0 3.377     at Module._load (node:internal/modules/cjs/loader:938:12)
#0 3.377     at Module.require (node:internal/modules/cjs/loader:1115:19)
#0 3.377     at require (node:internal/modules/helpers:119:18)
#0 3.377     at Object.<anonymous> (/data/node_modules/next/dist/server/base-http/node.js:26:16)
#0 3.377     at Module._compile (node:internal/modules/cjs/loader:1233:14)
#0 3.442 error Command failed with exit code 1.
#0 3.442 info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
------
failed to solve: executor failed running [/bin/sh -c yarn build]: exit code: 1

Add env var for db type so docker compose can pass

I think if you change that call to
datasource db {
provider = env("DATABASE_TYP")
url = env("DATABASE_URL")
}

then pass sqlite or postgres that will work? also what is the default path for the db url and example please?

          Linkwarden now supports SQLite, you just need to change [This Line](https://github.com/linkwarden/linkwarden/blob/89427f16f5752405ddcdbae7e147621dc9a3f1e0/prisma/schema.prisma#L6) from `postgresql` to `sqlite` and use the correct `DATABASE_URL` while taking the [Manual Installation](https://docs.linkwarden.app/getting-started/self-hosting#manual-installation).

Gotta update the docs later...

Originally posted by @daniel31x13 in #94 (comment)

Mac M1 Error on docker compose up

I ran into some errors on an M1 and discovered that they were related to docker not using x86_64 for the platform. This is an easy fix. Open the docker-compose.yml file and add the following:

platform: linux/x86_64

The compose file should look like this now:

version: "3.5"
services:
  postgres:
    image: postgres
    env_file: .env
    restart: always
    volumes:
      - ./pgdata:/var/lib/postgresql/data
  linkwarden:
    env_file: .env
    platform: linux/x86_64
    environment:
      - DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@postgres:5432/postgres
    restart: always
    build: .
    ports:
      - 3000:3000
    volumes:
      - ./data:/data/data
    depends_on:
      - postgres

Ability to provide an external playwright instance URL

It would be nice if the app/container could be configured to take an external playwright instance URL.

For folks already running Playwright - running Linkwarden means another instance.

Describe the solution you'd like

Something similar to how changedetection does it, for example, in the .env file you could have:

PLAYWRIGHT_DRIVER_URL=${PLAYWRIGHT_DRIVER_URL:-ws://playwright-chrome:3000/?stealth=1}

Describe alternatives you've considered

🤷

Additional context

N/A

Watchtower update

Hello

After a successful installation; I'm not able to update linkwarden with watchtower

Unable to update container "/linkwarden-linkwarden-1": Error response from daemon: pull access denied for linkwarden-linkwarden, repository does not exist or may require 'docker login': denied: requested access to the resource is denied. Proceeding to next.

How do I update linkwarden ?
github ?

Thanks

Publish images to docker hub

The docker images can be automatically built and pushed to Docker Hub. This will allow users to easily incorporate the image in their docker setups.

To enable this, complete the following steps:

Sign up for a Docker Hub account: https://hub.docker.com/

  • After logging in, click on your username in the top right
  • Select "Account Settings" from the dropdown
  • Select "Security" from the menu on the right
  • Click the "New Access Token" button
  • Give the token a name (e.g. github-linkwarden)
  • Make sure to copy the token and save it some place secret.

Set GitHub Action Secrets:

  • Visit your repo https://github.com/Daniel31x13/link-warden
  • Click on "Settings" with the gear icon
  • Dropdown "Secrets" under the "Security" section
  • Select "Actions"
  • Click "New repository secret"
    • For "Name" use DOCKER_HUB_USERNAME
    • For "Value" use [your docker hub username]
  • Add another secret
    • For "Name" use DOCKER_HUB_PASSWORD
    • For "Value" use [the token you generated on docker hub]

Go to https://github.com/Daniel31x13/link-warden/actions to inspect the actions.

Avoid to capture message box about cookies

Hi,
Many thanks for this awesome open source project.
Due to various regulations, some web sites display a large popup message about cookies that ides the content we want to capture.
Would it possible to hide these messages before the content is captured?
I am not a specialist at all, but maybe extensions like "I don't care about cookies" could be an inspiration source?
-> https://addons.mozilla.org/fr/firefox/addon/i-dont-care-about-cookies/
Best regards

Add Docker support

Add Dockerfile to project and update README.md with instructions on how to build/run the docker image. Also add in github action for autobuilding image on commit...

Enhancements for Public Collections

Sharing content with the public is fantastic, but it'd be even better if viewers could download PDF files too. Plus, when dealing with larger collections, the current list view and design might feel a bit clunky. Having a grid view option would be a nice addition.

And speaking of improvements, it'd be really helpful to include a search feature for public collections. Additionally, having an offline web archive that functions like SingleFile and Shiori would be a great addition.

Having all these features available for public collections would make this tool absolutely perfect.

Container link-warden-api error: permission denied, mkdir './media/screenshots'

Issue

Hello!

I'm trying to run link-warden on arm64 Ubuntu in Docker. I've installed docker-compose v2, as mentioned in issues, but I'm getting another strange error - container link-warden-api are restarting in the loop with error Error: EACCES: permission denied, mkdir './media/screenshots'. I've thought, that problem was in the edits I made in docker-compose.yml, but error still persists, when I'm trying to run original docker-compose.yml from repository.
I've tried to make dir /media/screenshots in the root of the repository, and in the /api subdir, but error still presents.
Could you please help me? If you need an additional information, I could try to find something else.

Prerequisites:

OS:

# cat /etc/issue
Ubuntu 20.04.3 LTS \n \l

Arch: arm64
Docker/docker compose version:

# docker compose version
Docker Compose version v2.9.0
# docker version
Client: Docker Engine - Community
 Version:           20.10.8
 API version:       1.41
 Go version:        go1.16.6
 Git commit:        3967b7d
 Built:             Fri Jul 30 19:55:05 2021
 OS/Arch:           linux/arm64
 Context:           default
 Experimental:      true

Steps to reproduce:

  1. Clone repository;
  2. Run docker compose up -d inside repository directory.

Result:

Container link-warden-api are restarting in the loop with error below:

node:internal/fs/utils:348
    throw err;
    ^

Error: EACCES: permission denied, mkdir './media/screenshots'
    at Object.mkdirSync (node:fs:1394:3)
    at Object.<anonymous> (/home/node/server.js:24:6)
    at Module._compile (node:internal/modules/cjs/loader:1120:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1174:10)
    at Module.load (node:internal/modules/cjs/loader:998:32)
    at Module._load (node:internal/modules/cjs/loader:839:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
    at node:internal/main/run_main_module:17:47 {
  errno: -13,
  syscall: 'mkdir',
  code: 'EACCES',
  path: './media/screenshots'
}

Node.js v18.7.0

Problem with launching the application - Build (16/17)

I have a problem launching the application. I downloaded the applications and ran the command (docker compose up -d).
The app has stopped on trial 16/17 and is still standing there. I attach a screen

Screenshot_1

does anyone know what the problem is? I would like to add that all this time it consumes ~ 100% of my vps resources

Screenshot_2

sqlite as db

Is your feature request related to a problem? Please describe.
for personal use does pg provide anything that sqlite cannot? I try and get sqlite support from every self hosted app I can as pg is overkill 99% of the time

Describe the solution you'd like
Support for sqllite

I currently use linkding in sqllite for my family and have no issues. this apps looks great and Id like to use it due to the archiving.

Hundreds of thousands of pings to "Mongo"

All my DNS traffic goes through my PiHole, and after setting up linkwarden I noticed that it's making thousands of calls to "Mongo" about 2-3 per second. Do you know of any way to fix this?

image

Profile picture reloads when switching sections

Describe the bug
Whenever I switch sections (dashboard/links/collections), the profile picture reloads. This shows the default profile picture for a fraction of a second before showing my chosen one.

To Reproduce
Steps to reproduce the behavior:

  1. Switch tabs

Expected behavior
My profile picture should stay loaded when switching sections, instead of showing the default profile picture for a short period of time.

Screenshots
https://i.imgur.com/N7aVsXA.mp4

Desktop (please complete the following information):

  • OS: macOS Ventura 13.5.2
  • Browser: Firefox (Release)
  • Version: 116.0.3

FEATURE REQUEST: support for oauth

I am submitting a request to incorporate OAuth support, a feature that I believe would greatly benefit organizations. Linkwarden proves to be exceptionally useful in team settings. However, without the option of Single Sign-On (SSO) and OAuth support, the prospect of recreating all our users within Linkwarden becomes a significant hurdle, potentially discouraging its adoption altogether.

Thank you

Compact List View

Is your feature request related to a problem? Please describe.

Is it possible to have a more compact view (say, a list view) with less padding? maybe this is covered by https://github.com/orgs/linkwarden/projects/1/views/1?pane=issue&itemId=34807308 .

https://discord.com/channels/1117993124669702164/1123628004145369149/1138270774231306251

https://media.discordapp.net/attachments/1123628004145369149/1138270774034182155/image.png?width=1440&height=666

Additional context

like raindrop.io

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.