Dlaczego Fly.io to najlepszy darmowy hosting Docker którego nie używasz

Fred· Full-Stack Developer7 min read

Platforma: Fly.io | Dostawca: Fly.io | Darmowy tier: 5$/miesiąc kredytu na zawsze

Sekret o którym nikt nie mówi

Oto co czyni Fly.io wyjątkowym: dają ci 5$ darmowego kredytu każdego miesiąca, na zawsze. To nie trial, nie oferta ograniczona czasowo - stały darmowy hosting dla twoich kontenerów Docker. Jeśli twoje użycie zostaje poniżej 5$ (spoiler: zostanie dla większości projektów), nie płacisz nic.

Co więcej? W przeciwieństwie do każdej innej platformy która twierdzi że jest "darmowa," Fly.io uruchamia twoje kontenery Docker jako prawdziwe maszyny wirtualne. To nie jest serverless gdzie twoja aplikacja idzie spać po 5 minutach. Twoje kontenery działają 24/7, odpowiadając natychmiast na żądania.

Prowadzę trzy produkcyjne API na Fly.io od ponad roku. Całkowity koszt? Zero złotych. Oto dokładnie jak to zrobić.

Co dostajesz za darmo

Ten miesięczny kredyt 5$ przekłada się na poważną infrastrukturę:

Dostajesz trzy maszyny wirtualne z 256MB RAM każda, działające gdziekolwiek na świecie. Dodaj bazę PostgreSQL z 1GB storage. Dorzuć 160GB transferu wychodzącego. Wszystko to mieści się wygodnie w darmowym limicie, z miejscem na zapas.

Matematyka jest prosta: pojedyncza maszyna 256MB kosztuje około 1.94$/miesiąc. Trzy plus mała baza lądują koło 5$. Dopóki zostajesz w tych limitach, miesięczny kredyt Fly.io pokrywa wszystko.

Rozpoczęcie zajmuje 5 minut

Najpierw zainstaluj CLI Fly. Na Mac to jedno polecenie brew. Na Linux curl ich skrypt instalacyjny. Użytkownicy Windows dostają PowerShell. Całość zajmuje 30 sekund.

# macOS
brew install flyctl

# Linux
curl -L https://fly.io/install.sh | sh

# Windows
pwsh -Command "iwr https://fly.io/install.ps1 -useb | iex"

Zarejestruj się tylko emailem - w końcu poproszą o kartę, ale możesz wdrożyć pierwsze aplikacje bez niej:

flyctl auth signup

Twój pierwszy deploy (jest absurdalnie łatwy)

Tu Fly.io błyszczy. Masz Dockerfile? Świetnie, zadziała. Nie masz? Fly.io się domyśli. Mówię serio - wykrywa framework i generuje wszystko automatycznie.

Pokażę ci prawdziwy przykład. Oto API Node.js które wdrożyłem w zeszłym tygodniu:

// index.js
const express = require('express');
const app = express();
const port = process.env.PORT || 3000;

app.get('/', (req, res) => {
  res.json({
    message: 'To API działa 24/7 za darmo',
    timestamp: new Date().toISOString()
  });
});

app.get('/health', (req, res) => {
  res.json({ status: 'healthy' });
});

app.listen(port, '0.0.0.0', () => {
  console.log(`Działa na porcie ${port}`);
});

Żeby to wdrożyć dosłownie uruchomiłem:

flyctl launch

To wszystko. Fly wykrył Node.js, utworzył Dockerfile, zbudował obraz i wdrożył go globalnie. Cały proces zajął około 2 minuty. Moje API było dostępne pod URL *.fly.dev, z automatycznym HTTPS, odpowiadając na żądania z najbliższego centrum danych.

Przewaga Docker o której nikt nie wspomina

Oto co odróżnia Fly.io od Vercel, Netlify i reszty: wdrażasz prawdziwe kontenery Docker. To znaczy że możesz uruchomić dosłownie wszystko - skrypty Python, binaria Go, serwery Rust, aplikacje PHP, Ruby on Rails, co chcesz.

Mam API Python Flask które przetwarza webhooki, bot Node.js który uruchamia zaplanowane zadania i serwis Go który obsługuje zmianę rozmiaru obrazów. Wszystko działa na darmowym tierze. Spróbuj to zrobić na hobby planie Vercel.

Twoje kontenery działają jako mikroVM Firecracker, ta sama technologia której Amazon używa do Lambda. Startują w milisekundach ale działają jak prawdziwe serwery. Bez cold startów, bez 10-sekundowych timeoutów, bez ograniczeń serverless. Po prostu twój kod działa dokładnie tak jak oczekujesz.

Jak sprawić żeby 256MB działało (jest łatwiej niż myślisz)

Darmowy tier daje ci 256MB RAM na maszynę wirtualną. Wiem co myślisz - to nic! Ale zdziwiłbyś się. Lekkie API Express.js używa około 50MB. Aplikacja Flask z kilkoma endpointami siedzi koło 80MB. Nawet mała aplikacja Rails może się zmieścić w 200MB jeśli jesteś ostrożny.

Oto co działa świetnie na 256MB:

  • Backendy API (REST lub GraphQL)
  • Procesory webhooków
  • Runnery zaplanowanych zadań
  • Statyczne strony z dynamicznymi funkcjami
  • Boty Discord/Slack
  • Małe bazy danych z SQLite

A oto co nie:

  • Next.js (potrzebuje minimum 512MB)
  • Duże aplikacje Django
  • Aplikacje Java Spring Boot
  • Cokolwiek ładujące duże datasety do pamięci

Jeśli trafisz na limity pamięci, masz dwie opcje. Pierwsza - zoptymalizuj kod - streamuj pliki zamiast ładować je do pamięci, używaj paginacji dla zapytań bazodanowych, lazy-loaduj zależności. Większość "problemów z pamięcią" to po prostu nieefektywny kod.

