Posted by hmontazeri 3 days ago
I made Mushak out of frustrtaion. There are many amazing tools out there these days to deploy your apps to your own servers. I've used a shell script to deploy my apps many years (using Docker and Compose since 2016 or so).
Although tools like Dokku, Coolify and Kamal exists (and they are amazing) they all have tradeoffs. Dokku comes with the plugin system when it comes to DBs etc. which I don't like. Coolify since v4 it has 4 containers running to get started. Kamal is pretty awesome but the build process and config file which is mandatory and also secrets management is time consuming to get up and running.
Mushak is very simple. If you have A Docker or compose file, it should JUST WORK.
Create a .env.prod file in, and it will detect it and pushes it to the server if you want. You'll deploy to prod faster than you can believe it with zero config out of the box.
Hope this will help anyone out there, I really enjoy deploying my apps with it. Documentation will also clarify the architectural choices.
Best, Hamed
Personally what I ended up doing with my vps was to just have a docker-compose.yaml and then just docker-compose it to start it and then I have a custom script which would run a service at a port after which I can just "bash expose.sh subdomain.domain.app PORT" and it uses cloudflared/cloudflare tunnels under the loop and if someone wants a git like workflow, I recommend pushing docker images and then using watchtower (https://containrrr.dev/watchtower/)
I had tried to understand caddy but I instead went the cloudflare tunnels route.
This is pretty neat. I think using the compose yaml file to document what should be running is pretty powerful at smaller scales (though I'm hesitant to place data in docker volumes as people tend to delete things at will and then are shocked that their data is gone).
I once spoke with the manager of the Compose project and it was news to them that folks used it in production for deploys. The lack of tooling around zero-downtime restarts makes that frustrating, so it's exciting to see projects that introduce that in some fashion.
Cool stuff!
The datastore plugins were initially external as there was a ton of movement in maintaining them and it was at a different pace from the main project, though I'm now working on ways to bring them back into the core as they've stabilized quite a bit over the past decade.
Thanks!