| .github | ||
| docs | ||
| filesuite | ||
| forgejo | ||
| minecraft | ||
| nextcloud | ||
| tailscale | ||
| teamspeak | ||
| uptime-kuma | ||
| .env.example | ||
| .gitignore | ||
| automa | ||
| CHEATSHEET.md | ||
| install.sh | ||
| LICENSE | ||
| OPTIMIZATION_SUMMARY.md | ||
| QUICKSTART.md | ||
| README.md | ||
One command to deploy your self-hosted stack.
Interactive CLI for Docker Compose — guided setup, auto-generated secrets, zero YAML editing.
Quick Start
curl -fsSL https://raw.githubusercontent.com/m1ngsama/automa/main/install.sh | bash
cd ~/automa
./automa deploy
That's it. The installer checks prerequisites, clones the repo, and you're ready to deploy.
Features
- Interactive CLI — select projects from a numbered menu, guided
.envsetup with hints - Zero config — sensible defaults for every project, passwords and secrets auto-generated
- Non-interactive mode —
automa -y deployaccepts 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.exampleand automa discovers it
Bundled Projects
| Project | Description | Default Port | Upstream |
|---|---|---|---|
| Forgejo | Self-hosted Git service (Gitea fork) | 3000 |
forgejo.org |
| Nextcloud | Private cloud with MariaDB + Redis | 8080 |
nextcloud.com |
| Uptime Kuma | Uptime monitoring dashboard | 3001 |
GitHub |
| Tailscale | Mesh VPN client + optional DERP relay | host | tailscale.com |
| Filesuite | Cloudreve cloud storage + qBittorrent | 5212 8090 |
cloudreve.org |
| Minecraft | Fabric server (itzg/minecraft-server) | 25565 |
Docs |
| TeamSpeak | Voice communication server | 9987/udp |
teamspeak.com |
Project-specific notes
Tailscale
Uses Docker Compose profiles — deploy only the VPN client or include the DERP relay:
# 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 image with Fabric mod loader. Mods go in minecraft/data/mods/. First startup takes ~2 minutes to download server files.
Usage
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 bash 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 .env.example carries metadata that the CLI reads:
# @name Forgejo
# @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
| Dependency | Minimum | Check |
|---|---|---|
| Docker | 20.10+ | docker --version |
| Docker Compose | v2 (plugin) | docker compose version |
| Bash | 4.0+ | bash --version |
| Git | any | git --version |
The installer verifies all prerequisites automatically.
Uninstall
cd ~/automa
./automa stop <each-project> # stop running containers
cd ~ && rm -rf ~/automa # remove automa
Data is stored in each project's data/ directory. Back up before removing if needed.
Contributing
Contributions welcome! To add a new project:
- Create a directory with
compose.yaml(include health checks) - Add
.env.examplewith metadata headers (@name,@desc,@url,@port) - Open a pull request
See existing projects for reference.