I wanted to share with you a project I’ve been working on for a while: It’s an Open Source (AGPLv3) newsletter tool. Think Mailchimp, but written in Elixir and you can run it on your own server.
Check out the website with a little demo video here:
Recently, people have been talking about the PETAL stack - and it fits Keila quite well: It’s built with Phoenix/Elixir, uses Tailwind for styling, and bit of AlpineJS sprinkled on top of LiveViews.
Developing Keila has been a breeze with the amazing tools from our community.
Here are some of the tools I’m using (on top of the usual suspects like Ecto):
IIRC he began the project with a closed source and then opened it after hitting his target through GH sponsors. It seems that now he offers training material and support for the sponsors (after opening the source code).
I hope I’ll find some time to blog about some of the challenges and learnings while building Keila so far. The next blog post will probably be on dynamic Ecto queries, but if you have questions about any particular technical aspect, let me know
You can check out the complete code of Keila on GitHub. Bug reports, feature suggestions, and code contributions are very welcome
Is there a demo?
If you want to try Keila in action without installing it, you can check out the managed version for free on keila.io. If you’re interested in getting a subscription, please feel free to PM me.
If you want to install Keila on your own server, check out the installation docs.
GitHub Sponsors
Last but not least, as @Exadra37 suggested in this thread way back in February, you can now also support my work on Keila on GitHub Sponsors
An error occurred during a connection to keila.example.com:4040. SSL received a record that exceeded the maximum permissible length.
Error code: SSL_ERROR_RX_RECORD_TOO_LONG
I understand that this is an phoenix config setting but I set up using the docker image so I don’t think I can tweak that, or am I wrong? regards,
Michael
The official Keila docker image isn’t set up to handle HTTPS termination - so my recommendation would be to use it behind a reverse proxy like Nginx or Traefik.
Ah, I think I misread your question. You can configure the ports for URL generation via environment variables: Configuration - Keila
PORT determines which port Keila listens to and URL_PORT which port is used for URLs. And in case of ports 80 and 443, this is not included in the generated URLs.
This also exposes the Keila to the world without the need to go through Traefik, because its equivalent to "0.0.0.0:4040:4040". To be only localhost you need to use instead "127.0.0.1:4040:4040", but if the goal is to only have Traefik talking with Keila then you can just simply remove `“4040:4040”.
Regarding Postgres Database you are also exposing it to the world. To communicate with the database from Keila just use the service name postgres_keila has the host on your code, and remove the ports from your docker compose file.