3.7 KB
infra.json
{
"platform": {
"provider": "digitalocean",
"token": "$DIGITAL_OCEAN_API_KEY",
"project": "$DIGITAL_OCEAN_PROJECT",
"region": "sfo"
},
"servers": {
"readysite-org": {
"size": "small",
"volumes": [
{
"name": "readysite-data",
"size": 25,
"mount": "/mnt/data"
},
{
"name": "readysite-sites",
"size": 50,
"mount": "/mnt/sites"
}
],
"services": [
"caddy",
"registry"
],
"binaries": [
"readysite-org"
]
},
"website": {
"size": "small",
"binaries": [
"website"
]
}
},
"services": {
"caddy": {
"image": "caddy:2-alpine",
"ports": [
{
"host": 80,
"container": 80
},
{
"host": 443,
"container": 443
}
],
"volumes": [
{
"source": "/mnt/data/caddy/data",
"target": "/data"
},
{
"source": "/mnt/data/caddy/config",
"target": "/config"
},
{
"source": "/mnt/data/caddy",
"target": "/etc/caddy"
}
],
"network": "readysite"
},
"registry": {
"image": "registry:2",
"ports": [
{
"host": 5001,
"container": 5000
}
],
"volumes": [
{
"source": "/mnt/data/registry",
"target": "/var/lib/registry"
}
],
"env": {
"REGISTRY_STORAGE_DELETE_ENABLED": "true"
},
"network": "readysite",
"healthcheck": "wget -q --spider http://localhost:5000/v2/ || exit 1"
}
},
"binaries": {
"readysite-org": {
"image": "",
"source": "./readysite.org",
"ports": [
{
"host": 8081,
"container": 5000,
"bind": "127.0.0.1"
}
],
"volumes": [
{
"source": "/mnt/data/git",
"target": "/var/git"
},
{
"source": "/mnt/data/hosting",
"target": "/data"
},
{
"source": "/usr/bin/docker",
"target": "/usr/local/bin/docker"
},
{
"source": "/var/run/docker.sock",
"target": "/var/run/docker.sock"
},
{
"source": "/mnt/data/caddy",
"target": "/caddy"
},
{
"source": "/mnt/data/hosting/ssh",
"target": "/root/.ssh"
},
{
"source": "/mnt/sites",
"target": "/sites"
}
],
"env": {
"DB_PATH": "/data/hosting.db",
"ENV": "production"
},
"env_files": {
"AUTH_SECRET": "/etc/secrets/hosting_auth_secret",
"DIGITAL_OCEAN_API_KEY": "/etc/secrets/do_api_key",
"RESEND_API_KEY": "/etc/secrets/resend_api_key",
"STRIPE_API_KEY": "/etc/secrets/stripe_api_key",
"STRIPE_WEBHOOK_SECRET": "/etc/secrets/stripe_webhook_secret",
"STRIPE_HOBBY_PRICE_ID": "/etc/secrets/stripe_hobby_price_id",
"STRIPE_PRO_PRICE_ID": "/etc/secrets/stripe_pro_price_id"
},
"network": "readysite",
"privileged": true
},
"website": {
"image": "",
"source": "./website",
"ports": [
{
"host": 5000,
"container": 5000
}
],
"env": {
"ENV": "production"
},
"network": "readysite"
}
},
"instances": {
"readysite-org": [
{
"id": "548209488",
"name": "readysite-org-1",
"ip": "143.110.145.175",
"region": "sfo3"
}
],
"website": [
{
"name": "website-2",
"ip": "134.199.239.73"
}
]
}
}