Rebrand the project as Tinyforge to reflect its evolution from a Docker container watcher into a self-hosted mini CI/deployment platform. Rename covers: Go module path, Docker labels, DB/config filenames, JWT issuer, Dockerfile binary, docker-compose, CI workflows, frontend i18n, README with static sites docs, and all code comments.
This commit is contained in:
@@ -1,17 +1,44 @@
|
||||
# Docker Watcher
|
||||
# Tinyforge
|
||||
|
||||
Automated Docker deployment orchestrator with a web dashboard. Watches container registries for new image tags and deploys them with zero-downtime blue-green strategy, health checks, and automatic NPM (Nginx Proxy Manager) proxy configuration.
|
||||
Self-hosted deployment platform with a web dashboard. Deploy Docker containers from registries with zero-downtime blue-green strategy, host static sites and Deno APIs directly from Git repositories, and manage reverse proxy configuration — all from a single binary.
|
||||
|
||||
## Features
|
||||
|
||||
### Container Deployments
|
||||
|
||||
- **Registry polling** and **webhook receiver** for automatic deployments
|
||||
- **Blue-green deploys** with health checks and automatic rollback
|
||||
- **NPM integration** for automatic reverse proxy configuration
|
||||
- **Multi-stage projects** (dev, staging, prod) with tag pattern matching
|
||||
- **Real-time deploy logs** via SSE streaming
|
||||
- **OIDC/SSO support** alongside local auth
|
||||
|
||||
### Static Sites
|
||||
|
||||
Deploy static sites and Deno-powered APIs directly from Git repositories:
|
||||
|
||||
- **Git providers**: Gitea/Forgejo, GitHub, and GitLab (public and private repos)
|
||||
- **Static mode**: Serves HTML/CSS/JS via nginx container
|
||||
- **Deno mode**: Full-stack with TypeScript API backend + static frontend — API routes are auto-discovered from `/api` folder using a naming convention (`API_get_users`, `API_post_items`, etc.)
|
||||
- **Markdown rendering**: Optionally converts `.md` files to styled HTML
|
||||
- **Branch & folder picker**: Select any branch and subfolder as the deployment root
|
||||
- **Auto-sync**: Trigger redeployment on push or tag events, or manually
|
||||
- **Per-site secrets**: Encrypted environment variables injected at runtime
|
||||
|
||||
### Infrastructure
|
||||
|
||||
- **NPM / Traefik integration** for automatic reverse proxy and SSL configuration
|
||||
- **Cloudflare DNS** sync for automatic DNS record management
|
||||
- **Volume management**: Create, browse, upload, and download Docker volumes
|
||||
- **Stale container cleanup**: Detect and remove unused containers
|
||||
- **Image management**: List and prune unused Docker images
|
||||
- **Database backups**: Scheduled and manual backups with one-click restore
|
||||
- **Config export/import**: YAML-based seed configuration for reproducible setups
|
||||
|
||||
### Auth & Security
|
||||
|
||||
- **Local auth** with bcrypt password hashing
|
||||
- **OIDC/SSO** support for single sign-on
|
||||
- **Encrypted credential storage** (AES-256-GCM)
|
||||
- **Single binary** with embedded SPA frontend
|
||||
- **Role-based access**: Admin and user roles
|
||||
|
||||
## Prerequisites
|
||||
|
||||
@@ -36,7 +63,7 @@ Automated Docker deployment orchestrator with a web dashboard. Watches container
|
||||
# Generate a key: openssl rand -hex 32
|
||||
```
|
||||
|
||||
3. **Start Docker Watcher**:
|
||||
3. **Start Tinyforge**:
|
||||
|
||||
```bash
|
||||
docker compose up -d
|
||||
@@ -48,19 +75,19 @@ Automated Docker deployment orchestrator with a web dashboard. Watches container
|
||||
|
||||
### Environment Variables
|
||||
|
||||
| Variable | Required | Description |
|
||||
|----------|----------|-------------|
|
||||
| `ENCRYPTION_KEY` | Yes | AES-256 key for encrypting stored credentials. Use `openssl rand -hex 32` |
|
||||
| `ADMIN_PASSWORD` | Yes (first launch) | Password for the default admin user |
|
||||
| `SEED_FILE` | No | Path to YAML seed config (default: `./docker-watcher.yaml`) |
|
||||
| `DATA_DIR` | No | SQLite database directory (default: `./data`) |
|
||||
| `LISTEN_ADDR` | No | HTTP listen address (default: `:8080`) |
|
||||
| `NPM_URL` | No | Override NPM API URL (otherwise uses value from settings) |
|
||||
| `POLLING_INTERVAL` | No | Registry polling interval, Go duration string e.g. `5m` (default from settings) |
|
||||
| Variable | Required | Description |
|
||||
| ------------------ | ------------------- | -------------------------------------------------------------------------------- |
|
||||
| `ENCRYPTION_KEY` | Yes | AES-256 key for encrypting stored credentials. Use `openssl rand -hex 32` |
|
||||
| `ADMIN_PASSWORD` | Yes (first launch) | Password for the default admin user |
|
||||
| `SEED_FILE` | No | Path to YAML seed config (default: `./tinyforge.yaml`) |
|
||||
| `DATA_DIR` | No | SQLite database directory (default: `./data`) |
|
||||
| `LISTEN_ADDR` | No | HTTP listen address (default: `:8080`) |
|
||||
| `NPM_URL` | No | Override NPM API URL (otherwise uses value from settings) |
|
||||
| `POLLING_INTERVAL` | No | Registry polling interval, Go duration string e.g. `5m` (default from settings) |
|
||||
|
||||
### Seed Config
|
||||
|
||||
On first launch, Docker Watcher imports a YAML seed file to pre-configure registries, projects, and settings. See `docker-watcher.example.yaml` for the full format.
|
||||
On first launch, Tinyforge imports a YAML seed file to pre-configure registries, projects, and settings. See `tinyforge.example.yaml` for the full format.
|
||||
|
||||
### Webhook Integration
|
||||
|
||||
@@ -95,9 +122,11 @@ make dev
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
```text
|
||||
CI/Registry --> Webhook/Poller --> Deployer --> Docker + NPM
|
||||
|
|
||||
Git Repo ----> Static Sites -------> Docker + NPM
|
||||
|
|
||||
Event Bus --> SSE --> Web Dashboard
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user