Deprecated: Function get_magic_quotes_gpc() is deprecated in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 99

Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 619

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1169

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176
8000 GitHub - indielab/ftl: πŸš€ FTL is a powerful deployment tool that simplifies the process of setting up servers and deploying applications.
Nothing Special   »   [go: up one dir, main page]

Skip to content
/ ftl Public
forked from yarlson/ftl

πŸš€ FTL is a powerful deployment tool that simplifies the process of setting up servers and deploying applications.

License

Notifications You must be signed in to change notification settings

indielab/ftl

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

FTL (Faster Than Light) Deployment

FTL 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.

For comprehensive documentation, visit https://ftl-deploy.org

Features

  • Zero-downtime deployments with automated health checks
  • Single YAML configuration with environment variable support and validation
  • Built-in Nginx reverse proxy with automatic SSL/TLS certificate management
  • Docker-based deployment with layer-optimized transfers
  • Real-time log streaming and monitoring
  • Secure SSH tunneling for remote dependencies
  • GitHub Actions integration for automated CI/CD workflows

Requirements

  • Docker installed locally for building images
  • SSH access to target deployment servers
  • Git for version control
  • Go 1.16+ (only if building from source)

Installation

Choose one of the following installation methods:

Via Homebrew (macOS and Linux)

brew tap yarlson/ftl
brew install ftl

Direct Download

curl -L https://github.com/yarlson/ftl/releases/latest/download/ftl_$(uname -s)_$(uname -m).tar.gz | tar xz
sudo mv ftl /usr/local/bin/

Build from Source

go install github.com/yarlson/ftl@latest

Verify Installation

After installing FTL, verify it's working correctly by checking the version:

ftl version

Configuration

Create an ftl.yaml file in your project root:

project:
  name: my-project
  domain: my-project.example.com
  email: my-project@example.com

server:
  host: my-project.example.com # Optional, defaults to project.domain
  port: 22 # Optional, defaults to 22
  user: my-project # Optional, defaults to current system user
  ssh_key: ~/.ssh/id_rsa # Optional, auto-detected from standard locations

services:
  - name: web
    path: ./src
    port: 80
    health_check:
      path: /
    routes:
      - path: /

dependencies:
  - "postgres:16" # Using short notation
  - name: redis # Using detailed definition
    image: redis:7
    volumes:
      - redis_data:/custom/redis/path
    env:
      - REDIS_PASSWORD=${REDIS_PASSWORD:-secret}

volumes:
  - redis_data

You can validate your configuration at any time using:

ftl validate

Environment Variables

  • Required variables: Use ${VAR_NAME}
  • Optional variables with defaults: Use ${VAR_NAME:-default_value}

Usage

GitHub Actions Integration

Deploy automatically using the official FTL GitHub Action:

name: Deploy

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Deploy with FTL
        uses: yarlson/ftl-deploy-action@v1
        with:
          ssh-key: ${{ secrets.SSH_PRIVATE_KEY }}
        env:
          DATABASE_URL: ${{ secrets.DATABASE_URL }}

For complete GitHub Actions documentation, see the integration guide or visit the action repository.

Configuration Validation

# Validate your ftl.yaml configuration
ftl validate

Server Setup

ftl setup

Building Applications

FTL supports two deployment modes:

  1. Direct SSH Transfer (Default):
services:
  - name: web
    path: ./src # Path to directory containing Dockerfile
  1. Registry-based Deployment:
services:
  - name: web
    image: registry.example.com/my-app:latest
    path: ./src

Build command:

ftl build [--skip-push]

Deployment

ftl deploy

Log Management

# Stream all logs
ftl logs -f

# View specific service logs
ftl logs my-app -n 150

SSH Tunnels

# Create tunnels for all dependencies
ftl tunnels

Development

# Clone repository
git clone https://github.com/yarlson/ftl.git

# Install dependencies
cd ftl
go mod download

# Run tests
go test ./...

Example Projects

Visit our ftl-examples repository for complete implementation examples:

Troubleshooting

Common Issues

  1. Configuration Validation Errors

    • Ensure all required fields are present
    • Check port numbers are valid
    • Verify file paths exist
    • Confirm environment variables are properly defined
  2. Registry Authentication Failures

    • FTL currently supports only username/password authentication
    • Token-based authentication is not supported
  3. SSH Connection Issues

    • Verify SSH key permissions
    • Ensure server firewall allows connections
    • Check user permissions on target server

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Commit your changes
  4. Push to the branch
  5. Create a Pull Request

Please ensure:

  • Code follows project style guidelines
  • All tests pass
  • Documentation is updated
  • Commit messages are clear and descriptive

Security

Report security vulnerabilities by opening an issue with the "security" label. We take all security reports seriously and will respond promptly.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

πŸš€ FTL is a powerful deployment tool that simplifies the process of setting up servers and deploying applications.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 91.6%
  • CSS 4.4%
  • TypeScript 2.6%
  • Dockerfile 1.2%
  • Shell 0.2%
0