Wake Up to Savings: Smart Auto Start/Stop for Proxmox Containers
Managing Resources Without Sacrificing Accessibility
As someone who runs a homelab with Proxmox, I’ve always been faced with a dilemma: keep my LXC containers running 24/7, wasting resources and reducing hardware lifespan, or manually start and stop them as needed, which can be tedious and defeats the purpose of having a homelab.
This dilemma led me to create a solution that would automatically manage container lifecycle based on actual traffic. I’m excited to share this solution, called Wake-LXC, with you, and explain how it works and how it can benefit your homelab.
The Problem: Resource Management
Running multiple LXC containers for different services can be a challenge. On one hand, keeping them running 24/7 wastes resources, including RAM, CPU, and electricity. On the other hand, manually starting and stopping them as needed can be time-consuming and tedious.
For example, I run services like n8n, Docmost, and Immich in separate containers. Before using Wake-LXC, these containers would run 24/7, consuming around 6GB of RAM constantly. This not only wasted resources but also reduced the lifespan of my hardware.
The Solution: Wake-LXC
Wake-LXC is 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.
Here’s how it works:
- A user accesses a service, such as
app.example.com. - Traefik routes the request through Wake-LXC.
- 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 Server-Sent Events (SSE) updates.
- Once the container is ready, Wake-LXC proxies the traffic seamlessly to the backend.
- After a configurable idle period, Wake-LXC automatically shuts down the container.
Key Features
Wake-LXC has several key features that make it an ideal solution for homelab enthusiasts:
- Automatic wake-up when traffic arrives
- Smart idle shutdown after configurable periods (per-container or global)
- Supports both LXC containers and VMs
- Lock-based mechanism prevents duplicate start commands
- Circuit breaker pattern protects Proxmox API from failures
- WebSocket support for real-time applications
Real-World Use Case
Using Wake-LXC, I’ve been able to reduce the average RAM usage of my containers by 60%. My services still feel “always on,” but I’m no longer wasting resources or reducing the lifespan of my hardware.
One YAML file defines everything, including domains, backends, and idle timeouts. Installation is straightforward with Docker Compose, and the full documentation walks through Proxmox API token creation, network setup, and Traefik integration.
Technical Stack
Wake-LXC is built using a range of technologies, including:
- FastAPI for async Python application
- Proxmox API integration with token-based auth
- Docker secrets for credential management
- Server-Sent Events for real-time progress updates
- Full HTTP/WebSocket proxy support
Getting Started
To get started with Wake-LXC, you’ll need:
- Docker and Docker Compose
- Proxmox VE server (tested with 8.x)
- Traefik reverse proxy
- LXC containers running your services
Installation is straightforward, and the documentation provides a step-by-step guide to getting started.
Conclusion
Wake-LXC is a smart solution for homelab enthusiasts who want to save resources without sacrificing accessibility. By automatically managing container lifecycle based on actual traffic, Wake-LXC reduces waste and extends the lifespan of your hardware.
Whether you’re running a small homelab or a large-scale deployment, Wake-LXC is definitely worth considering. So why not give it a try and see the benefits for yourself?
—
Wake Up to Savings: Smart Auto Start/Stop for Proxmox Containers
Zarządzanie zasobami bez poświęcania dostępności
Jako osoba, która prowadzi homelab z Proxmox, zawsze stawałem przed dylematem: utrzymywać moje kontenery LXC włączone 24/7, marnując zasoby i skracając żywotność sprzętu, czy ręcznie włączać i wyłączać je w miarę potrzeby, co może być czasochłonne i przeciwne celowi posiadania homelabu.
Ten dylemat skłonił mnie do stworzenia rozwiązania, które automatycznie zarządzałoby cyklem życia kontenera w oparciu o rzeczywisty ruch. Chcę podzielić się tym rozwiązaniem, zwanym Wake-LXC, i wyjaśnić, jak działa i jak może ono przynieść korzyści Twojemu homelabowi.
Problem: Zarządzanie zasobami
Uruchomienie wielu kontenerów LXC dla różnych usług może być wyzwaniem. Z jednej strony, utrzymywanie ich włączonych 24/7 marnuje zasoby, w tym pamięć RAM, procesor i energię elektryczną. Z drugiej strony, ręczne włączanie i wyłączanie ich w miarę potrzeby może być czasochłonne i nudne.
Na przykład, uruchamiam usługi takie jak n8n, Docmost i Immich w oddzielnych kontenerach. Przed użyciem Wake-LXC, te kontenery były uruchomione 24/7, zużywając około 6GB pamięci RAM stale. To nie tylko marnowało zasoby, ale także skracało żywotność mojego sprzętu.
Rozwiązanie: Wake-LXC
Wake-LXC jest inteligentną usługą proxy, która automatycznie zarządza cyklem życia kontenera w oparciu o rzeczywisty ruch. Pośredniczy między Traefik a Twoimi usługami, włączając kontenery na żądanie i wyłączając je po skonfigurowanych okresach bezczynności.
Oto jak to działa:
- Użytkownik uzyskuje dostęp do usługi, takiej jak
app.example.com. - Traefik przekazuje żądanie do Wake-LXC.
- Wake-LXC sprawdza, czy kontener jest uruchomiony. Jeśli nie, włącza kontener i wyświetla piękną stronę postępu z aktualizacjami w czasie rzeczywistym za pomocą Server-Sent Events (SSE).
- Gdy kontener jest gotowy, Wake-LXC przekazuje ruch w sposób transparentny do tła.
- Po skonfigurowanym okresie bezczynności Wake-LXC automatycznie wyłącza kontener.
Kluczowe funkcje
Wake-LXC ma kilka kluczowych funkcji, które czynią go idealnym rozwiązaniem dla entuzjastów homelabu:
- Automatyczne włączanie na żądanie
- Inteligentne wyłączanie po okresach bezczynności (na kontener lub globalnie)
- Obsługa zarówno kontenerów LXC, jak i maszyn wirtualnych
- Mechanizm blokady, który zapobiega duplikowaniu poleceń startowych
- Wzorzec obwodu, który chroni interfejs API Proxmox przed awariami
- Obsługa WebSocket dla aplikacji w czasie rzeczywistym
Przykład z życia wzięty
Używając Wake-LXC, udało mi się zmniejszyć średnie zużycie pamięci RAM moich kontenerów o 60%. Moje usługi nadal działają jakby były “zawsze włączone”, ale już nie marnuję zasobów ani nie skracam żywotności mojego sprzętu.
Jeden plik YAML definiuje wszystko, łącznie z domenami, backendami i okresami bezczynności. Instalacja jest prosta z Docker Compose, a pełna dokumentacja przeprowadza przez tworzenie tokenu interfejsu API Proxmox, konfigurację sieci i integrację z Traefik.
Stos technologiczny
Wake-LXC jest zbudowany przy użyciu szeregu technologii, w tym:
- FastAPI dla aplikacji Python w trybie asynchronicznym
- Integracja z interfejsem API Proxmox przy użyciu uwierzytelniania opartego na tokenach
- Tajemnice Dockera do zarządzania poświadczeniami
- Server-Sent Events do aktualizacji postępu w czasie rzeczywistym
- Pełne obsługe proxy HTTP/WebSocket
Rozpoczęcie pracy
Aby rozpocząć pracę z Wake-LXC, będziesz potrzebować:
- Dockera i Docker Compose
- Serwera Proxmox VE (przetestowanego z wersją 8.x)
- Odwróconego proxy Traefik
- Kontenerów LXC uruchamiających Twoje usługi
Instalacja jest prosta, a dokumentacja zapewnia krok-po-kroku przewodnik, aby rozpocząć pracę.
Podsumowanie
Wake-LXC to inteligentne rozwiązanie dla entuzjastów homelabu, którzy chcą zaoszczędzić zasoby bez poświęcania dostępności. Automatycznie zarządzając cyklem życia kontenera w oparciu o rzeczywisty ruch, Wake-LXC redukuje marnowanie i wydłuża żywotność Twojego sprzętu.
Niezależnie od tego, czy prowadzisz mały homelab, czy duże wdrożenie, Wake-LXC jest zdecydowanie wart rozważenia. Więc dlaczego nie spróbować i zobaczyć korzyści samemu?