Skip to main content

A simple server manager for self-hosted services

Project description

SManager

A simple server manager for self-hosted services, with VPN integration and support for both local and Docker-based services.

When building a self-hosted setup, it’s common to end up with dozens of local services, Docker containers, and maintenance scripts scattered across your system. Tasks as simple as restarting or stopping a service can quickly become frustrating when there’s no clear overview of what is running, how components relate to each other, or how everything is managed.

SManager provides a simple and unified CLI for managing both local and Docker services, with built-in support for VPN integration and interactive metadata management.

Reseting all your music-related services becomes as simple as:

smanager group restart music

Features

  • Unified service management for local/systemd and Docker runtimes.
  • VPN integration (Tailscale provider support).
  • Interactive metadata creation and editing.
  • YAML-based global configuration.
  • Rich service status reporting with optional JSON output.

Phylosophy

SManager is designed to work alongside your existing setup, not replace it. However here are some best practices to get the most out of SManager:

  • Use one directory per service (service directory), put all the service-related files there (metadata, scripts, Dockerfiles, documentation, etc).
  • Define one directory to store all the service directories (services root).
  • Each time you create a new service, create a metadata file for it using smanager metadata init and place it in its service directory.

SManager does not enforce any specific structure for your services, but following these guidelines will help you maintain a clear and organized setup that SManager can effectively manage. If you don't want to follow this structure, just point services_root to your $HOME and SManager will work with whatever it finds there.

Installation

pip install smanager

After installation, you need to configure SManager by running:

smanager config init
smanager config edit

An editor will open with the global configuration file. Set the services_root to the directory where you want to store your service directories, and configure the VPN provider if you are using one.

CLI Usage

Use this command pattern:

smanager <group> <command> [options]

Discover available commands at any level:

smanager --help
smanager <group> --help
smanager <group> <command> --help

Status Commands

Status is now a subcommand under each resource group:

smanager service status <service_id>
smanager group status <group_name>
smanager dependency status <dependency_name>
smanager all status

Optional JSON output is available for each status command:

smanager service status <service_id> --json

Info Commands

Info is available under each resource group and shows service name plus WebUI URL:

smanager service info <service_id>
smanager group info <group_name>
smanager dependency info <dependency_name>
smanager all info

Use --details to include extra operational columns:

smanager service info <service_id> --details

Metadata Commands

The metadata group provides interactive workflows for service metadata files.

Create Metadata

smanager metadata init

Optional output override:

smanager metadata init --output /path/to/sd_info.json

Edit Existing Metadata

smanager metadata edit

Edit a specific file directly:

smanager metadata edit --file /path/to/sd_info.json

Behavior summary:

  • Interactive prompts with inline defaults.
  • Runtime-aware sections (Docker vs Local).
  • Multi-select support for groups and depends_on.
  • Validation before writing changes.

Notes

  • metadata init creates a new file.
  • metadata edit modifies an existing file.
  • Use command-specific --help for the latest options and examples.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

smanager-0.4.0.tar.gz (41.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

smanager-0.4.0-py3-none-any.whl (42.3 kB view details)

Uploaded Python 3

File details

Details for the file smanager-0.4.0.tar.gz.

File metadata

  • Download URL: smanager-0.4.0.tar.gz
  • Upload date:
  • Size: 41.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for smanager-0.4.0.tar.gz
Algorithm Hash digest
SHA256 23bf75c051594a1843b6b1700fd9c2257b3d893d540b1edcbe3300f191de0077
MD5 793f5966ba87c7b70c9d5c1e8aa1ad31
BLAKE2b-256 4d616b44aa1cd253ebfeb0b6a4de5df3b595739c14d638c405924fd23476ee43

See more details on using hashes here.

File details

Details for the file smanager-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: smanager-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 42.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for smanager-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f445b0c8c5c98143a97a513f2f00d4fc436c29436d6dd86f39343ffe8c47a888
MD5 cb6bd95963c19abaff9d9dcf2861058a
BLAKE2b-256 a9d698ef57eef1f32722341a3cbfdebeb3484783ca66dd22502c32e9d844093e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page