diff --git a/.do/deploy.template.yaml b/.do/deploy.template.yaml new file mode 100644 index 0000000..9175e9a --- /dev/null +++ b/.do/deploy.template.yaml @@ -0,0 +1,114 @@ +# DigitalOcean App Platform Deployment Template +# Deploy: https://cloud.digitalocean.com/apps/new?repo=https://github.com/btouchard/ackify-ce +# +# After deployment: +# 1. Configure OAuth2 credentials OR SMTP for MagicLink authentication +# 2. Set ACKIFY_BASE_URL to your DigitalOcean app URL + +spec: + name: ackify-ce + region: fra + features: + - buildpack-stack=ubuntu-22 + + services: + - name: ackify-ce + dockerfile_path: Dockerfile + github: + repo: btouchard/ackify-ce + branch: main + deploy_on_push: false + health_check: + http_path: /api/v1/health + initial_delay_seconds: 30 + period_seconds: 10 + timeout_seconds: 5 + success_threshold: 1 + failure_threshold: 3 + http_port: 8080 + instance_count: 1 + instance_size_slug: basic-xxs + envs: + # Application + - key: ACKIFY_BASE_URL + scope: RUN_TIME + value: ${APP_URL} + - key: ACKIFY_ORGANISATION + scope: RUN_TIME + value: "My Organization" + - key: ACKIFY_LOG_LEVEL + scope: RUN_TIME + value: info + - key: ACKIFY_LISTEN_ADDR + scope: RUN_TIME + value: ":8080" + + # Database connection (auto-generated from dev database) + - key: ACKIFY_DB_DSN + scope: RUN_TIME + value: ${db.DATABASE_URL} + + # Security secrets + - key: ACKIFY_OAUTH_COOKIE_SECRET + scope: RUN_TIME + type: SECRET + value: CHANGE_ME_GENERATE_WITH_OPENSSL_RAND_BASE64_32 + - key: ACKIFY_ED25519_PRIVATE_KEY + scope: RUN_TIME + type: SECRET + value: "" + + # OAuth2 Configuration (optional - configure for OAuth auth) + - key: ACKIFY_OAUTH_PROVIDER + scope: RUN_TIME + value: "" + - key: ACKIFY_OAUTH_CLIENT_ID + scope: RUN_TIME + type: SECRET + value: "" + - key: ACKIFY_OAUTH_CLIENT_SECRET + scope: RUN_TIME + type: SECRET + value: "" + - key: ACKIFY_OAUTH_ALLOWED_DOMAIN + scope: RUN_TIME + value: "" + + # Admin Configuration (optional) + - key: ACKIFY_ADMIN_EMAILS + scope: RUN_TIME + value: "" + + # Email/SMTP Configuration (optional - configure for MagicLink auth) + - key: ACKIFY_MAIL_HOST + scope: RUN_TIME + value: "" + - key: ACKIFY_MAIL_PORT + scope: RUN_TIME + value: "587" + - key: ACKIFY_MAIL_USERNAME + scope: RUN_TIME + value: "" + - key: ACKIFY_MAIL_PASSWORD + scope: RUN_TIME + type: SECRET + value: "" + - key: ACKIFY_MAIL_FROM + scope: RUN_TIME + value: "" + - key: ACKIFY_MAIL_TLS + scope: RUN_TIME + value: "true" + + # Storage Configuration (optional) + - key: ACKIFY_STORAGE_TYPE + scope: RUN_TIME + value: "" + + databases: + - name: db + engine: PG + production: false + cluster_name: ackify-db + db_name: ackify + db_user: ackify diff --git a/README.md b/README.md index 5a598e0..1410e9f 100644 --- a/README.md +++ b/README.md @@ -143,6 +143,26 @@ See [docs/en/configuration.md](docs/en/configuration.md) for all options. --- +## ☁️ One-Click Deploy + +Deploy Ackify CE in one click on your preferred cloud platform: + +[![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy?repo=https://github.com/btouchard/ackify-ce) + +[![Deploy to DO](https://www.deploytodo.com/do-btn-blue.svg)](https://cloud.digitalocean.com/apps/new?repo=https://github.com/btouchard/ackify-ce) + +[![Deploy on Elestio](https://elest.io/images/logos/deploy-to-elestio-btn.png)](https://dash.elest.io/deploy?source=cicd&social=Github&url=https://github.com/btouchard/ackify-ce) + +| Platform | PostgreSQL | Notes | +|----------|------------|-------| +| **Render** | ✅ Included | Free tier 90 days | +| **DigitalOcean** | ✅ Dev DB | App Platform PaaS | +| **Elestio** | ✅ Included | Managed hosting EU | + +> **Post-deployment**: Configure OAuth2 or SMTP (MagicLink) via the platform's environment variables. + +--- + ## 📸 Screenshots diff --git a/README_FR.md b/README_FR.md index f824ebe..d8fa5f7 100644 --- a/README_FR.md +++ b/README_FR.md @@ -143,6 +143,26 @@ Voir [docs/fr/configuration.md](docs/fr/configuration.md) pour toutes les option --- +## ☁️ Déploiement One-Click + +Déployez Ackify CE en un clic sur votre plateforme cloud préférée : + +[![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy?repo=https://github.com/btouchard/ackify-ce) + +[![Deploy to DO](https://www.deploytodo.com/do-btn-blue.svg)](https://cloud.digitalocean.com/apps/new?repo=https://github.com/btouchard/ackify-ce) + +[![Deploy on Elestio](https://elest.io/images/logos/deploy-to-elestio-btn.png)](https://dash.elest.io/deploy?source=cicd&social=Github&url=https://github.com/btouchard/ackify-ce) + +| Plateforme | PostgreSQL | Notes | +|------------|------------|-------| +| **Render** | ✅ Inclus | Free tier 90 jours | +| **DigitalOcean** | ✅ Dev DB | App Platform PaaS | +| **Elestio** | ✅ Inclus | Hébergement managé EU | + +> **Post-déploiement** : Configurez OAuth2 ou SMTP (MagicLink) via les variables d'environnement de la plateforme. + +--- + ## 📸 Screenshots
diff --git a/elestio.yml b/elestio.yml new file mode 100644 index 0000000..ba45d03 --- /dev/null +++ b/elestio.yml @@ -0,0 +1,82 @@ +# Elestio Deployment Configuration +# Deploy: https://dash.elest.io/deploy?source=cicd&social=Github&url=https://github.com/btouchard/ackify-ce +# +# After deployment: +# 1. Configure OAuth2 credentials OR SMTP for MagicLink authentication +# 2. Access your instance at the provided Elestio URL + +config: + runTime: dockerCompose + version: "1" + +ports: + - protocol: HTTPS + targetProtocol: HTTP + listeningPort: "443" + targetPort: "8080" + targetIP: 172.17.0.1 + public: true + path: / + isAuth: false + +environments: + # Application + - key: ACKIFY_BASE_URL + value: https://[CI_CD_DOMAIN] + - key: ACKIFY_ORGANISATION + value: "[ORGANISATION_NAME]" + - key: ACKIFY_LOG_LEVEL + value: info + + # Database + - key: POSTGRES_PASSWORD + value: "[ADMIN_PASSWORD]" + - key: ACKIFY_APP_PASSWORD + value: random_password + + # Security + - key: ACKIFY_OAUTH_COOKIE_SECRET + value: random_password + - key: ACKIFY_ED25519_PRIVATE_KEY + value: "" + + # Admin (optional - uses Elestio admin email) + - key: ACKIFY_ADMIN_EMAILS + value: "[ADMIN_EMAIL]" + + # OAuth2 Configuration (optional - configure for OAuth auth) + - key: ACKIFY_OAUTH_PROVIDER + value: "" + - key: ACKIFY_OAUTH_CLIENT_ID + value: "" + - key: ACKIFY_OAUTH_CLIENT_SECRET + value: "" + - key: ACKIFY_OAUTH_ALLOWED_DOMAIN + value: "" + + # Email/SMTP Configuration (optional - configure for MagicLink auth) + - key: ACKIFY_MAIL_HOST + value: "" + - key: ACKIFY_MAIL_PORT + value: "587" + - key: ACKIFY_MAIL_USERNAME + value: "" + - key: ACKIFY_MAIL_PASSWORD + value: "" + - key: ACKIFY_MAIL_FROM + value: "" + - key: ACKIFY_MAIL_TLS + value: "true" + + # Storage Configuration (optional) + - key: ACKIFY_STORAGE_TYPE + value: local + - key: ACKIFY_STORAGE_LOCAL_PATH + value: /data/documents + +lifeCycle: + postInstallCommand: | + # Wait for database to be ready + sleep 10 + echo "Ackify CE deployed successfully!" + echo "Configure OAuth2 or SMTP in the environment variables to enable authentication." diff --git a/render.yaml b/render.yaml new file mode 100644 index 0000000..63cf640 --- /dev/null +++ b/render.yaml @@ -0,0 +1,87 @@ +# Render Blueprint +# Deploy: https://render.com/deploy?repo=https://github.com/btouchard/ackify-ce +# +# After deployment: +# 1. Configure OAuth2 credentials OR SMTP for MagicLink authentication +# 2. Set ACKIFY_BASE_URL to your Render URL (e.g., https://ackify-ce.onrender.com) + +services: + - type: web + name: ackify-ce + runtime: docker + dockerfilePath: ./Dockerfile + dockerContext: . + plan: free + autoDeploy: false + healthCheckPath: /api/v1/health + envVars: + # Application + - key: ACKIFY_BASE_URL + sync: false + - key: ACKIFY_ORGANISATION + value: "My Organization" + - key: ACKIFY_LOG_LEVEL + value: info + - key: ACKIFY_LISTEN_ADDR + value: ":8080" + + # Database (auto-generated from PostgreSQL service) + - key: ACKIFY_DB_DSN + fromDatabase: + name: ackify-db + property: connectionString + + # Security secrets (must be configured manually) + - key: ACKIFY_OAUTH_COOKIE_SECRET + generateValue: true + - key: ACKIFY_ED25519_PRIVATE_KEY + sync: false + + # OAuth2 Configuration (optional - configure for OAuth auth) + - key: ACKIFY_OAUTH_PROVIDER + sync: false + - key: ACKIFY_OAUTH_CLIENT_ID + sync: false + - key: ACKIFY_OAUTH_CLIENT_SECRET + sync: false + - key: ACKIFY_OAUTH_ALLOWED_DOMAIN + sync: false + + # Admin Configuration (optional) + - key: ACKIFY_ADMIN_EMAILS + sync: false + + # Email/SMTP Configuration (optional - configure for MagicLink auth) + - key: ACKIFY_MAIL_HOST + sync: false + - key: ACKIFY_MAIL_PORT + sync: false + - key: ACKIFY_MAIL_USERNAME + sync: false + - key: ACKIFY_MAIL_PASSWORD + sync: false + - key: ACKIFY_MAIL_FROM + sync: false + - key: ACKIFY_MAIL_TLS + value: "true" + + # Storage Configuration (optional) + - key: ACKIFY_STORAGE_TYPE + sync: false + - key: ACKIFY_STORAGE_S3_ENDPOINT + sync: false + - key: ACKIFY_STORAGE_S3_BUCKET + sync: false + - key: ACKIFY_STORAGE_S3_ACCESS_KEY + sync: false + - key: ACKIFY_STORAGE_S3_SECRET_KEY + sync: false + - key: ACKIFY_STORAGE_S3_REGION + sync: false + +databases: + - name: ackify-db + plan: free + databaseName: ackify + user: ackify + ipAllowList: []