{"id":17084666,"url":"https://github.com/alohe/quicky","last_synced_at":"2025-05-15T10:00:34.174Z","repository":{"id":257815538,"uuid":"869724660","full_name":"alohe/quicky","owner":"alohe","description":"A simple CLI tool to self-host Next.js applications.","archived":false,"fork":false,"pushed_at":"2024-12-09T12:07:46.000Z","size":342,"stargazers_count":427,"open_issues_count":0,"forks_count":14,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-15T03:42:21.498Z","etag":null,"topics":["automation","cli","deployment","nextjs","npm","npm-package","npx","self-hosted","server"],"latest_commit_sha":null,"homepage":"https://quicky.dev","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alohe.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-08T19:24:28.000Z","updated_at":"2025-04-07T19:44:07.000Z","dependencies_parsed_at":null,"dependency_job_id":"983082fa-40de-4b15-a62c-b1c058b6449e","html_url":"https://github.com/alohe/quicky","commit_stats":{"total_commits":114,"total_committers":2,"mean_commits":57.0,"dds":0.00877192982456143,"last_synced_commit":"fab139991896312b63c4401a8b4a026f2d91ec3d"},"previous_names":["alohe/quicky"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alohe%2Fquicky","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alohe%2Fquicky/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alohe%2Fquicky/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alohe%2Fquicky/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alohe","download_url":"https://codeload.github.com/alohe/quicky/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254319715,"owners_count":22051072,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","cli","deployment","nextjs","npm","npm-package","npx","self-hosted","server"],"created_at":"2024-10-14T13:09:10.295Z","updated_at":"2025-05-15T10:00:32.642Z","avatar_url":"https://github.com/alohe.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# Quicky CLI\n\nA CLI tool that streamlines the deployment and management of self-hosted Next.js and Node.js projects, enabling initialization, deployment from GitHub, updating, deleting, and managing applications, along with effortless setup of domains and SSL certificates, simplifying the entire lifecycle of web applications on remote servers.\n\n## Features\n\n- 🐙 **GitHub Integration**: Initialize, deploy, and manage Next.js and Node.js projects from private and public GitHub repositories.\n- ⚙️ **Process Management**: Leverage PM2 for application lifecycle and monitoring.\n- 🔄 **Project Maintenance**: Easily update or remove deployed projects.\n- 🌐 **Domain \u0026 SSL Automation**: Automatically configure Nginx for custom domains and SSL certificates, allowing you to add/remove domains from your projects.\n- 📝 **Configuration Overview**: List and inspect details of all deployed projects and their domains.\n- 🔧 **Webhook Management**: Set up, manage, and update webhooks for automated deployments.\n- 📊 **Dashboard Access**: Manage and monitor your webhook server through a web-based dashboard.\n- 🔍 **Log Management**: View output and error logs for your webhook server.\n\n## Prerequisites\n\nTo install Quicky, first acquire a Linux Ubuntu server from a provider such as [DigitalOcean](https://m.do.co/c/9b7ccf30c0bd) or [Hetzner](https://www.hetzner.com/cloud/).\n\nAfter setting up your server, connect to it (e.g., via SSH) and install Node.js and npm by executing the following commands:\n\n```bash\nsudo apt update\nsudo apt install -y nodejs npm\n```\n\n## Installation\n\nInstall Quicky globally using either `npx` or `npm`:\n\n```bash\nnpx quicky@latest install\n```\n\nor\n\n```bash\nsudo npm install -g quicky\n```\n\n**Note**: The `sudo` command is necessary for global installation and to prevent permission issues when configuring domains.\n\n## Usage\n\n### 1. Initialize Quicky\n\n```bash\nquicky init\n```\n\nThis command will prompt you to enter your GitHub credentials and basic configurations for setting up your projects.\n\nQuicky requires your GitHub access token and username to interact with your repositories. To create a new token, follow these steps:\n1. Visit your [GitHub Personal Access Tokens page](https://github.com/settings/tokens) and make sure to use **Tokens (classic)**.\n2. Click **Generate new token**.\n3. Select the required scopes for repository access.\n4. Click **Generate token**.\n5. Copy the token and provide it to Quicky as your GitHub access token. This token will be stored locally for future use.\n\nTo enable Continuous Deployment, Quicky requests a webhook URL for automated deployments. \nIt uses your GitHub token to set up a webhook listener and create webhooks dynamically. \nYou'll need to create a subdomain (e.g., `webhook.example.com`) pointing to your server's IP address. This can be done by adding an `A` DNS record with the IPv4 address of your server.\n\n### 2. Deploy a Project\n\n```bash\nquicky deploy\n```\n\nQuicky now supports deploying both **Next.js** and **Node.js** projects. During the deployment process, you will be prompted to select the project type:\n\n- **Next.js**\n- **Node.js**\n\n#### Deploying a Next.js Project\n\nFollow the prompts to select your Next.js repository. Quicky will handle the deployment and configuration automatically.\n\n#### Deploying a Node.js Project\n\nBefore deploying a Node.js project, ensure that your main application file is named `index.js`. You have the option to specify whether your project will use a port:\n\n- **With Port**: Provide the port number (e.g., 3000). Quicky will save it in the `.env` file, allowing you to point domains to your project.\n- **Without Port**: Without specifying a port, domains cannot be directed to the project, causing it to operate solely as a background service.\n\nThis command will prompt you to provide:\n\n- Your GitHub username or any organization name\n- The repository name\n- Project type (**Next.js** or **Node.js**)\n- If **Node.js** is selected:\n  - Whether your project uses a port\n    - If yes, the port number on which the project should run (e.g., 3000)\n\n**Environment Variables** - During deployment, you'll be asked whether you'd like to add environment variables to your project. Quicky will handle saving the port number in the `.env` file of your project if applicable.\n\n### 3. Manage Projects\n\n```bash\nquicky manage\n```\n\nLists all deployed projects and allows you to **start**, **stop**, **restart**, **update**, or **delete** a specific project.\n\n### 4. Update a Project by PID\n\n```bash\nquicky update \u003cpid\u003e\n```\n\nUpdates a specific project by its PID with the latest changes from the GitHub repository.\n\n\n### 5. Configuration Overview\n\n```bash\nquicky list\n```\n\nDisplays an overview of all deployed projects, including the following details:\n\n- **PID**: Project ID.\n- **Owner**: GitHub username or organization name.\n- **Repository**: Name of the GitHub repository.\n- **Port**: Port number on which the project is running.\n- **PM2 Status**: Current status of the PM2 process.\n- **Last updated**: Date and time of the last deployment/update.\n\n### 6. Domains\n\nBefore adding a domain to your project, you need to:\n\n1. 🛒 **Purchase a domain name** from a registrar like [Namecheap](https://www.namecheap.com/) or [GoDaddy](https://www.godaddy.com/).\n2. 🌐 **Create an `A` DNS record** pointing to your server's **IPv4** address.\n\nOnce you have your domain, you can easily manage it with the following command:\n\n```bash\nquicky domains\n```\n\nThis command allows you to effortlessly **add** and **remove** domains and subdomains for your projects.\n\n### 7. Webhooks\n\nQuicky provides a built-in webhook server to automatically update your projects when changes are pushed to GitHub. Here's how to set it up:\n\n#### Setting Up the Webhook Server\n\n1. **Prerequisites**\n   - Ensure you have a subdomain (e.g., webhook.example.com) pointing to your server's IP address\n   - Add an A DNS record with your server's IPv4 address\n\n2. **Initial Setup**\n   ```bash\n   quicky webhooks\n   ```\n   This command will:\n   - Check if the webhook server is running\n   - Guide you through the setup process if needed\n   - Prompt for webhook configuration\n\n3. **Configuration**\n   - You'll need to provide a webhook URL (format: https://\u003cyour-subdomain\u003e/webhook)\n   - The webhook server will start automatically after setup\n\n4. **Verify Setup**\n   ```bash\n   quicky webhooks status\n   ```\n   This shows:\n   - Server running status\n   - Options to restart/stop server\n   - Access to server logs\n\n#### Webhook Dashboard\n\n1. **Setup Dashboard Access**\n   ```bash\n   quicky webhooks dashboard\n   ```\n   - Set up username and password\n   - Credentials are securely stored\n\n2. **Access Dashboard**\n   - Open your browser to https://\u003cyour-subdomain\u003e/dashboard\n   - Log in with your credentials\n   - Monitor webhook status\n   - View webhook logs\n\n#### Managing Webhooks\n\nUse `quicky webhooks` with these commands:\n- `status` - Check webhook server status\n- `restart` - Restart the webhook server\n- `stop` - Stop the webhook server\n- `logs` - View webhook server logs\n- `dashboard` - Access the webhook dashboard\n\n### 8. Upgrade Quicky\n\n```bash\nquicky upgrade\n```\n\nUpgrades Quicky to the latest version.\n\n### 9. Uninstall Quicky\n\n```bash\nquicky uninstall\n```\n\nRemoves Quicky from your system.\n\n## License\n\nThis project is licensed under the MIT License - see the [`LICENSE`](LICENSE) file for details.\n\n## Author\n\n- [Alohe](https://x.com/alemalohe) \n\nFeel free to reach out to me on 𝕏 [@alemalohe](https://x.com/alemalohe) if you have any questions or feedback! \n\n## Contributing\n\nContributions are welcome! Please read the CONTRIBUTING file for guidelines on how to get started.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falohe%2Fquicky","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falohe%2Fquicky","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falohe%2Fquicky/lists"}