Polski
Zacznij
← Wszystkie szablony

Wdróż aplikację Sure na Pethost jednym kliknięciem

Aplikacja do finansów osobistych, fork Maybe Finance

Co się dzieje

  1. Logujesz się do Pethost albo zakładasz konto, kluczem dostępu, przez GitHub albo Google.
  2. Nie masz jeszcze maszyny? Wybierasz plan, a my ją dla ciebie przygotowujemy. Link czeka w twojej przeglądarce, aż będzie gotowa.
  3. Okno „Nowy projekt” otwiera się na tej aplikacji, a ty klikasz „Utwórz projekt”.
  4. Za minutę czy dwie aplikacja działa pod własnym adresem z HTTPS. Jej sekrety są tworzone losowo, a dane trafiają do nocnego backupu.
  5. To projekt jak każdy inny: jego compose.yaml, .env, logi i terminal są w panelu, a twój agent może go zmienić, cofnąć do wcześniejszej wersji albo przywrócić.

Pierwsze kroki

Otwórz adres projektu i załóż konto: pierwsze konto jest administratorem. Zrób to od razu: do tego czasu strona jest otwarta dla każdego, kto zna adres. Potem zamknij rejestrację w Settings > Self-Hosting > Onboarding.

Co uruchamia

Szablon to ten compose.yaml i zmienne, które zapisuje do .env projektu. Pethost uruchamia plik dokładnie tak, jak jest napisany.

# The web server and the worker are one image with one environment.
x-app: &app
  image: ghcr.io/we-promise/sure:0.7.5-hotfix.2
  restart: unless-stopped
  environment:
    SELF_HOSTED: "true"
    # TLS ends at the machine's proxy: the app takes every request as HTTPS and redirects none.
    RAILS_FORCE_SSL: "false"
    RAILS_ASSUME_SSL: "true"
    APP_DOMAIN: ${APP_DOMAIN}
    SECRET_KEY_BASE: ${SECRET_KEY_BASE}
    DB_HOST: db
    DB_PORT: "5432"
    POSTGRES_USER: sure_user
    POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    POSTGRES_DB: sure_production
    REDIS_URL: redis://redis:6379/1
  volumes:
    - app-storage:/rails/storage
  depends_on:
    db:
      condition: service_healthy
    redis:
      condition: service_healthy

services:
  web:
    <<: *app

  worker:
    <<: *app
    command: bundle exec sidekiq

  db:
    image: postgres:16
    restart: unless-stopped
    environment:
      POSTGRES_USER: sure_user
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: sure_production
    volumes:
      - postgres-data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -h 127.0.0.1 -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
      interval: 5s
      timeout: 5s
      retries: 5
      start_period: 30s

  redis:
    image: redis:8-alpine
    restart: unless-stopped
    volumes:
      - redis-data:/data
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 5s
      timeout: 5s
      retries: 5

volumes:
  app-storage:
  postgres-data:
  redis-data: