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 local/systemd, Docker, and PHP runtimes.

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 local, Docker, and PHP 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, Docker, and PHP 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

Validate Metadata

Validate a single metadata file:

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

Validate all metadata files from a directory recursively:

smanager metadata validate --root /path/to/services

Use JSON output for CI/automation:

smanager metadata validate --root /path/to/services --json

Behavior summary:

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

PHP Runtime Metadata

For runtime.type: php, define the php section with:

  • start_command (required)
  • stop_command (required)
  • status_command (optional, if present takes precedence over healthcheck for status)
  • healthcheck_url (optional, used by status checks)
  • healthcheck_timeout (optional, defaults to 3)
  • working_dir (optional)
  • env (optional map of environment variables)

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.5.0.tar.gz (47.2 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.5.0-py3-none-any.whl (46.6 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for smanager-0.5.0.tar.gz
Algorithm Hash digest
SHA256 5b9d42f20d195ec60082c1788749ba7c04e6931dba1b87f111233e516c82d46f
MD5 c35e76c688204ac439f32ac6b995cdc2
BLAKE2b-256 3c953a2fac9460f6987d06412cd059c57b57426a033abeb7b5b440e2e476e438

See more details on using hashes here.

File details

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

File metadata

  • Download URL: smanager-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 46.6 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.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1a44ffde8ee0231b1c4d0baac35d3e977f15c8213b5e3f2257d69bca53533147
MD5 accf104ed44d97cfc048be7ce6481065
BLAKE2b-256 3a119bb7eeed46e775569a2c52eced6372b4a7cac15185259c04bb5dfca294f5

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