Druga opcja: skaluj do 512MB. To stawia cię trochę ponad darmowy tier, kosztując może 2-3$/miesiąc. Nadal taniej niż kawa i znacznie bardziej użyteczne.

PostgreSQL który po prostu działa

Dodanie bazy danych jest absurdalnie proste:

flyctl postgres create

Wybierz konfigurację "Development" gdy zostaniesz zapytany. To daje ci instancję PostgreSQL z 256MB RAM i 1GB storage, idealną dla małych aplikacji. Baza działa w tym samym regionie co aplikacja dla minimalnej latencji.

Połącz ją z aplikacją:

flyctl postgres attach <database-name>

To automatycznie ustawia zmienną środowiskową DATABASE_URL. Twoja aplikacja może się połączyć natychmiast:

const { Pool } = require('pg');
const pool = new Pool({
  connectionString: process.env.DATABASE_URL
});

// To wszystko. Masz bazę danych.

Prowadzę bloga z 500+ postami, system użytkowników z 1000+ kontami i dashboard analityczny śledzący 50k eventów - wszystko na darmowej bazie. Chyba że budujesz następnego Twittera, 1GB to mnóstwo.

Globalny zasięg bez wysiłku

Wdróż w wielu regionach jednym poleceniem:

flyctl regions add lhr  # Londyn
flyctl regions add nrt  # Tokio
flyctl regions add syd  # Sydney

Fly.io automatycznie kieruje użytkowników do najbliższej instancji. Twoi europejscy użytkownicy trafiają do Londynu, azjatyccy do Tokio, i wszystko po prostu działa. Bez konfiguracji, bez setupu CDN, nic.

Z trzema darmowymi maszynami możesz umieścić jedną w każdym regionie dla prawdziwie globalnego zasięgu. Albo trzymaj wszystkie trzy w jednym regionie dla redundancji - jeśli jedna padnie, pozostałe dalej obsługują żądania.

Haczyki (nie ma ich wiele)

Bądźmy szczerzy co do ograniczeń. Kredyt 5$ nie przenosi się z miesiąca na miesiąc. Użyj go albo stracisz. Ale szczerze mówiąc, prowadzenie trzech małych maszyn 24/7 i tak wykorzystuje pełny kredyt.

W końcu będziesz musiał dodać kartę kredytową żeby odblokować pewne funkcje jak własne domeny i zapobiec przerwaniu usługi jeśli przekroczysz limit. Ale Fly.io wysyła emaile przed jakimkolwiek obciążeniem. Bez niespodziewanych rachunków na 500$ bo zapomniałeś wyłączyć testowy serwer.

Limit 256MB RAM jest realny. Nie możesz po prostu wrzucić nieefektywnego kodu i oczekiwać cudów. Ale to ograniczenie zmusza cię do pisania lepszego kodu, a to nie jest zła rzecz.

Kiedy używać Fly.io vs reszty

Używaj Fly.io gdy chcesz prawdziwych serwerów które nigdy nie śpią. Idealny dla API, webhooków, botów i wszystkiego co musi odpowiadać natychmiast. Wsparcie Docker oznacza że możesz uruchomić dowolny język lub framework.

Używaj Vercel gdy budujesz strony Next.js i chcesz idealnego doświadczenia developerskiego. Ich preview deployments są niezrównane.

Używaj Cloudflare Workers dla edge functions które muszą działać w 50+ lokalizacjach z zerowym cold startem.

Używaj Railway gdy chcesz ładniejszego UI i nie przeszkadza ci płacenie od pierwszego dnia.

Ale dla uruchomienia prawdziwej aplikacji online, za darmo, która działa cały czas? Fly.io wygrywa za każdym razem.

Twoja kolej na deploy

Przestań czytać i spróbuj. Serio, zajmuje 5 minut:

  1. Zainstaluj CLI
  2. Utwórz prostą aplikację (albo użyj takiej którą już masz)
  3. Uruchom flyctl launch
  4. Patrz jak aplikacja idzie live

To wszystko. Bez złożonej konfiguracji, bez piekła yaml, bez niespodziewanych rachunków. Po prostu twój kod działający na prawdziwej infrastrukturze.

Zbuduj coś do wdrożenia

Gotowy wdrożyć pierwszą aplikację na Fly.io? Zacznij od budowania prawdziwego projektu z tymi praktycznymi tutorialami:

Każdy tutorial zawiera konfigurację Docker i kroki wdrożenia, ułatwiając przeniesienie projektu z developmentu na produkcję na darmowym tierze Fly.io.

Masz już aplikację Flask? Podążaj za naszym kompletnym tutorialem Docker i Fly.io dla instrukcji krok po kroku konteneryzacji aplikacji Flask z PostgreSQL i wdrożenia na Fly.io z migracjami bez przestojów.


Szczegóły techniczne

Platforma: Fly.io Miesięczny kredyt: 5$ (pokrywa 3 maszyny + bazę danych) Wdrożenie: Kontenery Docker jako mikroVM Regiony: 30+ na świecie RAM na maszynę: 256MB (możliwość upgradu) Baza danych: PostgreSQL z 1GB storage Transfer: 160GB/miesiąc wliczone

Uwaga: Będziesz potrzebować karty kredytowej po początkowym testowaniu, ale nie zostaniesz obciążony jeśli użycie zostanie poniżej 5$/miesiąc.

Fred

Fred

AUTHOR

Full-stack developer with 10+ years building production applications. I've deployed applications to every major cloud platform and lived to tell the tale.

Need a developer who gets it?

POC builds, vibe-coded fixes, and real engineering. Let's talk.

Hire Me →