<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: psviderski</title><link>https://news.ycombinator.com/user?id=psviderski</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 21 Apr 2026 04:50:22 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=psviderski" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by psviderski in "Uncloud - Tool for deploying containerised apps across servers without k8s"]]></title><description><![CDATA[
<p>> In fact could you not just cron the cli deployment command on the nodes and get an effective poor man's declarative layer to guard against node failures if your ok with a 1 min or 1 sec recovery objective?<p>Yeah, you absolutely could and someone on our Discord has written a 30-line bash script that essentially runs a reconciliation loop with the CLI.<p>Thanks for the point on underselling by calling it imperative rather than declarative!</p>
]]></description><pubDate>Mon, 08 Dec 2025 03:07:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=46187867</link><dc:creator>psviderski</dc:creator><comments>https://news.ycombinator.com/item?id=46187867</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46187867</guid></item><item><title><![CDATA[New comment by psviderski in "Uncloud - Tool for deploying containerised apps across servers without k8s"]]></title><description><![CDATA[
<p>No, and this is out of scope at least for now. Please see another reply: <a href="https://news.ycombinator.com/item?id=46146434">https://news.ycombinator.com/item?id=46146434</a></p>
]]></description><pubDate>Fri, 05 Dec 2025 02:11:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=46156080</link><dc:creator>psviderski</dc:creator><comments>https://news.ycombinator.com/item?id=46156080</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46156080</guid></item><item><title><![CDATA[New comment by psviderski in "Uncloud - Tool for deploying containerised apps across servers without k8s"]]></title><description><![CDATA[
<p>Haha the K8s knowledge will definitely pay off. But Uncloud did exist three months ago. Clearly my marketing needs work :D<p>On the bright side, you can always use both</p>
]]></description><pubDate>Fri, 05 Dec 2025 02:07:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=46156056</link><dc:creator>psviderski</dc:creator><comments>https://news.ycombinator.com/item?id=46156056</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46156056</guid></item><item><title><![CDATA[New comment by psviderski in "Uncloud - Tool for deploying containerised apps across servers without k8s"]]></title><description><![CDATA[
<p>Uncloud is a bit lower-level, CLI-only (for now), with no central server. If some nodes go offline, the rest keep working and stay manageable.<p>It also has the WireGuard overlay networking built in so containers across machines get direct connectivity without having to map ports to the host. For example, securely access a database running on another machine. This also allows you to horizontally scale your services to multiple replicas on different machines and distribute traffic between them with minimal configuration.<p>The current state of Uncloud is the primitives and foundation that could be used to build a more higher-level PaaS-like solution such as Coolify.</p>
]]></description><pubDate>Fri, 05 Dec 2025 02:00:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=46156013</link><dc:creator>psviderski</dc:creator><comments>https://news.ycombinator.com/item?id=46156013</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46156013</guid></item><item><title><![CDATA[New comment by psviderski in "Uncloud - Tool for deploying containerised apps across servers without k8s"]]></title><description><![CDATA[
<p>>with swarm and traefik, I can define url rewrite rules as container labels. Is something equivalent available?<p>Yep, you define the mapping between the domain name and the internal container port as `x-ports: app.example.com:8000/https` in the compose file. Or you can specify a custom Caddy config for the service as `x-caddy: Caddyfile` which allows to customise it however you like. See <a href="https://uncloud.run/docs/concepts/ingress/publishing-services" rel="nofollow">https://uncloud.run/docs/concepts/ingress/publishing-service...</a><p>>if I deploy 2 compose 'stacks', do all containers have access to all other containers, even in the other stack?<p>Yes, there is no network isolation between containers from different services/stacks at the moment. Here is an open discussion on stack/namespace/environment/project concepts and isolation: <a href="https://github.com/psviderski/uncloud/discussions/94" rel="nofollow">https://github.com/psviderski/uncloud/discussions/94</a>.<p>What's your use case and how would you want this to behave?</p>
]]></description><pubDate>Fri, 05 Dec 2025 01:36:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=46155844</link><dc:creator>psviderski</dc:creator><comments>https://news.ycombinator.com/item?id=46155844</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46155844</guid></item><item><title><![CDATA[New comment by psviderski in "Uncloud - Tool for deploying containerised apps across servers without k8s"]]></title><description><![CDATA[
<p>How was your Swarm experience so far? It's so disappointing that Docker seems to slowly but steadily abandoning it. There is only a couple dozen mainly maintenance commits in the swarmkit repo for the entire 2025 year :sigh:</p>
]]></description><pubDate>Fri, 05 Dec 2025 01:02:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=46155583</link><dc:creator>psviderski</dc:creator><comments>https://news.ycombinator.com/item?id=46155583</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46155583</guid></item><item><title><![CDATA[New comment by psviderski in "Uncloud - Tool for deploying containerised apps across servers without k8s"]]></title><description><![CDATA[
<p>As I mentioned in the sibling comment, please note that in this case you only get round-robin, not failover. If one of the addresses is down, the DNS record will continue returning it and users will hit a dead end.<p>A proper load balancer or Cloudflare DNS proxy would handle this.</p>
]]></description><pubDate>Fri, 05 Dec 2025 00:49:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=46155474</link><dc:creator>psviderski</dc:creator><comments>https://news.ycombinator.com/item?id=46155474</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46155474</guid></item><item><title><![CDATA[New comment by psviderski in "Uncloud - Tool for deploying containerised apps across servers without k8s"]]></title><description><![CDATA[
<p>Thanks! If you're running the ucloud cluster in AWS, service containers should be able to access RDS the same way the underlying EC2 instances can (assuming RDS is in the same VPC or reachable via VPC peering).<p>The private container IPs will get NATed to the underlying EC2 IPs so requests to RDS will appear as coming from those instances. The appropriate Security Group(s) need to be configured as well. The limitation is that you can't segregate access at the service level, only at the EC2 instance level.</p>
]]></description><pubDate>Fri, 05 Dec 2025 00:42:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=46155415</link><dc:creator>psviderski</dc:creator><comments>https://news.ycombinator.com/item?id=46155415</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46155415</guid></item><item><title><![CDATA[New comment by psviderski in "Uncloud - Tool for deploying containerised apps across servers without k8s"]]></title><description><![CDATA[
<p>Great setup! Where Uncloud helps is when you need containers across multiple machines to talk to each other.<p>Your setup sounds like single-node or nodes that don't need to discover each other. If you ever need multi-node with service-to-service communication, that's where stitching together Ansible + Terraform + quadlets + some networking layer starts to get tedious. Uncloud tries to make that part simple out of the box.<p>You also get the reverse proxy (Caddy) that automatically reconfigures depending on what containers are running on machines. You just deploy containers and it auto-discovers them. If a container crashes, the configuration is auto-updated to remove the faulty container from the list of upstreams.<p>Plus a single CLI you run locally or on CI to manage everything, distribute images, stream logs. A lot of convenience that I'm putting together to make the user experience more enjoyable.<p>But if you don't need that, keep doing what works.</p>
]]></description><pubDate>Fri, 05 Dec 2025 00:27:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=46155287</link><dc:creator>psviderski</dc:creator><comments>https://news.ycombinator.com/item?id=46155287</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46155287</guid></item><item><title><![CDATA[New comment by psviderski in "Uncloud - Tool for deploying containerised apps across servers without k8s"]]></title><description><![CDATA[
<p>>A normal person wouldn't think 'hey lets use k8s for the low stakes deployment over here'.<p>I'm afraid I have to disappoint you</p>
]]></description><pubDate>Fri, 05 Dec 2025 00:10:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=46155140</link><dc:creator>psviderski</dc:creator><comments>https://news.ycombinator.com/item?id=46155140</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46155140</guid></item><item><title><![CDATA[New comment by psviderski in "Uncloud - Tool for deploying containerised apps across servers without k8s"]]></title><description><![CDATA[
<p>Fair points on the career and onboarding angle. It’s hard to argue against "everyone knows it".
But with that mentality, we'd never challenge anything. COBOL was the industry standard once. So were bare metal servers or fat VMs without containers. Someone had to say "this is more painful than it needs to be and I want to try something different because I can".<p>I know how to use k8s but I really don't enjoy it. It feels so distasteful to me that it triggered me to make an attempt at designing a nicer experience, because why not. I remember how much fun I had trying Docker when it first came out. That inspires me to at least try. It doesn't seem like the k8s community is even trying unfortunately.</p>
]]></description><pubDate>Thu, 04 Dec 2025 13:57:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=46147691</link><dc:creator>psviderski</dc:creator><comments>https://news.ycombinator.com/item?id=46147691</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46147691</guid></item><item><title><![CDATA[New comment by psviderski in "Uncloud - Tool for deploying containerised apps across servers without k8s"]]></title><description><![CDATA[
<p>Uncloud is lower-level. Dokploy seems to be positioning as a PaaS with a web UI using Docker Swarm under the hood for multi-node container management. Uncloud operates at that same layer as Swarm but with a simpler operating model that's friendlier for troubleshooting, WireGuard mesh networking built in, and the ability to connect nodes from different clouds or locations.<p>No UI yet (planned) so if that's critical, Dokploy is likely a better choice for now.<p>However, some unique features like building and pushing images directly to your nodes without an external registry give Uncloud a PaaS-like feel, just CLI-first. Really depends on what you're hosting and what you're optimising for.<p>See short deploy demo: <a href="https://uncloud.run/docs/guides/deployments/deploy-app" rel="nofollow">https://uncloud.run/docs/guides/deployments/deploy-app</a></p>
]]></description><pubDate>Thu, 04 Dec 2025 13:09:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=46147262</link><dc:creator>psviderski</dc:creator><comments>https://news.ycombinator.com/item?id=46147262</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46147262</guid></item><item><title><![CDATA[New comment by psviderski in "Uncloud - Tool for deploying containerised apps across servers without k8s"]]></title><description><![CDATA[
<p>This is exactly how it works now. The Compose file is the declarative specification of your services you want to run.<p>When you run 'uc deploy' command:<p>- it reads the spec from your compose.yaml<p>- inspects the current state of the services in the cluster<p>- computes the diff and deployment plan to reconcile it<p>- executes the plan after the confirmation<p>Please see the docs and demo: <a href="https://uncloud.run/docs/guides/deployments/deploy-app" rel="nofollow">https://uncloud.run/docs/guides/deployments/deploy-app</a><p>The main difference with Docker Swarm is that the reconciliation process is run on your local/CI machine as part of the 'uc deploy' CLI command execution, not on the control plane nodes in the cluster.<p>And it's not running in the loop automatically. If the command fails, you get an instant feedback with the errors you can address or rerun the command again.<p>It should be pretty straightforward to wrap the CLI logic in a Terraform or Pulumi provider. The design principals are very similar and it's written in Go.</p>
]]></description><pubDate>Thu, 04 Dec 2025 12:47:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=46147050</link><dc:creator>psviderski</dc:creator><comments>https://news.ycombinator.com/item?id=46147050</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46147050</guid></item><item><title><![CDATA[New comment by psviderski in "Uncloud - Tool for deploying containerised apps across servers without k8s"]]></title><description><![CDATA[
<p>For the public cluster with multiple ingress (caddy) nodes you'd need a load balancer in front of them to properly handle routing and outage of any of them. You'd use the IP of the load balancer on the DNS side.<p>Note that a DNS A record with multiple IPs doesn't provide failover, only round robin. But you can use the Cloudflare DNS proxy feature as a poor man's LB. Just add 2+ proxied A records (orange cloud) pointing to different machines. If one goes down with a 52x error, Cloudflare automatically fails over to the healthy one.</p>
]]></description><pubDate>Thu, 04 Dec 2025 12:27:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=46146893</link><dc:creator>psviderski</dc:creator><comments>https://news.ycombinator.com/item?id=46146893</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46146893</guid></item><item><title><![CDATA[New comment by psviderski in "Uncloud - Tool for deploying containerised apps across servers without k8s"]]></title><description><![CDATA[
<p>I don't know what the specific requirements for the distributed erlang/elixir but I believe the networking should support it. Containers get unique IPs on a WireGuard mesh with direct connectivity and DNS-based service discovery.</p>
]]></description><pubDate>Thu, 04 Dec 2025 12:20:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=46146837</link><dc:creator>psviderski</dc:creator><comments>https://news.ycombinator.com/item?id=46146837</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46146837</guid></item><item><title><![CDATA[New comment by psviderski in "Uncloud - Tool for deploying containerised apps across servers without k8s"]]></title><description><![CDATA[
<p>Come join our cozy Discord server <a href="https://uncloud.run/discord" rel="nofollow">https://uncloud.run/discord</a>. There is one guy joined recently who is migrating his homelab setup from Swarm right now.<p>Also another community member shared his homelab with a couple dozen services migrated from Docker Compose to Uncloud: <a href="https://github.com/dasunsrule32/docker-compose-configs/tree/feat%2Funcloud/uncloud" rel="nofollow">https://github.com/dasunsrule32/docker-compose-configs/tree/...</a></p>
]]></description><pubDate>Thu, 04 Dec 2025 12:16:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=46146805</link><dc:creator>psviderski</dc:creator><comments>https://news.ycombinator.com/item?id=46146805</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46146805</guid></item><item><title><![CDATA[New comment by psviderski in "Uncloud - Tool for deploying containerised apps across servers without k8s"]]></title><description><![CDATA[
<p>Totally valid concern. That was a shortcut to iterate quickly in early development. It’s time to do it properly now. Appreciate the feedback. This is exactly the kind of thing I need to hear before more people try it.</p>
]]></description><pubDate>Thu, 04 Dec 2025 11:55:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=46146615</link><dc:creator>psviderski</dc:creator><comments>https://news.ycombinator.com/item?id=46146615</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46146615</guid></item><item><title><![CDATA[New comment by psviderski in "Uncloud - Tool for deploying containerised apps across servers without k8s"]]></title><description><![CDATA[
<p>Thank you! That's actually the trade off.<p>There is no automatic rescheduling in uncloud by design. At least for now. We will see how far we can get without it.<p>If you want your service to tolerate a host going down, you should deploy multiple replicas for that service on multiple machines in advance. 'uc scale' command can be used to run more replicas for an already deployed service.<p>Longer term, I'm thinking we can have a concept of primary/standby replicas for services that can only have one running replica, e.g. databases. Something similar to how Fly.io does this: <a href="https://fly.io/docs/apps/app-availability/#standby-machines-for-process-groups-without-services">https://fly.io/docs/apps/app-availability/#standby-machines-...</a><p>Regarding deploying on the less filled machine first is doable but not supported right now. By default, it picks the first machine randomly and tries to distributes replicas evenly among all available machines. You can also manually specify what target machine(s) each service should run on in your Compose file.<p>I want to avoid recreating the complexity with placement constraints, (anti-)affinity, etc. that makes K8s hard to reason about. There is a huge class of apps that need more or less static infra, manual placement, and a certain level of redundancy. That's what I'm targeting with Uncloud.</p>
]]></description><pubDate>Thu, 04 Dec 2025 11:35:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=46146434</link><dc:creator>psviderski</dc:creator><comments>https://news.ycombinator.com/item?id=46146434</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46146434</guid></item><item><title><![CDATA[New comment by psviderski in "Uncloud - Tool for deploying containerised apps across servers without k8s"]]></title><description><![CDATA[
<p>For CI/CD, check out this GitHub Action: <a href="https://github.com/thatskyapplication/uncloud-action" rel="nofollow">https://github.com/thatskyapplication/uncloud-action</a>.<p>You can either specify one of the machine SSH target in the config.yaml or pass it directly to the 'uc' CLI command, e.g.<p>uc --connect user@host deploy</p>
]]></description><pubDate>Thu, 04 Dec 2025 10:44:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=46146082</link><dc:creator>psviderski</dc:creator><comments>https://news.ycombinator.com/item?id=46146082</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46146082</guid></item><item><title><![CDATA[New comment by psviderski in "Uncloud - Tool for deploying containerised apps across servers without k8s"]]></title><description><![CDATA[
<p>I think there are two different cases here. Not sure which one you’re talking about.<p>1. External requests, e.g. from the internet via the reverse proxy (Caddy) running in the cluster.<p>The rollout works on the container, not the server level. Each container registers itself in Caddy so it knows which containers to forward and distribute requests to.<p>When doing a rollout, a new version of container is started first, registers in caddy, then the old one is removed. This is repeated for each service container. This way, at any time there are running containers that serve requests.<p>It doesn’t say any server that requests shouldn’t go there. It just updates upstreams in the caddy config to send requests to the containers that are up and healthy.<p>2. Service to service requests within the cluster. In this case, a service DNS name is resolved to a list of IP addresses (running containers). And the client decides which one to send a request to or whether to distribute requests among them.<p>When the service is updated, the client needs to resolve the name again to get the up-to-date list of IPs.
Many http clients handle this automatically so using http://service-name as an endpoint typically just works. But zero downtime should still be handled by the client in this case.</p>
]]></description><pubDate>Thu, 04 Dec 2025 10:26:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=46145963</link><dc:creator>psviderski</dc:creator><comments>https://news.ycombinator.com/item?id=46145963</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46145963</guid></item></channel></rss>