mirror of
https://oauth2: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@github.com/m1ngsama/automa.git
synced 2026-05-10 19:11:07 +08:00
docs: redesign README as project portal with banner and badges
- Centered SVG banner with terminal prompt icon - shields.io badges (license, release, bash, docker, stars) - Feature highlights, project table with upstream links - Project structure diagram, requirements table - Contributing guide for adding new projects
This commit is contained in:
parent
48cd34ca27
commit
4a674026ea
2 changed files with 130 additions and 31 deletions
22
.github/banner.svg
vendored
Normal file
22
.github/banner.svg
vendored
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 160" fill="none">
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="bg" x1="0" y1="0" x2="600" y2="160" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0%" stop-color="#0f172a"/>
|
||||||
|
<stop offset="100%" stop-color="#1e293b"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="accent" x1="0" y1="0" x2="1" y2="1">
|
||||||
|
<stop offset="0%" stop-color="#38bdf8"/>
|
||||||
|
<stop offset="100%" stop-color="#818cf8"/>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<rect width="600" height="160" rx="16" fill="url(#bg)"/>
|
||||||
|
<!-- Terminal prompt icon -->
|
||||||
|
<g transform="translate(40, 48)">
|
||||||
|
<rect width="64" height="64" rx="14" fill="url(#accent)" opacity="0.15"/>
|
||||||
|
<text x="32" y="44" font-family="monospace" font-size="36" font-weight="bold" fill="url(#accent)" text-anchor="middle">$_</text>
|
||||||
|
</g>
|
||||||
|
<!-- Title -->
|
||||||
|
<text x="124" y="78" font-family="system-ui, -apple-system, sans-serif" font-size="42" font-weight="bold" fill="#f8fafc" letter-spacing="-1">automa</text>
|
||||||
|
<!-- Tagline -->
|
||||||
|
<text x="124" y="108" font-family="system-ui, -apple-system, sans-serif" font-size="16" fill="#94a3b8">Self-hosted Docker Compose deployer</text>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.1 KiB |
139
README.md
139
README.md
|
|
@ -1,8 +1,23 @@
|
||||||
# automa
|
<p align="center">
|
||||||
|
<img src=".github/banner.svg" alt="automa" width="600">
|
||||||
|
</p>
|
||||||
|
|
||||||
Self-hosted Docker Compose project deployer. Interactive CLI for quick deployment.
|
<p align="center">
|
||||||
|
<b>Self-hosted Docker Compose deployer</b><br>
|
||||||
|
<sub>Interactive CLI to deploy Forgejo, Nextcloud, Minecraft, and more in seconds.</sub>
|
||||||
|
</p>
|
||||||
|
|
||||||
## Quick start
|
<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>
|
||||||
|
<img src="https://img.shields.io/badge/bash-%3E%3D4.0-blue?style=flat-square&logo=gnubash&logoColor=white" alt="Bash 4+">
|
||||||
|
<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/stargazers"><img src="https://img.shields.io/github/stars/m1ngsama/automa?style=flat-square" alt="Stars"></a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -fsSL https://raw.githubusercontent.com/m1ngsama/automa/main/install.sh | bash
|
curl -fsSL https://raw.githubusercontent.com/m1ngsama/automa/main/install.sh | bash
|
||||||
|
|
@ -10,42 +25,104 @@ cd ~/automa
|
||||||
./automa deploy
|
./automa deploy
|
||||||
```
|
```
|
||||||
|
|
||||||
|
That's it. The CLI walks you through everything interactively.
|
||||||
|
|
||||||
|
## What is automa?
|
||||||
|
|
||||||
|
**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.
|
||||||
|
|
||||||
|
- **Zero config** — sensible defaults for every project, secrets auto-generated
|
||||||
|
- **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 | Upstream |
|
||||||
|
|---------|-------------|----------|
|
||||||
|
| **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.
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./automa deploy # interactive project selection
|
automa deploy # interactive project selection
|
||||||
./automa deploy forgejo filesuite # deploy specific projects
|
automa deploy forgejo nextcloud # deploy specific projects
|
||||||
./automa status # check all project status
|
automa -y deploy forgejo # non-interactive (CI/scripts)
|
||||||
./automa logs forgejo # follow logs
|
automa status # overview dashboard
|
||||||
./automa stop forgejo # stop a project
|
automa logs minecraft # follow container logs
|
||||||
./automa update nextcloud # pull latest images & recreate
|
automa stop forgejo # stop a project
|
||||||
./automa config tailscale # reconfigure .env
|
automa restart nextcloud # restart a project
|
||||||
./automa list # list available projects
|
automa update nextcloud # pull latest images & recreate
|
||||||
|
automa config tailscale # reconfigure .env
|
||||||
|
automa list # list all projects
|
||||||
```
|
```
|
||||||
|
|
||||||
## Projects
|
## How It Works
|
||||||
|
|
||||||
| Project | Description |
|
|
||||||
|---------|-------------|
|
|
||||||
| `forgejo` | Self-hosted Git (Gitea fork) |
|
|
||||||
| `uptime-kuma` | Uptime monitoring dashboard |
|
|
||||||
| `tailscale` | Tailscale client + DERP relay server (profiles) |
|
|
||||||
| `filesuite` | Cloudreve cloud storage + qBittorrent |
|
|
||||||
| `minecraft` | Fabric Minecraft server |
|
|
||||||
| `teamspeak` | TeamSpeak voice server |
|
|
||||||
| `nextcloud` | Nextcloud with MariaDB + Redis |
|
|
||||||
|
|
||||||
## Structure
|
|
||||||
|
|
||||||
Each project is a self-contained directory:
|
|
||||||
|
|
||||||
```
|
```
|
||||||
project-name/
|
~/automa/
|
||||||
├── compose.yaml # Docker Compose definition
|
├── automa # CLI entry point (single script)
|
||||||
├── .env.example # Template — comments shown during setup
|
├── install.sh # curl-pipe-bash installer
|
||||||
└── .env # Your config (gitignored, created by CLI)
|
├── forgejo/
|
||||||
|
│ ├── compose.yaml # Docker Compose definition
|
||||||
|
│ ├── .env.example # Template with metadata + defaults
|
||||||
|
│ └── .env # Your config (gitignored, created by CLI)
|
||||||
|
├── nextcloud/
|
||||||
|
│ └── ...
|
||||||
|
└── ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Each project directory is fully self-contained:
|
||||||
|
|
||||||
|
- **`compose.yaml`** — production-ready with health checks, resource hints, and security hardening
|
||||||
|
- **`.env.example`** — annotated template with `@name`, `@desc`, `@url`, `@port` metadata that the CLI reads
|
||||||
|
- **`.env`** — your configuration, auto-generated with safe defaults and random secrets
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
| Dependency | Minimum |
|
||||||
|
|------------|---------|
|
||||||
|
| Docker | 20.10+ |
|
||||||
|
| Docker Compose | v2 (plugin) |
|
||||||
|
| Bash | 4.0+ |
|
||||||
|
| Git | any |
|
||||||
|
|
||||||
|
The installer checks all prerequisites automatically.
|
||||||
|
|
||||||
|
## Uninstall
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd ~/automa
|
||||||
|
./automa stop <each-project> # stop running containers
|
||||||
|
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.
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
Contributions are welcome! To add a new project:
|
||||||
|
|
||||||
|
1. Create a new directory: `mkdir myproject`
|
||||||
|
2. Add a `compose.yaml` with health checks
|
||||||
|
3. Add a `.env.example` with metadata headers:
|
||||||
|
```bash
|
||||||
|
# @name My Project
|
||||||
|
# @desc Short description shown in CLI
|
||||||
|
# @url https://project-homepage.com
|
||||||
|
# @port PORT_VAR_NAME
|
||||||
|
```
|
||||||
|
4. Open a pull request
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
MIT
|
[MIT](LICENSE) © [m1ngsama](https://github.com/m1ngsama)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue