Jakiś czas temu do hostowania m.in. serwera Home Assistant zastąpiłem Raspberry Pi 3B+ małym komputerem GMKtec G3. A że nowy sprzęt posiada sporą nadwyżkę mocy jak na moje potrzeby „inteligentnego domo”, to uznałem, że przeniosę na niego kilka innych usług. A skoro tak, to wygodniej będzie przejść na wirtualizację. Wybór padł na Promox, a wraz z tym wyborem pojawiło się sporo nowych tematów, z których duża część, to pomysły na kolejne artykuły. Jednym z tematów, jest zmiana typu kontenera LXC z uprzywilejowanego na nieuprzywilejowany, i odwrotnie…
Spis treści w artykule
Zmiana kontenera uprzywilejowanego w nieuprzywilejowany i odwrotnie w Proxmox
Nie będę tutaj rozpisywał się o tym, czym różni się kontener uprzywilejowany od nieuprzywilejowanego, bo każdy zainteresowany raczej wie, bo jest to opisane w dokumentacji, a reszta pewnie będzie używać nieuprzywilejowanych. Choćby ze względów bezpieczeństwa.
Natomiast czasem może się okazać, że podjęta przy tworzeniu kontenera LXC decyzja dotycząca tego, czy ma być to kontener uprzywilejowany, czy nie, okazuje się błędna. I wtedy zaczyna się zabawa, bo teoretycznie odpowiednia opcja znajduje się w pliku konfiguracyjnym kontenera, ale sama jej zmiana to zazwyczaj za mało. Bo owszem, zmieni to omawiane ustawienie dla kontenera, ale jest duża szansa, że rozjadą się uprawnienia.
Na szczęście nie musi oznaczać to ręcznej korekty, czy – dla świętego spokoju – stawiania kontenera od nowa. Można skorzystać np. ze skryptu LXC Container Privilege Converter przygotowanego przez Floriana Kefferpütza i dostępnego w serwisie GitHub.
Cała procedura jest wprawdzie opisana na stronie projektu, ale dla porządku przedstawię ją również w tym artykule…
Zaczynamy od skolonowania – w wybrane miejsce – repozyturium z serwisu GitHub, oczywiście na maszynie, na której zainstalowany jest Proxmox:
git clone https://github.com/onethree7/proxmox-lxc-privilege-converter
Następnie przechodzimy do katalogu ze skryptem i sprawiamy, by był wykonywalny:
cd proxmox-lxc-privilege-converter
chmod +x lxc_privilege_converter.sh
Teraz zostało już tylko uruchomić skrypt:
sudo ./lxc_privilege_converter.sh
Dalej odpowiadamy na kilka pytań, takich jak wybór kontenera źródłowego, identyfikator kontenera docelowego itp…
Zmiana poprzez kopię
Punkt ten nazwałem „zmiana poprzez kopię” nie tylko dlatego, że cała procedura zmiany typu kontenera LXC z uprzywilejowanego na nieuprzywilejowany lub odwrotnie odbywa się poprzez stworzenie kopii aktualnego kontenera, ale też dlatego, że jeśli chcemy zachować identyfikator kontenera, bo np. adresy IP mamy powiązane z identyfikatorami, to potrzebna będzie jeszcze jedna kopia. Zrobiona przed uruchomieniem skryptu.
Bo skoro skrypt tworzy kopię istniejącego kontenera i później na jego bazie tworzy nowy, z odwrotnym stanem, ale w trakcie tej operacji nie kasuje kontenera źródłowego, to siłą rzeczy musimy użyć innego identyfikatora, bo nie może być dwóch wirtualnych maszyn z tym samym identyfikatorem.
Natomiast można to obejść tworząc – jeszcze przed konwersją kontenera za pomocą skryptu – kopię kontenera samodzielnie, z innym identyfikatorem – tymczasowym. Następnie usuwamy oryginalny kontener źródłowy, co automatycznie zwalnia nam jego identyfikator, i skrypt uruchamiamy na tymczasowo utworzonej kopii, z tymczasowym identyfikatorem.
Oczywiście tymczasową kopię wykonujemy z takim samym ustawieniem opcji uprzywilejowany/nieuprzywilejowany, bo zmianę wykonujemy dopiero później, za pomocą skryptu.


- W Home Assistant 2025.6 w końcu mamy przypisanie struktury menu bocznego (sidebar) do konta użytkownika, więc teraz pora jeszcze na kolory (motyw) - 1970-01-01
- Prosta zmiana kontenera uprzywilejowanego na nieuprzywilejowany i odwrotnie w Proxmox za pomocą (bezpłatnego) skryptu - 1970-01-01
- Zawieszony odtwarzacz mediów ESPHome I2S w Home Assistant, czyli problem z przejściem w trym spoczynku po komunikacie TTS - 1970-01-01