Self-hosted Docker Compose deployer
Interactive CLI to deploy Forgejo, Nextcloud, Minecraft, and more in seconds.
---
## Quick Start
```bash
curl -fsSL https://raw.githubusercontent.com/m1ngsama/automa/main/install.sh | bash
cd ~/automa
./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
```bash
automa deploy # interactive project selection
automa deploy forgejo nextcloud # deploy specific projects
automa -y deploy forgejo # non-interactive (CI/scripts)
automa status # overview dashboard
automa logs minecraft # follow container logs
automa stop forgejo # stop a project
automa restart nextcloud # restart a project
automa update nextcloud # pull latest images & recreate
automa config tailscale # reconfigure .env
automa list # list all projects
```
## How It Works
```
~/automa/
├── automa # CLI entry point (single script)
├── install.sh # curl-pipe-bash installer
├── 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 # 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
[MIT](LICENSE) © [m1ngsama](https://github.com/m1ngsama)