server-tools [--yes|-y] [--quiet|-q] <command> <subcommand> [options]
| Flag | Short | Description |
|---|---|---|
--yes |
-y |
Auto-accept confirmations |
--quiet |
-q |
Only output errors |
--version |
-v |
Show version number |
--config |
-c |
Show active configuration |
--help |
-h |
Show help |
# Full setup: DB + user + password
server-tools db create --name shop_production --user shop_user
# With custom password
server-tools db create --name shop_production --user shop_user --password 'MyS3cur3Pass!'
# DB for existing user
server-tools db create-for-user --name shop_staging --user shop_user
# Simple VHost with PHP 8.3
server-tools vhost create --domain example.com --php 8.3
# With aliases and custom document root
server-tools vhost create --domain example.com \
--aliases "www.example.com cdn.example.com" \
--php 8.2 \
--docroot /var/www/example.com/public
# Simple reverse proxy (e.g. Node.js app)
server-tools vhost create --domain app.example.com --type proxy \
--backend http://localhost:3000
# With WebSocket support (e.g. for Socket.io)
server-tools vhost create --domain ws.example.com --type proxy \
--backend http://localhost:3000 --websocket
# Disable ProxyPreserveHost
server-tools vhost create --domain api.example.com --type proxy \
--backend http://localhost:8080 --preserve-host false
# Check a single vhost against the canonical template
server-tools vhost audit --domain example.com
# Check all vhosts (e.g. as a cronjob for periodic drift checks)
server-tools vhost audit
# Create user for domain
server-tools user create --domain example.com --username exampledev
# Add SSH key
server-tools user add-key --username exampledev \
--key "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... user@laptop"
# Set password (or let it auto-generate)
server-tools user set-password --username exampledev
# Standard certificate
server-tools ssl create --domain example.com --email admin@example.com
# Wildcard via Cloudflare DNS
server-tools ssl wildcard --domain example.com --provider cloudflare
# 1. Create VHost
server-tools vhost create --domain shop.example.com --php 8.3
# 2. Enable SSL
server-tools ssl create --domain shop.example.com
# 3. Create database
server-tools db create --name shop_db --user shop_user
# 4. Set up SSH user for developer
server-tools user create --domain shop.example.com --username shopdev
server-tools user add-key --username shopdev --key "ssh-ed25519 AAAA..."
# 5. Open firewall
server-tools firewall allow --port 443
Without arguments, server-tools launches the interactive TUI menu:
+=======================================+
| Server Tools |
+=======================================+
1) Database Management
2) Virtual Host Management
3) SSL Certificate Management
4) Cron Job Management
5) Firewall Management
6) Fail2Ban Management
7) Log Viewer
8) SSH User Management
9) System Status
10) Exit
Select option [1-10]:
If MySQL/MariaDB is not installed, the database entry is shown as disabled:
1) Database Management [mysql not installed]
Selecting it displays a short message with the install hint and returns to the main menu — no crash, no error exit.
Each menu item opens a submenu with all available operations. The Database menu, for example, offers 17 options for all database operations.
The interactive menu is ideal for manual administration. For scripting and automation, use CLI mode.