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:
+
+[](https://render.com/deploy?repo=https://github.com/btouchard/ackify-ce)
+
+[](https://cloud.digitalocean.com/apps/new?repo=https://github.com/btouchard/ackify-ce)
+
+[](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 :
+
+[](https://render.com/deploy?repo=https://github.com/btouchard/ackify-ce)
+
+[](https://cloud.digitalocean.com/apps/new?repo=https://github.com/btouchard/ackify-ce)
+
+[](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: []