Coolify
Learn how to self-host Shelve using Coolify
The Coolify self-host option is the easiest way to get started with Shelve. Coolify is a platform that allows you to deploy applications with a single click. To self-host the Shelve application using Coolify, follow these steps:
Copy the Coolify Docker Compose file
Add a new resource in Coolify and select the Docker Compose Empty
option.
Select your server and paste the contents of the app-compose.coolify.yml
file.
Then go to the Environment Variables
tab and add the necessary environment variables.
The only required environment variable are the OAuth client ID and secret. You can get these by creating a new OAuth application on GitHub or Google. Other variable will be automatically set by Coolify Magic Variables.
Click the Deploy
button to start the deployment process.
Once the deployment is complete, you can access the application by clicking the Link
button.
That's it! You have successfully self-hosted the Shelve application using Coolify.
docker-compose.yml
# documentation: https://docs.shelve.cloud
# slogan: Shelve - Secure environment sharing for collaborative development
# tags: environment variables, projects management, collaboration, cli, secure sharing
# port: 3000
services:
shelve_app:
image: ghcr.io/hugorcd/shelve:latest
container_name: shelve_app
restart: always
environment:
- DATABASE_URL=${DATABASE_URL:-postgres://postgres:postgres@shelve_db:5432/postgres}
- NUXT_PRIVATE_REDIS_URL=${NUXT_PRIVATE_REDIS_URL:-redis://shelve_redis:6379}
- NUXT_PRIVATE_ENCRYPTION_KEY=${SERVICE_PASSWORD_SHELVE}
- NUXT_SESSION_PASSWORD=${SERVICE_PASSWORD_SHELVE}
# OAuth configuration
- NUXT_OAUTH_GITHUB_CLIENT_ID=${NUXT_OAUTH_GITHUB_CLIENT_ID}
- NUXT_OAUTH_GITHUB_CLIENT_SECRET=${NUXT_OAUTH_GITHUB_CLIENT_SECRET}
- NUXT_OAUTH_GOOGLE_CLIENT_ID=${NUXT_OAUTH_GOOGLE_CLIENT_ID}
- NUXT_OAUTH_GOOGLE_CLIENT_SECRET=${NUXT_OAUTH_GOOGLE_CLIENT_SECRET}
# Optional
- NUXT_PRIVATE_RESEND_API_KEY=${NUXT_PRIVATE_RESEND_API_KEY}
- NUXT_PRIVATE_ADMIN_EMAILS=${NUXT_PRIVATE_ADMIN_EMAILS}
depends_on:
shelve_redis:
condition: service_healthy
shelve_db:
condition: service_healthy
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:3000/api/hello" ]
interval: 30s
timeout: 10s
retries: 3
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
deploy:
resources:
limits:
cpus: '1'
memory: 1G
reservations:
cpus: '0.5'
memory: 512M
networks:
- shelve-network
shelve_db:
container_name: shelve_db
image: postgres:17-alpine
restart: always
volumes:
- postgres:/var/lib/postgresql/data
environment:
POSTGRES_USER: ${POSTGRES_USER:-postgres}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres}
POSTGRES_DB: ${POSTGRES_DB:-postgres}
healthcheck:
test: [ "CMD", "pg_isready", "-U", "postgres" ]
interval: 30s
timeout: 10s
retries: 3
networks:
- shelve-network
shelve_redis:
container_name: shelve_redis
image: redis:7.4-alpine
restart: always
volumes:
- redis:/data
healthcheck:
test: [ "CMD", "redis-cli", "ping" ]
interval: 30s
timeout: 10s
retries: 3
networks:
- shelve-network
networks:
shelve-network:
driver: bridge
volumes:
postgres:
redis:
Ensure you have a Coolify account and a server set up before following these steps. For more information on Coolify, refer to the official Coolify documentation.
Edit this page