mirror of
https://oauth2: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@github.com/m1ngsama/automa.git
synced 2026-05-10 19:11:07 +08:00
docs: add terminal demo GIF and polish README
- Record real CLI session on greenarch (list, deploy, status, stop) - Punchier tagline: "One command to deploy your self-hosted stack" - Feature bullet list, default ports in project table - Collapsible project-specific notes (Tailscale profiles, Nextcloud, Minecraft) - last-commit badge, docker_compose badge - VHS tape included for re-recording
This commit is contained in:
parent
4a674026ea
commit
81d352cacc
3 changed files with 109 additions and 50 deletions
BIN
.github/demo.gif
vendored
Normal file
BIN
.github/demo.gif
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 420 KiB |
31
.github/demo.tape
vendored
Normal file
31
.github/demo.tape
vendored
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
# VHS demo tape for automa
|
||||||
|
# Run: vhs .github/demo.tape
|
||||||
|
|
||||||
|
Output .github/demo.gif
|
||||||
|
|
||||||
|
Set Shell bash
|
||||||
|
Set FontSize 15
|
||||||
|
Set Width 900
|
||||||
|
Set Height 500
|
||||||
|
Set Padding 20
|
||||||
|
Set Theme { "name": "automa", "black": "#0f172a", "red": "#ef4444", "green": "#22c55e", "yellow": "#eab308", "blue": "#3b82f6", "magenta": "#a855f7", "cyan": "#06b6d4", "white": "#f8fafc", "brightBlack": "#64748b", "brightRed": "#f87171", "brightGreen": "#4ade80", "brightYellow": "#facc15", "brightBlue": "#60a5fa", "brightMagenta": "#c084fc", "brightCyan": "#22d3ee", "brightWhite": "#ffffff", "background": "#0f172a", "foreground": "#f8fafc", "selection": "#334155", "cursor": "#38bdf8" }
|
||||||
|
|
||||||
|
Sleep 500ms
|
||||||
|
|
||||||
|
Type "./automa help"
|
||||||
|
Enter
|
||||||
|
Sleep 3s
|
||||||
|
|
||||||
|
Type "./automa list"
|
||||||
|
Enter
|
||||||
|
Sleep 3s
|
||||||
|
|
||||||
|
Type "./automa -y deploy uptime-kuma"
|
||||||
|
Enter
|
||||||
|
Sleep 6s
|
||||||
|
|
||||||
|
Type "./automa status"
|
||||||
|
Enter
|
||||||
|
Sleep 3s
|
||||||
|
|
||||||
|
Sleep 1s
|
||||||
128
README.md
128
README.md
|
|
@ -3,16 +3,22 @@
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<b>Self-hosted Docker Compose deployer</b><br>
|
<b>One command to deploy your self-hosted stack.</b><br>
|
||||||
<sub>Interactive CLI to deploy Forgejo, Nextcloud, Minecraft, and more in seconds.</sub>
|
<sub>Interactive CLI for Docker Compose — guided setup, auto-generated secrets, zero YAML editing.</sub>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://github.com/m1ngsama/automa/blob/main/LICENSE"><img src="https://img.shields.io/github/license/m1ngsama/automa?style=flat-square&color=blue" alt="License"></a>
|
|
||||||
<a href="https://github.com/m1ngsama/automa/releases"><img src="https://img.shields.io/github/v/release/m1ngsama/automa?style=flat-square&color=green" alt="Release"></a>
|
<a href="https://github.com/m1ngsama/automa/releases"><img src="https://img.shields.io/github/v/release/m1ngsama/automa?style=flat-square&color=green" alt="Release"></a>
|
||||||
<img src="https://img.shields.io/badge/bash-%3E%3D4.0-blue?style=flat-square&logo=gnubash&logoColor=white" alt="Bash 4+">
|
<a href="https://github.com/m1ngsama/automa/blob/main/LICENSE"><img src="https://img.shields.io/github/license/m1ngsama/automa?style=flat-square" alt="License"></a>
|
||||||
<img src="https://img.shields.io/badge/docker-%3E%3D20.10-blue?style=flat-square&logo=docker&logoColor=white" alt="Docker 20.10+">
|
<a href="https://github.com/m1ngsama/automa/commits/main"><img src="https://img.shields.io/github/last-commit/m1ngsama/automa?style=flat-square" alt="Last commit"></a>
|
||||||
<a href="https://github.com/m1ngsama/automa/stargazers"><img src="https://img.shields.io/github/stars/m1ngsama/automa?style=flat-square" alt="Stars"></a>
|
<img src="https://img.shields.io/badge/bash-%3E%3D4.0-4EAA25?style=flat-square&logo=gnubash&logoColor=white" alt="Bash 4+">
|
||||||
|
<img src="https://img.shields.io/badge/docker_compose-v2-2496ED?style=flat-square&logo=docker&logoColor=white" alt="Docker Compose v2">
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<img src=".github/demo.gif" alt="automa demo" width="700">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
@ -25,31 +31,53 @@ cd ~/automa
|
||||||
./automa deploy
|
./automa deploy
|
||||||
```
|
```
|
||||||
|
|
||||||
That's it. The CLI walks you through everything interactively.
|
That's it. The installer checks prerequisites, clones the repo, and you're ready to deploy.
|
||||||
|
|
||||||
## What is automa?
|
## Features
|
||||||
|
|
||||||
**automa** is a single bash script that turns a collection of Docker Compose projects into a deploy-ready toolkit. No YAML editing, no manual `docker compose` commands — just answer a few questions and your services are live.
|
- **Interactive CLI** — select projects from a numbered menu, guided `.env` setup with hints
|
||||||
|
- **Zero config** — sensible defaults for every project, passwords and secrets auto-generated
|
||||||
|
- **Non-interactive mode** — `automa -y deploy` accepts all defaults for CI/scripts
|
||||||
|
- **Self-contained projects** — each is an independent directory, no shared dependencies
|
||||||
|
- **Production-ready** — health checks, security hardening, least-privilege containers
|
||||||
|
- **Extensible** — drop in a `compose.yaml` + `.env.example` and automa discovers it
|
||||||
|
|
||||||
- **Zero config** — sensible defaults for every project, secrets auto-generated
|
## Bundled Projects
|
||||||
- **Interactive** — guided setup with hints, validation, and color-coded output
|
|
||||||
- **Non-interactive** — `automa -y deploy` for CI/scripts, accepts all defaults
|
|
||||||
- **Self-contained** — each project is an independent directory, no shared dependencies
|
|
||||||
- **Portable** — pure bash, works on any Linux with Docker
|
|
||||||
|
|
||||||
## Available Projects
|
| Project | Description | Default Port | Upstream |
|
||||||
|
|---------|-------------|:------------:|----------|
|
||||||
|
| **Forgejo** | Self-hosted Git service (Gitea fork) | `3000` | [forgejo.org](https://forgejo.org) |
|
||||||
|
| **Nextcloud** | Private cloud with MariaDB + Redis | `8080` | [nextcloud.com](https://nextcloud.com) |
|
||||||
|
| **Uptime Kuma** | Uptime monitoring dashboard | `3001` | [GitHub](https://github.com/louislam/uptime-kuma) |
|
||||||
|
| **Tailscale** | Mesh VPN client + optional DERP relay | host | [tailscale.com](https://tailscale.com) |
|
||||||
|
| **Filesuite** | Cloudreve cloud storage + qBittorrent | `5212` `8090` | [cloudreve.org](https://cloudreve.org) |
|
||||||
|
| **Minecraft** | Fabric server (itzg/minecraft-server) | `25565` | [Docs](https://docker-minecraft-server.readthedocs.io) |
|
||||||
|
| **TeamSpeak** | Voice communication server | `9987/udp` | [teamspeak.com](https://teamspeak.com) |
|
||||||
|
|
||||||
| Project | Description | Upstream |
|
<details>
|
||||||
|---------|-------------|----------|
|
<summary><b>Project-specific notes</b></summary>
|
||||||
| **Forgejo** | Self-hosted Git service (Gitea fork) | [forgejo.org](https://forgejo.org) |
|
|
||||||
| **Nextcloud** | Private cloud with MariaDB + Redis | [nextcloud.com](https://nextcloud.com) |
|
|
||||||
| **Uptime Kuma** | Uptime monitoring dashboard | [GitHub](https://github.com/louislam/uptime-kuma) |
|
|
||||||
| **Tailscale** | Mesh VPN client + optional DERP relay | [tailscale.com](https://tailscale.com) |
|
|
||||||
| **Filesuite** | Cloudreve cloud storage + qBittorrent | [cloudreve.org](https://cloudreve.org) |
|
|
||||||
| **Minecraft** | Fabric server (itzg/minecraft-server) | [Docs](https://docker-minecraft-server.readthedocs.io) |
|
|
||||||
| **TeamSpeak** | Voice communication server | [teamspeak.com](https://teamspeak.com) |
|
|
||||||
|
|
||||||
> Adding your own project? Just create a directory with `compose.yaml` and `.env.example` — automa discovers it automatically.
|
#### Tailscale
|
||||||
|
|
||||||
|
Uses Docker Compose profiles — deploy only the VPN client or include the DERP relay:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Tailscale client only
|
||||||
|
docker compose --profile tailscale up -d
|
||||||
|
|
||||||
|
# Client + DERP relay
|
||||||
|
docker compose --profile derp up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Nextcloud
|
||||||
|
|
||||||
|
Ships with MariaDB 11 and Redis 7 as backing services. All three containers have health checks with `depends_on` ordering. First startup takes ~60s for database migration.
|
||||||
|
|
||||||
|
#### Minecraft
|
||||||
|
|
||||||
|
Uses the [itzg/minecraft-server](https://docker-minecraft-server.readthedocs.io) image with Fabric mod loader. Mods go in `minecraft/data/mods/`. First startup takes ~2 minutes to download server files.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
|
|
@ -70,33 +98,38 @@ automa list # list all projects
|
||||||
|
|
||||||
```
|
```
|
||||||
~/automa/
|
~/automa/
|
||||||
├── automa # CLI entry point (single script)
|
├── automa # CLI entry point (single bash script)
|
||||||
├── install.sh # curl-pipe-bash installer
|
├── install.sh # curl-pipe-bash installer
|
||||||
├── forgejo/
|
├── forgejo/
|
||||||
│ ├── compose.yaml # Docker Compose definition
|
│ ├── compose.yaml # Docker Compose definition
|
||||||
│ ├── .env.example # Template with metadata + defaults
|
│ ├── .env.example # Template with @metadata + defaults
|
||||||
│ └── .env # Your config (gitignored, created by CLI)
|
│ └── .env # Your config (gitignored, created by CLI)
|
||||||
├── nextcloud/
|
├── nextcloud/
|
||||||
│ └── ...
|
│ └── ...
|
||||||
└── ...
|
└── ...
|
||||||
```
|
```
|
||||||
|
|
||||||
Each project directory is fully self-contained:
|
Each `.env.example` carries metadata that the CLI reads:
|
||||||
|
|
||||||
- **`compose.yaml`** — production-ready with health checks, resource hints, and security hardening
|
```bash
|
||||||
- **`.env.example`** — annotated template with `@name`, `@desc`, `@url`, `@port` metadata that the CLI reads
|
# @name Forgejo
|
||||||
- **`.env`** — your configuration, auto-generated with safe defaults and random secrets
|
# @desc Self-hosted Git service (Gitea fork)
|
||||||
|
# @url https://forgejo.org
|
||||||
|
# @port FORGEJO_HTTP_PORT
|
||||||
|
```
|
||||||
|
|
||||||
|
The CLI uses these annotations to show project names, descriptions, docs links, and access URLs — all without extra configuration files.
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
| Dependency | Minimum |
|
| Dependency | Minimum | Check |
|
||||||
|------------|---------|
|
|------------|---------|-------|
|
||||||
| Docker | 20.10+ |
|
| Docker | 20.10+ | `docker --version` |
|
||||||
| Docker Compose | v2 (plugin) |
|
| Docker Compose | v2 (plugin) | `docker compose version` |
|
||||||
| Bash | 4.0+ |
|
| Bash | 4.0+ | `bash --version` |
|
||||||
| Git | any |
|
| Git | any | `git --version` |
|
||||||
|
|
||||||
The installer checks all prerequisites automatically.
|
The installer verifies all prerequisites automatically.
|
||||||
|
|
||||||
## Uninstall
|
## Uninstall
|
||||||
|
|
||||||
|
|
@ -106,22 +139,17 @@ cd ~/automa
|
||||||
cd ~ && rm -rf ~/automa # remove automa
|
cd ~ && rm -rf ~/automa # remove automa
|
||||||
```
|
```
|
||||||
|
|
||||||
Data volumes are stored inside each project's `data/` directory and will be removed with the above command. Back up first if needed.
|
Data is stored in each project's `data/` directory. Back up before removing if needed.
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
Contributions are welcome! To add a new project:
|
Contributions welcome! To add a new project:
|
||||||
|
|
||||||
1. Create a new directory: `mkdir myproject`
|
1. Create a directory with `compose.yaml` (include health checks)
|
||||||
2. Add a `compose.yaml` with health checks
|
2. Add `.env.example` with metadata headers (`@name`, `@desc`, `@url`, `@port`)
|
||||||
3. Add a `.env.example` with metadata headers:
|
3. Open a pull request
|
||||||
```bash
|
|
||||||
# @name My Project
|
See existing projects for reference.
|
||||||
# @desc Short description shown in CLI
|
|
||||||
# @url https://project-homepage.com
|
|
||||||
# @port PORT_VAR_NAME
|
|
||||||
```
|
|
||||||
4. Open a pull request
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue