notea-org / notea Goto Github PK
View Code? Open in Web Editor NEW📒 Self hosted note taking app stored on S3
📒 Self hosted note taking app stored on S3
Hi, there. Thank you for loving Notea. I originally built this app to solve my own needs, I need to be able to control the data and use it at anywhere. I don't care much about the editing experience, so I didn't spend much time on it.
Next, I plan to implement the following features, but I don't have much time to do this. You can vote for what you want most, or comment to add. I want to know what features you want more.
Done:
Hi! I'm setting up Notea on my server which already has a login system implemented via reverse proxy. That means that any request that actually gets through to the Notea backend is already authenticated. Would you consider adding an option to disable the login page and notea-managed authentication in general?
Thanks for the great app!
Ability to drag and drop block before/after one another would be helpful
Hi. I'm using Notea and I like the direction it's going in. Everything is working flawlessly for me, but I have a request/suggestion. I use a lot of HTML mixed in with my Markdown, but at the moment the HTML doesn't render with the rest of the markdown. For example:
Would it be possible to enable the editor to render HTML, or add the option to enable in Settings?
a bit of investigation got me to the /api/file/... url which actually return the local minio url instead of the Image.. this should be fixed
Hi there, I'm a web app newbie, apology if dump question raised.
Want to self-host notea, so I 'git clone' notea repo and did some proper config for minio and notea.
with 'npm run dev', everything is fine, didn't find any problem using notea in my web broser.
however if I did 'npm run build', got below TypeScript error in pages/api/upload.ts, does this matter?
E:\soft\Notea\app>npm run build
> [email protected] build E:\soft\Notea\app
> next build
info - Using webpack 5. Reason: future.webpack5 option enabled https://nextjs.org/docs/messages/webpack5
Failed to compile.
./pages/api/upload.ts:28:17
Type error: Argument of type 'string | null' is not assignable to parameter of type 'string'.
Type 'null' is not assignable to type 'string'.
26 | 0,
27 | 8
> 28 | )}${extname(file.name)}`
| ^
29 | const filePath = getPathFileByName(fileName)
30 |
31 | await req.state.store.putObject(filePath, buffer, {
info - Checking validity of types .npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] build: `next build`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\X\AppData\Roaming\npm-cache\_logs\2021-05-31T09_49_12_657Z-debug.log
Hi, thank you so much for this awesome project!
For some reason, the notices aren't rendering correctly in the public view.
Here is an example side by side (public on the left, obviously):
I hope this is just a small rendering issue, so it may be easy to fix?
Please let me know if you need any further information, e.g. to reproduce the issue.
.env 新建后修改如下,id和密钥用省略号
STORE_ACCESS_KEY=7e1e5………………4ee2
STORE_SECRET_KEY=pni3q6X……………………VY=
STORE_BUCKET=zzbucket
STORE_END_POINT=https://自己name.compat.objectstorage.ap-chuncheon-1.oraclecloud.com
PASSWORD=123123
STORE_REGION=ap-chuncheon-1
# STORE_FORCE_PATH_STYLE=
Currently the PWA renders offline, but when trying to type text or create a new note, it keeps deleting the text.
This may be able to be done with the Background sync feature in ServiceWorker
The API endpoint for images doesn't check for the user to be logged in. If someone shares a note and later unshares the note, but the image was opened in a new tab, it can still be accessed from the user history.
Hi,
I'm a journalist testing Notea so that I can recommend to my readers.
I've tried the netlify option and it didin't work for me.
https://edufnotes.netlify.app/
Error message bellow.
How can I fix it?
Best
{"errorType":"Runtime.UnhandledPromiseRejection","errorMessage":"TypeError: Cannot read property 'byteLength' of undefined","trace":["Runtime.UnhandledPromiseRejection: TypeError: Cannot read property 'byteLength' of undefined"," at process.<anonymous> (/var/runtime/index.js:35:15)"," at process.emit (events.js:314:20)"," at processPromiseRejections (internal/process/promises.js:209:33)"," at processTicksAndRejections (internal/process/task_queues.js:98:32)"]}
After entering the (correct) password the login page just reloads and asks again for the password.
I see it creates documents in my Minio instance, but i cant get further than this.
Hi there
'search note' or I'll call it 'global search' seems broken in this case (highly simplified but still demonstrate the issue):
To reproduce :
I created 3 pages:
page1:
title: CrashDump
content: info about all the crashdump in linux
page2:
title: device
content: the Windows support info for all the
page3:
title ARM test
content: arm info on the doc architecture reference manual
so each page contains the word 'info'. However when I search 'info', only 2 pages are revealed in search result. page3 contains 'info' but not in search result.
Any more info needed? Please let me know.
My Environment:
notea is git cloned just today, yarn install/build. Data back-end is minio. Both notea and minio are natively self-hosted locally on localhost:PORT on my Windows 10 workstation, no docker etc. Thanks.
I would very much like to host Notea under a path like https://domain.tld/notea/
but setting BASE_URL
as such doesn't work.
The first I issue I ran into was logging in. It redirected me to /login
when instead it would need to go to /notea/login
.
How much work do you think it would be to support this?
I took a look at the login redirect code a bit and found out that libs/server/middlewares/auth.ts
doesn't know anything about BASE_URL
. Didn't yet have more time to start trying to fix the code myself.
Following an external link form a note is currently somewhat cumbersome, as it requires double-clicking on the link, and then clicking on the external-link icon that appears.
It would be useful if an external-link icon was inserted after the text of each link, so it could be followed immediately.
Not sure what's happening here, but on Firefox I'm not able to check or uncheck check boxes on notes where on Chrome it's working perfectly fine.
Keeping a history of note edits would be amazing, possibly configurable for amount of time it keeps the versions
I love this project, but I don't want to deal with the overhead of running an S3 server alongside this. Would it be possible to make it so that notes are stored in a human-readable file format directly on the file system? Such as a directory of .md files?
Been using Notea since I first saw it being mentioned on Reddit and thinks it is a great app.
One thing that I can't get around though is that I can upload images just fine but Notea will not render them.
This is my setup.
Notea is running in Docker and is behind my NAS reverse proxy. I access Notea using a URL that I have a SSL certificate for (https://notes..com). This works great.
I run Minio in a different Docker container and that one too is behind a https URL (https://minio..com)
As I said, images are uploading just fine but when Notea tries to go and fetch the image it gets a 403 back from the server and not the temporary redirect (307).
There is nothing in the log about this error.
If I take the URL that Notea is trying to load and paste that directly into the browser an error message from Minio comes up saying that the signature of the request isn't correct.
I have tried to have Notea access my Minio store using a http URL and then I get the redirect (307) but since my Notea app is running under https the browser will not allow the http call.
Any help is appreciated.
Thanks,
Most buttons are way too small for mobile.
Hi Everyone,
maybe you can help me out.
I am getting the following error:
[GET] /
12:15:28:97
2021-05-03T10:15:31.525Z b8e0dad7-2d94-4da3-aa21-e9deb74a77e4 ERROR AccessDenied: Access Denied
at deserializeAws_restXmlGetObjectCommandError (/var/task/node_modules/@aws-sdk/client-s3/dist/cjs/protocols/Aws_restXml.js:6184:41)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
at async /var/task/node_modules/@aws-sdk/middleware-serde/dist/cjs/deserializerMiddleware.js:6:20
at async /var/task/node_modules/@aws-sdk/middleware-signing/dist/cjs/middleware.js:12:24
at async StandardRetryStrategy.retry (/var/task/node_modules/@aws-sdk/middleware-retry/dist/cjs/defaultStrategy.js:56:46)
at async /var/task/node_modules/@aws-sdk/middleware-logger/dist/cjs/loggerMiddleware.js:6:22
at async StoreS3.getObject (/var/task/.next/server/pages/index.js:2379:22)
at async getSettings (/var/task/.next/server/pages/index.js:6795:44)
at async handler (/var/task/.next/server/pages/index.js:2219:18)
at async handler (/var/task/.next/server/pages/index.js:6896:17) {
Code: 'AccessDenied',
RequestId: '3CEDJNPHK28EFCD7',
HostId: '9NjH40yi/f2xMWQIkGZuZ4WQ4pV44LIhoh7kQkmEk4NyirxORFh3TluTu17GhwrAUTmVci3PYGY=',
'$fault': 'client',
'$metadata': {
httpStatusCode: 403,
requestId: undefined,
extendedRequestId: '9NjH40yi/f2xMWQIkGZuZ4WQ4pV44LIhoh7kQkmEk4NyirxORFh3TluTu17GhwrAUTmVci3PYGY=',
cfId: undefined,
attempts: 1,
totalRetryDelay: 0
}
}
RequestId: b8e0dad7-2d94-4da3-aa21-e9deb74a77e4 Error: Runtime exited with error: exit status 1
Runtime.ExitError
I have deployed notea via vercel.com.
Here are my Environmental variables:
The IAM Policy I am using is the following:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:GetBucketTagging",
"s3:GetObjectRetention",
"s3:DeleteObjectVersion",
"s3:GetBucketLogging",
"s3:RestoreObject",
"s3:ListBucket",
"s3:GetBucketVersioning",
"s3:GetBucketAcl",
"s3:ReplicateObject",
"s3:PutObject",
"s3:GetObjectAcl",
"s3:GetObject",
"s3:GetEncryptionConfiguration",
"s3:GetObjectTagging",
"s3:DeleteObject",
"s3:GetBucketLocation",
"s3:PutBucketVersioning",
"s3:ReplicateDelete",
"s3:GetObjectVersion"
],
"Resource": [
"arn:aws:s3:::notea-jan-backend/*",
"arn:aws:s3:::notea-jan-backend"
]
}
Does anyone have an idea if I am missing some permission or what else the problem could be?
Thanks a lot.
-Jan
I have more than thousand .md files but no idea how to import them to switch to Notea.
And would be really awesome to be able to export all my .md files in one click (maybe all compressed in a zip file).
Looking for a note taking app I can self host, do we have documentation for shelf hosting?
Docker command:
testo101@testo:~$ sudo docker run -d \
> --name notea \
> -p 3000:3000 \
> -e STORE_ACCESS_KEY=AKIAJxxxxxxxxxxZQ \
> -e STORE_SECRET_KEY=Sv7xxxxxxxxxxxxxxxxxxxxxxxxxxxxftym \
> -e STORE_BUCKET=notea \
> -e STORE_REGION=us-east-1 \
> -e STORE_FORCE_PATH_STYLE=true \
> -e PASSWORD=notea \
> cinwell/notea
[sudo] password for testo101:
Unable to find image 'cinwell/notea:latest' locally
latest: Pulling from cinwell/notea
540db60ca938: Pull complete
7e50016d5624: Pull complete
c43b2bfd1b9f: Pull complete
97029819a1de: Pull complete
74236504af82: Pull complete
7560e3ae15b8: Pull complete
ab919bc89f13: Pull complete
6081e29b8041: Pull complete
Digest: sha256:ba75a9425b64fee7c77e07b4fed131c54d35274a30be8089fef59bcacda89a22
Status: Downloaded newer image for cinwell/notea:latest
ba936740feca497449a0bbc3e0e54f0b1ffef084a776d69c0b6127d88b1b2741
something like workflowy (nested bullets) baked into this app might be cool to gain extra traction / popularity. this is definitely already much nicer, it seems to me, than the evernote desktop app. keep up the great work!
so far notea looks real nice! really nice! it's up there as far as i'm concerned with Logseq and Obsidian.
Qingwei,
Thanks for making notea.
Would you consider to support customizable article width? Something like 'double width' or even 'user input width value'. That's something like Notion's 'Full Width'.
Reason is, when I paste a relative 'big' picture or many times, write long code/words, a wider article makes it easy to read. Thanks
Yesterday I installed Notea with a minio bucket. Everything worked so far great, until today where I tried to add some notes.
Suddenly, I got an error in Chrome
https://i.neus.xyz/rtRPLq.png
https://i.neus.xyz/ORAHJt.mp4
Same thing happens in MS Edge.
root@DockerServer:/docker/.compose/notea# docker logs Notea
ready - started server on 0.0.0.0:3000, url: http://localhost:3000
info - Using webpack 5. Reason: no next.config.js https://nextjs.org/docs/messages/webpack5
Steps to reproduce: Make a note with images with descriptions, share note, open in incognito see image descriptions are not visible.
From my understanding in HTML, dir="auto"
can be added to make the page/elements go left or right depending on the text entered, so if the entered text is Latin, the text will be displayed LTR automatically, and if it's Arabic, Hebrew, ... the text will be displayed RTL automatically.
More info in here:
https://www.w3schools.com/tags/att_global_dir.asp
https://www.w3.org/International/questions/qa-html-dir#unknowndirection
Thanks in advance.
I'm trying to setup notea with a minio backend on a raspberry pi 4. I am able to get both containers running, but when I access notea via the browser I get errors after logging in saying "Failed to load tree". When I check the docker log I see that the connection to minio was unsuccessfull.
I confirmed that notea can ping minio so the two containers can talk.
Error
{
name: 'Error',
message: 'connect ECONNREFUSED 172.18.0.8:9001',
status: 500,
stack: 'Error: connect ECONNREFUSED 172.18.0.8:9001\n' +
' at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1133:16)'
}
Docker Compose
version: '3.7'
services:
notea:
container_name: notea
image: cinwell/notea:latest
platform: linux/arm64
init: true
ports:
- '3000:3000'
environment:
- PASSWORD=My Password
- STORE_ACCESS_KEY=My Access Key
- STORE_SECRET_KEY=My Secret Key
- STORE_BUCKET=notea
- STORE_END_POINT=http://minio:9001
- STORE_FORCE_PATH_STYLE=true
- BASE_URL=192.168.2.52
- COOKIE_SECURE=false
volumes:
- /media/docker/config/notea:/data
Firefox Version 88
Steps to reproduce: Insert Image and add description, when going to edit, you can only move with arrow keys, not by clicking with mouse
It will be cool to support writing multi-column notes, as in Notion.
Ability to link between notes manualy/automatically would be great to allow for functionality similar to obsidian notes / Zettelkasten
I'm not sure whether notea design based on block, just like Notion.
If yes, I wish I can drag a block.
Hi,
I would like to try this project however currently I am unable to login. 😔
My setup is to user minio instead of S3 + traefik as https proxy to login via https to notea.
Page loads normally asking for password however "test" password passed via variable doesn't work. Please see the error log.
I also tried to disable login page using variable DISABLE_PASSORD
(which I would like to replace by sso), however notea still asks for password. I tried both http and https - there is not diference.
However I was able to login without password when I accessed to notea directly eg: http://172.34.0.34:3000
My docker-compose:
version: "3.7"
services:
notea:
image: cinwell/notea
container_name: notea
environment:
- STORE_ACCESS_KEY=minioadmin
- STORE_SECRET_KEY=minioadmin
- STORE_BUCKET=notea
- STORE_END_POINT=http://minio:9000
- STORE_FORCE_PATH_STYLE=true
- PASSWORD="test"
- COOKIE_SECURE=true
- BASE_URL="https://notea.local.lan"
#- DISABLE_PASSWORD=true
labels:
- traefik.enable=true
- traefik.http.routers.notea.rule=Host(`notea.local.lan`)
- traefik.http.services.notea.loadbalancer.server.port=3000
- traefik.http.routers.notea.entrypoints=web-secure
- traefik.http.routers.notea.tls=true
minio:
image: minio/minio
container_name: minio
volumes:
- /data/notea:/data
command: server /data
error log:
notea-webapp | ready - started server on 0.0.0.0:3000, url: http://localhost:3000
notea-webapp | info - Using webpack 4. Reason: future.webpack5 option not enabled https://nextjs.org/docs/messages/webpack5
notea-webapp | {
notea-webapp | name: 'API_ERR_NEED_LOGIN',
notea-webapp | message: 'Please login first',
notea-webapp | status: 401,
notea-webapp | stack: 'API_ERR_NEED_LOGIN: Please login first\n' +
notea-webapp | ' at APIError.throw (/app/.next/server/pages/index.js:2124:19)\n' +
notea-webapp | ' at Array.<anonymous> (/app/.next/server/pages/api/auth/login.js:327:41)\n' +
notea-webapp | ' at loop (/app/node_modules/next-connect/dist/index.cjs:69:47)\n' +
notea-webapp | ' at next (/app/node_modules/next-connect/dist/index.cjs:74:13)\n' +
notea-webapp | ' at Array.useCsrf (/app/.next/server/pages/index.js:2046:5)\n' +
notea-webapp | ' at loop (/app/node_modules/next-connect/dist/index.cjs:69:47)\n' +
notea-webapp | ' at next (/app/node_modules/next-connect/dist/index.cjs:74:13)\n' +
notea-webapp | ' at /app/node_modules/next-iron-session/dist/index.js:137:7\n' +
notea-webapp | ' at processTicksAndRejections (node:internal/process/task_queues:96:5)'
Cheers
Do you provide notea in an arm64 docker image?
While you can just press the refresh button in your broswer, it's not really convenient to sync notes in PWA mode, since there is no dedicated refresh button.
So, it would be appreciated to add a dedicated refresh/sync button on the web page, which lets users sync their notes easily.
Thanks!
The databases mentioned are S3 compatible, having an direct file system support gives you the ability to only run one image and still have the functionality of the package.
reasons for the feature:
Example:
Given the above I really love the tool itself, having the feature to use the filesystem itself instead of S3 might prove useful for NAS and laptop users where they run the tools they need on said machine.
I guess it can be done by spinning up another instance, but it would be nice to be able to create new users with their own passwords.
I wondered what the best method of securing Notea is while allowing public access to shared links. I have everything setup in Docker with Notea behind a reverse proxy secured with OAuth. In Notea I have the env var DISABLE_PASSWORD=true
and allow public access to /share
in my reverse proxy.
This successfully secures Notea whilst making shared notes publicly accessible but Notea also calls content from outside /share
such as css and js. i.e. /sw.js
, /_next/
, /api/file
. Do I also need to allow public access to this content? I think I'm also running into some CORS issues.
Lastly, what is the recommended method for using images. At the moment, unless I set DIRECT_RESPONSE_ATTACHMENT=true
, images upload to minio successfully but are greyed out in Notea and disappear when I refresh the page. I use STORE_END_POINT=http://minio:9000
which docker resolves correctly to my minio container.
If anyone has any suggestions, I'd appreciate it. Thanks.
I tried to add russian locale but i get an error:
error - ./node_modules/heroicons/react/outline/ChevronDoubleLeft.jsx
Module parse failed: Unexpected token (4:9)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
|
| function ChevronDoubleLeftIcon(props) {
> return <svg fill="none" viewBox="0 0 24 24" stroke="currentColor" {...props}><path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M11 19l-7-7 7-7m8 14l-7-7 7-7" /></svg>;
| }
|
OS: Windows 10 20H2
Node: 15.7.0
Yarn: 1.22.10
Steps to reproduce:
Just follow development guide
docker-compose up -d
yarn
yarn dev
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.