Español
Empezar
← Todas las plantillas

Despliega Sure en Pethost con un clic

Una app de finanzas personales, fork de Maybe Finance

Qué pasa

  1. Inicias sesión en Pethost o creas una cuenta, con una passkey, GitHub o Google.
  2. ¿Aún no tienes máquina? Eliges un plan y te preparamos una. El enlace espera en tu navegador hasta que esté lista.
  3. Nuevo proyecto se abre en la app, y haces clic en Crear proyecto.
  4. En un par de minutos la app está en marcha en su propia dirección con HTTPS. Sus secretos se generan al azar para ella, y sus datos entran en el backup de cada noche.
  5. Es un proyecto como cualquier otro: su compose.yaml, su .env, sus logs y un terminal están en el panel, y tu agente puede cambiarlo, volver a una versión anterior o restaurarlo.

Primeros pasos

Abre la dirección y regístrate: la primera cuenta es la del administrador. Hazlo enseguida: hasta entonces la página está abierta para cualquiera que tenga la dirección. Luego cierra el registro en Settings > Self-Hosting > Onboarding.

Qué ejecuta

La plantilla es este compose.yaml y las variables que escribe en el .env del proyecto. Pethost ejecuta el archivo tal como está escrito.

# 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: