Tiny self hosted deployment platform built in Rust.
Tsuki builds container images locally, ships them over SSH, runs them remotely with Docker, and automatically configures reverse proxy routing using Caddy.
- Automatic app detection
- Local Docker image builds
- Artifact export and transfer over SSH
- Remote Docker image loading
- Automatic container deployment
- Automatic port allocation
- Reverse proxy configuration with Caddy
- Health checks after deployment
- Deployment history tracking with SQLite
- Runtime status inspection
- Automatic
sslip.iodomain routing - Rollback foundation
Developer
↓
Tsuki CLI
↓ SSH
Remote Host
├── Docker
├── Caddy
└── SQLite metadata
- Rust
- Docker
- OpenSSH client
- Docker
- Caddy
- OpenSSH server
Clone the repository:
git clone https://github.com/Kayleexx/tsuki.git
cd tsukiBuild the project:
cargo buildInstall Docker:
sudo apt install docker.io
sudo systemctl enable --now dockerInstall Caddy:
sudo apt install caddy
sudo systemctl enable --now caddyInstall OpenSSH server:
sudo apt install openssh-server
sudo systemctl enable --now sshAdd passwordless sudo rules for Tsuki:
sudo visudo -f /etc/sudoers.d/tsukiAdd:
your-user ALL=(ALL) NOPASSWD: /usr/bin/tee, /usr/bin/systemctl, /usr/bin/caddy
Example Dockerfile:
FROM python:3.12-alpine
WORKDIR /app
RUN echo 'hello from tsuki' > index.html
CMD ["python", "-m", "http.server", "80"]From inside your app directory:
cargo run -- deploy .Example output:
✓ Starting deployment
✓ Building container
✓ Uploading artifact
✓ Loading remote image
✓ Allocating port 8000
✓ Configuring reverse proxy
✓ Running health checks
Application live at:
https://test-app.192.168.0.47.sslip.io
Deployments are stored in SQLite.
Example:
sqlite3 ~/.tsuki/tsuki.dbSELECT * FROM deployments;cargo run -- status test-appExample:
APP: test-app
STATUS: running
PORT: 8000
IMAGE: tsuki-app:1778533905
CONTAINER: abc123
cargo run -- rollback test-app- Single host deployments
- Single Caddyfile configuration
- No authentication layer
- No orchestration or clustering
- No automatic scaling