Skip to content
Back to skills

Server

ASecurity

Configure, deploy, and troubleshoot web servers, application servers, and containerized services.

  • 57 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 17, 2026
devopspythongonodefastapidjangodockerdebuggingapibackendsecurity

Works with

  • api

Security analysis

A100/100

Scanned October 17, 2026

npx -y skills add diegosouzapw/awesome-omni-skill --skill server --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Server?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Server
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/diegosouzapw-server/badge)](https://www.skillsdirectory.com/skills/diegosouzapw-server)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: Server
description: Configure, deploy, and troubleshoot web servers, application servers, and containerized services.
---

## Scope

This skill covers the **software layer** — what runs inside a machine.
For infrastructure (provisioning VMs, SSH hardening, firewalls, backups), use the `vps` skill.

## When to Use

- Configuring nginx, Caddy, or Apache
- Deploying Node.js, Python, Go, or other apps
- Docker and Docker Compose setups
- SSL/TLS certificates with Let's Encrypt
- Reverse proxy and load balancing
- Process management (pm2, systemd services)
- Troubleshooting port conflicts, CORS, connection errors
- Self-hosting (Plex, Nextcloud, game servers)
- Local development servers (Vite, webpack-dev-server)

## Common Pitfalls

- **Port already in use** — Check with `lsof -i :PORT` or `ss -tlnp | grep PORT`, kill stale processes
- **CORS in development** — Proxy through your dev server or configure backend headers, don't disable in production
- **SSL certificate issues** — Certbot needs port 80/443 open, use `--standalone` or `--webroot` mode appropriately
- **nginx config not loading** — Always run `nginx -t` before `systemctl reload nginx`
- **Docker container can't reach host** — Use `host.docker.internal` (Docker Desktop) or `172.17.0.1` (Linux)
- **Process dies after SSH disconnect** — Use systemd, pm2, or run inside tmux/screen
- **Wrong permissions on mounted volumes** — Match container user UID with host file ownership

## Patterns by Use Case

| Use Case | Recommended Stack |
|----------|-------------------|
| Static site | Caddy (auto-SSL, zero config) |
| Node.js app | PM2 + nginx reverse proxy |
| Python (Django/FastAPI) | Gunicorn + nginx |
| Multiple services | Docker Compose + Traefik |
| Game server | Dedicated container + port mapping |

For framework-specific configs, see `configs.md`.
For Docker Compose patterns, see `docker.md`.

## Debugging Checklist

1. **Is the process running?** `systemctl status` or `docker ps`
2. **Is it listening?** `ss -tlnp | grep PORT`
3. **Can you reach it locally?** `curl localhost:PORT`
4. **Firewall blocking?** Check `ufw status` or cloud security groups
5. **Reverse proxy misconfigured?** Check nginx logs: `/var/log/nginx/error.log`
6. **DNS pointing correctly?** `dig domain.com` or `nslookup`

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.