Uncategorized

Wake-LXC: Smart Auto Start/Stop for Proxmox Containers via Traefik- Save Resources Without Sacrificing Accessibility

Wake Up Your Servers: Smart Auto Start/Stop for Proxmox Containers via Traefik

As someone who’s always looking for ways to optimize my homelab, I recently stumbled upon a problem that I’m sure many of you can relate to. I was running multiple LXC containers for different services, and I found myself torn between two not-so-great options: keep everything running 24/7, or manually start and stop containers as needed.

The first option, keeping everything running all the time, seemed like a waste of resources. I mean, think about it – my servers were using up RAM, CPU, and electricity even when nobody was using them. And let’s not forget about the shorter hardware lifespan that comes with constant usage. But the second option, manually starting and stopping containers, was tedious and time-consuming. It kind of defeated the purpose of having a homelab in the first place, and users couldn’t access services when the containers were stopped.

A Better Way

That’s when I discovered Wake-LXC, a smart proxy service that automatically manages container lifecycle based on actual traffic. It sits between Traefik and your services, waking containers on-demand and shutting them down after configurable idle periods. This way, I can save resources without sacrificing accessibility.

So, how does it work? Well, when a user accesses a service, Wake-LXC checks if the container is running. If it’s not, it starts the container and shows a beautiful progress page with real-time updates. Once the container is ready, Wake-LXC proxies traffic seamlessly to the backend. And after a certain period of inactivity, it automatically shuts down the container.

Key Features

Wake-LXC has some really cool features that make it a game-changer for homelab enthusiasts. For one, it has automatic wake-up when traffic arrives, and smart idle shutdown after configurable periods. It also supports both LXC containers and VMs, which is really useful for those of us who run multiple services.

Another great feature is the lock-based mechanism that prevents duplicate start commands. This means that even if multiple users try to access a service at the same time, Wake-LXC will only start the container once. And with circuit breaker pattern protection, the Proxmox API is safe from failures.

But what really gets me excited is the user experience. Wake-LXC shows a beautiful starting page with real-time progress updates, and once the container is ready, it proxies traffic seamlessly to the backend. No manual intervention is required, which means users can access services without any hassle.

Real-World Use Case

I’ve been using Wake-LXC in my own homelab, and the results are amazing. I run services like n8n, Docmost, and Immich in separate containers, and with Wake-LXC, I’ve been able to save a ton of resources. Before, I had three containers running 24/7, which used up about 6GB of RAM. But with Wake-LXC, the containers start in 60 seconds when accessed, and shut down after 10 minutes of inactivity. The result? My average RAM usage has dropped by 60%, and services still feel like they’re always on.

Technical Stack

Wake-LXC is built using FastAPI for an async Python application, and it integrates with the Proxmox API using token-based auth. It also uses Docker secrets for credential management, and Server-Sent Events for real-time progress updates. And with full HTTP/WebSocket proxy support, Wake-LXC can handle any type of traffic.

Getting Started

If you’re interested in trying out Wake-LXC, getting started is pretty straightforward. You’ll need Docker and Docker Compose, a Proxmox VE server, Traefik reverse proxy, and LXC containers running your services. The installation process is easy, and the full documentation walks you through Proxmox API token creation, network setup, and Traefik integration.

So, what do you think? Could Wake-LXC solve a problem in your homelab? Check out the project on GitHub and let me know what you think!

Wake Up Your Servers: Smart Auto Start/Stop for Proxmox Containers via Traefik

Jako osoba, która zawsze szuka sposobów na optymalizację swojego homelabu, ostatnio natknąłem się na problem, z którym pewnie wielu z was może się utożsamiać. Używałem wielu kontenerów LXC do różnych usług i stanąłem przed dwiema niezbyt dobrymi opcjami: utrzymywać wszystko w pracy przez 24 godziny na dobę lub ręcznie uruchamiać i zamykać kontenery według potrzeb.

Pierwsza opcja, utrzymywanie wszystkiego w pracy cały czas, wydawała się marnowaniem zasobów. Myślę, że można to sobie wyobrazić – moje serwery używały pamięci RAM, procesora i prądu nawet wtedy, gdy nikt ich nie używał. A nie zapominajmy o krótszym czasie życia sprzętu, który wynika z ciągłego użytkowania. Ale druga opcja, ręczne uruchamianie i zamykanie kontenerów, była nużąca i czasochłonna. To trochę podważało sens posiadania homelabu, a użytkownicy nie mogli uzyskać dostępu do usług, gdy kontenery były zatrzymane.

