Português
Começar
← Todos os templates

Faça o deploy de RomM no Pethost com um clique

Uma biblioteca e um player no navegador para os seus jogos retrô

O que acontece

  1. Você entra no Pethost ou cria uma conta, com uma passkey, GitHub ou Google.
  2. Ainda não tem máquina? Você escolhe um plano, e nós preparamos uma para você. O link espera no seu navegador até ela ficar pronta.
  3. Novo projeto abre no app, e você clica em Criar projeto.
  4. Em um ou dois minutos o app está no ar no próprio endereço com HTTPS. Os segredos dele são gerados ao acaso, e os dados vão para o backup noturno.
  5. É um projeto como qualquer outro: o compose.yaml, o .env, os logs e um terminal ficam no painel, e seu agente pode alterá-lo, fazer rollback ou restaurá-lo.

Primeiros passos

Abra o endereço e passe pelo assistente de configuração: escolha suas plataformas e depois crie a conta de administrador. Faça isso logo: até lá, a página fica aberta para quem tiver o endereço. Os jogos vão em /romm/library/roms/<platform>, no serviço romm, por exemplo roms/snes: copie-os por SFTP ou envie-os pelo RomM e depois faça uma varredura. As chaves de provedores de metadados, por exemplo IGDB_CLIENT_ID e IGDB_CLIENT_SECRET, vão no .env do projeto; faça o deploy de novo depois.

O que roda

O template é este compose.yaml e as variáveis que ele grava no .env do projeto. O Pethost roda o arquivo exatamente como está escrito.

services:
  romm:
    image: rommapp/romm:5
    restart: unless-stopped
    depends_on:
      db:
        condition: service_healthy
    # Metadata services' keys (IGDB_CLIENT_ID, SCREENSCRAPER_USER, ...) go into .env.
    env_file: .env
    environment:
      ROMM_BASE_URL: ${URL}
      ROMM_AUTH_SECRET_KEY: ${ROMM_AUTH_SECRET_KEY}
      # TLS ends at the machine's proxy, which says so in X-Forwarded-Proto.
      ROMM_SESSION_SECURE_COOKIE: "true"
      DB_HOST: db
      DB_NAME: romm
      DB_USER: romm
      DB_PASSWD: ${DB_PASSWORD}
      # Matches games by their files' hashes, with no key, as RomM's own compose file does.
      HASHEOUS_API_ENABLED: "true"
      # Four API workers by default; two are plenty for a household and leave memory to the
      # machine's other projects.
      WEB_SERVER_CONCURRENCY: "2"
    # The image declares /romm a volume: the library, assets, resources and config are in it.
    volumes:
      - romm:/romm
      - redis-data:/redis-data
    # The page answers once the first start's migrations are done.
    healthcheck:
      test: ["CMD", "wget", "-q", "-O", "/dev/null", "http://127.0.0.1:8080/api/heartbeat"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 180s

  db:
    image: mariadb:11.8
    restart: unless-stopped
    environment:
      MARIADB_DATABASE: romm
      MARIADB_USER: romm
      MARIADB_PASSWORD: ${DB_PASSWORD}
      MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
    volumes:
      - db:/var/lib/mysql
    healthcheck:
      test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
      interval: 5s
      timeout: 5s
      retries: 12
      start_period: 60s

volumes:
  romm:
  redis-data:
  db: