susam.net
caddy-docker-proxy
susam.net | caddy-docker-proxy | |
---|---|---|
6 | 55 | |
32 | 2,378 | |
- | - | |
9.0 | 7.4 | |
6 days ago | 1 day ago | |
Common Lisp | Go | |
GNU General Public License v3.0 or later | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
susam.net
-
How I run my servers
I have a similar setup for my personal and project websites. Some similarities and differences:
* I use Linode VMs ($5/month).
* I too use Debian GNU/Linux.
* The initial configuration of the VM is coded as a shell script: https://github.com/susam/dotfiles/blob/main/linode.sh
* Project-specific or service-specific configuration is coded as individual Makefiles. This takes care of creatng An example: https://github.com/susam/susam.net/blob/main/Makefile
* The software is written in Common Lisp. In case of a personal website or blog, a static website is generated by a Common Lisp program. In case of an online service or web application, the service is written as a Common Lisp program that uses Hunchentoot to process HTTP requests and return HTTP responses.
* I use Nginx too. Nginx serves the static files as well as functions as a reverse proxy when there are backend services involved. Indeed TLS termination is an important benefit it offers. Other benefits include rate limiting requests, configuring an allowlist for HTTP headers to protect the backend service, etc.
- Ask HN: What tools do you use on your blog in 2023?
-
Reasons you aren't updating your personal site (2020)
I began developing personal websites in 2001. It was a time when people like me would develop personal websites just because we could. It didn't matter whether we had something useful to say or if anyone visited the website. All that mattered was that it was fun! I still maintain my website in the same spirit.
I do share the technical posts from my websites on HN and Reddit hoping to get some feedback but that's not the primary motive. Also, there were no HN and Reddit in 2001. Back then I used to write for myself and I still do so now. My personal website is a way for me to keep an archive of some fun things I know so that my future self can look back at them when needed or desired. Only a few days ago, I added a jokes page[1] to my website just because I thought it would be nice to keep my favourite jokes somewhere easily accessible.
As years go by, I've found that the friction of editing and publishing new posts or pages to my website has only become less. First came, virtual private servers that swayed me away from shared web hosting solutions. Then came Git which made it incredibly efficient and convenient to keep a change history of my website and sync it to any system. I write my pages in plan HTML using Emacs. Then git add; git commit; make pub [2] and the updated website is published within seconds. A Common Lisp program reads all my HTML pages, adds a common theme and template to them and writes them out to a directory Nginx can read from. It is as low friction as it can get that suits my taste and preferences while maintaining complete flexibility on the website.
It has been 13 years since I wrote my first "Hello!" and while HTML and web development and publishing has evolved a lot since then, I am still having fun!
[1] https://susam.net/maze/jokes.html
[2] https://github.com/susam/susam.net/blob/main/Makefile#L144
-
Lisp for the web: deploying with Systemd, gotchas and solutions
form.service (the systemd unit file)
-
Simplicity of IRC
Source code [0] is available on GitHub; looks like they wrote their own simple site generator.
I've been thinking about something similar (maybe even simpler) for my blog too.
[0]: https://github.com/susam/susam.net
- Static site and comment form served dynamically using a tiny Common Lisp web server
caddy-docker-proxy
-
Eliminate IPv4 tax on AWS, is it that easy?
Caddy via Caddy Docker Proxy (network).
- Caddy-Docker-Proxy: Caddy as a Reverse Proxy for Docker
-
Self-Hosted Is Awesome
https://github.com/lucaslorentz/caddy-docker-proxy
It handles the routing to multiple dockerized projects on one server, by scanning docker compose files for labels and automatically setting up the required caddy configuration.
-
Keycloak SSO with Docker Compose and Nginx
My go to is always this instead:
https://github.com/lucaslorentz/caddy-docker-proxy
Single label to a docker container and with correct DNS you’ll have an automatically managed certificate right away.
-
Working on Multiple Web Projects with Docker Compose and Traefik
I have had a great experience with using this: https://github.com/lucaslorentz/caddy-docker-proxy
It combines caddy with docker-compose labels, making it super easy to spin up new projects that can immediately be exposed.
-
Caddy is the first and only web server to use HTTPS automatically and by default
If you want a slightly heavier but more robust solution, caddy-docker-proxy[0] is a plugin that listens to the Docker socket and automatically updates the Caddy configuration based on Docker labels you add to containers.
I.e. it makes Caddy act a bit more like Traefik. Most of the time, you'll just add the label `caddy.reverse_proxy={{upstreams http 8080}}` to your containers and the plugin will regenerate Caddy's configuration whenever the container is modified.
[0] https://github.com/lucaslorentz/caddy-docker-proxy
-
Nginx Development Guide
I disagree, Caddy works great in Docker. See https://caddyserver.com/docs/running#docker-compose, and CDP is a project that autoconfigures Caddy from labels https://github.com/lucaslorentz/caddy-docker-proxy. Regarding plugins, it's super simple to write a Dockerfile to add plugins, we ship a builder image variant that can be used to compile in any plugins you want.
-
How I run my servers
````
This way, Caddy will buffer the request and give 30 seconds for your new service to get online when you're deploying a new version.
Ideally, during deployment of a new version the new version should go live and healthy before caddy starts using it (and kills the old container). I've looked at https://github.com/Wowu/docker-rollout and https://github.com/lucaslorentz/caddy-docker-proxy but haven't had time to prioritize it yet.
-
Which reverse proxy are you using?
Docker labels support is available via a plugin https://github.com/lucaslorentz/caddy-docker-proxy
-
My repository of the week: NGINX Proxy - Automated nginx for your containers
Or caddy-docker-proxy: https://github.com/lucaslorentz/caddy-docker-proxy
What are some alternatives?
maze - Susam's Maze • Main website: https://susam.in/maze/ • Mirror: https://susam.github.io/maze/
Nginx Proxy Manager - Docker container for managing Nginx proxy hosts with a simple, powerful interface
spcss - A simple, minimal, classless stylesheet for simple HTML pages
Caddy - Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS
docker-rollout - 🚀 Zero Downtime Deployment for Docker Compose
traefik - The Cloud Native Application Proxy
ts-neural-network - A neural network to play with
Portainer - Making Docker and Kubernetes management easy.
The Lounge - 💬 Modern, responsive, cross-platform, self-hosted web IRC client
jellyfin-media-player - Jellyfin Desktop Client based on Plex Media Player
blog.johnnyreilly.com - This is the source code for https://johnnyreilly.com
docker-pi-hole - Pi-hole in a docker container