rustploy 0.1.21

Rustploy PaaS daemon — lightweight self-hosted deployment platform
[package]
name = "rustploy"
version = "0.1.21"
edition = "2024"
default-run = "rustployd"
description = "Rustploy PaaS daemon — lightweight self-hosted deployment platform"
license = "MIT"
authors = ["Antonio Fernando <antoniofernando2723@gmail.com>"]
repository = "https://github.com/antoniofernandodj/rustploy-daemon"
keywords = ["paas", "deploy", "docker", "self-hosted"]
categories = ["command-line-utilities"]

[[bin]]
name = "rustployd"
path = "src/main.rs"

[[bin]]
name = "rustploy-cli"
path = "src/bin/rustploy-cli.rs"

[[bin]]
name = "rustployd-fw"
path = "src/bin/rustployd-fw.rs"

[[bin]]
name = "rustployd-update"
path = "src/bin/rustployd-update/main.rs"

[package.metadata.deb]
name                 = "rustployd"
maintainer           = "Antonio Fernando <antoniofernando2723@gmail.com>"
copyright            = "2026, Antonio Fernando"
extended-description = "Rustploy PaaS daemon — lightweight self-hosted deployment platform"
section              = "admin"
priority             = "optional"
depends              = "$auto, docker.io | docker-ce | podman"
conf-files           = ["/etc/rustploy/config.toml"]
maintainer-scripts   = "../../packaging/debian"
assets = [
    ["target/release/rustployd",             "usr/bin/rustployd",                       "755"],
    ["target/release/rustployd-fw",          "usr/libexec/rustployd-fw",                "755"],
    ["target/release/rustploy-cli",          "usr/bin/rustploy-cli",                    "755"],
    ["../../packaging/config.toml",          "etc/rustploy/config.toml",                "644"],
    ["../../packaging/rustployd.service",    "lib/systemd/system/rustployd.service",    "644"],
    ["../../packaging/rustployd-fw.socket",  "lib/systemd/system/rustployd-fw.socket",  "644"],
    ["../../packaging/rustployd-fw.service", "lib/systemd/system/rustployd-fw.service", "644"],
    ["target/release/rustployd-update",       "usr/libexec/rustployd-update",             "755"],
    ["../../packaging/rustployd-update.socket",  "lib/systemd/system/rustployd-update.socket",  "644"],
    ["../../packaging/rustployd-update.service", "lib/systemd/system/rustployd-update.service", "644"],
]

[dependencies]
fs_extra = "1.3.0" # Nova dependência para copiar diretórios
shared = { package = "rustploy-shared", version = "0.13.0" }
update-core = { package = "rustploy-update-core", version = "0.3.3" }

# Async runtime
tokio = { version = "1", features = ["full"] }
futures = "0.3"

# HTTP — used by ingress proxy and deploy healthchecks, NOT for IPC
hyper = { version = "1", features = ["full"] }
hyper-util = { version = "0.1", features = ["tokio", "client", "client-legacy"] }
http-body-util = "0.1"
http = "1"

# Serialization
serde = { version = "1", features = ["derive"] }
serde_json = "1"
serde_yaml = "0.9"

# Database
sqlx = { version = "0.8", features = ["runtime-tokio-native-tls", "sqlite", "chrono"] }

# Docker
bollard = "0.17"

# HTTP client for Git provider APIs (Gitea OAuth2 + REST)
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "json"] }

# Reverse proxy (hyper-based, HTTP/1.1, lock-free route table via arc-swap)
arc-swap = "1"

# TLS — ACME / Let's Encrypt
rustls = { version = "0.23", features = ["ring"] }
rustls-pemfile = "2"
tokio-rustls = "0.26"
# Raízes de CA embutidas: o cliente HTTPS de saída (platform/https_client.rs) valida o servidor sem
# depender do que a VPS tem em /etc/ssl.
webpki-roots = "1"
instant-acme = "0.7"
rcgen = { version = "0.14.8", features = ["aws_lc_rs", "pem"] }

# Crypto / Secrets
age = { version = "0.10", features = ["async"] }
hex = "0.4"
sha2 = "0.10"
base64 = "0.22"

# IDs / Time
ulid = { version = "1", features = ["serde"] }
chrono = { version = "0.4", features = ["serde"] }

# Tar/Gzip for Docker build context
tar = "0.4"
flate2 = "1"
zip = { version = "2", default-features = false, features = ["deflate"] }

# Errors / Logging
anyhow = "1"
thiserror = "2"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }
async-trait = "0.1"

# Config
toml = "0.8"

# Assinatura HS256 dos JWTs gerados pelos templates (`${jwt:<segredo>:<payload>}`).
hmac = "0.12"

# Utilities
bytes = "1"

# Performance
mimalloc = { version = "0.1", default-features = false }

# System metrics
sysinfo = { version = "0.33", default-features = false, features = ["system", "disk"] }

[build-dependencies]
# webui/ → assets estáticos embutidos (build.rs): mesmo gzip usado em runtime
# por api/http_api.rs, aplicado agora aos fontes da web UI/PWA.
flate2 = "1"
# templates/blueprints → catálogo estático (build/templates_catalog.rs).
serde = { version = "1", features = ["derive"] }
toml = "0.8"

[dev-dependencies]
tempfile = "3"
chromiumoxide = "0.9.1"