secure-linux-web-hosting

作者: xixu-me

在設定、強化或檢視用於自架站的雲端伺服器時使用,包括 DNS、SSH、防火牆、Nginx、靜態網站託管、應用程式的反向代理、使用 Let's Encrypt 或 ACME 用戶端的 HTTPS、安全的 HTTP 到 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
當工作依賴於用戶的即時瀏覽器工作階段或可見的渲染狀態,而非靜態擷取時使用,特別適用於瀏覽器除錯情境、開發者工具選取的元素或請求、已登入的儀表板或CMS流程、本地主機應用程式、表單、上傳、下載、媒體檢查、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 覆寫,或疑難排解 Copilot 代理設定失敗,例如模型未找到、無 localhost 流量或 GitHub 401/403 驗證錯誤。
developmentapidevops
skills-cli
xixu-me
Use when users ask to discover, install, list, check, update, remove, back up, restore, sync, or initialize Agent Skills, mention `bunx skills`, `npx skills`, `skills.sh`, or `skills-lock.json`, ask "find a skill for X", or want help extending agent capabilities with installable skills.
developmentapiproductivity