Logo

How I Deploy Web Apps With a Single Command

Discover how Uncloud simplifies Django deployments by letting you manage containers, logs, and services on any server with a single command, no container registry or manual SSH required.

Published: June 13, 2026 • Updated: June 12, 2026

A while ago, I wrote about how I deploy Django apps without a container registry. I liked the technique, but I wasn’t satisfied because the process was too slow and it required specialized knowledge due to the custom scripts and workflow I designed.

After doing some research, I discovered Uncloud, which is a simple tool that can deploy a container to any server while also allowing you to do common tasks like restarting services and viewing logs without having to manually SSH into your server.

In this post, I’ll walk you through my new process of deploying and managing web apps.

Sample Project

I’ll use my Simple Django project to illustrate the process. It’s a Django app that uses SQLite for data storage.

Go ahead and clone the project now to follow along.

Acquiring and Configuring a Server

First, you need to buy a server and configure it. I recommend Hetzner. You should set up your SSH key so that you can access your server without a password. I usually add the server to my SSH config as follows:

Host myserver
    HostName 1.1.1.1
    User root
    IdentitiesOnly yes

You can now SSH into your server with ssh myserver. You should add your SSH key to the agent so that Uncloud can use it: ssh-add ~/.ssh/id_ed25519.

Next, initialize Uncloud: uc machine init myserver --name myserver

Now, you can run the Ansible playbook to fully configure the server. Be sure to read the README to understand what the playbook does.

The playbook is designed to prevent root from SSHing into the server. Therefore, you should update your SSH config to use the non-root user:

Host myserver
    HostName 1.1.1.1
    User non_root
    IdentitiesOnly yes

Update Docker Compose

The compose.yml file in the project root is designed to be used by Uncloud. First, you should create an appconfig.prod.env file in the project root so that Docker Compose can use it to load the environment variables necessary for the various services defined.

Then, update the x-ports dictionary with the domain name where your app will be hosted. Uncloud will automatically set up a reverse proxy and SSL certificate at this domain for you.

Then, update the x-machine value to the name of the machine you initialized earlier.

After that, run just deploy and Uncloud will deploy your app. That’s it!

Managing the App

You can manage the services and view logs using the uc command. For example, to view the logs for the web service, run uc logs web.

Conclusion

I hope you found this post helpful. Uncloud is a powerful tool for managing web apps. I’m excited to see what you build with it! If you have any questions, feel free to email me.

PS If this sounded complicated, I offer a deployment service for a one-time fee so that you can focus on building your app and not worrying about infrastructure.

💡 Need a Developer Who Gets It Done?

If this post helped solve your problem, imagine what we could build together! I'm a full-stack developer with expertise in Python, Django, Typescript, and modern web technologies. I specialize in turning complex ideas into clean, efficient solutions.