nix-podman-stacks: автоматизация развертывания контейнеров Podman
nix-podman-stacks — это набор модулей для Home Manager, упрощающий развертывание наборов контейнеров Podman.
Проект решает задачу автоматизации и упрощения процесса настройки различных самопривлекательных приложений, таких как обратные прокси, панели управления и системы мониторинга. В отличие от привычных Docker-контейнеров, здесь используется rootless Podman, что упрощает работу с контейнерами, и обеспечивается интеграция с Traefik, Grafana и другими сервисами. Такие решения подойдут разработчикам и администраторам, которые хотят легко управлять множеством сервисов на своем сервере.
Работает на большинстве дистрибутивов Linux, включая Ubuntu, Arch и Fedora. Чтобы запустить, необходимо настроить Home Manager и включить нужные стеки с помощью проверки флагов. Обрати внимание, что некоторые стеки потребуют дополнительных настроек. Ссылку на документацию можно найти в репозитории.
Проект Nix Podman Stacks представляет собой коллекцию готовых стеков для развертывания различных саморазмещаемых приложений с помощью Home Manager и контейнеров Podman. Эти стеки упрощают процесс развертывания таких решений, как обратные прокси, дашборды и системы мониторинга, и могут работать на большинстве дистрибутивов Linux, таких как Ubuntu, Arch, Mint, Fedora и других, не ограничиваясь только NixOS.
Одной из ключевых особенностей является возможность использования rootless Podman (Quadlets) для работы с контейнерами. Это позволяет запускать сервисы без необходимости доступа к правам администратора. Также в проекте доступны интеграции с Traefik, Homepage, Grafana и другими популярными инструментами.
Как установить и запустить
Чтобы начать работу с проектом, нужно добавить в конфигурацию Nix настройки для стека, который ты хочешь активировать. Пример конфигурации для активации Traefik (с сертификатами LetsEncrypt и геоблокировкой), Paperless и Homepage выглядит следующим образом:
{config, ...}:
{
nps.stacks = {
homepage.enable = true;
paperless = {
enable = true;
secretKeyFile = config.sops.secrets."paperless/secret_key".path;
db.passwordFile = config.sops.secrets."paperless/db_password".path;
};
traefik = {
enable = true;
domain = "example.com";
geoblock.allowedCountries = ["DE"];
extraEnv.CF_DNS_API_TOKEN.fromFile = config.sops.secrets."traefik/cf_api_token".path;
};
};
}
Контейнеры автоматически добавляются в Homepage и становятся доступны через обратный прокси Traefik. Для более подробной документации можно обратиться к официальной документации и использовать поиск опций.
Доступные стеки
В проекте представлено множество стеков, которые можно использовать, например:
- Adguard
- Home Assistant
- Traefik
- Paperless-ngx
- Grafana
- и многие другие...
Ограничения и управление секретами
Для активации большинства стеков достаточно установить один флаг. Однако некоторые стеки требуют обязательного указания значений, особенно для управления секретами. Рекомендуется использовать такие инструменты, как sops-nix или agenix, которые помогут управлять секретами и хранить их в одном репозитории Git вместе с конфигурацией.
Если тебе не хватает какого-либо стека, опции или интеграции, ты можешь открыть issue или внести изменения через pull request.
Открыть на GitHub: Tarow/nix-podman-stacks →
RepoRadar