-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improving Self-Hosting and Removing 3rd Party dependencies. #4465
base: main
Are you sure you want to change the base?
Conversation
@Podginator is attempting to deploy a commit to the omnivore Team on Vercel. A member of the Team first needs to authorize it. |
This is awesome, it looks like it's taking shape! I might try it out this weekend. Are there contributions from the community that you can think of that would be helpful for you? |
import { getSignedUrl } from '@aws-sdk/s3-request-presigner' | ||
import type { Readable } from 'stream' | ||
|
||
// While this is listed as S3, for self hosting we will use MinIO, which is |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we use Cloudflare R2 as well for self hosting? What was the decision behind using MinIO?
Asking because R2 is also S3 compatible.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not actually familiar with R2 - but anything that is S3 Compatible should work. Let me take a look later to see whether or not the Storage Client I built works with it.
Minio was chosen because it can be self-hosted along with the rest of the application. There is a docker image, and it can all run on the same server without relying on anything external.
I'm trying to ensure everything here can be run self-contained without any need for external services.
That said, as with some of the email changes, I am looking into ways to simplify parts of it too, and having some external services is ok with me.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To find suitable services, I recommend consulting r/self-hosted.
Love the work so far.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
S3 is a nice idea, provides various options, including self hosted ones.
How about local storage? This would reduce the required dependencies by one.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
oh wow I didn't know Minio can be self-hosted! That sounds like a good idea.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
S3 is a nice idea, provides various options, including self hosted ones.
How about local storage? This would reduce the required dependencies by one.
The uploads are done via signed-urls, so while local-storage would be feasible it'd require a bit more development work.
does it mean i would be able to deploy open-source omnivore to vercel? and be able to use this great app even after their shut-down? 🙏 |
If this gets worked out I'll add a template for easy self-hosting with Coolify |
Are you guys planning to add a docker container to self-host Omnivore? |
|
…vore into self-host-updates
fix/mobile-saves
Will this ever happen? |
The intent of this PR is to improve the Self-Hosting documentation, to provide a working setup to get Omnivore working with Docker and Docker Compose. It intends to, as much as possible, remove third party dependencies and reliance on external infrastructure providers such as GCP.
The aim is to establish feature parity, or near feature parity to the previously hosted service. This includes RSS support, webhook support, email newsletter, and PDF Support.
The list of changes to date is below:
Create Dockerfile for Queue processing, which is used for parsing articles, alongside asynchronous tasks.
Update and expose ImageProxy and use the latest version with ARM64 support.
Create new docker-compose file in self-hosting/docker-compose.
Provide a minimal .env file to be able to run the service using docker-compose.
Created a guide for using Cloudflare Tunnels as a way to integrate with a device at your home.
Create a NGINX configuration for those looking to use NGINX Reverse Proxying for the service.
Replace use of Google Cloud Storage with Minio an open-source layer compatible with the S3 API that can run on Device.
Improvements to content-fetching to minimise instances where articles refused to parse.
Overhaul the way email works, to ensure that there is an open source version. Three options are provided here.
Replace pspdfkit - Which required a license and would display the following when using PDFS
Add some additional fixes to parsing articles, such as a Medium Parser, and a Wired parse
Updated Docker images and software to the latest LTS version of Node (20.12)
To-Do: