Self-Hosted n8n Deployment
czlonkowski/n8n-skills
Deploys a production n8n instance to a fresh Linux server over SSH with Docker Compose and Caddy HTTPS, in single or queue mode, and covers updates, backups and hardening.
Deploy Rails applications to Railway. An agent skill from clacky-ai/openclacky.
$ npx skills add clacky-ai/openclacky --skill deploy -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install clacky-ai/openclacky deploy --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/clacky-ai/openclacky.git skills-src && mkdir -p .claude/skills && cp -r skills-src/lib/clacky/default_skills/deploy .claude/skills/deploy && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "deploy" agent skill from https://github.com/clacky-ai/openclacky/tree/main/lib/clacky/default_skills/deploy into .claude/skills/deploy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deploy", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/clacky-ai/openclacky/tree/main/lib/clacky/default_skills/deployType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add clacky-ai/openclacky --skill deploy -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install clacky-ai/openclacky deploy --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/clacky-ai/openclacky.git skills-src && mkdir -p .agents/skills && cp -r skills-src/lib/clacky/default_skills/deploy .agents/skills/deploy && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "deploy" agent skill from https://github.com/clacky-ai/openclacky/tree/main/lib/clacky/default_skills/deploy into .agents/skills/deploy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deploy", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add clacky-ai/openclacky --skill deploy -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install clacky-ai/openclacky deploy --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/clacky-ai/openclacky.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/lib/clacky/default_skills/deploy .cursor/skills/deploy && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "deploy" agent skill from https://github.com/clacky-ai/openclacky/tree/main/lib/clacky/default_skills/deploy into .cursor/skills/deploy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deploy", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/clacky-ai/openclacky.git --path lib/clacky/default_skills/deploy--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add clacky-ai/openclacky --skill deploy -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install clacky-ai/openclacky deploy --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/clacky-ai/openclacky.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/lib/clacky/default_skills/deploy .gemini/skills/deploy && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "deploy" agent skill from https://github.com/clacky-ai/openclacky/tree/main/lib/clacky/default_skills/deploy into .gemini/skills/deploy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deploy", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install clacky-ai/openclacky deployInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add clacky-ai/openclacky --skill deploy -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/clacky-ai/openclacky.git skills-src && mkdir -p .github/skills && cp -r skills-src/lib/clacky/default_skills/deploy .github/skills/deploy && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "deploy" agent skill from https://github.com/clacky-ai/openclacky/tree/main/lib/clacky/default_skills/deploy into .github/skills/deploy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deploy", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add clacky-ai/openclacky --skill deploy -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install clacky-ai/openclacky deploy --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/clacky-ai/openclacky.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/lib/clacky/default_skills/deploy .opencode/skills/deploy && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "deploy" agent skill from https://github.com/clacky-ai/openclacky/tree/main/lib/clacky/default_skills/deploy into .opencode/skills/deploy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deploy", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
deployDeploy Rails applications to Railway. An agent skill from clacky-ai/openclacky.
Deploy is an agent skill from clacky-ai/openclacky. Deploy Rails applications to Railway. Handles first-time setup and re-deploys idempotently using Railway CLI. Trigger on: "deploy", "deploy to railway", "railway deploy", "发布", "部署", "上线".
Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in DevOps & Cloud, covering Backend development and Deployment. It works with PostgreSQL, Railway, Linux and Docker. The repository describes itself as: The most Token-efficient open-source AI Agent. The licence is MIT.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit acd54fd. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
railwaybundlerailsrubybashcurlFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
railway.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
STORAGE_BUCKET_ACCESS_KEY_IDSTORAGE_BUCKET_SECRET_ACCESS_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Deploy loads about 1.9k tokens when it runs. Until then it costs about 49 tokens; SKILL.md has 701 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from clacky-ai/openclacky at commit acd54fd, republished under its MIT licence (© clacky-ai). 701 words, ~1,863 tokens.
.claude/skills/deploy/SKILL.md (or your agent's skills folder).Deploy the current Rails project to Railway using the Railway CLI. Works for both first-time deploys and re-deploys.
Before starting, verify:
# 1. Railway CLI installed?
railway --version
# 2. Logged in?
railway whoamiIf not logged in, instruct the user:
Please run: railway login
Then retry deployment.Railway runs on Linux. Ensure Gemfile.lock includes the linux platform:
bundle lock --add-platform x86_64-linuxIf the project uses a Dockerfile builder (check railway.toml for builder = "DOCKERFILE"), no Procfile is needed — skip creating one.
Only create a Procfile if there is no Dockerfile:
web: bundle exec puma -C config/puma.rbFirst: check if already linked:
railway status 2>&1If output contains Project: → project is already linked.
Skip Steps 2–5 entirely and jump to Step 6 (Deploy).
If output contains "not linked" or an error → not linked yet. Try linking to an existing project first — list available projects:
railway list 2>&1 | grep -i "<app-name>"If a matching project is found, link it:
railway link --project <project-name> --service <service-name> 2>&1Only if no existing project is found, init a new one:
railway init -n <app-name>The app-name should match the current directory name (e.g., my-rails-app).
⚠️ NEVER run railway init when already linked or when an existing project exists.
It silently creates a brand-new Railway project. If this happens by mistake:
railway listrailway link --project <project-name> --service <service-name>Set required Rails production variables. Use --skip-deploys to avoid triggering premature deploys:
# Generate a secret key base
SECRET_KEY_BASE=$(bundle exec rails secret)
railway variable set SECRET_KEY_BASE=$SECRET_KEY_BASE --skip-deploys
railway variable set RAILS_ENV=production --skip-deploys
railway variable set RAILS_LOG_TO_STDOUT=true --skip-deploys
railway variable set RAILS_SERVE_STATIC_FILES=true --skip-deploysIf the project uses any other env vars (check .env.example or config/application.yml.example if they exist), prompt the user to provide values and set them too.
If the project uses config/application.yml (Figaro gem), read it and set all values as Railway variables:
# Read application.yml and set each key=value pair
ruby -ryaml -e "
data = YAML.safe_load(File.read('config/application.yml')) || {}
data.each { |k, v| puts %(railway variable set #{k}=#{v} --skip-deploys) unless v.to_s.empty? }
" | bashCheck if Postgres already exists:
railway status --jsonParse the JSON output. If a service with type postgres or name containing postgres/Postgres is already found, skip with: ✅ PostgreSQL already provisioned
⚠️ IMPORTANT: railway add --database postgres has a known CLI bug that always returns Unauthorized.
Do NOT attempt to run this command. Instead, instruct the user to add PostgreSQL manually via the Railway Web UI:
https://railway.com/project/<project-id>
(Get the project ID from the Railway dashboard or cat .railway/config.json)After Postgres is provisioned, set the DATABASE_URL variable:
railway variable set DATABASE_URL='${{Postgres.DATABASE_URL}}' --skip-deploysCheck if a domain is already set:
railway domain --jsonIf no domain exists yet:
railway domainCapture and display the domain URL to the user. Also set it as PUBLIC_HOST:
railway variable set PUBLIC_HOST=<domain-without-https> --skip-deploysCheck if the project uses S3-compatible storage by reading config/storage.yml. If it contains an amazon or s3 service section, storage bucket configuration is required.
⚠️ Storage bucket requires Railway Hobby plan ($5/month minimum). Confirm with the user before proceeding.
Check if bucket env vars are already set:
railway variables --json | grep STORAGE_BUCKETIf not set, create a bucket and configure the variables:
# Create bucket (choose region: iad=US East, sjc=US West, ams=EU, sin=Asia)
railway bucket create <app-name>-storage --region iad --json
# Get credentials
railway bucket credentials --bucket <app-name>-storage --jsonThe credentials JSON will contain: accessKeyId, secretAccessKey, region, endpoint, bucketName.
Set them as environment variables:
railway variables set \
STORAGE_BUCKET_ACCESS_KEY_ID=<accessKeyId> \
STORAGE_BUCKET_SECRET_ACCESS_KEY=<secretAccessKey> \
STORAGE_BUCKET_REGION=<region> \
STORAGE_BUCKET_NAME=<bucketName> \
STORAGE_BUCKET_ENDPOINT=<endpoint> \
--skip-deploys⚠️ Missing these variables will cause a hard crash at boot (Aws::Errors::MissingRegionError) because the AWS SDK initializes at startup, not lazily.
If the project does not use S3 storage, skip this step entirely.
Upload and deploy the project:
railway up --detachShow the user the deployment is in progress and they can monitor it with:
railway logsNo manual migration needed. The bin/docker-entrypoint script runs rails db:prepare automatically on container startup. Just wait for the deployment to complete.
After deployment completes (wait ~30 seconds), verify the app is running:
# Should return 200
curl -s -o /dev/null -w "%{http_code}" https://<domain>/If it returns 200, deployment is successful. If not, check logs:
railway logs --tail 50Print a summary:
✅ Deployment complete!
🌐 Platform URL: https://<domain>
📋 Monitor: railway logs
🔄 Re-deploy: just run deploy againrailway status to check if already linked — it's more reliable than checking .railway/config.json (works across machines and fresh clones).SECRET_KEY_BASE if not already set (check with railway variable list).bin/docker-entrypoint via rails db:prepare — never run railway run bundle exec rails db:migrate as Railway's internal DB IP is not accessible from local machine.railway add --database postgres always fails with Unauthorized — always use the Web UI instead.© clacky-ai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in lib/clacky/default_skills/deploy of clacky-ai/openclacky.
Open the folder on GitHubat commit acd54fd
Deploy next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Deploy this skillclacky-ai/openclacky | 1.2k | — | ~1.9k | Automated safety check: Pass | MIT | |
| Self-Hosted n8n Deploymentczlonkowski/n8n-skills | 6.4k | — | ~3.5k | Automated safety check: Notes | MIT | |
| AI ServerOpentrons/opentrons | 521 | — | ~2.5k | Automated safety check: Notes | Apache-2.0 | |
| Monstermq Broker Configvogler75/monster-mq | 142 | — | ~2.2k | Automated safety check: Pass | GPL-3.0 | |
| Django Deployment Test Loophashgraph-online/awesome-codex-plugins | 1.2k | — | ~851 | Automated safety check: Pass | MIT | |
| Minimegasandia-minimega/minimega | 160 | — | ~3.2k | Automated safety check: Pass | GPL-3.0-only |
czlonkowski/n8n-skills
Deploys a production n8n instance to a fresh Linux server over SSH with Docker Compose and Caddy HTTPS, in single or queue mode, and covers updates, backups and hardening.
Opentrons/opentrons
Conventions for the opentrons-ai-server FastAPI service — project structure, uv dependency management, settings, testing, Docker, and deployment.
vogler75/monster-mq
Guide for configuring, deploying, and operating the MonsterMQ broker.
hashgraph-online/awesome-codex-plugins
Make Django deployment changes test-driven across Docker, production settings, Gunicorn, WhiteNoise/static files, environment variables, Ansible/server setup, staging smoke tests, and release checks.
sandia-minimega/minimega
This skill should be used when the user asks how to configure, run, automate, integrate, or troubleshoot minimega (VMs, namespaces, VLANs, clusters, miniccc, miniweb, command socket or Python API…
blotcms/blot
Work out why the blot-container-{blue,green,yellow} Docker containers from the most recent production deployment have restarted — distinguishing a normal deploy-triggered restart from a crash (V8…
clacky-ai/openclacky
Install skills from a zip URL or local zip file path. An agent skill from clacky-ai/openclacky.
clacky-ai/openclacky
Generate or edit images, videos, or audio in the current task.
clacky-ai/openclacky
Configure the browser tool for Clacky. An agent skill from clacky-ai/openclacky.
clacky-ai/openclacky
Create, manage, and run scheduled automated tasks (cron jobs) in Clacky.
clacky-ai/openclacky
Manage MCP (Model Context Protocol) servers for openclacky: add, list, probe, remove, reconfigure.
clacky-ai/openclacky
Create a new project to start development quickly. An agent skill from clacky-ai/openclacky.
Works with
Categories
Deploy Rails applications to Railway. An agent skill from clacky-ai/openclacky. Deploy is an agent skill from clacky-ai/openclacky. Deploy Rails applications to Railway.
Deploy fits situations like: deploy to railway; tasks that involve Backend development; tasks that involve Deployment.
Run `npx skills add clacky-ai/openclacky --skill deploy -a claude-code`. Or copy the skill folder (lib/clacky/default_skills/deploy in clacky-ai/openclacky) into .claude/skills/deploy in your project. Claude Code loads it when a task matches its description.
Run `npx skills add clacky-ai/openclacky --skill deploy -a codex`. Or copy the skill folder (lib/clacky/default_skills/deploy in clacky-ai/openclacky) into .agents/skills/deploy in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add clacky-ai/openclacky --skill deploy -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/deploy, .gemini/skills/deploy, .github/skills/deploy and .opencode/skills/deploy in your project.
Going by SKILL.md and its folder, Deploy needs the command-line tools its instructions call (railway, bundle, rails, ruby, bash and curl) and credentials named STORAGE_BUCKET_ACCESS_KEY_ID and STORAGE_BUCKET_SECRET_ACCESS_KEY. Our summary lists: Docker; A credential in STORAGE_BUCKET_SECRET_ACCESS_KEY.
SKILL.md names 1 domain. In commands or code: railway.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Deploy is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.9k tokens (SKILL.md is roughly 7.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Deploy: Self-Hosted n8n Deployment (czlonkowski/n8n-skills, 6.4k stars), AI Server (Opentrons/opentrons, 521 stars), Monstermq Broker Config (vogler75/monster-mq, 142 stars) and Django Deployment Test Loop (hashgraph-online/awesome-codex-plugins, 1.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
clacky-ai (a GitHub organization) maintains it in clacky-ai/openclacky, which has 1,204 GitHub stars. The repository holds 20 skills in this directory. The repository was last updated on October 7, 2026.
Source: clacky-ai/openclacky on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.