Self-host Feedbin with Docker. Feedbin is a web based RSS reader. It's an open-source Ruby on Rails software.
Feedbin's main goal is not to be easily self-hostable, and it was quite hard getting all of the services to work. During the process of creating feedbin-docker, I made a few contributions to the upstream project to make it self-hostable ready. Other have taken other approaches by forking it, but all the projects I found on GitHub were abandonned and weren't working anymore.
I chose to run it in Docker because of all the services required to run Feedbin.
Here is a breakdown of all the containers:
web: the puma rails appworkers: some of the sidekiq workers for background processingrefresher: sidekiq worker for refreshing feedsimage: sidekiq worker to find thumbnailsextract: nodejs service to extract article content from full web pagescamo: a node reverse proxy to prevent mixed contentminio: object storage for images, favicons, importsredis: cache, store sidekiq queues and statsmemcached: cachepostgresql: databaseelasticsearch: full text searchcaddy: https-enabled reverse proxy
As you can see it's a lot. Technically, you can give up on a few of them without breaking Feedbin:
image: you won't have thumbnails, which is not that important depending on your appearance settings.camo: your browser will make the requests directly to the websites. Less privacy and risk or mixed content.elasticsearch: you won't have full text search
You can also replace caddy with another reverse proxy, but caddy is really handy.
I recommend a server with more than 2 GB of RAM. Otherwise you will likely have OOM kills.
Clone the repo:
git clone https://github.com/angristan/feedbin-docker.git- Copy
.env.exampleto.envand fill ALL the variables - Copy
docker-compose-example.ymltodocker-compose.yml. If you want to disable a service this is the place. - Copy
caddy/example.Caddyfiletocaddy/Caddyfileand update the configuration if you need.
Run the database migrations:
docker-compose run --rm feedbin-web rake db:setupLaunch everything:
docker-compose up -dYou can check if everything is going well with docker-compose logs -f or docker-compose ps.
Now go to feedbin.domain.tld and create a new account. You're set!
You can make yourself an admin to manage users and to view the Sidekiq web interface.
To do so, run:
docker-compose exec feedbin-web rake feedbin:make_admin[youremail@domain.tld]Once you're done, you can prevent new users from registering by modifying Caddy config and uncommenting the respond directive for /signup and /users routes.