{"id":18114111,"url":"https://github.com/yarlson/ftl","last_synced_at":"2025-04-09T05:08:16.361Z","repository":{"id":257195576,"uuid":"850651557","full_name":"yarlson/ftl","owner":"yarlson","description":"🚀 FTL is a powerful deployment tool that simplifies the process of setting up servers and deploying applications.","archived":false,"fork":false,"pushed_at":"2024-10-22T16:44:59.000Z","size":18749,"stargazers_count":270,"open_issues_count":0,"forks_count":4,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-10-22T23:47:57.474Z","etag":null,"topics":["automation","cli","deployment","devops","golang","iaac","noscale","server-management","ssh","zero-downtime"],"latest_commit_sha":null,"homepage":"","language":"Go","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/yarlson.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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-09-01T11:56:02.000Z","updated_at":"2024-10-22T18:35:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"6b257ee1-cd67-4204-890b-31f2c9187e79","html_url":"https://github.com/yarlson/ftl","commit_stats":null,"previous_names":["enclave-ci/aerie","yarlson/aerie"],"tags_count":34,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yarlson%2Fftl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yarlson%2Fftl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yarlson%2Fftl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yarlson%2Fftl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yarlson","download_url":"https://codeload.github.com/yarlson/ftl/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247980837,"owners_count":21027808,"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","devops","golang","iaac","noscale","server-management","ssh","zero-downtime"],"created_at":"2024-11-01T03:00:44.716Z","updated_at":"2025-04-09T05:08:16.339Z","avatar_url":"https://github.com/yarlson.png","language":"Go","readme":"# FTL (Faster Than Light) Deployment\n\nFTL is a lightweight deployment tool designed to simplify cloud deployments without the complexity of traditional CI/CD pipelines or container orchestration platforms. It provides automated, zero-downtime deployments through a single YAML configuration file.\n\nFor comprehensive documentation, visit [https://ftl-deploy.org](https://ftl-deploy.org)\n\n## Features\n\n- Zero-downtime deployments with automated health checks\n- Single YAML configuration with environment variable support and validation\n- Built-in Nginx reverse proxy with automatic SSL/TLS certificate management\n- Docker-based deployment with layer-optimized transfers\n- Real-time log streaming and monitoring\n- Secure SSH tunneling for remote dependencies\n\n## Requirements\n\n- Docker installed locally for building images\n- SSH access to target deployment servers\n- Git for version control\n- Go 1.16+ (only if building from source)\n\n## Installation\n\nChoose one of the following installation methods:\n\n### Via Homebrew (macOS and Linux)\n\n```bash\nbrew tap yarlson/ftl\nbrew install ftl\n```\n\n### Direct Download\n\n```bash\ncurl -L https://github.com/yarlson/ftl/releases/latest/download/ftl_$(uname -s)_$(uname -m).tar.gz | tar xz\nsudo mv ftl /usr/local/bin/\n```\n\n### Build from Source\n\n```bash\ngo install github.com/yarlson/ftl@latest\n```\n\n### Verify Installation\n\nAfter installing FTL, verify it's working correctly by checking the version:\n\n```bash\nftl version\n```\n\n## Configuration\n\nCreate an `ftl.yaml` file in your project root:\n\n```yaml\nproject:\n  name: my-project\n  domain: my-project.example.com\n  email: my-project@example.com\n\nserver:\n  host: my-project.example.com # Optional, defaults to project.domain\n  port: 22 # Optional, defaults to 22\n  user: my-project # Optional, defaults to current system user\n  ssh_key: ~/.ssh/id_rsa # Optional, auto-detected from standard locations\n\nservices:\n  - name: web\n    path: ./src\n    port: 80\n    health_check:\n      path: /\n    routes:\n      - path: /\n\ndependencies:\n  - \"postgres:16\" # Using short notation\n  - name: redis # Using detailed definition\n    image: redis:7\n    volumes:\n      - redis_data:/custom/redis/path\n    env:\n      - REDIS_PASSWORD=${REDIS_PASSWORD:-secret}\n\nvolumes:\n  - redis_data\n```\n\nYou can validate your configuration at any time using:\n\n```bash\nftl validate\n```\n\n### Environment Variables\n\n- Required variables: Use `${VAR_NAME}`\n- Optional variables with defaults: Use `${VAR_NAME:-default_value}`\n\n## Usage\n\n### Configuration Validation\n\n```bash\n# Validate your ftl.yaml configuration\nftl validate\n```\n\n### Server Setup\n\n```bash\nftl setup\n```\n\n### Building Applications\n\nFTL supports two deployment modes:\n\n1. Direct SSH Transfer (Default):\n\n```yaml\nservices:\n  - name: web\n    path: ./src # Path to directory containing Dockerfile\n```\n\n2. Registry-based Deployment:\n\n```yaml\nservices:\n  - name: web\n    image: registry.example.com/my-app:latest\n    path: ./src\n```\n\nBuild command:\n\n```bash\nftl build [--skip-push]\n```\n\n### Deployment\n\n```bash\nftl deploy\n```\n\n### Log Management\n\n```bash\n# Stream all logs\nftl logs -f\n\n# View specific service logs\nftl logs my-app -n 150\n```\n\n### SSH Tunnels\n\n```bash\n# Create tunnels for all dependencies\nftl tunnels\n```\n\n## Development\n\n```bash\n# Clone repository\ngit clone https://github.com/yarlson/ftl.git\n\n# Install dependencies\ncd ftl\ngo mod download\n\n# Run tests\ngo test ./...\n```\n\n## Example Projects\n\nVisit our [ftl-examples](https://github.com/yarlson/ftl-examples) repository for complete implementation examples:\n\n- [Flask Application with PostgreSQL](https://github.com/yarlson/ftl-examples/tree/main/flask)\n- Additional examples coming soon\n\n## Troubleshooting\n\n### Common Issues\n\n1. Configuration Validation Errors\n\n   - Ensure all required fields are present\n   - Check port numbers are valid\n   - Verify file paths exist\n   - Confirm environment variables are properly defined\n\n2. Registry Authentication Failures\n\n   - FTL currently supports only username/password authentication\n   - Token-based authentication is not supported\n\n3. SSH Connection Issues\n   - Verify SSH key permissions\n   - Ensure server firewall allows connections\n   - Check user permissions on target server\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Commit your changes\n4. Push to the branch\n5. Create a Pull Request\n\nPlease ensure:\n\n- Code follows project style guidelines\n- All tests pass\n- Documentation is updated\n- Commit messages are clear and descriptive\n\n## Security\n\nReport security vulnerabilities by opening an issue with the \"security\" label. We take all security reports seriously and will respond promptly.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","funding_links":[],"categories":["Go"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyarlson%2Fftl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyarlson%2Fftl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyarlson%2Fftl/lists"}