Despliega Coder en Pethost con un clic
Entornos de desarrollo remotos a partir de plantillas de Terraform, abiertos en VS Code, JetBrains, el navegador o por SSH
Qué pasa
- Inicias sesión en Pethost o creas una cuenta, con una passkey, GitHub o Google.
- ¿Aún no tienes máquina? Eliges un plan y te preparamos una. El enlace espera en tu navegador hasta que esté lista.
- Nuevo proyecto se abre en la app. Rellenas lo que pide y haces clic en Crear proyecto: Correo electrónico, Contraseña de administrador.
- 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.
- 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
Entra con el correo y la contraseña de administrador que indicaste: la plantilla crea ese owner en el primer arranque. Un workspace sale de una plantilla: elige una que lo cree en una nube donde tengas cuenta o en Kubernetes; la de Docker necesita un socket de Docker que el proyecto no tiene.
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.
services:
coder:
image: ghcr.io/coder/coder:v2.37.4
restart: unless-stopped
environment:
CODER_PG_CONNECTION_URL: postgresql://coder:${POSTGRES_PASSWORD}@database/coder?sslmode=disable
CODER_HTTP_ADDRESS: 0.0.0.0:7080
CODER_ACCESS_URL: ${URL}
CODER_TELEMETRY_ENABLE: "false"
ADMIN_EMAIL: ${ADMIN_EMAIL}
ADMIN_PASSWORD: ${ADMIN_PASSWORD}
# A new Coder lets its first visitor create the owner account. So, before it answers on its
# own port, it is started on one nobody reaches and the email and password asked become the
# owner, the first time only.
entrypoint: ["/bin/sh", "-c"]
command:
- |
CODER_HTTP_ADDRESS=127.0.0.1:3001 /opt/coder server &
setup=$$!
tries=0
until wget -q -O /dev/null http://127.0.0.1:3001/healthz; do
tries=$$((tries + 1))
[ $$tries -lt 300 ] || exit 1
sleep 1
done
if ! wget -q -O /dev/null http://127.0.0.1:3001/api/v2/users/first; then
/opt/coder login http://127.0.0.1:3001 \
--first-user-username admin --first-user-full-name Admin \
--first-user-email "$$ADMIN_EMAIL" --first-user-password "$$ADMIN_PASSWORD" \
--first-user-trial=false || exit 1
fi
kill $$setup
wait $$setup
exec /opt/coder server
depends_on:
database:
condition: service_healthy
database:
image: postgres:17-alpine
restart: unless-stopped
environment:
POSTGRES_DB: coder
POSTGRES_USER: coder
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- db:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -h 127.0.0.1 -U coder -d coder"]
interval: 5s
timeout: 5s
retries: 10
start_period: 30s
volumes:
db: