secure-linux-web-hosting

작성자: xixu-me

셀프 호스팅을 위한 클라우드 서버 설정, 강화 또는 검토 시 사용하며, DNS, SSH, 방화벽, Nginx, 정적 사이트 호스팅, 앱 리버스 프록시, Let's Encrypt 또는 ACME 클라이언트를 통한 HTTPS, 안전한 HTTP-to-HTTPS 리디렉션, 또는 BBR과 같은 선택적 출시 후 네트워크 튜닝을 포함합니다.

npx skills add https://github.com/xixu-me/skills --skill secure-linux-web-hosting

Overview

Use this skill to turn a cloud server into a safely reachable web host without leaning on stale distro-specific memory or outdated Debian-10-era tutorials.

This skill keeps the familiar teaching arc of a beginner-friendly server guide, but turns it into a reusable operator workflow:

  1. Intake and routing
  2. Prerequisites
  3. Secure access
  4. Firewall and exposure
  5. Web server setup
  6. Static site or app proxy
  7. HTTPS
  8. Validation
  9. Optional advanced tuning

Before giving actionable commands, identify the distro family and verify the current package names, service units, config paths, and ACME-client guidance against official documentation for the user's distro and chosen tools.

Open references/workflow-map.md first for the phase sequence, then open the narrower reference file you need.

When to Use

Use this skill when the user mentions any of the following:

  • a cloud server, VM, droplet, or other Linux host they want to use for hosting
  • connecting a domain or DNS A/AAAA record to a server
  • SSH login, SSH hardening, root login, keys, ports, or firewall setup
  • installing or configuring Nginx for a website
  • serving a simple static site from Linux
  • putting a small app behind Nginx as a reverse proxy
  • HTTPS, Let's Encrypt, Certbot, acme.sh, certificate renewal, or redirecting HTTP to HTTPS
  • optional post-setup performance or network tuning such as BBR

Do not use this skill for:

  • Kubernetes, PaaS, or full container-orchestrator deployment design
  • application-specific build or CI/CD questions where Linux hosting is not the actual problem
  • Windows or macOS host administration
  • public multi-tenant production architecture reviews that need a broader SRE or platform-design treatment

Workflow

1. Intake and classify the current state

Start by identifying:

  • distro family or image name
  • whether the user has root access, an admin user, or only one live SSH session
  • whether DNS already points at the host
  • whether the goal is a static site or an app reverse proxy
  • whether ports are already exposed
  • whether HTTPS is already partially configured

If the distro is unknown, ask for it or have the user inspect /etc/os-release before giving concrete package or service commands.

2. Verify current docs before actionable commands

Use bundled references for routing, then verify details against live official docs before giving commands that depend on current distro behavior.

Always verify:

  • package manager commands and package names
  • firewall tooling and service names
  • SSH service unit names and config include paths
  • Nginx package and config layout
  • the chosen ACME client's current instructions

If you cannot verify a detail, say so and give high-level guidance instead of pretending the old Debian tutorial path is universal.

3. Keep the phases in order

Walk through the phases in this order unless the user is explicitly asking for review or remediation of an existing setup:

  1. prerequisites
  2. secure access
  3. firewall and exposure
  4. web server
  5. choose one hosting branch: static site or app proxy
  6. HTTPS
  7. validation
  8. optional advanced tuning

Do not collapse the static-site branch and reverse-proxy branch into one default answer. Pick the branch that matches the user's goal.

4. Enforce the safety gates

Treat these as hard stop checks:

  • Do not recommend changing SSH port, disabling password auth, or disabling root SSH login until key-based login works in a second SSH session.
  • Do not recommend certificate issuance until DNS resolves to the intended host and the HTTP site or proxy path works as expected.
  • Do not force an HTTP-to-HTTPS redirect until HTTPS loads cleanly.
  • Do not suggest BBR or similar tuning until secure hosting is already working.

Always distinguish:

  • local-machine actions: SSH, DNS checks, browser tests
  • server actions: package install, config edits, service reloads, firewall rules

Output Expectations

For a fresh setup, provide:

  • a brief diagnosis of the current state
  • the current phase and why it comes next
  • local-machine steps separate from server steps
  • concrete commands or config snippets only after doc verification
  • a verification step after each risky change
  • a short "if this fails, check X" branch for the likely mistake at that phase

For a hardening or troubleshooting review, provide:

  • the most likely risk or breakage first
  • a prioritized remediation sequence
  • the first safe verification step before the next config change

