A powerful, automated Linux server setup tool designed to quickly configure and secure fresh server installations. SetupSuite uses a custom configuration language to define server roles and automatically installs, configures, and secures your servers according to best practices.
- Multi-Server Type Support: Pre-configured templates for web servers, database servers, Docker hosts, proxy servers, and build servers
- Distribution Agnostic: Automatically detects and supports multiple Linux distributions (Ubuntu, Debian, RHEL, CentOS, Fedora, Arch, Alpine, openSUSE)
- Smart Package Management: Auto-detects package managers (APT, DNF, YUM, Pacman, Zypper, APK)
- Universal Service Management: Supports systemd, SysV Init, and OpenRC
- Flexible Firewall Support: Works with UFW, firewalld, and iptables
- Security First: Automatic SSH hardening, firewall configuration, and user management
- Custom DSL: Easy-to-read configuration language for defining server setup
- SSL Automation: Automatic SSL certificate generation with Let's Encrypt
- Docker Integration: Optimized Docker setup with logging configuration
- Extensible: Easy to add new server types and configurations
| Type | Description | Includes |
|---|---|---|
| web | Web server with Nginx | Nginx, SSL/TLS, firewall rules |
| database | Database server | MySQL/PostgreSQL, security hardening |
| docker | Container host | Docker, docker-compose, optimized logging |
| proxy | Reverse proxy | Nginx proxy config, SSL termination |
| build | CI/CD build server | Git, Node.js, Docker, build tools |
| Distribution | Package Manager | Service Manager | Firewall | Status |
|---|---|---|---|---|
| Ubuntu 18.04+ | APT | systemd | UFW | β Fully Supported |
| Debian 10+ | APT | systemd | UFW | β Fully Supported |
| RHEL 8+ | DNF | systemd | firewalld | β Fully Supported |
| CentOS 7+ | YUM/DNF | systemd | firewalld | β Fully Supported |
| Fedora 30+ | DNF | systemd | firewalld | β Fully Supported |
| Arch Linux | Pacman | systemd | UFW/iptables | β Fully Supported |
| Alpine Linux | APK | OpenRC | iptables | β Fully Supported |
| openSUSE | Zypper | systemd | firewalld | β Fully Supported |
curl -fsSL https://raw.githubusercontent.com/FlubioStudios/SetupSuite/main/install.sh | bash# Clone the repository
git clone https://github.com/FlubioStudios/SetupSuite.git
cd SetupSuite
# Build the binary
go build -o setupsuite ./suite
# Install system-wide
sudo mv setupsuite /usr/local/bin/
sudo chmod +x /usr/local/bin/setupsuite# Generate a web server configuration
sudo setupsuite -generate -type web -config /etc/setupsuite/web.sscfg
# Other available types: database, docker, proxy, buildsudo nano /etc/setupsuite/web.sscfgImportant: Replace the following placeholders:
REPLACE_WITH_YOUR_SSH_KEY- Your SSH public keyexample.com- Your actual domain nameadmin@example.com- Your email address
sudo setupsuite -config /etc/setupsuite/web.sscfgpreview
SetupSuite uses a simple, readable configuration format:
.setup_secure{
ssh_user: "webadmin",
user_ssh_rsa: "ssh-rsa AAAAB3NzaC1yc2E...",
ssh_port: 22022,
.configuration{
type: "web",
domain: "example.com",
email: "admin@example.com"
},
.firewall{
open_ports: [
22022,
80,
443
]
}
}
.install_tools{
tools: [
"nginx",
"certbot",
"python3-certbot-nginx",
"ufw",
"htop",
"curl",
"git"
]
}
# Show help
setupsuite -help
# Generate configuration templates
setupsuite -generate -type web -config /path/to/config.sscfg
setupsuite -generate -type database -config /path/to/db-config.sscfg
setupsuite -generate -type docker -config /path/to/docker-config.sscfg
# Run setup with custom config
setupsuite -config /path/to/config.sscfg
# Run with default config (creates one if missing)
setupsuite- Creates a non-root user with sudo privileges
- Configures SSH key-based authentication
- Disables password authentication
- Changes SSH port (configurable)
- Sets up UFW firewall with specified rules
- Installs and configures fail2ban
- Updates package repositories
- Upgrades all system packages
- Enables automatic security updates
- Installs and configures Nginx
- Sets up SSL certificates with Let's Encrypt
- Configures basic virtual host
- Optimizes Nginx for performance
- Installs MySQL or PostgreSQL
- Runs security hardening scripts
- Configures firewall for database ports
- Installs Docker and docker-compose
- Configures Docker daemon with log rotation
- Adds user to docker group
- Optimizes Docker settings
- Configures Nginx as reverse proxy
- Sets up SSL termination
- Configures upstream servers
- Installs development tools
- Sets up Node.js, Python, Java
- Configures Docker for CI/CD
- Installs build dependencies
See the examples/ directory for complete configuration examples:
web-server.sscfg- Complete web server setupdatabase-server.sscfg- Database server configurationdocker-host.sscfg- Docker host setupproxy-server.sscfg- Reverse proxy configurationbuild-server.sscfg- CI/CD build server setup
- Always test on a VM first - SetupSuite makes significant system changes
- Use strong SSH keys - Never use the placeholder keys in production
- Review firewall rules - Ensure only necessary ports are open
- Backup existing configs - SetupSuite will backup original SSH configs
- Change default passwords - Replace all placeholder passwords
SetupSuite automatically implements the Docker logging fix mentioned in TODO.md:
{
"log-driver": "local",
"log-opts": {
"max-size": "20m",
"max-file": "5"
}
}This prevents Docker logs from consuming all disk space on busy systems.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Crafting Interpreters - Book about building code interpreters
- Automated Server Setup Examples
- Bash Aliases Collection
β‘ Built for rapid server deployment and configuration management.