haishanh / cherry Goto Github PK
View Code? Open in Web Editor NEWCherry is a self-hostable bookmark service
Home Page: https://cherry.haishan.me
License: MIT License
Cherry is a self-hostable bookmark service
Home Page: https://cherry.haishan.me
License: MIT License
I set ENABLE_REGISTRATION=1, but on the sign in page there is no register button. I created a user with the internal admin API, but when I press the log in button nothing happens. When I put it behind a reverse proxy sign in works fine (Register option still does not show though)
Hi,
is there any reason, why the favicons are not in the docker container, but instead are served directly from your server? this way you can get referrer to my installation.
Could you please put the favicon in the images and locally load them?
Line 6 in 10fa738
我通过linux服务器宝塔搭建的!直接Docker跑起来了,反向代理也设置好了。在登陆的输入账号密码无反应!请问这是咋回事?请问宝塔怎么设置环境变量?
it would be very nice to integrate a LDAP for user authentication. Any chance to see it in the future?
I think cherry has a lot potential, but I cant see activity for a long time. Does somebody knows more?
If you signup with "[email protected]", the login fails if you try later with "[email protected]".
It would be nice to allow authentication via an HTTP-header containing the username. This would allow using proxy authentication via sso providers like Authelia or Authentik and by this, it would also be possible to authenticate using ldap or oidc.
Proxy authentication basically works like this:
OpenID Connect would also be a good option, but this is much simpler to implement.
Many other services do this as well, for example Paperless
and Firefly III
I'd really like to have some form of SSO, as I host many services for myself and don't like to sue different credentials for everything. And it should not be too complicated to implement 🙂 What do you think?
Is there a way to add a bookmark from my android phone?
Thanks
Christian
如何批量删除,或者一次性删除全部书签?
使用场景:
导入chrome书签后,发现书签不对或者需要更新。
因此需要一次删除全部的书签后,在重新导入;
但是没有找到,删除全部书签的按钮,只能一个组一个组的去删除。
Hello,
I have executed the following docker compose
---
version: '3.3'
services:
cherry:
image: haishanh/cherry:test
container_name: auth_cherry
volumes:
- "/home/cherry:/data"
environment:
- JWT_SECRET=some-secret-string
# this flag is important for remote-user feature to work
- ENABLE_HTTP_REMOTE_USER=1
- HTTP_REMOTE_USER_HEADER_NAME=Remote-User
ports:
- 8012:8000
When the docker is up, it requests a user and a password, which I can't find in your documentation.
What is the default user and password, so I can authenticate to the app.
Hi, I have two feature requests for the browser extension.
One is a way to get to the cherry webpage through the extension icon. Some of my other extensions have a right click menu with custom entries so it should be possible to add a small shortcut there. (I'm using Firefox, I don't know if Chrome can do the same)
The other request is adding a small icon (like a star) in the corner of the extension icon so you know if you've already favorited a page. I have other extensions that show a number on their icon (uBlock Origin shows blocked ads, Bitwarden shows how many saved passwords for a page) but I don't know if that's a feature built in to Firefox and if it is limited to just numbers.
Loving everything else about Cherry so far, good job
After my docker-compose was created, the input account number and clicking the login button did not respond.
docker-compose file:
version: '3'
services:
cherry:
image: haishanh/cherry:v0.0.3
container_name: cherry
restart: unless-stopped
ports:
- 5150:8000
volumes:
- /data/cherry/data:/data
environment:
- JWT_SECRET=some-some-secret-string
- ENABLE_PUBLIC_REGISTRATION=1
Hello there. Cherry seems to be a super nice tool, only thing is that I can't get it to work reliably. I can register and log into it, but only the first time; every subsequent query to it greets me with a 502.
This is my NGINX segment for Cherry, specifically. What am I missing here?
server {
server_name cherryinstance.domain.com;
listen 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/cherryinstance.domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/cherryinstance.domain.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
location / {
proxy_pass http://172.18.0.14:8000;
proxy_http_version 1.1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
proxy_redirect http:// https://;
add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
}
}
This works: https://old.reddit.com/r/AskReddit/comments/y01xtf/film_snobs_of_reddit_who_was_the_single_worst/irri5i5/ you get "Cherry Picked!"
This fails: https://twitter.com/Aishalee02/status/1576501603376324608 with "failed to fetch"
I'm running the Cherry app with "npm run dev" from git source checkout, localhost:xxx
The Chrome console says CORS issue when Bookmarklet is used on Twitter. Is Twitter blocking this?
It would be nice to have feature where you could sort out bookmarks that are not tagged as well as bookmarks that are ungrouped.
The use case is that I use the bookmarklet a lot to add bookmarks. Now and then I go in to add tags and groups to each bookmark to have a good way to organize the items. But right now it is difficult to see which bookmarks have already been tagged or grouped in the all view. Therefore I am seeking for a feature to see only untagged/ungrouped.
Thank you! Also Really nice job on creating Cherry 😊
Hi there.
When i sign, IT stays in that page. Cant do anything more it stays static
The credencial are correct, i made previous registry them.
Thanks
Hi!
Thanks for create this. Simple, fast and reliable.
If you search for a tag in the search bar, you must "enter" o click the "search" button to get the result and if you want to "clean" the search, you must delete the tag in the search bar and then press again the button.
There is a way to show the result when you type the tag or the query? Like real time?
In the Tag view you can view all the tags. But you can't see the untagged ones. Can you add this? This will be useful to keep in order the bookmarks.
Thanks!!
Import of bookmarks from Safari fails. I have also tested Chrome export and also failed. Also tested Chrome as browser for import...
Step 1. I export bookmarks from Safari on Mac, it gives an "Safari Bookmarks.html" file of about 600kb.
Step 2. Import file
Big red "Import failed" message.
Here are the logs from docker logs cherry
for Safari import
Listening on 0.0.0.0:5173
10.0.0.1 - - [08/Oct/2022:12:59:23 +0000] "GET /settings/import HTTP/1.1" 200 6497 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Safari/605.1.15"
2022/10/08 12:59:28 [warn] 489#489: *1 a client request body is buffered to a temporary file /tmp/nginx/1/00/0000000001, client: 10.0.0.1, server: , request: "POST /api/import HTTP/1.1", host: "cherry.personal.domain", referrer: "https://cherry.personal.domain/"
10.0.0.1 - - [08/Oct/2022:12:59:28 +0000] "POST /api/import HTTP/1.1" 413 31 "https://cherry.personal.domain/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Safari/605.1.15"
Here is for Chrome import
2022/10/08 13:20:01 [warn] 481#481: *50 a client request body is buffered to a temporary file /tmp/nginx/2/00/0000000002, client: 10.0.0.1, server: , request: "POST /api/import/netscape-bookmark-file-1 HTTP/1.1", host: "cherry.personal.domain", referrer: "https://cherry.personal.domain/"
10.0.0.1 - - [08/Oct/2022:13:20:01 +0000] "POST /api/import/netscape-bookmark-file-1 HTTP/1.1" 413 31 "https://cherry.personal.domain/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Safari/605.1.15"
2022/10/08 13:20:01 [info] 481#481: *50 client 10.0.0.1 closed keepalive connection
2022/10/08 13:21:17 [warn] 481#481: *59 a client request body is buffered to a temporary file /tmp/nginx/3/00/0000000003, client: 10.0.0.1, server: , request: "POST /api/import/netscape-bookmark-file-1 HTTP/1.1", host: "cherry.personal.domain", referrer: "https://cherry.personal.domain/"
10.0.0.1 - - [08/Oct/2022:13:21:17 +0000] "POST /api/import/netscape-bookmark-file-1 HTTP/1.1" 413 31 "https://cherry.personal.domain/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Safari/605.1.15"```
I'm currently running cherry, via docker, like this:
docker run -d --name cherry \
-v /home/user1/dockerfiles/cherryBookmarks/data:/data \
-p "8032:8000" \
-e "JWT_SECRET=mys3cr3cts0StronG43!" \
-e "ENABLE_PUBLIC_REGISTRATION=1" \
-e "USE_INSECURE_COOKIE=1" \
haishanh/cherry
I had to use the USE_INSECURE_COOKIE
because it wouldn't let me login without that being set.
And now I'm able to wonderfully access it on my local network at http://192.168.1.25:8032. I.e. where my server is on my local network. I'm able to access that as long as, of course, I'm connected to my local network. That works great.
I'm using Chrome web browser through all this.
The problem now starts with me using my router's dynamic dns. We'll call it: https://mysynologyrouter.publicdynamicdns.com. I've configured my router to port forward the public port 33847 to my local port 8032. So, when I go to https://mysynologyrouter.publicdynamicdns.com:33847, I get a ERR_SSL_PROTOCOL_ERROR
that says "This site can’t provide a secure connection."
I've tried to just access via plain http via a http://mysynologyrouter.publicdynamicdns.com:3387. However, my dynamicDNS provider appears to always auto forward http to https and then receives the same error. I know my dynamicDNS has all its letsencrypt certs in place because I have other services, such as Bitwarden, successfully using this dynamicDNS URL.
How do I get passed this ERR_SSL_PROTOCOL_ERROR
error that says "This site can’t provide a secure connection" whenever I try to access Cherry via my dynamicDNS host name?
I've installed Cherry version 0.0.6 and it is working flawlessly, but after importing my bookmarks no bookmarks are shown.
My bookmarks HTML backup file is 10.8 megabytes in size. The newest versions of Firefox (version 108.0.1) and Google Chrome (version 108.0.5359.125) both successfully import my bookmarks file. But, Pocket does not -- it does the same thing Cherry does (shows 0 bookmarks after "successfully" importing my bookmarks backup file).
Perhaps the issue has something to do with my bookmark file as I've been faithfully backing up my bookmarks since 2007?
A copy of my Bookmarks file can be found here.
It would be good to be able to edit the number of visible groups on the side bar, including showing all groups at once instead of the 4 or 5 most recent.
I can't search Chinese, only the English part of the bookmark title.Hopefully this feature can be added.
Proxy opts.uri is mandatory
InvalidArgumentError: Proxy opts.uri is mandatory
at buildProxyOptions (...cherry/node_modules/undici/lib/proxy-agent.js:28:11)
at new ProxyAgent (...cherry/node_modules/undici/lib/proxy-agent.js:40:20)
at ...cherry/src/routes/api/favicon/[site]/favicon.util.ts:16:61
I'm not running with docker or anything, just git clone of the project, setup .env for database, I was able to create (email/SQLite local) account through the webapp, then after adding a bookmark this error is on the server-side when running localhost in browser.
EDIT: More information. It's the images are broken on all the bookmark. In Chrome I opened the Image link in another tab and it's like this: http://localhost:5173/api/favicon/old.reddit.com - which generates the server-side console error.
I'm not running within docker, running native on Ubuntu 22.04 development machine. Thank you.
A local archive of all bookmarks saved, such as a copy of the webpage or a high quality screenshot.
This would be useful for offline use and having a backup of your bookmark if the link goes dead.
Hi,
Most bookmark services have the ability to export the bookmarks saved in their chosen domain form into to some format of json. So it'd be nice if Cherry came out of the box with the ability to not only import from popular format, but to also export back to chrome, firefox, etc.. Suggesting that format be json. And suggesting that the json export include the metadata saved for each cherry picked bookmark. e.g. Its: tags, group, name, and description.
Congrats on a wonderful piece of software. really useful
I am not sure if you had a docker-compose.yml, but I have included one and also the volumes should have a ./cherry_data_v1:/data
version: '3.3' services: cherry: container_name: cherry volumes: - './cherry_data_v1:/data' ports: - '8000:8000' environment: - JWT_SECRET=Secret-here - ENABLE_REGISTRATION=1 image: haishanh/cherry
version: '3.3'
services:
cherry:
container_name: cherry
volumes:
- './cherry_data_v1:/data'
ports:
- '8000:8000'
environment:
- JWT_SECRET=Secret-here
- ENABLE_REGISTRATION=1
image: haishanh/cherry
Hey,
I started using Cherry a couple days ago and realized it didn't have a search feature in order to access my bookmarks more quickly.
Took some inspiration from Linkding's Omnibox feature and decided to try it out.
I don't have too much experience with the API at this moment.
The idea would be to improve it so it can use the Personal Access Token and query without having to login first.
At this moment, it can access the bookmarks by calling /api/bookmarks?q= while the user is logged in.
I tried it locally, importing the unpacked source code into Chrome.
https://github.com/MassilloAriel/CherryOmnibox
Thanks for your work :)
Best!
Seems the Dockerfile here is close to working for raspberry pi, but it includes some specifically non-arm code. Is it possible to make it generic enough to work with Raspberry Pi?
Regarding UX, not sure if possible, a keyboard shortcut for browser extension to save a link would be super useful.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.