Common Mistakes

  • treating Debian-specific commands from an old article as Linux-universal
  • hardening SSH in the only active session and locking the user out
  • opening application ports directly instead of keeping the app on loopback
  • mixing static-file hosting guidance and reverse-proxy guidance in one config
  • attempting ACME issuance before DNS or HTTP is actually correct
  • forcing redirects before HTTPS is proven
  • treating BBR as part of the core setup instead of an optional later step
  • ignoring SELinux or AppArmor differences when Nginx can read files on one distro but not another

Reference Usage

Use references/workflow-map.md for the phase map, branching logic, and validation order.

Use references/distro-routing.md when distro family, package manager, firewall tooling, or config layout matters.

Use references/nginx-patterns.md when the user needs the static-site branch or the reverse-proxy branch.

Use references/security-and-tls.md for SSH hardening sequence, firewall posture, certificate issuance, renewal, and redirect timing.

xixu-me의 다른 스킬

github-actions-docs
xixu-me
사용자가 GitHub Actions 워크플로우, 워크플로우 구문, 트리거, 매트릭스, 러너, 재사용 가능한 워크플로우, 아티팩트, 캐싱, 시크릿, OIDC, 배포, 사용자 정의 액션 또는 Actions Runner Controller를 작성, 설명, 사용자 정의, 마이그레이션, 보안 설정 또는 문제 해결하는 방법을 묻고, 특히 공식 GitHub 문서, 정확한 링크 또는 문서 기반 YAML 지침이 필요할 때 사용합니다.
developmentdevopsdocument
use-my-browser
xixu-me
사용자의 실시간 브라우저 세션이나 정적 가져오기보다는 보이는 렌더링 상태에 의존하는 작업에 사용하며, 특히 브라우저 디버깅 맥락이나 DevTools에서 선택한 요소 또는 요청, 로그인된 대시보드나 CMS 흐름, localhost 앱, 양식, 업로드, 다운로드, 미디어 검사, DOM 또는 iframe 검사, Shadow DOM, 또는 소프트 404, 인증 장벽, 봇 방지 검사, 속도 제한처럼 보이는 브라우저 오류에 사용합니다.
browser-automationweb-scrapingtesting
readme-i18n
xixu-me
사용자가 저장소 README를 번역하거나, 저장소를 다국어로 만들고, 문서를 현지화하고, 언어 전환기를 추가하고, README를 국제화하거나, GitHub 스타일 저장소에서 현지화된 README 변형을 업데이트하려고 할 때 사용합니다.
documentdevelopmentapi
openclaw-secure-linux-cloud
xixu-me
클라우드 서버에서 OpenClaw를 자체 호스팅하거나, 원격 OpenClaw 게이트웨이를 강화하거나, SSH 터널링, Tailscale, 리버스 프록시 노출 중에서 선택하거나, Podman, 페어링, 샌드박싱, 토큰 인증, 도구 권한 기본값을 검토하여 안전한 개인 배포를 구성할 때 사용합니다.
devopssecurity
develop-userscripts
xixu-me
Tampermonkey 또는 ScriptCat용 브라우저 유저스크립트를 빌드, 디버깅, 패키징, 게시할 때 사용하며, GM API, 메타데이터 블록, 권한 문제, @match/@grant/@connect 설정, ScriptCat 백그라운드 또는 예약 스크립트, UserConfig 블록, 구독 워크플로우를 포함합니다.
developmentbrowser-automationweb-scraping
opensource-guide-coach
xixu-me
사용자가 오픈소스 프로젝트를 시작, 기여, 성장, 운영, 자금 조달, 보안 유지 또는 지속하는 방법에 대한 안내를 원하거나, 기여자 온보딩, 커뮤니티 건강, 메인테이너 소진, 행동 강령, 지표, 법적 기본 사항 또는 오픈소스 프로젝트 채택에 대해 질문할 때 사용합니다.
developmentresearch
running-claude-code-via-litellm-copilot
xixu-me
로컬 LiteLLM 프록시를 통해 Claude Code를 GitHub Copilot으로 라우팅하여 직접적인 Anthropic 비용을 줄이거나, ANTHROPIC_BASE_URL 또는 ANTHROPIC_MODEL 재정의를 구성하거나, 모델을 찾을 수 없음, 로컬호스트 트래픽 없음, GitHub 401/403 인증 오류와 같은 Copilot 프록시 설정 실패를 해결할 때 사용합니다.
developmentapidevops
skills-cli
xixu-me
사용자가 Agent Skills를 검색, 설치, 목록 확인, 점검, 업데이트, 제거, 백업, 복
developmentapiproductivity