Lepszy sposób

To było wtedy, gdy odkryłem Wake-LXC, inteligentną usługę proxy, która automatycznie zarządza cyklem życia kontenera w oparciu o rzeczywisty ruch. Siedzi pomiędzy Traefik a twoimi usługami, budząc kontenery na żądanie i zamykając je po skonfigurowanych okresach bezczynności. W ten sposób mogę zaoszczędzić zasoby bez poświęcania dostępności.

Więc, jak to działa? Cóż, gdy użytkownik uzyskuje dostęp do usługi, Wake-LXC sprawdza, czy kontener jest uruchomiony. Jeśli nie, uruchamia kontener i pokazuje ładną stronę postępu z aktualizacjami w czasie rzeczywistym. Gdy kontener jest gotowy, Wake-LXC przekazuje ruch bezproblemowo do tyłu. A po pewnym okresie bezczynności automatycznie zamyka kontener.

Kluczowe funkcje

Wake-LXC ma kilka naprawdę fajnych funkcji, które sprawiają, że jest to przełom dla entuzjastów homelabu. Po pierwsze, ma automatyczne uruchamianie, gdy przychodzi ruch, i inteligentne zamykanie po skonfigurowanych okresach. Obsługuje również kontenery LXC i maszyny wirtualne, co jest naprawdę przydatne dla tych z nas, którzy uruchamiają wiele usług.

Inną świetną funkcją jest mechanizm blokady, który zapobiega duplikowaniu poleceń startowych. To oznacza, że nawet jeśli wielu użytkowników spróbuje uzyskać dostęp do usługi w tym samym czasie, Wake-LXC uruchomi kontener tylko raz. A dzięki ochronie wzorca circuit breaker, interfejs API Proxmox jest bezpieczny przed awariami.

Ale co naprawdę mnie ekscytuje, to doświadczenie użytkownika. Wake-LXC pokazuje ładną stronę startową z aktualizacjami w czasie rzeczywistym, a gdy kontener jest gotowy, przekazuje ruch bezproblemowo do tyłu. Nie wymaga żadnej interwencji ręcznej, co oznacza, że użytkownicy mogą uzyskać dostęp do usług bez żadnych problemów.

Rzeczywisty przykład

Używałem Wake-LXC w swoim homelabie i rezultaty są niesamowite. Uruchamiam usługi takie jak n8n, Docmost i Immich w oddzielnych kontenerach, a z Wake-LXC zaoszczędziłem mnóstwo zasobów. Przedtem miałem trzy kontenery uruchomione przez 24 godziny na dobę, co zużywało około 6 GB pamięci RAM. Ale z Wake-LXC kontenery uruchamiają się w 60 sekund, gdy są dostępne, i zamykają się po 10 minutach bezczynności. Rezultat? Moje średnie zużycie pamięci RAM spadło o 60%, a usługi nadal wydają się takie, jakby były zawsze włączone.

Stos technologiczny

Wake-LXC został zbudowany przy użyciu FastAPI do aplikacji Python asynchronicznej i integruje się z interfejsem API Proxmox przy użyciu uwierzytelniania opartego na tokenach. Używa również tajemnic Docker do zarządzania poświadczeniami i Server-Sent Events do aktualizacji w czasie rzeczywistym. A dzięki pełnej obsłudze proxy HTTP/WebSocket, Wake-LXC może obsłużyć dowolny typ ruchu.

Rozpoczęcie

Jeśli jesteś zainteresowany wypróbowaniem Wake-LXC, rozpoczęcie jest dość proste. Potrzebujesz Docker i Docker Compose, serwer Proxmox VE, reverse proxy Traefik i kontenery LXC z uruchomionymi usługami. Proces instalacji jest łatwy, a pełna dokumentacja przeprowadza Cię przez tworzenie tokena interfejsu API Proxmox, konfigurację sieci i integrację z Traefik.

Więc, co myślisz? Czy Wake-LXC mógłby rozwiązać problem w Twoim homelabie? Zobacz projekt na GitHub i daj mi znać, co myślisz!

Leave a Reply

Your email address will not be published. Required fields are marked *

WordPress Appliance - Powered by TurnKey Linux