diff --git a/.cursorrules b/.cursorrules new file mode 120000 index 000000000..02dd13412 --- /dev/null +++ b/.cursorrules @@ -0,0 +1 @@ +.github/copilot-instructions.md \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 000000000..a7db4b878 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,11 @@ +blank_issues_enabled: false +contact_links: + - name: ๐Ÿ’ฌ Community Discussions + url: https://github.com/CleverCloud/Community/discussions + about: Ask questions and discuss with the Clever Cloud community + - name: ๐Ÿ†˜ Technical Support + url: https://console.clever-cloud.com/ticket-center-choice + about: Get help with your Clever Cloud applications and services + - name: ๐Ÿ“ง Contact Sales & Enterprise + url: https://www.clever.cloud/contact/ + about: Contact our sales team for business inquiries and enterprise solutions diff --git a/.github/ISSUE_TEMPLATE/content-suggestion.yaml b/.github/ISSUE_TEMPLATE/content-suggestion.yaml new file mode 100644 index 000000000..f5199ec17 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/content-suggestion.yaml @@ -0,0 +1,64 @@ +name: ๐Ÿ“ Content and guide suggestion +description: Suggest new documentation content, guides +title: "Content: " +labels: ["documentation", "enhancement"] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to suggest new content for our documentation! + Your feedback helps us improve and expand our documentation. + + - type: checkboxes + id: prerequisites + attributes: + label: "Prerequisites check" + description: "Have you checked if this content already exists?" + options: + - label: I have searched existing [documentation](https://www.clever.cloud/developers/) to verify this content doesn't already exist + - label: I have checked for existing [issues](https://github.com/CleverCloud/documentation/issues) for this request + validations: + required: true + + - type: dropdown + id: content-type + attributes: + label: "Type of content requested" + description: "What type of content would you like to see?" + options: + - API + - Documentation + - Guide or tutorial + - Other + validations: + required: true + + - type: textarea + id: content-description + attributes: + label: "Content description" + description: "Describe clearly what content should be added" + placeholder: "I would like documentation about... because it would help users to..." + validations: + required: true + + - type: textarea + id: use-case + attributes: + label: "Use case and target audience" + description: "Who would benefit from this content and why?" + placeholder: "This would help developers who are trying to... / New users need this when..." + + - type: textarea + id: framework-details + attributes: + label: "Technical details (for framework guides)" + description: "If it's a framework guide: name, version, specific challenges, etc." + placeholder: "Framework: Laravel 10, challenges: queue configuration with Redis, special dependencies..." + + - type: textarea + id: additional-context + attributes: + label: "Additional context (optional)" + description: "Helpful resources, official documentation, existing examples, etc." + placeholder: "Official docs: https://... Example projects: https://..." diff --git a/.github/ISSUE_TEMPLATE/problem-report.yaml b/.github/ISSUE_TEMPLATE/problem-report.yaml new file mode 100644 index 000000000..82b5de0b4 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/problem-report.yaml @@ -0,0 +1,77 @@ +name: โš ๏ธ Report a problem +description: Report an error, technical issue, UX problem, or request clarification +title: "Issue: " +labels: ["documentation", "bug"] +body: + - type: markdown + attributes: + value: | + Thanks for helping us improve the quality of our documentation! + + **For technical support**, please use [Clever Cloud Support](https://console.clever-cloud.com/ticket-center-choice) instead. + **For general questions**, consider our [Community Discussions](https://github.com/CleverCloud/Community/discussions) first. + + - type: dropdown + id: problem-type + attributes: + label: "Type of problem" + description: "What kind of problem are you encountering?" + options: + - Clarification request (unclear or incomplete information) + - Documentation error (incorrect information, broken link, etc.) + - Technical site issue (Hugo build, shortcodes, functionality) + - UX/design problem (accessibility, navigation, responsive) + - Other problem + validations: + required: true + + - type: textarea + id: page-urls + attributes: + label: "Affected page(s)" + description: "URLs of the documentation pages with the problem (one per line)" + placeholder: | + https://www.clever.cloud/developers/... + https://www.clever.cloud/developers/... + validations: + required: true + + - type: textarea + id: problem-description + attributes: + label: "Problem description" + description: "Describe clearly the problem you encountered" + placeholder: "When I try to... / It's difficult to... / The page doesn't... / The information says... but..." + validations: + required: true + + - type: textarea + id: current-content + attributes: + label: "Current problematic content (if applicable)" + description: "Copy the exact text, code, or section that has the issue" + placeholder: "Current text that is incorrect or problematic..." + + - type: textarea + id: expected-solution + attributes: + label: "Expected solution or corrected content" + description: "How should this be fixed? What should the information say?" + placeholder: "The correct information should be... / This could be improved by... / The layout should..." + + - type: textarea + id: reproduction-steps + attributes: + label: "Steps to reproduce (if applicable)" + description: "For technical issues: how to reproduce the problem" + placeholder: | + 1. Run `hugo server` + 2. Navigate to... + 3. See error + + - type: textarea + id: additional-context + attributes: + label: "Additional context" + description: "Screenshots, error messages, browser, device, etc." + placeholder: "Browser: Chrome on mobile, console errors, screenshots, etc." diff --git a/.github/ISSUE_TEMPLATE/zzz-other.yaml b/.github/ISSUE_TEMPLATE/zzz-other.yaml new file mode 100644 index 000000000..1030139cc --- /dev/null +++ b/.github/ISSUE_TEMPLATE/zzz-other.yaml @@ -0,0 +1,40 @@ +name: โ“ Other request +description: For requests that don't fit into other categories +title: "Other: " +labels: ["documentation"] +body: + - type: markdown + attributes: + value: | + Use this template for requests that don't fit into our other categories. + + **Before using this template**, please check if your request fits better in: + - ๐Ÿ“ Content and guide suggestion (new content, framework guides) + - โš ๏ธ Report a problem (errors, bugs, UX issues, clarifications) + + - type: checkboxes + id: other-prerequisites + attributes: + label: "Prerequisites check" + description: "Have you checked the appropriate resources?" + options: + - label: I have checked that this request doesn't fit into other issue templates + - label: I have searched for existing [issues](https://github.com/CleverCloud/documentation/issues) + validations: + required: true + + - type: textarea + id: issue-description + attributes: + label: "Describe your request" + description: "Please provide a clear description of what you need" + placeholder: "I have a request for... / I would like to... / I noticed that..." + validations: + required: true + + - type: textarea + id: context-details + attributes: + label: "Additional context" + description: "Any additional information that might help us understand your request" + placeholder: "Related pages, external links, specific examples, etc." diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 000000000..839f8222b --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,294 @@ +# AI Content Creation Rules for Clever Cloud Documentation + +This document provides comprehensive guidance for AI systems on creating high-quality content for Clever Cloud's documentation platform, including technical documentation, guides, and changelog entries. + +## Development Environment + +This is a Hugo-based documentation site using the Hextra theme. + +### Hugo Development Commands +- **Build and serve locally**: `hugo server` (site available at http://localhost:1313) +- **Build for production**: `hugo` (outputs to `public/developers/`) +- **Preview with drafts**: `hugo server --buildDrafts` +- **Generate new content**: + - `hugo new content guides/.md` + - `hugo new content/doc/administrate/.md` + - `hugo new content --kind applications doc/applications/.md` +- **Update CLI reference**: `./update-cli-reference.sh` + +### Project Structure +- **Content organization**: `/content/` contains all documentation: + - `doc/` - Main documentation (applications, addons, CLI, etc.) + - `guides/` - Framework-specific tutorials and guides + - `changelog/` - Platform updates and announcements + - `api/` - API documentation + - `postmortem/` - Incident reports +- **Shared content**: `/shared/` contains reusable content blocks +- **Data files**: `/data/` contains structured data (runtime versions, tooltips, etc.) +- **Static assets**: `/static/` for images, fonts, and other assets + +### Content Management System +- Uses Hugo front matter with fields: `type`, `weight`, `linkTitle`, `description`, `excludeSearch`, `aliases`, `draft`, `tags`, `authors` +- New pages have `draft: true` by default - change to `false` to publish +- Tooltips defined in `data/tooltips.toml` and auto-display on hover +- **Quality enforcement**: + - Markdown linting via markdownlint-cli2 (config: `.markdownlintignore`, `.markdownlint.jsonc`) + - Editorial checks via Vale.sh (config: `.vale.ini`) + - Vocabulary in `.github/styles/config/vocabularies/Doc/accept.txt` + +## Content Types Overview + +### 1. Technical Documentation (`/content/doc/`) +Formal reference material for platform features, APIs, and configurations. +- **Style**: Professional, precise, instructional +- **Structure**: Hierarchical with clear sections +- **Purpose**: Enable users to accomplish specific tasks + +### 2. Guides & Tutorials (`/content/guides/`) +Step-by-step instructions for implementing specific technologies or frameworks. +- **Style**: Educational, conversational but focused +- **Structure**: Progressive steps with examples +- **Purpose**: Guide users through complete implementation + +### 3. Changelog Entries (`/content/changelog/`) +Technical blog-style posts announcing platform updates and new features. +- **Style**: Engaging, informative, personality allowed +- **Structure**: Context โ†’ announcement โ†’ practical examples โ†’ links +- **Purpose**: Inform users about platform evolution + +## Writing Style Guidelines + +### Universal Rules (All Content Types) + +#### Language Standards +- Use **second person** ("you") to address readers directly +- Write in **active voice** - avoid passive constructions +- Use **British spelling** for "organisation" not "organization" +- **Avoid first-person pronouns**: I, me, my, we, us, our, let's +- Keep sentences **short and clear** (max 25 words when possible) +- **No jargon** - explain technical terms when first introduced + +#### Prohibited Phrases +- Placeholder phrases: "please note", "at this time", "it should be noted" +- Overconfident claims: "simply", "just", "easily", "quickly", "obviously" +- Time-dependent promises: "soon", "in the future", "coming next month" +- Over-politeness: excessive use of "please" + +#### Required Elements +- **Don't assume prior knowledge** - over-explain rather than under-explain +- Address the reader's **specific use case** and context +- Provide **concrete examples** with real commands, code, or configurations +- Include **relevant links** to related documentation + +### Documentation-Specific Rules + +#### Structure Requirements +```yaml +--- +type: docs +linkTitle: Short Title +title: Full Page Title +description: SEO-friendly description explaining what users will learn +aliases: +- /old/url/path +--- +``` + +#### Content Organization +- **Overview section** - Brief explanation of what the technology/feature is +- **Create/Setup section** - How to get started +- **Configure section** - Detailed configuration options +- **Advanced features** - Optional capabilities +- **Examples and references** - Practical implementations + +#### Technical Specifications +- Always specify **current versions** of software/tools +- Include **environment variables** with exact names and examples +- Provide **command-line examples** with proper syntax +- Use **callouts for important information**: + ```markdown + > [!NOTE] Context about new features + > [!TIP] Helpful suggestions + > [!WARNING] Important considerations + ``` + +### Guide-Specific Rules + +#### Engaging Introduction +- Start with **hero subtitle shortcode** explaining the framework/tool benefits +- Use **hextra shortcodes** for enhanced presentation: + ```markdown + {{< hextra/hero-subtitle >}} + Brief engaging description of what users will build + {{< /hextra/hero-subtitle >}} + ``` + +#### Step-by-Step Structure +- Use **steps shortcode** for sequential instructions: + ```markdown + {{% steps %}} + ### Step Title + Content and commands + {{% /steps %}} + ``` + +- Include **tab groups** for different package managers/approaches: + ```markdown + {{< tabs items="npm,yarn,pnpm" >}} + {{< tab >}}Content for npm{{< /tab >}} + {{< tab >}}Content for yarn{{< /tab >}} + {{< /tabs >}} + ``` + +#### Learning Resources +- End with **cards section** linking to related documentation: + ```markdown + {{< cards >}} + {{< card link="/path" title="Title" subtitle="Description" icon="icon-name" >}} + {{< /cards >}} + ``` + +### Changelog-Specific Rules + +#### Front Matter Format +```yaml +--- +title: Descriptive title about the update/feature +description: Brief one-line summary +date: YYYY-MM-DD +tags: + - relevant-product-tags +authors: + - name: Full Name + link: https://github.com/username + image: https://github.com/username.png?size=40 +excludeSearch: true +--- +``` + +#### Writing Style for Changelog +- **More personality allowed** - can be engaging and slightly conversational +- **Lead with impact** - explain why this matters to users +- **Provide context** - link to upstream releases, related changes +- **Include practical examples** - show users exactly how to use new features +- **Multiple entries per day acceptable** - don't batch unrelated updates + +#### Content Flow Pattern +1. **Context paragraph** - What changed and why it matters +2. **Technical details** - Versions, new features, improvements +3. **Implementation examples** - Concrete commands or configuration +4. **Related links** - Documentation, examples, community resources + +#### Command Examples in Changelog +Always show **complete command sequences**: +```bash +# Enable the feature +clever features enable operators + +# Check current version +clever keycloak version check yourKeycloakNameOrId + +# Update to latest +clever keycloak version update yourKeycloakNameOrId +``` + +## Technical Implementation Standards + +### Code Examples +- **Always complete and runnable** - no placeholder variables without explanation +- **Include setup context** - show what directory, prerequisites needed +- **Use realistic names** - avoid "foo", "bar", "example" +- **Show expected output** when helpful + +### Environment Variables +- **Exact variable names** with proper casing: `CC_NODE_BUILD_TOOL` +- **Show complete examples**: + ```bash + CC_WEBROOT="public" + CC_RUN_COMMAND="npm start" + ``` +- **Explain the impact** of each variable + +### File References +- **Absolute paths** when referencing project structure +- **Relative paths** when showing user actions: `./package.json` +- **Proper syntax highlighting** for code blocks + +## Content Quality Checklist + +### Before Publishing Documentation +- [ ] All commands tested and work as shown +- [ ] Environment variables verified with exact syntax +- [ ] Links point to correct, existing pages +- [ ] Examples use realistic project names and values +- [ ] No first-person pronouns (I, we, us, our) +- [ ] Short, clear sentences under 25 words +- [ ] Proper callouts for important information + +### Before Publishing Changelog +- [ ] Clear benefit/impact stated upfront +- [ ] Version numbers and dates accurate +- [ ] Complete command examples provided +- [ ] Author information included with GitHub avatar +- [ ] Tags relevant to affected products +- [ ] Links to documentation and examples working + +### Before Publishing Guides +- [ ] Step-by-step flow tested end-to-end +- [ ] All code examples complete and functional +- [ ] Prerequisites clearly stated +- [ ] Expected outcomes explained +- [ ] Hextra shortcodes used appropriately +- [ ] Learning resources section included + +## Shared Content Usage + +### Including Reusable Blocks +- Use `{{% content "filename" %}}` for basic shared content +- Use `{{% content-raw "filename" %}}` for content containing shortcodes +- Available shared blocks in `/shared/` directory include common procedures + +### Creating New Shared Content +- Extract **commonly repeated information** into `/shared/filename.md` +- **No headings** in shared content (breaks table of contents) +- Focus on **procedural steps** rather than context + +## Maintenance and Updates + +### Keeping Content Current +- **Version numbers** should reflect current platform state +- **Screenshots and UI references** need regular updates +- **External links** should be verified periodically +- **Deprecated features** should be clearly marked + +### Community Integration +- **Link to community discussions** for new features +- **Reference GitHub examples** when available +- **Encourage feedback** on experimental features +- **Update based on user reports** and common issues + +## Deployment Configuration + +The site is configured for Clever Cloud hosting with the `static` runtime and these required environment variables: +- `CC_WEBROOT="public"` +- `CC_STATIC_AUTOBUILD_OUTDIR="public/developers"` +- `SERVER_ERROR_PAGE_404="developers/404.html"` +- Optional: `CC_HUGO_VERSION="0.152"` to specify Hugo version (example value) + +## Quality Assurance Requirements + +### Build Verification +Always test changes with the `hugo` command before committing to ensure the build is functional. Fix any build errors immediately as they prevent deployment. Verify that all links, references, image paths, and shortcode syntax work correctly in the generated output. + +### File Standards +All files must end with a single blank line to comply with git standards and POSIX requirements. + +### Content Quality Standards +Minimise the use of bullet points and lists. Use them only when essential for clarity or information efficiency. +Structure each section with 2-4 well-developed paragraphs. Avoid single text blocks or overly fragmented content. +Aim for paragraphs of 3-6 lines for optimal readability. Each paragraph should contain a complete thought or concept. +Use descriptive section titles. Titles should create useful table of contents entries. +Organise information logically so each section forms a coherent, useful unit. +Ensure all necessary information is included in readable prose, not fragmented lists. + +This document ensures consistent, high-quality content across all Clever Cloud documentation while respecting the different styles appropriate for technical docs, educational guides, and announcement posts. diff --git a/.github/external-doc-issue.yml b/.github/external-doc-issue.yml new file mode 100644 index 000000000..b22601341 --- /dev/null +++ b/.github/external-doc-issue.yml @@ -0,0 +1,18 @@ +--- +title: External doc update from PR {{ env.PR_NUMBER }} +labels: documentation +--- + +## External documentation update needed + +Update the external documentation: + +- Author: @{{ payload.sender.login }} +- PR: {{ env.PR_URL }} +- Modified files: {{ env.CHANGED_FILES }} + +Make a PR on one of these repositories: + +- [Astro](https://github.com/withastro/docs) + + diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 000000000..478f756e9 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,50 @@ +## ๐Ÿ“ What does this PR do? + +_Briefly describe your changes and why they are needed_ + + +## ๐Ÿ”— Related Issue (if applicable) + +- Closes # +- Related to # + +--- + +## ๐Ÿงช Type of Change + +- [ ] โš ๏ธ Bug fix +- [ ] ๐Ÿ“… Changelog update +- [ ] ๐Ÿ“š Documentation update +- [ ] โœจ New content/feature +- [ ] ๐Ÿ”ง Technical/maintenance + +--- + +## โœ… Quick Checklist + +- [ ] I have read the [contributing guidelines](https://github.com/CleverCloud/documentation/blob/main/CONTRIBUTING.md) +- [ ] The content is accurate and links work +- [ ] The site builds without errors + +--- + +## ๐Ÿ‘ฅ Reviewers + +@CleverCloud/reviewers + +--- + +
+๐Ÿ“‹ For major changes (click to expand) + +### Additional testing performed +_Describe any specific testing done for complex changes_ + +### Screenshots +_Add screenshots for visual/layout changes_ + +### Breaking changes +_List any breaking changes or migration notes_ + +
+ diff --git a/.github/styles/.vale-config/0-Hugo.ini b/.github/styles/.vale-config/0-Hugo.ini new file mode 100644 index 000000000..4347ca9e9 --- /dev/null +++ b/.github/styles/.vale-config/0-Hugo.ini @@ -0,0 +1,10 @@ +[*.md] +# Exclude `{{< ... >}}`, `{{% ... %}}`, [Who]({{< ... >}}) +TokenIgnores = ({{[%<] .* [%>]}}.*?{{[%<] ?/.* [%>]}}), \ +(\[.+\]\({{< .+ >}}\)), \ +[^\S\r\n]({{[%<] \w+ .+ [%>]}})\s, \ +[^\S\r\n]({{[%<](?:/\*) .* (?:\*/)[%>]}})\s + +# Exclude `{{< myshortcode `This is some HTML, ... >}}` +BlockIgnores = (?sm)^({{[%<] \w+ [^{]*?\s[%>]}})\n$, \ +(?s) *({{< highlight [^>]* ?>}}.*?{{< ?/ ?highlight >}}) diff --git a/.github/styles/Clever/ellipsis.yml b/.github/styles/Clever/ellipsis.yml new file mode 100644 index 000000000..df50ec781 --- /dev/null +++ b/.github/styles/Clever/ellipsis.yml @@ -0,0 +1,8 @@ +extends: substitution +message: "Use 'โ€ฆ' (ellipsis character) instead of '%s'" +level: warning +ignorecase: false + +# Replace three consecutive periods with proper ellipsis +swap: + '\.\.\.': 'โ€ฆ' diff --git a/.github/styles/Clever/hyphens.yml b/.github/styles/Clever/hyphens.yml new file mode 100644 index 000000000..740979078 --- /dev/null +++ b/.github/styles/Clever/hyphens.yml @@ -0,0 +1,9 @@ +extends: existence +message: "Write '%s' with hyphens when used as an adjective before a noun, but as separate words when it appears as a noun phrase or after a verb" +level: suggestion +ignorecase: true +tokens: + - 'up-to-date' + - 'up to date' + - 'end-of-life' + - 'end of life' diff --git a/.github/styles/Clever/organisation.yml b/.github/styles/Clever/organisation.yml new file mode 100644 index 000000000..08265c8dd --- /dev/null +++ b/.github/styles/Clever/organisation.yml @@ -0,0 +1,8 @@ +extends: substitution +message: "Use 'organisation' instead of 'organization'" +level: error +ignorecase: true + +swap: + organization: organisation + organizations: organisations diff --git a/.github/styles/Google/AMPM.yml b/.github/styles/Google/AMPM.yml new file mode 100644 index 000000000..37b49edf8 --- /dev/null +++ b/.github/styles/Google/AMPM.yml @@ -0,0 +1,9 @@ +extends: existence +message: "Use 'AM' or 'PM' (preceded by a space)." +link: "https://developers.google.com/style/word-list" +level: error +nonword: true +tokens: + - '\d{1,2}[AP]M\b' + - '\d{1,2} ?[ap]m\b' + - '\d{1,2} ?[aApP]\.[mM]\.' diff --git a/.github/styles/Google/Acronyms.yml b/.github/styles/Google/Acronyms.yml new file mode 100644 index 000000000..f41af0189 --- /dev/null +++ b/.github/styles/Google/Acronyms.yml @@ -0,0 +1,64 @@ +extends: conditional +message: "Spell out '%s', if it's unfamiliar to the audience." +link: 'https://developers.google.com/style/abbreviations' +level: suggestion +ignorecase: false +# Ensures that the existence of 'first' implies the existence of 'second'. +first: '\b([A-Z]{3,5})\b' +second: '(?:\b[A-Z][a-z]+ )+\(([A-Z]{3,5})\)' +# ... with the exception of these: +exceptions: + - API + - ASP + - CLI + - CPU + - CSS + - CSV + - DEBUG + - DOM + - DPI + - FAQ + - GCC + - GDB + - GET + - GPU + - GTK + - GUI + - HTML + - HTTP + - HTTPS + - IDE + - JAR + - JSON + - JSX + - LESS + - LLDB + - NET + - NOTE + - NVDA + - OSS + - PATH + - PDF + - PHP + - POST + - RAM + - REPL + - RSA + - SCM + - SCSS + - SDK + - SQL + - SSH + - SSL + - SVG + - TBD + - TCP + - TODO + - URI + - URL + - USB + - UTF + - XML + - XSS + - YAML + - ZIP diff --git a/.github/styles/Google/Colons.yml b/.github/styles/Google/Colons.yml new file mode 100644 index 000000000..4a027c307 --- /dev/null +++ b/.github/styles/Google/Colons.yml @@ -0,0 +1,8 @@ +extends: existence +message: "'%s' should be in lowercase." +link: 'https://developers.google.com/style/colons' +nonword: true +level: warning +scope: sentence +tokens: + - '(?=1.0.0" +} diff --git a/.github/styles/Google/vocab.txt b/.github/styles/Google/vocab.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/styles/Guides/ellipsis.yml b/.github/styles/Guides/ellipsis.yml new file mode 100644 index 000000000..305d64fb4 --- /dev/null +++ b/.github/styles/Guides/ellipsis.yml @@ -0,0 +1,10 @@ +extends: existence +message: "Include the framework in the title!" +nonword: true +level: error +scope: heading +action: + name: remove +tokens: + - '\[\.\.\.\]' + diff --git a/.github/styles/config/vocabularies/Doc/accept.txt b/.github/styles/config/vocabularies/Doc/accept.txt new file mode 100644 index 000000000..200ebcc50 --- /dev/null +++ b/.github/styles/config/vocabularies/Doc/accept.txt @@ -0,0 +1,114 @@ +add-on +ant +ANSI +APIs +application +app_id +Astro +Astrowind +Azimutt +Blackfire +boto +Caddy +Caddyfile +callout +CDN +CDNs +charset +checkMe +Clever Cloud +CLI +Cloud +config +Coraza +Corepack +CORS +CRDs +cron +CVE +Cyberduck +Deno +DNS +Dockerfile +downtimes +eg +EOL +ESLint +failover +Filestash +Filezilla +FPM +FrankenPHP +FSBucket +Gemfile +Glassfish +Gradle +gradle +Grafana +healthcheck +Heptapod +Hextra +hostname +Infinispan +jarName +Jboss +JSDoc +Keycloak +Kubectl +Laravel +Let's Encrypt +LLM +LLMs +Lume +LTS +Matomo +maven +Metabase +monolog +monorepo +monorepository +Moodle +namespace +namespaces +nano +nmap +npm +Nuxt +OAuth +Otoroshi +packageManager +Payara +Percona +Pgpool +pico +pnpm +proxyhugo +psql +Quarkus +rackup +rclone +Redict +redirections +RSS +runtimes +sbt +scalers +SCMs +serverless +Servlet +shortcode +Sidekiq +Symfony +syslog +Telegraf +TLS +toolchain +tooltip +tooltips +URIs +VSCode +WAF +webroot +Wildfly +yjs +Zooper diff --git a/.github/styles/config/vocabularies/Doc/reject.txt b/.github/styles/config/vocabularies/Doc/reject.txt new file mode 100644 index 000000000..2cbb58169 --- /dev/null +++ b/.github/styles/config/vocabularies/Doc/reject.txt @@ -0,0 +1,6 @@ +addon +addons +plug-in +plug-ins +e-mail +e-mails diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 000000000..007363036 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,68 @@ +name: Deploy + +on: + pull_request_target: + types: [closed, opened, reopened, synchronize] + branches: [ main ] + +concurrency: + group: deploy-${{ github.head_ref || github.ref }} + cancel-in-progress: true + +env: + DOMAIN: ${{ github.event.pull_request.base.repo.name }}-PR-${{ github.event.number }}.cleverapps.io/developers + +jobs: + review-app: + name: Review application + runs-on: ubuntu-latest + permissions: + contents: read + issues: write + pull-requests: write + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + ref: ${{ github.event.pull_request.head.sha }} + + - name: Deploy on Clever Cloud + uses: CleverCloud/clever-cloud-review-app@v2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + CLEVER_SECRET: ${{ secrets.CLEVER_SECRET }} + CLEVER_TOKEN: ${{ secrets.CLEVER_TOKEN }} + ORGA_ID: ${{ secrets.ORGA_ID }} + GH_CC_HUGO_VERSION: 0.152 + GH_CC_STATIC_AUTOBUILD_OUTDIR: public/developers + GH_CC_WEBROOT: public + GH_SERVER_ERROR_PAGE_404: developers/404.html + with: + comment: true + set-env: true + type: static + domain: ${{ env.DOMAIN }} + + check-links: + name: Check links + runs-on: ubuntu-latest + needs: review-app + if: github.event.action != 'closed' + permissions: + contents: read + + steps: + - name: Check links + run: | + pipx run linkchecker \ + --no-warnings \ + --no-status \ + --check-extern \ + --user-agent 'Mozilla/5.0 (X11; Linux i686; rv:137.0) Gecko/20100101 Firefox/137.0' \ + --ignore-url 'https://crates.io/crates' \ + --ignore-url 'https://new.drupal.org' \ + --ignore-url 'https://static-web-server.net' \ + --ignore-url 'https://www.clevercloudstatus.com' \ + 'https://${{ env.DOMAIN }}' || echo "::warning title=Broken Links::Some links are broken. Check the logs for details" diff --git a/.github/workflows/external-doc-update.yml b/.github/workflows/external-doc-update.yml new file mode 100644 index 000000000..8038ed2fe --- /dev/null +++ b/.github/workflows/external-doc-update.yml @@ -0,0 +1,67 @@ +name: Update external doc? + +on: + pull_request: + types: [opened, synchronize] + branches: [ main ] + +jobs: + changed_files: + runs-on: ubuntu-latest + name: Test changed-files + environment: update doc + # Needed to post comments and create issues + permissions: + issues: write + pull-requests: write + contents: read + steps: + - uses: actions/checkout@v4 + if: ${{ github.event.action == 'opened' || github.event.action == 'reopened' || github.event.action == 'synchronize' }} + with: + repository: ${{ github.event.pull_request.head.repo.full_name }} + ref: ${{ github.event.pull_request.head.ref }} + token: ${{ secrets.GITHUB_TOKEN }} + fetch-depth: 0 + + # Check if any external doc needs an update + - name: Get files linked to external doc + id: changed-files-specific + uses: tj-actions/changed-files@v45 + with: + files: | + content/guides/astro.md + context/guides/nuxt.md + + # Create issue and assign PR author + - name: Create issue + id: create-issue + if: steps.changed-files-specific.outputs.any_changed == 'true' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PR_URL: ${{ github.event.pull_request.html_url }} + PR_NUMBER: ${{ github.event.number }} + CHANGED_FILES: ${{ steps.changed-files-specific.outputs.all_changed_files }} + uses: JasonEtco/create-an-issue@v2 + with: + filename: .github/external-doc-issue.yml + assignees: ${{ github.event.pull_request.user.login }} + update_existing: true + search_existing: all + + # Post a single comment with auto-updating body + #- name: Create or update a comment + # env: + # CHANGED_FILES: ${{ steps.changed-files-specific.outputs.all_changed_files }} + # uses: taoliujun/action-unique-comment@v1 + # with: + # uniqueIdentifier: ${{ github.workflow }} + # body: | + # You updated ${{ env.CHANGED_FILES }}. This content is also listed on external doc. Issue number ${{ steps.create-issue.outputs.number }} has been created and assigned to you ๐Ÿซต๐Ÿ‘๏ธ๐Ÿ‘„๐Ÿ‘๏ธ + # + # See it or modify it here: + # * ${{ steps.create-issue.outputs.url }} + # + # _This unique comment uses the very cool [taoliujun/action-unique-comment](https://github.com/marketplace/actions/unique-comment). Thank you <3_ + + diff --git a/.github/workflows/styles-review.yml b/.github/workflows/styles-review.yml new file mode 100644 index 000000000..7e8a4c182 --- /dev/null +++ b/.github/workflows/styles-review.yml @@ -0,0 +1,15 @@ +name: Check editorial style +on: [pull_request] + +jobs: + vale: + name: Run Vale Linter + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: errata-ai/vale-action@reviewdog + with: + reporter: github-pr-check # How results are reported + filter_mode: added # Consider only changes in the modified or added lines + fail_on_error: false # Fail the action if errors are found + token: ${{ secrets.GITHUB_TOKEN }} # Post review diff --git a/.gitignore b/.gitignore index e43b0f988..9463fbde0 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,20 @@ +# System files +**/.DS_Store .DS_Store +Thumbs.db + +# Configuration files +.clever.json +.vale.ini + +# Build/cache files/folders +/.hugo_build.lock +/public/ +/resources/ + +# IDEs/Editors +/.idea/ +.vscode/ + +# AI Tools +.claude/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 000000000..c2c88abe7 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,7 @@ +include: + - component: $CI_SERVER_HOST/pipelines/clever-cloud-pipeline/deploy-to-prod@~latest + inputs: + stage: deploy + when: always + + diff --git a/.markdownlint.jsonc b/.markdownlint.jsonc new file mode 100644 index 000000000..22de7da50 --- /dev/null +++ b/.markdownlint.jsonc @@ -0,0 +1,16 @@ +{ + "MD041": false, + "MD013": false, + "MD051": false, + "MD029": false, + // MD033/no-inline-html : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md033.md + "MD033": { + // Allowed elements + "allowed_elements": [ + "br", + "cc-smart-container", + "cc-pricing-product", + "cite" + ] + } +} \ No newline at end of file diff --git a/.markdownlintignore b/.markdownlintignore new file mode 100644 index 000000000..ab4b6d49a --- /dev/null +++ b/.markdownlintignore @@ -0,0 +1,2 @@ +/public/* +/resources diff --git a/.vale.ini b/.vale.ini new file mode 100644 index 000000000..ebc876a2e --- /dev/null +++ b/.vale.ini @@ -0,0 +1,17 @@ +StylesPath = .github/styles + +Vocab = Doc + +MinAlertLevel = suggestion + +Packages = Hugo, Google + +[*.md] +BasedOnStyles = Clever, Vale, Google, Guides +Google.Headings = NO +Vale.Terms = NO +Google.Parens = NO +Google.Ellipses = NO + +[*.xml] +Transform = docbook-xsl-snapshot/html/docbook.xsl \ No newline at end of file diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 000000000..f017e46fb --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,123 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. Additional AI guidance is available in `.github/copilot-instructions.md` for comprehensive content creation rules. + +## Common Development Commands + +### Hugo Site Development +- **Local development**: `hugo server` - Serves site at http://localhost:1313 with live reload +- **Build for production**: `hugo` - Outputs to `public/developers/` +- **Preview drafts**: `hugo server --buildDrafts` - Include draft content in local preview +- **Update CLI reference**: `./update-cli-reference.sh` - Fetches latest clever-tools documentation + +### Content Generation +- **New guide**: `hugo new content guides/.md` +- **New documentation**: `hugo new content/doc/administrate/.md` +- **New application runtime**: `hugo new content --kind applications doc/applications/.md` + +## Project Architecture + +### Content Organization +This is a Hugo-based documentation site using the Hextra theme with the following structure: + +- **`/content/`** - All documentation content: + - `doc/` - Main technical documentation (applications, addons, CLI, administration) + - `guides/` - Framework-specific tutorials and step-by-step guides + - `changelog/` - Platform updates and feature announcements + - `api/` - API reference documentation + - `postmortem/` - Incident reports and analysis +- **`/shared/`** - Reusable content blocks included via `{{% content "filename" %}}` shortcode +- **`/data/`** - Structured data files: + - `runtime_versions.yml` - Supported runtime versions and EOL status + - `tooltips.toml` - Tooltip definitions that auto-display on hover + - `icons.yaml`, `software_versions_shared_dedicated.yml` - Additional data +- **`/static/`** - Static assets (images, fonts, favicon, etc.) +- **`/layouts/`** - Hugo templates and shortcodes for content rendering + +### Content Types and Front Matter +All content uses Hugo front matter with specific fields: +- `type: docs` - Content layout type +- `weight` - Sidebar ordering (integer) +- `linkTitle` - Short title for sidebar navigation +- `description` - SEO meta description +- `keywords` - Array of SEO keywords +- `aliases` - Array of redirect paths (relative to base URL) +- `draft: true` - Prevents publishing (change to `false` to publish) +- `excludeSearch: true` - Excludes from search index (recommended for changelog) + +For changelog entries, also include: +- `date: YYYY-MM-DD` - Publication date +- `tags` - Array of product tags (lowercase) +- `authors` - Array with `name`, `link`, `image` fields + +### Shared Content System +- Include shared content: `{{% content "filename" %}}` +- Include shared content with shortcodes: `{{% content-raw "filename" %}}` +- Shared files should not contain headings (breaks ToC generation) + +## Quality Standards + +### Content Quality Requirements +- Use second person ("you") addressing readers directly +- Write in active voice, avoid passive constructions +- Use British spelling: "organisation" not "organization" +- Keep sentences under 25 words when possible +- Provide concrete examples with real commands and configurations +- Over-explain rather than under-explain technical concepts + +### Prohibited Elements +- First-person pronouns: I, me, my, we, us, our, let's +- Placeholder phrases: "please note", "at this time", "it should be noted" +- Overconfident claims: "simply", "just", "easily", "quickly", "obviously" +- Time-dependent promises: "soon", "in the future", "coming next month" + +### Markdown and Editorial Standards +- **Markdown linting**: Uses markdownlint-cli2 with config in `.markdownlint.jsonc` +- **Editorial checks**: Uses Vale.sh for style and terminology +- **Build verification**: Always test with `hugo` command before committing +- **Structure**: Use 2-4 well-developed paragraphs per section, minimize bullet lists +- **Paragraphs**: Aim for 3-6 lines for optimal readability + +### Code and Technical Examples +- Always provide complete, runnable code examples +- Use exact environment variable names: `CC_WEBROOT`, `CC_NODE_BUILD_TOOL`, etc. +- Include setup context and expected output when helpful +- Use realistic names instead of "foo", "bar", "example" +- Show complete command sequences in changelog entries + +## Deployment Configuration +The site is configured for Clever Cloud hosting with the `static` runtime and these required environment variables: +- `CC_WEBROOT="public"` +- `CC_STATIC_AUTOBUILD_OUTDIR="public/developers"` +- `SERVER_ERROR_PAGE_404="developers/404.html"` +- Optional: `CC_HUGO_VERSION="0.152"` to specify Hugo version (example value) + +## Data Management +Runtime versions and software compatibility information is maintained in `/data/runtime_versions.yml` and should be kept current with platform capabilities. The site generates various output formats including standard HTML and a special LLMS output format at `/llms.txt` for AI consumption. + +## Hugo Shortcodes and Features + +### Content Shortcodes +- `{{% content "filename" %}}` - Include shared content from `/shared/` directory +- `{{% content-raw "filename" %}}` - Include shared content containing shortcodes +- `{{% steps %}}` - Create step-by-step instructions for guides +- `{{< tabs items="npm,yarn,pnpm" >}}` - Create tabbed content sections +- `{{< cards >}}` - Display card layouts for related resources +- `{{< callout >}}` - Create note, tip, warning callouts +- `{{< hextra/hero-subtitle >}}` - Add engaging subtitles in guides + +### Hugo Content Types +- **Documentation pages**: Use `type: docs` in front matter +- **Guides**: Use step-by-step structure with hero subtitles and cards +- **Changelog entries**: Include date, tags, and author information +- **API documentation**: Structured reference content + +### Hextra Theme Features +- **Search**: Full-text search using FlexSearch +- **Dark mode**: Automatic theme switching +- **Responsive navigation**: Sidebar and mobile-friendly menus +- **Edit links**: Direct GitHub editing integration +- **Syntax highlighting**: Code block highlighting with copy functionality + +## File Standards +All files must end with a single blank line to comply with git standards and POSIX requirements. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..71c384682 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,83 @@ + +# Contributing guidelines + +This document provides explicit standards expected in Clever Cloud documentation. Inspiration and research for this document comes from the incredible [Awesome Code Review](https://github.com/joho/awesome-code-review) project. You'll find instructions for AI tools and LLMs: + +- [AI tools and LLMs instructions](./.cursorrules) + +## Standards + +Those are general standards to fulfill for every modification in this repository. + +### ๐Ÿฏ Structure + +The structure of this docs aims to be as clear as possible for Clever Cloud users. Submitted changes can be merged as long as they respect these standards: + +- Readers know where to go or where to click to find an information +- Readers know why they're on a specific page +- The site keeps a coherent and [intuitive design](https://www.figma.com/fr/resource-library/ui-design-principles/) + +Follow the established structure in this doc. If you wish to propose changes to the structure, open an issue first to discuss it, or post it in the forum. + +### โœ’๏ธ Content + +Follow these guidelines while writing new content. The goal is to help you write in a **clear, precise, and unambiguous language**. They're not meant to be a burden, but to help you deliver the best content possible. + +Sources for quality content are currently being updated. + +#### ๐Ÿ‘ Do + +- **Don't assume the user "knows better":** if you think something is obvious, it's not. Better over-explain than under-explain. +- **Use active voice:** passive voice can make it harder for the readers to figure out who's supposed to do something. +- **Use second person:** address the reader directly. +- **Keep it simple:** avoid jargon, complex sentences, and jokes. +- **Keep it short:** keep the sentences short. Titles should be short and to the point. Keep longer content for the description metadata or the card subtitle. + +#### ๐Ÿ‘Ž Don't + +- Placeholder phrases like _please note_ and _at this time_. +- Words and phrases that make promises or project plans and strategies: See [Writing timeless documentation](https://developers.google.com/style/timeless-documentation). +- Using phrases like _simply_, _It's that simple_, _It's easy_, or _quickly_ in a procedure. +- Over-politeness with the use of _please_: go straight to the point. + +#### ๐Ÿ’ก Shortcodes + +This doc uses Hugo with [Hextra theme](https://imfing.github.io/hextra/), which provides a variety of [shortcodes](https://imfing.github.io/hextra/docs/guide/shortcodes/) to enhance it and improve its readability. +For example : + +- [Steps](https://imfing.github.io/hextra/docs/guide/shortcodes/steps/) are well suited for the `/guides/` section, or for any tutorial. +- [Callouts](https://imfing.github.io/hextra/docs/guide/shortcodes/callout/) draw attention to an important information in the page. However, don't overuse them, as too many callouts can miss their point and make the page crowded. Limit callouts to one or two per page. + +### ๐Ÿ’… Style guide + +- Don't override global styles for font type, size, or color +- Comment your code if you add any custom CSS +- When importing from an external CSS tool, import the relevant classes only rather than the whole file +- Opt for self hosting over CDN: When used in ``, it can impact site's performance. Using CDN for test purposes when submitting your PR and deploying a review app is totally fine, however. + +## ๐Ÿซถ Pull requests + +These are the guidelines when submitting or reviewing a PR in this repository. The better you follow them, the faster the is the review process. + +### ๐Ÿšจ Priority + +Priority goes to PRs that reference a problem addressed in an issue fitting the current milestone, or that fix a bug. But that doesn't mean that you can't submit or review a PR that doesn't fit those criteria if you think it's important. If you think it's important, it probably is. + +### ๐Ÿซก When submitting a PR + +- **Keep it small:** The quality of the review is inversely proportional to the size of the PR. Smaller PRs simplify the reviewing process and increase the chances of getting constructive feedback. +- **Accept the feedback:** If reviewers ask you to make changes, do it. If you disagree, explain why. If you aren't sure, ask for clarification. Don't nitpick on the feedback, and don't take it personally. + +### ๐Ÿฅธ When reviewing a PR + +- **Latency:** Long PR review latency can be disappointing for the authors, and make merge conflicts arise in their branch. Long latency kills productivity and morale, so make sure to review PRs in a timely manner. +- **Don't nitpick:** If the PR respects the preceding standards and provide updated content, don't ask for changes just for the sake of it. If you think something isn't perfect, but it's not a big deal, don't ask for changes. +- **Provide alternatives:** If you think the author needs to change something, provide an example to illustrate your point. Use the `suggestion` feature on GitHub so the author can commit it directly if they agree with it. +- **It's OK to make mistakes:** Explain what's wrong, why, and how to improve. If someone is violating a standard, refer to this doc to explain. + +## ๐Ÿ’กโ˜๏ธ Contributing as a Clever Cloud employee + +If you are a member of Clever Cloud, act like you were submitting a PR and receiving feedback in any other Open Source project. This means: + +- **Don't bring internal company debates into the PR Discussion:** If conflict arises, take it to a private channel or in-person discussion. Pair-programming is a great way to solve conflicts together, consider it. +- **Don't use authority or seniority to push your PRs:** If you are a senior, your PRs aren't more important than others. If you are a junior, your PRs aren't less important than others. No one cares who you are, just the work you've done on this PR, and the fact you are willing to contribute to this doc is already highly appreciated. diff --git a/README.md b/README.md index 529353d00..2d3a7a6f9 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,205 @@ # Clever Cloud Documentation -In this repo you will find all the content from the [Clever Cloud Doc](https://www.clever-cloud.com/doc/). +This project is based on [Hugo](https://gohugo.io/) and uses [Hextra](https://imfing.github.io/hextra/) theme. It provides a great design, a responsive layout, dark mode support, full-text search. It's lightweight, fast, and SEO-ready, with many built-in features: -As this documentation is open for content contribution, any helpful pull-request will be merged. +- [Complete Markdown support](https://imfing.github.io/hextra/docs/guide/markdown/) +- [Complete shortcodes set](https://imfing.github.io/hextra/docs/guide/shortcodes/) +- [Diagrams](https://imfing.github.io/hextra/docs/guide/diagrams/) +- [LaTeX math formulae](https://imfing.github.io/hextra/docs/guide/latex/) +- [Syntax highlighting](https://imfing.github.io/hextra/docs/guide/syntax-highlighting/) -## Example of Relevant Topics +## See deployed Documentation -1. Text of schematic content improvements -2. Grammar or orthograph improvements -3. Any revelant pieces of infos from our mail support -4. Tutorials to setup a supported technology/framework. +- [Home page](https://www.clever.cloud/developers/) +- [Documentation](https://www.clever.cloud/developers/doc/) +- [API Documentation](https://www.clever.cloud/developers/api/) +- [Guides and Tutorials](https://www.clever.cloud/developers/guides/) +- [Reference Clever Tools CLI](https://www.clever.cloud/developers/doc/reference/cli/) +- [Reference Environment Variables](https://www.clever.cloud/developers/doc/reference/reference-environment-variables/) +- [Clever Cloud Platform Changelog](https://www.clever.cloud/developers/changelog/) -## Contributing Process +## Quickstart -You can either make a [pull-request](https://github.com/CleverCloud/doc.clever-cloud.com/pulls) OR submit a content via the **Contribute** button here: https://www.clever-cloud.com/doc +### Install Hugo -## Licence +To begin your journey with the Clever Cloud Documentation, you need Hugo. You can: +- [Install it](https://gohugo.io/installation/) globally on your system +- Get its [binary](https://github.com/gohugoio/hugo/releases) and put it in the project's root -Clever Cloud Doc by Clever Cloud is licensed under a Creative Commons Attribution 4.0 International License. -Based on a work at [https://www.clever-cloud.com/doc](https://www.clever-cloud.com/doc/). +### Clone the project, preview locally -Creative Commons License \ No newline at end of file +Once your system is set up, clone this repository: + +```bash +git clone https://github.com/CleverCloud/documentation +``` + +Then: + +1. Go to the documentation folder: `cd documentation` +2. Run `hugo server` to build and start the local server + +Local site is available on , it refreshes as you modify the files, you can keep the server running with no need to restart. +Find `server` command options in the [Hugo documentation](https://gohugo.io/commands/hugo_server/#options). + +## Deploying on Clever Cloud + +The site is configured for Clever Cloud hosting with the `static` runtime and these required environment variables: + +```bash +# Declare what's the web server root, where to build the documentation +# You must have a `/developers` at the end of your application's route +CC_WEBROOT="public" +CC_STATIC_AUTOBUILD_OUTDIR="public/developers" + +# Declare the location of the 404 custom page +SERVER_ERROR_PAGE_404="developers/404.html" +``` + +> [!TIP] +> You can set the Hugo version with `CC_HUGO_VERSION` with a value like `0.152` + +## Contributing + +You can contribute by [creating an issue](https://github.com/CleverCloud/documentation/issues) or [submitting a pull request](https://github.com/CleverCloud/documentation/pulls). If you use AI tools or LLMs, you'll find specific instructions for them: + +- [AI tools and LLMs instructions](./.github/copilot-instructions.md) +- [Claude Code guidance](./CLAUDE.md) +- [Contributing guidelines](./CONTRIBUTING.md) + +Clever Cloud documentation is also available following the [llms.txt specification](https://www.clever.cloud/developers/llms.txt). + +## Adding a new page or guide + +To generates a file from a template (in `/archetypes`), run one of the following Hugo commands: + +```bash +hugo new content guides/.md +hugo new content/doc/administrate/.md +hugo new content --kind applications doc/applications/.md +``` + +In new page/guide front matter, `draft` is set to `true` to prevent it from being mistakenly published. + +> [!TIP] +> Use `hugo server --buildDrafts` command to preview drafts locally + +### Adding a changelog entry (internal only) + +For any significant change to the platform (updates, new features, etc.) a new entry is created in the `content/changelog` folder. + +Several entries can be made per day, it's not a problem. Each entry should provide clear, straightforward information on the essentials. If you find yourself writing an enormous amount of content, this may not be the right approach. However, you can always add a little charm to your changelog, but it's a tricky business, requiring careful, well-placed word choice. + +The filename format is a markdown file with a `.md` extension: + +``` +yyyy-mm-dd-your-title.md +``` + +### Front matter configuration + +Hugo uses front matter to enrich posts with metadata. Front matter allows you to keep metadata attached to an instance of a content typeโ€”i.e., embedded inside a content file. We use the following Front matter variables: + +- [`type`](https://gohugo.io/methods/page/type/) (optional) + - The type of content layout to apply. The value is a ``, set it to `docs` except in changelog. + +- [`weight`](https://gohugo.io/methods/page/weight/) (optional) + - The weight of the content, used to order the sidebar. The value is an ``, default is `0`. + +- [`linkTitle`](https://gohugo.io/methods/page/linktitle/) (optional) + - The title of the content displayed in the sidebar. The value is a ``, default is the `title` value. + +- [`title`](https://gohugo.io/methods/page/title/) (required) + - The title displayed in the main heading. The value is a ``. + +- [`description`](https://gohugo.io/methods/page/description/) (recommended) + - The description displayed in meta-description for SEO purposes. The value is a ``. + +- [`excludeSearch`](https://imfing.github.io/hextra/docs/guide/configuration/#search-index) (optional) + - Indicates whether the page should be indexed in search. Default is `false`, we recommend setting it to `true` for changelog entries. + +- [`aliases`](https://gohugo.io/methods/page/aliases) (optional) + - Aliases redirects the user to the right page. The value is a list of ``, each string being a path to redirect from, relative to the base URL (without the `/developer`, for example: `/doc/docker`). + +- [`comments`](https://gohugo.io/content-management/comments/) (optional) + - Whether to show the feedback block or not. The value is a ``, default is `true`. + +- [`draft`](https://gohugo.io/methods/page/draft/) (optional) + - Whether the page is a draft or not. The value is a ``, default is `false`. If set to `true`, the page is not built except if you use the `--buildDrafts` flag. + +- [`keywords`](https://gohugo.io/content-management/front-matter/#keywords) (optional) + - Keywords are used for SEO purposes. The value is a list of ``, each string being a keyword. + +- [`tags`](https://gohugo.io/content-management/front-matter/#taxonomies) (recommended) + - Tags are recommended only in Changelog for easy product identification. They are written in lowercase and, if possible, use the same spelling throughout the posts. The value is a list of ``. + +- [`authors`](https://gohugo.io/content-management/front-matter/#taxonomies) (mostly used in changelog) + - Can be set to showcase the people behind the product. Authors are defined with a `name`, `link` for their Github or any other social network, and an `image` for the profile picture. The profile picture can be set with the GitHub avatar with a link like `https://github.com/BlackYoup.png` and the parameter `?size=40` for reducing the image size (recommended for performance). The values are all of `` type. + +- [`date`](https://gohugo.io/methods/page/date/) (mostly used in changelog) + - The date that will be displayed in the post. The value is a string in ISO 8601 like `yyyy-mm-dd`. + +For example, a changelog entry front matter could look like this: + +```yaml +--- +title: Redis updated to v7.2.4 +description: Redis has been updated to v7.2.4 mostly to prevent security issues +date: 2024-01-11 +tags: + - redis +authors: + - name: BlackYoup + link: https://github.com/BlackYoup + image: https://github.com/BlackYoup.png?size=40 +excludeSearch: true +--- +``` + +### Adding an image + +Adding an image can be useful to highlight an interface change, for example. Use such markdown syntax for that: + +```markdown +![Alt text](/images/your-image.jpg "Title of the image") +``` + +If needed, you can also use [the `figure` shortcode](https://gohugo.io/shortcodes/figure/) to add attributes such as a width limit: + +```markdown +{{< figure src="/developers/images/your-image.jpg" alt="Alt text" title="Title of the image" width="800px">}} +``` + +- [Learn more about Hugo shortcodes](https://gohugo.io/shortcodes/) + +### Adding a new shared content + +You can include shared content in several pages. To use this feature: + +1. Create a new markdown file in `/shared` +2. Add it to the relevant pages with: `{{% content "your-partial" %}}` + +> [!TIP] +> If you need to include a shared content including shortcodes, use `{{% content-raw "your-partial" %}}` instead. Don't include headings (starting with `#`) in it as they won't be rendered in the page Table of Contents (ToC). + +## Tooltips + +Tooltips are useful to provide additional information on terms or acronyms that may not be familiar to all readers. They help improve the accessibility and comprehension of your documentation without cluttering the main text. + +To create a tooltip, add the term and its associated tooltip definition in the [`data/tooltips.toml`](./data/tooltips.toml) file. Once defined, tooltips automatically display when users hover over associated terms in the documentation. + +## Markdown Linting + +Hugo uses [Goldmark](https://github.com/yuin/goldmark), a Markdown parser written in Go, compliant with [CommonMark 0.30](https://spec.commonmark.org/). Therefore, for better readability and maintainability, all markdown files for this project are linted with [markdownlint-cli2](https://github.com/DavidAnson/markdownlint-cli2). We strongly recommend that you follow the validation rules described [here](https://github.com/DavidAnson/markdownlint#rules--aliases). + +This linter can be downloaded and run locally, or used via Visual Studio Code: + +- for Visual Studio Code +- as a `npm` package + +**Ignored markdown files** are listed in the `.markdownlintignore`. +**Ignored specifications**, such as some HTML tag of Web Components, are configured in the `.markdownlint.jsonc` + +## Editorial checks + +This project uses [Vale.sh](https://vale.sh) to run editorial checks on the documentation. Install Vale on your machine or as an IDE extension if you want to run checks. This project is already configured to use it on pull requests. diff --git a/archetypes/applications.md b/archetypes/applications.md new file mode 100644 index 000000000..edaf1e36e --- /dev/null +++ b/archetypes/applications.md @@ -0,0 +1,48 @@ +--- +type: docs +title: '{{ replace .File.ContentBaseName "-" " " | title }}' +linkTitle: +description: +keywords: +draft: true +--- + +## Overview + +## Create your XXX application + +To create a new XXX application, use the [Clever Cloud Console](https://console.clever-cloud.com) or [Clever Tools](https://github.com/CleverCloud/clever-tools): + +```bash +clever create --type XXX +``` +* [Learn more about Clever Tools](/doc/cli/) +* [Learn more about Clever Cloud application deployment](/doc/quickstart/#create-an-application-step-by-step) + +## Configure your XXX application + +### Mandatory needs + +XXX runtime only requires a working application listening on `0.0.0.0:8080`. + +* [Learn more about environment variables on Clever Cloud](/doc/reference/reference-environment-variables/) + +### Build phase + +During the build phase, + +- [Learn more about Deployment hooks](/doc/develop/build-hooks/) + +### XXX version + + + +## Clever Tasks + + +```bash +clever create --type XXX --task "XXX" +clever deploy # or clever restart if there is no code change +``` + +- [Learn more about Clever Tasks](/doc/develop/tasks/) diff --git a/archetypes/default.md b/archetypes/default.md new file mode 100644 index 000000000..2cee817ec --- /dev/null +++ b/archetypes/default.md @@ -0,0 +1,13 @@ +--- +type: docs +title: '{{ replace .File.ContentBaseName "-" " " | title }}' +linkTitle: +description: +tags: +keywords: +draft: true +--- + +{{< hextra/hero-subtitle >}} + Page short description. +{{< /hextra/hero-subtitle >}} diff --git a/archetypes/guides.md b/archetypes/guides.md new file mode 100644 index 000000000..9cc1ecef5 --- /dev/null +++ b/archetypes/guides.md @@ -0,0 +1,31 @@ +--- +type: docs +title: '{{ replace .File.ContentBaseName "-" " " | title }}' +linkTitle: +description: +tags: +- guides +keywords: +- +draft: true +--- + +{{< hextra/hero-subtitle >}} + Framework short description. +{{< /hextra/hero-subtitle >}} + +## How to Configure and Deploy [...] on Clever Cloud + +{{% steps %}} + +### + +### + +{{% /steps %}} + +## ๐ŸŽ“ Further Help + +{{< cards >}} + {{< card link="/developers/guides/" title="Card title" subtitle="Card subtiltle" icon="adjustments-horizontal" >}} +{{< /cards >}} \ No newline at end of file diff --git a/assets/css/custom.css b/assets/css/custom.css new file mode 100644 index 000000000..f9a9d0ae0 --- /dev/null +++ b/assets/css/custom.css @@ -0,0 +1,696 @@ +/* ----------------------------------------------- + This code is overriding default theme + configuration and classes +-------------------------------------------------*/ + +/* ----------------------------------------- + Fonts and typography +------------------------------------------*/ +@font-face { + font-family: 'Plus Jakarta Sans'; + font-weight: 700; + src: url('/developers/fonts/plus-jakarta-sans-v8-latin-700.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ + url('/developers/fonts/plus-jakarta-sans-v8-latin-700.ttf') format('truetype'); /* Chrome 4+, Firefox 3.5+, IE 9+, Safari 3.1+, iOS 4.2+, Android Browser 2.2+ */ +} + +:root { + --red-color: rgb(203, 28, 66); + --blue-color: rgb(0, 172, 230); + --purple-color: rgb(58, 56, 113); + --dark-background-color: rgba(227, 210, 210, 0); + --hx-tracking-tighter: +0.005em; +} + +h1, .content h1, +.content h2, +.content h3, +.content h3 { + font-family: 'Plus Jakarta Sans', sans-serif; +} + +.highlight .chroma .err { + color: var(--red-color); + background-color: var(--dark-background-color); +} + +html:not([class~="dark"]) .sidebar-active-item { + background-color: rgb(224, 227, 255) !important; + color: rgb(0, 14, 163) !important; +} + +/* Override border-radius class to fit Clever's theme */ +.btn-secondary, +.btn-primary, +.chroma .lntable, +.content img, +.hx\:rounded-xl, +.hx\:rounded-3xl { + border-radius: 0rem; +} + +/* ----------------------------- + Shortcodes +----------------------------- */ + +/* Hero buttons on home page */ +.btn-primary { + background-color: var(--purple-color); + text-decoration: none; +} + +.btn-primary:hover, .btn-secondary:hover { + background-color: var(--red-color); + color: white; +} + +/* Steps +Allow inserting "steps" shortcode with h4 */ +.steps h4 { + counter-increment: step; +} + +.steps h4:before,.steps h3:before { + position: absolute; + height: 33px; + width: 33px; + border-width: 4px; + --tw-border-opacity: 1; + border-radius: 9999px; + border-color: var(--purple-color); + background-color: var(--purple-color); + text-align: center; + font-size: 1rem; + font-weight:700; + --tw-text-opacity: 1; + color: white; + margin-top: -1px; + margin-left: -41px; + content: counter(step); + } + + .steps h3:before{ + margin-top:2px + } + +.steps h4,.steps h3{ + font-family: inherit; +} + +:is(html[class~="dark"] .steps h4):before,:is(html[class~="dark"] .steps h3):before { + --tw-border-opacity: 1; + border-color: rgb(38 38 38 / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(38 38 38 / var(--tw-bg-opacity)); +} + +/* -------------- + Links +--------------- */ + +/* Custom link color. +This will be applied also to code (except in tables): +selectors in css can't be grained to target Markdown syntax +(for now) */ +html[class~="dark"] .content p a, +html[class~="dark"] article .content p a, +html[class~="dark"] article .content div a:not(.hextra-feature-card) , +html[class~="dark"] article .content li a { + color: var(--blue-color); + text-decoration-style: dotted; +} + +html[class~="dark"] button[data-state="selected"], +html[class~="dark"] .sidebar-active-item { + color: var(--blue-color) !important; +} + +article .content a:hover:not(.hextra-feature-card), +article main h4 a:hover { + color: var(--red-color) !important; + text-decoration-style: dotted; +} + +/* Don't change the style for an inline code within a link +Mostly used in environment variables table */ +.content a:has(code){ + text-decoration: none; + color: inherit; +} + +/* Display an arrow at the end of the linked inline code */ +.content a:not(.code-block code) code::after { + content: "\00a0โ†—"; + color: tomato; + font-size: 1rem; + bottom: -2px; + position: relative; + left: 4px; + width: 14px; + display: inline-block; + height: 14px; + line-height: 0.35em; +} + +/* --------------- + Tables +--------------- */ + +/* Table headers formatting */ +.content table:not(.code-block table) th { + border-right-width: 0px; + border-left-width: 0px; + border-top: none; + text-transform: uppercase; + color: rgba(115, 115, 142, 1); +} + +/* Table headers formatting for dark mode */ +html[class~="dark"] .content table:not(.code-block table) th { + color: rgb(193, 193, 196); +} + +/* Remove most of the borders */ +.content table:not(.code-block table) td { + margin: 0px; + border-width: 0px; + --tw-border-opacity: 0; +} + +/* Text in cells */ +.content table:not(.code-block table) tr { + font-size: 0.9rem; + border-width: 0px; +} + +/* Zebra striping for table rows */ +.content table:not(.code-block table) tbody tr:nth-child(even) { + background-color: rgb(243, 244, 246); /* Gray-100 */ +} + +.content table:not(.code-block table) tbody tr:nth-child(odd) { + background-color: transparent; +} + +/* Dark mode zebra striping */ +html[class~="dark"] .content table:not(.code-block table) tbody tr:nth-child(even) { + background-color: rgba(75, 85, 99, 0.2); /* Gray-600 with 20% opacity */ +} + +html[class~="dark"] .content table:not(.code-block table) tbody tr:nth-child(odd) { + background-color: transparent; +} + +/* --------------------------------------- + Animation for 404 page +--------------------------------------- */ +.animate__headShake { + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + -webkit-animation-name: headShake; + animation-name:headShake +} +.animate__animated { + -webkit-animation-duration: 1s; + animation-duration: 1s; + -webkit-animation-duration: 1s; + animation-duration: 1s; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; +} + +@keyframes headShake { + 0% { + -webkit-transform: translateX(0); + transform:translateX(0) + } + + 6.5% { + -webkit-transform: translateX(-6px) rotateY(-9deg); + transform:translateX(-6px) rotateY(-9deg) + } + + 18.5% { + -webkit-transform: translateX(5px) rotateY(7deg); + transform:translateX(5px) rotateY(7deg) + } + + 31.5% { + -webkit-transform: translateX(-3px) rotateY(-5deg); + transform:translateX(-3px) rotateY(-5deg) + } + + 43.5% { + -webkit-transform: translateX(2px) rotateY(3deg); + transform:translateX(2px) rotateY(3deg) + } + + 50% { + -webkit-transform: translateX(0); + transform:translateX(0) + } +} + +/* ------------------------- + Changelog +------------------------- */ + +/* Entries listing--*/ +.hx\:pl-5 { + padding-left: 1.25rem; +} + +/* ------------------------- + OpenAPI / Swagger UI +------------------------- */ + +#swagger-ui { + height: calc(100vh - var(--navbar-height)); + min-height: 600px; + width: 100%; + } + + /* Dark theme adaptations for Swagger UI */ + html[class~="dark"] .swagger-ui { + color: rgb(209 213 219); + } + + html[class~="dark"] .swagger-ui .info .title { + color: rgb(243 244 246); + } + + html[class~="dark"] .swagger-ui .info .description, + html[class~="dark"] .swagger-ui .info .description p { + color: rgb(209 213 219); + } + + html[class~="dark"] .swagger-ui .opblock .opblock-summary-description, + html[class~="dark"] .swagger-ui .opblock .opblock-summary-path, + html[class~="dark"] .swagger-ui .opblock-description-wrapper p { + color: rgb(209 213 219); + } + + html[class~="dark"] .swagger-ui .opblock-tag { + color: rgb(243 244 246); + border-bottom: 1px solid rgb(75 85 99); + } + + html[class~="dark"] .swagger-ui .parameter__name { + color: rgb(243 244 246); + } + + html[class~="dark"] .swagger-ui .parameter__type { + color: rgb(156 163 175); + } + + html[class~="dark"] .swagger-ui table thead tr td, + html[class~="dark"] .swagger-ui table thead tr th { + color: rgb(243 244 246); + border-bottom: 1px solid rgb(75 85 99); + } + + html[class~="dark"] .swagger-ui .model-title { + color: rgb(243 244 246); + } + + html[class~="dark"] .swagger-ui .prop-type { + color: rgb(156 163 175); + } + + html[class~="dark"] .swagger-ui .prop-name { + color: rgb(209 213 219); + } + + html[class~="dark"] .swagger-ui .response-col_status { + color: rgb(243 244 246); + } + + html[class~="dark"] .swagger-ui .response-col_description { + color: rgb(209 213 219); + } + + html[class~="dark"] .swagger-ui .renderedMarkdown p { + color: rgb(209 213 219); + } + + html[class~="dark"] .swagger-ui .markdown p, + html[class~="dark"] .swagger-ui .markdown pre { + color: rgb(209 213 219); + } + + html[class~="dark"] .swagger-ui .model .property { + color: rgb(209 213 219); + } + + html[class~="dark"] .swagger-ui .model .property-row { + border-bottom: 1px solid rgb(75 85 99); + } + + html[class~="dark"] .swagger-ui textarea { + background-color: rgb(31 41 55); + color: rgb(209 213 219); + border: 1px solid rgb(75 85 99); + } + + html[class~="dark"] .swagger-ui input[type=text], + html[class~="dark"] .swagger-ui input[type=password], + html[class~="dark"] .swagger-ui input[type=search], + html[class~="dark"] .swagger-ui input[type=email], + html[class~="dark"] .swagger-ui input[type=url] { + background-color: rgb(31 41 55); + color: rgb(209 213 219); + border: 1px solid rgb(75 85 99); + } + + /* Additional comprehensive dark theme styles */ + html[class~="dark"] .swagger-ui .opblock .opblock-summary { + color: rgb(243 244 246); + border-bottom: 1px solid rgb(75 85 99); + } + + html[class~="dark"] .swagger-ui .opblock .opblock-summary .opblock-summary-method { + background: rgb(55 65 81); + color: rgb(243 244 246); + } + + html[class~="dark"] .swagger-ui .opblock.opblock-get .opblock-summary-method { + background: rgb(34 197 94); + } + + html[class~="dark"] .swagger-ui .opblock.opblock-post .opblock-summary-method { + background: rgb(59 130 246); + } + + html[class~="dark"] .swagger-ui .opblock.opblock-put .opblock-summary-method { + background: rgb(245 158 11); + } + + html[class~="dark"] .swagger-ui .opblock.opblock-delete .opblock-summary-method { + background: rgb(239 68 68); + } + + html[class~="dark"] .swagger-ui .opblock.opblock-patch .opblock-summary-method { + background: rgb(168 85 247); + } + + html[class~="dark"] .swagger-ui .opblock .opblock-summary-path__deprecated { + color: rgb(156 163 175); + text-decoration: line-through; + } + + html[class~="dark"] .swagger-ui .opblock-body { + background: rgb(17 24 39); + } + + html[class~="dark"] .swagger-ui .opblock-description-wrapper p, + html[class~="dark"] .swagger-ui .opblock-external-docs-wrapper p { + color: rgb(209 213 219); + } + + html[class~="dark"] .swagger-ui .parameters-container { + background: rgb(31 41 55); + border: 1px solid rgb(75 85 99); + } + + html[class~="dark"] .swagger-ui .parameter-item { + border-bottom: 1px solid rgb(75 85 99); + } + + html[class~="dark"] .swagger-ui .parameter-item .parameter-item-content { + background: transparent; + } + + html[class~="dark"] .swagger-ui .responses-wrapper { + background: rgb(31 41 55); + border: 1px solid rgb(75 85 99); + } + + html[class~="dark"] .swagger-ui .response-col_status, + html[class~="dark"] .swagger-ui .response-col_description { + color: rgb(209 213 219); + } + + html[class~="dark"] .swagger-ui .response { + border-bottom: 1px solid rgb(75 85 99); + } + + html[class~="dark"] .swagger-ui .btn { + background: rgb(55 65 81); + color: rgb(243 244 246); + border: 1px solid rgb(75 85 99); + } + + html[class~="dark"] .swagger-ui .btn:hover { + background: rgb(75 85 99); + } + + html[class~="dark"] .swagger-ui .btn.authorize { + background: rgb(59 130 246); + border-color: rgb(59 130 246); + } + + html[class~="dark"] .swagger-ui .btn.authorize:hover { + background: rgb(37 99 235); + } + + html[class~="dark"] .swagger-ui .btn.execute { + background: rgb(34 197 94); + border-color: rgb(34 197 94); + } + + html[class~="dark"] .swagger-ui .btn.execute:hover { + background: rgb(22 163 74); + } + + html[class~="dark"] .swagger-ui .btn.cancel { + background: rgb(239 68 68); + border-color: rgb(239 68 68); + } + + html[class~="dark"] .swagger-ui .btn.cancel:hover { + background: rgb(220 38 38); + } + + html[class~="dark"] .swagger-ui select { + background: rgb(31 41 55); + color: rgb(209 213 219); + border: 1px solid rgb(75 85 99); + } + + html[class~="dark"] .swagger-ui .curl-command { + background: rgb(17 24 39); + color: rgb(209 213 219); + border: 1px solid rgb(75 85 99); + } + + html[class~="dark"] .swagger-ui .copy-to-clipboard { + background: rgb(55 65 81); + color: rgb(243 244 246); + } + + html[class~="dark"] .swagger-ui .copy-to-clipboard:hover { + background: rgb(75 85 99); + } + + html[class~="dark"] .swagger-ui .model-box { + background: rgb(31 41 55); + border: 1px solid rgb(75 85 99); + } + + html[class~="dark"] .swagger-ui .model-toggle { + color: rgb(209 213 219); + } + + html[class~="dark"] .swagger-ui .model-toggle:hover { + color: rgb(243 244 246); + } + + html[class~="dark"] .swagger-ui .model-jump-to-path { + color: rgb(59 130 246); + } + + html[class~="dark"] .swagger-ui .model-jump-to-path:hover { + color: rgb(37 99 235); + } + + html[class~="dark"] .swagger-ui .auth-wrapper { + background: rgb(31 41 55); + border: 1px solid rgb(75 85 99); + } + + html[class~="dark"] .swagger-ui .auth-container .auth-wrapper h4 { + color: rgb(243 244 246); + } + + html[class~="dark"] .swagger-ui .auth-container .auth-wrapper .auth-btn-wrapper { + background: transparent; + } + + html[class~="dark"] .swagger-ui .scheme-container .schemes > label { + color: rgb(209 213 219); + } + + html[class~="dark"] .swagger-ui .loading-container .loading::after { + color: rgb(209 213 219); + } + + html[class~="dark"] .swagger-ui .topbar .download-url-wrapper input[type=text] { + background: rgb(31 41 55); + color: rgb(209 213 219); + border: 1px solid rgb(75 85 99); + } + + html[class~="dark"] .swagger-ui .topbar .download-url-wrapper .download-url-button { + background: rgb(55 65 81); + color: rgb(243 244 246); + } + + /* Servers section */ + html[class~="dark"] .swagger-ui .servers > label { + color: rgb(243 244 246); + } + + html[class~="dark"] .swagger-ui .servers > .servers-title { + color: rgb(243 244 246); + } + + html[class~="dark"] .swagger-ui .servers .server-url { + background: rgb(31 41 55); + color: rgb(209 213 219); + border: 1px solid rgb(75 85 99); + } + + html[class~="dark"] .swagger-ui .servers .server-description { + color: rgb(156 163 175); + } + + /* Filter input */ + html[class~="dark"] .swagger-ui .filter-container { + background: rgb(31 41 55); + border-top: 1px solid rgb(75 85 99); + } + + html[class~="dark"] .swagger-ui .filter .operation-filter-input { + background: rgb(17 24 39); + color: rgb(209 213 219); + border: 1px solid rgb(75 85 99); + } + + html[class~="dark"] .swagger-ui .filter .operation-filter-input:focus { + border-color: rgb(59 130 246); + box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2); + } + + html[class~="dark"] .swagger-ui .filter .operation-filter-input::placeholder { + color: rgb(107 114 128); + } + + /* Additional missing elements */ + html[class~="dark"] .swagger-ui .errors-wrapper { + background: rgb(127 29 29); + border: 1px solid rgb(185 28 28); + color: rgb(254 226 226); + } + + html[class~="dark"] .swagger-ui .errors-wrapper .error-wrapper { + background: transparent; + } + + html[class~="dark"] .swagger-ui .global-server-container { + background: rgb(31 41 55); + border: 1px solid rgb(75 85 99); + } + + html[class~="dark"] .swagger-ui .global-server-container .servers-title { + color: rgb(243 244 246); + } + + html[class~="dark"] .swagger-ui .info .base-url { + color: rgb(156 163 175); + } + + html[class~="dark"] .swagger-ui .scheme-container { + background: rgb(31 41 55); + border: 1px solid rgb(75 85 99); + } + + html[class~="dark"] .swagger-ui .scheme-container .schemes-title { + color: rgb(243 244 246); + } + + html[class~="dark"] .swagger-ui .scheme-container select { + background: rgb(17 24 39); + color: rgb(209 213 219); + border: 1px solid rgb(75 85 99); + } + + /* JSON/XML response content */ + html[class~="dark"] .swagger-ui .highlight-code { + background: rgb(17 24 39); + color: rgb(209 213 219); + border: 1px solid rgb(75 85 99); + } + + html[class~="dark"] .swagger-ui .highlight-code .hljs { + background: rgb(17 24 39); + color: rgb(209 213 219); + } + + /* Arrows and expand/collapse icons */ + html[class~="dark"] .swagger-ui .opblock-summary .opblock-summary-control { + color: rgb(209 213 219); + } + + html[class~="dark"] .swagger-ui .opblock-summary .opblock-summary-control svg { + fill: rgb(209 213 219); + } + + html[class~="dark"] .swagger-ui .expand-operation svg, + html[class~="dark"] .swagger-ui .collapse-operation svg { + fill: rgb(209 213 219); + } + + html[class~="dark"] .swagger-ui .model-toggle::after { + color: rgb(209 213 219); + } + + html[class~="dark"] .swagger-ui .model-box-control { + color: rgb(209 213 219); + } + + html[class~="dark"] .swagger-ui .model-box-control svg { + fill: rgb(209 213 219); + } + + html[class~="dark"] .swagger-ui .prop-toggle { + color: rgb(209 213 219); + } + + html[class~="dark"] .swagger-ui .prop-toggle svg { + fill: rgb(209 213 219); + } + + /* Arrow for dropdowns - remove multiple arrows */ + html[class~="dark"] .swagger-ui select { + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23D1D5DB' d='m8 10.293 3.146-3.147.708.708L8 11.707 4.146 7.854l.708-.708L8 10.293z'/%3E%3C/svg%3E") !important; + background-repeat: no-repeat !important; + background-position: right 16px center !important; + background-size: 14px 14px !important; + padding-right: 40px !important; + } + + /* Caret icons in various places */ + html[class~="dark"] .swagger-ui .btn svg, + html[class~="dark"] .swagger-ui button svg { + fill: currentColor; + } + + /* Parameter expand/collapse arrows */ + html[class~="dark"] .swagger-ui .parameters-container .parameter-item .parameter-item-header .parameter-item-toggle svg { + fill: rgb(209 213 219); + } + + /* Response expand/collapse arrows */ + html[class~="dark"] .swagger-ui .responses-wrapper .response-header .response-toggle svg { + fill: rgb(209 213 219); + } + \ No newline at end of file diff --git a/commons/addons/cellar.md b/commons/addons/cellar.md deleted file mode 100644 index c8dd7174f..000000000 --- a/commons/addons/cellar.md +++ /dev/null @@ -1,98 +0,0 @@ ---- -title: Cellar add-on -position: 3 -shortdesc: Cellar is a Amazon S3-compatible file storage system created and hosted by Clever Cloud. -tags: -- addons -keywords: -- S3 -- amazon -- Storage -- file -- files ---- - -# Cellar: a S3-like object storage service - -Cellar is S3-compatible online file storage web service. You can use it with -your favorite S3 client. - -To manually manage the files, you can use [s3cmd](http://s3tools.org/s3cmd). -You can download a s3cmd configuration file from the add-on configuration -page. - -## Clever Cloud Cellar plans - - - - - - - - - - - - - - - - - - - - - - -
Cellar storage plans
StoragePrice / GB / moPrice / TB / mo
First 1 TBโ‚ฌ 0.02โ‚ฌ 20.48
Till 25 TB0.015โ‚ฌ15.36โ‚ฌ
Till 50 TB0.01โ‚ฌ10.24โ‚ฌ
- - - - - - - - - - - - - - - - - -
Cellar trafic usage plans
Traffic (outbound)Price / GB / moPrice / TB / mo
till 10TB 0.09โ‚ฌ92.16โ‚ฌ
Till 40 TB0.07โ‚ฌ71.68โ‚ฌ
- -## Creating a bucket - -In Cellar, files are stored in buckets. When you create a Cellar addon, no -bucket is created yet. - -To create a bucket, you can use s3cmd: - -```bash - s3cmd mb s3://bucket-name -``` -You can list files - -```bash - s3cmd ls s3://bucket-name -``` - -You can upload files (`--acl-public` makes the file readable by everyone). - -```bash - s3cmd put --acl-public image.jpg s3://bucket-name -``` - -
-
-

S3 signature algorithm

-
-
- Cellar doesn't support the `v4` signature algorithm from S3. Please make sure - your client is configured to use the `v2` signature algorithm. The - s3cmd configuration file provided on the add-on configuration page already has it. -
-
\ No newline at end of file diff --git a/commons/addons/clever-cloud-addons.md b/commons/addons/clever-cloud-addons.md deleted file mode 100644 index 3ecbb11ee..000000000 --- a/commons/addons/clever-cloud-addons.md +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: Clever Cloud Add-ons -position: 2 -shortdesc: 'This article introduces the add-ons: a way to add services to your application on Clever Cloud.' -tags: -- addons -keywords: -- addons -- addon ---- - -# Introduction to Add-ons - -Add-ons are a way to add services to your application, for example a database or a caching system, to enrich its -features. - -An add-on can be shared by different applications to share data between them. It can be a database shared by two or -three applications of your infrastructure for example, or they can be independent. - -The add-ons offer different plan to adapt to your needs. You can find details about them on the documentation page of -the add-on. - -## Available add-ons - -Clever Cloud provides multiple add-ons to work with your applications: - -* [MySQL](/doc/addons/mysql) -* [PostgreSQL](/doc/addons/postgresql) -* [MongoDB](/doc/addons/mongodb) -* [FS buckets](/doc/addons/fs_buckets) -* [Cellar](/doc/addons/cellar) -* [Redis](/doc/addons/redis) -* [Redsmin](/doc/addons/redsmin) - -## Create an add-on for your application - -In order to create an add-on for your application, go to the [Clever Cloud Console](https://console.clever-cloud.com/). -When you are in the main page of the console, go to the organisation in which you wan to create the add-on, -for example your [personal space](https://console.clever-cloud.com/users/me). - -When you are in the organisation, click on **Add an add-on**. This space let you create and configure the -add-on to follow your needs. - -First, choose which *type* of add-on you want to create. See above to have a list of available add-ons and the -corresponding pages for a description and information. - -Now, select the plan you need for you add-on. You can find details about the pricing, the capacity of the add-on, ... -on this page or in the corresponding documentation page. - -The third step offers you to choose with which application you want to link you add-on. Linking an add-on to an -application will provide configuration to the application through [environment variables](/admin-console/environment-variables). -This environment variables must be used in your application to, for example, provide the credentials and the -localization of the database provided by the add-on. - -The last step lets you choose the name of the add-on (for example "My database") and the region where the add-on is -hosted. Click on the **Create** button and the add-on will now be available in your organisation, and corresponding -environment variables will be available for the applications linked to the add-on you just created. - -## Managing your add-on - -Once an add-on is created, two tabs are available: - -* the Information tab -* the Configuration tab - - -### Link an add-on to your application - -To link an add-on with your application, just follow the following steps: - -1. Go in the organisation of your application and click on the name of the application you want to link with your add-on. -2. Go in the **Add-ons** section. -3. Click on the **Link** button of the add-on you want to link to your application. - - -### Information screen - -This screen sums-up the characteristics of the selected add-on. -Features and environment variables (if applicable) are shown. - -
- - - -
- Example of the information tab of an add-on -
-
- - -### Configuration screen - -Add-ons can be managed from the Configuration tab. -This screen is managed directly by the provider of the add-on. - -
- - - -
- Example of the configuration tab of an add-on -
-
- - -## Delete an add-on - -To delete an add-on, go to the *Configuration* page of the add-on, and click on *Remove add-on*. -Warning: After deletion of the add-on, all associated data will be removed. diff --git a/commons/addons/fs_buckets.md b/commons/addons/fs_buckets.md deleted file mode 100644 index 17d5312da..000000000 --- a/commons/addons/fs_buckets.md +++ /dev/null @@ -1,164 +0,0 @@ ---- -title: FS Buckets add-on -title: FS Buckets add-on -position: 4 -shortdesc: This add-on allows applications to use a persistent file system, as git-based apps don't have one. -tags: -- addons -keywords: -- nfs -- file system -- buckets -- fs buckets ---- - -# FS Buckets: file system with persistence - -When you deploy an application on any PaaS, a new virtual machine is created, the previous one is deleted. -If your application generates data, for example if you let users upload pictures and you do not store it on external -services like S3, you will loose anything stored on the disk. - -The Git deployment does not allow you to keep generated data files between deployments. To avoid the loss of your data, -you have to mount a persistent filesystem. This is why we created File System Buckets. - -You will be able to retrieve generated data between two deployments. - -## FS Buckets plans - - - - - - - - - - - - - - - - - - - - -
FS Buckets pricing plans
NameDiskMountsPrice /Go
DEV100 MBUNLIMITEDFree
SUNLIMITEDUNLIMITED1.50โ‚ฌ
- -## Configuring your application - -To configure your application to use buckets, use the -`clevercloud/buckets.json` file. - -The `clevercloud` folder must be located at the root of your application. - -The `buckets.json` file must contain the following structure: - -```javascript -[ - { - "bucket" : "bucketId", - "folder" : "/myFolder", - "apps" : ["app_id"] - - }, - { - "bucket_host" : "bucket-c65762b6-4086-4c99-84b0-23eb85695809-fsbucket.services.clever-cloud.com", - "folder" : "/myotherFolder", - "apps" : ["app_id_2"] - } -] -``` - -
-
-

Getting a pre-filled conf file.

-
-
- You can find a pre-filled json object to copy in the dashboard of your FSBucket add-on, in the "Dashboard configuration" tab -
-
- -It's a json array containing objects with at least two fields: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
UsageFieldDescription
RequiredbucketThe bucket id you can find in the console. It begins with `bucket_`. This is for -"old-style" buckets (created before the 7 december 2015)
Requiredbucket_hostThe bucket host you can find in the console. It begins with `bucket-` and ends with -`services.clever-cloud.com`. This is for "new-style" buckets.
RequiredfolderThe folder you want the bucket to be mount in. Should start with `/`. Using the example -*myFolder*, you can access your bucket via the *myFolder* folder at -the root of your application or via */app/myFolder*
OptionalappsWhitelist of the applications allowed to mount this bucket. It's helpful if you need -to deploy a *preprod* app and a *prod* app using the exact same codebase but different -buckets
- -
-
-

Important note about target folder

-
-
-

- The folder must not exist in your repository (or it needs to be empty). Otherwise, the mount of your bucket will be ignored. -

-

- You can mount the same bucket in different folders, but they will share the same - content, so it's not the solution. You should prefer to mount the bucket in only one - folder and then manage multiple subfolders in it. -

-
-
- -
-
-

Important notes

-
-
-

- You cannot mount two buckets in the same folder for the same app. -

-

- If you put the same "folder" value for two entries in the *buckets.json* array, **you better - make sure** that the "apps" fields make the two buckets mutually exclusive upon deployment! -

-
-
- -## Accessing your data inside the FS Bucket - -### From the addon dashboard - -The "File explorer" tab of the addon dashboard gives you access to your files -in the FS bucket. - -### From your favourite FTP client - -The "Addon information" tab of your FS Bucket add-on displays the information -you need to connect to your bucket using FTP. diff --git a/commons/addons/mongodb.md b/commons/addons/mongodb.md deleted file mode 100644 index 43cbf9d95..000000000 --- a/commons/addons/mongodb.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: MongoDB add-on -position: 5 -shortdesc: MongoDB is a noSQL and document-oriented database, operated by Clever Cloud. -tags: -- addons -keywords: -- mongo -- mongodb -- document -- nosql -- database ---- - -# MongoDB - -MongoDB is an open source NoSQL document-oriented database. - -## MongoDB plans - - - - - - - - - - - - - - - - - - - - - - - - - - -
MongoDB pricing plans
NameDiskCache (Memory)Price /mo
S500 MBSHAREDFree
SM30 GB2 GB75.00โ‚ฌ
M100 GB4 GB150.00โ‚ฌ
diff --git a/commons/addons/mysql.md b/commons/addons/mysql.md deleted file mode 100644 index b5a5e5d25..000000000 --- a/commons/addons/mysql.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: MySQL add-on -position: 6 -shortdesc: MySQL is an open-source relational database management system (RDBMS). -tags: -- addons -keywords: -- sql -- mysql -- mariadb -- RDBMS ---- - -# MySQL - -MySQL is an open-source relational database management system (RDBMS). - -## MySQL plans - -
-
-

Note for Shared databases

-
-
- As Shared databases (DEV and S plans) are shared between multiple applications and delays could appear in case of - an high demand.
- If this delays create problems in your application or are problematcs, we recommend you to use a dedicated database - (M plans and above). -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MySQL pricing plans
NameCache (Memory)DiskConn. limitPrice /mo
DEVSHARED10 MB5Free
SSHARED256 MB1015ย โ‚ฌ
M1 GB10 GB7545 โ‚ฌ
L2 GB200 GB500300 โ‚ฌ
- -### Migrating from an old database - -Some applications require a populated database to run properly. -If you want to import your **SQL** dump, you can use several methods: - -1. [Our WebGUI (PHP My Admin)](https://dbms-pma.clever-cloud.com/). -2. Command line tool for MySQL administration. -3. Any MySQL client such as [MySQL Workbench](https://www.mysql.fr/products/workbench/). - -If you need to import a very large dump, please send an email to . diff --git a/commons/addons/postgresql.md b/commons/addons/postgresql.md deleted file mode 100644 index 391a7f132..000000000 --- a/commons/addons/postgresql.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: PostgreSQL add-on -position: 7 -shortdesc: PostgreSQL is an open-source relational database management system (RDBMS). -tags: -- addons -keywords: -- sql -- postgresql -- pg -- pgsql -- mariadb ---- - -# PostgreSQL - -PostgreSQL is an object-relational database management system (ORDBMS) with an emphasis on extensibility -and on standards-compliance. - -## PostgreSQL version - -The version currently installed by the add-on is : - -- on shared plans (DEV and S) : PostgreSQL 9.2.8 -- on newly created dedicated databases (plans M and above) : Postgresql 9.3.4 - -Note that PostgreSQL 9.4 branch (or 9.5 branch when the final version will be released) will be rolled out as soon as possible on the dedicated databases plans. - -## PostgreSQL plans - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PostgreSQL pricing plans
NameMemoryDB sizeConn. limitPrice /mo
DEVSHARED256 MB5Free
SSHARED1 GB1010ย โ‚ฌ
M1 GB100 GB7530 โ‚ฌ
L8 GB450 GB500240 โ‚ฌ
XL32 GB600 GB1000700 โ‚ฌ
- -## Migrating from an old database - -Some applications require a populated database to run properly. -If you want to import your **SQL** dump, you can use several methods: - -1. [Our WebGUI (Adminer)](https://dbms-adminer.clever-cloud.com/adminer/). -2. Command line tool for PostgreSQL administration like `psql`. -3. Any PostgreSQL client such as [pgAdmin](http://www.pgadmin.org/). diff --git a/commons/addons/redis.md b/commons/addons/redis.md deleted file mode 100644 index 60956f292..000000000 --- a/commons/addons/redis.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: Redis add-on -position: 8 -shortdesc: Redis is an open source, in-memory data structure store, used as database, cache and message broker. -tags: -- addons -keywords: -- key -- value -- key value -- key-value -- in-memory ---- - -# Redis - -Redis is an open source, in-memory data structure store, used as database, cache and message broker. - -## Redis plans - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Redis pricing plans
NameDATABASESDiskConn. limitPrice /mo
DEV10010 MB10Free
S100100 MB1008,67 โ‚ฌ
M100250 MB25013,34 โ‚ฌ
L100500 MB50043,38 โ‚ฌ
XL100100 MB50078,08 โ‚ฌ
XXL1002500 MB500190,71 โ‚ฌ
diff --git a/commons/addons/redsmin.md b/commons/addons/redsmin.md deleted file mode 100644 index 7496f32c5..000000000 --- a/commons/addons/redsmin.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: Redsmin add-on -position: 9 -shortdesc: Redsmin is a GUI to help developers monitor their Redis systems. -tags: -- addons -keywords: -- redis -- redsmin -- key-value -- dashboard ---- - -# Redsmin - -
-
-

Redis + Redsmin

-
-
- Clever Cloud now provides a Redis add-on, that comes with Redsmin.
- Read [this blog post](https://www.clever-cloud.com/blog/features/2015/08/26/introducing-redis-by-clever-cloud/) to - know more about it. -
-
- -Redsmin is a GUI to help developers monitor their Redis systems. - -## Redsmin plans - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Redsmin pricing plans
NameConn. Redis InstancesServeursPrice /mo
DEV110,00 โ‚ฌ
S115,99 โ‚ฌ
Medium2219,99 โ‚ฌ
Large3324,00 โ‚ฌ
XL4429,99 โ‚ฌ
diff --git a/commons/admin-console/analytics-consumption.md b/commons/admin-console/analytics-consumption.md deleted file mode 100644 index 1ffa43c46..000000000 --- a/commons/admin-console/analytics-consumption.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Analytics and consumption -position: 6 -shortdesc: Redis is an open source, in-memory data structure store, used as database, cache and message broker. -tags: -- billing -keywords: -- billing -- consumption ---- - -# Analytics and consumption - -You only pay what you consume. It means that every 10 minutes, we check your applications consumption and affect it to your credits account. - -The following charts on the dashboard main page presents daily credits consumption: - -
-
diff --git a/commons/admin-console/apps-management.md b/commons/admin-console/apps-management.md deleted file mode 100644 index 8fa51c3ad..000000000 --- a/commons/admin-console/apps-management.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Apps Management -position: 7 -shortdesc: Starting, stopping and loggins for application -tags: -- dashboard-setup -keywords: -- stop -- deploy -- restart -- logs ---- - -# Managing Application Lifecycle and Informations - -## Start, restart and stop - -You can start, restart, and stop your application in the associated configuration panel. - -Stop functionality is usefull during the development of the application to limits its credit consumption. - -
- -
-
Manage your application
- -## Edit and delete - -You can edit your application in the information panel. You can rename, change region, delete and change some properties. - -
- -
-
Edit your application
- -## Logs - -The Clever Cloud dashboard gives you the ability to retrieve your application logs. - -To get them, just click on *Logs* in the left navbar. diff --git a/commons/admin-console/authentification.md b/commons/admin-console/authentification.md deleted file mode 100644 index 525c06762..000000000 --- a/commons/admin-console/authentification.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Authentication -position: 1 -shortdesc: How to be authenticated on Clever Cloud -tags: -- account-setup -keywords: -- auth -- authentication -- github ---- - -# Authentication On Clever Cloud - -The API of Clever Cloud uses oAuth 2 to perform authentication actions. This is the same for signup an login. -There is two ways to signup to Clever Cloud: email or GitHub login. - - -## Email Authentication - -This kind of auth requires a valid and non-temporary disposable e-mail, and a password having at least 6 characters. - -## Github Authentication - -The GitHub signup allow you to create an account, or link your existing one to GitHub, in one click. -This process ask the following permsissions:ย  - -* Read your Public Key -* Read User Repositories - -The "repository permission" is used to deploy your GitHub apps directly to Clever Cloud, with a simple step. \ No newline at end of file diff --git a/commons/admin-console/custom-domain-names.md b/commons/admin-console/custom-domain-names.md deleted file mode 100644 index cec0127f0..000000000 --- a/commons/admin-console/custom-domain-names.md +++ /dev/null @@ -1,131 +0,0 @@ ---- -title: Custom domain names -position: 3 -shortdesc: How to setup and configure domains names for your apps -tags: -- dashboard-setup -- developer -keywords: -- DNS -- domain -- URL ---- - -# Managing Domain Names - -When creating an application, you have two (non exclusive) choices for domain names: - -* Using a personal domain name -* Using a ***.cleverapps.io** free domain, with built-in SSL - -## Linking your Domain Name to your Application - -You can link one or several domain names in the console. - -Add it in the application configuration: in the console, click on your **application name** in the first panel, then choose **domainย names**. You'll have to choose to add a custom domain name or use a sub-domain under ``*.cleverapps.io`` - -There is a default entry configured by default for every new app: ``yourAppID.cleverapps.io``. -In your application's domain section, just enter ``example.cleverapps.io``. You have to choose a unique one. Trusted SSL is available on every sub-domains. - -If you need to configure a custom domain name, see the steps below. - -## Personal Domain Names - -### Your Application Runs in the Europe/Paris ('PAR') Zone - - - - - - - - - - - - - - -
Record Type
Value
CNAME
Recommended
``domain.par.clever-cloud.com``
A
Only if CNAME is not available
Two records on ``62.210.112.171`` and ``62.210.92.244``
- - -### Your Application Runs in the North-America/Montreal ('MTL') Zone - - - - - - - - - - - - - - -
Record Type
Value
CNAME
Recommended
``domain.mtl.clever-cloud.com``
A
Only if CNAME is not available
Two records on ``68.71.34.21`` and ``68.71.34.20``
- - -
- -You can point your domain name to clever cloud either with a CNAME record or with A records. **The use of a CNAME record is highly recommended.** With a CNAME record, your DNS configuration is always up-to-date. Using A records will require you to keep the DNS configuration up-to-date manually. Domain names linked to clever cloud applications are monitored, so we will send you an email if your DNS configuration is obsolete or incorrect. - - -
-
-

Warning on CNAME Availability

-
-
- You cannot use a CNAME on a top-level domain, or on a subdomain which already has DNS records. -
-
- -If you want to make your application available from a domain name which does not support CNAME records (eg example.com in addition to ``www.example.com``), check if your registrar provides a web redirection service. This way, you only have to make ``www.example.com`` point to Clever Cloud. Please note that web redirection provided by registrars only work over HTTP. - -Remember that DNS changes may take time to propagate (usually a few hours, sometimes up to a day or more). It depends on the TTL setting of your DNS configuration. For faster changes, you can lower the TTL value in advance, and rise it again afterwards. - -Before changing your domain name configuration, you can lower the TTL of your domain name one day before the migration (like 3min). Any changes on your DNS configuration will be applied faster. Then, when everything is configured properly, you can put the default TTL value. - - -
-
-

Note on using a domain wildcard

-
-
-
- ``*.example.com`` will match e.g. ``blog.example.com`` or ``www.example.com``. -
-
But for the raw domain ``example.com``, you will have to add both ``*.example.com`` and example.com to your application.
-
-
-
-### Contextual Example - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Domain Name Use Case CNAME config record A config Web redirections
``www.example.com``
``example.com``
point ``www.example.com`` to ``domain.par/mtl.clever-cloud.com.``No A record neededRedirect ``example.com`` to ``www.example.com``
``www.example.com`` point ``www.example.com`` to ``domain.par/mtl.clever-cloud.com.``No A record neededNo redirect needed
``example.com``No CNAME record neededpoint ``example.com`` to the two IP adresses of the selected regionNo redirect needed
\ No newline at end of file diff --git a/commons/admin-console/environment-variables.md b/commons/admin-console/environment-variables.md deleted file mode 100644 index 9f4ef1a2a..000000000 --- a/commons/admin-console/environment-variables.md +++ /dev/null @@ -1,121 +0,0 @@ ---- -title: Environment variables -position: 8 -shortdesc: How to setup and configure environnement variables for apps and add-ons -tags: -- dashboard-setup -- developer -keywords: -- env -- variables -- environment variables ---- -## Configuring Environment variables - -Clever Cloud allows you to define environment variables that will be -injected in your application's environment. - -### How variables are defined? - -Variables are defined on a per-application basis. They are defined by three ways: - - * By provisionned add-ons linked to applications. The variables names - are listed in the add-on's information panel - - * By adding variables yourself in the "Environment variables" panel of - your application. - - * Some special environment variables are added automatically for each application. - -Please note that if you define or modify environment variables, you will -need to redeploy you application to make it use the variables. - -### Special environment variables - -Some variables are injected to the environment of your application when you deploy it, -to inform you about the current context of your application and about the application itself. - -They can be accessed as classics environment variables and can be used in your application to -give you information about the current context of the application. - - * `APP_ID` : the ID of the application. Each application has a unique identifier used to - identify it in our system. This ID is the same than the one you can find in the information - section of your application. - - * `INSTANCE_ID` : the ID of the current instance of your application. It's unique for each - instance of your application and change every time you deploy it. - - * `COMMIT_ID` : the commit ID used as a base to deploy your application. As we remove - the `.git` directory before the deployment (to avoid security problems), it can be used - to know which version of your application is running on the server. - - * `APP_HOME` : The absolute path of your application on the server. Can be used to - create absolute link in you application (ex : ${APP_HOME}/foo/bar). - - * `INSTANCE_NUMBER` - -#### What is the `INSTANCE_NUMBER` variable used for? - -This variable allows your application to differentiate each running node on the applicative level. - -It will contain a different number for each instance of your application. - -For example, if three instances are running, it will contain `0` for the first, `1` -for the second and `2` for the third. - -### Variable definition constraints - -For the second way, please note that *spaces are not allowed* in the -name of the variables. - -As written in the previous section: please note that if you define or modify -environment variables, you will need to redeploy you application to make it use the variables. - -### How do I use these variables? - -Depending on the type of your application, you will need to use -different ways. You can find the various ways in the specific instances -documentations. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
languageuse case
Node.js process.env["MY_VAR"]
Java WAR System.getProperties().getProperty("MY_VAR")
Play! Framework 1 -& Play! Framework 2System.getenv("MY\_VAR") or \${MY_VAR} in application.conf
Scala System.getenv("MY\_VAR")
PHPgetenv("MY_VAR")
Pythonos.getenv("MY_VAR")
Rubyenv[โ€œmy_varโ€]
- -Please note that the variables are available at build-time, for -runtimes that support build-time instructions, such as -Java WAR, -Play! Framework 1, -Play! Framework 2 -or Scala. diff --git a/commons/admin-console/invoices-payments.md b/commons/admin-console/invoices-payments.md deleted file mode 100644 index ad455f512..000000000 --- a/commons/admin-console/invoices-payments.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Payments & invoicing -position: 5 -shortdesc: Managing invoices and payment on Clever Cloud -tags: -- billing -keywords: -- invoices -- tax -- pricing ---- -# Payments & invoicing - -## Make a payment - -From the *Credit Manager* section, there are three alternatives to buy credit for your applications: - -* Credit card -* Paypal -* Bank transfer: we accept international bank transfers. Send an email to if you want to use it. This method is usefull to make automatic payments. - - -## Invoices - -Invoices are available in the *Invoices* tab of the *Credits Manager* section. It lists all the payments made. - -## Change Billing Information - -* for personal account: available in *Profile > Informations* - -* for organization: available in *Configuration > Informations and Advanced Configuration* - -
- -
Organization information
-
diff --git a/commons/admin-console/organizations.md b/commons/admin-console/organizations.md deleted file mode 100644 index 8265d54a0..000000000 --- a/commons/admin-console/organizations.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Roles and Organizations -position: 4 -shortdesc: Managing users and roles in organizations -tags: -- dashboard-setup -keyworkds: -- roles -- users -- accounts -- organisations -- organizations -- collaboration ---- -# Organizations - -In order to improve team collaboration between developers, accountants, managers and admins, we have introduced organizations. - -Once you create an organization, you can add collaborators and assign them [roles](#roles-and-privileges) which give them rights. - - -## Add an organization - -Organization names are uniques. It means that you cannot use an organization name that is already used. - -In order to add an organization, just click on "Add an organization" in the top left dropdown menu: - -
- -
-Access to your organizations via the red sidebar -
-
- - -
- -
-An organization can represent an enterprise, for an easier invoicing process -
-
- - -## Roles and privileges - -The table below describes rights assigned to roles: - -
- -
- Rights assigned by role -
-
diff --git a/commons/admin-console/ssh-keys.md b/commons/admin-console/ssh-keys.md deleted file mode 100644 index 5ac79306b..000000000 --- a/commons/admin-console/ssh-keys.md +++ /dev/null @@ -1,125 +0,0 @@ ---- -title: SSH Keys -position: 2 -shortdesc: Add and manage SSH keys for push and deployments -tags: -- account-setup -keywords: -- git -- deploy -- deployment -- push -- ssh -- sshkeys ---- - -# SSH keys - -SSH keys are used to establish a secure connection between your computer and Clever Cloud. -You need to add a SSH key to your Clever Cloud's account to deploy via Git. -A user can have multiple SSH keys. - -
-

Warning:

-

A SSH key can be used with only one account.ย A SSH key is used to identify the actions made by a user and must be -associated with only one account.
-If a key is used by more than one account, a warning will be displayed in the console.

-
- -How to add your SSH key on Clever Cloud? - -### Github account and SSH key on Clever Cloud - -If your account is linked to GitHub, a new panel with your GitHub SSH key will appear in the "SSH Key" menu. -So you can add every key via a simple click and you don't have to add it manually. - -## Find your SSH key - -You can already have an SSH key and so do not need to generate a new one. To check if you have one, follow the steps: - -### Linux and Mac - -1. Wether you use Mac or Linux, open your Terminal application. -2. Run `$ cd ~/.ssh/` in your Terminal. -3. If the folder exists, run `$ ls` and check if a pair of key exists : *id_rsa* and *id_rsa.pub*. - If you can find them, you do not need to generate a new one, simply go to the following - "Add you key on Clever Cloud" part! - -
- -### Windows - -1. If you don't have it, download [Git for Windows](https://git-for-windows.github.io/) and install it. -2. Run **Git Bash** (from the *Start Menu* or from the *Explorer* with the contextual menu (right click)). -3. Run `$ cd ~/.ssh/` in your Terminal. -4. If the folder exists, run `$ ls` and check if a pair of key exists : *id_rsa* and *id_rsa.pub*. - If you can find them, you do not need to generate a new one, simply go to the following - "Add you key on Clever Cloud" part! - -## Create your SSH key - -If you read the previous section, you should have a Terminal open. - -1. In your Terminal, enter the following bash line: - - ```bash - $ ssh-keygen -t rsa -C "your_email@youremail.com" - ``` - This command creates a new ssh key using the provided email, so that the owner of the key can be identified. - -2. When asked, enter a passphrase: - - ```bash - Generating public/private rsa key pair. - Enter file in which to save the key (/your_home_path/.ssh/id_rsa): - # Now you should enter a passphrase. - Enter passphrase (empty for no passphrase): [Type a passphrase] - Enter same passphrase again: [Type passphrase again] - ``` - - Which should give you something like this: - - ```bash - Your identification has been saved in /your_home_path/.ssh/id_rsa. - Your public key has been saved in /your_home_path/.ssh/id_rsa.pub. - The key fingerprint is: - 01:0e:e5:2d:ab:98:d6:17:a1:6d:f0:68:9f:d0:a2:db your_email@youremail.com - ``` - -## Add your SSH key on Clever Cloud - -To declare your **public SSH Key** on Clever Cloud, in the left navigation bar, go in "Profile" and in the "SSH Keys" tab. - -Add the key by entering a name and the public SSH key. The key is the entire content of the **id_rsa.pub** file. - -
-
-The SSH Key manager. -
- -In this tab, you can list all your *SSH Keys* available on Clever Cloud and delete them if necessary. -
-

Remember

-

Your public SSH key must be associated with only one account.

- -If you see "*access denied*" or "*password:*" when you -[push on Clever Cloud](https://www.clever-cloud.com/doc/clever-cloud-overview/add-application/#git-deployment), -your SSH Keys may be invalid or not available on Clever cloud. Please check that you SSH Key is present and valid in -your profile. - - **Need help about SSH keys?** -Contact us at or you can -[read more about SSH Keys](http://git-scm.com/book/en/Git-on-the-Server-Generating-Your-SSH-Public-Key). - -## Check your ssh configuration - -To check if your ssh key is correctly configured, you can try to run: - -```bash - ssh git@push.clever-cloud.com -``` - -The first time, you may have to type "yes" to continue. - -If you see "Permission denied (publickey).", something went wrong, feel free to contact the support, otherwise everything should be fine. diff --git a/commons/clever-cloud-apis/add-ons-api.md b/commons/clever-cloud-apis/add-ons-api.md deleted file mode 100644 index ae4911f2a..000000000 --- a/commons/clever-cloud-apis/add-ons-api.md +++ /dev/null @@ -1,463 +0,0 @@ ---- -title: Add-on API -position: 2 -shortdesc: How to integrate your own service as an add-on on Clever Cloud -tags: -- developer ---- -# Clever Cloud add-on API - -Clever Cloud offers you to sell your service as an add-on through the dashboard. -This article will document how you can technically plug into the platform to provide add-on provision, deprovision, and configuration via the dashboard. - -There are two faces here: - -* [The add-on provider API](#add-on-provider-api) - The API *you* need to provide and document to allow the Clever Cloud's backend to request provision and deprovision of add-ons. - -* [The add-on infos API](#add-on-infos-api) - The API Clever Cloud provides to allow you to get informations about provisioned add-ons and their owners. - -## Preamble - -In the PaaS world, an add-on system is preceding the others, therefore is well known by a lot of developers: the Heroku one. To ease up the transition between Heroku and Clever Cloud, we decided to support (then iterate over) the Heroku standard for add-on provisioning API. - -So, if you already have been integrated as an add-on provider for the Heroku platform, you will have no trouble integrating in the Clever Cloud's add-on platform. This explains why we handle "heroku\_id" fields instead of "clevercloud\_id" or equivalent. - -## Add-on Provider API - -This is the API *you* need to provide to allow Clever Cloud to provision an add-on for a customer. - -### How it works - -When a Clever Cloud customer uses the marketplace to provision an add-on, Clever Cloud sends a request to your service which provides a new add-on for this app. - -### Build an add-on - -To become an add-on provider, you need to provide the provisioning API -as defined below. You can implement your API in any language. The -[Sample Code](#sample-code) section will show you examples in various -languages / frameworks. - -To document your API, and start the process of becoming an add-on -provider, you need to send to a manifest -file. This file contains a JSON that describes your add-on. - -#### Example manifest - -Here is what the manifest JSON must look like: - -```json -{ - "id": "addon-name", - "name": "Addon Name", - "api": { - "config_vars": [ "ADDON_NAME_MY_VAR" ], - "regions": [ "eu" ], - "password": "44ca82ddf8d4e74d52494ce2895152ee", - "sso_salt": "fcb5b3add85d65e1dddda87a115b429f", - "production": { - "base_url": "https://yourservice.com/clevercloud/resources", - "sso_url": "https://yourservice.com/clevercloud/sso/login" - }, - "test": { - "base_url": "http://localhost:9000/clevercloud/resources", - "sso_url": "http://localhost:9000/clevercloud/sso/login" - } - } -} -``` - -Fields - -* `id` - An id for your add-on. All lower case, no spaces or punctuation. Underscores and dashes are allowed. This canโ€™t be changed after the first push. It is also used for HTTP basic auth when making provisioning calls. - -* `name` (Optional) - A human readable name for your add-on. You will be able to change it later in the dashboard, so you don't even have to provide it right now. - -* `api/config_vars` - A list of config vars that will be returned on provisioning calls. Each config_var name *MUST* start with the capitalized, underscorized add-on id, as in the example. - -* `api/password` - Password that Clever Cloud will send in HTTP basic auth when making provisioning calls. You should generate a long random string for that field. - -* `api/sso_salt` - Shared secret used in single sign-on between the Clever Cloud admin panel and your serviceโ€™s admin panel. You should generate a long random string for that field. - -* `api/regions` - The list of geographical zones supported by your add-on. It cannot be empty. As for now, it *MUST* contain the element "eu". More will be supported. - -* `api/production/base_url` - The production endpoint for Clever Cloud api actions (provision, deprovision, and plan change). - -* `api/production/sso_url` - The production endpoint for single sign-on. - -* `api/test/base_url` - The test endpoint for Clever Cloud api actions. Used to test your service on your own machine. You can skip this field. - -* `api/test/sso_url` - The test endpoint for single sign-on. Used to test your service on your own machine. You can skip this field. - -### Authentication - -To secure the calls between your Clever Cloud and API, please provide a -HTTPS connection. The second step to secure the calls is to use a Basic -authentication. The username must be your provider id (in our example, -it is 'addon-name'), and the password must be the the `password` field -set in your manifest. - -So your provider API must check that all calls to it are authenticated -with these user and password. - -#### Sample with Flask in Python - -```python -from functools import wraps -from flask import request, Response - - -def check_auth(username, password): - """This function is called to check if a username / - password combination is valid. - """ - return password == '44ca82ddf8d4e74d52494ce2895152ee' - -def authenticate(): - """Sends a 401 response that enables basic auth""" - return Response( - 'Could not verify your access level for that URL.\n' - 'You have to login with proper credentials', 401, - {'WWW-Authenticate': 'Basic realm="Poney required"'}) - -def requires_auth(f): - @wraps(f) - def decorated(*args, **kwargs): - auth = request.authorization - if not auth or not check_auth(auth.username, auth.password): - return authenticate() - return f(*args, **kwargs) - return decorated -``` - - -### Provisioning - -When a customer installs your add-on, Clever Cloud issues a POST request to your service to provision a ressource for his app. - -The request will be the following: - -```json -Request: POST {base_url} -Request Body: { - "heroku_id": "addon_xxx", - "plan": "basic", - "region": "EU", - "callback_url": "https://api.clever-cloud.com/v2/vendor/apps/addon_xxx", - "logplex_token": "logtoken_yyy", - "options": {} -} -Response Body: { - "id": "myaddon_id", - "config": { - "ADDON_NAME_MY_VAR": "some value" - }, - "message": "Some provisioning message" -} -``` - -The request body contains the following fields: - -* `heroku_id` - The id we give to your add-on to identify it on our side. - -* `plan` - The slug field for the plan the user chose. You can create -plans in the dashboard once your add-on manifest has been uploaded to -the Clever Cloud's platform. We send you the slug of the given plan, -not its name. - -* `region` - The region to provision the add-on. As for now, only "EU" will be sent. - -* `callback_url` - The URL you can use to get informations about the add-on and the user. This URL is available as soon as the provisioning is done. You can't use this URL during the POST call. - -* `logplex_token` - Token used to identify what you send to our log collector. The log collector API doc is here: [/clever-cloud-addons-api/add-ons-log-collector/](/doc/clever-cloud-addons-api/add-ons-log-collector/) - -* `options` - String -> String map with options. We don't currently support this, so it will be empty for now. - -The response body contains the following fields: - -* `id` - The add-on id as seen from your side. The difference with the heroku api is that the id *MUST* be a String. - -* `config` (Optional) - A String -> String map with value for each config\_var defined in your manifest. A key that is not in your config\_vars will be ignored. - -* `message` (Optional) - A creation message we will display in the dashboard. - -### Deprovisioning - -When a customer deletes your add-on, Clever Cloud issues a DELETE request to your service to deprovision a ressource for his app. - -The request will be the following: - -```json -Request: DELETE {base_url}/{addon_id} -Request Body: none -Response Status: 200 -``` - -* `addon_id` - This is the same as the `id` field set in the response to the provisioning call. - -### Plan change - -When a customer wants to change it's add-on's plan, Clever Cloud issues a PUT request to your service. - -The request will be the following: - -```json -Request: PUT {base_url}/{addon_id} -Request Body: { - "heroku_id": "addon_xxx", - "plan": "premium" -} -Response Body: { - "config": { ... }, - "message": "your message here" -} -``` - -* `addon_id` - This is the same as the `id` field set in the response to the provisioning call. - -The request body contains: - -* `heroku_id` - The add-on's id as seen from our side. - -* `plan` - The name of the new plan. - -The response body contains: - -* `config` - The value for the new config map. Same constraints as in the provisioning response. - -* `message` - A message displayed in our dashboard. - -### SSO - -Your service probably has a web UI admin panel that your users log into to manage and view their resources. - -Clever Cloud customers will be able to access the admin panel for their resource if you implement single sign-on. - -Clever Cloud will generate a single sign-on token by combining the salt (a shared secret), timestamp, and resource ID. The userโ€™s browser will be redirected to your site with this token. Your site can confirm the authenticity of the token, then set a cookie for the user session and redirect them to the admin panel for their resource. - -When the user clicks your add-on in their add-on menu, they will be directed via HTTP POST to a URL defined in your manifest. - -```http -POST -Request Body: id=&token=×tamp=&nav-data=&email= -``` - -* The hostname or sso_url comes from your add-on manifest. -* The id is the ID for the previously provisioned resource. -* The timestamp is a millisecond timestamp. You *SHOULD* verify that the timestamp is not older than 15 minutes. -* the token is computed using the formula below. -* Nav data contains information like the current app name and installed add-ons for Clever Cloud Dashboard. - -#### Token - -The token field in the sso call, is created as follow: - -```javascript -sha1sum(id + ':' + sso_salt + ':' + timestamp) -``` - -Where: - -* `id` - The id of the connecting add-on. This is the id you returned on -the provision call. - -* `sso_salt` - The sso_salt field defined in your manifest. - -* `timestamp` - The timestamp field of the sso request. - -#### Sample in Python - -```python -from hashlib import sha1 -import time - -id = "1234" -salt = "fcb5b3add85d65e1dddda87a115b429f" -timestamp = str(time.time()) -token = sha1(id + ':' + salt + ':' + timestamp).hexdigest() -print token -``` - -This will return: - -``` -'aca601ba464437cbaa12b2fedd7db755c32ddb5e' -``` - -## Add-on Infos API - -This API is part of the Clever Cloud API. The base URL for the Clever Cloud API is: - -```http -https://api.clever-cloud.com/v2 -``` - -You should prefix your calls by this base URL. - -### Authentication - -To secure the calls between your API and Clever Cloud, The Clever Cloud -API is behind a HTTPS connection. The second step to secure your calls is to use a Basic -authentication. The username must be your provider id (in our example, -it is 'addon-name'), and the password must be the `password` field -set in your manifest. - -#### Example call to Clever Cloud add-on infos API - -```bash -$ curl -XGET https://api.clever-cloud.com/v2/vendor/apps -u addon-name:44ca82ddf8d4e74d52494ce2895152ee -``` - -### Endpoints - -#### List all add-ons provided by you - -```json -GET /vendor/apps -Response Body: [ - { - "provider_id": "addon-name", - "heroku_id": "addon_xxx", - "callback_url": "https://api.clever-cloud.com/v2/vendor/apps/addon_xxx", - "plan": "test", - "owner_id": "user_foobar" - }, { - "provider_id": "addon-name", - "heroku_id": "addon_yyy", - "callback_url": "https://api.clever-cloud.com/v2/vendor/apps/addon_yyy", - "plan": "premium", - "owner_id": "orga_baz" - } -] -``` - -* `provider_id` - Should be the same as the "id" field of your uploaded manifest. - -* `heroku_id` - The add-on's id from Clever Cloud's POV. - -* `callback_url` - URL to call to get more informations about this add-on. - -* `plan` - The current plan of this add-on. - -* `owner_id` - The id of the owner that provisioned the add-on. This should never change. - - -#### Get informations about a specific add-on - -**Caution**: this endpoint is **not** available during the provisioning call. If you want -informations, you need to reply to the provisioning call, **then** you can call this -endpoint. - -```json -GET /vendor/apps/{addonId} -Response Body: { - "id": "addon_xxx", - "name": "My addon-name instance", - "config": {"MYADDON_URL": "http://myaddon.com/52e82f5d73"}, - "callback_url": "https://api.clever-cloud.com/v2/vendor/apps/addon_xxx", - "owner_email": "user@example.com", - "owner_id": "orga_baz", - "owner_emails": ["user@example.com", "foobar@baz.com"], - "region": "eu", - "domains": [] -} -``` - -This endpoint gives you more informations about a provisioned add-on. - -* `id` - The add-on id from Clever Cloud's POV. - -* `name` - The name the user gave to this add-on in the Clever Cloud's dashboard. - -* `config` - Config vars as you defined during the provision call. - -* `callback_url` - The URL you just called. - -* `owner_email` - One of the owner's email address. - -* `owner_emails` - All the owner's email addresses. This is not in the Heroku specification. - -* `owner_id` - The id of the owner that provisioned the add-on. This should never change. - -* `region` - The region this add-on is located in. As for now, we only support "eu". - -* `domains` - Originally the domains names for the application owning the add-on. We return an empty list. - -#### Update the config vars for an add-on - -**Caution**: this endpoint is **not** available during the provisioning call. If you want -informations, you need to reply to the provisioning call, **then** you can call this -endpoint. - -```json -PUT /vendor/apps/{addonId} -Request Body: { - "config": { - "ADDON_NAME_URL": "http://myaddon.com/ABC123" - } -} -Response Status: 200 OK -``` -The object should only contain the `config` object your API returned -during the provisioning. - -## Sample code - -### Add-on Skeleton in Python - -```python -#!/usr/bin/env/python -# -*- coding:utf-8 -*- - -""" -api.py -""" -from flask import Flask, redirect, Response, jsonify, request -import auth -import provision - -app = Flask(__name__) - -@app.route('/') -def index(): - """ - Render the home template - """ - return redirect("https://google.com/") - - -@app.route('/clevercloud/resources', methods=['POST']) -@auth.requires_auth -def clevercloud_create_resource(): - data = request.json - msg = provision.add(**data) - return jsonify(msg) - - -@app.route('/clevercloud/resources/', methods=['DELETE','PUT']) -@auth.requires_auth -def clevercloud_action_resource(id): - data = request.json - if request.method == 'POST': - msg = provision.del(id,**data) - - if request.method == 'PUT': - msg = provision.update(id,**data) - - return jsonify(msg) - -@app.route('/clevercloud/sso/login') -def clevercloud_sso_login(): - return Response(status=200) - - -if __name__ == "__main__": - app.run(host='0.0.0.0',port=9000,debug=True) -``` - -### Add-on API template using scala and Play! framework 2. - -[https://github.com/CleverCloud/addon-provider-template](https://github.com/CleverCloud/addon-provider-template) - -### Add-on API template using NodeJS - -[https://github.com/Redsmin/passport-clevercloud](https://github.com/Redsmin/passport-clevercloud) \ No newline at end of file diff --git a/commons/clever-cloud-apis/add-ons-log-collector.md b/commons/clever-cloud-apis/add-ons-log-collector.md deleted file mode 100644 index 1e6901631..000000000 --- a/commons/clever-cloud-apis/add-ons-log-collector.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Add-on Log Collector -position: 3 -shortdesc: This article targets the add-on providers who want to integrate logs from their add-ons to the Clever Cloud's logging system -tags: -- developer ---- -# Add-on Log Collector - -This article targets the add-on providers who want to integrate logs -from their add-ons to the Clever Cloud's logging system. Doing this -allows the users to get their add-on's logs in the Clever Cloud's -dashboard. - -Note that, for the same reasons as the one mentioned in [Add-on API](/doc/clever-cloud-addons-api/add-ons-api) article, which you should have read if your reading these lines, if you already are a Heroku add-on provider, you should not be lost using this log collector API. - -## Send a line of log - -Log lines must be sent via https. See the following example with the `curl` command: - -```bash -$ curl -X POST "https://logs.cleverapps.io/logs" \ - --user "token:logtoken_foobar" \ - -d "72 <190>1 2013-03-27T20:02:24+00:00 hostname logtoken_foobar procid - - foo72 <190>1 2013-03-27T20:02:24+00:00 hostname logtoken_foobar procid - - bar" \ - -H "Content-Length: 150" \ - -H "Content-Type: application/logplex-1" -``` - -Let's explain this request: - -* `-X POST` - This request is obvioulsy a POST one, since you need to send new data. - -* `--user token:logtoken_foobar` - This is the basic authentication content. The user must be the string 'token', and the password must be your log token, as sent on a provisioning call. - -* `Content-Length: 150` - Length of the body. Must be set. - -* `Content-Type: application/logplex-1` - This is the expected content type. - -* `72 <190>1 2013-03-27T20:02:24+00:00 hostname logtoken_foobar procid - - foo` - This a a log line. It is expected to respect the RFC 5424 notation. You can send multiple log lines in one request. Here is the log line decrypted: - -```bash -length version time hostname logtoken procid msgid structured-data msg -``` - -This message format is documented by the [RFC 5424](http://tools.ietf.org/html/rfc5424). - -* `length` - 72 in the example. It is the length *in bytes* of the encoded log line minus the length field and the following space. It *is not* the number of chars. In our example, this is how it could be done in java: -```text -("<190>1 2013-03-27T20:02:24+00:00 " + -"hostname logtoken_foobar procid - - foo").getBytes().length -``` - -* `prival` - The priority value of the message. Here `190` means "local7.info". ([More doc](http://tools.ietf.org/html/rfc5424#section-6.2.1)) - -* `version` - The syslog protocol version. Use `1` here. ([More doc](http://tools.ietf.org/html/rfc5424#section-6.2.2)) - -* `time` - The time the log line was created. The format must follow the [RFC 3339](http://tools.ietf.org/html/rfc3339). ([More doc](http://tools.ietf.org/html/rfc5424#section-6.2.3)) - -* `hostname` - Make it your add-on id. - -* `logtoken` - The same token as in the Basic authentication password. - -* `procid` - Id of the process emitting the log. Not really used by the log collector since it's more relevant for you to use in your own log system to debug processes. - -* `msgid` - Not used, should be `-`. - -* `structured-data` - Not used, should be `-`. diff --git a/commons/clever-cloud-apis/cc-api.md b/commons/clever-cloud-apis/cc-api.md deleted file mode 100644 index 74f790bc7..000000000 --- a/commons/clever-cloud-apis/cc-api.md +++ /dev/null @@ -1,124 +0,0 @@ ---- -title: Clever Cloud API -position: 1 -shortdesc: Getting started with the Clever Cloud API -tags: -- developer ---- -# Clever Cloud API - -The Clever Cloud console is built on top of an API that allow you to manage your -account and products. This article will explain how to connect to this API and -use it. - -## HTTP calls - -### **Authentication** - -Clever Cloud API works with an OAuth1 based authentication. - -There are 2 supported methods for the signature: PLAINTEXT and HMAC-SHA1. -While PLAINTEXT is way easier for testing, you **should** use HMAC-SHA1 -when it comes to production. This ensures that the request is totaly verified. - -We have a [client for javascript on Github](https://github.com/CleverCloud/clever-client.js) -where you can find a lot of informations. -Especially in the [src/session.js file](https://github.com/CleverCloud/clever-client.js/blob/master/src/session.js) - -This client is being used by the Console. Also, the Console gives you a lot -of informations in the "network" panel of the devtools. If you're stuck, this -is one way for debugging. - -For the Authorization header, make sure to have something like: -```bash - Authorization: OAuth key="value", key2="value2" -``` -The ``OAuth`` and doubles quotes around values are mandatory -#### **Create consumers tokens** - -You need to create an oauth consumer token in the Clever Cloud console. -A link "Create an oauth consumer" is available under your organisation's -addons list. All created consumers will appear below that link, like your -applications and addons. - -These consumers allow you to register an application. By creating a consumer, -users will be able to grant (or decline) privileges for your application. -For example, the Clever Cloud Console is using an oauth consumer. -You (most of the time) give it full access to manage your account. - -You need to set a callback URL, this is the url your user will be redirected -after he has been authenticated. - -#### **Get a request token** - -You have to make a `POST`request to get a -[request token](https://www.clever-cloud.com/doc/api/#!/oauth/oauth_request_token_post) -to the API. - -#### **Get the authorisation URL** - -Ask the API for the [authorisation URL](https://www.clever-cloud.com/doc/api/#!/oauth/oauth_authorize_get) -and go to this URL with a browser. Log in with your account and it will send you -to the callback URL. - -#### **Get the verifier token** - -In the callback URL you have the verifier token : - -`http://www.example.com/callback?oauth_verifier=` - -Where `` is your token. - -#### **Get the access token** -Make a `POST` request to get the -[access token](https://www.clever-cloud.com/doc/api/#!/oauth/oauth_access_token_post) - with your request token and the verifier. -You can use this access token to make OAuth1 signed requests. - -More information about [OAuth dance](http://oauth.net/core/1.0/#anchor9). - -### **API request links** - -All the API links are referenced in a swagger documentation. - - * [https://www.clever-cloud.com/doc/api/](https://www.clever-cloud.com/doc/api/) - -The base URL for the API is : - - * `https://api.clever-cloud.com/v2/` - -## WebSocket API requests - -### **Connection protocol** - -Clever Cloud API can handle WebSocket-Security requests for the logs or events. -To connect to a WebSocket API URL follow this guide. - - * Take a URL in the API for the WebSocket. - * Ex : `https://api.clever-cloud.com/v2/events/event-socket` - * Sign the OAuth request with this URL. - * Replace `https://` by `wss://` - * `wss://api.clever-cloud.com/v2/events/event-socket` - * Connect to this URL in WebSocket - * When the WebSocket connection is opened, you need to send the OAuth1 header in -this format : -```json -{ - "message_type": "oauth", - "authorization": "" -} -``` -You need to replace `` by the signed OAuth1 header. - -### **Available WebSocket endpoints** - -#### **Logs-Socket** - -[This endpoint](https://www.clever-cloud.com/doc/api/#!/logs/logs_logs-socket_appId_get) -allow you to receive real-time logs of an application via WebSocket. - -#### **Events** -[This endpoint](https://www.clever-cloud.com/doc/api/#!/events/events_event-socket_get) -allow you to receive a stream of events emitted on your account. -Events like git push, add or remove an application / addon, deployments success / failed -are available. diff --git a/commons/clever-cloud-overview/add-application.md b/commons/clever-cloud-overview/add-application.md deleted file mode 100644 index 508217693..000000000 --- a/commons/clever-cloud-overview/add-application.md +++ /dev/null @@ -1,143 +0,0 @@ ---- -title: Deploying an application -position: 4 -shortdesc: Step by step guide to deploy an application on Clever Cloud. -tags: -- dashboard-setup ---- - -# Deploying an application - -There are two steps in this section: application creation (requiring actions from -dashboard) and application deployment (requiring actions from git for your FTP access). - -## Create an application - - 1. First, select the proper organization you want to add to application to. Then, - click on the **Add an application** button, in the **Organization Manager** panel. - This starts the application creation wizard. If your account has been linked to - GitHub, you can select a repository from your GitHub account. - - 2. Then select the language or the framework you need: -
- - 3. *Optional:* in case of PHP or static applications, you can choose between FTP - and Git deployment. - - 4. In the next step, you will be prompted to select your scaling configuration. - If you need help to configure your scaling options, please refer to - [the dedicated section](/doc/clever-cloud-overview/scaling/). - -
- -
- - 5. Enter the name and description of you app. - - 6. *Optional*: [add an add-on](/doc/addons/clever-cloud-addons/) to your app. - -## Git Deployment - -*To deploy via Git, you need it installed on your machine. You can find more -information on Git website: [git-scm.com](http://git-scm.com)* - -*Note:* During the deployment, the .git folder is automatically deleted to avoid security problems. If you need to know -which version is used on the server please use the `COMMIT_ID` [environment variable](/doc/admin-console/environment-variables/). - -Follow these steps to deploy your application: - - 1. Get the git deployment url in the application information page, who looks like: - ``git+ssh://git@push..clever-cloud.com/.git``. - - 2. In your terminal, go to your application repository. If you do not already track your app with git, start by typing: - - ```bash - $ git init - $ git add . - $ git commit -m "first commit" - ``` - - 3. Then, link your local repository to Clever Cloud by providing the Git remote url: - - ```bash - $ git remote add - ``` - - 4. Push your application to Clever Cloud: - - ```bash - $ git push :master - ``` - -
-

Warning:

-

You can only push to the master branch for deployment. - Trying to push to another branch will trigger an error.

-

In order to push to master from a non-master local branch, use this syntax:

-
git push <remote> <your branch>:master
-
- - Checkout your application **logs** in the dashboard to **monitor the deployment**. - -
-

Troubleshooting:

-

If the remote asks you for a password right after a git push attempt, this is may be due to a SSHย Key misconfiguration. -
Add your SSH key to your profile here: - https://console.clever-cloud.com/users/me/ssh-keys

-

The full tutorial about adding SSH key is here: Adding SSH keys

-
- -### Automatic Deployment with GitHub - -If you want to enable automatic deployment, follow these easy steps: in your application -information tab, if you have created your application from GitHub, you will -see a new field: a secret for your GitHub applicationโ€™s settings. Here are the -steps to trigger a deploy on Clever Cloud from a push to GitHub: - - 1. Grab this secret and go to the GitHub repository settings. - - 2. Click on โ€œadd a serviceโ€ and select โ€œClever Cloudโ€ from the list. - - 3. Paste the secret - -From now on, a push to your GitHub repo will also trigger a Clever Cloud deployment. - -Note that only a push on master will trigger the deployment. - -
-

Warning:

-

You can't directly push to an application created on Clever Cloud as a Github app : in this case, only the automatic deployment from Github is henceforth allowed.

-

If you try to push to Clever Cloud, as you would do for a non-github app, you will get the following error :

-
fatal: '/data/repositories/<app_id>.git' does not appear to be a git repository
-

Indeed, no git repository is created on Clever Cloud because the application is directly cloned from Github.

-

If you have to push directly to a repo in order to deploy an application (eg if you deploy from a CI), then create a non-github app.

-
- -Private GitHub repositories are also supported: you only have to add the CleverCloudDeployer user as a collaborator to your private repository. Note that read only access is sufficient. - -Caution: in Github, private repositories in an ordinary user account are an all-or-nothing deal: either someone has full read/write access (i.e., they're a collaborator) or they have no access. However, if you set up an organization, create the repo under the aegis of the organization, and then add the collaborator, you have much more fine-grained control (including giving read-only access to a private repository). - -## FTP Deployment - -It is possible to deploy via FTP with PHP and static applications. - -To deploy via FTP, you need an FTP software installed on your machine. [Filezilla](https://filezilla-project.org/) is -one of them. - -When you have chosen to deploy your application via FTP, a [FS Bucket](/doc/addons/fs_buckets/) has been created with an ID -matching your application's ID. You will find the FTP credentials in the configuration tab of this particular FS Bucket. - -[More documentation about Filezilla.](https://wiki.filezilla-project.org/FileZilla_Client_Tutorial_%28en%29) - - -
-

Warning:

-

An FTP application is automatically started once the application is created, even if no code has been sent.

-
- - -
-

Our advice

-

FTP deployment is ok for small websites but not for large ones. We strongly -recommend you to use Git deployment for large PHP websites.

-
diff --git a/commons/clever-cloud-overview/common-application-configuration.md b/commons/clever-cloud-overview/common-application-configuration.md deleted file mode 100644 index 2f2e5acb2..000000000 --- a/commons/clever-cloud-overview/common-application-configuration.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Common apps configuration -position: 5 -shortdesc: Learn how to do some basic steup configuration to get started -tags: -- dashboard-setup ---- - -# Configuration items available on every instance type. - -Each instance type (php,java,python,go,rubyโ€ฆ) has its own configuration. However, some of -these configuration items can be applied to any instance. - -## Private SSH key - -If your company manages its own artifacts in a private repository (like, you can only -access them via git+ssh or sftp), and you need a private key to connect to the server, you -can commit them in your application's Clever Cloud repository and then add the -`clevercloud/ssh.json`. - -The content of this file is pretty straight-forward: - -```javascript -{ - "privateKeyFile": "path/to/file" -} -``` - -The `privateKeyFile` field must be a path to a SSH private key. The path must be relative -to the root of your repository. e.g. if your private key file is in the `clevercloud` -folder and is named `my_key`, the `privateKeyFile` field will be `"clevercloud/my_key"`. - -That key will be installed as `~/.ssh/id_rsa` before the start of the build. So the -dependency manager will use it to fetch libs only accessible by ssh. - -*NB: Please provide a key without pass phrase, or the system will be unable to unlock it* - -## Post deploy hook - -If you need to perform additional actions after your app is started, you can define a -"postDeploy" hook in your `.json` file (e.g. if you are deploying a ruby app, -put it in your `ruby.json` file): - -```javascript -{ - "hooks": { - "postDeploy": "./clevercloud/myScript" - } -} -``` - -The `postDeploy` field must contain the path to a script, relative to the root of your -repository. The script file **MUST** have execution right set. - -In the example above, the script is a file named `myScript` in the `clevercloud` folder. -That is, right beside the `.json` file. diff --git a/commons/clever-cloud-overview/intro-to-addons.md b/commons/clever-cloud-overview/intro-to-addons.md deleted file mode 100644 index e8b26e09e..000000000 --- a/commons/clever-cloud-overview/intro-to-addons.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Intro to add-ons -position: 2 -shortdesc: Add-ons allows you to extend your apps with databases, search engines, monitoring etc. -tags: -- dashboard-setup -- addons ---- - -# Intro to add-ons - -Applications often requires one or more services in addition to the runtime itself. For example, you may need databases -for storing data, cache engine for performances, long time log storage, etc... - -These services are called add-ons. There is a great number of them, based on many technologies, and developed by many -companies, or communities. It could be a database, a cache system or a search engine. - -## Clever Cloud add-ons - -Some add-ons are developed and maintained by Clever Cloud, exclusively. - -* Cellar -* File System Buckets -* MongoDB -* MySQL -* PostgreSQL -* Redis -* Redsmin - -Add-ons from external partners will be released shortly. - -## Adding an add-on - -To add an addon, please refer to the [dedicated section](/doc/addons/clever-cloud-addons/). - -## Billing - -Each add-on is billed monthly. The price showed for each plan does not include taxes. diff --git a/commons/clever-cloud-overview/intro-to-apps.md b/commons/clever-cloud-overview/intro-to-apps.md deleted file mode 100644 index cda63b2c2..000000000 --- a/commons/clever-cloud-overview/intro-to-apps.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Intro to Apps -position: 1 -shortdesc: A quick overview of the concept of application on Clever Cloud -tags: -- dashboard-setup ---- - -# Introduction to Applications - -## Application's definition - -An application is defined on Clever Cloud by the following elements: - -* a dedicated language/framework -* a deployment method (FTP and/or Git) -* RAM and CPU consumption, depending on the language or framework used -* an optional configuration file you've added to your project - -If one of these elements is missing, Clever Cloud can't deploy your application properly (except the configuration file, optional in some cases). - -Available languages are listed below: - -* [Go](/doc/go) -* [Java](/doc/java) [Playย Framework 1 & 2, Maven, War filesโ€ฆ ] -* [Node.js](/doc/nodejs) -* [PHP](/doc/php) -* [Python](/doc/python) -* [Ruby](/doc/ruby) -* [Scala](/doc/scala) - - -## How it works - -When an application is pushed, the platform receives it. It then checks the resourcesโ€™ requirements. If they are complete, the deployment is launched. When finished and successful, the application is up and running. - -The log system retrieves all output from the application and displays it in your admin console. diff --git a/commons/clever-cloud-overview/pricing.md b/commons/clever-cloud-overview/pricing.md deleted file mode 100644 index 38da86645..000000000 --- a/commons/clever-cloud-overview/pricing.md +++ /dev/null @@ -1,305 +0,0 @@ ---- -title: Pricing -position: 1 -shortdesc: Pricing table of Clever Cloud's runtimes -tags: -- billing ---- -# Billing -Clever Cloud billing is counted every 10 minutes. The following prices are based on the language you use. - - -## Per hour applications billing rates - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SizeRAMvCPUCost per hour
XS1 GB10.02 โ‚ฌ
S1 GB20.04 โ‚ฌ
M4 GB40.15 โ‚ฌ
L8 GB60.25 โ‚ฌ
XL16 GB80.45 โ‚ฌ
-
- -## Clever Cloud Native Add-ons pricing - -The following add-ons are the production databases maintained internally by Clever Cloud. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PostgreSQL pricing plans
NameCache (Memory)DiskConn. limitPrice /month
DevSHARED256 MB5Free
SSHARED1 GB1010 โ‚ฌ
M1 GB100 GB7530 โ‚ฌ
L8 GB450 GB500240 โ‚ฌ
XL32 GB600 GB750700 โ‚ฌ
XXL64 GB900 GB10001200 โ‚ฌ
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MySQL pricing plans
NameCache (Memory)DiskConn. limitPrice /month
DevSHARED10 MB5Free
SSHARED256 MB1015 โ‚ฌ
M1 GB10 GB7545 โ‚ฌ
L2 GB200 GB500300 โ‚ฌ
XL8 GB500 GB7501600 โ‚ฌ
XXL16 GB900 GB10002200 โ‚ฌ
- - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - -
MongoDB pricing plans
NameMemoryStoragePrice /month
SShared500 MBFree
SM2 GB30 GB75.00 โ‚ฌ
M4 GB100 GB150.00 โ‚ฌ
- - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Redis pricing plans
NameSizeConnection limitDatabasesPrice /month
DEV10 MB10100Free
S100 MB1001008.00 โ‚ฌ
M250 MB10010013.00 โ‚ฌ
L500 MB25010043.00 โ‚ฌ
XL1 GB50010078.00 โ‚ฌ
XXL2.5 GB500100190.00 โ‚ฌ
- -
-
- - - - - - - - - - - - - - - - - - - -
FS Buckets pricing plans
NameMountsStoragePrice /month
BasicUnlimitedFirst 100 MBFree
BasicUnlimitedPer 1GB1.50 โ‚ฌ -
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cellar pricing plans
Storage
First 100MBFree
First 1TB20.48 โ‚ฌ / TB / mo -
First 25TB15.36 โ‚ฌ / TB / mo
First 50TB10.24 โ‚ฌ / TB / mo
Traffic (outbound)
First 100MBFree
First 10TB0.09 โ‚ฌ / GB / mo
First 40TB0.07 โ‚ฌ / GB / mo
\ No newline at end of file diff --git a/commons/clever-cloud-overview/scaling.md b/commons/clever-cloud-overview/scaling.md deleted file mode 100644 index 553979a2d..000000000 --- a/commons/clever-cloud-overview/scaling.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: Scaling -position: 3 -shortdesc: This article introduces the wat Clever Cloud bills apps and services -tags: -- scaling-tips -- developer ---- - -# Application scalling - -When your application is running, you don't have the same number of user all the time. During an event for example, -the number of users can grow up and the loading on the server increase. If too many requests are done on your -server in the same time, the response time will increase and could slow down your website. - -To avoid this problem and keep a fast website, the main solution is to deploy more **Scalers** of your application to -support the loading. That's what is scalling : adapting automatically the number of **Scalers** and there size to feet the -loading of your application, without action from you. - -Clever Cloud gives you the ability to fine tune your application's scaling by managing both horizontal and vertical -scaling. These two parameters can be combined to adapt to your needs. - -## What is a Scaler? - -A **Scaler** is the Clever Cloud "instance". It is an individual container hosting your application. They are not virtual -machines and are independent. A Scaler is defined by two factors: RAM and CPU. - -With the Scalers, Clever Cloud gives you the ability to scale your application **up and down** with **two non -exclusive methods**: horizontal and vertical scaling. - -### Enable scalability - -To enable the scalability of your application, open the [console](https://console.clever-cloud.com/) and go in the -"scalability" section of your application. Then, enable the auto-scalability. - -## Horizontal scaling - -In case of large traffic, we detect a high load on your application and spawn **another instance in parallel**. -It gives more power to your application by setting up another identical application. Both will run in parallel with load -balancing. And so on. - -This process is exactly the opposite when the **load decreases**. A Scaler is removed and so on till a **minimum -reasonable level** is reached. - -The following scheme depicts a Scaler replication in case of a load increase: - -
- -
- -You can manage the range of Scalers you consider in the application configurator. The range is from 1 to 20. - -
- -
Horizontal scaling: the amount of scaler will increase, not the scaler size.
-
- -## Vertical scaling - -In case of large traffic, we detect a high load on your application and set up **a new larger Scaler**. - -In case of low traffic, we detect a low load and set up **a new smaller Scaler**. - -You give more power to your application by setting up a larger instance that will replace the previous one. The more the -load, the larger the instance. - -The following scheme depicts a larger Scaler replacement in case of a load increase: - -
- -
- -You can choose the type of Scalers you consider of just let Clever Cloud choose for you: - -
- -
Vertical scaling: the amount of scalers will not increase in this configuration, but the scaler size will, - from S to XL.
-
- -## Combination of both scalings - -When both scalings are set up, **vertical scaling** is privileged over **horizontal scaling**. In the case you set the -vertical scaling from S to L, and the horizontal scaling from 2 scalers to 4 scalers, Clever Cloud will firstly up -the size of the 2 scalers already launched. - -If the 2 initials scalers are in there maximum size, Clever Cloud will launch new scalers with the maximum size of scalers. -This is how it'll be done : - -2-S => 2-M => 2-L => 3-L => 4-L. diff --git a/commons/get-help/community.md b/commons/get-help/community.md deleted file mode 100644 index 27a685099..000000000 --- a/commons/get-help/community.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Community -position: 2 -tags: -- support ---- - -# Community - -Engage in our Developer Community by seeking or providing advice on application and development level questions. We have a community of developers using our platform and you can help make it stronger. - -## Public IRC Channel - -Weโ€™re also available on IRC. You can join our channel: - -* [#clevercloud on irc.freenode.net](irc://irc.freenode.net:6667/clevercloud) - -## Mailing List - -Our mailing list is available is where we announce new features and beta programs. Be part of it to try our new features, or having access to our developer community. - -* diff --git a/commons/get-help/faq.md b/commons/get-help/faq.md deleted file mode 100644 index f132072a2..000000000 --- a/commons/get-help/faq.md +++ /dev/null @@ -1,131 +0,0 @@ ---- -title: FAQ -position: 3 -tags: -- support ---- - -# Clever Cloud FAQs - -## What is a Scaler? - -A scaler is an individual container hosting your app. You can attribute one or more Scalers to your apps. Scalers comes in many sizes based on each language requirement from XS to XXXL. - -Each [scaler](#def-scaler) is given a fixed set of resources, depending on the chosen language. A Java [scaler](#def-scaler) will have more RAM than a PHP [scaler](#def-scaler). -The way you scale an application is by assigning it new [scalers](#def-scaler). -When enabling auto-scalability, you have to set a minimum and a maximum of active [scalers](#def-scaler) in your apps settings. This way you can precisely control your monthly fee. - -## What languages and frameworks are supported by Clever Cloud? - -Currently Clever Cloud supports: - -* Java (Playย Framework 1 & 2, Maven, War filesโ€ฆ ) -* Node.js -* PHP ([see frameworks and CMS](/doc/php/php-apps/#frameworks-and-cms)) -* Python (Django) -* Ruby -* Go - -## How many applications can I create with Clever Cloud? - -As much as you want. We've not set a limited number of apps by developer. - -## How can I disable one of my existing applications? - -Log in with your account to [console.clever-cloud.com](https://console.clever-cloud.com), and select the appropriate organisation and app in the head-bar. Then click on **Configuration** in the left pane to stop your app. It will be un-deployed, and ready for a new start without pushing your app via Git or FTP again. - -## What type of content is allowed on Clever Cloud? - -Please refer to our Terms and Conditions, article 6, *Obligations and responsibilities of the client*. - -## How is the current load report in my application's admin console generated? - -We use custom probes to monitor: - -* hardware's components usage -* databases read / write / update operations - -## How do I authenticate members of my organisation? - -Log in with your account to [console.clever-cloud.com](https://console.clever-cloud.com), and select the appropriate organisation in the head-bar. Then click on **Configuration** in the left pane and select **Members**. You'll see a list of the organisation's members. If your are an admin, you can revoke or grant apps permissions. - -## How do I report an application that is in violation of your Terms and Conditions? - -To report an application that is in violation of the Clever Cloud's Terms and Condition, please contact us at . - -We will investigate and contact the application's owner over the violation if needed. - -## Does Clever Cloud support SSL (HTTPS)? - -Absolutely! For now, it's not automatic. Contact us at , we will enable it for you. Custom SSL certificates will be available directly in Clever Cloud very soon. - -## I'd like to map my app to http://mydomain.com. - -See [Custom Domain Names](/doc/admin-console/apps-management/#custom-domain-names) section of Apps Management. - -## How do I define cron jobs for my application? - -See [Cron Configuration File](/doc/tools/crons/) for more information. - -## How many active requests can my app serve at one time? - -There are two possibilities, according to the scalability settings you've opted for. - -1. You have set a single [scaler](#def-scaler) : the maximum active requests depends on your [scaler's](#def-scaler) -computing limits. -2. You have set auto-scalability, new [scalers](#def-scaler) will be started as long as your app need more resources -(until it reaches the maximum number of [scalers](#def-scaler) you have defined). - -## How to know if a user comes from a secure connection? - -All connections are handled by load-balancers ahead of your applications and forwarded in plain http, you cannot rely on the server port to know the scheme used by the user. - -Instead of it you can use the `X-Forwarded-Proto` HTTP header to get the information, it is set to '*http*' or '*https*'. - -
-

Note for Play Framework! 1.2.x users

-

In order to use `request.secure` instead of accessing the header, you must add `XForwardedSupport=all` in your *application.conf*.

-
- -
-

Note for Play Framework! 2.3+ users

-

In order to use `request.secure` instead of accessing the header, you must add `trustxforwarded=true` in your *application.conf*.

-
- - -## How to get the user's IP address? - -All connections are handled by load-balancers ahead of your applications -and forwarded in plain http. - -So if you get the `REMOTE_ADDR` or `Client-IP` header, you will only -get the IP of the front load balancer that forwarded the user request. - -Instead of these headers you need to use the `X-Forwarded-For` HTTP -header, which is set by our load balancer to the client's address. Please -remember that it is a list, containing the address of each proxy the request -has been through, if the said proxy has modified the `X-Forwarded-For` -header: [Read the Wikipedia page for more informations](https://en.wikipedia.org/wiki/X-Forwarded-For) - -## When my application runs on multiple instances, how can I differentiate them? - -If your application needs to differentiate all the running nodes internally, -you can use the `INSTANCE_NUMBER` environment variable. - -For example, if 3 instances are running for your application, this environment variable will -contain `0` on the first, `1` on the second and `2` on the third. - -## I need a private ssh key to fetch my private dependencies. How do I do that? - -If your company manages its own artifacts in a private repository (like, you can only -access them via git+ssh or sftp), and you need a private key to connect to the server, you -can commit them in your application's Clever Cloud repository and then add the -`clevercloud/ssh.json`. - -The ssh.json file is documented in the [common configuration page](/doc/clever-cloud-overview/common-application-configuration/#private-ssh-key) - -## I got a `Unsupported major.minor version` error. How can I fix it? - -If you get this error on a java (or any JVM language) application, it means that your application requires a specific version of java. -By default, java 7 is used, but you can change it. Please head up to [select java version](/doc/java/select-java-version/) -for more information. diff --git a/commons/get-help/reference-environment-variables.md b/commons/get-help/reference-environment-variables.md deleted file mode 100644 index 4369fdcc7..000000000 --- a/commons/get-help/reference-environment-variables.md +++ /dev/null @@ -1,802 +0,0 @@ ---- -title: Environment Variable Reference -position: 3 -tags: -- support ---- - -# Environment Variable Reference - -Source environment variable in a cron, create a script that starts with: source /home/bas/applicationrc - -## Applications - -### Commons to all Applications - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Name
Description
Default value
[CC_TROUBLESHOOT](doc/clever-cloud-overview/troubleshoot-mode/)Enable debug log level, will also keep the VM up after failure for 15 minutes so you can SSH and debug. Don't forget to cancel deployment if you push a new commit.`false`
CC_WORKER_COMMANDCommand to run in background as a worker process.
CC_PRE_BUILD_HOOKRan before the dependencies are fetched. If it fails, the deployment fails.
CC_POST_BUILD_HOOKRan after the project is built, and before the cache archive is generated. If it fails, the deployment fails.
CC_PRE_RUN_HOOKRan before the application is started, but after the cache archive has been generated. If it fails, the deployment fails.
CC_RUN_SUCCEEDED_HOOKRan once the application has started successfuly.
CC_RUN_FAILED_HOOKRan once the application has failed to start.
CACHE_DEPENDENCIESEnable caching of your build dependencies to speed up following builds.`false`
ENABLE_METRICSBETA: Enable metrics collection, Contact support.`false`
[IGNORE_FROM_BUILDCACHE](doc/admin-console/environment-variables/#settings-you-can-define-using-environment-variables)Allows to specify paths to ignore when the build cache archive is created.
[INSTANCE_NUMBER](doc/admin-console/environment-variables/#special-environment-variables)Allows your application to differentiate each running node on the application level.Provided
INSTANCE_TYPEWhether this instance is a "build" instance or a "production" instance.Provided
APP_FOLDERFolder in which the application is located (inside the git repository)Provided
APP_IDThe ID of your Clever Cloud applicationProvided
APP_HOMEThe absolute path to your application folderProvided
CC_DEPLOYMENT_IDProvided
COMMIT_IDThe git commit id currently deployedProvided
- - -### Docker - -[Docker Documentation](doc/docker/) - - - - - - - - - - - - -
Name
Description
Default value
CC_MOUNT_DOCKER_SOCKETSet to true to access the host Docker socket from inside your container.`false`
- -### Go - -[Go Documentation](doc/go/) - - - - - - - - - - - - -
Name
Description
Default value
CC_GO_PKGMakes the deployer run go get ${CC_GO_PKG} instead of go get <app_id>.
- -### Haskell - -[Haskell Documentation](doc/haskell/) - - - - - - - - - - - - -
Name
Description
Default value
CC_RUN_COMMANDCustom command to run your application.
- -### Java - -[Java Documentation](doc/java/) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Name
Description
Default value
CC_SBT_TARGET_DIR
GRADLE_DEPLOY_GOALDefine which gradle goals to run during build.
JAVA_VERSIONChoose the JVM version between `7` or `8`.`8`
MAVEN_DEPLOY_GOALDefine which maven goals to run during build.
NUDGE_APPID
PLAY1_VERSIONDefine which play1 version to use between `1.2`, `1.3` and `1.4`
SBT_DEPLOY_GOALDefine which sbt goals to run during build.`stage`
- -### NodeJS - -[NodeJS Documentation](doc/nodejs/) - - - - - - - - - - - - - - - - - - - - - - - - - - - https://www.clever-cloud.com/doc/nodejs/nodejs/#supported-package-managers -
Name
Description
Default value
CC_NODE_START_GOALDefines which node scripts to run`start`
CC_RUN_COMMANDDefine a custom command.Exemple for Meteor: `node .build/bundle/main.js <options>`
NODE_BUILD_TOOLChoose your build tool between `npm` and `yarn``npm`
NPM_TOKENPrivate repository token for npmjs.com
- -### PHP - -[PHP Documentation](doc/php/) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Name
Description
Default value
ALWAYS_POPULATE_RAW_POST_DATA
CC_LDAP_CA_CERT
LDAPTLS_CACERT
ENABLE_REDIS`false`
HTTP_TIMEOUTDefine a custom HTTP timeout`180`
MAX_INPUT_VARS
PHP_VERSIONChoose your PHP version between `5.6`, `7` and `7.1``7`
[SESSION_TYPE](doc/php/php-apps/#use-redis-to-store-php-sessions)Choose `redis` to use it as session store
SOCKSIFY_EVERYTHING
USE_SOCKS`false`
- -### Python - -[Python Documentation](doc/python/) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Name
Description
Default value
CC_PYTHON_CELERY_LOGFILERelative path to your Celery logfile: `/path/to/logdir`
CC_PYTHON_CELERY_MODULESpecify the Celery module you want to start: `mymodule`
CC_PYTHON_CELERY_USE_BEATSet to `true` to activate Beat support
CC_PYTHON_MODULESelect which module you want to start: `mymodule:app`
CC_PYTHON_USE_GEVENTSet to `true` to enable Gevent
HARAKIRITimeout (in seconds) after which an unresponding process is killed`180`
PYTHON_BACKENDChoose the Python backend to use between `uwsgi` and `gunicorn``uwsgi`
PYTHON_VERSIONChoose the Python version between `2.7` and `3.6`
PYTHON_SETUP_PY_GOALCustom setup goal to be launch after `requirements.txt` have been installed
STATIC_FILES_PATHRelative path to where your static files are stored: `path/to/static`
[STATIC_URL_PREFIX](doc/python/python_apps/#manage-your-static-files)The URL path under which you want to serve static file, usually `/public`
STATIC_WEBROOT
UWSGI_INTERCEPT_ERRORS
[UWSGI_ASYNC](doc/python/python_apps/#uwsgi-asynchronous-non-blocking-modes)Number of cores to use for uWSGI asynchronous/non-blocking modes
UWSGI_ASYNC_ENGINESelect the asynchronous engine for uWSGI (optional)
WSGI_WORKERSNumber of workers. (Defaut: automatically setup with the scaler size)
WSGI_THREADSNumber of threads per worker. (Defaut: automatically setup with the scaler size)
WSGI_BUFFER_SIZEBuffer size (in bytes) for uploads.`4096`
WSGI_POST_BUFFERINGMaximal size (in bytes) for the headers of a request. `4096`
ENABLE_GZIP_COMPRESSIONSet to `true` to gzip-compress the output of uwsgi
NGINX_READ_TIMEOUTRead timeout in seconds`300`
- -### Ruby - -[Ruby Documentation](doc/ruby/) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Name
Description
Default value
CC_RACKUP_SERVER
HARAKIRITimeout (in seconds) after which an unresponding process is killed`180`
RACK_ENV
RAILS_ENV
RUBY_VERSIONChoose the Ruby version to use.
STATIC_FILES_PATHRelative path to where your static files are stored: `path/to/static`
[STATIC_URL_PREFIX](doc/python/python_apps/#manage-your-static-files)The URL path under which you want to serve static file, usually `/public`
STATIC_WEBROOT
UWSGI_INTERCEPT_ERRORS
[UWSGI_ASYNC](doc/python/python_apps/#uwsgi-asynchronous-non-blocking-modes)Number of cores to use for uWSGI asynchronous/non-blocking modes
UWSGI_ASYNC_ENGINESelect the asynchronous engine for uWSGI (optional)
WSGI_WORKERSNumber of workers. (Defaut: automatically setup with the scaler size)
WSGI_THREADSNumber of threads per worker. (Defaut: automatically setup with the scaler size)
WSGI_BUFFER_SIZEBuffer size (in bytes) for uploads.`4096`
WSGI_POST_BUFFERINGMaximal size (in bytes) for the headers of a request. `4096`
ENABLE_GZIP_COMPRESSIONSet to `true` to gzip-compress the output of uwsgi
NGINX_READ_TIMEOUTRead timeout in seconds`300`
- -### Rust - -[Rust Documentation](doc/rust/) - - - - - - - - - - - - -
Name
Description
Default value
RUSTUP_CHANNELRequire a specific channel version with `beta`, `nightly`, or a specifiv version like `1.13.0`
- -## Addons - -### FS Bucket - -[FS Bucket Documentation](doc/addons/fs_buckets/) - - - - - - - - - - - - - - - - - -
Name
Description
Default value
APP_BUCKET_HOST
CC_FS_BUCKET
- -### MongoDB - -[MongoDB Documentation](doc/mongodb/) - - - - - - - - - - - - - - - - - - - - - - -
Name
Description
Default value
MONGODB_ADDON_DBProvided, Generated upon creation
MONGODB_ADDON_PASSWORDProvided, Generated upon creation
MONGODB_ADDON_USERProvided, Generated upon creation
- -### MySQL - -[MySQL Documentation](doc/mysql/) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Name
Description
Default value
ADDON_API_HOSTProvided, Generated upon creation
EXISTING_BACKUP_URLProvided, Generated upon creation
INTERNAL_ADDON_AUTH_PASSProvided, Generated upon creation
MYSQL_ADDON_DBProvided, Generated upon creation
MYSQL_ADDON_PASSWORDProvided, Generated upon creation
MYSQL_ADDON_ROLEProvided, Generated upon creation
MYSQL_ADDON_USERProvided, Generated upon creation
- -### PostgreSQL - -[PostgreSQL Documentation](doc/postgresql/) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Name
Description
Default value
ADDON_API_HOSTProvided, Generated upon creation
EXISTING_BACKUP_URLProvided, Generated upon creation
INTERNAL_ADDON_AUTH_PASSProvided, Generated upon creation
POSTGRESQL_ADDON_DBProvided, Generated upon creation
POSTGRESQL_ADDON_PASSWORDProvided, Generated upon creation
POSTGRESQL_ADDON_ROLEProvided, Generated upon creation
POSTGRESQL_ADDON_USERProvided, Generated upon creation
- -### Redis - -[Redis Documentation](doc/redis/) - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Name
Description
Default value
REDIS_HOSTProvided, Generated upon creation
REDIS_PORTProvided, Generated upon creation
REDIS_PASSWORDProvided, Generated upon creation
REDIS_TOKEN
- - -### New Relic - - - - - - - - - - - - - - - - - -
Name
Description
Default value
NEWRELIC_APPNAME
NEWRELIC_LICENSE
- - - -### Socks - - - - - - - - - - - - - - - - - - - - - - -
Name
Description
Default value
SOCKS_ADDON_HOST
SOCKS_ADDON_PORT
SOCKS_ADDON_PRIVATE_KEY
- -### VPN - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Name
Description
Default value
VPN_ADDON_CRT
VPN_ADDON_CACRT
VPN_ADDON_KEY
VPN_ADDON_HOST
VPN_ADDON_PORT
VPN_ADDON_TAKEY
VPN_TARGETS
diff --git a/commons/get-help/support.md b/commons/get-help/support.md deleted file mode 100644 index b2678cf13..000000000 --- a/commons/get-help/support.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Support -position: 1 -tags: -- support ---- - -# Support - -We provide basic support free-of-charge to all our users, even those who are not paying customers. - -## Clever Cloud Help - -Seek help by querying us by email, allowing you to quickly gain answers to your Clever Cloud specific questions and open a ticket directly with our support staff. We will respond to your email within a few hours, or two business days in the worst case. - -* - -## Live Chat - -You can find in the console a button to start a live chat with one of our engineers. Feel free to use it when this service available, from 10am to 6pm CEST+2 during open business days. - -## Critical application support - -Clever Cloud offers a premium support option providing 24x7 a direct line to our team of support engineers. Our teamโ€™s focus is investigating and solving new problems, getting feedback on the service and working hard to improve the core service. - -Get more information and contact our sales team: - -* - diff --git a/commons/get-help/troubleshooting.md b/commons/get-help/troubleshooting.md deleted file mode 100644 index 38e996f67..000000000 --- a/commons/get-help/troubleshooting.md +++ /dev/null @@ -1,147 +0,0 @@ ---- -title: Troubleshooting -position: 4 -tags: -- support ---- - -## Troubleshooting - -### Common Technical Problems - - - -

- -#### Git and File Persistence - -> "Why are my files disappearing after an application restart?โ€ - -Clever Cloud use Git to transfer your code and application's assets from your local host to your scaler. If your application writes files on the local file system, those files are not committed: so you can't save these files from a instance to an other. - -For most of Cloud providers, the use of the file system is not a good practice. But we know it could be sometimes pretty useful. That's why we provide an on-demand file system, easily pluggable to your app. In that case, your files will not be stored on the Git file system, but on a clustered file system, dedicated to it, accessible via FTP. This is the FS Bucket add-on. - -Setup FS Bucket for your app is kinda straightforward, because it consist in add a simple Json file at the root of your application. - -The Json contains two parameters: the ID of the FS Bucket, and the path you want to use as a FS. - -*Related page: [File System buckets](/doc/addons/clever-cloud-addons/#fs-buckets-file-system-with-persistance/).* - - -#### Error about Empty Repository - -> โ€œLogs are telling me \"warning: You appear to have cloned an empty repository\"โ€ - -This usually means that you created an application and asked to start it in the console without having pushed to it before. - -*You are not working on the master branch and pushed your branch to Clever Cloud* - -Clever Cloud uses the master branch to deploy your application but this does not mean that you cannot use another one on your computer. -The only thing that differs if you use another branch than the master one on your computer is that you need to explicitly tell that Clever Cloud needs to consider your branch as the master one. - -```bash -$ git push :master -``` - -If you called the Clever Cloud repository "clever" and your local branch is "production", this becomes - -```bash -$ git push clever production:master -``` - -*Related page: [Deploy an application](/doc/clever-cloud-overview/add-application/).* - -#### Error about not being a git repository - -> โ€œI get errors telling me that it's not a git repository, what does it mean? - -This can mean several things, depending on the exact error message - -*fatal: Not a git repository (or any of the parent directories)* - -This means that the folder in which you are is not a git repository. -Please refer to our "git deployment" documentation for how to set it up properly. - -*fatal: 'clever' does not appear to be a git repository* - -"clever" is a name used in our examples to represent the Clever Cloud servers. -In order to be able to use the same name for yourself, you will add to create it like this: - -```bash -$ git remote add clever -``` - -*Related page: [Git deployment](/doc/clever-cloud-overview/add-application/)* - -#### SSH: Password is Asked - -> โ€œWhen I try to push my app, the server responds by asking a password.โ€ - -This occurs when a wrong ssh key has been entered in your Clever Cloud profile, in the dashboard. - -Most of the time, it's due to the presence of multiple ssh key, generated by 3rd party softwares, like Github for Mac. - -We strongly recommend using a single SSH key when interacting with Clever Cloud. But if you want to use multiple keys, the trick is to configure your local ssh by adding a custom Host to ~/.ssh/config (create it if it doesn't exist), generate a secondary ssh key specifically for your Clever Cloud account (e.g., ~/.ssh/id_rsa_clevercloud) and then execute ssh-add ~/.ssh/id_rsa_clevercloud from your local git project directory. - -Your `.ssh/config` should loo like this: - -```bash -#config for Clever Cloud specific key -Host ccloud - Hostname push.clever-cloud.com - User git - IdentityFile ~/.ssh/id_rsa_clevercloud -``` - -#### Node failed to deploy - -> โ€œMy Node.js application is unable to start. Logs are not helpingโ€ - -This kind of silent error may be due to the server port your have setup in your application. Make sure your app is listening on 8080. -Most of the time, this simple line could do the trick in your main JS file: - -```javascript -// Listen on port 8080 -server.listen(8080); -``` - -*Related page: [Deploy Node.js apps](/doc/nodejs/nodejs/).* diff --git a/commons/tools/crons.md b/commons/tools/crons.md deleted file mode 100644 index c5806a212..000000000 --- a/commons/tools/crons.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: Running crons -position: 1 -tags: -- developer ---- - -# CRON configuration file - -The configuration file used for crontab is `/clevercloud/cron.json`. - -Here is the general syntax: - -```haskell - [ - "", - "" - ] -``` - -The string `` must use the cron format: - -```javascript -M H d m Y command -``` - -There are two restrictions about the usage of crontab on our platform: - -* The special date `@reboot` is not available since the crontab is added after the startup of the instance -* You must use the absolute path of commands - -You can use the special variable `$ROOT` to refer to the root folder of your application. - -Example of `clevercloud/cron.json` which executes the file `cron.php` every 5 minutes: - -```haskell - [ - "*/5 * * * * /usr/bin/php $ROOT/cron.php" - ] -``` - -
-

Warning:

-

All the servers are configured to use Coordinated Universal Time (UTC), please keep it in mind when configuring cron tasks to run at a specific hour.

-
- -
-

Warning:

-

We do not currently support the clustering of cron tasks, you must manage it yourself if your application requires more than one instance.

-

Also, please note that environment variables like `INSTANCE_NUMBER` are not yet injected into crons. You have to add this line at the beginning of your script: - ```bash - source /home/bas/applicationrc - ``` -

-

Once you added this line at the top of your script, you can access the directory in which your applicaiton is using `$APP_HOME`

-
- - -_* For more information about the syntax, you can check this page_ - - diff --git a/commons/tools/new-relic.md b/commons/tools/new-relic.md deleted file mode 100644 index 76d08daff..000000000 --- a/commons/tools/new-relic.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: New Relic -position: 2 -shortdesc: Configuring Newrelic on Clever Cloud -tags: -- developer ---- - -# New Relic - -[New Relic](http://www.newrelic.com/) is a software analytics company based in San Francisco, California. -New Relic's technology monitors Web and mobile applications in real-time that run in cloud, on-premise, or hybrid -environments. You can easily setup a New Relic based monitoring on your application to monitor it and find -performances problems. - -New Relic can be used on Clever Cloud with Java, NodeJS, PHP, Ruby and Scala applications. - -## New Relic for NodeJS and Ruby - -New Relic is very simple to install in a NodeJS or Ruby application as it is a simple dependency. -Install instructions for -[NodeJS](https://docs.newrelic.com/docs/agents/nodejs-agent/installation-configuration/installing-maintaining-nodejs) -and [Ruby](https://docs.newrelic.com/docs/agents/ruby-agent/installation-configuration/ruby-agent-installation) -are available in [the New Relic documentation](https://docs.newrelic.com/). - -## New Relic for Java, Scala and PHP - -To use New Relic in Java, Scala or Ruby instances, you need to configure it as it is provided directly inside the -instances. - -### Necessary information - -Before setting up your app, be sure to have a [New Relic Account](http://www.newrelic.com/). - -### Configuration - -To configure your New Relic, you have to create and add a `./clevercloud/newrelic.json` file in your project, with the -following fields: - -```javascript -{ - "license": "licenceID", - "appname": "NameOfYourApp(optional)" -} -``` - -Deploy your application on Clever Cloud with this file. A few minutes later, your application will begin sending data -to New Relic. Once we receive the data, your application will be listed on your dashboard. - - - diff --git a/commons/tools/varnish.md b/commons/tools/varnish.md deleted file mode 100644 index 58ccaaaf0..000000000 --- a/commons/tools/varnish.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Varnish as HTTP Cache -position: 3 -shortdesc: Configuring Varnish on Clever Cloud -tags: -- varnish -- caching ---- - -# Varnish - -[Varnish](https://www.varnish-cache.org/) is a HTTP proxy-cache, which works as a reverse proxy between your application -and the client. Following rules defined by the user, Varnish will cache the data of an application to reduce the load. - -## Enable Varnish for your application - -Varnish is provided by default in PHP >= 5.5 instances. To enable it, you just have to create a `varnish.vcl` file -in the `/clevercloud` folder. - -This file describes how Varnish caches your applications and how it decides to return a cached resource or not. - -
-

If you have a PHPย FTP application or if your `varnish.vcl` file is on an FSย Bucket, -make sure you redeploy the application for the changes to take effect.

-

The vcl 4.0; and backend section of the `varnish.vcl` configuration file are not necessary as they -are already handled by Clever Cloud.

-
- -## Varnish version / version migration - -We use **Varnish 4**. If you already have a configuration file written for varnish 3, you can use -[varnish3to4](https://github.com/fgsch/varnish3to4) to convert it to varnish 4. - -## Example files - -We provide some [examples of Varnish configuration files](https://github.com/CleverCloud/varnish-examples) that you can -use for your application. Create a `/clevercloud` folder at the root of your application if it does not exist, -rename the file to `varnish.vcl` and move it in the `/clevercloud` folder. diff --git a/content/_index.md b/content/_index.md new file mode 100644 index 000000000..a3018df56 --- /dev/null +++ b/content/_index.md @@ -0,0 +1,84 @@ +--- +type: docs +title: Clever Cloud Documentation +description: Documentation and guides to deploy, manage, and monitor your services on Clever Cloud +layout: hextra-home +disableSidebar: false +width: wide +aliases: +- /doc/developer +--- + +{{< hextra/hero-badge link="https://github.com/clevercloud/documentation">}} +
+ Contribute + {{< icon name="arrow-circle-right" attributes="height=14" >}} +{{< /hextra/hero-badge >}} + +
+{{< hextra/hero-headline >}} + Deploy and manage your apps + on Clever Cloud +{{< /hextra/hero-headline >}} +
+ +
+{{< hextra/hero-subtitle style="margin:.3rem 0 2rem 0">}} + Documentation and guides to deploy, + manage, and monitor your apps. +{{< /hextra/hero-subtitle >}} +
+ +
+{{< hero-button-primary text="Quickstart" link="/developers/doc/quickstart" >}} +{{< hero-button-secondary text="Explore" link="/developers/doc/" >}} +
+ +
+ +{{< hextra/feature-grid >}} + {{< hextra/feature-card + title="Environment Variables" + subtitle="Environment variables are a simple way of configuring your applications, their deployment and their behaviour." + link="/developers/doc/reference/reference-environment-variables" + class="hx:aspect-auto hx:md:aspect-[1.1/1] hx:max-md:min-h-[340px]" + image="/images/icons.png" + imageClass="hx:top-[40%] hx:left-[24px] hx:w-[180%] hx:sm:w-[110%] hx:dark:opacity-80" + style="background: radial-gradient(ellipse at 50% 80%,rgba(58, 56, 113, 0.1),hsla(0,0%,100%,0));" + >}} + {{< hextra/feature-card + title="API" + subtitle="The Clever Cloud API reference." + link="/developers/api" + class="hx:aspect-auto hx:md:aspect-[1.1/1] hx:max-lg:min-h-[340px]" + image="/images/metrics-home.png" + imageClass="hx:top-[40%] hx:left-[36px] hx:w-[180%] hx:sm:w-[110%] hx:dark:opacity-80" + style="background: radial-gradient(ellipse at 50% 80%,rgba(203, 28, 66, 0.1),hsla(0,0%,100%,0));" + >}} + {{< hextra/feature-card + title="The CLI Clever Tools" + subtitle="An official Command Line Interface for Clever Cloud." + link="/developers/doc/cli" + class="hx:aspect-auto hx:md:aspect-[1.1/1] hx:max-md:min-h-[340px]" + image="/images/brand.png" + imageClass="hx:top-[40%] hx:left-[36px] hx:w-[110%] hx:sm:w-[110%] hx:dark:opacity-80" + style="background: radial-gradient(ellipse at 50% 80%,rgba(245, 116, 97, 0.1),hsla(0,0%,100%,0));" + >}} + {{< hextra/feature-card + title="Steps by Steps Guides" + subtitle="Find detailed tutorials to deploy your favorite framework on Clever Cloud" + link="/developers/guides" + >}} + + {{< hextra/feature-card + title="Deploy an application" + subtitle="See supported languages and how to configure your app to deploy successfully" + link="/developers/doc/applications" + >}} + {{< hextra/feature-card + title="Connect your application to dependencies" + subtitle="See available add-ons such as MySQL, PostgreSQL, Redis, Mongo, Elasticโ€ฆ" + link="/developers/doc/addons" + >}} + +{{< /hextra/feature-grid >}} diff --git a/content/api/_index.md b/content/api/_index.md new file mode 100644 index 000000000..536c1fb56 --- /dev/null +++ b/content/api/_index.md @@ -0,0 +1,33 @@ +--- +type: docs +linkTitle: API +title: API +description: Clever Cloud API documentation. Learn how to use our API, endpoints, authentication methods, and how to access it from multiple tools. +keywords: +- rest api +- authentication +- endpoints +- documentation +- integration +aliases: +- /doc/api/ +- /doc/openapi +- /doc/clever-cloud-addons-api/add-ons-api +- /doc/clever-cloud-apis/add-ons-api +- /doc/clever-cloud-apis/cc-api +- /doc/extend/cc-api +- /doc/getting-started/openapi +- /docs/openapi +- /openapi +--- + +{{< hextra/hero-subtitle >}} + Automate your workflows and connect your services to Clever Cloud using its API. +{{< /hextra/hero-subtitle >}} + +{{< cards >}} + {{< card link="/developers/api/howto" title="How to use our API" subtitle="Learn more about Clever Cloud API, endpoints, auth and how to access it from multiple tools." icon="api" >}} + {{< card link="/developers/api/v2" title="Base v2 Endpoints" subtitle="Our base API endpoints with users, organisations, applications, add-ons, etc." icon="endpoints" >}} + {{< card link="/developers/api/v4" title="New v4 Endpoints" subtitle="More recent API endpoints with billing, deployments, load balancers, logs, etc." icon="new" >}} + +{{< /cards >}} diff --git a/content/api/howto.md b/content/api/howto.md new file mode 100644 index 000000000..867a028c8 --- /dev/null +++ b/content/api/howto.md @@ -0,0 +1,117 @@ +--- +type: docs +weight: 1 +linkTitle: Clever Cloud API Overview +title: Clever Cloud API Overview +description: Getting started with the Clever Cloud API +keywords: +- rest api +- authentication +- integration +- oauth +- tokens +- developer guide +--- + +The [Clever Cloud Console](https://console.clever-cloud.com) and [Clever Tools](https://github.com/CleverCloud/clever-tools) allow you to manage your account and products with the same public API you can use for your own services and integrations. This article will explain how to connect to this API and use it. + +{{< cards >}} + {{< card link="/developers/api/v2/" title="Base v2 Endpoints" subtitle="Our base API endpoints with users, organisations, applications, add-ons, etc." icon="endpoints" >}} + {{< card link="/developers/api/v4/" title="New v4 Endpoints" subtitle="More recent API endpoints with billing, deployments, load balancers, logs, etc." icon="new" >}} +{{< /cards >}} + +## Request the API + +Clever Cloud's REST API offers two authentication mechanisms to meet different integration needs: + +* **API tokens** provide a straightforward way to authenticate requests on behalf of a specific user. These tokens operate similarly to passwords and should be handled with appropriate security measures. API tokens are ideal for personal scripts, CLI tools, and scenarios where you're accessing your own resources. Use them to request the API Bridge: https://api-bridge.clever-cloud.com + +* **OAuth 1** is designed for third-party applications that need to access Clever Cloud resources on behalf of their users. This authentication flow allows applications to request permissions from users without requiring direct access to their credentials. OAuth 1 is recommended for public applications, services that integrate with multiple user accounts, or any scenario where user delegation is required. + +Choose the authentication method that best aligns with your specific integration requirements and security considerations. + +### API tokens + +Clever Cloud Console allows you to easily create and manage API tokens. + +![Manage API tokens in Clever Cloud Console](/images/console-api-tokens.webp) + +[Clever Tools](https://github.com/CleverCloud/clever-tools) provides a `clever tokens` set of commands. This feature needs to be enabled: + +```bash +clever features enable tokens +clever tokens create "CI job Foobar" +clever tokens create "Quick local test" --expiration 1h +``` + +You can also list or revoke tokens: + +```bash +clever tokens -F json +clever tokens revoke api_tokens_xxx +``` + +Once created, API tokens must be used through the bridge URL: + +```bash +curl https://api-bridge.clever-cloud.com/v2/self -H "Authorization: Bearer [API_TOKEN]" +``` + +### clever curl + +`clever curl` is a wrapper around `curl`, it supports the same arguments and handles the authentication automatically for you using the CLI account you're currently logged in with. It's a simple way to make requests to the Clever Cloud API if [Clever Tools](https://github.com/CleverCloud/clever-tools) are installed on your system. + +```bash +clever curl https://api.clever-cloud.com/v2/self +clever curl https://api.clever-cloud.com/v2/summary +clever curl https://api.clever-cloud.com/v4/products/zones +clever curl https://api.clever-cloud.com/v2/organisations//applications | jq '.[].id' +clever curl https://api.clever-cloud.com/v4/billing/organisations//.pdf > invoice.pdf +``` + +### Official clients/SDKs + +You can request the Clever Cloud API from multiple languages through our official clients/SDKs: +- [Go](https://github.com/CleverCloud/clevercloud-client-go) +- [JavaScript](https://github.com/CleverCloud/clever-client.js) +- [Rust](https://github.com/CleverCloud/clevercloud-sdk-rust) + +### OAuth1 + +If you have an application that needs to access Clever Cloud resources on behalf of your users, you can use OAuth1. This is the recommended way to authenticate third-party applications. To manage OAuth tokens linked to your account, use the [Clever Cloud Console](https://console.clever-cloud.com/users/me/oauth-tokens). + +#### Create an OAuth consumer + +First, you'll need to create an OAuth consumer for your application. This can be done in the [Clever Cloud console](https://console.clever-cloud.com). Go to your organisation, click on **Createโ€ฆ**, then on **an OAuth consumer** and fill the form. You will get a consumer key and a consumer secret for your application. + +#### Integrate your application + +Your application must implement the OAuth 1 dance. It mostly consists of the following steps: + +* Get a "request token" + * [`POST /oauth/request_token`](/api/v2/#post-/oauth/request_token) + * You will get a temporary `oauth_token` and `oauth_token_secret` +* Redirect the user to the authorization page with the `oauth_token` + * [`GET /oauth/authorize`](/api/v2/#get-/oauth/authorize) + * Once the user is logged in, the browser will be redirected to your application with the query params `oauth_verifier` and `oauth_token` +* Make sure the `oauth_token` from the first step matches the one you get after the redirection +* Get the "access token" with the `oauth_token`, `oauth_token_secret` and `oauth_verifier` + * [`POST /oauth/access_token`](/api/v2/#post-/oauth/access_token) + * You will get the user `oauth_token` and `oauth_token_secret` + +Once done, your application can make API requests on behalf of the user with an OAuth 1 compatible client and the following tokens: + +* Consumer key +* Consumer secret +* User token +* User token secret + +More information about [OAuth dance](https://oauth.net/core/1.0/#anchor9). + +#### About the OAuth1 signature + +There are 3 supported methods for the signature: `PLAINTEXT`, `HMAC-SHA1` and `HMAC-SHA512`. While `PLAINTEXT` is way easier, `HMAC-SHA512` ensures that the request is totally verified. The `Authorization` header must start with `OAuth`, with a specific format for key/values: + +```bash +Authorization: OAuth key="value", key2="value2" +``` diff --git a/content/api/v2.md b/content/api/v2.md new file mode 100644 index 000000000..6cd36f260 --- /dev/null +++ b/content/api/v2.md @@ -0,0 +1,20 @@ +--- +type: openapi +linkTitle: APIv2 Reference +title: APIv2 Reference +description: Complete reference documentation for the Clever Cloud APIv2. Includes methods and examples to automate deployments and orchestration. +keywords: +- openapi +- api +- v2 +- automation +- deployment +- reference +width: wide +# See https://swagger.io/docs/open-source-tools/swagger-ui/usage/configuration/ +swagger: + url: https://api.clever-cloud.com/v2/openapi.json + filter: true + tagsSorter: alpha + operationsSorter: alpha +--- diff --git a/content/api/v4.md b/content/api/v4.md new file mode 100644 index 000000000..70859e23f --- /dev/null +++ b/content/api/v4.md @@ -0,0 +1,371 @@ +--- +type: docs +linkTitle: APIv4 Reference +title: APIv4 Reference +description: Reference documentation for the Clever Cloud APIv4 for billing, deployments, load balancers, logs, operators, etc. +keywords: +- api +- reference +- v4 +- billing +- deployment +- operators +--- +Clever Cloud provides a public REST API used by its own services and customers, known as [`/v2`](/api/v2/). +As our platform evolves, we're progressively moving to `/v4` endpoints, adding functionalities, with a more modern approach: +``` +https://api.clever-cloud.com/v4/ +``` + +While the documentation moves towards completion, this page presents the most useful endpoints and example requests available now. + +{{< callout type="info" >}} +Each query response contains a `Sozu-Id`. If you need help from our support team, it can help to provide it. +{{< /callout>}} + +## Billing +- `/v4/billing/organisations/{orgid}/invoices` +- `/v4/billing/organisations/{orgid}/invoices/{invoiceid}` +- `/v4/billing/organisations/{orgid}/invoices/{invoiceid}.html` +- `/v4/billing/organisations/{orgid}/invoices/{invoiceid}.pdf` +- Type: `GET` + +You can use optional parameters to filter it: +| Parameter | Type | Comment | +| :--- | :--- | :--- | +| `limit` | `int` | | +| `since` | `string` | ISO 8601 formatted | +| `until` | `string` | ISO 8601 formatted | + +Example response, for each invoice: +```bash +[ + { + "invoice_number": "", + "kind": "", + "owner_id": "", + "address": { + "address_id": "", + "owner_id": "", + "name": "", + "company": "", + "address": "", + "city": "", + "zipcode": "", + "country_alpha2": "", + "vat_number": "", + "vat_percent": float, + "customer_cost_center": "", + "customer_purchase_order": "" + }, + "emission_date": "", + "pay_date": "", + "status": "", + "currency": "", + "price_factor": float, + "discount": float, + "vat_percent": float, + "total_tax_excluded": { + "currency": "", + "amount": float, + "amount_formatted": "", + "default_display": "" + }, + "total_tax": { + "currency": "", + "amount": float, + "amount_formatted": "", + "default_display": "" + }, + "category": "", + "payment_provider": "", + "transaction_id": "", + "customer_order_id": "" + }, + {โ€ฆ} +] +``` + +## Deployments +- `/v4/orchestration/organisations/{ownerId}/applications/{applicationId}/deployments` +- `/v4/orchestration/organisations/{ownerId}/applications/{applicationId}/deployments/{deploymentId}` +- Type: `GET` + +Example response, for each deployment: +```bash +[ + { + "id": "", + "ownerId": "", + "applicationId": "", + "startDate": "", + "state": "", + "steps": [ + { + "state": "", + "date": "" + }, + { + "state": "", + "date": "" + }, + { + "state": "", + "date": "" + } + ], + "version": { + "commitId": "" + }, + "origin": { + "action": "", + "cause": "", + "source": "", + "authorId": "", + "constraints": [ + "" + ], + "priority": "" + }, + "hasDedicatedBuild": boolean + }, + {โ€ฆ} +] +``` + +## Instances +- `/v4/orchestration/organisations/{ownerId}/applications/{applicationId}/instances` +- Type: `GET` + +You can use optional parameters to filter it: +| Parameter | Type | Comment | +| :--- | :--- | :--- | +| `deploymentId` | `string` | | +| `limit` | `int` | | +| `excludeDeleted` | `boolean`| | +| `since` | `string` | ISO 8601 formatted | +| `until` | `string` | ISO 8601 formatted | +| `order` | `string` | `ASC` or `DESC` | +| `includeState` | `string` | case sensitive, repeated | +| `excludeState` | `string` | case sensitive, repeated | + +Example response, for each instance: +```bash +[ + { + "id": "", + "ownerId": "", + "applicationId": "", + "deploymentId": "", + "name": "", + "flavor": "", + "index": int, + "state": "", + "creationDate": "", + "deletionDate": "", + "network": { + "ip": "", + "port": int + }, + "isBuildVm": boolean + }, + {โ€ฆ} +] +``` + +## Load Balancers +- `/v4/load-balancers/organisations/{ownerId}/applications/{applicationId}/load-balancers/default` +- Type: `GET` + +Example response: +```bash +[ + { + "id": "", + "name": "", + "zoneId": "", + "dns": { + "cname": "", + "a": [] + } + } +] +``` + +## Logs + +### Get logs stream + +- `/v4/logs/organisations/{ownerId}/applications/{applicationId}/logs` +- Type: `GET` + +Answers with logs in a SSE (Server-Sent Events) stream. You can use optional parameters to filter it: + +| Parameter | Type | Comment | +| :--- | :--- | :--- | +| `deploymentId` | `string` | | +| `instanceId` | `string` | | +| `since` | `string` | ISO 8601 formatted | +| `until` | `string` | ISO 8601 formatted | +| `field` | `string` | Allow to get only asked fields, repeated | +| `filter` | `string` | Case insensitive `contains` type search | +| `limit` | `int64 ` | Minimum: `1` | +| `service` | `string` | systemd service name, repeated (default: `bas` and `bas-deploy`, can be `all`) | +| `throttleElements` | `int` | Maximum elements read per `throttlePerInMilliseconds`, default `100` | +| `throttlePerInMilliseconds` | `long` | Default `300` | + +### Create a logs drain + +- `/v4/drains/organisations/{ownerId}/applications/{applicationId}/drains` +- Type: `POST` + +```json +{ + "kind": "ACCESSLOG|LOG", + "recipient": { + "url": "", + "type":"" + // Optional parameters, depending on recipient_type + } +} +``` + +| Parameter | Type | Comment | +| :--- | :--- | :--- | +| `type` | `string` | `DatadogRecipient`, `ElasticsearchRecipient`, `NewRelicRecipient`, `OVHTCPRecipient`, `RawRecipient` | +| `username` | `string` | Basic Auth username | +| `password` | `string` | Basic Auth password | +| `index` | `string` | ElasticSearch index | +| `apiKey` | `string` | NewRelic API key | +| `token` | `string` | OVHcloud token | +| `rfc5424StructuredDataParameters` | `string` | OVHcloud RFC 5424 structured data parameters | + +### List logs drains + +- `/v4/drains/organisations/{ownerId}/applications/{applicationId}/drains` +- Type: `GET` + +### Manage a logs drain + +- `/v4/drains/organisations/{ownerId}/applications/{applicationId}/drains/{drainId}` +- Type: `GET`/`DELETE` + +## Operators +A Clever Cloud Operator deploys and manage resources for a given service. Available operators are: `keycloak`, `matomo`, `metabase`, `otoroshi`. + +- `/v4/addon-providers/addon-{operator_name}/addons/{operator_id}` +- Type: `GET` + +Example response: +```bash +{ + "resourceId": "real_id", + "addonId": "addon_id", + "name": "resource_name", + "ownerId": "user_or_org_id", + "plan": "PLAN_NAME", + "version": "x.y.z", + "javaVersion": "X", # Optional + "phpVersion": "X", # Optional + "accessUrl": "https://service-web-ui-id.services.clever-cloud.com", + "initialCredentials": { # Optional + "user": "user_name", + "password": "user_password" + }, + "api": { # Optional + "url": "https://service-api-id.services.clever-cloud.com", + โ€ฆ + }, + "availableVersions": [ + "x.y.z", + โ€ฆ + ], + "resources": { + "entrypoint": "app_id", + โ€ฆ + }, + "features": { + โ€ฆ + } +} +``` + +- `/v4/addon-providers/addon-{operator_name}/addons/{operator_id}/reboot` +- `/v4/addon-providers/addon-{operator_name}/addons/{operator_id}/rebuild` +- Type: `POST` +- Response code: `204` + +### Network Groups +You can add the deployed service main application in a [Network Group](/doc/develop/network-groups/) to activate some enhanced features: +- `keycloak`: [Secured Multi Instances feature](/doc/addons/keycloak/#secured-multi-instances) +- `otoroshi`: once in a Network Group, an Otoroshi instance can be used in front of Clever Cloud applications + +- `/v4/addon-providers/addon-{operator_name}/addons/{operator_id}/networkgroup` +- Type: `POST` +- Response code: `202` + +Response contains the full operator object with `networkGroup` feature enabled: +```bash +"features": { + "networkGroup": { + "id": "ng_id" + } +} +``` + +- `/v4/addon-providers/addon-{operator_name}/addons/{operator_id}/networkgroup` +- Type: `DELETE` +- Response code: `204` +If no Network Group is found, the `networkGroup` feature value is `null`: + +```bash +"features": { + "networkGroup": null +} +``` + +## Products zones +- `/v4/products/zones` +- `/v4/products/zones/{name}` +- Type: `GET` + +Example response, for each zone: +```bash +[ + { + "id": "", + "name": "", + "country": "", + "countryCode": "", + "city": "", + "displayName": "", + "lat": float, + "lon": float, + "outboundIPs": [], + "tags": [] + }, + {โ€ฆ} +] +``` + +## Pulsar policies +- `/v4/addon-providers/addon-pulsar/addons/{addon-id}/storage-policies` +- Type: `GET`/`PATCH` + +Define or get offload/retention policies of a [Pulsar add-on](/doc/addons/pulsar). Retention is how long messages are kept in the topic. Offload is how long messages are kept in the hot storage (NVMe SSD) before being moved to Cellar object storage (S3 compatible, HDD). + +Example query/response: +```bash +{ + "retentionPolicies": { + "sizeInMB": number, + "durationInDays": number + }, + "offloadPolicies": { + "durationInDays": number, + "sizeInMB": number + } +} +``` + +A `null` value means an infinite retention or no offload. diff --git a/content/changelog/2023/11-10-healthcheck-for-java.md b/content/changelog/2023/11-10-healthcheck-for-java.md new file mode 100644 index 000000000..05eb39090 --- /dev/null +++ b/content/changelog/2023/11-10-healthcheck-for-java.md @@ -0,0 +1,24 @@ +--- +title: Custom healthcheck paths for Java applications +date: 2023-11-10 +tags: + - applications + - java +authors: + - name: Julien Durillon + link: https://github.com/judu + image: https://github.com/judu.png?size=40 +description: Your java applications can now be deployed with one or multiple custom healtchecks +aliases: +- /changelog/2023-11-10-healthcheck-for-java +excludeSearch: true +--- + +You can now define the paths that the orchestrator will call to validate a deployment for Java applications through one or multiple `CC_HEALTH_CHECK_PATH` environment variables. It works as follows: + +* If the application responds on this specified path, and the response code is between `200` and `300`, the orchestrator considers that the deployment has been validated. +* If it responds with another error code outside this interval, the application is considered to have failed its deployment. + +Currently, the orchestrator only checks whether the application is listening to TCP port `8080`. It does not always mean that the application has started correctly. + +- Read the documentation about [Deployment healthcheck path](/doc/develop/healthcheck/) ๐Ÿ“– diff --git a/content/changelog/2023/11-29-api-update.md b/content/changelog/2023/11-29-api-update.md new file mode 100644 index 000000000..db764ad14 --- /dev/null +++ b/content/changelog/2023/11-29-api-update.md @@ -0,0 +1,45 @@ +--- +title: Identify VM Tasks through the API +date: 2023-11-29 +tags: + - api + - applications +authors: + - name: Alexandre Duval + link: https://github.com/kannarfr + image: https://github.com/kannarfr.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: You can now check if an application is a task via the Clever Cloud API +aliases: +- /changelog/2023-11-29-api-update +excludeSearch: true +--- +For years, you can deploy applications on Clever Cloud as a `Task` with the API or more recently the `CC_TASK=true` environment variable. As this feature will be widely available and used, the API has been updated to return such a state in the `instance.lifetime` object: + +```json{filename="GET https://api.clever-cloud.com/v2/self/applications/",linenos=table,hl_lines=[17]} +{ + "id": "string", + "name": "string", + "description": "string", + "zone": "string", + "zoneId": "string", + "instance": { + "type": "string", + "version": "string", + "variant": {}, + "minInstances": int, + "maxInstances": int, + "maxAllowedInstances": int, + "minFlavor": {}, + "maxFlavor": {}, + "flavors": [], + "lifetime": "string", //Allowed: REGULAR โ”ƒ MIGRATION โ”ƒ TASK + "instanceAndVersion": "string" + }, + โ€ฆ +} +``` + +- [Read the full APIv2 documentation](/api/v2) diff --git a/content/changelog/2023/12-13-cellar-migration-tool-update.md b/content/changelog/2023/12-13-cellar-migration-tool-update.md new file mode 100644 index 000000000..34880b757 --- /dev/null +++ b/content/changelog/2023/12-13-cellar-migration-tool-update.md @@ -0,0 +1,19 @@ +--- +title: Cellar migration tool 2.1.0 is available +date: 2023-12-13 +tags: + - addons + - cellar +authors: + - name: Arnaud Lefebvre + link: https://github.com/BlackYoup + image: https://github.com/BlackYoup.png?size=40 +description: Keep-alive support and better behavior during network errors +aliases: +- /changelog/2023-12-13-cellar-migration-tool-update +excludeSearch: true +--- + +If you want to import your object storage data on Clever Cloud, you can use our open source [Cellar migration tool](https://github.com/CleverCloud/cellar-migration/releases/tag/v2.1.0), written in Rust. Its new release adds support for keep-alive when used from S3 clients and prevents panic if a network error occurs. + + - Check this project [on GitHub](https://github.com/CleverCloud/cellar-migration) {{< icon "github" >}} diff --git a/content/changelog/2023/12-15-sozu-0.15.18.md b/content/changelog/2023/12-15-sozu-0.15.18.md new file mode 100644 index 000000000..3053f6ab9 --- /dev/null +++ b/content/changelog/2023/12-15-sozu-0.15.18.md @@ -0,0 +1,21 @@ +--- +title: Sลzu 0.15.18 is available +date: 2023-12-15 +tags: + - sozu +authors: + - name: Florentin Dubois + link: https://github.com/FlorentinDUBOIS + image: https://github.com/FlorentinDUBOIS.png?size=40 +description: Better, faster, stronger +aliases: +- /changelog/2023-12-15-sozu-0.15.18 +excludeSearch: true +--- + +Our open source reverse proxy, Sลzu, is now deployed in its version 0.15.18. It gives performance enhancements and: + +* Fix 502 following a 304 response with a body that does not respect RFCs +* Fix of a panic when upgrading from HTTP to WS or from HTTPs to WSs +* Fix encryption issues when reusing TLS sessions (bump of Rustls) +* Added a `--json` flag to all commands diff --git a/content/changelog/2023/12-18-java-21-default.md b/content/changelog/2023/12-18-java-21-default.md new file mode 100644 index 000000000..3d522e149 --- /dev/null +++ b/content/changelog/2023/12-18-java-21-default.md @@ -0,0 +1,19 @@ +--- +title: Java 21 now used by default +date: 2023-12-18 +tags: + - applications + - java +authors: + - name: Julien Durillon + link: https://github.com/judu + image: https://github.com/judu.png?size=40 +description: Deploy Java applications on Clever Cloud with version 21 as default +aliases: +- /changelog/2023-12-18-java-21-default +excludeSearch: true +--- + +Java version 21 is available on Clever Cloud for several weeks, but is now deployed as the default version for new applications. Of course, you can set the one of your choice between those available through `CC_JAVA_VERSION` environment variable. + +- Read our documentation [about Java](/doc/applications/java) diff --git a/content/changelog/2023/12-18-new-par-ip-console.md b/content/changelog/2023/12-18-new-par-ip-console.md new file mode 100644 index 000000000..5c9ebef62 --- /dev/null +++ b/content/changelog/2023/12-18-new-par-ip-console.md @@ -0,0 +1,19 @@ +--- +title: Updated DNS entries for the PAR region +date: 2023-12-18 +tags: + - applications + - console +authors: + - name: Guillaume Assier + link: https://github.com/GuillaumeASSIER + image: https://github.com/GuillaumeASSIER.png?size=40 +description: New IP list for DNS of Clever Cloud PAR region in the Console +aliases: +- /changelog/2023-12-18-new-par-ip-console +excludeSearch: true +--- + +Setup of our new infrastructure in Paris implies addition of new IP which can be used for DNS entries. They are now detailed in the **Domain Names** section of your applications in the [Console](https://console.clever-cloud.com). + +![New IP entries in Clever Cloud Console](/images/console-new-ip-par.webp "The new IP of the PAR region in the Console") diff --git a/content/changelog/2023/12-18-php-8-default.md b/content/changelog/2023/12-18-php-8-default.md new file mode 100644 index 000000000..3ec9b559b --- /dev/null +++ b/content/changelog/2023/12-18-php-8-default.md @@ -0,0 +1,22 @@ +--- +title: Latest PHP 8.x now used by default +date: 2023-12-18 +tags: + - applications + - php +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Julien Durillon + link: https://github.com/judu + image: https://github.com/judu.png?size=40 +description: Deploy PHP applications on Clever Cloud with latest version 8.x as default +aliases: +- /changelog/2023-12-18-php-8-default +excludeSearch: true +--- + +PHP 8.x is available for years on Clever Cloud, but is now deployed as the default version for new applications. Of course, you can set the one of your choice between those available through `CC_PHP_VERSION` environment variable. + +- Read our documentation [about PHP version](/doc/applications/php/#php-version) diff --git a/content/changelog/2023/12-19-console-web-components-v12.md b/content/changelog/2023/12-19-console-web-components-v12.md new file mode 100644 index 000000000..aba926118 --- /dev/null +++ b/content/changelog/2023/12-19-console-web-components-v12.md @@ -0,0 +1,23 @@ +--- +title: Console update and Clever Web Components v12 +date: 2023-12-19 +tags: + - console + - components +authors: + - name: Pierre De Soyres + link: https://github.com/pdesoyres-cc + image: https://github.com/pdesoyres-cc.png?size=40 +description: Console update with new icons for the documentation +aliases: +- /changelog/2023-12-19-console-web-components-v12 +excludeSearch: true +--- + +Among other changes under the hood, our [Console](https://console.clever-cloud.com) now uses the latest release of Clever Web Components. This v12 paves the way to our new `log` components. It also gives multiple new features with some bug fixes, refactoring and breaking changes. + +- Read the [full changelog](https://github.com/CleverCloud/clever-components/releases/tag/12.0.0) ๐Ÿ“– + +Links to the new documentation are now available in the Console. They're more precise depending on the `variant` (e.g. PHP/Static), use small icons to boost visibility and are now effective for applications and add-ons: + +![The new documentation link in the Console](/images/doc-link-console.webp "The new documentation link in the Console") diff --git a/content/changelog/2023/12-22-sozu-wider-usage.md b/content/changelog/2023/12-22-sozu-wider-usage.md new file mode 100644 index 000000000..88261cfec --- /dev/null +++ b/content/changelog/2023/12-22-sozu-wider-usage.md @@ -0,0 +1,18 @@ +--- +title: Wider Sลzu usage +date: 2023-12-22 +tags: + - sozu +authors: + - name: Florentin Dubois + link: https://github.com/FlorentinDUBOIS + image: https://github.com/FlorentinDUBOIS.png?size=40 +description: Sลzu gets better and can be used on more services on Clever Cloud +aliases: +- /changelog/2023-12-22-sozu-wider-usage +- /changelog/2023-12-22-sozu-update +- /changelog/2023-12-15-sozu-update +excludeSearch: true +--- + +Our open source reverse proxy Sลzu can now be used as a load balancer for any kind of managed services, add-ons included. It also got better filtering and performances on Sลzu services. diff --git a/content/changelog/2024/01-02-pulsar-update.md b/content/changelog/2024/01-02-pulsar-update.md new file mode 100644 index 000000000..3b8b28086 --- /dev/null +++ b/content/changelog/2024/01-02-pulsar-update.md @@ -0,0 +1,17 @@ +--- +title: Pulsar update is available +date: 2024-01-02 +tags: + - addons + - pulsar +authors: + - name: Alexandre Duval + link: https://github.com/kannarfr + image: https://github.com/kannarfr.png?size=40 +description: The Clever Cloud Pulsar stack has been updated and is more stable +aliases: +- /changelog/2024-01-02-pulsar-update +excludeSearch: true +--- + +We've deployed a new version of Apache Pulsar on our platform. Our aim is to improve topics availability, avoiding conflicts between namespaces and bundle unloading. diff --git a/content/changelog/2024/01-10-documentation-changelog.md b/content/changelog/2024/01-10-documentation-changelog.md new file mode 100644 index 000000000..21d9d146a --- /dev/null +++ b/content/changelog/2024/01-10-documentation-changelog.md @@ -0,0 +1,23 @@ +--- +title: Learn what's new on Clever Cloud platform +date: 2024-01-10 +tags: + - changelog + - documentation +authors: + - name: Julia March + link: https://github.com/juliamrch + image: https://github.com/juliamrch.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Clรฉment Nivolle + link: https://github.com/cnivolle + image: https://github.com/cnivolle.png?size=40 +description: You can now check Clever Cloud's evolutions in our new changelog, RSS feed included +aliases: +- /changelog/2024-01-10-documentation-changelog +excludeSearch: true +--- + +A changelog has been [added](/changelog) to our [Developer Center](). It will be regularly updated by the Clever Cloud teams to give you an overview of our new features, but also changes made and deprecations planned on the platform. diff --git a/content/changelog/2024/01-11-redis-7.2.4.md b/content/changelog/2024/01-11-redis-7.2.4.md new file mode 100644 index 000000000..1d30b2efd --- /dev/null +++ b/content/changelog/2024/01-11-redis-7.2.4.md @@ -0,0 +1,30 @@ +--- +title: Redis 7.2.4 is available +date: 2024-01-11 +tags: + - addons + - redis +authors: + - name: Aurรฉlien Hรฉbert + link: https://github.com/aurrelhebert + image: https://github.com/aurrelhebert.png?size=40 +description: Use Redis 7.2 in its latest release on Clever Cloud +aliases: +- /changelog/2024-01-11-redis-7.2.4 +- /changelog/2024-01-11-redis-update +excludeSearch: true +--- + +Redisโ„ข `7.2.4` is now available for each new deployment. You can easily migrate an existing instance from [Console](https://console.clever-cloud.com). + +## Security fixes + +* (CVE-2023-41056) In some cases, Redisโ„ข may incorrectly handle resizing of memory buffers which can result in incorrect accounting of buffer sizes and lead to heap overflow and potential remote code execution. + +## Bug fixes + +* Fix crashes of cluster commands clusters with mixed versions of 7.0 and 7.2 (#12805, #12832) +* Fix slot ownership not being properly handled when deleting a slot from a node (#12564) +* Fix atomicity issues with the RedisModuleEvent_Key module API event (#12733) + +- [Learn more about Redisโ„ข 7.2.x branch](https://redis.com/blog/introducing-redis-7-2/). diff --git a/content/changelog/2024/01-15-go-sdk-v0.0.8.md b/content/changelog/2024/01-15-go-sdk-v0.0.8.md new file mode 100644 index 000000000..5e5fef15f --- /dev/null +++ b/content/changelog/2024/01-15-go-sdk-v0.0.8.md @@ -0,0 +1,23 @@ +--- +title: Go Client v0.0.8 is available +date: 2024-01-15 +tags: + - go + - api + - client +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Rรฉmi Collignon-Ducret + link: https://github.com/miton18 + image: https://github.com/miton18.png?size=40 +description: The Clever Cloud Go Client has been updated to v0.0.8 +aliases: +- /changelog/2024-01-15-go-sdk-v0.0.8 +excludeSearch: true +--- + +If you want to use our API from a Go application or module, we provide an easy-to-use open source client. It has just been updated to version 0.0.8 with updated dependencies, fixes and better authentication on some systems. + +- Check this project [on GitHub](https://github.com/CleverCloud/clevercloud-client-go) {{< icon "github" >}} diff --git a/content/changelog/2024/01-22-matomo-5.0.1.md b/content/changelog/2024/01-22-matomo-5.0.1.md new file mode 100644 index 000000000..f289ffe6a --- /dev/null +++ b/content/changelog/2024/01-22-matomo-5.0.1.md @@ -0,0 +1,24 @@ +--- +title: Matomo 5.0.1 is available +date: 2024-01-22 +tags: + - addons + - matomo +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Rรฉmi Collignon-Ducret + link: https://github.com/miton18 + image: https://github.com/miton18.png?size=40 +description: You can now deploy Matomo 5.0.1 on Clever Cloud +aliases: +- /changelog/2024-01-22-matomo-5.0.1 +excludeSearch: true +--- + +[Matomo](https://matomo.org/) 5.0 was released mid-December, version 5.0.1 is now available. Since then, we've worked on the support of this new branch on Clever Cloud. It's done! You can deploy this latest version right now from our [Console](https://console.clever-cloud.com) or [Clever Tools](https://github.com/CleverCloud/clever-tools). + +Existing customers add-ons are already up-to-date. +- [Learn more about Matomo 5.0](https://matomo.org/changelog/matomo-5-0-0/) +- [Learn more about Matomo 5.0.1](https://matomo.org/changelog/matomo-5-0-1/) diff --git a/content/changelog/2024/01-24-ruby-3.3.0.md b/content/changelog/2024/01-24-ruby-3.3.0.md new file mode 100644 index 000000000..fc248f7b8 --- /dev/null +++ b/content/changelog/2024/01-24-ruby-3.3.0.md @@ -0,0 +1,23 @@ +--- +title: Ruby 3.3.0 is available +date: 2024-01-24 +tags: + - applications + - ruby +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Use Ruby 3.3.0 in your Ruby on Rails applications on Clever Cloud +aliases: +- /changelog/2024-01-24-ruby-3.3.0 +excludeSearch: true +--- + +You can now choose the `3.3.0` release of Ruby when you deploy Ruby on Rails applications on Clever Cloud. It can be set either through your `Gemfile` or the `CC_RUBY_VERSION` [environment variable](/doc/reference/reference-environment-variables/#ruby). + +* [Learn more about Ruby 3.3.0 release](https://www.ruby-lang.org/en/news/2023/12/25/ruby-3-3-0-released/) + +{{< callout type="info" >}} + If you use Node.js on this image, be aware that default version is now 20.11.0 (LTS). If you need another release to deploy your application, set the `CC_NODE_VERSION` [environment variable](/doc/develop/env-variables/). +{{< /callout >}} diff --git a/content/changelog/2024/01-25-clever-tools-3.1.0.md b/content/changelog/2024/01-25-clever-tools-3.1.0.md new file mode 100644 index 000000000..d2fa4e83c --- /dev/null +++ b/content/changelog/2024/01-25-clever-tools-3.1.0.md @@ -0,0 +1,36 @@ +--- +title: Clever Tools 3.1.0 is available +date: 2024-01-25 +tags: + - clever-tools + - cli +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Hubert Sablonniรจre + link: https://github.com/hsablonniere + image: https://github.com/hsablonniere.png?size=40 +description: Be prepared for a new wave of Clever Tools starting this release 3.1.0! +aliases: +- /changelog/2024-01-25-clever-tools-3.1.0 +excludeSearch: true +--- + +For several months, we were preparing our CLI, [Clever Tools](https://github.com/CleverCloud/clever-tools/), for big changes. It starts to be ready for prime time with the 3.1.0 release. First, the packaging process moved to GitHub Actions with some improvements: +- You can now get the [list of releases](https://github.com/CleverCloud/clever-tools/releases) with a changelog and source code archives +- No more beta channel: you'll be able to test new features easier +- Better process, quicker tests, more releases! + +If 3.0.x branch brought new log stack (faster, longer, order), you now get updated runtimes and zones lists [in autocomplete](https://github.com/CleverCloud/clever-tools?tab=readme-ov-file#enabling-autocompletion), details about application owner during deployment, `git+ssh` URL in new linked/created applications information. + +`clever deploy` can now be used with the `--same-commit-policy` or `-p` flag to set policy to apply when the local commit is the same as the remote one: `error`, `ignore`, `restart` or `rebuild` (default: `error`). + +Of course, there are also some bug fixes. And be prepared: more new features are on the way! + +To upgrade Clever Tools, [use your favorite package manager](/doc/cli/install). For example with `npm`: + +``` +npm update -g clever-tools +clever version +``` diff --git a/content/changelog/2024/01-30-js-client-8.0.3.md b/content/changelog/2024/01-30-js-client-8.0.3.md new file mode 100644 index 000000000..8dd34cb4f --- /dev/null +++ b/content/changelog/2024/01-30-js-client-8.0.3.md @@ -0,0 +1,23 @@ +--- +title: JS Client 8.0.3 is available +date: 2024-01-30 +tags: + - js + - api + - client +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Hubert Sablonniรจre + link: https://github.com/hsablonniere + image: https://github.com/hsablonniere.png?size=40 +description: The Clever Cloud JS Client has been updated to version 8.0.3 +aliases: +- /changelog/2024-01-30-js-client-8.0.3 +excludeSearch: true +--- + +If you want to use our API from a JavaScript application or module, we provide an easy-to-use open source client, available [as a npm package](https://www.npmjs.com/package/@clevercloud/client). It has just been updated to [version 8.0.3](https://github.com/CleverCloud/clever-client.js/blob/master/CHANGELOG.md#803-2024-01-30) where the options param of the `on` method is optional. There are fixes for the auto retry of logs SSE v2, event WS. But also for new logs SSE v4 ([ApplicationLogStream](https://github.com/CleverCloud/clever-client.js/pull/93)). + +- Check this project [on GitHub](https://github.com/CleverCloud/clever-client.js) {{< icon "github" >}} diff --git a/content/changelog/2024/02-02-images-update.md b/content/changelog/2024/02-02-images-update.md new file mode 100644 index 000000000..42f59bb99 --- /dev/null +++ b/content/changelog/2024/02-02-images-update.md @@ -0,0 +1,37 @@ +--- +title: February 2024 images update (part 1) +date: 2024-02-02 +tags: + - images + - update + - security +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: An in-depth work leading to faster updates +aliases: +- /changelog/2024-02-02-images-update +excludeSearch: true +--- + +Over the past few months, we've overhauled the way we build our applications and add-ons images from tooling to included binaries. We'll deliver soon the first public milestone of this project, which will leads us to more frequent releases. + +In the meantime, we've updated Docker, Elixir, Go, Haskell, Ruby and Rust images into production with no impact for our users. They include security patches and now use Linux kernel 6.7.1, OpenSSL 3.2.1 and Node.js 20.11.0 by default. For the latter, you can change it in the updated images via the `CC_NODE_VERSION` [environment variable](/doc/reference/reference-environment-variables/#commons-to-all-applications). Other changes are as follows: + +- **Docker**: + - moby 25.0.2 + - runc 1.1.12 + - containerd 1.7.13 + - docker-cli 25.0.2 +- **Elixir**: + - elixir 1.15.7, erlang 26.2.1 + - elixir 1.16.0, erlang 26.2.1 +- **Rust**: + - Stable: 1.75.0 + - Beta: 1.76.0 + - Nightly: 1.77.0 +- **Go**: + - go 1.21.6 + +Other images will be updated the same way in the coming days. diff --git a/content/changelog/2024/02-07-clever-tools-3.2.0.md b/content/changelog/2024/02-07-clever-tools-3.2.0.md new file mode 100644 index 000000000..5d93fb106 --- /dev/null +++ b/content/changelog/2024/02-07-clever-tools-3.2.0.md @@ -0,0 +1,33 @@ +--- +title: Clever Tools 3.2.0 is available +date: 2024-02-07 +tags: + - clever-tools + - cli +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Hubert Sablonniรจre + link: https://github.com/hsablonniere + image: https://github.com/hsablonniere.png?size=40 +description: And more is coming! +aliases: +- /changelog/2024-02-07-clever-tools-3.2.0 +excludeSearch: true +--- + +As mentioned [in the previous release](../01-25-clever-tools-3.1.0/), the packaging process moved to GitHub Actions to provide a better process, quicker tests and more frequent releases. We start with [the 3.2.0](https://github.com/CleverCloud/clever-tools/releases/tag/3.2.0) adding the log auto retry feature on network failures and some fixes: + +* **api:** improve error message with `EAI_AGAIN` and `ECONNRESET` ([b134213](https://github.com/CleverCloud/clever-tools/commit/b134213f30d46dd7f5690a38425deb4fd752148c)) +* **logs:** improve error message with `EAI_AGAIN` and `ECONNRESET` ([fada067](https://github.com/CleverCloud/clever-tools/commit/fada06771369173e579f5fd3a708ff3cef40c95f)) +* **logs:** improve open and error debug message ([28dd996](https://github.com/CleverCloud/clever-tools/commit/28dd9968bec8de9545c6b940be732d3f8f87a8f9)) +* **logs:** increase connection timeout ([a4ec4b9](https://github.com/CleverCloud/clever-tools/commit/a4ec4b90b5d3938e27679edeb7d375281def3776)) +* **logs:** only print SSE errors as debug when verbose mode is enabled ([3ea21c6](https://github.com/CleverCloud/clever-tools/commit/3ea21c6a4ff75db8df5f8177bba10ef17c2962e0)) + +To upgrade Clever Tools, [use your favorite package manager](/doc/cli/install). For example with `npm`: + +``` +npm update -g clever-tools +clever version +``` diff --git a/content/changelog/2024/02-08-sozu-0.15.19.md b/content/changelog/2024/02-08-sozu-0.15.19.md new file mode 100644 index 000000000..ba1500216 --- /dev/null +++ b/content/changelog/2024/02-08-sozu-0.15.19.md @@ -0,0 +1,23 @@ +--- +title: Sลzu 0.15.19 is available, 1.0 is coming +date: 2024-02-08 +tags: + - sozu +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Florentin Dubois + link: https://github.com/FlorentinDUBOIS + image: https://github.com/FlorentinDUBOIS.png?size=40 +description: Do you know protobuf? +aliases: +- /changelog/2024-02-08-sozu-0.15.19 +excludeSearch: true +--- + +Our open source reverse proxy, Sลzu, is now deployed in its version 0.15.19. We fixed behaviors when parsing HTTP 1.1 (mainly pipelining or streaming issues) and implemented the flag `--json` on every query command. We also reduced logging level, enhanced few logs and updated the logger to better track issues. + +- Read the full changelog [on GitHub](https://github.com/sozu-proxy/sozu/releases/tag/0.15.19) {{< icon "github" >}} + +We expect the next release to be 1.0, with [protobuf](https://protobuf.dev/) everywhere and 2x faster messaging. We'll now use [Metal I/O](https://github.com/tokio-rs/mio) also for communication between workers, rather than threadpools. A release candidate should be released this month. \ No newline at end of file diff --git a/content/changelog/2024/02-12-new-grahds-region.md b/content/changelog/2024/02-12-new-grahds-region.md new file mode 100644 index 000000000..f5eed3f21 --- /dev/null +++ b/content/changelog/2024/02-12-new-grahds-region.md @@ -0,0 +1,22 @@ +--- +title: New Gravelines HDS region +date: 2024-02-12 +tags: + - addons + - applications + - platform +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: HDS servers, the duplicate way +aliases: +- /changelog/2024-02-12-new-grahds-region +excludeSearch: true +--- + +For some time now, you can deploy your applications and add-ons through Clever Cloud, to Health Data Hosting (HDS) certified servers provided by OVHcloud in Roubaix. We also provide an object storage service (Cellar) from cluster composed of such servers in Roubaix and Gravelines (separated by ~100 km), available as the `fr-north-hds` region. + +Some customers asked us to make the Gravelines HDS region available independently for applications and add-ons, we listened to them. You can now deploy to it from [`clever-tools`](https://github.com/CleverCloud/clever-tools) or [the Console](https://console.clever-cloud.com) as `grahds`. + +Please note that Clever Cloudโ€™s services and infrastructures obtained the ISO 9001 certification last year, weโ€™re waiting for the definitive approval of ISO 27001. HDS certification is the next step and our current priority \ No newline at end of file diff --git a/content/changelog/2024/02-16-clever-tools-3.4.0.md b/content/changelog/2024/02-16-clever-tools-3.4.0.md new file mode 100644 index 000000000..b1e899df4 --- /dev/null +++ b/content/changelog/2024/02-16-clever-tools-3.4.0.md @@ -0,0 +1,47 @@ +--- +title: Clever Tools 3.4.0 is available +date: 2024-02-16 +tags: + - clever-tools + - cli +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Hubert Sablonniรจre + link: https://github.com/hsablonniere + image: https://github.com/hsablonniere.png?size=40 +description: JSON everywhere, create more easily! +aliases: +- /changelog/2024-02-16-clever-tools-3.4.0 +excludeSearch: true +--- + +This week, we published two Clever Tools updates in a row. 3.3.0 was about adding [our new Gravelines HDS region](../02-12-new-grahds-region/) support and fixing a bug in our add-ons logs feature. 3.4.0 brings `json` and `json-stream` formats for applications logs. The latter uses the Newline delimited JSON (NDJSON) specification (`jq` compatible). You can learn more about [ndjson/ndjson-spec/ on GitHub](https://github.com/ndjson/ndjson-spec/blob/master/README.md). + +But it's the `create` and `deploy` commands which are the most improved by this release. First, you'll now get the application or add-on name confirmed after creation. You can also get a JSON response adding `--format json` or `-F json` to the `create` or `create-addon` command. Second, the current folder name is now used as default application name if none is provided. + +To create a Node.js application once logged in, you can now just: + +``` +clever create -t node +``` + +If you need a JSON response for a Go application deployed on Gravelines HDS: + +``` +clever create --type go --region grahds --format json +``` + +Last but not least: you can deploy a specific tag from your local git repository adding the `--tag` or `-t` option: + +``` +clever deploy --tag v0.4.2 +``` + +To upgrade Clever Tools, [use your favorite package manager](/doc/cli/install). For example with `npm`: + +``` +npm update -g clever-tools +clever version +``` diff --git a/content/changelog/2024/02-22-postgresql-pgvector-support.md b/content/changelog/2024/02-22-postgresql-pgvector-support.md new file mode 100644 index 000000000..d9828470a --- /dev/null +++ b/content/changelog/2024/02-22-postgresql-pgvector-support.md @@ -0,0 +1,29 @@ +--- +title: "PostgreSQL: ask for pgvector support" +date: 2024-02-22 +tags: + - addons + - postgresql +authors: + - name: Lucas Draescher + link: https://github.com/draescherl + image: https://github.com/draescherl.png?size=40 + - name: Aurรฉlien Hรฉbert + link: https://github.com/aurrelhebert + image: https://github.com/aurrelhebert.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Your wishes are our commands +aliases: +- /changelog/2024-02-22-postgresql-pgvector-support +excludeSearch: true +--- + +PostgreSQL databases managed by Clever Cloud come with [lots of extensions enabled by default](/doc/addons/postgresql/#default-extensions). There are also [some you can ask for](/doc/addons/postgresql/#on-demand-extensions), and we'll set them up, like `pg_cron`, `pgtap` or `timescaledb`. + +We recently noticed an increased interest from our clients in supporting the `pgvector` extension, needed for specific (AI) workloads. To answer these needs, we've packaged it and are now able to provide it on-demand. + +If you need `pgvector`, open a ticket to our support team through [the Console Ticket Center](https://console.clever-cloud.com/ticket-center-choice). If you need any other extension, feel free to ask, we will try our best to respond to your use-case. + +- Learn more about `pgvector` [on GitHub](https://github.com/pgvector/pgvector) {{< icon "github" >}} \ No newline at end of file diff --git a/content/changelog/2024/02-26-healthcheck-for-everyone.md b/content/changelog/2024/02-26-healthcheck-for-everyone.md new file mode 100644 index 000000000..2305a1465 --- /dev/null +++ b/content/changelog/2024/02-26-healthcheck-for-everyone.md @@ -0,0 +1,24 @@ +--- +title: Custom healthcheck paths for all applications +date: 2024-02-26 +tags: + - applications +authors: + - name: Julien Durillon + link: https://github.com/judu + image: https://github.com/judu.png?size=40 +description: Your applications can now be deployed with one or multiple custom healtchecks +aliases: +- /changelog/2024-02-26-healthcheck-for-everyone +excludeSearch: true +--- + +Up until now, the deployment process only checked whether the application is listening to TCP port `8080`. That doesn't always mean that the application has started correctly. + +You can now define the paths that the orchestrator will call to validate a deployment for applications through one or multiple `CC_HEALTH_CHECK_PATH` environment variables. It works as follows: + +* If the application responds on this specified path, and the response code is between `200` and `300`, the orchestrator considers that the deployment has been validated. +* If it responds with a code outside this interval, the application is considered to have failed its deployment. + +- Read the documentation about [Deployment healthcheck path](/doc/develop/healthcheck/) ๐Ÿ“– + diff --git a/content/changelog/2024/02-26-mtl-iplb-update.md b/content/changelog/2024/02-26-mtl-iplb-update.md new file mode 100644 index 000000000..c87876023 --- /dev/null +++ b/content/changelog/2024/02-26-mtl-iplb-update.md @@ -0,0 +1,37 @@ +--- +title: "Montreal region (MTL): A records update for your domains/DNS" +date: 2024-02-23 +tags: + - sozu + - applications + - addons +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Florentin Dubois + link: https://github.com/FlorentinDUBOIS + image: https://github.com/FlorentinDUBOIS.png?size=40 +description: But please, prefer CNAMEs +aliases: +- /changelog/2024-02-26-mtl-iplb-update +excludeSearch: true +--- + +As we're upgrading our infrastructure and load balancers in Montreal, we've added new failover IPs in this region. + +If you configure your domains through CNAME records, this update will be transparent. But if you use A records, switch to CNAME or update your [DNS configuration](/doc/administrate/domain-names/). Old IPs will continue to work for a while, but we recommend you to update your DNS as soon as possible to avoid any service interruption. + +## Applications + +| Record Type | Value | +| ----------- | ----- | +| CNAME
Recommended | `{yoursubdomain} 10800 IN CNAME domain.mtl.clever-cloud.com.` | +| A
Only if CNAME is not available | @ 10800 IN A 158.69.109.229
@ 10800 IN A 149.56.117.183 | + +## Add-ons + +| Record Type | Value | +| ----------- | ----- | +| CNAME
Recommended | `{yoursubdomain} 10800 IN CNAME domain-sdc.mtl.clever-cloud.com.` | +| A
Only if CNAME is not available | @ 10800 IN A 54.39.154.128
@ 10800 IN A 167.114.35.164 | diff --git a/content/changelog/2024/02-27-images-update-part2.md b/content/changelog/2024/02-27-images-update-part2.md new file mode 100644 index 000000000..93365f43a --- /dev/null +++ b/content/changelog/2024/02-27-images-update-part2.md @@ -0,0 +1,28 @@ +--- +title: February 2024 images update (part 2) +date: 2024-02-27 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: New .NET version, Java Elastic/APM agent update +aliases: +- /changelog/2024-02-27-images-update-part2 +excludeSearch: true +--- + +Earlier this month, we published [a first set of updates](../02-02-images-update) for Docker, Elixir, Go, Haskell, Ruby and Rust. Some days ago, we finished this work and all images are now up-to-date. This process occurred with no impact for our users. As mentioned in a previous post, this enables [the new `healthcheck` feature](../02-26-healthcheck-for-everyone) available for all applications. + +New images include security patches, Linux kernel 6.7.1, OpenSSL 3.2.1 and Node.js 20.11.0 by default. For the latter, you can set it via the `CC_NODE_VERSION` [environment variable](/doc/reference/reference-environment-variables/#commons-to-all-applications). Other changes are as follows: + +* **.NET:** + * Version 8.0 support + * `CC_DOTNET_VERSION` [environment variable](/doc/reference/reference-environment-variables/#net) can be `6.0` or `8.0` +* **Java - Elastic / APM:** + * The agent has been updated to 1.47.1 + * Java 21 support + +New PHP image is next to come, with 8.3 version support, we're currently working on it. After that, we'll bring our new strategy to build images into production. We're currently testing it, and preparing enhancements for multiples runtimes. Your applications will automatically benefit from it when available. [Stay tuned](/changelog/index.xml). diff --git a/content/changelog/2024/02-27-js-client-8.2.0.md b/content/changelog/2024/02-27-js-client-8.2.0.md new file mode 100644 index 000000000..8adef3da2 --- /dev/null +++ b/content/changelog/2024/02-27-js-client-8.2.0.md @@ -0,0 +1,22 @@ +--- +title: JS Client 8.2.0 is available +date: 2024-02-27 +tags: + - js + - client +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Rรฉmi Collignon-Ducret + link: https://github.com/miton18 + image: https://github.com/miton18.png?size=40 +description: The Clever Cloud JS Client has been updated to version 8.2.0 +aliases: +- /changelog/2024-02-27-js-client-8.2.0 +excludeSearch: true +--- + +Since [latest big update](../01-30-js-client-8.0.3/) of the [JS Client](https://www.npmjs.com/package/@clevercloud/client/v/8.2.0), we've fixed multiple issues with Server-Sent Events (SSE). [8.2.0 release](https://github.com/CleverCloud/clever-client.js/blob/master/CHANGELOG.md#820-2024-02-27) allows error handling from legacy client and brings support repeatable query parameters, which is a feature enabler for some tools. + +- Check this project [on GitHub](https://github.com/CleverCloud/clever-client.js) {{< icon "github" >}} diff --git a/content/changelog/2024/03-07-env-vars-app-creation-api.md b/content/changelog/2024/03-07-env-vars-app-creation-api.md new file mode 100644 index 000000000..b8dc91369 --- /dev/null +++ b/content/changelog/2024/03-07-env-vars-app-creation-api.md @@ -0,0 +1,43 @@ +--- +title: "API: set environment variables at application creation" +date: 2024-03-07 +tags: + - api + - applications +authors: + - name: Alexandre Duval + link: https://github.com/kannarfr + image: https://github.com/kannarfr.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: A game changer for some features coming soon +aliases: +- /changelog/2024-03-07-env-vars-app-creation-api +excludeSearch: true +--- + +When you create an application with the Clever Cloud API, you can now set environment variables directly. This feature is available in the `POST v2/organisations/{id}/applications` endpoint, with an object to set: + +```json +"env": { + "ENV_VAR": "value", + "ANOTHER_ENV_VAR": "another value" +} +``` + +The response will contain an `env` object, with the environment variables set: + +```json +"env": [ +{ + "name": "ENV_VAR", + "value": "value" +}, +{ + "name": "ANOTHER_ENV_VAR", + "value": "another value" +}] +``` + +You can get this object from the applications endpoints, such as `GET v2/organisations/{id}/applications/{appId}`. diff --git a/content/changelog/2024/03-07-web-components-v13.md b/content/changelog/2024/03-07-web-components-v13.md new file mode 100644 index 000000000..447aad8a2 --- /dev/null +++ b/content/changelog/2024/03-07-web-components-v13.md @@ -0,0 +1,24 @@ +--- +title: Clever Web Components v13 +date: 2024-03-07 +tags: + - console + - components +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Florian Sanders + link: https://github.com/florian-sanders-cc + image: https://github.com/florian-sanders-cc.png?size=40 +description: Console update with new icons for the documentation +aliases: +- /changelog/2024-03-07-web-components-v13 +excludeSearch: true +--- + +Clever Cloud's [Web Components](https://www.clever.cloud/developers/clever-components/) v13 are available, with bug fixes, refactoring, and new features. We introduced new possibilities to highlight form fields (larger labels, with color), paving the way for our new add-on/application creation process. + +A standardized API is used for UI components that depend on a smart component. It includes a `state` property receiving state type: `loaded`, `loading`, `error` and data. Latest smart components no longer rely on `rxjs`, making them easier to maintain. + +- Read the [full changelog](https://github.com/CleverCloud/clever-components/releases/tag/13.0.0) {{< icon "github" >}} diff --git a/content/changelog/2024/03-11-console-components-update.md b/content/changelog/2024/03-11-console-components-update.md new file mode 100644 index 000000000..396bb2e5a --- /dev/null +++ b/content/changelog/2024/03-11-console-components-update.md @@ -0,0 +1,20 @@ +--- +title: Console's components upgrade +date: 2024-03-12 +tags: + - console + - components +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Pierre De Soyres + link: https://github.com/pdesoyres-cc + image: https://github.com/pdesoyres-cc.png?size=40 +description: More security and information for our users +aliases: +- /changelog/2024-03-11-console-components-update +excludeSearch: true +--- + +In our ongoing effort to improve our [Console](https://console.clever-cloud.com) experience, we upgraded some of its components. It now uses [JS Client 8.2.0](../02-27-js-client-8.2.0/) and [Web Components 13.0.0](../03-07-web-components-v13/). This update also brings some fixes regarding deployment logs links and Warp10 calls. \ No newline at end of file diff --git a/content/changelog/2024/03-12-oauth-token-expiration.md b/content/changelog/2024/03-12-oauth-token-expiration.md new file mode 100644 index 000000000..494a37794 --- /dev/null +++ b/content/changelog/2024/03-12-oauth-token-expiration.md @@ -0,0 +1,27 @@ +--- +title: "OAuth tokens expiration" +date: 2024-03-12 +tags: + - api + - security +authors: + - name: Mathieu Degand + link: https://github.com/galimede + image: https://github.com/galimede.png?size=40 + - name: Julien Durillon + link: https://github.com/judu + image: https://github.com/judu.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: More security and information for our users +aliases: +- /changelog/2024-03-12-oauth-token-expiration +excludeSearch: true +--- + +When you connect to Clever Cloud's interfaces, such as API, Console or CLI, you use OAuth tokens. They are now valid for a certain amount of time, and you need to refresh it before it expires. + +The duration of the token is 1 year for [Clever Tools](https://github.com/CleverCloud/clever-tools), 3 months for [Console](https://console.clever-cloud.com) and any other integration. The expiration date of the token is mentioned at the time of its creation from CLI, you can also check it from [Console](https://console.clever-cloud.com/users/me/oauth-tokens). You can still revoke tokens at any time from the same (enhanced) page. We'll add such information in future releases of Clever Tools. + +Please note that if you ask a member of our support team to access your account, this interface will show their own token, you can revoke, valid for 12 hours. This change is part of our ongoing effort to improve [the security](https://www.clever.cloud/security/) of our users' accounts and data. If you have any questions or concerns, please [contact us](https://console.clever-cloud.com/ticket-center-choice). diff --git a/content/changelog/2024/03-20-pulsar-3.2.1-update.md b/content/changelog/2024/03-20-pulsar-3.2.1-update.md new file mode 100644 index 000000000..4b2ea9c96 --- /dev/null +++ b/content/changelog/2024/03-20-pulsar-3.2.1-update.md @@ -0,0 +1,22 @@ +--- +title: "Pulsar: 3.2.1 release and storage policies" +date: 2024-03-20 +tags: + - addons + - pulsar +authors: + - name: Alexandre Duval + link: https://github.com/kannarfr + image: https://github.com/kannarfr.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: New API endpoint and stack update +aliases: +- /changelog/2024-03-20-pulsar-3.2.1-update +excludeSearch: true +--- + +We've deployed the [3.2.1 release](https://github.com/apache/pulsar/releases/tag/v3.2.1) of Apache Pulsar on our platform. It brings lots of fixes and some new features. Please note we also added [a new v4 endpoint](/api/v4/#pulsar-policies) in our API to control Pulsar's storage policies (offload, retention). + +- Learn more about [Apache Pulsar](https://www.clever.cloud/product/pulsar/) diff --git a/content/changelog/2024/04-04-CVE-2024-3094.md b/content/changelog/2024/04-04-CVE-2024-3094.md new file mode 100644 index 000000000..19b49cdc7 --- /dev/null +++ b/content/changelog/2024/04-04-CVE-2024-3094.md @@ -0,0 +1,34 @@ +--- +title: "Backdoor in xz/liblzma (CVE-2024-3094): our response" +date: 2024-04-03 +tags: + - security +authors: + - name: Arnaud Lefebvre + link: https://github.com/BlackYoup + image: https://github.com/BlackYoup.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: None of our services were impacted +aliases: +- /changelog/2024-04-04-cve-2024-3094 +excludeSearch: true +--- + +On March 29th, we were informed that a backdoor was discovered in the source code of `xz`, introduced with version 5.6.0 (CVE-2024-3094). Our security team instantly made sanity checks, and found our services were not impacted. + +As stated [by NIST](https://nvd.nist.gov/vuln/detail/CVE-2024-3094), ยซย *Through a series of complex obfuscations, the liblzma build process extracts a prebuilt object file from a disguised test file existing in the source code, which is then used to modify specific functions in the liblzma code. This results in a modified liblzma library that can be used by any software linked against this library, intercepting and modifying the data interaction with this library.*ย ยป. + +First, the malicious version was not deployed on images we use for most of our services. Second, we don't use patches to support systemd within OpenSSH through libsystemd (which depends on the backdoored libzma). Third, some GNU/Linux distributions were specifically targeted, not [Exherbo Linux](https://www.exherbolinux.org/) which we use for our services. + +Nevertheless, we immediately put the backdoored version on a deny list to prevent its installation, and so did Exherbo Linux maintainers promptly after. We also started to revert `xz` 5.6.x to 5.4.6 on the few custom services where it had been set up, although it would not have been possible for an attacker to exploit it. + +You can know more about this CVE following these links: + +* https://boehs.org/node/everything-i-know-about-the-xz-backdoor +* https://gynvael.coldwind.pl/?lang=en&id=782 +* https://lcamtuf.substack.com/p/technologist-vs-spy-the-xz-backdoor +* https://www.openwall.com/lists/oss-security/2024/03/29/4 + +You can contact [our support team](https://console.clever-cloud.com/ticket-center-choice) if you have further questions about this topic. \ No newline at end of file diff --git a/content/changelog/2024/04-11-clever-tools-3.5.2.md b/content/changelog/2024/04-11-clever-tools-3.5.2.md new file mode 100644 index 000000000..6aec80c95 --- /dev/null +++ b/content/changelog/2024/04-11-clever-tools-3.5.2.md @@ -0,0 +1,62 @@ +--- +title: Clever Tools 3.5.2 is available with cURL, KV, Tasks and more! +date: 2024-04-11 +tags: + - clever-tools + - cli +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Hubert Sablonniรจre + link: https://github.com/hsablonniere + image: https://github.com/hsablonniere.png?size=40 +description: Lots of new features included! +aliases: +- /changelog/2024-04-11-clever-tools-3.5.2 +excludeSearch: true +--- + +Clever Tools 3.5 is now available, and this branch brings lots of new important features. First, `clever curl` is now public and listed as an official command. It helps you to send curl requests with the auth context of your Clever Tools configuration. Thus, you can use Clever Cloud [API v2 or v4](/api/). + +JSON format is supported for more commands, the `--since` option now supports a duration value. For example if you want to get logs since 2 hours ago, you can use `clever logs --since 2h`. This command documentation is available [there](/doc/cli/logs-drains/#logs). + +Clever Tasks can now be directly created and configured from Clever Tools. They're applications which can be run on demand, not awaiting any HTTP request on the `8080` port, but needing a `CC_RUN_COMMAND` to execute. Once it's done, the application stops. You're just billed for the execution time. It can help you to make some checks, compilation, file conversions, etc. + +To create a Clever Task using Python for example: + +``` +# We create a Python App and its Git repository +mkdir pythonTask && cd pythonTask +echo 'print("Hello, from a Clever Cloud Task!")' > task.py +git init && git add . && git commit -m "Initial commit" + +# We deploy this app as a Task +clever create -t python --task 'python task.py' +clever deploy +``` + +If you want to check if an application will deploy as a `TASK` or the `REGULAR` way, use `clever status`. Change the executed command using an environment variable. Set another value, for example with a bash script: + +``` +clever env set CC_RUN_COMMAND "bash a_bash_script.sh" +``` +Clever Tasks will evolve with enhancements planed over the coming months. Feel free to tell us about your needs or ideas on this! + +* [Learn more about Clever Tasks](/doc/develop/tasks/) + +Last but not least, we're introducing the access to Materia KV. Those granted with alpha access can now create a serverless, synchronously-replicated (over our 3 data centers in Paris) key-value add-on. You'll be able to use it with multiples kind of clients. First to be supported is Redis API. Thus, you can run: + +```` +clever addon create kv myKV +source <(clever addon env addon_myKV_id -F shell) +redis-cli -h $KV_HOST -p $KV_PORT --tls PING +```` +* [Learn more about Materia KV](https://www.clever.cloud/blog/company/2024/04/16/materiadb-kv-materia-functions/) ([FR](https://www.clever.cloud/fr/blog/entreprise/2024/04/16/materiadb-kv-functions/)) + +To upgrade Clever Tools, [use your favorite package manager](/doc/cli/install) + +``` +npm update -g clever-tools +clever version +``` diff --git a/content/changelog/2024/04-15-new-logs-interface-public-beta.md b/content/changelog/2024/04-15-new-logs-interface-public-beta.md new file mode 100644 index 000000000..8e616c121 --- /dev/null +++ b/content/changelog/2024/04-15-new-logs-interface-public-beta.md @@ -0,0 +1,27 @@ +--- +title: New logs interface is available in public beta +date: 2024-04-15 +tags: + - clever-tools + - cli +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Pierre De Soyres + link: https://github.com/pdesoyres-cc + image: https://github.com/pdesoyres-cc.png?size=40 +description: Lots of new features included! +aliases: +- /changelog/2024-04-15-new-logs-interface-public-beta +excludeSearch: true +--- + +Since 2023, applications use a new Logs stack based on Pulsar and Vector, through CLI. Thanks to it, we provide a more reliable service, with new filtering features. It's now available from [the Console](https://console.clever-cloud.com) too! As it's in public beta stage, you'll need to activate it through the "Try the new Logs experience" link. You can revert this choice if needed. + +This new feature is available for **applications only**. + +In this new interface you'll get better access to your instance/deployments, dark/light themes, a text filter, multiple settings (stored into your Clever Cloud account). + +* [Learn more about our new Logs interface](https://www.clever.cloud/blog/company/2024/04/15/our-new-logs-interface/) ([FR](https://www.clever.cloud/fr/blog/entreprise/2024/04/15/notre-nouvelle-interface-de-logs-est-disponible/)) +* [Give us feedback about new Logs interface](https://github.com/CleverCloud/Community/discussions/categories/new-logs-interface) diff --git a/content/changelog/2024/04-16-clever-tools-3.6.0.md b/content/changelog/2024/04-16-clever-tools-3.6.0.md new file mode 100644 index 000000000..4a8baa7e0 --- /dev/null +++ b/content/changelog/2024/04-16-clever-tools-3.6.0.md @@ -0,0 +1,27 @@ +--- +title: Clever Tools 3.6.0 is available +date: 2024-04-16 +tags: + - clever-tools + - cli +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Hubert Sablonniรจre + link: https://github.com/hsablonniere + image: https://github.com/hsablonniere.png?size=40 +description: Lots of new features included! +aliases: +- /changelog/2024-04-16-clever-tools-3.6.0 +excludeSearch: true +--- + +Clever Tools 3.6 is now available, with some minor fixes and a new feature: the support of SD-PARAMS ([RFC 5424](https://www.rfc-editor.org/rfc/rfc5424.html)) for UDP and TCP drains with `clever drain create --sd-params "SD_PARAMS_STRING"`. + +To upgrade Clever Tools, [use your favorite package manager](/doc/cli/install) + +``` +npm update -g clever-tools +clever version +``` diff --git a/content/changelog/2024/04-24-php-deprecate-warning.md b/content/changelog/2024/04-24-php-deprecate-warning.md new file mode 100644 index 000000000..ecd29fec9 --- /dev/null +++ b/content/changelog/2024/04-24-php-deprecate-warning.md @@ -0,0 +1,24 @@ +--- +title: "PHP: a warning message when a deprecated version is used" +date: 2024-04-24 +tags: + - php + - applications + - information +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Please, update! +aliases: +- /changelog/2024-04-24-php-deprecate-warning +excludeSearch: true +--- + +PHP ecosystem is evolving at a steady pace with a clear lifecycle: 1 version per year, 2 years of active support, plus 1 year of security support. PHP 8.2 is actively supported, while 8.1 is in its security support window. ALL previous releases are considered end-of-life (EOL) by PHP Team. PHP 5.x branch is EOL since 2019, 7.x branch since the end of 2022. + +As we still see a lot of applications using deprecated versions, the new PHP image we'll release next week will start to better inform our users about this. When PHP 8.0 or a previous release is used, a warning will be shown during deployment, asking to set `CC_PHP_VERSION` to `8` (latest 8.x), `8.2` currently on Clever Cloud. In the coming month, we'll extend such informative warnings to other runtimes. We'll also explore ways to show them in other interfaces and send emails about it. + + There is no short term plan to cut access to supported versions such as PHP 5.6 or 7.x, but you do it at your own risks. + +* Learn more about [PHP releases lifecycle](https://www.php.net/supported-versions.php) diff --git a/content/changelog/2024/04-25-images-update.md b/content/changelog/2024/04-25-images-update.md new file mode 100644 index 000000000..26e64b857 --- /dev/null +++ b/content/changelog/2024/04-25-images-update.md @@ -0,0 +1,32 @@ +--- +title: "Images: April 2024 update" +date: 2024-04-25 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Kernel 6.8.6, security fixes and action executor +aliases: +- /changelog/2024-04-25-images-update +excludeSearch: true +--- + +We've updated all our images and deployed them without any impact for our users. They include our new action executor, which will help to make some features available soon. They also include the following changes: + +* **Common:** + * Linux kernel 6.8.6 + * glibc security fix (CVE-2024-2961) + * Node.js 20.12.2 as default version +* **Ruby:** + * Update to 3.0.7, 3.1.5, 3.2.4 and 3.3.1 (CVE-2024-27282, CVE-2024-27281 et CVE-2024-27280) +* **Elixir:** + * Update to 21.16.2, 22.3.4.27, 23.3.4.20, 24.3.4.17, 25.3.2.11, 26.2.4 +* **.NET:** + * Update to 8.0.103, 8.0.3 + +We had to delay the release of PHP image with 8.3 version support, to better support some extensions and include latest security fixes. It will start to deploy next week and include an informative message when a deprecated version of PHP is used. + +* Learn more about the [message for deprecated PHP versions](../04-24-php-deprecate-warning/). diff --git a/content/changelog/2024/04-26-new-images-stack.md b/content/changelog/2024/04-26-new-images-stack.md new file mode 100644 index 000000000..9f7cbaf2c --- /dev/null +++ b/content/changelog/2024/04-26-new-images-stack.md @@ -0,0 +1,19 @@ +--- +title: Our new images stack enters production +date: 2024-04-26 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Fewer images, more updates coming +aliases: +- /changelog/2024-04-26-new-images-stack +excludeSearch: true +--- + +As mentioned in previous posts, we've made a major overhaul of how we create the images underlying our virtual machines over the past few months. Our main goals are to provide a more efficient way of keeping add-ons and application up to date without breaking changes, to make new features available more quickly and to keep it simple for our team to manage all of this. + +We also use fewer base images for our runtimes to reduce binaries and configuration disparities, storage footprint, simplify build and maintenance. After extensive tests, this new stack is now used in production, starting with .NET, Go and Rust images. We'll progressively deploy it to all our products in the coming months. This should be done without any impact for our users. diff --git a/content/changelog/2024/05-28-tasks-in-console.md b/content/changelog/2024/05-28-tasks-in-console.md new file mode 100644 index 000000000..30e78d1c0 --- /dev/null +++ b/content/changelog/2024/05-28-tasks-in-console.md @@ -0,0 +1,24 @@ +--- +title: Manage Clever Tasks in the Console +date: 2024-05-28 +tags: + - console + - tasks +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Pierre De Soyres + link: https://github.com/pdesoyres-cc + image: https://github.com/pdesoyres-cc.png?size=40 +description: Just a box to check +aliases: +- /changelog/2024-05-28-tasks-in-console +excludeSearch: true +--- + +Since [its release 3.5.2](../04-11-clever-tools-3.5.2/), Clever Tools is able to manage [Clever Tasks](/doc/develop/tasks/). It's now possible to create, configure and deploy them directly from the Console. To declare an application as a Task, check the corresponding box in the `Information` tab. + +A Clever Task can be run on demand. It executes the command you've set in the `CC_RUN_COMMAND` environment variable, without waiting for any HTTP request on the `8080` port. After that, the application stops. It's just billed for the execution time. + +![Clever Task Management in Console](/images/clever-tasks.webp "Defines a Clever Cloud application as a Task in Console") diff --git a/content/changelog/2024/05-30-php-8.3-java-22.md b/content/changelog/2024/05-30-php-8.3-java-22.md new file mode 100644 index 000000000..582470604 --- /dev/null +++ b/content/changelog/2024/05-30-php-8.3-java-22.md @@ -0,0 +1,32 @@ +--- +title: PHP 8.3, Composer 2.7.6 and Java 22 are available +date: 2024-05-30 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: May images update +aliases: +- /changelog/2024-05-30-php-8.3-java-22 +excludeSearch: true +--- + +We've updated some of our images and deployed them without any impact for our users. You can now set `CC_PHP_VERSION` to `8.3`. It's the default version for new PHP applications. If `CC_PHP_VERSION` is set to `8`, version 8.2 is still used. We also start to warn you if you use a [deprecated](https://www.php.net/supported-versions.php) PHP version, older than `8.1`. Other changes include: + +* **Common:** + * Linux kernel 6.8.11 (PHP is still 6.8.6) + * Node.js 20.14.0 as default version +* **.NET, Go, Rust:** + * Fix for crons +* **.NET:** + * Fix for deployment issues with 8.x branch +* **Java:** + * Support for Java 22 (non LTS) + * Support for NewRelic with Java 22 +* **PHP:** + * Composer 2.7.6 + * Support for PHP 8.3 with [all supported extensions](/doc/applications/php/extensions/#available-extensions-and-modules) + * PHP info apps are available for PHP [8.0](https://php80info.cleverapps.io), [8.1](https://php81info.cleverapps.io), [8.2](https://php82info.cleverapps.io) and [8.3](https://php83info.cleverapps.io) diff --git a/content/changelog/2024/06-07-sozu-1.0.2.md b/content/changelog/2024/06-07-sozu-1.0.2.md new file mode 100644 index 000000000..57cb09d30 --- /dev/null +++ b/content/changelog/2024/06-07-sozu-1.0.2.md @@ -0,0 +1,27 @@ +--- +title: Sลzu 1.0.2 is available and deployed +date: 2024-06-07 +tags: + - sozu +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Florentin Dubois + link: https://github.com/FlorentinDUBOIS + image: https://github.com/FlorentinDUBOIS.png?size=40 +description: A big step forward for our open source reverse proxy +aliases: +- /changelog/2024-06-07-sozu-1.0.2 +- /changelog/2024-10-04-sozu-1.0.2 +excludeSearch: true +--- + +After the availability of Sลzu 1.0 in release candidate and an extensive testing phase, we've identified and fixed some bugs. Over the last few days, we've been deploying version 1.0.2 across all our regions, and it's now fully used in production. This new branch brings a lot of improvements, security and new features to our open source Rust based reverse proxy. + +The communication between processes is more efficient thanks to [ProtoBuf](https://fr.wikipedia.org/wiki/Protocol_Buffers), which is now widely used in Sลzu. We've improved the performance through [our contribution to Rustls](https://github.com/rustls/rustls/pull/1774), added colors to logs. Process configuration is 50% faster, certificates renewal has been optimized, and their resolution is now significantly more responsive. + +We've also fixed a bug affecting socket timeouts on frontends, ensuring better handling of requests. + +* [New Sลzu website](https://www.sozu.io) +* Learn more about [Sลzu new releases](https://github.com/sozu-proxy/sozu/releases) {{< icon "github" >}} \ No newline at end of file diff --git a/content/changelog/2024/06-10-mongo-db-terraform.md b/content/changelog/2024/06-10-mongo-db-terraform.md new file mode 100644 index 000000000..d0846cd88 --- /dev/null +++ b/content/changelog/2024/06-10-mongo-db-terraform.md @@ -0,0 +1,24 @@ +--- +title: Deploy MongoDB add-ons with our Terraform provider +date: 2024-06-10 +tags: + - mongodb + - terraform +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Mathieu Barcelo + link: https://github.com/TheCrabe + image: https://github.com/TheCrabe.png?size=40 +description: +aliases: +- /changelog/2024-06-10-mongo-db-terraform +excludeSearch: true +--- + +If you can deploy on Clever Cloud through our [Console](https://console.clever-cloud.com), our CLI ([Clever Tools](https://github.com/CleverCloud/clever-tools)), or our [API](/api/), you can also use Terraform and compatible tools such as [OpenTofu](https://opentofu.org/). We maintain a provider that allows you to manage your resources as code, from applications to add-ons (object storage, databases, etc.). + +We've recently added support for Python and [Materia KV](/doc/addons/materia-kv/). It's MongoDB's turn [to be available](https://registry.terraform.io/providers/CleverCloud/clevercloud/latest/docs/resources/mongodb). You can now create such an add-on, choose its plan, region and get the credentials to connect to it. + +* Learn more about [our Terraform provider](https://registry.terraform.io/providers/CleverCloud/clevercloud/latest/docs) diff --git a/content/changelog/2024/06-11-clever-tools-3.7.0.md b/content/changelog/2024/06-11-clever-tools-3.7.0.md new file mode 100644 index 000000000..528a5cb9f --- /dev/null +++ b/content/changelog/2024/06-11-clever-tools-3.7.0.md @@ -0,0 +1,27 @@ +--- +title: Clever Tools 3.7.0 is available +date: 2024-06-11 +tags: + - clever-tools + - cli +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Hubert Sablonniรจre + link: https://github.com/hsablonniere + image: https://github.com/hsablonniere.png?size=40 +description: cURL is fixed, some enhancements +aliases: +- /changelog/2024-06-11-clever-tools-3.7.0 +excludeSearch: true +--- + +[Clever Tools 3.7](https://github.com/CleverCloud/clever-tools/releases/tag/3.7.0) is now available, with some bug fixes, including `clever curl` in packaged and node versions. We've also enhanced `activity` and `addon`. With the latest, selected plan is now always the cheapest by default at creation. + +To upgrade Clever Tools, [use your favorite package manager](/doc/cli/install). For example with `npm`: + +``` +npm update -g clever-tools +clever version +``` diff --git a/content/changelog/2024/06-11-materia-kv-public-alpha.md b/content/changelog/2024/06-11-materia-kv-public-alpha.md new file mode 100644 index 000000000..8d5fd1a2e --- /dev/null +++ b/content/changelog/2024/06-11-materia-kv-public-alpha.md @@ -0,0 +1,23 @@ +--- +title: Materia KV enters public Alpha +date: 2024-06-11 +tags: + - materia + - kv +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: May images update +aliases: +- /changelog/2024-06-11-materia-kv-public-alpha +excludeSearch: true +--- + +At Devoxx France 2024, we introduced our new [Materia](https://www.clever.cloud/materia/) databases offering. The first "flavor", KV, is now available in public Alpha to all our customers. It's a key-value data store, compatible with Redis protocol and soon DynamoDB, GraphQL. You can create such an add-on from [API](/api/), [Clever Tools](https://github.com/CleverCloud/clever-tools) or [Console](https://console.clever-cloud.com/users/me/addons/new). Let us know what to improve ! + +- [Materia KV public announcement](https://www.clever.cloud/blog/company/2024/04/16/materiadb-kv-materia-functions/) +- [Materia KV documentation](/doc/addons/materia-kv/) +- [Give us your feedback](https://github.com/CleverCloud/Community/discussions/categories/materia) + +{{< youtube id="B8wQEG8qkqs" >}} diff --git a/content/changelog/2024/06-21-better-new-logs.md b/content/changelog/2024/06-21-better-new-logs.md new file mode 100644 index 000000000..4b098a1d2 --- /dev/null +++ b/content/changelog/2024/06-21-better-new-logs.md @@ -0,0 +1,34 @@ +--- +title: Better new Logs +date: 2024-06-21 +tags: + - console + - logs +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Pierre De Soyres + link: https://github.com/pdesoyres-cc + image: https://github.com/pdesoyres-cc.png?size=40 +description: Lots of new features included! +aliases: +- /changelog/2024-06-21-better-new-logs +excludeSearch: true +--- + +We recently introduced a new Logs interface for applications in [the Console](https://console.clever-cloud.com), available on-demand in public beta. Since, we listened customers feedbacks and improved this feature. An updated version is now available, with two modes in the text filter field: + +- Exact match (case-sensitive) +- Regular expression + +You can select one or the other using the buttons to the right of the text field. This is only a first step, as we'll later introduce a new stack with indexed logs to better handle such filters and provide new features. + +![New logs interface](/images/new-logs-update.webp) + +Some of you also asked for a change of the default behavior of this Logs interface. Until now, users were redirected to `Live` view during a deployment, otherwise to the `7 days` view, containing all available deployments/instances, with logs of the last deployment shown. We today introduce a new mechanism and now remember the last choice of a user, per application. + +Depending on your feedback, we'll improve this further in the coming weeks. Here again, this is a first step as the indexed logs will open up a wide range of possibilities in this area. + +* Share your comments and ideas on our [GitHub Community](https://github.com/CleverCloud/Community/discussions/categories/new-logs-interface) + diff --git a/content/changelog/2024/06-28-new-ip-list-paris.md b/content/changelog/2024/06-28-new-ip-list-paris.md new file mode 100644 index 000000000..76083b081 --- /dev/null +++ b/content/changelog/2024/06-28-new-ip-list-paris.md @@ -0,0 +1,34 @@ +--- +title: IP list update on Paris zone +date: 2024-06-28 +tags: + - domain + - IP +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Florentin Dubois + link: https://github.com/FlorentinDUBOIS + image: https://github.com/FlorentinDUBOIS.png?size=40 +description: A big step forward for our open source reverse proxy +aliases: +- /changelog/2024-06-28-new-ip-list-paris +excludeSearch: true +--- + +As our network evolves, we've updated [IP list for Paris (PAR) zone](/doc/administrate/domain-names/#your-application-runs-in-the-europeparis-par-zone). If you use A records for DNS configuration, update them. 4 new IP addresses should be added (`91.208.207.220` to `91.208.207.223`). **We strongly recommend using CNAME records instead.** + +| Record Type | Value | +| ----------- | ----- | +| CNAME
Recommended | `{yoursubdomain} 10800 IN CNAME domain.par.clever-cloud.com.` | +| A
Only if CNAME is not available | `@ 10800 IN A 91.208.207.214`
`@ 10800 IN A 91.208.207.215`
`@ 10800 IN A 91.208.207.216`
`@ 10800 IN A 91.208.207.217`
`@ 10800 IN A 91.208.207.218`
`@ 10800 IN A 91.208.207.220`
`@ 10800 IN A 91.208.207.221`
`@ 10800 IN A 91.208.207.222`
`@ 10800 IN A 91.208.207.223` | + +We are going to remove 4 IPs that **you must stop to use between now and August 23rd**: + +- 46.252.181.103 +- 46.252.181.104 +- 185.42.117.108 +- 185.42.117.109 + + After this date, they won't answer to requests anymore. You'll find the updated values in the `Domain names` section of your application in [the Console](https://console.clever-cloud.com). If you have any question about this change, feel free to ask [our customer support](https://console.clever-cloud.com/ticket-center-choice) about it. diff --git a/content/changelog/2024/07-01-matomo-5.1.0.md b/content/changelog/2024/07-01-matomo-5.1.0.md new file mode 100644 index 000000000..61884dd1a --- /dev/null +++ b/content/changelog/2024/07-01-matomo-5.1.0.md @@ -0,0 +1,25 @@ +--- +title: Matomo 5.1.0 is available +date: 2024-07-01 +tags: + - addons + - matomo +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Rรฉmi Collignon-Ducret + link: https://github.com/miton18 + image: https://github.com/miton18.png?size=40 +description: You can now deploy Matomo 5.1.0 on Clever Cloud +aliases: +- /changelog/2024-07-01-matomo-5.1.0 +excludeSearch: true +--- + +Our [Matomo](https://matomo.org/) add-on has been updated to version `5.1.0` which is now used by default. You can deploy this latest release from our [Console](https://console.clever-cloud.com) or [Clever Tools](https://github.com/CleverCloud/clever-tools). Existing customers add-ons are already up-to-date. + +Here are the changes since previous deployed version (`5.0.1`): +- [Learn more about Matomo 5.0.2](https://matomo.org/changelog/matomo-5-0-2/) +- [Learn more about Matomo 5.0.3](https://matomo.org/changelog/matomo-5-0-3/) +- [Learn more about Matomo 5.1.0](https://matomo.org/changelog/matomo-5-1-0/) diff --git a/content/changelog/2024/07-02-clever-tools-3.8.0.md b/content/changelog/2024/07-02-clever-tools-3.8.0.md new file mode 100644 index 000000000..7c6856a85 --- /dev/null +++ b/content/changelog/2024/07-02-clever-tools-3.8.0.md @@ -0,0 +1,67 @@ +--- +title: 'Clever Tools 3.8: "Big Summer Update" is available' +date: 2024-07-02 +tags: + - clever-tools + - cli +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Hubert Sablonniรจre + link: https://github.com/hsablonniere + image: https://github.com/hsablonniere.png?size=40 +description: Better manage your apps, lots of new features +aliases: +- /changelog/2024-07-02-clever-tools-3.8.0 +excludeSearch: true +--- + +[Clever Tools 3.8](https://github.com/CleverCloud/clever-tools/releases/tag/3.8.0) is now available. It's an important release, as we've worked on some of its features for several weeks. + +## Brand new application management + +It introduces a complete new way to use our CLI with `--app` option, available to every application-related commands. It allows you to target any application available from your account, by its ID or its name. You can for example restart an application this way: + +```bash +clever restart --app app_id +clever restart --app my_app_name +clever restart --app my_app_name --org my_org_name +``` +`clever applications list` new command can be used from any folder of your system. It prints details about applications across your organisations. You can filter the result with `--org` or `-o` option. It includes IDs, names and local aliases (if available) in a table. + +## More (consistent) options + +For most commands, you can now get a result in the format of your choice with `--format` or `-F` option. In most cases, you can use `human` (default) or `json`, but sometimes `json-stream` or `shell` are available too (for example). + +You can now define when to stop logs streaming during a `clever deploy` or a `clever restart` with `exit-on` option. Available values are: `deploy-start`, `deploy-end` and `never` (default: `deploy-end`). Thus, the `--follow` option is now deprecated. + +Of course, you can combine these new options: + +```bash +# We show ID and name of all applications in JSON format +clever applications list --org my_org_name --format json | jq '.[].applications[] | {app_id, name}' + +# We check status of an application +clever status --app app_id_or_name -F json | jq '.status' + +# If it's running, we restart it and stop the logs streaming when the deployment starts +clever restart --app app_id_or_name --exit-on deploy-start +``` + +These changes are available thanks to a `cliparse` update [introducing private options](https://github.com/CleverCloud/cliparse-node/commit/023bd72ddce66337c5b0716ddb3c2a103ff252a8). + +## Lots of new features + +Multiple new features are also available in this "Big Summer Update". Access Logs feature now uses `v4` API. It's faster and more reliable, only available for applications and as an alpha test for now. It's available through `clever accesslogs` command. + +`--no-color` or `--color true|false` global option is available. It's used by default when the output is not a terminal. `clever console` now opens the [Console](https://console.clever-cloud.com) even if your not in a folder with a linked application. [3.8.1 release](https://github.com/CleverCloud/clever-tools/releases/tag/3.8.1) comes with some minor fixes. + +To upgrade Clever Tools, [use your favorite package manager](/doc/cli/install) + +``` +npm update -g clever-tools +clever version +``` + +Note that we reintroduced [Nix support](/doc/cli/install/#nix-package-manager) with this release. diff --git a/content/changelog/2024/07-03-docker-terraform.md b/content/changelog/2024/07-03-docker-terraform.md new file mode 100644 index 000000000..ce7f86a62 --- /dev/null +++ b/content/changelog/2024/07-03-docker-terraform.md @@ -0,0 +1,24 @@ +--- +title: Deploy Docker containers on Clever Cloud with Terraform (or OpenTofu) +date: 2024-07-03 +tags: + - docker + - terraform +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Rรฉmi Collignon-Ducret + link: https://github.com/miton18 + image: https://github.com/miton18.png?size=40 +description: Manage your Docker containers on Clever Cloud with Terraform or compatible tools such as OpenTofu +aliases: +- /changelog/2024-07-03-docker-terraform +excludeSearch: true +--- + +To manage your resources as code on Clever Cloud, from applications to add-ons (object storage, databases, etc.), you can use our Terraform provider. It's compatible with tools such as [OpenTofu](https://opentofu.org/) and can now deploy applications using [our Docker runtime](/doc/applications/docker/). + +You can define instances count or flavors, region, dependencies, ports, Dockerfile and application paths, registry credentials and more. Read [the full parameters list](https://registry.terraform.io/providers/CleverCloud/clevercloud/latest/docs/resources/docker). + +* Learn more about [our Terraform provider](https://registry.terraform.io/providers/CleverCloud/clevercloud/latest/docs) diff --git a/content/changelog/2024/07-04-apache-php-image-update.md b/content/changelog/2024/07-04-apache-php-image-update.md new file mode 100644 index 000000000..fd3fec212 --- /dev/null +++ b/content/changelog/2024/07-04-apache-php-image-update.md @@ -0,0 +1,24 @@ +--- +title: PHP 8.2.21 and 8.3.9 image update +date: 2024-07-04 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Apache 2.4.60 and Composer 2.7.7 also included +aliases: +- /changelog/2024-07-04-apache-php-image-update +excludeSearch: true +--- + +We've updated our PHP image to support versions [8.2.21](https://www.php.net/ChangeLog-8.php#8.2.21) and [8.3.9](https://www.php.net/ChangeLog-8.php#8.3.9): +* They fix a bug [introduced](https://github.com/api-platform/core/issues/6416) in 8.2.20 and 8.3.8 which we had previously patched +* This image includes a fix for GnuPG extension +* PHP info apps are up-to-date: [8.2](https://php82info.cleverapps.io) and [8.3](https://php83info.cleverapps.io) + +Over the past few weeks, we have also included [Apache 2.4.60](https://dlcdn.apache.org/httpd/CHANGES_2.4.60), fixing CVE-2024-36387, 38472, 38473, 38474, 38475, 38476, 38477, 39573 and [Composer 2.7.7](https://github.com/composer/composer/releases/tag/2.7.7), fixing CVE-2024-35241, 35242. + +* Learn more about [PHP on Clever Cloud](/doc/applications/php/) diff --git a/content/changelog/2024/07-05-go-haskell-ruby-update.md b/content/changelog/2024/07-05-go-haskell-ruby-update.md new file mode 100644 index 000000000..9a6813323 --- /dev/null +++ b/content/changelog/2024/07-05-go-haskell-ruby-update.md @@ -0,0 +1,25 @@ +--- +title: Go, Haskell and Ruby images update +date: 2024-07-05 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Some fixes and new versions +aliases: +- /changelog/2024-07-05-go-haskell-ruby-update +excludeSearch: true +--- + +We've updated some of our images: + +* **Go:** + * Default to 1.22.5 + * Fixes CVE-2024-2479 +* **Haskell:** + * Includes Stack 2.15.7 +* **Ruby:** + * Supports 3.1.6, 3.3.2 and 3.3.3 diff --git a/content/changelog/2024/07-06-mysql-pgsql-update.md b/content/changelog/2024/07-06-mysql-pgsql-update.md new file mode 100644 index 000000000..245ea12c0 --- /dev/null +++ b/content/changelog/2024/07-06-mysql-pgsql-update.md @@ -0,0 +1,25 @@ +--- +title: MySQL and PostgreSQL update +date: 2024-07-06 +tags: + - addons + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: And some new extensions/versions for PostgreSQL +aliases: +- /changelog/2024-07-06-mysql-pgsql-update +excludeSearch: true +--- + +We've updated some of our database services: + +* **MySQL:** + * Version 8.0.34-26 +* **PostgreSQL:** + * Version 15.7 + * `pgvector` extension 0.7.1 + * `timescaledb` extension 2.14.2 + * `pg_ivm` extension 1.8 is now available (ask it to [our support team](https://console.clever-cloud.com/ticket-center-choice)) diff --git a/content/changelog/2024/07-10-CVE-2024-6387.md b/content/changelog/2024/07-10-CVE-2024-6387.md new file mode 100644 index 000000000..48dc6b7dd --- /dev/null +++ b/content/changelog/2024/07-10-CVE-2024-6387.md @@ -0,0 +1,25 @@ +--- +title: "regreSSHion (CVE-2024-6387): our response" +date: 2024-07-10 +tags: + - security +authors: + - name: Arnaud Lefebvre + link: https://github.com/BlackYoup + image: https://github.com/BlackYoup.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: All our systems are up-to-date +aliases: +- /changelog/2024-07-10-cve-2024-6387 +excludeSearch: true +--- + +On July 1st, we were informed that an unauthenticated Remote Code Execution (RCE) vulnerability that could grant an attacker full root access was found in OpenSSHโ€™s server (`sshd`) on glibc-based Linux systems. Our security team instantly made sanity checks, and listed impacted services. + +As stated [by Qualys](https://www.qualys.com/regresshion-cve-2024-6387/), ยซ *versions from 4.4p1 up to, but not including, 8.5p1 are not vulnerable due to a transformative patch for CVE-2006-5051, which made a previously unsafe function secure. The vulnerability resurfaces in versions from 8.5p1 up to, but not including, 9.8p1 due to the accidental removal of a critical component in a function.* ยป. + +There was no known exploit for 64-bit systems, but we immediately strengthened firewall rules for port 22 and packaged OpenSSH 9.8p1. Then we deployed it on all our systems, images, managed services and started to redeploy applications gradually for our customers. This work is now completed on all our servers and thousands of virtual machines without any impact. + +You can contact [our support team](https://console.clever-cloud.com/ticket-center-choice) if you have further questions about this topic. \ No newline at end of file diff --git a/content/changelog/2024/07-11-pulsar-3.3.0-update.md b/content/changelog/2024/07-11-pulsar-3.3.0-update.md new file mode 100644 index 000000000..b6bd7935e --- /dev/null +++ b/content/changelog/2024/07-11-pulsar-3.3.0-update.md @@ -0,0 +1,19 @@ +--- +title: "Pulsar 3.3.0 is available" +date: 2024-07-11 +tags: + - addons + - pulsar +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: New API endpoint and stack update +aliases: +- /changelog/2024-07-11-pulsar-3.3.0-update +excludeSearch: true +--- + +[Apache Pulsar 3.3.0](https://github.com/apache/pulsar/releases/tag/v3.3.0) is deployed on our platform. It brings lots of fixes and some new features. + +- Learn more about [Apache Pulsar](https://www.clever.cloud/product/pulsar/) on Clever Cloud diff --git a/content/changelog/2024/07-12-accountant-access-console-fix.md b/content/changelog/2024/07-12-accountant-access-console-fix.md new file mode 100644 index 000000000..7859f5655 --- /dev/null +++ b/content/changelog/2024/07-12-accountant-access-console-fix.md @@ -0,0 +1,20 @@ +--- +title: "Console: a fix for accountant access" +date: 2024-07-12 +tags: + - console + - fix +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Florian Sanders + link: https://github.com/florian-sanders-cc + image: https://github.com/florian-sanders-cc.png?size=40 +description: You won't be constantly disconnected anymore +aliases: +- /changelog/2024-07-12-accountant-access-console-fix +excludeSearch: true +--- + +Users with an "accountant" role were constantly disconnected from the Console. This issue has been fixed. diff --git a/content/changelog/2024/07-17-keycloak-public-release.md b/content/changelog/2024/07-17-keycloak-public-release.md new file mode 100644 index 000000000..6d239a44c --- /dev/null +++ b/content/changelog/2024/07-17-keycloak-public-release.md @@ -0,0 +1,22 @@ +--- +title: "Keycloak add-on in public alpha" +date: 2024-07-17 +tags: + - addons + - keycloak +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Try it and give us feedback +aliases: +- /changelog/2024-07-17-keycloak-public-release +excludeSearch: true +--- + +Clever Cloud provides a Keycloak add-on, developed with Please Open-it, for some months in private alpha. We're releasing it publicly, with a new version and some fixes. Any Clever Cloud user can now deploy a Keycloak service from [API](/api/), [Clever Tools](https://github.com/CleverCloud/clever-tools) or [Console](https://console.clever-cloud.com) and use it. If you have any question or feedback, use our [GitHub Community space](https://github.com/CleverCloud/Community/discussions/categories/keycloak). + +- [Learn more about Keycloak on Clever Cloud](/doc/addons/keycloak/) \ No newline at end of file diff --git a/content/changelog/2024/07-17-new-logs-default.md b/content/changelog/2024/07-17-new-logs-default.md new file mode 100644 index 000000000..1fdfcf5ab --- /dev/null +++ b/content/changelog/2024/07-17-new-logs-default.md @@ -0,0 +1,21 @@ +--- +title: "Console: new logs interface is now used by default" +date: 2024-07-17 +tags: + - console + - logs +authors: + - name: Pierre De Soyres + link: https://github.com/pdesoyres-cc + image: https://github.com/pdesoyres-cc.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + +description: Final countdown +aliases: +- /changelog/2024-07-17-new-logs-default +excludeSearch: true +--- + +New logs interface is available in the Console in public beta [for some months](../04-15-new-logs-interface-public-beta/), and we already [enhanced it](../06-21-better-new-logs/). We're now confident enough to use it by default. You can still disable it. If you have any question or feedback, use our [GitHub Community space](https://github.com/CleverCloud/Community/discussions/categories/new-logs-interface). \ No newline at end of file diff --git a/content/changelog/2024/07-18-elastic-8.10.2-jenkins-2.452.3.md b/content/changelog/2024/07-18-elastic-8.10.2-jenkins-2.452.3.md new file mode 100644 index 000000000..0ef2f7240 --- /dev/null +++ b/content/changelog/2024/07-18-elastic-8.10.2-jenkins-2.452.3.md @@ -0,0 +1,26 @@ +--- +title: "Elasticsearch and Jenkins update" +date: 2024-07-18 +tags: + - addons + - update +authors: + - name: Aurรฉlien Hebert + link: https://github.com/aurrelhebert + image: https://github.com/aurrelhebert.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Elasticsearch 8.1.0 and Jenkins 2.452.3 are now available +aliases: +- /changelog/2024-07-18-elastic-8.10.2-jenkins-2.452.3 +excludeSearch: true +--- + +We've updated Elasticsearch and Jenkins services: + +* **Elasticsearch:** + * Version 8.10.2 +* **Jenkins:** + * New add-ons are deployed with version 2.452.3 and Java 21 + * Existing Jenkins were upgraded to Java 17 diff --git a/content/changelog/2024/07-18-github-action-review-apps.md b/content/changelog/2024/07-18-github-action-review-apps.md new file mode 100644 index 000000000..e2ab502e5 --- /dev/null +++ b/content/changelog/2024/07-18-github-action-review-apps.md @@ -0,0 +1,33 @@ +--- +title: "Version 1.0 of our GitHub Action for review applications is available" +date: 2024-07-18 +tags: + - github + - action +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Julia March + link: https://github.com/juliamrch + image: https://github.com/juliamrch.png?size=40 +description: Simplify your GitHubworkflows +aliases: +- /changelog/2024-07-18-github-action-review-apps +excludeSearch: true +--- + +Some months ago, Clever Cloud released [a new GitHub Action](https://github.com/marketplace/actions/clever-cloud-review-app-on-prs) to deploy applications from GitHub to Clever Cloud. After some iterations, version 1.0 is available. We make it simpler to use by making it [composite](https://docs.github.com/en/actions/sharing-automations/creating-actions/creating-a-composite-action)). Now you can just add this in your workflow for example: + +```yml +- name: Create review app + uses: CleverCloud/clever-cloud-review-app@latest + env: + CLEVER_SECRET: ${{ secrets.CLEVER_SECRET }} + CLEVER_TOKEN: ${{ secrets.CLEVER_TOKEN }} + ORGA_ID: ${{ secrets.ORGA_ID }} + with: + type: '' +``` + +- [Learn more about how to deploy from GitHub to Clever Cloud](/doc/ci-cd/github/) \ No newline at end of file diff --git a/content/changelog/2024/07-26-domains-console-update.md b/content/changelog/2024/07-26-domains-console-update.md new file mode 100644 index 000000000..6d4951896 --- /dev/null +++ b/content/changelog/2024/07-26-domains-console-update.md @@ -0,0 +1,27 @@ +--- +title: "Console: new Domains management interface" +date: 2024-07-26 +tags: + - console + - domains +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Florian Sanders + link: https://github.com/florian-sanders-cc + image: https://github.com/florian-sanders-cc.png?size=40 +description: Did you know about path routing? +aliases: +- /changelog/2024-07-26-domains-console-update +excludeSearch: true +--- + +We've upgraded the applications' Domains page in the Console. It's now more clear, complete and easy to use. We designed it to highlight some of our underrated features such as [path routing](/doc/administrate/domain-names/#path-routing). You also now have: + +- A unique form to add a custom domain or a test domain (`cleverapps.io`) +- A unique list of test and custom domains +- A direct link to add your own certificate +- Clearer error messages/warnings +- Clearer instructions about DNS configuration and IP lists +- Better accessibility, responsiveness, internationalization diff --git a/content/changelog/2024/07-30-github-action-1.1.md b/content/changelog/2024/07-30-github-action-1.1.md new file mode 100644 index 000000000..d06341a2b --- /dev/null +++ b/content/changelog/2024/07-30-github-action-1.1.md @@ -0,0 +1,22 @@ +--- +title: "Version 1.1 of our GitHub Action for review applications is available" +date: 2024-07-30 +tags: + - github + - action +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Julia March + link: https://github.com/juliamrch + image: https://github.com/juliamrch.png?size=40 +description: Better, simpler GitHub Action +aliases: +- /changelog/2024-07-30-github-action-1.1 +excludeSearch: true +--- + +Update for [GitHub Action](https://github.com/marketplace/actions/clever-cloud-review-app-on-prs) to deploy applications from GitHub to Clever Cloud. Version 1.1 simplifies workflow files and gives conditional comments depending on the actions performed on the PR (deploy, update, delete). + +- [Learn more about how to deploy from GitHub to Clever Cloud](/doc/ci-cd/github/) \ No newline at end of file diff --git a/content/changelog/2024/08-01-lagging-server-crate.md b/content/changelog/2024/08-01-lagging-server-crate.md new file mode 100644 index 000000000..9e60e2076 --- /dev/null +++ b/content/changelog/2024/08-01-lagging-server-crate.md @@ -0,0 +1,22 @@ +--- +title: "Lagging server: our Sลzu testing tool available as a Rust Crate" +date: 2024-08-01 +tags: + - sลzu + - tools +authors: + - name: Emmanuel Bosquet + link: https://github.com/Keksoj + image: https://github.com/Keksoj.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: n2 is the new n1 +aliases: +- /changelog/2024-08-01-lagging-server-crate +excludeSearch: true +--- + +When we release new versions of our reverse proxy [Sลzu](https://www.sozu.io), we now systematically run performances tests. To conduct some of them directly from our CI, we developed a small tool: Lagging Server. It's open source, and now [available as a Rust crate](https://crates.io/crates/lagging_server) anyone can use. + +* Learn more about [Lagging Server](https://github.com/CleverCloud/lagging_server) {{< icon "github" >}} \ No newline at end of file diff --git a/content/changelog/2024/08-09-python-3.12-update.md b/content/changelog/2024/08-09-python-3.12-update.md new file mode 100644 index 000000000..ec856d571 --- /dev/null +++ b/content/changelog/2024/08-09-python-3.12-update.md @@ -0,0 +1,28 @@ +--- +title: "Docker and Python image update" +date: 2024-08-09 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Aurรฉlien Hebert + link: https://github.com/s0dyy + image: https://github.com/s0dyy.png?size=40 +description: Python 3.12 support and lighter Docker image +aliases: +- /changelog/2024-08-09-python-3.12-update +excludeSearch: true +--- + +We've updated Docker and Python image and deployed them without any impact for our users. + +* **Common:** + * Linux kernel 6.10.2 +* **Docker:** + * Lighter updated image +* **Python:** + * Python 3.12 support + * A fix for missing system locales diff --git a/content/changelog/2024/08-26-java-containers-update.md b/content/changelog/2024/08-26-java-containers-update.md new file mode 100644 index 000000000..38d88f50c --- /dev/null +++ b/content/changelog/2024/08-26-java-containers-update.md @@ -0,0 +1,22 @@ +--- +title: "Java servlet containers cleanup, Wildfly upgrade" +date: 2024-08-26 +tags: + - applications + - java +authors: + - name: Julien Durillon + link: https://github.com/judu + image: https://github.com/judu.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Wildfly 27.0.1 and 33.0.1 are now supported +aliases: +- /changelog/2024-08-26-java-containers-update +excludeSearch: true +--- + +As part of our images' enhancement process, we've tidied up the [list of supported servlet containers](/doc/applications/java/java-war/#available-containers). Those that are no longer used by our customers are removed from the Java image. If you need a container which is not listed in [the servlet container list](/doc/applications/java/java-war/#available-containers) or a specific version, please contact [our support team](https://console.clever-cloud.com/ticket-center-choice). This release also includes a [Wildfly](https://github.com/wildfly/wildfly) upgrade. Versions 27.0.1 and 33.0.1 are now available. + +- Learn more about [Java on Clever Cloud](/doc/applications/java/) diff --git a/content/changelog/2024/08-30-deploy-url-mtl.md b/content/changelog/2024/08-30-deploy-url-mtl.md new file mode 100644 index 000000000..f86e8ba0b --- /dev/null +++ b/content/changelog/2024/08-30-deploy-url-mtl.md @@ -0,0 +1,30 @@ +--- +title: "Montreal (MTL) zone: new deployment URL" +date: 2024-08-30 +tags: + - applications + - montreal +authors: + - name: Arnaud Lefebvre + link: https://github.com/BlackYoup + image: https://github.com/BlackYoup.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: n2 is the new n1 +aliases: +- /changelog/2024-08-30-deploy-url-mtl +excludeSearch: true +--- + +We improved our git services on Montreal zone. Newly created applications now use `push-n2-mtl-clevercloud-customers.services.clever-cloud.com` as deployment URL. Applications still using the previous URL starting with `push-n1` won't be impacted by this change. If the new URL is not in your known hosts, you can see a warning during `git+ssh` operations: + +``` +โฏ git clone git+ssh://git@push-n2-mtl-clevercloud-customers.services.clever-cloud.com/app_xxx.git +Cloning into 'app_xxx'โ€ฆ +The authenticity of host 'push-n2-mtl-clevercloud-customers.services.clever-cloud.com (192.99.188.152)' can't be established. +โ€ฆ +This host key is known by the following other names/addresses: + ~/.ssh/known_hosts:2142: push-n1-mtl-clevercloud-customers.services.clever-cloud.com +Are you sure you want to continue connecting (yes/no/[fingerprint])? +``` diff --git a/content/changelog/2024/09-03-gitlab-components-review-apps.md b/content/changelog/2024/09-03-gitlab-components-review-apps.md new file mode 100644 index 000000000..1bfbe4ec6 --- /dev/null +++ b/content/changelog/2024/09-03-gitlab-components-review-apps.md @@ -0,0 +1,24 @@ +--- +title: "Version 2.0 of our GitLab Component for review applications is available" +date: 2024-09-03 +tags: + - gitlab + - component +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Julia March + link: https://github.com/juliamrch + image: https://github.com/juliamrch.png?size=40 +description: Simplify your GitLab workflows +aliases: +- /changelog/2024-09-03-gitlab-components-review-apps +excludeSearch: true +--- + +Some months ago, we released [a new GitLab Component](https://gitlab.com/explore/catalog/CleverCloud/clever-cloud-pipeline) to deploy applications from GitLab to Clever Cloud. Version 2.0 is available with variables injection from GitLab CI/CD and automatic releases. You can now use it with the `latest` tag for tests, or `2.0.1` tag for production. + +**Breaking changes**: Input `deploy` have been removed to prevent users to script the environment variables injection before deploying the app. Remove it from your `.gitlab-ci.yml` file if it's set up, to avoid breaking your pipeline. + +- [Learn more about how to deploy from GitLab to Clever Cloud](/doc/ci-cd/gitlab/) diff --git a/content/changelog/2024/09-12-clever-tools-3.8.3.md b/content/changelog/2024/09-12-clever-tools-3.8.3.md new file mode 100644 index 000000000..e10a75463 --- /dev/null +++ b/content/changelog/2024/09-12-clever-tools-3.8.3.md @@ -0,0 +1,27 @@ +--- +title: 'Clever Tools 3.8.3 is available' +date: 2024-09-12 +tags: + - clever-tools + - cli +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Hubert Sablonniรจre + link: https://github.com/hsablonniere + image: https://github.com/hsablonniere.png?size=40 +description: Last minors updates before a big change +aliases: +- /changelog/2024-09-12-clever-tools-3.8.3 +excludeSearch: true +--- + +After two minor releases fixing issues with drains, [Clever Tools 3.8.3](https://github.com/CleverCloud/clever-tools/releases/tag/3.8.3) is available. It fixes Nix support, `update-notifier` and enhances the add-on deletion command. It will now only need the add-on ID or name if it's in an organisation linked to your account. + +To upgrade Clever Tools, [use your favorite package manager](/doc/cli/install). For example with `npm`: + +``` +npm update -g clever-tools +clever version +``` diff --git a/content/changelog/2024/09-12-js-client-9.0.0.md b/content/changelog/2024/09-12-js-client-9.0.0.md new file mode 100644 index 000000000..49d2c39b2 --- /dev/null +++ b/content/changelog/2024/09-12-js-client-9.0.0.md @@ -0,0 +1,20 @@ +--- +title: 'JS Client 9.0 is available' +date: 2024-09-12 +tags: + - client + - javascript +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Hubert Sablonniรจre + link: https://github.com/hsablonniere + image: https://github.com/hsablonniere.png?size=40 +description: A must have for next packaging of clever tools +aliases: +- /changelog/2024-09-12-js-client-9.0.0 +excludeSearch: true +--- + +We released [Clever Cloud JS client 9.0.0](https://github.com/CleverCloud/clever-client.js/blob/master/CHANGELOG.md#900-2024-09-11). It computes OAuth v1 signature with Web Crypto for all platforms (Browser, Node.js, Deno, Bun, CF workers, etc.) instead of relying on `node:crypto`. This will simplify usage of the client with a bundler. \ No newline at end of file diff --git a/content/changelog/2024/10-01-materia-kv-ttl-layer-update.md b/content/changelog/2024/10-01-materia-kv-ttl-layer-update.md new file mode 100644 index 000000000..8803efd04 --- /dev/null +++ b/content/changelog/2024/10-01-materia-kv-ttl-layer-update.md @@ -0,0 +1,23 @@ +--- +title: 'Materia KV: layer update, with TTL support' +date: 2024-10-01 +tags: + - Materia KV + - TTL +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Get ready for more commands and layers soon +aliases: +- /changelog/2024-10-01-materia-kv-ttl-layer-update +excludeSearch: true +--- + +After the first release of our [Materia KV add-on](/doc/addons/materia-kv), we discussed with users and what they wanted to see in the next version. A major milestone for us was to add support for `TTL` (Time To Live) command, and those related to it such as `EXPIRE`, `PEXPIRE`, `PTTL`, `SET EX`. It's now available and will helps us, for example, to bring Materia KV support to PHP sessions. + +This new release of our Redis API compatible layer brings a new design, helping us to better support more commands in the future. In the meantime, we've retired hash and list commands, to enhance them. They will be back soon. Some others are added, like `CLIENT ID`, `DECRBY`, `INCRBY`,`GETBIT`, `SETBIT`, etc. + +If you have any questions or feedback, let's discuss it on our [GitHub Community](https://github.com/CleverCloud/Community/discussions/categories/materia). + +- [The full Materia KV commands list](/doc/addons/materia-kv/#supported-types-and-commands). diff --git a/content/changelog/2024/10-01-python-image-changes.md b/content/changelog/2024/10-01-python-image-changes.md new file mode 100644 index 000000000..702944766 --- /dev/null +++ b/content/changelog/2024/10-01-python-image-changes.md @@ -0,0 +1,41 @@ +--- +title: "Python image: what's new and what's to come" +date: 2024-10-01 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: uv, Python 3.13 and some clean up +aliases: +- /changelog/2024-10-01-python-image-changes +excludeSearch: true +--- + +Python ecosystem is diverse, with lots of legacy versions and practices. But in the recent months, it evolved on many fronts. So, we've decided to handle it and start to revise how you can deploy Python applications on Clever Cloud. + +## Package management: uv on Clever Cloud + +We only support [pip](https://packaging.python.org/en/latest/tutorials/installing-packages/), `requirements.txt` and `setup.py` natively. For some weeks, we've included [uv](https://docs.astral.sh/uv/getting-started/features/) in our Python image to make some tests. Based on Rust, this package and project manager is compliant with existing ecosystem and blazing fast. [It's now a part](/doc/applications/python/#use-uv-as-a-package-manager) of our "Enthusiast tools" initiative and will be updated regularly. Thus, there is no active support for it yet. + +We'll enhance its native support in coming releases of our Python image. + +* [Learn more about uv](https://github.com/astral-sh/uv) {{< icon "github" >}} + +## Python versions: time to clean up + +We're in 2024 and Python 2.x still coexists with Python 3.x. As it's always used by some of our customers, we've decided to continue to support it. Python 3.x is now the default version for new Python applications. We'll make this change for other runtimes (where Python is also included), starting 2025. If you need Python 2.x, set `CC_PYTHON_VERSION=2` in your applications. + +We'll also get closer to [the official Python release cycle](https://devguide.python.org/versions/#python-release-cycle), which is 5 years of support. Thus, we'll stop using Python 3.7 starting December 1st, 2024. Next year, we'll deprecate Python 3.8 and stop providing it. If an application is asking for a deprecated version, it will use the latest available by default. So, upgrade your `CC_PYTHON_VERSION` towards your needs. + +If you need to sideload unsupported Python versions, `uv` [can help you](https://docs.astral.sh/uv/guides/install-python/). You can also deploy your applications through [Docker](/doc/applications/docker), but you should avoid to use end of life runtime in your applications. + +* Learn more about [Python on Clever Cloud](/doc/applications/python/) + +## What's next? + +We'll enhance our Python images to better support modern Python ecosystem and simplify the deployment process. Python 3.13, [released today](https://docs.python.org/3.13/whatsnew/3.13.html), will be available on Clever Cloud in the coming weeks. + +If you have any questions or suggestions, feel free to tell us on [our community page](https://github.com/CleverCloud/Community/discussions/categories/paas-runtimes). diff --git a/content/changelog/2024/10-04-keycloak-beta-release.md b/content/changelog/2024/10-04-keycloak-beta-release.md new file mode 100644 index 000000000..04d96f0d1 --- /dev/null +++ b/content/changelog/2024/10-04-keycloak-beta-release.md @@ -0,0 +1,26 @@ +--- +title: "Keycloak updated to 25.0.6, now in public beta" +date: 2024-10-04 +tags: + - addons + - keycloak +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Release 26 is coming +aliases: +- /changelog/2024-10-04-keycloak-beta-release +excludeSearch: true +--- + +Clever Cloud's Keycloak add-on, developed with Please Open-it, is now available in public beta. We enhanced user experience, performances and features since [the alpha stage](../07-17-keycloak-public-release/). We revised the default configuration of underlying resources. We now use a `S flavored` Java application with more memory and a XXS Small Space PostgreSQL database which is enough for low-volume needs. Of course, you can change it according to your needs at any time. + +The default Keycloak version is now 25.0.6. If you want to upgrade, change the `CC_KEYCLOAK_VERSION` environment variable to `25.0.6` and restart the Java application. You can also add the new `CC_METRICS_PROMETHEUS_PATH=/metrics` and `CC_METRICS_PROMETHEUS_PORT=9000`to access metrics [from Grafana](/doc/metrics/#publish-your-own-metrics). + +We plan to upgrade to [26.x](https://github.com/keycloak/keycloak/releases/tag/26.0.0) in the next few weeks after checking its stability and validating it for our platform. + +- [Learn more about Keycloak on Clever Cloud](/doc/addons/keycloak/) diff --git a/content/changelog/2024/10-07-CVE-2024-47561.md b/content/changelog/2024/10-07-CVE-2024-47561.md new file mode 100644 index 000000000..0629706de --- /dev/null +++ b/content/changelog/2024/10-07-CVE-2024-47561.md @@ -0,0 +1,18 @@ +--- +title: "CVE-2024-47561: we upgraded Avro and Apache Pulsar" +date: 2024-10-07 +tags: + - security +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: All our systems are up-to-date +aliases: +- /changelog/2024-10-07-cve-2024-47561 +excludeSearch: true +--- + +On October 4th, we were informed of [a schema parsing vulnerability](https://nvd.nist.gov/vuln/detail/CVE-2024-47561) in the Java SDK of Apache Avro 1.11.3 and previous versions, allowing bad actors to execute arbitrary code. Our security team instantly made sanity checks, and listed impacted services. + +We upgraded our tools using Avro to 1.11.4. As Apache Pulsar was impacted, we upgraded our cluster to [version 3.3.2](https://github.com/apache/pulsar/releases/tag/v3.3.2). The complete rolling of these updates is now ended, without any impact to our users. You can contact [our support team](https://console.clever-cloud.com/ticket-center-choice) if you have further questions about this topic. \ No newline at end of file diff --git a/content/changelog/2024/10-17-sozu-1.0.5.md b/content/changelog/2024/10-17-sozu-1.0.5.md new file mode 100644 index 000000000..1d716de94 --- /dev/null +++ b/content/changelog/2024/10-17-sozu-1.0.5.md @@ -0,0 +1,23 @@ +--- +title: Sลzu 1.0.5 is available and deployed +date: 2024-10-17 +tags: + - sozu +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Florentin Dubois + link: https://github.com/FlorentinDUBOIS + image: https://github.com/FlorentinDUBOIS.png?size=40 +description: Lots of fixes and improvements before the 1.1.0 release +aliases: +- /changelog/2024-10-17-sozu-1.0.5 +excludeSearch: true +--- + +[Sลzu](https://www.sozu.io) 1.0.5 is now available and deployed on `cleverapps.io` domains, we're progressively rolling it out on our own domains and dedicated load balancers. Since [the release of Sลzu 1.0.2](../06-07-sozu-1.0.2) we've fixed some bugs, improved CLI, metrics and performances. + +We're currently testing the 1.1.0 release candidate of Sลzu, with HTTP/2 support, coming soon on Clever Cloud. + +* Learn more about [Sลzu new releases](https://github.com/sozu-proxy/sozu/releases) {{< icon "github" >}} \ No newline at end of file diff --git a/content/changelog/2024/10-18-azimutt-available.md b/content/changelog/2024/10-18-azimutt-available.md new file mode 100644 index 000000000..63399c397 --- /dev/null +++ b/content/changelog/2024/10-18-azimutt-available.md @@ -0,0 +1,27 @@ +--- +title: "Azimutt is available as an add-on on Clever Cloud" +date: 2024-10-18 +tags: + - addons + - azimutt +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: A new partner enters our Marketplace +aliases: +- /changelog/2024-10-18-azimutt-available +excludeSearch: true +--- + +Azimutt is [an open-source project](https://github.com/azimuttapp/azimutt) we follow for a long time. Created by Loรฏc Knuchel, it helps you to explore, analyze and manage your database in a pleasant graphical interface. It's a member of the [Clever Cloud startup program](https://www.clever.cloud/up-program/), for some weeks and now part of our [Marketplace](/doc/marketplace/). Thus, you can create an Azimutt account, free or with a subscription, directly [from the Console](https://console.clever-cloud.com). + +You just have to provide a compatible database URI, hosted by Clever Cloud or not, and start exploring it. Our integration is based on a gateway hosted by Clever Cloud. No credentials are shared with Azimutt, and they're kept safely in your browser. + +Feel free to let us know what you think about this tool and if you want a deeper integration in [our GitHub Community](https://github.com/CleverCloud/Community/discussions/categories/dbaas). + +- [Learn more about Azimutt](https://azimutt.app/) +- [Azimutt documentation](https://azimutt.app/docs/) diff --git a/content/changelog/2024/10-21-clever-tools-3.9.0.md b/content/changelog/2024/10-21-clever-tools-3.9.0.md new file mode 100644 index 000000000..9b71dfac0 --- /dev/null +++ b/content/changelog/2024/10-21-clever-tools-3.9.0.md @@ -0,0 +1,43 @@ +--- +title: 'Clever Tools 3.9, with domain diagnostics and overview' +date: 2024-10-23 +tags: + - clever-tools + - cli +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Hubert Sablonniรจre + link: https://github.com/hsablonniere + image: https://github.com/hsablonniere.png?size=40 +description: Better manage your apps, lots of new features +aliases: +- /changelog/2024-10-21-clever-tools-3.9.0 +excludeSearch: true +--- + +[Clever Tools 3.9](https://github.com/CleverCloud/clever-tools/releases/tag/3.9.0) is available. It's the first minor release since our [Big Summer Update](../07-02-clever-tools-3.8.0/). Over the past few months, we've revamped many things under the hood, to clean the code and prepare next big changes we're working on. + +## List and diagnose your domains +This new version brings two new features to manage domains. First is `clever domain overview`, allowing you to list domains linked to your account, across all the organisations you manage. List only domains containing a specific text string in their name thanks to the `--filter` option. Use the `json` output (`--format`/`-F`) and tools such as [jless](https://jless.io/) to navigate through long lists easily. + +This feature uses a new "short" link for the Console, which doesn't require organisation or user ID: + +```bash +# The id can be an app_id, an addon_id or a real_id +https://console.clever-cloud.com/goto/id +``` + +The `clever domain diag` command allows you to check domains' configuration for an application, locally linked or targeted with the `--app` option. If some DNS records are wrong or missing, it will help you to know how to fix them. There is a `--filter` option to get only domains containing a specific text string in their name and a `--format`/`-F` option to output the result in `human` or `json`. + +## Post-creation instructions for add-ons and fixes + +This release also provides bug fixes, the token expiry date/time in `clever profile` and a better experience with add-ons like [Keycloak](/doc/addons/keycloak/), [Matomo](/doc/addons/matomo) or [Metabase](/doc/addons/metabase/). Once created, you get post-creation instructions such as management/Console URL, temporary credentials and a link to the add-on's documentation. + +To upgrade Clever Tools, [use your favorite package manager](/doc/cli/install). For example with `npm`: + +``` +npm update -g clever-tools +clever version +``` diff --git a/content/changelog/2024/10-28-metabase-available.md b/content/changelog/2024/10-28-metabase-available.md new file mode 100644 index 000000000..0be6016b5 --- /dev/null +++ b/content/changelog/2024/10-28-metabase-available.md @@ -0,0 +1,26 @@ +--- +title: "Metabase is available as an add-on on Clever Cloud" +date: 2024-10-28 +tags: + - addons + - metabase +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Analyze and explore your data with ease +aliases: +- /changelog/2024-10-28-metabase-available +excludeSearch: true +--- + +After some weeks of testing, the Clever Cloud's Metabase add-on, developed with [David Sferruzza](https://david.sferruzza.fr/), is available in public beta. Thus, you can deploy the service, from [Console](https://console.clever-cloud.com/users/me/addons/new), [API](/api) or [Clever Tools](https://github.com/CleverCloud/clever-tools), and use it in minutes. + +It's based on a Java application and a PostgreSQL database. Once deployed you'll get a management URL to create an admin account. Then, just start using Metabase, add your data sources, create your questions and dashboards. You'll get benefits from the Clever Cloud's integration, with scalability options, database backups logs, metrics, easy version and upgrade management. + +Feel free to let us know what you think and ask your questions in [our GitHub Community](https://github.com/CleverCloud/Community/discussions/categories/metabase). + +- [Learn more about Metabase on Clever Cloud](/doc/addons/metabase/) diff --git a/content/changelog/2024/10-28-pulsar-4.0.0-update.md b/content/changelog/2024/10-28-pulsar-4.0.0-update.md new file mode 100644 index 000000000..e945548f0 --- /dev/null +++ b/content/changelog/2024/10-28-pulsar-4.0.0-update.md @@ -0,0 +1,19 @@ +--- +title: "Pulsar 4.0.0 is available" +date: 2024-10-28 +tags: + - addons + - pulsar +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: And soon lots of news for Pulsar on Clever Cloud +aliases: +- /changelog/2024-10-28-pulsar-4.0.0-update +excludeSearch: true +--- + +[4.0.0 release of Apache Pulsar](https://github.com/apache/pulsar/releases/tag/v4.0.0) is deployed on our platform. It brings lots of new features and fixes, including enhanced `Key_Shared` subscription implementation, which helps us to resolve some recent issues. + +- Learn more about [Apache Pulsar](https://www.clever.cloud/product/pulsar/) on Clever Cloud diff --git a/content/changelog/2024/11-08-erlang-rust-update.md b/content/changelog/2024/11-08-erlang-rust-update.md new file mode 100644 index 000000000..94f2319e4 --- /dev/null +++ b/content/changelog/2024/11-08-erlang-rust-update.md @@ -0,0 +1,32 @@ +--- +title: "Erlang and Rust images update, Redirection.io support" +date: 2024-11-08 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: New versions, tools, colors and more +excludeSearch: true +aliases: +- /changelog/2024-11-08-erlang-rust-update +- /changelog/2024-11-11-08-erlang-rust-update +--- + +Weโ€™ve updated Elixir and Rust images. They were deployed without any impact for our users. + +* **Common:** + * Linux kernel 6.11.6 + * Lighter Vector binary + * New build/deploy message with colors + * Users can now use multiple OpenVPN clients in a single instance +* **Elixir:** + * Elixir 1.17 + * Erlang 27.1.2 +* **Rust:** + * Rust 1.82.0 + * libassuan fix + +We also started to add [Redirection.io](https://redirection.io) agent in our images with this update, as part of our [Enthusiast Tools initiative](../10-01-python-image-changes/), and plan to ease its native support in coming releases. diff --git a/content/changelog/2024/11-08-mysql-mysql-8.4.0.md b/content/changelog/2024/11-08-mysql-mysql-8.4.0.md new file mode 100644 index 000000000..b3222e81d --- /dev/null +++ b/content/changelog/2024/11-08-mysql-mysql-8.4.0.md @@ -0,0 +1,20 @@ +--- +title: MySQL 8.4 (LTS) is available +date: 2024-11-08 +tags: + - addons + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Try the new branch now, and discover what's new +aliases: +- /changelog/2024-11-08-mysql-mysql-8.4.0 +excludeSearch: true +--- + +MySQL 8.4 is available on Clever Cloud. You can deploy it as a new add-on or migrate existing ones. As this is the first release (8.4.0) of this long term support (LTS) branch for the [Percona Server](https://www.percona.com/mysql/software/percona-server-for-mysql) we use, it's tagged as `early`. That means you should consider it mostly to make some tests and discover what's new. But we recommend [waiting a bit](https://www.percona.com/blog/severe-instability-of-mysql-8-0-38-8-4-1-and-9-0-resolved-in-upcoming-releases/) before using a new branch in production. + +* [Learn more about MySQL 8.4](https://www.percona.com/blog/mysql-8-4-first-peek/) +* [Learn more about MySQL on Clever Cloud](/doc/addons/mysql/) diff --git a/content/changelog/2024/11-09-java-update.md b/content/changelog/2024/11-09-java-update.md new file mode 100644 index 000000000..3a34cff24 --- /dev/null +++ b/content/changelog/2024/11-09-java-update.md @@ -0,0 +1,26 @@ +--- +title: "Java 23 is available" +date: 2024-11-09 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: New versions, tools, colors and more +aliases: +- /changelog/2024-11-09-java-update +excludeSearch: true +--- + +Weโ€™ve updated Java image. It was deployed without any impact for our users. + + * Java 23 support + * Linux kernel 6.11.6 + * Lighter Vector binary + * New build/deploy message with colors + * [Redirection.io](https://redirection.io) agent is included in the image + * Users can now use multiple OpenVPN clients in a single instance + +As Java 22 is now [considered as end-of-life](https://www.oracle.com/fr/java/technologies/java-se-support-roadmap.html), we invite you to upgrade `CC_JAVA_VERSION` of your applications to `23` or to `21` (latest LTS). \ No newline at end of file diff --git a/content/changelog/2024/11-13-metabase-51-version-warning.md b/content/changelog/2024/11-13-metabase-51-version-warning.md new file mode 100644 index 000000000..f3f367899 --- /dev/null +++ b/content/changelog/2024/11-13-metabase-51-version-warning.md @@ -0,0 +1,25 @@ +--- +title: "Metabase 51 is available" +date: 2024-11-13 +tags: + - addons + - metabase +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: New branch, better update instructions +aliases: +- /changelog/2024-11-13-metabase-51-version-warning +excludeSearch: true +--- + +The `x.51` branch of Metabase is now available on Clever Cloud. To update, just set `CC_METABASE_VERSION` of the add-on's Java application to `0.51` for the community edition or `1.51` for the enterprise edition (EE). We also added a warning message in logs if you modify the version to deploy and restart the application without rebuilding it. + +- [Learn more about Metabase on Clever Cloud](/doc/addons/metabase/) +- [Learn more about Metabase 51](https://www.metabase.com/releases/metabase-51) + +{{< youtube id="oqoqSiVihdo" >}} diff --git a/content/changelog/2024/11-18-keycloak-26.md b/content/changelog/2024/11-18-keycloak-26.md new file mode 100644 index 000000000..f154686c9 --- /dev/null +++ b/content/changelog/2024/11-18-keycloak-26.md @@ -0,0 +1,24 @@ +--- +title: "Keycloak 26 is available with a new login theme" +date: 2024-11-18 +tags: + - addons + - keycloak +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Lot of changes, just an environment variable to update +aliases: +- /changelog/2024-11-18-keycloak-26 +excludeSearch: true +--- + +The `26` branch of Keycloak is available on Clever Cloud. To update, just set `CC_KEYCLOAK_VERSION` of the add-on's Java application to `26.0.5`. Newly created add-ons come with this release by default and an enhanced `clever-cloud` login theme. + +- [Learn more about Keycloak on Clever Cloud](/doc/addons/keycloak/) +- [Learn more about Keycloak 26](https://www.keycloak.org/2024/10/keycloak-2600-released.html) +- [Latest Keycloak releases](https://github.com/keycloak/keycloak/releases) diff --git a/content/changelog/2024/11-21-eol-warnings-console.md b/content/changelog/2024/11-21-eol-warnings-console.md new file mode 100644 index 000000000..ef24b35ad --- /dev/null +++ b/content/changelog/2024/11-21-eol-warnings-console.md @@ -0,0 +1,25 @@ +--- +title: "Console: end of life versions warnings" +date: 2024-11-21 +tags: + - console + - eol +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Florian Sanders + link: https://github.com/florian-sanders-cc + image: https://github.com/florian-sanders-cc.png?size=40 +description: Better stay up to date! +aliases: +- /changelog/2024-11-21-eol-warnings-console +excludeSearch: true +--- + +[Earlier this year](../04-24-php-deprecate-warning/), we started to show warnings in logs when you deploy PHP applications with a `CC_PHP_VERSION` corresponding to a release considered as [end-of-life by PHP community](https://www.php.net/supported-versions.php). Today, we start showing such warnings in the environment variables panel of applications in the Clever Cloud Console for: +- `CC_PHP_VERSION` +- `CC_PYTHON_VERSION` +- `CC_RUBY_VERSION` + +Our goal is to better inform our customers about the lifecycle of their ecosystems, and to provide guidance on the proper values to use for the version management of their applications. We'll extend this to other runtimes in the coming weeks. diff --git a/content/changelog/2024/11-26-keycloak-26.0.06.md b/content/changelog/2024/11-26-keycloak-26.0.06.md new file mode 100644 index 000000000..5379d0463 --- /dev/null +++ b/content/changelog/2024/11-26-keycloak-26.0.06.md @@ -0,0 +1,24 @@ +--- +title: "Keycloak 26.0.6 is available (security update)" +date: 2024-11-26 +tags: + - addons + - keycloak +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Thanks to Clever Cloud, it's easy to upgrade +aliases: +- /changelog/2024-11-26-keycloak-26.0.06 +excludeSearch: true +--- + +The release `26.0.6` of Keycloak is available on Clever Cloud. [It fixes](https://github.com/keycloak/keycloak/releases/26.0.6) some bugs, but also security issues: [CVE-2024-10451](https://nvd.nist.gov/vuln/detail/CVE-2024-10451), [CVE-2024-10270](https://nvd.nist.gov/vuln/detail/CVE-2024-10270), [CVE-2024-10492](https://nvd.nist.gov/vuln/detail/CVE-2024-10492), [CVE-2024-9666](https://nvd.nist.gov/vuln/detail/CVE-2024-9666) and [CVE-2024-10039](https://nvd.nist.gov/vuln/detail/CVE-2024-10039). + +To update, just set `CC_KEYCLOAK_VERSION` of the add-on's Java application to `26.0.6` and rebuild it. + +- [Learn more about Keycloak on Clever Cloud](/doc/addons/keycloak) diff --git a/content/changelog/2024/11-27-clever-tools-3.10.md b/content/changelog/2024/11-27-clever-tools-3.10.md new file mode 100644 index 000000000..2e4584c9e --- /dev/null +++ b/content/changelog/2024/11-27-clever-tools-3.10.md @@ -0,0 +1,31 @@ +--- +title: 'Clever Tools 3.10 is available' +date: 2024-11-27 +tags: + - clever-tools + - cli +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Hubert Sablonniรจre + link: https://github.com/hsablonniere + image: https://github.com/hsablonniere.png?size=40 +description: Some tiny changes, before the huge ones +aliases: +- /changelog/2024-11-27-clever-tools-3.10 +excludeSearch: true +--- + +[Clever Tools 3.10](https://github.com/CleverCloud/clever-tools/releases/tag/3.10.0) is available. It includes some bug fixes on the `domain` command and supports [plugins activation](../11-27-elastic-plugins-support/) for Elasticsearch add-ons at creation (supported plugins list [is here](/doc/addons/elastic/#plugins)). For example: + +```bash +clever addon create es-addon --option plugins=analysis-icu,mapper-murmur3 +``` + +To upgrade Clever Tools, [use your favorite package manager](/doc/cli/install). For example with `npm`: + +``` +npm update -g clever-tools +clever version +``` diff --git a/content/changelog/2024/11-27-elastic-plugins-support.md b/content/changelog/2024/11-27-elastic-plugins-support.md new file mode 100644 index 000000000..8bfbcb7cf --- /dev/null +++ b/content/changelog/2024/11-27-elastic-plugins-support.md @@ -0,0 +1,22 @@ +--- +title: "Elasticsearch: plugins activation support" +date: 2024-11-22 +tags: + - addons + - elastic +authors: + - name: Aurรฉlien Hebert + link: https://github.com/aurrelhebert + image: https://github.com/aurrelhebert.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: More flexibility for Elasticsearch add-ons +aliases: +- /changelog/2024-11-27-elastic-plugins-support +excludeSearch: true +--- + +When you create an Elasticsearch add-on, you can now activate plugins through [API](/api) or the `--option` flag of [Clever Tools](/doc/cli/addons/). You must pass the option as a comma-separated list: `plugins=plugin1,plugin2`. + +- Learn more about [Elasticsearch plugins support on Clever Cloud](/doc/addons/elastic/#plugins) diff --git a/content/changelog/2024/11-28-kv-explorer-available.md b/content/changelog/2024/11-28-kv-explorer-available.md new file mode 100644 index 000000000..3ad36c27d --- /dev/null +++ b/content/changelog/2024/11-28-kv-explorer-available.md @@ -0,0 +1,31 @@ +--- +title: "Clever Cloud KV Explorer is available for Materia KV and Redisยฎ add-ons" +date: 2024-11-28 +tags: +- addons +- kv +authors: + - name: Pierre De Soyres + link: https://github.com/pdesoyres-cc + image: https://github.com/pdesoyres-cc.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Lot of changes, just an environment variable to update +aliases: +- /changelog/2024-11-28-kv-explorer-available +excludeSearch: true +--- + +Since we've launched [Materia KV](https://www.clever.cloud/materia/materia-kv/), our serverless key-value database compatible with third-party protocols such as Redisยฎ (and soon DynamoDB or GraphQL), customers were asking about a way to explore data directly from the Clever Cloud Console. This summer, we started to work on such a project, to provide a pleasant and easy-to-use interface, not only for Materia KV, but for any key-value add-on. After some months of internal alpha testing, it's available in Beta for all our Materia KV and Redisยฎ add-ons. + +To use it, just open the `KV Explorer` tab of any compatible add-on, it's part of the Clever Cloud experience. This first public iteration supports hash, list, set and string data types, only strings for Materia KV add-ons as other types are yet to come. + +![KV Explorer](/images/kv-explorer.webp "The KV Explorer tool in the Console") + +You can filter keys by type, with a filter (`*value_to_search*` for example), value text fields are multi-lines, and you can copy/paste values directly from the interface. As usual, we've worked on keyboard shortcuts and accessibility. At the bottom, the KV Explorer Terminal allows you to type any command you want as you would do in a CLI client. It works the same, you type a command, press Enter, and you get the result (yes, also when you type `FLUSHDB` or `FLUSHALL`, so be careful). + +Of course, we'll continue to improve this tool, over the coming months, thanks to your feedback and suggestions. So feel free to share them and ask your questions in our [GitHub Community](https://github.com/CleverCloud/Community/discussions/categories/kv-explorer). + +- [Learn more about Materia KV](/doc/addons/materia-kv/) +- [Learn more about Redisยฎ on Clever Cloud](/doc/addons/redis/) diff --git a/content/changelog/2024/12-04-otoroshi-available.md b/content/changelog/2024/12-04-otoroshi-available.md new file mode 100644 index 000000000..9534b12b5 --- /dev/null +++ b/content/changelog/2024/12-04-otoroshi-available.md @@ -0,0 +1,32 @@ +--- +title: "Otoroshi with LLM is available as an add-on on Clever Cloud" +date: 2024-12-04 +tags: + - addons + - Otoroshi +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Make the AI enterprise-grade +aliases: +- /changelog/2024-12-04-otoroshi-available +excludeSearch: true +--- + +After some weeks of testing, the Clever Cloud's Otoroshi with LLM add-on, is available in public beta. Thus, you can deploy the service, from [Console](https://console.clever-cloud.com/users/me/addons/new), [API](/api) or [Clever Tools](https://github.com/CleverCloud/clever-tools), and use it in minutes. + +We developed this product with its creator and core developer: [Mathieu Ancelin](https://github.com/mathieuancelin) from [Cloud APIM](https://www.cloud-apim.com/). Otoroshi is an open source reverse proxy that allows you to create your own routes, manage authentication, authorization, and rate limiting. It helps you to expose services with enterprise needs in mind, as you can manage organisations, teams, service groups, with event management, data export, multiple secret stores support, etc. And it can be managed from a web interface or [as an API](https://maif.github.io/otoroshi/manual/api.html). + +On Clever Cloud, it comes batteries included, pre-configured with features such as [Coraza Web Appplication Firewall](https://maif.github.io/otoroshi/manual/how-to-s/instantiate-waf-coraza.html) or [LLM extension](https://cloud-apim.github.io/otoroshi-llm-extension/docs/overview). The latter allows you to manage AI services from many providers (Anthropic, Groq, Hugging Face, Mistral, OpenAI, OVHcloud), Ollama instances or any OpenAI API compatible endpoints. + +All this with a unique interface, adding token management, rate limit, context, validation, moderation, etc. Create your own agents and flows with an only URL, distributing tokens to your team or customers, for cURL requests or integrations to many services and toolsโ€ฆ or your own applications hosted on Clever Cloud. + +It's based on a Java application and a Redisยฎ database. Once deployed you'll get a management URL with credentials. Want to learn more? Feel free to let us know what you think and ask your questions in [our GitHub Community](https://github.com/CleverCloud/Community/discussions/categories/otoroshi). + +- [Learn more about Otoroshi](https://maif.github.io/otoroshi/manual/how-to-s/index.html) +- [Learn more about Otoroshi with LLM on Clever Cloud](/doc/addons/otoroshi/) +- [Otoroshi LLM extension video tutorials](https://www.youtube.com/watch?v=M8PbydxPw4A&list=PLNHaf5rXAx3FWk7dn2fKGwQXxeLCPhZCh) diff --git a/content/changelog/2024/12-05-metabase-52.md b/content/changelog/2024/12-05-metabase-52.md new file mode 100644 index 000000000..a20b5365f --- /dev/null +++ b/content/changelog/2024/12-05-metabase-52.md @@ -0,0 +1,25 @@ +--- +title: "Metabase 52 is available" +date: 2024-12-05 +tags: + - addons + - metabase +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Faster, with more features +aliases: +- /changelog/2024-12-05-metabase-52 +excludeSearch: true +--- + +The `x.52` branch of Metabase is now available on Clever Cloud. To update, just set `CC_METABASE_VERSION` of the add-on's Java application to `0.52` for the community edition or `1.52` for the enterprise edition (EE). + +- [Learn more about Metabase on Clever Cloud](/doc/addons/metabase/) +- [Learn more about Metabase 52](https://www.metabase.com/releases/metabase-52) + +{{< youtube id="h4xKT3MkLj0" >}} diff --git a/content/changelog/2024/12-12-python-3.13-update.md b/content/changelog/2024/12-12-python-3.13-update.md new file mode 100644 index 000000000..50cd6c46d --- /dev/null +++ b/content/changelog/2024/12-12-python-3.13-update.md @@ -0,0 +1,25 @@ +--- +title: "Python 3.13 is available" +date: 2024-12-12 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Newer Python and more tools +aliases: +- /changelog/2024-12-12-python-3.13-update +excludeSearch: true +--- + +We deployed an updated Python image with no impact for our users. + + * uv 0.5.7 + * Linux kernel 6.11.6 + * Redirection.io agent + * Python 3.13 support + * Python 3.7 withdrawal + +You can now use `3.13` as `CC_PYTHON_VERSION` environment variable. This version will also be used as default value. As announced [in October](../10-01-python-image-changes), Python 3.7 is not supported anymore. However, you can use `uv` to [install or use Python 3.7](https://docs.astral.sh/uv/guides/install-python/#installing-a-specific-version). \ No newline at end of file diff --git a/content/changelog/2024/12-18-clever-tools-3.11.md b/content/changelog/2024/12-18-clever-tools-3.11.md new file mode 100644 index 000000000..c62f53b6c --- /dev/null +++ b/content/changelog/2024/12-18-clever-tools-3.11.md @@ -0,0 +1,36 @@ +--- +title: 'Clever Tools 3.11 is available with features flags and KV native support' +date: 2024-12-18 +tags: + - clever-tools + - cli +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Hubert Sablonniรจre + link: https://github.com/hsablonniere + image: https://github.com/hsablonniere.png?size=40 +description: Some tiny changes, before the huge ones +aliases: +- /changelog/2024-12-18-clever-tools-3.11 +excludeSearch: true +--- + +[Clever Tools 3.11](https://github.com/CleverCloud/clever-tools/releases/tag/3.11.0) is available. It includes some bug fixes and `clever profile open` commands. Most importantly, it introduces feature flags and KV native support. Thus, you can now enable some commands in alpha/beta status. First is `clever kv` which allows you to manage a Materia KV or Redisยฎ database and send it commands without any dependencies: + +```bash +clever addon create kv myKV +clever features enable kv +clever kv myKV SET myKey myValue +clever kv myKV GET myKey +``` + +You can learn more about `clever kv` in [Clever Tools documentation](/doc/cli/kv-stores/) or using `clever features info kv`. Next year we'll introduce more experimental commands through features flags. Next to come is `clever ng` to manage our [WireGuard](https://www.wireguard.com/) based Network Groups. + +To upgrade Clever Tools, [use your favorite package manager](/doc/cli/install). For example with `npm`: + +``` +npm update -g clever-tools +clever version +``` diff --git a/content/changelog/2024/12-24-terraform-0.5-Keycloak-Metabase.md b/content/changelog/2024/12-24-terraform-0.5-Keycloak-Metabase.md new file mode 100644 index 000000000..475c109c8 --- /dev/null +++ b/content/changelog/2024/12-24-terraform-0.5-Keycloak-Metabase.md @@ -0,0 +1,23 @@ +--- +title: Deploy Keycloak and Metabase on Clever Cloud with Terraform (or OpenTofu) +date: 2024-12-24 +tags: + - addons + - terraform +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Rรฉmi Collignon-Ducret + link: https://github.com/miton18 + image: https://github.com/miton18.png?size=40 +description: Your favorite services as code +aliases: +- /changelog/2024-12-24-terraform-0.5-keycloak-metabase.md +- /changelog/2024-12-24-terraform-0.5-keycloak-metabase +excludeSearch: true +--- + +You can now deploy [Keycloak](/doc/addons/keycloak) and [Metabase](/doc/addons/metabase) add-ons using our Terraform provider, compatible with OpenTofu. + +* Learn more about [our Terraform provider](https://registry.terraform.io/providers/CleverCloud/clevercloud/latest/docs) diff --git a/content/changelog/2025/01-06-sozu-1.0.6.md b/content/changelog/2025/01-06-sozu-1.0.6.md new file mode 100644 index 000000000..c619f958c --- /dev/null +++ b/content/changelog/2025/01-06-sozu-1.0.6.md @@ -0,0 +1,21 @@ +--- +title: Sลzu 1.0.6 is available and deployed, with new 4xx/5xx custom error pages +date: 2025-01-06 +tags: + - sozu +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Florentin Dubois + link: https://github.com/FlorentinDUBOIS + image: https://github.com/FlorentinDUBOIS.png?size=40 +description: Next to come, HTTP/2! +aliases: +- /changelog/2025-01-06-sozu-1.0.6 +excludeSearch: true +--- + +[Sลzu](https://www.sozu.io) 1.0.6 is now available and deployed on all our shared and dedicated load balancers. It comes with a fix for a TLS bug we encountered with [Metabase](/doc/addons/metabase) instances in some cases. We've also overhauled the custom pages for 4xx and 5xx errors. They now display a better designed and more detailed message. + +* Learn more about [Sลzu new releases](https://github.com/sozu-proxy/sozu/releases) {{< icon "github" >}} diff --git a/content/changelog/2025/01-14-keycloak-26.0.8.md b/content/changelog/2025/01-14-keycloak-26.0.8.md new file mode 100644 index 000000000..7aaf60a8e --- /dev/null +++ b/content/changelog/2025/01-14-keycloak-26.0.8.md @@ -0,0 +1,20 @@ +--- +title: "Keycloak 26.0.8 is available (security update)" +date: 2025-01-14 +tags: + - addons + - keycloak +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Thanks to Clever Cloud, it's easy to upgrade +excludeSearch: true +--- + +The release `26.0.8` of Keycloak is available on Clever Cloud. [It fixes](https://github.com/keycloak/keycloak/releases/26.0.8) some bugs, but also security issues: [CVE-2024-11734](https://nvd.nist.gov/vuln/detail/CVE-2024-11734) and [CVE-2024-11736](https://nvd.nist.gov/vuln/detail/CVE-2024-11736). To update, just set `CC_KEYCLOAK_VERSION` of the add-on's Java application to `26.0.8` and rebuild it. + +- [Learn more about Keycloak on Clever Cloud](/doc/addons/keycloak) diff --git a/content/changelog/2025/01-15-node-22-lts-image-update.md b/content/changelog/2025/01-15-node-22-lts-image-update.md new file mode 100644 index 000000000..4b3122e77 --- /dev/null +++ b/content/changelog/2025/01-15-node-22-lts-image-update.md @@ -0,0 +1,35 @@ +--- +title: "Node.js image update, with Mise package manager and Redirection.io easy setup" +date: 2025-01-15 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Ease your life on Clever Cloud +excludeSearch: true +--- + +We deployed an updated Node.js image with no impact for our users. It uses `22.13 LTS` release by default and Linux Kernel `6.12.9`. + +## Mise package manager + +It's the first image to include the [Mise package manager](https://mise.jdx.dev/), allowing you to install and manage many developer tools, environment variables, secrets, aliases, tasks, hooks through commands or a configuration file. It's compatible with [asdf ecosystem](https://mise.jdx.dev/dev-tools/comparison-to-asdf.html). + +* Learn more about [Mise](https://mise.jdx.dev/) + +## Redirection.io easy setup + +This image is also the first to include [Redirection.io](https://redirection.io/) easy setup. To configure the agent as a proxy, you just need to create an app listening on the port of your choice, get a project key from Redirection.io and set these environment variables: + +- `CC_ENABLE_REDIRECTIONIO=true` +- `CC_REDIRECTIONIO_PROJECT_KEY=""`: The Redirection.io project key +- `CC_REDIRECTIONIO_FORWARD_PORT=""`: The listening port of your application + +The Redirection.io agent will start as a service, listen to `8080` port and forward the traffic to your application. An optional `CC_REDIRECTIONIO_INSTANCE_NAME` is also available. It's the name of your application by default. + +These environment variables will progressively be available on all our compatible images. + +- [Clever Cloud Environment Variables Reference](/doc/reference/reference-environment-variables/) diff --git a/content/changelog/2025/01-21-otoroshi-16.22.md b/content/changelog/2025/01-21-otoroshi-16.22.md new file mode 100644 index 000000000..af03009f3 --- /dev/null +++ b/content/changelog/2025/01-21-otoroshi-16.22.md @@ -0,0 +1,20 @@ +--- +title: "Otoroshi v16.22 is available" +date: 2025-01-21 +tags: + - addons + - Otoroshi +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Make the AI enterprise-grade +excludeSearch: true +--- + +The release `16.22.0` of Otoroshi is available on Clever Cloud for new add-ons. [It fixes](https://github.com/MAIF/otoroshi/releases/tag/v16.22.0) some bugs and adds some features such as a plugin to add very simple basic auth, without complex user management, plugins to provide information (metrics, health, etc.) as user endpoint. LLM Extension also contains multiple fixes. To upgrade, edit `CC_OTOROSHI_VERSION` to `v16.22.0`, `CC_OTOROSHI_APIM_VERSION` to `1737449369` in the Java application and rebuild it. + +- [Learn more about Otoroshi with LLM on Clever Cloud](/doc/addons/otoroshi/) diff --git a/content/changelog/2025/01-22-elixir-1.18-image-update.md b/content/changelog/2025/01-22-elixir-1.18-image-update.md new file mode 100644 index 000000000..f2ad242d2 --- /dev/null +++ b/content/changelog/2025/01-22-elixir-1.18-image-update.md @@ -0,0 +1,15 @@ +--- +title: "Elixir 1.18 is available" +date: 2025-01-22 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Elixir 1.13 is now end-of-life +excludeSearch: true +--- + +We deployed an updated Elixir image with no impact for our users. It uses `1.18` release by default and Linux Kernel `6.12.9`. diff --git a/content/changelog/2025/01-31-keycloak-26.1.md b/content/changelog/2025/01-31-keycloak-26.1.md new file mode 100644 index 000000000..08f2ec09a --- /dev/null +++ b/content/changelog/2025/01-31-keycloak-26.1.md @@ -0,0 +1,22 @@ +--- +title: "Keycloak 26.1 is available" +date: 2025-01-31 +tags: + - addons + - keycloak +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Lots of new features and improvements +excludeSearch: true +--- + +The release `26.1.0` of Keycloak is available on Clever Cloud. [It fixes](https://github.com/keycloak/keycloak/releases/26.1.0) some bugs, but also brings lots of new features and improvements, such as OpenTelemetry tracing, virtual thread pool support (embedded Infinispan and JGroups) when running on OpenJDK 21, a different way to discover other nodes of the same cluster (`jdbc-ping`) and a better OpenID for Verifiable Credential Issuance (OID4VCI) experimental support. + +To update, just set `CC_KEYCLOAK_VERSION` of the add-on's Java application to `26.1.0` and rebuild it. + +- [Learn more about Keycloak on Clever Cloud](/doc/addons/keycloak) diff --git a/content/changelog/2025/02-04-otoroshi-available.md b/content/changelog/2025/02-04-otoroshi-available.md new file mode 100644 index 000000000..d2f7b953e --- /dev/null +++ b/content/changelog/2025/02-04-otoroshi-available.md @@ -0,0 +1,29 @@ +--- +title: "Otoroshi v16.23.2 is available, with Biscuit Studio and LLM updates" +date: 2025-02-04 +tags: + - addons + - Otoroshi +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Discover and use Biscuit, the easy way +excludeSearch: true +--- + +Otoroshi `v16.23.2` is now available on Clever Cloud for new add-ons. You can also update `CC_OTOROSHI_VERSION` to `v16.23.2`, `CC_OTOROSHI_APIM_VERSION` to `1738687356` in the Java application and rebuild it. + +This version includes the brand new Biscuit Studio, allowing you to use such tokens (we use in production for Materia KV and Pulsar) in your routes. It comes with key pair generator, Biscuit verifier, attenuation and roles management tools. The [client credentials plugin](https://cloud-apim.github.io/otoroshi-biscuit-studio/docs/plugins/clientcredentials) supports Biscuit to add a OAuth2 `client_credentials` flow to your routes. + +Web Application Firewall (WAF) plugin and interface are also enhanced in this release. Otoroshi can now use secrets management services declared with environment variables. This allows an easy integration of Clever KMS, our secrets management service available in private alpha for dedicated customers. + +LLM plugin includes a better models management, compatible with OVHcloud AI endpoints. Functions calling is enabled in Anthropic and Cohere, DeepSeek is available as a provider, [Citations from Anthropic](https://docs.anthropic.com/en/docs/build-with-claude/citations) are handled, such as reasoning models and tokens. + +- [Learn more about Biscuit](https://doc.biscuitsec.org/home) +- [Learn more about Otoroshi Biscuit Studio](https://cloud-apim.github.io/otoroshi-biscuit-studio/docs/overview) +- [Learn more about Otoroshi with LLM on Clever Cloud](/doc/addons/otoroshi/) +- [Otoroshi LLM on Clever Cloud video streams](https://www.youtube.com/@Clevercloud-platform/search?query=Otoroshi) diff --git a/content/changelog/2025/02-05-mysql-update.md b/content/changelog/2025/02-05-mysql-update.md new file mode 100644 index 000000000..bad195d46 --- /dev/null +++ b/content/changelog/2025/02-05-mysql-update.md @@ -0,0 +1,18 @@ +--- +title: MySQL update, with a new option +date: 2025-02-05 +tags: + - addons + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Use skip-log-bin from Clever Tools +excludeSearch: true +--- + +We updated MySQL images for releases 8.4 (8.4.2-2) and 8.0 (8.0.39-30). A new option is available at database creation from Clever Tools: [skip-log-bin](https://dev.mysql.com/doc/refman/8.4/en/replication-options-binary-log.html#option_mysqld_log-bin). To use it, add `--option skip-log-bin` flag with the `clever create addon mysql-addon` command. + +* [Learn more about MySQL 8.4](https://www.percona.com/blog/mysql-8-4-first-peek/) +* [Learn more about MySQL on Clever Cloud](/doc/addons/mysql/) diff --git a/content/changelog/2025/02-10-github-action-2.0.md b/content/changelog/2025/02-10-github-action-2.0.md new file mode 100644 index 000000000..ee557b4f8 --- /dev/null +++ b/content/changelog/2025/02-10-github-action-2.0.md @@ -0,0 +1,20 @@ +--- +title: "Version 2.0 of our GitHub Action for review applications is available" +date: 2025-02-10 +tags: + - github + - action +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Julia March + link: https://github.com/juliamrch + image: https://github.com/juliamrch.png?size=40 +description: Better, more secure practices for GitHub Action +excludeSearch: true +--- + +Update for [GitHub Action](https://github.com/marketplace/actions/clever-cloud-review-app-on-prs) to deploy applications from GitHub to Clever Cloud. Version 2.0 brings an improved interface for the comment section on deployments, as well as updated security practices in names and docs. + +- [Learn more about how to deploy from GitHub to Clever Cloud](/doc/ci-cd/github/) \ No newline at end of file diff --git a/content/changelog/2025/02-10-metabase-53.md b/content/changelog/2025/02-10-metabase-53.md new file mode 100644 index 000000000..fbe1ea1e7 --- /dev/null +++ b/content/changelog/2025/02-10-metabase-53.md @@ -0,0 +1,23 @@ +--- +title: "Metabase 53 is available" +date: 2025-02-10 +tags: + - addons + - metabase +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Faster, with more features +excludeSearch: true +--- + +The `x.53` branch of Metabase is now available on Clever Cloud. To update, just set `CC_METABASE_VERSION` of the add-on's Java application to `0.53` for the community edition or `1.53` for the enterprise edition (EE). + +- [Learn more about Metabase 53](https://www.metabase.com/releases/metabase-53) +- [Learn more about Metabase on Clever Cloud](/doc/addons/metabase/) + +{{< youtube id="SMKsq6M__YM" >}} diff --git a/content/changelog/2025/02-11-otoroshi-16.23.md b/content/changelog/2025/02-11-otoroshi-16.23.md new file mode 100644 index 000000000..6b5e3c1a8 --- /dev/null +++ b/content/changelog/2025/02-11-otoroshi-16.23.md @@ -0,0 +1,22 @@ +--- +title: "Otoroshi with LLM supports DeepSeek and reasoning" +date: 2025-02-11 +tags: + - addons + - Otoroshi +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: And a better support of OVHcloud AI endpoints +aliases: +- /changelog/2024-12-04-otoroshi-available +excludeSearch: true +--- + +The release `16.23.2` of Otoroshi is available for new add-ons. [It fixes](https://github.com/MAIF/otoroshi/releases/tag/v16.23.2) some bugs and adds some features but the better comes from LLM Extension which comes with a better OVHcloud AI endpoints integration, DeepSeek and reasoning models support. To upgrade, edit `CC_OTOROSHI_VERSION` to `v16.23.2`, `CC_OTOROSHI_APIM_VERSION` to `1739212580` in the Java application and rebuild it. + +- [Learn more about Otoroshi with LLM on Clever Cloud](/doc/addons/otoroshi/) diff --git a/content/changelog/2025/02-12-matomo-5.2.2.md b/content/changelog/2025/02-12-matomo-5.2.2.md new file mode 100644 index 000000000..444e21671 --- /dev/null +++ b/content/changelog/2025/02-12-matomo-5.2.2.md @@ -0,0 +1,22 @@ +--- +title: Matomo 5.2.2 is available +date: 2025-02-12 +tags: + - addons + - matomo +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: With updated PHP version and soon new features +excludeSearch: true +--- + +Our [Matomo](https://matomo.org/) add-on has been updated to version `5.2.2` which is now used by default. You can deploy this latest release from our [Console](https://console.clever-cloud.com) or [Clever Tools](https://github.com/CleverCloud/clever-tools). Existing customers add-ons are already up-to-date. + +- [Learn more about Matomo 5.2](https://matomo.org/changelog/matomo-5-2-0/) +- [Learn more about Matomo 5.2.2](https://matomo.org/changelog/matomo-5-2-2/) +- [Learn more about Matomo on Clever Cloud](/doc/addons/matomo/) diff --git a/content/changelog/2025/02-12-php-8.4-update.md b/content/changelog/2025/02-12-php-8.4-update.md new file mode 100644 index 000000000..8d37e147a --- /dev/null +++ b/content/changelog/2025/02-12-php-8.4-update.md @@ -0,0 +1,27 @@ +--- +title: "PHP 8.4 is available, Symfony CLI included" +date: 2025-02-12 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: FrankenPHP is next to come +excludeSearch: true +--- + +We deployed an updated PHP image with no impact for our users. + + * PHP 8.4.3 + * Composer 2.8.5 + * Symfony CLI 5.10.7 + * Linux kernel 6.12.9 + +You can now use `8.4` as `CC_PHP_VERSION` environment variable, `8.3` is still the default for now. + +Only some extensions support PHP 8.4 for now: apcu, amqp, blackfire, event, elastic-apm, gnupg, grpc, imap, mailparse, maxminddb, memcache, memcached, mongodb, newrelic, oauth, pdflib, protobuf pspell, rdkafka, redis, ssh2, solr, tideways, uploadprogress, zip. We'll add support for more extensions as they are released. + +* [PHP migration guide from 8.3 to 8.4](https://www.php.net/migration84) +* [Learn more about PHP on Clever Cloud](/doc/applications/php/) diff --git a/content/changelog/2025/02-17-rust-sdk-0.12.md b/content/changelog/2025/02-17-rust-sdk-0.12.md new file mode 100644 index 000000000..c71e29b4b --- /dev/null +++ b/content/changelog/2025/02-17-rust-sdk-0.12.md @@ -0,0 +1,17 @@ +--- +title: Rust SDK v0.12 is available +date: 2025-02-17 +tags: + - sozu +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Florentin Dubois + link: https://github.com/FlorentinDUBOIS + image: https://github.com/FlorentinDUBOIS.png?size=40 +description: Maintenance release +excludeSearch: true +--- + +[Rust SDK v0.12](https://github.com/CleverCloud/clevercloud-sdk-rust/releases/tag/v0.12.0) is available, with updated PostgreSQL versions, fixes for Clever Functions, updated dependencies and Rust version. diff --git a/content/changelog/2025/02-18-kunernetes-operator-0.6.0.md b/content/changelog/2025/02-18-kunernetes-operator-0.6.0.md new file mode 100644 index 000000000..4de8b2f7b --- /dev/null +++ b/content/changelog/2025/02-18-kunernetes-operator-0.6.0.md @@ -0,0 +1,21 @@ +--- +title: 'Clever Kubernetes Operator v0.6.0 with Materia KV and API Tokens support' +date: 2025-02-18 +tags: + - kubernetes + - operator +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Florentin Dubois + link: https://github.com/FlorentinDUBOIS + image: https://github.com/FlorentinDUBOIS.png?size=40 +description: Preparing new features +excludeSearch: true +--- + +[Clever Kubernetes Operator v0.6.0](https://github.com/CleverCloud/clever-kubernetes-operator/releases/tag/v0.6.0) is available. It now uses [clevercloud-sdk-rust v0.12.0](https://github.com/CleverCloud/clevercloud-sdk-rust/releases/tag/v0.12.0) and [oauth10a v2.0.0](https://github.com/CleverCloud/oauth10a-rust/releases/tag/v2.0.0) to simplify authentication through API Tokens or Basic Auth. This release also adds Materia KV add-ons support as custom resource. + +- [Learn more about Clever Kubernetes Operator](/guides/kubernetes-operator) +- [Learn more about Materia KV](/doc/addons/materia-kv) diff --git a/content/changelog/2025/02-19-terraform-0.6-redis.md b/content/changelog/2025/02-19-terraform-0.6-redis.md new file mode 100644 index 000000000..c625f53c0 --- /dev/null +++ b/content/changelog/2025/02-19-terraform-0.6-redis.md @@ -0,0 +1,20 @@ +--- +title: Deploy Redisยฎ on Clever Cloud with Terraform (or OpenTofu), update your plan +description: No more destroy/recreate +date: 2025-02-19 +tags: + - addons + - terraform +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Rรฉmi Collignon-Ducret + link: https://github.com/miton18 + image: https://github.com/miton18.png?size=40 +excludeSearch: true +--- + +You can now deploy [Redisยฎ](/doc/addons/redis) add-ons using our Terraform provider, compatible with OpenTofu. The [0.6.0 release](https://github.com/CleverCloud/terraform-provider-clevercloud/releases/tag/v0.6.0) of the Clever Cloud Terraform provider also introduce the resource update. You can now apply a new plan without destroying and recreating the resource starting with PHP applications. + +* Learn more about [our Terraform provider](https://registry.terraform.io/providers/CleverCloud/clevercloud/latest/docs) diff --git a/content/changelog/2025/02-20-logs-interface-old-decomission.md b/content/changelog/2025/02-20-logs-interface-old-decomission.md new file mode 100644 index 000000000..094bbb2f6 --- /dev/null +++ b/content/changelog/2025/02-20-logs-interface-old-decomission.md @@ -0,0 +1,22 @@ +--- +title: "Console: old logs stack decommission" +date: 2025-02-20 +tags: + - console + - logs +authors: + - name: Pierre De Soyres + link: https://github.com/pdesoyres-cc + image: https://github.com/pdesoyres-cc.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: And soon add-ons, access logsโ€ฆ and indexing +excludeSearch: true +--- + +[Last year](/changelog/2024/07-17-new-logs-default/) we introduced a new logs interface in [the Console](https://console.clever-cloud.com) and enhanced it since then. After some months [using it by default](/changelog/2024/07-17-new-logs-default/), we start decommissioning our old logs stack. Thus, you can't switch to the previous interface anymore for applications. + +Next, we'll use the new stack for add-ons, access logs and continue improving the interface. A big step will be to introduce logs indexing, allowing you to better search through your logs and load the latest. + +Feel free to ask for features and improvements in our [GitHub Community space](https://github.com/CleverCloud/Community/discussions/categories/new-logs-interface). \ No newline at end of file diff --git a/content/changelog/2025/02-21-keycloak-GA.md b/content/changelog/2025/02-21-keycloak-GA.md new file mode 100644 index 000000000..8e0d056b6 --- /dev/null +++ b/content/changelog/2025/02-21-keycloak-GA.md @@ -0,0 +1,20 @@ +--- +title: "Keycloak in General Availability" +date: 2025-02-21 +tags: + - addons + - keycloak +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: With the new Operator API +excludeSearch: true +--- + +Keycloak is now in General Availability (GA). Deployed version is `26.1.2` and you now have access [to the operator API](/api/v4/#operators). To update, just set `CC_KEYCLOAK_VERSION` of the add-on's Java application to `26.1.2` and rebuild it. + +- [Learn more about Keycloak on Clever Cloud](/doc/addons/keycloak/) diff --git a/content/changelog/2025/02-24-metabase-GA.md b/content/changelog/2025/02-24-metabase-GA.md new file mode 100644 index 000000000..dda6de444 --- /dev/null +++ b/content/changelog/2025/02-24-metabase-GA.md @@ -0,0 +1,20 @@ +--- +title: "Metabase in General Availability" +date: 2025-02-24 +tags: + - addons + - metabase +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: With the new Operator API +excludeSearch: true +--- + +Metabase is now in General Availability (GA). Deployed version is `x.53.4` and you now have access [to the operator API](/api/v4/#operators). To update, just set `CC_METABASE_VERSION` of the add-on's Java application to `0.53` for the community edition or `1.53` for the enterprise edition (EE) and rebuild it. + +- [Learn more about Metabase on Clever Cloud](/doc/addons/metabase/) diff --git a/content/changelog/2025/02-26-js-client-9.2.0.md b/content/changelog/2025/02-26-js-client-9.2.0.md new file mode 100644 index 000000000..9338473ac --- /dev/null +++ b/content/changelog/2025/02-26-js-client-9.2.0.md @@ -0,0 +1,18 @@ +--- +title: 'JS Client 9.2 is available' +date: 2025-02-26 +tags: + - client + - javascript +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Hubert Sablonniรจre + link: https://github.com/hsablonniere + image: https://github.com/hsablonniere.png?size=40 +description: Preparing new features +excludeSearch: true +--- + +[Clever Cloud JS client 9.2.0](https://github.com/CleverCloud/clever-client.js/blob/master/CHANGELOG.md#920-2025-02-26) is available with some enhancements and multiple new features for `billing`, `grafana`, `materia`, etc. diff --git a/content/changelog/2025/02-28-otoroshi-GA-16.24.md b/content/changelog/2025/02-28-otoroshi-GA-16.24.md new file mode 100644 index 000000000..4f430b580 --- /dev/null +++ b/content/changelog/2025/02-28-otoroshi-GA-16.24.md @@ -0,0 +1,20 @@ +--- +title: "Otoroshi in General Availability" +date: 2025-02-28 +tags: + - addons + - Otoroshi +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: With the new Operator API +excludeSearch: true +--- + +Otoroshi is now in General Availability (GA), with access [to the operator API](/api/v4/#operators). Deployed version is `v16.24.0_1740754279`. The LLM extension includes new models filtering tools and pre-defined context per endpoint. To update, just set `CC_OTOROSHI_VERSION` of the add-on's Java application to `v16.24.0_1740754279` and rebuild it. You can also delete `CC_OTOROSHI_APIM_VERSION`, `CC_OTOROSHI_SECRET` variables from the Java application, they are not used anymore. + +- [Learn more about Otoroshi with LLM on Clever Cloud](/doc/addons/otoroshi/) diff --git a/content/changelog/2025/03-03-images-update.md b/content/changelog/2025/03-03-images-update.md new file mode 100644 index 000000000..ae5203039 --- /dev/null +++ b/content/changelog/2025/03-03-images-update.md @@ -0,0 +1,37 @@ +--- +title: "Multiple images update" +date: 2025-03-03 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Releases are getting bigger +excludeSearch: true +--- + +We deployed and updated all our images, except Docker, Go, Java, Node and Ruby, with no impact for our users. + +* **Common:** + * Linux kernel 6.13.5 +* **.NET:** + * Update to 8.0.108 +* **Elixir:** + * Update to 1.18.2 + * Erlang 27.2.2 +* **Haskell:** + * Stack 2.15.7 +* **PHP:** + * Update to 8.4.4 + * Composer 2.8.6 + * `CC_APACHE_HEADERS_SIZE` [environment variable](/doc/reference/reference-environment-variables/) +* **Python:** + * Update to 3.13.2 + * pip 24.3.1 + * uv 0.6.3 +* **Rust:** + * Update to 1.85.0 + +All these images include [Mise and Redirection.io easy setup](/changelog/2025/01-15-node-22-lts-image-update/). diff --git a/content/changelog/2025/03-03-keycloak-26.1.3.md b/content/changelog/2025/03-03-keycloak-26.1.3.md new file mode 100644 index 000000000..02da1a1b9 --- /dev/null +++ b/content/changelog/2025/03-03-keycloak-26.1.3.md @@ -0,0 +1,20 @@ +--- +title: "Keycloak 26.1.3 is available" +date: 2025-03-03 +tags: + - addons + - keycloak +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: With better realm import procedures +excludeSearch: true +--- + +The release `26.1.3` of Keycloak is available on Clever Cloud. [It fixes](https://github.com/keycloak/keycloak/releases/26.1.3) some bugs, and we enhanced [realm import procedures](/doc/addons/keycloak/#importing-realms-data). To update, just set `CC_KEYCLOAK_VERSION` of the add-on's Java application to `26.1.3` and rebuild it. + +- [Learn more about Keycloak on Clever Cloud](/doc/addons/keycloak) diff --git a/content/changelog/2025/03-06-clever-tools-winget.md b/content/changelog/2025/03-06-clever-tools-winget.md new file mode 100644 index 000000000..530b64dc7 --- /dev/null +++ b/content/changelog/2025/03-06-clever-tools-winget.md @@ -0,0 +1,34 @@ +--- +title: 'Install Clever Tools on Windows through WinGet' +date: 2025-03-06 +tags: + - clever-tools + - cli +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Hubert Sablonniรจre + link: https://github.com/hsablonniere + image: https://github.com/hsablonniere.png?size=40 +description: The Clever way +excludeSearch: true +--- + +You can [install our CLI](/doc/cli/install), Clever Tools, on any system through `npm`, binaries or many package managers. On Windows, we relied on Chocolatey with a dedicated Nexus instance for years, but we now also support the official Windows package manager, [WinGet](https://github.com/microsoft/winget-cli). + +To install the latest version of Clever Tools, you can now use the following command: + +```bash +winget install CleverTools +``` + +And upgrade it with: + +```bash +winget upgrade CleverTools +``` + +We'll add WinGet support to our automatic release process and start deprecating Chocolatey, as it began more difficult to install it through our Nexus instance over the recent releases. You can also continue to download a `.zip` archive [and extract the binary](/doc/cli/install/#binary-zip). + +- [Learn more about Clever Tools](https://github.com/CleverCloud/clever-tools) {{< icon "github" >}} diff --git a/content/changelog/2025/03-07-clever-tools-3.12.md b/content/changelog/2025/03-07-clever-tools-3.12.md new file mode 100644 index 000000000..0f7fca1e9 --- /dev/null +++ b/content/changelog/2025/03-07-clever-tools-3.12.md @@ -0,0 +1,105 @@ +--- +title: 'Clever Tools 3.12, with API Tokens and Network Groups' +date: 2025-03-07 +tags: + - clever-tools + - cli +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Hubert Sablonniรจre + link: https://github.com/hsablonniere + image: https://github.com/hsablonniere.png?size=40 +description: Two new big features to play with +excludeSearch: true +--- + +[Clever Tools 3.12](https://github.com/CleverCloud/clever-tools/releases/tag/3.12.0) is available. It includes some bug fixes and two new experimental features, available through feature flags. + +## API Tokens +First is `clever tokens`, which allows you to create and manage API tokens, and use them to request the Clever Cloud API: + +```bash +clever features enable tokens + +clever tokens create "CI job Foobar" +clever tokens create "Quick local test" --expiration 1h +``` +You can also list or revoke tokens: + +```bash +clever tokens -F json +clever tokens revoke api_tokens_xxx +``` + +Once created, API tokens must be used through the bridge URL: + +```bash +curl https://api-bridge.clever-cloud.com/v2/self -H "Authorization: Bearer [API_TOKEN]" +``` +- [Clever Cloud API Documentation](/api) +- [Give your feedback about API Tokens](https://github.com/CleverCloud/Community/discussions/categories/api-tokens) + +## Network Groups + +The second feature is `clever ng`, to manage the long awaited Network Groups. Use them to link resources over a [WireGuard-based](https://www.wireguard.com/) private and secure network. It can be applications, add-ons or external systems (a local machine, a third-party server, etc.). + +```bash +clever features enable ng + +clever ng create myNg +clever ng link app_id myNg +clever ng unlink app_id myNg + +clever ng create anotherNg --link app_id1,app_id2 +clever ng get anotherNg +clever ng get app_id1 + +clever ng +clever ng search Ng + +clever ng delete myNg +clever ng delete anotherNg +``` + +Once linked to a Network Groups, resources can communicate with each other directly, on any port. Each resources is identified as a "Member" with a dedicated domain name. Each instance of a resource is a "Peer" with a unique IP address inside the Network Group. + +- [Network Group demo application](https://github.com/CleverCloud/network-groups-example) + +We've natively integrated Network Groups to our Keycloak and Otoroshi operators. Thus, you can (de)activate a high-availability Keycloak service with two instance synced over a Network Group. It just needs one API call (and soon one Clever Tools command): + +```bash +curl -XPOST -H "Authorization: Bearer [API_TOKEN]" \ + https://api-bridge.clever-cloud.com/v4/addon-providers/addon-keycloak/addons/keycloak_id/networkgroup + +curl -XDELETE -H "Authorization: Bearer [API_TOKEN]" \ + https://api-bridge.clever-cloud.com/v4/addon-providers/addon-keycloak/addons/keycloak_id/networkgroup +``` + +{{< callout type="info" >}} +If you activate multi-instances Keycloak feature, you'll be billed for two Java instances. Network Groups are free of charge. +{{< /callout >}} + +With Otoroshi, activating a Network Group links the underlying Java application to it. Thus, you can easily add other applications to the same Network Group and use Otoroshi as a gateway to protect the access to your applications through API keys, Biscuits, WAF, etc. + +```bash +curl -XPOST -H "Authorization: Bearer [API_TOKEN]" \ + https://api-bridge.clever-cloud.com/v4/addon-providers/addon-otoroshi/addons/otoroshi_id/networkgroup + +curl -XDELETE -H "Authorization: Bearer [API_TOKEN]" \ + https://api-bridge.clever-cloud.com/v4/addon-providers/addon-otoroshi/addons/otoroshi_id/networkgroup +``` + +As this beta feature evolves, we'll add demos, documentations and videos to help you to fully take advantage of Network Groups. + +- [Learn more about Network Groups](/doc/develop/network-groups/) +- [Give your feedback about Network Groups](https://github.com/CleverCloud/Community/discussions/categories/network-groups) + +## How to upgrade +To upgrade Clever Tools, [use your favorite package manager](/doc/cli/install). For example with `npm`: + +``` +npm update -g clever-tools +clever version +``` diff --git a/content/changelog/2025/03-07-rust-sdk-0.13.md b/content/changelog/2025/03-07-rust-sdk-0.13.md new file mode 100644 index 000000000..2e34b64ff --- /dev/null +++ b/content/changelog/2025/03-07-rust-sdk-0.13.md @@ -0,0 +1,18 @@ +--- +title: Rust SDK v0.13 is available +date: 2025-03-07 +tags: + - client + - rust +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Florentin Dubois + link: https://github.com/FlorentinDUBOIS + image: https://github.com/FlorentinDUBOIS.png?size=40 +description: New Auth solutions for your Rust applications +excludeSearch: true +--- + +[Rust SDK v0.13](https://github.com/CleverCloud/clevercloud-sdk-rust/releases/tag/v0.13.1) is available, uses Rust 1.85 and can now use [API tokens](/api/howto/) or get credentials from [Clever Tools](https://github.com/CleverCloud/clever-tools/) configuration file if present in the system. diff --git a/content/changelog/2025/03-12-images-update.md b/content/changelog/2025/03-12-images-update.md new file mode 100644 index 000000000..de3169d5f --- /dev/null +++ b/content/changelog/2025/03-12-images-update.md @@ -0,0 +1,30 @@ +--- +title: "Images update: Go 1.24 and Node.js 22.14" +description: Update cycle getting faster +date: 2025-03-12 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +excludeSearch: true +--- + +We deployed and updated all our images, except Java and Ruby, with no impact for our users. + +* **Common:** + * Linux kernel 6.13.6 +* **Docker:** + * Update to 28.0.1 +* **Elixir:** + * Update to 1.18.3 + * Erlang 27.3 +* **Go:** + * Update to 1.24.1 +* **Node.js:** + * Update to 22.14.0 +* **Python:** + * pip 25.0.1 + * uv 0.6.4 diff --git a/content/changelog/2025/03-12-materia-kv-json.md b/content/changelog/2025/03-12-materia-kv-json.md new file mode 100644 index 000000000..1c88e1dff --- /dev/null +++ b/content/changelog/2025/03-12-materia-kv-json.md @@ -0,0 +1,23 @@ +--- +title: Materia KV with JSON commands (GET/SET/DEL) +description: Added JSON functions to Materia KV +date: 2025-03-12 +tags: + - Materia KV + - JSON +authors: + - name: Enora Broudic + link: https://github.com/RaspY737 + image: https://github.com/RaspY737.png?size=40 + - name: Pierre Zemb + link: https://github.com/pierrez + image: https://github.com/pierrez.png?size=40 +excludeSearch: true +--- + +Materia KV now supports some `JSON` commands : +- `JSON.SET`: sets JSON value at path in key +- `JSON.GET`: gets JSON value at path from key +- `JSON.DEL`: deletes JSON value at path from key + +These commands are available for new and already deployed add-ons, with no additional configuration. For detailed examples and usage, see [Materia KV documentation](/doc/addons/materia-kv/#json-commands). If you have any questions or feedback, let's discuss it on our [GitHub Community](https://github.com/CleverCloud/Community/discussions/categories/materia). diff --git a/content/changelog/2025/03-18-images-update-ruby-unified.md b/content/changelog/2025/03-18-images-update-ruby-unified.md new file mode 100644 index 000000000..a562da904 --- /dev/null +++ b/content/changelog/2025/03-18-images-update-ruby-unified.md @@ -0,0 +1,30 @@ +--- +title: "Images update: PHP 8.4.5, Ruby in unified image stack" +date: 2025-03-18 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: New week, new release! +excludeSearch: true +--- + +We deployed and updated all our images, except Java, with no impact for our users. It now includes Ruby as part as our new unified image stack. + +* **Common:** + * Linux kernel 6.13.7 +* **PHP:** + * Update to 8.4.5 + * Apache 2.4.63 +* **Python:** + * uv 0.6.6 + * nginx 1.26.3 +* **Ruby:** + * Update to 3.4.2 + * Bundler 2.6.5 + * nginx 1.26.3 + +Note that Ruby 3.4 is the default only in Ruby applications. Ruby 3.2 is still default on other runtimes, use [rbenv](https://github.com/rbenv/rbenv) and `RBENV_VERSION` to switch to Ruby 3.4 for now. diff --git a/content/changelog/2025/03-18-mysql-update.md b/content/changelog/2025/03-18-mysql-update.md new file mode 100644 index 000000000..4de4fe4f8 --- /dev/null +++ b/content/changelog/2025/03-18-mysql-update.md @@ -0,0 +1,19 @@ +--- +title: MySQL 8.4.3-3 and 8.0.41-32 are available +date: 2025-03-18 +tags: + - addons + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Get new features and improvements +excludeSearch: true +--- + +We updated MySQL images 8.0 and 8.4 from Percona Server. They're now available for add-ons creation and migration. + +* [Learn more about MySQL on Clever Cloud](/doc/addons/mysql/) +* [Learn more about MySQL 8.0.41-32](https://docs.percona.com/percona-server/8.0/release-notes/8.0.41-32.html) +* [Learn more about MySQL 8.4.3-3](https://docs.percona.com/percona-server/8.4/release-notes/8.4.3-3.html) diff --git a/content/changelog/2025/03-18-postgresql-16-17.md b/content/changelog/2025/03-18-postgresql-16-17.md new file mode 100644 index 000000000..c76eb2bae --- /dev/null +++ b/content/changelog/2025/03-18-postgresql-16-17.md @@ -0,0 +1,20 @@ +--- +title: PostgreSQL 16 and 17 are available +date: 2025-03-18 +tags: + - addons + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: It's time to prepare for PostgreSQL 18! +excludeSearch: true +--- + +PostgreSQL 16.8 and 17.4 are now available for add-on creation and migration. Some extensions were removed of these releases: `plcoffee`, `plls`, `plv8` starting PostgreSQL 16 and `pgadmin` which is not available starting PostgreSQL 17. They won't be available after a migration. If you used any of them, the process could fail and your database will be kept in its current version. + +We also updated PostgreSQL 15 to release 15.12, PostgreSQL 14 to release 14.17, PostgreSQL 13 to release 13.20. Migrate your database to the desired major version to get the latest release. + +* [Learn more about PostgreSQL on Clever Cloud](/doc/addons/postgresql/) +* [PostgreSQL release notes](https://www.postgresql.org/docs/release/) diff --git a/content/changelog/2025/03-19-paris-hds.md b/content/changelog/2025/03-19-paris-hds.md new file mode 100644 index 000000000..5de69976b --- /dev/null +++ b/content/changelog/2025/03-19-paris-hds.md @@ -0,0 +1,18 @@ +--- +title: Paris HDS zone is available +date: 2025-03-19 +tags: + - hds + - zone +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Host your health data in Paris with HDS certification +excludeSearch: true +--- + +Clever Cloud is HDS-certified for [all six activities](https://www.clever.cloud/fr/hebergement-donnees-de-sante/) and you can now deploy on `parhds` zone from the [API](/api/), [Clever Tools](/doc/cli/) or the [Console](https://console.clever-cloud.com). To benefit from certified hosting for health data, you need to deploy in an HDS zone and to sign up to a specific contract. This begins with [an initial discussion with our team](https://www.clever.cloud/fr/hebergement-donnees-de-sante/contact-hds/). + +* [Learn more about Clever Cloud HDS certification](https://www.clever.cloud/fr/hebergement-donnees-de-sante/) +* [Learn more about HDS hosting on Clever Cloud](https://www.clever.cloud/fr/blog/entreprise/2025/03/19/cloud-hds-avec-clever-cloud/) diff --git a/content/changelog/2025/03-19-terraform-0.7-resources-update.md b/content/changelog/2025/03-19-terraform-0.7-resources-update.md new file mode 100644 index 000000000..4b30de072 --- /dev/null +++ b/content/changelog/2025/03-19-terraform-0.7-resources-update.md @@ -0,0 +1,20 @@ +--- +title: Terraform provider 0.7.0 is available with more resources you can update +description: Yet more to come +date: 2025-03-19 +tags: + - addons + - terraform +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Rรฉmi Collignon-Ducret + link: https://github.com/miton18 + image: https://github.com/miton18.png?size=40 +excludeSearch: true +--- + +With [0.6.0 release](/changelog/2025/02-19-terraform-0.6-redis/) of the Clever Cloud Terraform provider (compatible with OpenTofu), we introduced the support of resource update. Starting with [0.7.0](https://github.com/CleverCloud/terraform-provider-clevercloud/releases/tag/v0.7.0) you can now apply a new plan without destroying and recreating the resource on Docker, Java, Python, Scala and Static applications. + +* Learn more about [our Terraform provider](https://registry.terraform.io/providers/CleverCloud/clevercloud/latest/docs) diff --git a/content/changelog/2025/03-21-matomo-5.3.1.md b/content/changelog/2025/03-21-matomo-5.3.1.md new file mode 100644 index 000000000..aac8992ef --- /dev/null +++ b/content/changelog/2025/03-21-matomo-5.3.1.md @@ -0,0 +1,22 @@ +--- +title: Matomo 5.3.1 is available +date: 2025-03-21 +tags: + - addons + - matomo +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Upgraded with no effort needed +excludeSearch: true +--- + +Our [Matomo](https://matomo.org/) add-on has been updated to version `5.3.1` which is now used by default. You can deploy this latest release from our [Console](https://console.clever-cloud.com) or [Clever Tools](/doc/cli/). Existing customers add-ons are already up-to-date. + +- [Learn more about Matomo 5.3](https://matomo.org/changelog/matomo-5-3-0/) +- [Learn more about Matomo 5.3.1](https://matomo.org/changelog/matomo-5-3-1/) +- [Learn more about Matomo on Clever Cloud](/doc/addons/matomo/) diff --git a/content/changelog/2025/03-21-php-version-management-update.md b/content/changelog/2025/03-21-php-version-management-update.md new file mode 100644 index 000000000..df231b069 --- /dev/null +++ b/content/changelog/2025/03-21-php-version-management-update.md @@ -0,0 +1,24 @@ +--- +title: "Some changes in PHP version management" +date: 2025-03-21 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: And now, let's prepare for PHP 8.5 +excludeSearch: true +--- + +Starting today, PHP applications on Clever Cloud are created with `CC_PHP_VERSION=8` environment variable and using default minor PHP version for branch `8`. Nothing changes on already deployed applications. + +Starting april 30th, the default minor PHP version for branch `8` will move from `8.3` to `8.4`, released last November. If you need to keep using PHP 8.3, just set `CC_PHP_VERSION=8.3` in your environment variables from the Console or with Clever Tools: + +``` +clever env set CC_PHP_VERSION 8.3 --app +``` + +* [Learn more about PHP on Clever Cloud](/doc/applications/php/) +* [Learn more about environment variables on Clever Cloud](/doc/reference/reference-environment-variables/) diff --git a/content/changelog/2025/03-24-otoroshi-update-biscuit-studio-0.10.md b/content/changelog/2025/03-24-otoroshi-update-biscuit-studio-0.10.md new file mode 100644 index 000000000..094de3342 --- /dev/null +++ b/content/changelog/2025/03-24-otoroshi-update-biscuit-studio-0.10.md @@ -0,0 +1,24 @@ +--- +title: "Otoroshi update, with new LLM features and Biscuit Studio 0.10" +date: 2025-03-24 +tags: + - addons + - otoroshi +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Biscuit everything! +excludeSearch: true +--- + +Otoroshi `v16.24.0_1742549915` is available. It includes LLM extension [v0.0.42](https://github.com/cloud-apim/otoroshi-llm-extension/releases/tag/0.0.42) with multiple bug fixes, model management improvements, more guardrails features and per-provider context introduced in [v0.0.39](https://github.com/cloud-apim/otoroshi-llm-extension/releases/tag/0.0.39). + +Biscuit Studio [0.0.10](https://github.com/cloud-apim/otoroshi-biscuit-studio/releases/tag/0.0.10) is also included with multiple bug fixes, but also public key pair exposition, Biscuit verifiers chaining, Biscuit token and connected user extraction introduced in [v0.0.8](https://github.com/cloud-apim/otoroshi-biscuit-studio/releases/tag/0.0.8). + +To update just set `CC_OTOROSHI_VERSION` of the add-on's Java application to `v16.24.0_1742549915` and rebuild it. You can also delete `CC_OTOROSHI_APIM_VERSION`, `CC_OTOROSHI_SECRET` variables from the Java application, they are not used anymore. + +- [Learn more about Otoroshi with LLM on Clever Cloud](/doc/addons/otoroshi/) diff --git a/content/changelog/2025/03-24-postgresql-11-12-eol.md b/content/changelog/2025/03-24-postgresql-11-12-eol.md new file mode 100644 index 000000000..cb27065ed --- /dev/null +++ b/content/changelog/2025/03-24-postgresql-11-12-eol.md @@ -0,0 +1,22 @@ +--- +title: Update on PostgreSQL 11 and 12 support on Clever Cloud +date: 2025-03-24 +tags: + - addons + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: It's time to upgrade! +excludeSearch: true +--- + +As [PostgreSQL 16 and 17 are now available](/changelog/2025/03-18-postgresql-16-17/) on Clever Cloud, we'll start to limit access to end-of-life releases: PostgreSQL 11 and 12. **Starting April 30th**, you won't be able to create new PostgreSQL 11 or 12 add-ons. Note that: +* PG11/12 databases deployed before April 30th will still be available after this deadline +* Customers will still be able to manage their existing PG11/12 databases after this deadline + +But **we recommend you to migrate to an actively supported version**. You can do it easily using our included migration tool in your add-on parameters. In the coming weeks, you'll start to see warnings in [the Console](https://console.clever-cloud.com) if you are still using PostgreSQL 12 or a lower version. + +* [PostgreSQL versioning policy](https://www.postgresql.org/support/versioning/) +* [Learn more about PostgreSQL on Clever Cloud](/doc/addons/postgresql/) diff --git a/content/changelog/2025/03-25-js-client-10.0.0.md b/content/changelog/2025/03-25-js-client-10.0.0.md new file mode 100644 index 000000000..222f71dde --- /dev/null +++ b/content/changelog/2025/03-25-js-client-10.0.0.md @@ -0,0 +1,18 @@ +--- +title: 'JS Client 10.0.0 is available' +date: 2025-03-25 +tags: + - client + - javascript +authors: + - name: Pierre De Soyres + link: https://github.com/pdesoyres-cc + image: https://github.com/pdesoyres-cc.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Preparing new features +excludeSearch: true +--- + +[Clever Cloud JS client 10.0.0](https://github.com/CleverCloud/clever-client.js/blob/master/CHANGELOG.md#1000-2025-03-25) is available. In this release, we cleaned up lots of legacy code and no longer generate CommonJS client as we moved to ECMAScript modules (ESM). `eslint`, `prettier` and `typecheck` are now included and used as part of our quality code check and release process. `ResourceLogStream` class is available to manage for new SSE add-ons logs. diff --git a/content/changelog/2025/03-25-python-3.8-eol.md b/content/changelog/2025/03-25-python-3.8-eol.md new file mode 100644 index 000000000..c33c50141 --- /dev/null +++ b/content/changelog/2025/03-25-python-3.8-eol.md @@ -0,0 +1,22 @@ +--- +title: "Python 3.8 end of life" +description: Python 3.9 is next, prepare to Python 3.14 update +date: 2025-03-25 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +excludeSearch: true +--- + +[As announced last year](/changelog/2024/10-01-python-image-changes/), our new update process is getting closer to [the official Python release cycle](https://devguide.python.org/versions/#python-release-cycle), which is 5 years of support. Starting April 30th, we'll remove Python 3.8, released in 2019 and end-of-life since last October, from our images. + +To upgrade to a more recent version of Python, you only need to update `CC_PYTHON_VERSION` of your applications and rebuild them. Use `3` as value to always get the latest release available on Clever Cloud. + +If you need to keep Python 3.8 for legacy reasons, you can [use uv](https://docs.astral.sh/uv/guides/install-python/#installing-a-specific-version) or [Mise](https://mise.jdx.dev/lang/python.html) which are available in all our recently updated images. + +* [Learn more about Python on Clever Cloud](/doc/applications/python/) +* [Learn more about environment variables on Clever Cloud](/doc/reference/reference-environment-variables/) diff --git a/content/changelog/2025/03-27-postgresql-default.md b/content/changelog/2025/03-27-postgresql-default.md new file mode 100644 index 000000000..0eded7e71 --- /dev/null +++ b/content/changelog/2025/03-27-postgresql-default.md @@ -0,0 +1,18 @@ +--- +title: PostgreSQL 17 is now the default on Clever Cloud +date: 2025-03-27 +tags: + - addons + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Let the magic happen! +excludeSearch: true +--- + +As [PostgreSQL 16 and 17 are available](/changelog/2025/03-18-postgresql-16-17/) on Clever Cloud, we start using PostgreSQL 17 as the default version for new add-ons. **Starting today**, when you create a new PostgreSQL database, it will be setup with PostgreSQL 17. + +* [PostgreSQL versioning policy](https://www.postgresql.org/support/versioning/) +* [Learn more about PostgreSQL on Clever Cloud](/doc/addons/postgresql/) diff --git a/content/changelog/2025/03-28-frankenphp-runtime.md b/content/changelog/2025/03-28-frankenphp-runtime.md new file mode 100644 index 000000000..4394bc39c --- /dev/null +++ b/content/changelog/2025/03-28-frankenphp-runtime.md @@ -0,0 +1,38 @@ +--- +title: "FrankenPHP is available as a runtime on Clever Cloud" +description: Use it, help us to improve +date: 2025-03-28 +tags: + - images + - frankenphp +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +excludeSearch: true +--- + +[As announced last year](https://www.clever.cloud/blog/company/2024/10/09/news-php-on-clever-cloud/), we worked to make FrankenPHP available on Clever Cloud as simple as we can. + +First, we started to document how to deploy it with practical examples. Then, we packaged it and included it in our images to make some tests internally and with customers. Starting today, anyone can deploy a PHP application using FrankenPHP on Clever Cloud without needing any Docker container or complex configuration. + +Just create a FrankenPHP application [from API](/api), [Console](https://console.clever-cloud.com) or with [Clever Tools](/doc/cli) and deploy it: + +```bash +echo ' index.php +git init +git add . +git commit -m "Initial FrankenPHP release" + +clever create --type frankenphp +clever deploy +clever open +``` + +FrankenPHP on Clever Cloud comes with [lots of extensions](/doc/applications/frankenphp/#included-extensions) included and we simplified many aspects of application management: if a `composer.json` file is present at the root of your project it's automatically used to install dependencies, you can also use your own `composer.phar` file, Composer flags, define where are the files to serve, define a script to use with FrankenPHP worker feature or a custom run command with environment variables. + +As it's a new image, help us improve it by reporting any issue or suggestion on the [Clever Cloud Community](https://github.com/CleverCloud/Community/discussions/categories/frankenphp). + +* [FrankenPHP and Materia KV example](https://github.com/CleverCloud/frankenphp-kv-json-example) +* [Learn more about FrankenPHP on Clever Cloud](/doc/applications/frankenphp/) +* [Learn more about environment variables on Clever Cloud](/doc/reference/reference-environment-variables/) diff --git a/content/changelog/2025/03-28-keycloak-26.1.4.md b/content/changelog/2025/03-28-keycloak-26.1.4.md new file mode 100644 index 000000000..11291fec5 --- /dev/null +++ b/content/changelog/2025/03-28-keycloak-26.1.4.md @@ -0,0 +1,22 @@ +--- +title: "Keycloak 26.1.4 is available" +date: 2025-03-28 +tags: + - addons + - keycloak +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: With automatic client provisioning +excludeSearch: true +--- + +The release `26.1.4` of Keycloak is available on Clever Cloud. [It fixes](https://github.com/keycloak/keycloak/releases/26.1.4) some bugs, upgrades to Infinispan 15.0.14 and allows administrator to disable automatic refresh of event views `admin/ui`. In this release we also introduce automatic client provisioning. + +To update, just set `CC_KEYCLOAK_VERSION` of the add-on's Java application to `26.1.4` and rebuild it. + +- [Learn more about Keycloak on Clever Cloud](/doc/addons/keycloak) diff --git a/content/changelog/2025/03-31-kunernetes-operator-0.7.0.md b/content/changelog/2025/03-31-kunernetes-operator-0.7.0.md new file mode 100644 index 000000000..7020a2987 --- /dev/null +++ b/content/changelog/2025/03-31-kunernetes-operator-0.7.0.md @@ -0,0 +1,19 @@ +--- +title: 'Clever Kubernetes Operator v0.7.0 with wider products support' +date: 2025-03-31 +tags: + - kubernetes + - operator +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Florentin Dubois + link: https://github.com/FlorentinDUBOIS + image: https://github.com/FlorentinDUBOIS.png?size=40 +description: Deploy Azimutt, Cellar, Keycloak, Matomo and Otoroshi on Clever Cloud from Kubernetes +excludeSearch: true +--- +[Clever Kubernetes Operator v0.7.0](https://github.com/CleverCloud/clever-kubernetes-operator/releases/tag/v0.6.0) is available. It now uses [clevercloud-sdk-rust v0.15.0](https://github.com/CleverCloud/clevercloud-sdk-rust/releases/tag/v0.15.0) and [oauth10a v2.1.1](https://github.com/CleverCloud/oauth10a-rust/releases/tag/v2.1.1). It fixes some bugs, comes with updated documentation and PostgreSQL versions. If you're connected to [Clever Tools](/doc/cli), credentials are automatically detected and used with this release. [Azimutt](https://azimutt.app/docs), [Cellar](/doc/addons/cellar), [Keycloak](/doc/addons/keycloak), [Matomo](/doc/addons/matomo) and [Otoroshi](/doc/addons/otoroshi) can now be deployed as custom resources. + +- [Learn more about Clever Kubernetes Operator](/guides/kubernetes-operator) diff --git a/content/changelog/2025/04-01-images-update.md b/content/changelog/2025/04-01-images-update.md new file mode 100644 index 000000000..19bac28e9 --- /dev/null +++ b/content/changelog/2025/04-01-images-update.md @@ -0,0 +1,23 @@ +--- +title: "Images update: Rust 1.85.1" +date: 2025-04-01 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: New week, new release! +excludeSearch: true +--- + +We deployed and updated all our images, except Docker and Java, with no impact for our users. + +* **Common:** + * Linux kernel 6.13.8 + * Mise 2025.3.11 +* **Python:** + * uv 0.6.11 +* **Rust:** + * Update to 1.85.1 diff --git a/content/changelog/2025/04-01-otoroshi-17.md b/content/changelog/2025/04-01-otoroshi-17.md new file mode 100644 index 000000000..6cd9d85ec --- /dev/null +++ b/content/changelog/2025/04-01-otoroshi-17.md @@ -0,0 +1,26 @@ +--- +title: "Otoroshi v17.0.0 is available: OpenAI web search and ecological impact/cost tracking in LLM extension" +date: 2025-04-01 +tags: + - addons + - otoroshi +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: The feature easily in your hands +excludeSearch: true +--- + +[Otoroshi v17.0.0](https://github.com/MAIF/otoroshi/releases/tag/v17.0.0) is available. It fixes some bugs, adds target failover support and allows OpenAPI to be consumed as YAML. This release also brings the new API management feature, providing a way to create an API, flows, routes, backends, consumers and subscriptions. An API is created as draft, can be tested and deployed with lifecycle and version management. This feature is alpha and some functionalities are still early or yet to come. Share your feedback in [Otoroshi's GitHub discussions](https://github.com/MAIF/otoroshi/discussions). + +Biscuit Studio [0.0.12](https://github.com/cloud-apim/otoroshi-biscuit-studio/releases/tag/0.0.12) is included with enhancements from [0.11](https://github.com/cloud-apim/otoroshi-biscuit-studio/releases/tag/0.0.11) release: Distributed revocation, a plugin to fetch a Biscuit from a remote location, new Biscuit extractor types and new admin API routes. + +LLM Extension [0.0.43](https://github.com/cloud-apim/otoroshi-llm-extension/releases/tag/0.0.43) brings support for OpenAI web search and new ecological impact/cost tracking data linked to each request sent to an AI service provider. [The documentation](https://cloud-apim.github.io/otoroshi-llm-extension/docs/overview/) has been updated to reflect these changes. + +To update just set `CC_OTOROSHI_VERSION` of the add-on's Java application to `v17.0.0_1743436155` and rebuild it. You can also delete `CC_OTOROSHI_APIM_VERSION`, `CC_OTOROSHI_SECRET` variables from the Java application, they are not used anymore. + +- [Learn more about Otoroshi with LLM on Clever Cloud](/doc/addons/otoroshi/) diff --git a/content/changelog/2025/04-02-postgresql-replicas.md b/content/changelog/2025/04-02-postgresql-replicas.md new file mode 100644 index 000000000..ca8ba8fa0 --- /dev/null +++ b/content/changelog/2025/04-02-postgresql-replicas.md @@ -0,0 +1,20 @@ +--- +title: Manage existing PosgreSQL replicas from the Console +date: 2025-04-02 +tags: + - addons + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Better handle your PostgreSQL replicas +excludeSearch: true +--- + +PostgreSQL dashboard in [the Clever Cloud Console](https://console.clever-cloud.com) now shows if a database is a standalone server or a replica. For PostgreSQL 12+ add-ons, you can promote a read-only replica as a read-write standalone server. + +To set up replicas, ask your sales representative or [contact support](https://console.clever-cloud.com/ticket-center-choice). + +* [Learn more about PostgreSQL replication](/doc/addons/postgresql#replication) +* [Learn more about PostgreSQL on Clever Cloud](/doc/addons/postgresql/) diff --git a/content/changelog/2025/04-03-images-update.md b/content/changelog/2025/04-03-images-update.md new file mode 100644 index 000000000..f41cfcc35 --- /dev/null +++ b/content/changelog/2025/04-03-images-update.md @@ -0,0 +1,30 @@ +--- +title: "Images update: news for Tailscale, SQL Server extensions for PHP" +date: 2025-04-03 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Multiple new features and a fix for this week! +excludeSearch: true +--- + +We deployed and updated all our images, with no impact for our users. + +* **Common:** + * Fix an issue with scaling feature + * Linux kernel 6.13.9 + * Mise 2025.3.11 + * Tailscale 1.82.0 +* **Go:** + * Update to 1.24.2 + +SQL Server extensions (`sqlsrv` and `pdo_sqlsrv`) are now available for PHP 8.1 to 8.4. To enable them, add `ENABLE_SQLSRV=true` or `ENABLE_PDO_SQLSRV=true` environment variables to your application. + +We enhanced our Tailscale native integration. It now supports `--accept-dns` and `--accept-routes` [flags](https://tailscale.com/kb/1072/client-preferences?q=accept-route#use-tailscale-dns-settings). To disable or enable them, set `TAILSCALE_ACCEPT_DNS` and `TAILSCALE_ACCEPT_ROUTES` environment variables to `false` or `true` in your application. + +- [Learn more about Tailscale on Clever Cloud](/doc/reference/reference-environment-variables/#tailscale-support) +- [Learn more about PHP with Apache on Clever Cloud](/doc/applications/php/) diff --git a/content/changelog/2025/04-04-postgresql-locale.md b/content/changelog/2025/04-04-postgresql-locale.md new file mode 100644 index 000000000..e632b839e --- /dev/null +++ b/content/changelog/2025/04-04-postgresql-locale.md @@ -0,0 +1,24 @@ +--- +title: PostgreSQL locale support at database creation +date: 2025-04-04 +tags: + - addons + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Choose the locale of your PostgreSQL database at creation +excludeSearch: true +--- + +You can now define the locale of your PostgreSQL database when creating a new add-on with [Clever Tools](/doc/cli): + +```bash +clever addon create postgresql-addon pgLocaleTest --plan xxs_sml --option locale=en_US +``` + +This will create a PostgreSQL database with the `en_US` locale instead of the default `en_GB` locale. + +* [PostgreSQL versioning policy](https://www.postgresql.org/support/versioning/) +* [Learn more about PostgreSQL on Clever Cloud](/doc/addons/postgresql/) diff --git a/content/changelog/2025/04-10-mysql-8.4.4-update.md b/content/changelog/2025/04-10-mysql-8.4.4-update.md new file mode 100644 index 000000000..4cfba047d --- /dev/null +++ b/content/changelog/2025/04-10-mysql-8.4.4-update.md @@ -0,0 +1,18 @@ +--- +title: MySQL 8.4.4-4 is available +date: 2025-04-10 +tags: + - addons + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Get new features and improvements +excludeSearch: true +--- + +We updated MySQL 8.4 from Percona Server. They're now available for add-ons creation and migration. + +* [Learn more about MySQL on Clever Cloud](/doc/addons/mysql/) +* [Learn more about MySQL 8.4.4-4](https://docs.percona.com/percona-server/8.4/release-notes/8.4.4-4.html) diff --git a/content/changelog/2025/04-16-images-update.md b/content/changelog/2025/04-16-images-update.md new file mode 100644 index 000000000..a43eb4c71 --- /dev/null +++ b/content/changelog/2025/04-16-images-update.md @@ -0,0 +1,34 @@ +--- +title: "Images update: Bun included, Rust 1.86" +date: 2025-04-16 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Native support for Bun incoming +excludeSearch: true +--- + +We updated all our images, except Java. Deployment is in progress for all our users. + +* **Common:** + * Linux kernel 6.14.2 + * Mise 2025.4.2 + * OpenSSH 10.0p2 + * OpenSSL 3.5.0 + * Tailscale 1.82.0 +* **Node.js:** + * Bun 1.2.9 +* **PHP:** + * Update to 8.4.6 + * Composer 2.8.8 +* **Python:** + * Update to 3.13.3 + * uv 0.6.14 +* **Rust:** + * Update to 1.86.0 + +Bun is now part of our included tools, and will be natively supported in an upcoming release of our Node.js runtime. diff --git a/content/changelog/2025/04-22-metabase-54.md b/content/changelog/2025/04-22-metabase-54.md new file mode 100644 index 000000000..ac055c21c --- /dev/null +++ b/content/changelog/2025/04-22-metabase-54.md @@ -0,0 +1,23 @@ +--- +title: "Metabase 54 is available" +date: 2025-04-22 +tags: + - addons + - metabase +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Faster, with more features +excludeSearch: true +--- + +The `x.54` branch of Metabase is now available on Clever Cloud. It brings new custom expression editor, better table visualization, simplified data picker for embedding, support of BigInteger values, multiple enhancements and bug fixes. To update, just set `CC_METABASE_VERSION` of the add-on's Java application to `0.54` for the community edition or `1.54` for the enterprise edition (EE). + +- [Learn more about Metabase 54](https://www.metabase.com/releases/metabase-54) +- [Learn more about Metabase on Clever Cloud](/doc/addons/metabase/) + +{{< youtube id="ew20x0refcs" >}} diff --git a/content/changelog/2025/04-24-keycloak-26.2.1-grafana.md b/content/changelog/2025/04-24-keycloak-26.2.1-grafana.md new file mode 100644 index 000000000..709277f1e --- /dev/null +++ b/content/changelog/2025/04-24-keycloak-26.2.1-grafana.md @@ -0,0 +1,35 @@ +--- +title: "Keycloak 26.2.1 is available with new features and a Grafana dashboard" +date: 2025-04-24 +tags: + - addons + - keycloak +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Thanks to Clever Cloud's native Grafana experience +excludeSearch: true +--- + +The release `26.2.1` of Keycloak is available on Clever Cloud. [This new branch fixes](https://github.com/keycloak/keycloak/releases?q=26.2&expanded=true) some bugs, supports Standard Token Exchange according to [Token exchange specification](https://datatracker.ietf.org/doc/html/rfc8693), brings ECS (Elastic Common Schema) JSON format [for logs](https://www.keycloak.org/server/logging), fine-grained admin permissions, etc. To update, just set `CC_KEYCLOAK_VERSION` of the add-on's Java application to `26.2.1` and rebuild it. + +## Grafana dashboard + +Each Clever Cloud account organisation [comes with a pre-configured Grafana service](/doc/metrics/#publish-your-own-metrics). With recent Keycloak enhancements on metrics and observability, we've worked on a Grafana dashboard ready to import: +- Go to the `Metrics in Grafana` section of your organisation or personal space in [Console](https://console.clever-cloud.com/) +- Open Grafana, click on the `+` icon in the upper right corner and select `Import` dashboard +- Import this [JSON file](https://cc-keycloak.cellar-c2.services.clever-cloud.com/keycloak-grafana-dashboard.json) + +Then you'll have a `Keycloak dashboard` in your Grafana folders. Just select your Keycloak add-on in the `runtime section`, you'll automatically get instance's information, metrics, cache and performance data, etc. + +## New features and settings + +Starting with this release, Keycloak add-ons on Clever Cloud come with `admin-cli` client disabled by default. If you need it for provisioning through a `direct access grant`, you must enable it first. + +You can now set up a new client with the `admin` role for `master` realm during build using `CC_KEYCLOAK_BOOTSTRAP_ADMIN_CLIENT_ID` and `CC_KEYCLOAK_BOOTSTRAP_ADMIN_CLIENT_SECRET` environment variables. Once created, delete them from your application. Bootstrap client [should be temporary](https://www.keycloak.org/server/bootstrap-admin-recovery) and is mostly necessary for provisioning. + +- [Learn more about Keycloak on Clever Cloud](/doc/addons/keycloak) diff --git a/content/changelog/2025/04-25-otoroshi-biscuit-studio-0.0.13.md b/content/changelog/2025/04-25-otoroshi-biscuit-studio-0.0.13.md new file mode 100644 index 000000000..9820c4d0b --- /dev/null +++ b/content/changelog/2025/04-25-otoroshi-biscuit-studio-0.0.13.md @@ -0,0 +1,22 @@ +--- +title: "Otoroshi update with Biscuit Studio 0.0.13" +date: 2025-04-25 +tags: + - addons + - otoroshi +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Use Biscuits, end-to-end +excludeSearch: true +--- + +[Otoroshi v17.0.0](https://github.com/MAIF/otoroshi/releases/tag/v17.0.0) is available with Biscuit Studio [0.0.13](https://github.com/cloud-apim/otoroshi-biscuit-studio/releases/tag/0.0.13) which enhance `BiscuitUserExtractor` plugin capabilities. + +To update just set `CC_OTOROSHI_VERSION` of the add-on's Java application to `v17.0.0_1745325312` and rebuild it. You can also delete `CC_OTOROSHI_APIM_VERSION`, `CC_OTOROSHI_SECRET` variables from the Java application, they are not used anymore. + +- [Learn more about Otoroshi with LLM on Clever Cloud](/doc/addons/otoroshi/) diff --git a/content/changelog/2025/04-30-keycloak-26.2.2-security.md b/content/changelog/2025/04-30-keycloak-26.2.2-security.md new file mode 100644 index 000000000..9165281ae --- /dev/null +++ b/content/changelog/2025/04-30-keycloak-26.2.2-security.md @@ -0,0 +1,22 @@ +--- +title: "Keycloak 26.2.2 is available (security update)" +date: 2025-04-30 +tags: + - addons + - keycloak +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Two CVE fixed +excludeSearch: true +--- + +The release `26.2.2` of Keycloak is available on Clever Cloud. [It fixes](https://github.com/keycloak/keycloak/releases/26.2.2) some bugs, [CVE-2025-3501](https://nvd.nist.gov/vuln/detail/CVE-2025-3501) and[CVE-2025-3910](https://nvd.nist.gov/vuln/detail/CVE-2025-3910). + +To update, just set `CC_KEYCLOAK_VERSION` of the add-on's Java application to `26.2.2` and rebuild it. + +- [Learn more about Keycloak on Clever Cloud](/doc/addons/keycloak) diff --git a/content/changelog/2025/05-06-images-update.md b/content/changelog/2025/05-06-images-update.md new file mode 100644 index 000000000..52e08baac --- /dev/null +++ b/content/changelog/2025/05-06-images-update.md @@ -0,0 +1,34 @@ +--- +title: "Images update: PHP 8.4 is now default, some cleanup" +date: 2025-05-06 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Node.js 18 and Ruby 3.1 are now EOL +excludeSearch: true +--- + +We updated all our images. Deployment is in progress for all our users. + +* **Common:** + * Linux kernel 6.14.4 + * Mise 2025.5.0 + * Redis 8.0.0 + * Tailscale 1.82.5 +* **Go:** + * Update to 1.24.2 +* **Node.js:** + * Update to 22.15 (npm 10.9.2) +* **Python:** + * uv 0.7.2 + +As previously announced, Python 3.8 [is not available in our images anymore](/changelog/2025/03-25-python-3.8-eol/) and PHP 8.4 [is now used as default](/changelog/2025/03-21-php-version-management-update/) for `CC_PHP_VERSION=8`. As Node.js 18 and Ruby 3.1 are now end-of-life, you'll get a warning if you use them. + +- [Learn more about Node.js release cycle](https://nodejs.org/en/about/releases/) +- [Learn more about PHP release cycle](https://www.php.net/supported-versions.php) +- [Learn more about Python release cycle](https://devguide.python.org/versions/#python-release-cycle) +- [Learn more about Ruby release cycle](https://www.ruby-lang.org/en/downloads/branches/) diff --git a/content/changelog/2025/05-06-keycloak-26.2.3.md b/content/changelog/2025/05-06-keycloak-26.2.3.md new file mode 100644 index 000000000..bf2f09e87 --- /dev/null +++ b/content/changelog/2025/05-06-keycloak-26.2.3.md @@ -0,0 +1,22 @@ +--- +title: "Keycloak 26.2.3 is available" +date: 2025-05-06 +tags: + - addons + - keycloak +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: With a bug fix for Clever Cloud module +excludeSearch: true +--- + +The release `26.2.3` of Keycloak is available on Clever Cloud. [It fixes](https://github.com/keycloak/keycloak/releases/26.2.3) some bugs and brings possibility to log details and representation to the jboss-logging listener. We updated the Clever Cloud module to comply with the new Keycloak API for 26.x releases. + +To update, just set `CC_KEYCLOAK_VERSION` of the add-on's Java application to `26.2.3` and rebuild it. + +- [Learn more about Keycloak on Clever Cloud](/doc/addons/keycloak). diff --git a/content/changelog/2025/05-06-redis-8.0.0.md b/content/changelog/2025/05-06-redis-8.0.0.md new file mode 100644 index 000000000..bbed6b5e8 --- /dev/null +++ b/content/changelog/2025/05-06-redis-8.0.0.md @@ -0,0 +1,23 @@ +--- +title: Redis 8.0.0 is available +date: 2025-05-06 +tags: + - addons + - redis +authors: + - name: Aurรฉlien Hรฉbert + link: https://github.com/aurrelhebert + image: https://github.com/aurrelhebert.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Welcome back to open source +excludeSearch: true +--- + +As Redisโ„ข is [open source again](https://antirez.com/news/151), we're able to provide release `8.0.0`. It's now available for each new deployment. You can easily migrate an existing instance from [Console](https://console.clever-cloud.com). This new branch brings performance improvements, new features, and bug fixes. + +- [Learn more about Redisโ„ข 8](https://redis.io/blog/redis-8-ga/) +- [Learn more about Redisโ„ข on Clever Cloud](/doc/addons/redis/) + +{{< youtube id="EeSckl2L3Xs" >}} diff --git a/content/changelog/2025/05-07-node-24.md b/content/changelog/2025/05-07-node-24.md new file mode 100644 index 000000000..2e106d832 --- /dev/null +++ b/content/changelog/2025/05-07-node-24.md @@ -0,0 +1,26 @@ +--- +title: "Node.js 24.0 is available, will be LTS and used by default in October" +description: Prepare your applications +date: 2025-05-07 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +excludeSearch: true +--- + +2025 is an important year for Node.js ecosystem with big changes for multiple branches: +- 18.x LTS is end-of-life since April 30th and won't receive any new security updates +- 20.x LTS is in maintenance mode and will receive security updates until April 30th, 2026 +- 22.x LTS, will enter maintenance mode in October and will receive security updates until April 30th, 2027 +- 23.x is in maintenance mode and will receive security updates until June 1st +- 24.x [is now available](https://nodejs.org/en/blog/release/v24.0.0) as the "Current" release. It will be LTS starting October and supported until April 2028 + +In Clever Cloud runtimes, we use the latest LTS version by default. Thus, it's currently 22.x, and we'll move to 24.x in October. Until then you can use 24.x branch by setting the `CC_NODE_VERSION` environment variable to `^24`, `24` or `24.0`, for example: + +* [Learn more about Node.js release cycle](https://nodejs.org/en/about/releases/) +* [Learn more about Node.js on Clever Cloud](/doc/applications/nodejs/) +* [Learn more about environment variables on Clever Cloud](/doc/reference/reference-environment-variables/) diff --git a/content/changelog/2025/05-12-keycloak-26.2.4.md b/content/changelog/2025/05-12-keycloak-26.2.4.md new file mode 100644 index 000000000..69c8d0f25 --- /dev/null +++ b/content/changelog/2025/05-12-keycloak-26.2.4.md @@ -0,0 +1,22 @@ +--- +title: "Keycloak 26.2.4 is available" +date: 2025-05-12 +tags: + - addons + - keycloak +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: bug fix release +excludeSearch: true +--- + +The release `26.2.4` of Keycloak is available on Clever Cloud which [fixes](https://github.com/keycloak/keycloak/releases/26.2.4) some bugs. + +To update, just set `CC_KEYCLOAK_VERSION` of the add-on's Java application to `26.2.4` and rebuild it. + +- [Learn more about Keycloak on Clever Cloud](/doc/addons/keycloak) diff --git a/content/changelog/2025/05-13-images-update.md b/content/changelog/2025/05-13-images-update.md new file mode 100644 index 000000000..984d081b9 --- /dev/null +++ b/content/changelog/2025/05-13-images-update.md @@ -0,0 +1,31 @@ +--- +title: "Images update: Go 1.24.3, PHP 8.4.7" +date: 2025-05-13 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Lots of patch updates +excludeSearch: true +--- + +We updated all our images. Deployment is in progress for all our users. + +* **Common:** + * Linux kernel 6.14.6 +* **Docker:** + * Update to 28.11.1 +* **Elixir** + * Erlang 25.3.2.21 + * Erlang 26.2.5.12 + * Erlang 27.3.4 +* **Go:** + * Update to 1.24.3 +* **PHP:** + * Update to 8.3.21 + * Update to 8.4.7 +* **Python:** + * uv 0.7.3 diff --git a/content/changelog/2025/05-14-otoroshi-api-env-vars.md b/content/changelog/2025/05-14-otoroshi-api-env-vars.md new file mode 100644 index 000000000..5ce385177 --- /dev/null +++ b/content/changelog/2025/05-14-otoroshi-api-env-vars.md @@ -0,0 +1,29 @@ +--- +title: "Link Otoroshi API credentials to your applications" +date: 2025-05-14 +tags: + - addons + - otoroshi +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: +excludeSearch: true +--- + +Starting today, new Otoroshi add-ons deployed on Clever Cloud will expose API related environment variables as service dependencies: + +- `CC_OTOROSHI_API_URL`: the base URL of the Otoroshi API +- `CC_OTOROSHI_API_CLIENT_ID`: the API key to query the Otoroshi API +- `CC_OTOROSHI_API_CLIENT_SECRET`: the API secret to query the Otoroshi API + +Thus, you'll be able to link the add-on to an application and get the API URL and credentials as environment variables. + +`ADMIN_API_CLIENT_ID` and `ADMIN_API_CLIENT_SECRET` environment variables of the Java application are replaced by `CC_OTOROSHI_API_CLIENT_ID` and `CC_OTOROSHI_API_CLIENT_SECRET` but are still supported during deployment for legacy reasons. The `CC_OTOROSHI_SSO_URL` is removed from service dependencies on new add-ons as it's not useful here. + +- [Learn more about service dependencies](/doc/administrate/service-dependencies/) +- [Learn more about Otoroshi on Clever Cloud](/doc/addons/otoroshi/) diff --git a/content/changelog/2025/05-15-redis-8.0.1.md b/content/changelog/2025/05-15-redis-8.0.1.md new file mode 100644 index 000000000..5ad403437 --- /dev/null +++ b/content/changelog/2025/05-15-redis-8.0.1.md @@ -0,0 +1,20 @@ +--- +title: Redis 8.0.1 is available +date: 2025-05-15 +tags: + - addons + - redis +authors: + - name: Aurรฉlien Hรฉbert + link: https://github.com/aurrelhebert + image: https://github.com/aurrelhebert.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Some fixes and stability improvements +excludeSearch: true +--- + +We updated Redisโ„ข to [release 8.0.1](https://github.com/redis/redis/releases/tag/8.0.1) with kernel `6.14.6` to fix some stability issues. It's available for add-ons creation and migration. + +- [Learn more about Redisโ„ข on Clever Cloud](/doc/addons/redis/) diff --git a/content/changelog/2025/05-16-images-update.md b/content/changelog/2025/05-16-images-update.md new file mode 100644 index 000000000..0f9241182 --- /dev/null +++ b/content/changelog/2025/05-16-images-update.md @@ -0,0 +1,37 @@ +--- +title: "Images update: Composer 2.8.9, Node.js 22.15.1, Rust 1.87.0" +date: 2025-05-16 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: With CC_NODE_VERSION supported in all runtimes +excludeSearch: true +--- + +We updated all our images. Deployment is in progress for all our users. + +* **Common:** + * Linux kernel 6.14.6 with stability fix + * Mise 2025.5.3 + * Redis 8.0.1 + * SQLite 3.49.2 +* **Node.js:** + * Update to 22.15.1 (npm 10.9.2) + * Bun 1.2.9 +* **PHP:** + * Composer 2.8.9 +* **Ruby:** + * Update to 3.1.7 + * Update to 3.2.8 + * Update to 3.3.8 + * Update to 3.4.3 +* **Rust:** + * Update to 1.87.0 + +This release introduces `CC_NODE_VERSION` support [for Node.js applications](/changelog/2025/05-16-node-versions/). When an application is restarted for image update, it won't appear as `Maintenance` anymore, but as `Maintenance/ImageUpdate` + +- [Learn more about Node.js on Clever Cloud](/doc/applications/nodejs) diff --git a/content/changelog/2025/05-16-node-versions.md b/content/changelog/2025/05-16-node-versions.md new file mode 100644 index 000000000..a83953af1 --- /dev/null +++ b/content/changelog/2025/05-16-node-versions.md @@ -0,0 +1,17 @@ +--- +title: "Simpler Node.js version management" +date: 2025-05-16 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: One rule to rule them all +excludeSearch: true +--- + +Until now, to set Node.js version on Clever Cloud, you had to use the `engines.node` field in `package.json` for Node.js applications, or the `CC_NODE_VERSION` environment variable for all other runtimes. Now, you can use `CC_NODE_VERSION` for Node.js applications too. It won't change anything for existing applications, but we recommend you to switch for such behavior. + +- [Learn more about Node.js on Clever Cloud](/doc/applications/nodejs) diff --git a/content/changelog/2025/05-16-terraform-0.8.md b/content/changelog/2025/05-16-terraform-0.8.md new file mode 100644 index 000000000..8e6411352 --- /dev/null +++ b/content/changelog/2025/05-16-terraform-0.8.md @@ -0,0 +1,20 @@ +--- +title: Terraform provider 0.8.0 is available +description: FS Buckets support and Cellar add-ons update +date: 2025-05-16 +tags: + - addons + - terraform +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Rรฉmi Collignon-Ducret + link: https://github.com/miton18 + image: https://github.com/miton18.png?size=40 +excludeSearch: true +--- + +The [0.8.0 release](https://github.com/CleverCloud/terraform-provider-clevercloud/releases/tag/v0.8.0) of the Clever Cloud Terraform provider introduces support for [FS Buckets](/doc/addons/fs-bucket/) and update for [Cellar add-ons](/doc/addons/cellar/) + +* Learn more about [our Terraform provider](https://registry.terraform.io/providers/CleverCloud/clevercloud/latest/docs) diff --git a/content/changelog/2025/05-19-otoroshi-17.1.1.md b/content/changelog/2025/05-19-otoroshi-17.1.1.md new file mode 100644 index 000000000..c53441c53 --- /dev/null +++ b/content/changelog/2025/05-19-otoroshi-17.1.1.md @@ -0,0 +1,24 @@ +--- +title: "Otoroshi 17.1 is available, audio and image models supported by LLM extension" +date: 2025-05-19 +tags: + - addons + - otoroshi +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Use Biscuits, end-to-end +excludeSearch: true +aliases: +- /changelog/2025/19-05-otoroshi-17.1.1/ +--- + +[Otoroshi v17.1](https://github.com/MAIF/otoroshi/releases?q=v17.1&expanded=true) is available with multiple improvements, bug fixes and a new canary mode plugin with autonomous rollout. LLM extension is updated to [0.0.46 release](https://github.com/cloud-apim/otoroshi-llm-extension/releases/tag/0.0.46) which brings new OVHcloud endpoints, user provided data for ecological/cost tracking, support of multiple models for audio (speech-to-text, text-to-speech), image generation and moderation. + +To update just set `CC_OTOROSHI_VERSION` of the add-on's Java application to `v17.1.1_1747324564` and rebuild it. + +- [Learn more about Otoroshi with LLM on Clever Cloud](/doc/addons/otoroshi/) diff --git a/content/changelog/2025/05-20-matomo-5.3.2.md b/content/changelog/2025/05-20-matomo-5.3.2.md new file mode 100644 index 000000000..0cf3ee92f --- /dev/null +++ b/content/changelog/2025/05-20-matomo-5.3.2.md @@ -0,0 +1,21 @@ +--- +title: Matomo 5.3.2 is available +date: 2025-05-20 +tags: + - addons + - matomo +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Upgraded with no effort needed +excludeSearch: true +--- + +Our [Matomo](https://matomo.org/) add-on has been updated to version `5.3.2` which is now used by default. You can deploy this latest release from our [Console](https://console.clever-cloud.com) or [Clever Tools](/doc/cli/). Existing customers add-ons are already up-to-date. + +- [Learn more about Matomo 5.3.2](https://matomo.org/changelog/matomo-5-3-2/) +- [Learn more about Matomo on Clever Cloud](/doc/addons/matomo/) diff --git a/content/changelog/2025/05-20-pg-update-17.5.md b/content/changelog/2025/05-20-pg-update-17.5.md new file mode 100644 index 000000000..92b5aa2fc --- /dev/null +++ b/content/changelog/2025/05-20-pg-update-17.5.md @@ -0,0 +1,24 @@ +--- +title: PostgreSQL 17.5, 16.9, 15.13, 14.18 and 13.21 are available (security update) +date: 2025-05-20 +tags: + - addons + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Migrate to the latest PostgreSQL versions +excludeSearch: true +--- + +New PostgreSQL versions are available for new add-ons and migration: +* PostgreSQL 17.5 +* PostgreSQL 16.9 +* PostgreSQL 15.13 +* PostgreSQL 14.18 +* PostgreSQL 13.21 + +It includes [fixes and improvements](https://www.postgresql.org/about/news/postgresql-175-169-1513-1418-and-1321-released-3072/), including a security patch for [CVE-2025-4207](https://nvd.nist.gov/vuln/detail/CVE-2025-4207). + +* [Learn more about PostgreSQL on Clever Cloud](/doc/addons/postgresql/) diff --git a/content/changelog/2025/05-28-oauth-consumer-new-interface.md b/content/changelog/2025/05-28-oauth-consumer-new-interface.md new file mode 100644 index 000000000..74045e3f5 --- /dev/null +++ b/content/changelog/2025/05-28-oauth-consumer-new-interface.md @@ -0,0 +1,22 @@ +--- +title: 'New look for OAuth consumers management' +date: 2025-05-28 +tags: + - console + - oauth +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Hubert Sablonniรจre + link: https://github.com/hsablonniere + image: https://github.com/hsablonniere.png?size=40 +description: You like new pages? Wait for the next one! +excludeSearch: true +--- + +A new interface is available [in Clever Cloud Console to create](https://console.clever-cloud.com/users/me/oauth-consumers/new) and manage OAuth consumers. It's better, clearer, simpler, and uses our open source [web components](https://clever.cloud/developers/clever-components/). + +- [Learn more about OAuth consumers](/api/howto/#oauth1) + +![New OAuth consumers interface](/images/new-oauth-consumer.webp) diff --git a/content/changelog/2025/05-28-otoroshi-17.2.md b/content/changelog/2025/05-28-otoroshi-17.2.md new file mode 100644 index 000000000..d00b999fa --- /dev/null +++ b/content/changelog/2025/05-28-otoroshi-17.2.md @@ -0,0 +1,22 @@ +--- +title: "Otoroshi 17.2 is available with Zip bomb plugin and new data exporters" +description: "Let's hunt bots and export your logs to TCP/UDP, JMS or syslog" +date: 2025-05-28 +tags: + - addons + - otoroshi +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +excludeSearch: true +--- + +[Otoroshi v17.2](https://github.com/MAIF/otoroshi/releases/tag/v17.2.0) is available with multiple improvements and bug fixes. It brings enhancements to Workflows, data extraction from API keys and new plugins: Zip bomb backend, TCP/UDP, JMS and syslog data exporters. + +To update, set `CC_OTOROSHI_VERSION` of the add-on's Java application to `v17.2_` and rebuild it. + +- [Learn more about Otoroshi with LLM on Clever Cloud](/doc/addons/otoroshi/) diff --git a/content/changelog/2025/06-03-images-update.md b/content/changelog/2025/06-03-images-update.md new file mode 100644 index 000000000..80e969bc0 --- /dev/null +++ b/content/changelog/2025/06-03-images-update.md @@ -0,0 +1,45 @@ +--- +title: "Images update: custom port for FrankenPHP, Erlang 28" +date: 2025-06-03 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: More flexible FrankenPHP, and more under the hoodโ€ฆ +excludeSearch: true +--- + +We updated all our images. Deployment is in progress for all our users. + +* **Common:** + * Linux kernel 6.14.9 + * Mise 2025.5.17 + * Redis 8.0.2 + * SQLite 3.50.0 +* **Elixir:** + * Update to 1.18.4 + * Erlang 28.0 +* **FrankenPHP:** + * Update to 1.6.2 +* **Go:** + * Update to 1.24.3 +* **Node.js:** + * Update to 22.16.0 (npm 10.9.2) + * Bun 1.2.15 +* **Python:** + * uv 0.7.9 +* **Ruby:** + * Update to 3.4.4 + +## Bun native support +This release introduces [Bun](https://bun.sh) native support on Clever Cloud, with auto-detection of `bun.lock` file. + +- [Learn more about Bun support on Clever Cloud](/changelog/2025/06-03-native-bun-support/) + +## FrankenPHP custom port +You can also set `CC_FRANKENPHP_PORT` to use a different port than the default `8080`. It allows you to use services in front of your FrankenPHP application such as [Redirection.io](/doc/reference/reference-environment-variables/#use-redirectionio-as-a-proxy) for example. + +- [Learn more about FrankenPHP on Clever Cloud](/doc/applications/frankenphp/) diff --git a/content/changelog/2025/06-03-native-bun-support.md b/content/changelog/2025/06-03-native-bun-support.md new file mode 100644 index 000000000..4e13868ac --- /dev/null +++ b/content/changelog/2025/06-03-native-bun-support.md @@ -0,0 +1,38 @@ +--- +title: "Bun native support on Clever Cloud" +description: Run Bun without any efforts +date: 2025-06-03 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +excludeSearch: true +--- + +[Since April](/changelog/2025/04-16-images-update/), Bun is included in our images. It helped customers to deploy their applications faster, profit from its native [Redisยฎ](https://bun.sh/docs/api/redis) and [object storage](https://bun.sh/docs/api/s3) support. Starting today, you can deploy your Bun applications on Clever Cloud without any efforts. + +If a `bun.lock` file is detected at the root of your project, and you didn't ask for another JavaScript runtime or package manager, your application will be deployed with [Bun](https://bun.sh) as a package manager and runtime. You can also ask for Bun explicitly by setting the `CC_NODE_BUILD_TOOL` environment variable to `bun`. + +Want to give it a try? Just launch these commands with Bun and [Clever Tools CLI](/doc/cli/install) installed on your system: + +``` +mkdir bunDemo +cd bunDemo + +git init +bun init --yes --react + +git add . +git commit -m "Initial commit" + +clever create --type node +clever deploy +clever open +``` + +You'll get a basic React application running on Bun, deployed on Clever Cloud. + +* [Learn more about Bun & Node.js on Clever Cloud](/doc/applications/nodejs) diff --git a/content/changelog/2025/06-03-terraform-0.9.md b/content/changelog/2025/06-03-terraform-0.9.md new file mode 100644 index 000000000..1be536d9e --- /dev/null +++ b/content/changelog/2025/06-03-terraform-0.9.md @@ -0,0 +1,20 @@ +--- +title: Terraform provider 0.9.0 is available +description: Application restart, git local repositories, and Play 2 support +date: 2025-06-03 +tags: + - addons + - terraform +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Rรฉmi Collignon-Ducret + link: https://github.com/miton18 + image: https://github.com/miton18.png?size=40 +excludeSearch: true +--- + +The [0.9.0 release](https://github.com/CleverCloud/terraform-provider-clevercloud/releases/tag/v0.9.0) of the Clever Cloud Terraform provider introduces support for `play2` applications and git local repositories. Starting with this release, if you change an application environment variable, it will be restarted automatically. + +* Learn more about [our Terraform provider](https://registry.terraform.io/providers/CleverCloud/clevercloud/latest/docs) diff --git a/content/changelog/2025/06-04-otoroshi-17.3.md b/content/changelog/2025/06-04-otoroshi-17.3.md new file mode 100644 index 000000000..aac448078 --- /dev/null +++ b/content/changelog/2025/06-04-otoroshi-17.3.md @@ -0,0 +1,34 @@ +--- +title: Otoroshi 17.3 introduces AI and Biscuit in Workflows +description: Secret vault expressions with multiple values, streaming for tool calls, and many enhancements +date: 2025-06-04 +tags: + - addons + - otoroshi +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +excludeSearch: true +--- + +[Otoroshi v17.3](https://github.com/MAIF/otoroshi/releases/tag/v17.3.0) is available with multiple improvements and bug fixes. It brings more enhancements to Workflows and data extraction from API keys. Secret vault expression can now have multiple values using the `||` and `&&` operators. + +This release is shipped with [LLM extension 0.0.47](https://github.com/cloud-apim/otoroshi-llm-extension/releases/tag/0.0.47) with enhancements in responses, streaming for tool calls for Ollama, multiple access token per provider. It also introduces AI oriented set of functions for Otoroshi Workflows. [Biscuit Studio 0.0.15](https://github.com/cloud-apim/otoroshi-biscuit-studio/releases/tag/0.0.15) provides attenuation, forge and verify functions to workflows. + +To update just set `CC_OTOROSHI_VERSION` of the add-on's Java application to `v17.3.1_1749049547` and rebuild it. You can also use [the new Clever Tools commands](/doc/cli/operators/), introduced in `3.13.0` release: + +```bash +clever features enable operators + +clever otoroshi version check yourOtoroshiNameOrId +clever otoroshi version update yourOtoroshiNameOrId +clever otoroshi version update yourOtoroshiNameOrId v17.3.1_1749049547 +``` + +- [Learn more about Otoroshi Workflows](https://maif.github.io/otoroshi/manual/topics/workflows.html) +- [Learn more about Otoroshi with LLM on Clever Cloud](/doc/addons/otoroshi/) + diff --git a/content/changelog/2025/06-04-redis-8.0.2.md b/content/changelog/2025/06-04-redis-8.0.2.md new file mode 100644 index 000000000..c032646a2 --- /dev/null +++ b/content/changelog/2025/06-04-redis-8.0.2.md @@ -0,0 +1,20 @@ +--- +title: Redis 8.0.2 is available (security update) +date: 2025-06-04 +tags: + - addons + - redis +authors: + - name: Aurรฉlien Hรฉbert + link: https://github.com/aurrelhebert + image: https://github.com/aurrelhebert.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Upgrade your database in a snap +excludeSearch: true +--- + +We updated Redisโ„ข to [release 8.0.2](https://github.com/redis/redis/releases/tag/8.0.2) which fixes [CVE-2025-27151](https://nvd.nist.gov/vuln/detail/CVE-2025-27151). It's available for add-ons creation and migration. + +- [Learn more about Redisโ„ข on Clever Cloud](/doc/addons/redis/) diff --git a/content/changelog/2025/06-05-api-tokens-console-tips.md b/content/changelog/2025/06-05-api-tokens-console-tips.md new file mode 100644 index 000000000..a05534d58 --- /dev/null +++ b/content/changelog/2025/06-05-api-tokens-console-tips.md @@ -0,0 +1,37 @@ +--- +title: 'API tokens in Consoleโ€ฆ with API and Clever Tools tips' +date: 2025-06-05 +tags: + - console + - tokens +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Florian Sanders + link: https://github.com/florian-sanders-cc + image: https://github.com/florian-sanders-cc.png?size=40 +description: API tokens and tips everywhere! +excludeSearch: true +--- + +With [Clever Tools 3.12](/changelog/2025/03-07-clever-tools-3.12/), we've introduced a new way to query Clever Cloud's API, with [the API bridge and API tokens](/api/howto/#api-tokens). Starting today, you can create, edit and revoke API tokens directly [from your Clever Cloud profile page](https://console.clever-cloud.com/users/me/api-tokens). + +## API tokens in the Clever Cloud Console + +This interface also shows the token name, description, public ID, creation and expiration date. + +To create an API token, you need to provide: + +- Your current password +- Your 2FA code if active (activate it [here](https://console.clever-cloud.com/users/me/authentication)) + +If you created your Clever Cloud account through the GitHub integration, you'll be asked to set a password first. + +![Manage API tokens in Clever Cloud Console](/images/console-api-tokens.webp) + +## Clever Tools and API tips in the Console + +This interface also introduces a new [Web Component](https://www.clever.cloud/developers/clever-components/) to show Clever Tools commands and API requests related to the page you visit. In the coming weeks, we'll add more of these tips over the Clever Cloud Console. + +![API Tokens API & Clever Tools Tips](/images/console-api-tokens-tips.webp) diff --git a/content/changelog/2025/06-05-mysql-8.0.42-8.4.5.md b/content/changelog/2025/06-05-mysql-8.0.42-8.4.5.md new file mode 100644 index 000000000..d0a247eb9 --- /dev/null +++ b/content/changelog/2025/06-05-mysql-8.0.42-8.4.5.md @@ -0,0 +1,19 @@ +--- +title: MySQL 8.0.42 and 8.4.5 are available +date: 2025-06-05 +tags: + - addons + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Get new features and improvements +excludeSearch: true +--- + +We updated MySQL 8.0 and 8.4 from Percona Server. They're now available for add-ons creation and migration. + +* [Learn more about MySQL on Clever Cloud](/doc/addons/mysql/) +* [Learn more about MySQL 8.0.42](https://docs.percona.com/percona-server/8.0/release-notes/8.0.42-33.html) +* [Learn more about MySQL 8.4.5](https://docs.percona.com/percona-server/8.4/release-notes/8.4.5-5.html) diff --git a/content/changelog/2025/06-05-oauth-tokens-new-interface.md b/content/changelog/2025/06-05-oauth-tokens-new-interface.md new file mode 100644 index 000000000..fc3db4d7e --- /dev/null +++ b/content/changelog/2025/06-05-oauth-tokens-new-interface.md @@ -0,0 +1,24 @@ +--- +title: 'New look for OAuth tokens management' +date: 2025-06-05 +tags: + - console + - oauth +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Florian Sanders + link: https://github.com/florian-sanders-cc + image: https://github.com/florian-sanders-cc.png?size=40 +description: Bye bye old OAuth tokens interface! +excludeSearch: true +--- + +After [renewing OAuth consumers management](/changelog/2025/05-28-oauth-consumer-new-interface/), we've just updated the [OAuth tokens section](https://console.clever-cloud.com/users/me/oauth-tokens) of users profile. It's where you can see applications linked to your Clever Cloud account: Clever Tools, the Console or those linked to other OAuth consumers. You can still see creation and expiration date, last usage, revoke any or all of themโ€ฆ but in a clearer interface. + +We also added a link to Clever Cloud's OAuth tokens documentation. + +- [Learn more about OAuth tokens](/api/howto/#oauth1) + +![New OAuth tokens interface](/images/console-new-oauth-tokens.webp) diff --git a/content/changelog/2025/06-05-web-sessions-console.md b/content/changelog/2025/06-05-web-sessions-console.md new file mode 100644 index 000000000..a2b5364d8 --- /dev/null +++ b/content/changelog/2025/06-05-web-sessions-console.md @@ -0,0 +1,20 @@ +--- +title: 'List and revoke your active Console sessions' +date: 2025-06-05 +tags: + - console + - sessions +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Florian Sanders + link: https://github.com/florian-sanders-cc + image: https://github.com/florian-sanders-cc.png?size=40 +description: More security data from the Console +excludeSearch: true +--- + +There is now a dedicated page [to list web sessions in the Clever Cloud Console](https://console.clever-cloud.com/users/me/session-tokens). It shows all the sessions currently active across your devices and browsers with creation/expiration date, last activity. You can revoke any sessions, except the current one (disconnect from the Console to revoke it). + +![Manage sessions in Clever Cloud Console](/images/console-sessions.webp) diff --git a/content/changelog/2025/06-10-clever-tools-3.13.md b/content/changelog/2025/06-10-clever-tools-3.13.md new file mode 100644 index 000000000..c9fcfd670 --- /dev/null +++ b/content/changelog/2025/06-10-clever-tools-3.13.md @@ -0,0 +1,81 @@ +--- +date: 2025-06-10 +title: 'Clever Tools 3.13: emails, operators, SSH keys, better UX' +tags: + - clever-tools + - cli +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Hubert Sablonniรจre + link: https://github.com/hsablonniere + image: https://github.com/hsablonniere.png?size=40 +description: Manage more things in a better way +excludeSearch: true +--- + +[Clever Tools 3.13](https://github.com/CleverCloud/clever-tools/releases/tag/3.13.0) is available. It includes some bug fixes and a new interface for application management commands. Our goal here is to start making Clever Tools more user-friendly with more useful information, tips and a better look. It paves the way for next major releases. [Let us know what you think](https://github.com/CleverCloud/clever-tools/issues) about it to help us to design the future of Clever Tools. + +The `clever tokens` command is not experimental anymore, as [API tokens are now available](/changelog/2025/06-05-api-tokens-console-tips/) through the Clever Cloud Console. + +![New clever create command](/images/clever-tools-new-create.webp) + +## Operators + +The `operators` experimental feature adds direct commands for services deployed and managed through our Operators, such as Keycloak, Matomo, Metabase and Otoroshi. You can now get useful information about these services once deployed, restart, rebuild or update them, open their dashboard or web management interface, activate features such as Network Groups, etc. + +```bash +clever features enable operators + +clever keycloak get myKeycloak +clever keycloak enable-ng myKeycloak + +clever matomo open webui myMatomo +clever metabase rebuild metabase_id +clever otoroshi version update otoroshi_id +``` + +- [Learn more about Operators commands in Clever Tools](/doc/cli/operators/) + +![Check Metabase Version command](/images/clever-tools-metabase-version-check.webp) + +## Emails and public SSH keys + +Manage your Clever Cloud account's emails and public SSH keys with the new `clever emails` and `clever ssh-keys` commands: + +``` +clever emails +clever ssh-keys -F json + +clever emails add email@example.com +clever emails primary email@example.com +clever ssh-keys add myNewPublicKey ~/.ssh/id_ecdsa.pub + +clever emails remove-all +clever ssh-keys remove-all +``` + +- [Learn more about emails and ssh-keys commands in Clever Tools](/doc/cli/#emails) + +## Application configuration as Clever Task + +You can also use `clever config` to set an application as a [Clever Task](/doc/develop/tasks/) after its creation of get this option configuration: + +``` +clever config get task +clever config set task true +clever config set task false +clever config update --name "My new task name" --enable-task +``` + +- [Learn more about config command in Clever Tools](/doc/cli/applications/configuration/) + +## How to upgrade + +To upgrade Clever Tools, [use your favorite package manager](/doc/cli/install/). For example with `npm`: + +``` +npm update -g clever-tools +clever version +``` diff --git a/content/changelog/2025/06-11-metabase-55.md b/content/changelog/2025/06-11-metabase-55.md new file mode 100644 index 000000000..1db33c095 --- /dev/null +++ b/content/changelog/2025/06-11-metabase-55.md @@ -0,0 +1,33 @@ +--- +title: "Metabase 55 is available" +date: 2025-06-11 +tags: + - addons + - metabase +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Faster, with more features +excludeSearch: true +--- + +The `x.55` branch of Metabase is now available on Clever Cloud. It brings a new visualizer, faster and easier to use, database routing, the new search algorithm as default and many more features. To update, just set `CC_METABASE_VERSION` of the add-on's Java application to `0.55` for the community edition or `1.55` for the enterprise edition (EE). + +You can also use [the new Clever Tools commands](/doc/cli/operators/), introduced in `3.13.0` release: + +```bash +clever features enable operators + +clever metabase version check yourMetabaseNameOrId +clever metabase version update yourMetabaseNameOrId +clever metabase version update yourMetabaseNameOrId 0.55 +``` + +- [Learn more about Metabase 55](https://www.metabase.com/releases/metabase-55) +- [Learn more about Metabase on Clever Cloud](/doc/addons/metabase/) + +{{< youtube id="0wKoZR0zJ6Q" >}} diff --git a/content/changelog/2025/06-17-images-update.md b/content/changelog/2025/06-17-images-update.md new file mode 100644 index 000000000..7d487c97d --- /dev/null +++ b/content/changelog/2025/06-17-images-update.md @@ -0,0 +1,44 @@ +--- +title: "Images update: FrankenPHP 1.7, Docker buildx" +date: 2025-06-17 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: And more new features for runtimes to comeโ€ฆ +excludeSearch: true +--- + +We updated all our images. Deployment is in progress for all our users. + +* **Common:** + * Linux kernel 6.14.11 + * Mise 2025.6.4 +* **Docker:** + * Update to 28.2.2 + * Buildx 0.24.0 +* **FrankenPHP:** + * Update to 1.7.0 (PHP 8.4.8) +* **Go:** + * Update to 1.24.4 +* **Node.js:** + * Bun 1.2.16 +* **Python:** + * Update to 3.13.4 + * Update to 3.12.11 + * Update to 3.11.13 + * Update to 3.10.18 + * Update to 3.9.23 + * uv 0.7.13 + +## Other changes + +- Multiple fixes for logs +- [Varnish support](/doc/develop/varnish/) for FrankenPHP, [upcoming Linux, Static and V runtimes](https://github.com/CleverCloud/Community/discussions/66) +- Astro, Docusaurus, MkDocs autobuild support for [upcoming static runtime](https://github.com/CleverCloud/Community/discussions/66) +- `-x -race` flags are added to `go install` if `CC_TROUBLESHOOT` is set to `true` in Go runtime +- `proxy_fcgi` is now default in PHP with Apache if `CC_CGI_IMPLEMENTATION` environment variable is not set +- Try `buildx` support in Docker by setting `CC_DOCKER_BUILDX` to `true` (it will become the default in some weeks) diff --git a/content/changelog/2025/06-20-keycloak-26.2.5.md b/content/changelog/2025/06-20-keycloak-26.2.5.md new file mode 100644 index 000000000..e2b22315f --- /dev/null +++ b/content/changelog/2025/06-20-keycloak-26.2.5.md @@ -0,0 +1,30 @@ +--- +title: "Keycloak 26.2.5 is available, with two new plugins" +date: 2025-06-20 +tags: + - addons + - keycloak +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: bug fix release +excludeSearch: true +--- + +The release `26.2.5` of Keycloak is available on Clever Cloud which [fixes](https://github.com/keycloak/keycloak/releases/26.2.5) some bugs. Starting with this release, we provide Keycloak with [2fa-email-authenticator](https://github.com/please-openit/keycloak-2fa-email-authenticator) and [Limit user agents](https://github.com/please-openit/keycloak-authenticator-limit-user-agents) plugins. + +To update, just set `CC_KEYCLOAK_VERSION` of the add-on's Java application to `26.2.5` and rebuild it. You can also use [the new Clever Tools commands](/doc/cli/operators/), introduced in `3.13.0` release: + +```bash +clever features enable operators + +clever keycloak version check yourKeycloakNameOrId +clever keycloak version update yourKeycloakNameOrId +clever keycloak version update yourKeycloakNameOrId 26.2.5 +``` + +- [Learn more about Keycloak on Clever Cloud](/doc/addons/keycloak) diff --git a/content/changelog/2025/07-01-images-update.md b/content/changelog/2025/07-01-images-update.md new file mode 100644 index 000000000..8dc2db02b --- /dev/null +++ b/content/changelog/2025/07-01-images-update.md @@ -0,0 +1,60 @@ +--- +title: "Images update: easier Varnish, Redirection.io, uv native support" +date: 2025-07-01 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Last mile before new runtimes public release +excludeSearch: true +--- + +We updated all our images. Deployment is in progress for all our users. + +* **Common:** + * Linux kernel 6.14.11 + * Mise 2025.6.6 + * SQLite 3.50.1 +* **Docker:** + * Update to 28.3 + * Buildx 0.25.0 +* **Node.js:** + * Update to 22.17.0 + * Bun 1.2.17 +* **Python:** + * Update to 3.13.5 + * uv 0.7.17 +* **Rust:** + * Update to 1.88.0 +* **V:** + * Update to 0.4.11 + +## Linux, Static and V runtimes + +- Better V dependencies management +- Better support of Astro in the `static` auto build feature +- `static` runtime auto-build supports Nuxt.js, Storybook, Vitepress and Zola +- If a Mise `build` or `run` task is defined, it's used in build/run phase in `linux` runtime + +These runtimes are in early access, let us know what you think about it, [your suggestions and feedback are welcome](https://github.com/CleverCloud/Community/discussions/66). + +## Preliminary native uv support in Python applications + +`uv` is now natively supported for deploying Python applications on Clever Cloud. Using `uv` bypass all the legacy Python deployment process. There is no mandatory `nginx` server and your application should listen on the port `8080`. Thus, you can use it with Varnish and easy to configure services such as Redirection.io. We'll progressively enhance the `uv` experience on Clever Cloud. + +`uv` native support is still preliminary, let us know what you think about it, [your suggestions and feedback are welcome](https://github.com/CleverCloud/Community/discussions/67). + +- [Learn more about uv](https://docs.astral.sh/uv/) +- [Learn more about Python on Clever Cloud](/doc/applications/python) +- [A ready to deploy Python with uv application](https://github.com/CleverCloud/python-fastapi-uv-example) + +## Other changes + +- `CC_GIT_FULL_CLONE=false` enables shallow cloning (`--depth 1`), it will become the default in some weeks +- `CC_VARNISH_FILE` allows to set a custom location for `varnish.vcl`, relative to your application (for example `/varnish.vcl`) +- Port auto-configuration for `frankenphp` and `static` when a Varnish file is present or set with `CC_VARNISH_FILE` +- Port auto-configuration for `frankenphp` and `static` when [Redirection.io is enabled](/doc/reference/reference-environment-variables/#redirectionio-support) +- You can now disable Mise package manager by setting `CC_DISABLE_MISE` to `true` diff --git a/content/changelog/2025/07-01-ionos-london-region.md b/content/changelog/2025/07-01-ionos-london-region.md new file mode 100644 index 000000000..b7134e292 --- /dev/null +++ b/content/changelog/2025/07-01-ionos-london-region.md @@ -0,0 +1,21 @@ +--- +title: New London region, based on Ionos infrastructure +date: 2025-07-01 +tags: + - addons + - applications + - platform +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: A new European partner, more choices for our customers +excludeSearch: true +--- + +You can now deploy your applications and add-ons in London, England. This region uses `ldn` code within our [API](/api), [Clever Tools](/doc/cli) and various integrations. You can choose it for new or existing services from the [Console](https://console.clever-cloud.com), just adapt your domain configuration. + +The London region was created in collaboration with a new European partner, [Ionos](https://www.ionos.co.uk/). Our teams have installed and are operating Clever Cloud within its infrastructure in order to offer you this new service. + +- [Learn more about our infrastructure and partners](https://www.clever.cloud/infrastructure/) +- [Learn more about domain configuration on Clever Cloud](/doc/administrate/domain-names/#configuring-domain-names-by-region) diff --git a/content/changelog/2025/07-02-js-client-11.0.md b/content/changelog/2025/07-02-js-client-11.0.md new file mode 100644 index 000000000..86d04dfd1 --- /dev/null +++ b/content/changelog/2025/07-02-js-client-11.0.md @@ -0,0 +1,18 @@ +--- +title: 'JS Client 11.0 is available' +date: 2025-07-02 +tags: + - client + - javascript +authors: + - name: Pierre De Soyres + link: https://github.com/pdesoyres-cc + image: https://github.com/pdesoyres-cc.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Some cleaning before big changes +excludeSearch: true +--- + +[Clever Cloud JS client 11.0](https://github.com/CleverCloud/clever-client.js/blob/master/CHANGELOG.md#1101-2025-06-30) is available. It adds API call analysis scripts, uses native WebSocket support and OAuth plaintext instead of HMAC512. Thus, we removed `oauth-1.0a` dependency. Note that if you use the event API, you need Node.js 21+. diff --git a/content/changelog/2025/07-02-terraform-0.10.md b/content/changelog/2025/07-02-terraform-0.10.md new file mode 100644 index 000000000..6165a8b2b --- /dev/null +++ b/content/changelog/2025/07-02-terraform-0.10.md @@ -0,0 +1,20 @@ +--- +title: Terraform provider 0.10.0 is available +description: Network Groups and Pulsar support, PostgreSQL add-on version +date: 2025-07-02 +tags: + - addons + - terraform +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Rรฉmi Collignon-Ducret + link: https://github.com/miton18 + image: https://github.com/miton18.png?size=40 +excludeSearch: true +--- + +The [0.10.0 release](https://github.com/CleverCloud/terraform-provider-clevercloud/releases/tag/v0.10.0) of the Clever Cloud Terraform provider is available. It fixes some bugs, introduces support for [Network Groups](/doc/develop/network-groups/) and [Pulsar](/doc/addons/pulsar/). You can set a version for a [PostgreSQL add-on](/doc/addons/postgresql/). + +* Learn more about [our Terraform provider](https://registry.terraform.io/providers/CleverCloud/clevercloud/latest/docs) diff --git a/content/changelog/2025/07-04-linux-static-v-runtimes.md b/content/changelog/2025/07-04-linux-static-v-runtimes.md new file mode 100644 index 000000000..75ea11349 --- /dev/null +++ b/content/changelog/2025/07-04-linux-static-v-runtimes.md @@ -0,0 +1,26 @@ +--- +title: "New runtimes: Linux, Static and V" +description: Use it, help us to improve +date: 2025-07-04 +tags: + - images + - linux + - static + - v +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +excludeSearch: true +--- + +You can now deploy your applications using the new `linux`, `static` and `v` runtimes on Clever Cloud: +- `linux` is a general purpose runtime that supports any language, and fully takes advantage of the [Mise package manager](https://mise.jdx.dev/) +- `static` is a lightweight runtime for static sites, with auto-build for many static site generators (SSG) +- `v` is a runtime for applications written in the [V programming language](https://vlang.io/) + +As they are new runtimes, help us improve it by reporting any issue or suggestion on the [Clever Cloud Community](https://github.com/CleverCloud/Community/discussions/categories/paas-runtimes). + +* [Learn more about the Linux runtime](/doc/applications/linux/) +* [Learn more about the Static runtime](/doc/applications/static/) +* [Learn more about the V runtime](/doc/applications/v/) diff --git a/content/changelog/2025/07-08-terraform-0.11.md b/content/changelog/2025/07-08-terraform-0.11.md new file mode 100644 index 000000000..2f0c4b3f9 --- /dev/null +++ b/content/changelog/2025/07-08-terraform-0.11.md @@ -0,0 +1,20 @@ +--- +title: Terraform provider 0.11.0 is available +description: Disable PostgreSQL backups +date: 2025-07-08 +tags: + - addons + - terraform +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Rรฉmi Collignon-Ducret + link: https://github.com/miton18 + image: https://github.com/miton18.png?size=40 +excludeSearch: true +--- + +The [0.11.0 release](https://github.com/CleverCloud/terraform-provider-clevercloud/releases/tag/v0.11.0) of the Clever Cloud Terraform provider is available. It allows disabling backups for a [PostgreSQL add-on](/doc/addons/postgresql/). + +* Learn more about [our Terraform provider](https://registry.terraform.io/providers/CleverCloud/clevercloud/latest/docs) diff --git a/content/changelog/2025/07-09-images-update.md b/content/changelog/2025/07-09-images-update.md new file mode 100644 index 000000000..ddea8ce80 --- /dev/null +++ b/content/changelog/2025/07-09-images-update.md @@ -0,0 +1,50 @@ +--- +title: "Images update: FrankenPHP 1.8, Java 24, Storybook auto-build" +date: 2025-07-09 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Welcome Java in the unified image! +excludeSearch: true +--- + +We updated all our images, except PHP with Apache. Deployment is in progress for all our users. + +* **Common:** + * Linux kernel 6.15.5 + * Hugo 0.148.0 + * Mise 2025.7.1 + * SQLite 3.50.2 + * Redis 8.0.3 +* **Docker:** + * Update to 28.3.1 +* **FrankenPHP:** + * Update to 1.8.0 (PHP 8.4.10, Caddy 2.10.0) +* **Java:** + * Now part of the unified image + * Java 24 support + * GraalVM CE 23.0.2 (Java 17) + * GraalVM CE 23.1.2 (Java 21) + * Gradle 8.14.3 + * Maven 3.9.10 +* **Node.js:** + * Bun 1.2.18 +* **Python:** + * uv 0.7.19 + +## FrankenPHP, Linux, Static and V runtimes + +- You can define `build` and `run` commands with `build:` and `run:` targets in a `Makefile` in `linux` runtime +- You can now set `CC_STATIC_AUTOBUILD_OUTDIR` in `static` runtime to specify the output directory for auto-build +- `v install` command is executed in the build phase if a `v.mod` file is present +- Storybook auto-build is now supported in the `static` runtime +- Easier `uv` activation in the `python` runtime +- `APP_FOLDER` support in new runtimes + +## Other changes + +- Authentication to a npm registry is now also supported through the `CC_NPM_BASIC_AUTH` environment variable diff --git a/content/changelog/2025/07-10-redis-8.0.3.md b/content/changelog/2025/07-10-redis-8.0.3.md new file mode 100644 index 000000000..842bbf0c3 --- /dev/null +++ b/content/changelog/2025/07-10-redis-8.0.3.md @@ -0,0 +1,18 @@ +--- +title: Redis 8.0.3 is available, with JSON module +date: 2025-07-10 +tags: + - addons + - redis +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Have fun with structured data +excludeSearch: true +--- + +We updated Redisโ„ข to [release 8.0.3](https://github.com/redis/redis/releases/tag/8.0.3) which fixes [CVE-2025-32023](https://nvd.nist.gov/vuln/detail/CVE-2025-32023) and [CVE-2025-48367](https://nvd.nist.gov/vuln/detail/CVE-2025-48367). It's available for add-ons creation and migration. Starting this release, Redisโ„ข on Clever Cloud comes with the JSON module enabled. + +- [Learn more about Redisโ„ข on Clever Cloud](/doc/addons/redis/) +- [Learn more about Redisโ„ข JSON data type](https://redis.io/docs/latest/develop/data-types/json/) diff --git a/content/changelog/2025/07-16-otoroshi-17.4.md b/content/changelog/2025/07-16-otoroshi-17.4.md new file mode 100644 index 000000000..2c8ed4016 --- /dev/null +++ b/content/changelog/2025/07-16-otoroshi-17.4.md @@ -0,0 +1,32 @@ +--- +title: Otoroshi 17.4 with JSON/Markdown documentation generator for Workflows +description: Do more with workflows in Otoroshi, and export usage data easily +date: 2025-07-16 +tags: + - addons + - otoroshi +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +excludeSearch: true +--- + +[Otoroshi v17.4](https://github.com/MAIF/otoroshi/releases/tag/v17.4.0) is available with multiple improvements and bug fixes. It brings operators, JSON/Markdown documentation generator and a data exporter to Workflows. It comes with [LLM extension 0.0.49](https://github.com/cloud-apim/otoroshi-llm-extension/releases/tag/0.0.49). + +To update just set `CC_OTOROSHI_VERSION` of the add-on's Java application to `v17.4.0_1752074416` and rebuild it. You can also use [the new Clever Tools commands](/doc/cli/operators/), introduced in `3.13.0` release: + +```bash +clever features enable operators + +clever otoroshi version check yourOtoroshiNameOrId +clever otoroshi version update yourOtoroshiNameOrId +clever otoroshi version update yourOtoroshiNameOrId v17.4.0_1752074416 +``` + +- [Learn more about Otoroshi Workflows](https://maif.github.io/otoroshi/manual/topics/workflows.html) +- [Learn more about Otoroshi with LLM on Clever Cloud](/doc/addons/otoroshi/) + diff --git a/content/changelog/2025/07-17-request-flow.md b/content/changelog/2025/07-17-request-flow.md new file mode 100644 index 000000000..557959c85 --- /dev/null +++ b/content/changelog/2025/07-17-request-flow.md @@ -0,0 +1,53 @@ +--- +title: 'Introducing Request Flow: use Redirection.io, Varnish, reverse proxy with no effort' +date: 2025-07-17 +tags: + - runtimes + - configuration +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Ease your reverse proxy configuration more and more +excludeSearch: true +--- + +Clever Cloud exists to ease developers' life. For many years, you can use [Varnish in front of your application](/doc/develop/varnish/) just by adding a `varnish.vcl` file in your repository. For some months, you can also use [Redirection.io](/doc/reference/reference-environment-variables/#use-redirectionio-as-a-proxy) as a reverse proxy to handle redirects, rewrites, and more. In our latest release, we've gone a step further with Request Flow, available in new runtimes first : + +- `frankenphp` +- `linux` +- `python` with `uv` +- `static` +- `v` + +## Easier Redirection.io and Varnish activation + +First, we've removed some barriers to use Redirection.io and Varnish: +- To setup Varnish add a `clevercloud/varnish.vcl` file or define it with `CC_VARNISH_FILE` environment variable +- To setup Redirection.io, `CC_REDIRECTIONIO_PROJECT_KEY` is now the only required environment variable + +## Request Flow: automatic port configuration, easy ordering + +In recent runtimes where Clever Cloud manage the port configuration (`frankenphp`, `static`), nothing else is needed. By default, Clever Cloud will configure the reverse proxy to listen on port `8080` and redirect to port `9000`. So in runtimes where the user controls the port configuration, the application must listen on port `9000` once Redirection.io or Varnish is activated. + +If both are activated: +- Varnish is exposed first: listens on port `8080`, forward to Redirection.io on port `8081` +- Redirection.io listens on port `8081`, forward to the application on port `9000` + +If you prefer to invert the order and expose Redirection.io first, set `CC_REQUEST_FLOW` environment variable to `redirectionio,varnish`. + +## Use any reverse proxy with Request Flow + +Last but not least, you can use any other middleware in the Request Flow. Just add `custom` value in the `CC_REQUEST_FLOW` chain and ports will be automatically configured accordingly. For example, if you set `CC_REQUEST_FLOW=redirectionio,custom,varnish`: + +- Redirection.io listens on port `8080`, forward to custom middleware on port `8081` +- Custom middleware must listen on port `8081`, forward to Varnish on port `8082` +- Varnish listens on port `8082`, forward to the application on port `9000` + +You can define the custom middleware command to start with `CC_REQUEST_FLOW_CUSTOM` environment variable, for example: + +```bash +CC_REQUEST_FLOW_CUSTOM="./custom_reverse_proxy --listen @@LISTEN_PORT@@ --forward @@FORWARD_PORT@@" +``` + +As Request Flow is a new feature on Clever Cloud, feel free to [give us feedback](https://github.com/CleverCloud/Community/discussions/categories/paas-runtimes). diff --git a/content/changelog/2025/07-28-keycloak-metabase-otoroshi-version-creation.md b/content/changelog/2025/07-28-keycloak-metabase-otoroshi-version-creation.md new file mode 100644 index 000000000..f04522cec --- /dev/null +++ b/content/changelog/2025/07-28-keycloak-metabase-otoroshi-version-creation.md @@ -0,0 +1,24 @@ +--- +title: Set Keycloak, Metabase and Otoroshi version at creation +description: More flexibility, and soon a great dashboard +date: 2025-07-28 +tags: + - operators + - version +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +excludeSearch: true +--- + +You can now set the version of Keycloak, Metabase and Otoroshi at creation time, from a list of supported and tested releases. It works from the [Clever Cloud Console](https://console.clever-cloud.com/), [API](/api) and [Clever Tools](/doc/cli). For example: + +```bash +clever addon create keycloak --addon-version 26.2.5 myKeycloak +``` + +If you don't provide a valid version, supported values are printed in the error message. diff --git a/content/changelog/2025/07-29-clever-tools-3.14.md b/content/changelog/2025/07-29-clever-tools-3.14.md new file mode 100644 index 000000000..afcef40fc --- /dev/null +++ b/content/changelog/2025/07-29-clever-tools-3.14.md @@ -0,0 +1,36 @@ +--- +date: 2025-07-29 +title: 'Clever Tools 3.14: call it with npx' +tags: + - clever-tools + - cli +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Hubert Sablonniรจre + link: https://github.com/hsablonniere + image: https://github.com/hsablonniere.png?size=40 +description: One-off usages are now simpler +excludeSearch: true +--- + +[Clever Tools 3.14](https://github.com/CleverCloud/clever-tools/releases/tag/3.14.0) is available. It includes some bug fixes for operators options and `service` command. It also introduces `clever-tools` as an available binary after installation. + +This allows you to use Clever Tools directly with `npx` or `npm exec`, which is useful in scripts or CI/CD pipelines: + +```bash +# Set/Export CLEVER_TOKEN and CLEVER_SECRET to login with a given account +# --yes is used to skip the interactive prompts +npx --yes clever-tools@latest version +npm exec -- clever-tools@3.14 profile --format json +``` + +## How to upgrade + +To upgrade Clever Tools, [use your favorite package manager](/doc/cli/install/). For example with `npm`: + +``` +npm update -g clever-tools +clever version +``` diff --git a/content/changelog/2025/07-29-images-update.md b/content/changelog/2025/07-29-images-update.md new file mode 100644 index 000000000..9daa404f3 --- /dev/null +++ b/content/changelog/2025/07-29-images-update.md @@ -0,0 +1,54 @@ +--- +title: "Images update: FrankenPHP 1.9, Static Web Server 2.38, uv 0.8" +date: 2025-07-29 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: And soon native pnpm, yarn-berry support! +excludeSearch: true +--- + +We updated all our images, except Node.js & Bun. Deployment is in progress for all our users. + +* **Common:** + * Linux kernel 6.15.8 + * Mise 2025.7.29 + * Tailscale 1.86.0 +* **Docker:** + * Update to 28.3.2 + * Buildx 0.26.1 +* **Elixir:** + * Update to 27.3.4.2 + * Update to 28.0.2 +* **Go:** + * Update to 1.24.5 +* **Java:** + * Update to 8.0.462 + * Update to 11.0.28 + * Update to 17.0.16 + * Update to 21.0.8 + * Update to 24.0.2 + * Maven 3.9.11 +* **FrankenPHP:** + * Update to 1.9.0 (PHP 8.4.10, Caddy v2.10.0) +* **PHP:** + * Update to 8.1.33 + * Update to 8.2.29 + * Update to 8.3.23 + * Update to 8.4.10 + * Apache 2.4.64 + * Composer 2.8.10 +* **Python:** + * uv 0.8.3 +* **Ruby:** + * Update to 3.2.9 + * Update to 3.3.9 + * Update to 3.4.5 +* **Static:** + * Hugo 0.148.2 + * Static Web Server 2.38.0 + * Zola 0.21.0 diff --git a/content/changelog/2025/07-29-terraform-1.0.md b/content/changelog/2025/07-29-terraform-1.0.md new file mode 100644 index 000000000..e031d2474 --- /dev/null +++ b/content/changelog/2025/07-29-terraform-1.0.md @@ -0,0 +1,20 @@ +--- +title: Terraform provider 1.0.0 is available +description: Rust and real IDs +date: 2025-07-29 +tags: + - addons + - terraform +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Rรฉmi Collignon-Ducret + link: https://github.com/miton18 + image: https://github.com/miton18.png?size=40 +excludeSearch: true +--- + +The [1.0.0 release](https://github.com/CleverCloud/terraform-provider-clevercloud/releases/tag/v1.0.0) of the Clever Cloud Terraform provider is available. It fixes some bugs, supports [Rust runtime](/doc/applications/rust/) and uses real ID instead of add-on ID for add-ons. + +* Learn more about [our Terraform provider](https://registry.terraform.io/providers/CleverCloud/clevercloud/latest/docs) diff --git a/content/changelog/2025/07-31-keycloak-26.3.2.md b/content/changelog/2025/07-31-keycloak-26.3.2.md new file mode 100644 index 000000000..110a5f431 --- /dev/null +++ b/content/changelog/2025/07-31-keycloak-26.3.2.md @@ -0,0 +1,30 @@ +--- +title: Keycloak 26.3.2 is available, including optimizations and new features +date: 2025-07-31 +tags: + - addons + - keycloak +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: with lots of new features +excludeSearch: true +--- + +[The release 26.3.2](https://github.com/keycloak/keycloak/releases/26.3.2) of Keycloak is available on Clever Cloud. The `26.3` branch [brings](https://github.com/keycloak/keycloak/releases/26.3.0) lots of new features, enhancements and bug fixes. We fine tuned it, adding a conditional IP range-based authentication and dynamic cache sizing that automatically scales based on instance size and user count in database. + +To update, just set `CC_KEYCLOAK_VERSION` of the add-on's Java application to `26.3.2` and rebuild it. You can also use [the new Clever Tools commands](/doc/cli/operators/), introduced in `3.13.0` release: + +```bash +clever features enable operators + +clever keycloak version check yourKeycloakNameOrId +clever keycloak version update yourKeycloakNameOrId +clever keycloak version update yourKeycloakNameOrId 26.3.2 +``` + +- [Learn more about Keycloak on Clever Cloud](/doc/addons/keycloak) diff --git a/content/changelog/2025/08-07-images-update.md b/content/changelog/2025/08-07-images-update.md new file mode 100644 index 000000000..d4303fba0 --- /dev/null +++ b/content/changelog/2025/08-07-images-update.md @@ -0,0 +1,32 @@ +--- +title: "Images update: .NET 9.0, Mise 2025.8" +date: 2025-08-07 +tags: + - images + - update +authors: + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: And a great surprise for Node.js users, stay tuned! +excludeSearch: true +--- + +We updated all our images. Deployment is in progress for all our users. + +* **Common:** + * Linux kernel 6.15.9 + * Mise 2025.8.4 + * SQLite 3.50.3 + * Tailscale 1.86.2 +* **.NET:** + * Update to 9.0.108 +* **Docker:** + * Update to 28.3.3 +* **Node.js & Bun:** + * Bun 1.2.19 + * Node.js 22.18.0 (npm 10.9.3) +* **Python:** + * uv 0.8.4 + +In the [.NET runtime](/doc/applications/dotnet), you can now use `CC_DOTNET_VERSION=9.0`. diff --git a/content/changelog/2025/08-08-metabase-56.md b/content/changelog/2025/08-08-metabase-56.md new file mode 100644 index 000000000..42a1494b7 --- /dev/null +++ b/content/changelog/2025/08-08-metabase-56.md @@ -0,0 +1,33 @@ +--- +title: "Metabase 56 is available" +date: 2025-08-08 +tags: + - addons + - metabase +authors: + - name: Sรฉbastien Allemand + link: https://github.com/allemas + image: https://github.com/allemas.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 +description: Time granularity parameters, multiple values selection, Joins in custom expressions, Dashboard filters, and more +excludeSearch: true +--- + +The `x.56` branch of Metabase is now available on Clever Cloud. It brings [time granularity parameters](https://www.metabase.com/docs/master/questions/native-editor/time-grouping-parameters), [multiple values selection](https://www.metabase.com/docs/master/questions/native-editor/basic-sql-parameters#basic-variable-that-allows-people-to-select-multiple-values) in basic SQL variables, [joins in custom expressions](https://www.metabase.com/docs/master/questions/query-builder/join#joins-with-custom-expressions), [dashboard filters](https://www.metabase.com/docs/latest/dashboards/filters) in the dashboards' body, [more ways](https://www.notion.so/metabase/Public-Customer-Docs-for-New-Iframe-Embedding-21e69354c90180228015f4daa5ce80fd) to embed dashboards with JavaScript ` +{{ end }} diff --git a/layouts/_default/list.md b/layouts/_default/list.md new file mode 100644 index 000000000..cef9ddf9a --- /dev/null +++ b/layouts/_default/list.md @@ -0,0 +1 @@ +{{ .Content | transform.HTMLToMarkdown }} diff --git a/layouts/_default/single.md b/layouts/_default/single.md new file mode 100644 index 000000000..cef9ddf9a --- /dev/null +++ b/layouts/_default/single.md @@ -0,0 +1 @@ +{{ .Content | transform.HTMLToMarkdown }} diff --git a/layouts/changelog/list.html b/layouts/changelog/list.html new file mode 100644 index 000000000..980000851 --- /dev/null +++ b/layouts/changelog/list.html @@ -0,0 +1,65 @@ +{{ define "main" }} + {{- $newFeature := (T "newFeature") | default "New" -}} + {{- $readMore := (T "readMore") | default "Read more โ†’" -}} +
+ {{ partial "sidebar.html" (dict "context" . "disableSidebar" true "displayPlaceholder" true) }} +
+
+
+ {{ if .Title }}

{{ .Title }}

{{ end }} +
+ {{ .Content }} +
+ {{- $pages := partial "utils/sort-pages" (dict "page" . "by" site.Params.blog.list.sortBy "order" site.Params.blog.list.sortOrder) -}} + {{- $pagerSize := site.Params.blog.list.pagerSize | default 10 -}} + {{- $paginator := .Paginate $pages -}} + {{- range $paginator.Pages.GroupByDate "January, 2006" }} +
+

+ + {{- partial "utils/icon.html" (dict "name" "clock" "attributes" "height=24") -}} + + {{ .Key }} +

+ {{ range .Pages }} +
+

+ + + {{ .Title }} + {{ if in .Params.categories "new" }} {{/* Show a label "new" if category is set to "new"*/}} + + {{- $newFeature -}} + + {{- end -}} + +

+ {{/* Show date */}} + {{ .Date | time.Format "2006-01-02" }} + + {{- if site.Params.blog.list.displayTags -}} {{/* Show tags */}} + {{ with .Params.tags }} + + {{- range . }}#{{ . }}{{ end -}} + + {{ end -}} + {{- end -}} +
+ {{ end }} +
+ {{ end }} + {{- if gt $paginator.TotalPages 1 -}} + {{ partial "components/blog-pager.html" $paginator }} + {{- end -}} +
+ + +
+
+{{- end -}} diff --git a/layouts/changelog/single.html b/layouts/changelog/single.html new file mode 100644 index 000000000..bfc300bb6 --- /dev/null +++ b/layouts/changelog/single.html @@ -0,0 +1,50 @@ +{{ define "main" }} +
+ {{ partial "sidebar.html" (dict "context" . "disableSidebar" true "displayPlaceholder" false) }} + {{ partial "toc.html" . }} +
+
+ {{ partial "breadcrumb.html" (dict "page" . "enable" true) }} + {{ if .Title }}

{{ .Title }}

{{ end }} +
+ {{- with $date := .Date }}{{ partial "utils/format-date" $date }}{{ end -}} + {{- $lazyLoading := site.Params.enableImageLazyLoading | default true -}} + {{ if and .Date .Params.authors }}ยท{{ end -}} + {{- with $.Params.authors -}} + {{- range $i, $author := . -}} + {{- if reflect.IsMap $author -}} + {{- if and $i (not $author.image) }},{{ end -}} + + {{- with $image := $author.image }} + {{- $isLocal := not (urls.Parse $image).Scheme -}} + {{- $startsWithSlash := hasPrefix $image "/" -}} + {{- if and $isLocal $startsWithSlash }} + {{- $image = (relURL (strings.TrimPrefix "/" $image)) -}} + {{ end -}} + {{ $author.name }} + {{ end -}} +
{{ $author.name }}
+
+ {{- else -}} + {{- if $i }},{{ end -}}{{ $author }} + {{- end -}} + {{- end -}} + {{- end -}} +
+
+ {{ .Content }} +
+ {{- partial "components/last-updated.html" . -}} + {{- if (site.Params.blog.article.displayPagination | default true) -}} + {{- .Scratch.Set "reversePagination" (.Params.reversePagination | default true) -}} + {{- partial "components/pager.html" . -}} + {{ end }} + {{- partial "components/comments.html" . -}} +
+
+
+{{ end }} diff --git a/layouts/docs/single.html b/layouts/docs/single.html new file mode 100644 index 000000000..4a60b0c77 --- /dev/null +++ b/layouts/docs/single.html @@ -0,0 +1,19 @@ +{{ define "main" }} +
+ {{ partial "sidebar.html" (dict "context" .) }} + {{ partial "toc.html" . }} +
+
+ {{ partial "breadcrumb.html" (dict "page" . "enable" true) }} +
+ {{ if .Title }}

{{ .Title }}

{{ end }} + {{ .Content }} +
+ {{ partial "components/last-updated.html" . }} + {{ partial "components/feedback.html" . }} + {{ partial "components/pager.html" . }} + {{ partial "components/comments.html" . }} +
+
+
+{{ end }} diff --git a/layouts/hextra-home.llms.txt b/layouts/hextra-home.llms.txt new file mode 100644 index 000000000..7340ca79b --- /dev/null +++ b/layouts/hextra-home.llms.txt @@ -0,0 +1,52 @@ +{{- if eq .Kind "home" -}} +# {{ .Site.Title }} + +> {{ .Site.Params.description }} + +{{- $mainSections := where .Site.Sections "Type" "docs" -}} +{{- $sortedSections := sort $mainSections "Title" }} +{{- range $sortedSections }} +{{- if and (not .Params.llmsTxtOptional) (gt (len .Pages) 0) }} +{{- $allSections := slice . -}} +{{- range .Sections -}} +{{- if not .Params.llmsTxtOptional -}} +{{- $allSections = $allSections | append . -}} +{{- end -}} +{{- end -}} +{{- $sortedAllSections := sort $allSections "Title" -}} +{{- range $sortedAllSections }} + +{{- if and (gt (len .Pages) 0) (not (strings.Contains .Title "Postmortem" )) }} + +## {{ .Title }} +{{- $pages := sort .Pages "Title" "asc" }} +{{- range $pages }} +{{- if not (strings.Contains .RelPermalink "/api/v2") }} +- [{{ .Title }}](https://www.clever.cloud{{ .RelPermalink }}index.html.md){{ with .Description }}: {{ . }}{{ end }} +{{- end }} +{{- end }} +{{- end }} +{{- end }} +{{- end }} +{{- end }} + +## Optional +{{- range $mainSections }} +{{- if .Params.llmsTxtOptional }} +{{- $pages := sort .Pages "Title" "asc" }} +{{- range $pages }} +- [{{ .Title }}](https://www.clever.cloud{{ .RelPermalink }}index.html.md){{ with .Description }}: {{ . }}{{ end }} +{{- end }} +{{- end }} +{{- range .Sections }} +{{- if .Params.llmsTxtOptional }} +{{- $pages := sort .Pages "Title" "asc" }} +{{- range $pages }} +- [{{ .Title }}]({{ .RelPermalink }}index.html.md){{ with .Description }}: {{ . }}{{ end }} +{{- end }} +{{- end }} +{{- end }} +{{- end }} +{{- else -}} +{{- .RawContent | .Page.RenderString -}} +{{- end -}} diff --git a/layouts/openapi/baseof.html b/layouts/openapi/baseof.html new file mode 100644 index 000000000..7c04b27e6 --- /dev/null +++ b/layouts/openapi/baseof.html @@ -0,0 +1,119 @@ + + + + + + + {{- $noindex := .Params.noindex | default false -}} + {{ if and (hugo.IsProduction) (not $noindex) -}} + + {{ else -}} + + {{ end -}} + {{ partialCached "favicons.html" . -}} + + {{- if .IsHome -}} + {{ .Site.Title -}} + {{ else -}} + {{ with .Title }}{{ . }} โ€“ {{ end -}} + {{ .Site.Title -}} + {{ end -}} + + + + {{- with .Params.canonical -}} + + {{- else -}} + + {{- end -}} + + {{- partial "opengraph.html" . -}} + {{- partial "schema.html" . -}} + {{- partial "twitter_cards.html" . -}} + + {{- $mainCss := resources.Get "css/compiled/main.css" -}} + {{- $customCss := resources.Get "css/custom.css" -}} + {{- $variablesCss := resources.Get "css/variables.css" | resources.ExecuteAsTemplate "css/variables.css" . -}} + + {{- /* Production build */ -}} + {{- if hugo.IsProduction }} + {{- $styles := slice $variablesCss $mainCss $customCss | resources.Concat "css/compiled/main.css" | minify | + fingerprint }} + + + + {{- /* Theme development mode (non-production + theme environment) */ -}} + {{- else if eq hugo.Environment "theme" }} + {{- $devStyles := resources.Get "css/styles.css" | postCSS (dict "inlineImports" true) }} + + + + + {{- /* User local development */ -}} + {{- else }} + {{- $styles := resources.Get "css/compiled/main.css" -}} + + + + {{- end }} + + + + + {{ $cssUrl := .Params.swagger.cssUrl }} + {{ if $cssUrl }} + + {{ end }} + + {{ partial "components/analytics/analytics.html" . }} + + + + + + + {{ $noop := .WordCount -}} + {{- $engine := site.Params.math.engine | default "katex" -}} + {{ if and (.Page.Store.Get "hasMath") (eq $engine "katex") -}} + {{ partialCached "scripts/katex.html" . -}} + {{ else if and (.Page.Store.Get "hasMath") (eq $engine "mathjax") -}} + {{ partialCached "scripts/mathjax.html" . -}} + {{ end -}} + + {{ partial "utils/page-width-override.html" . }} + {{ partial "custom/head-end.html" . -}} + + + + {{- partial "navbar.html" . -}} + {{- block "main" . }}{{ end -}} + {{- if or (eq .Site.Params.footer.enable nil) (.Site.Params.footer.enable) }} + {{ partial "footer.html" . }} + {{ end }} + {{ partial "scripts.html" . }} + + + diff --git a/layouts/openapi/single.html b/layouts/openapi/single.html new file mode 100644 index 000000000..14fa870bd --- /dev/null +++ b/layouts/openapi/single.html @@ -0,0 +1,38 @@ +{{ define "main" }} +
+
+
+ + + + + +{{ end }} diff --git a/layouts/partials/components/feedback.html b/layouts/partials/components/feedback.html new file mode 100644 index 000000000..ad10d0030 --- /dev/null +++ b/layouts/partials/components/feedback.html @@ -0,0 +1,42 @@ +
+

Did this documentation help you ?

+
+

+ + +

+

+ + + + \ No newline at end of file diff --git a/layouts/shortcodes/callout.html b/layouts/shortcodes/callout.html new file mode 100644 index 000000000..80c37256a --- /dev/null +++ b/layouts/shortcodes/callout.html @@ -0,0 +1,37 @@ +{{ $calloutEmojiDict := dict "info" "โ„น๏ธ" "warning" "โš ๏ธ" "error" "๐Ÿšซ" }} +{{ $type := .Get "type" | default "default" }} +{{/* If emoji is not set, use the emoji from dict */}} +{{ $emoji := .Get "emoji" }} +{{ if eq $emoji "" }} + {{ $emoji = index $calloutEmojiDict $type }} +{{ end }} +{{/* Also allow using "icon" */}} +{{ $icon := .Get "icon" }} + +{{ $defaultClass := "callout hx:border-gray-100 hx:bg-gray-100 hx:text-gray-800 hx:dark:border-blue-200/30 hx:dark:bg-neutral-800 hx:dark:text-blue-200"}} +{{ $infoClass := "hx:border-blue-200 hx:bg-blue-100 hx:text-blue-900 hx:dark:border-blue-200/30 hx:dark:bg-blue-900/30 hx:dark:text-blue-200" }} +{{ $warningClass := "hx:border-yellow-100 hx:bg-yellow-50 hx:text-yellow-900 hx:dark:border-yellow-200/30 hx:dark:bg-yellow-700/30 hx:dark:text-yellow-200" }} +{{ $errorClass := "hx:border-red-200 hx:bg-red-100 hx:text-red-900 hx:dark:border-red-200/30 hx:dark:bg-red-900/30 hx:dark:text-red-200" }} + +{{ $class := cond (eq $type "info") $infoClass (cond (eq $type "warning") $warningClass (cond (eq $type "error") $errorClass $defaultClass)) }} + + +
+
+ {{- with $emoji -}} +
+ {{ . }} +
+ {{- else -}} + {{- with $icon }} + {{ partial "utils/icon.html" (dict "name" . "attributes" `height=1.2em class="hx:inline-block hx:align-middle"`) -}} + {{- end -}} + {{- end -}} +
+ +
+
+ {{ .InnerDeindent | markdownify }} +
+
+
\ No newline at end of file diff --git a/layouts/shortcodes/content-raw.html b/layouts/shortcodes/content-raw.html new file mode 100644 index 000000000..578bea842 --- /dev/null +++ b/layouts/shortcodes/content-raw.html @@ -0,0 +1,9 @@ +{{- $file := .Get 0 -}} +{{- if $file -}} + {{- $content := readFile (printf "shared/%s.md" $file) | safeHTML -}} + {{- if $content -}} + {{- .Page.RenderString $content -}} + {{- else -}} + {{- warnf "Content not found: %s" $file -}} + {{- end -}} +{{- end -}} diff --git a/layouts/shortcodes/content.html b/layouts/shortcodes/content.html new file mode 100644 index 000000000..4600ad743 --- /dev/null +++ b/layouts/shortcodes/content.html @@ -0,0 +1,9 @@ +{{- $file := .Get 0 -}} +{{- if $file -}} + {{- $content := readFile (printf "shared/%s.md" $file) | safeHTML -}} + {{- if $content -}} + {{- $content -}} + {{- else -}} + {{- warnf "Content not found: %s" $file -}} + {{- end -}} +{{- end -}} diff --git a/layouts/shortcodes/hero-button-primary.html b/layouts/shortcodes/hero-button-primary.html new file mode 100644 index 000000000..0a835a0a8 --- /dev/null +++ b/layouts/shortcodes/hero-button-primary.html @@ -0,0 +1,15 @@ +{{- $link := .Get "link" -}} +{{- $text := .Get "text" -}} +{{- $style := .Get "style" -}} + +{{- $external := hasPrefix $link "http" -}} +{{- $href := cond (hasPrefix $link "/") ($link | relURL) $link -}} + + + {{- $text -}} + \ No newline at end of file diff --git a/layouts/shortcodes/hero-button-secondary.html b/layouts/shortcodes/hero-button-secondary.html new file mode 100644 index 000000000..1f684db8f --- /dev/null +++ b/layouts/shortcodes/hero-button-secondary.html @@ -0,0 +1,15 @@ +{{- $link := .Get "link" -}} +{{- $text := .Get "text" -}} +{{- $style := .Get "style" -}} + +{{- $external := hasPrefix $link "http" -}} +{{- $href := cond (hasPrefix $link "/") ($link | relURL) $link -}} + + + {{- $text -}} + \ No newline at end of file diff --git a/layouts/shortcodes/imgproc.html b/layouts/shortcodes/imgproc.html new file mode 100644 index 000000000..37e0e181b --- /dev/null +++ b/layouts/shortcodes/imgproc.html @@ -0,0 +1,60 @@ +{{- $context := . -}} +{{- $caption := .Get "caption" -}} +{{- $image := .Get "image" -}} +{{- $width := 0 -}} +{{- $height := 0 -}} +{{- $imageStyle := .Get "imageStyle" -}} + +{{/* Image processing options */}} +{{- $method := .Get "method" | default "Resize" | humanize -}} +{{- $options := .Get "options" | default "900x webp q95" -}} + +{{- if and $image (not (urls.Parse $image).Scheme) -}} + {{/* Process images in assets */}} + {{- with resources.Get $image -}} + {{- $processed := "" -}} + {{- if eq $method "Resize" -}} + {{- $processed = (.Resize $options) -}} + {{- else if eq $method "Fit" -}} + {{- $processed = (.Fit $options) -}} + {{- else if eq $method "Fill" -}} + {{- $processed = (.Fill $options) -}} + {{- else if eq $method "Crop" -}} + {{- $processed = (.Crop $options) -}} + {{- else -}} + {{- errorf "Invalid image processing command: Must be one of Crop, Fit, Fill or Resize." -}} + {{- end -}} + {{- $width = $processed.Width -}} + {{- $height = $processed.Height -}} + {{- $image = $processed.RelPermalink -}} + {{- else -}} + {{/* Otherwise, use relative link of the image */}} + {{- if hasPrefix $image "/" -}} + {{- $image = relURL (strings.TrimPrefix "/" $image) -}} + {{- end -}} + {{- end -}} +{{- end -}} + + + + +{{- $padding := "p-4" -}} +{{- with $caption -}} + {{- $padding = "pt-4 px-4" -}} +{{- end -}} + +{{- with $caption -}} +
{{- $caption | markdownify -}}
+{{- end -}} + +
\ No newline at end of file diff --git a/layouts/shortcodes/runtime_version.html b/layouts/shortcodes/runtime_version.html new file mode 100644 index 000000000..084945473 --- /dev/null +++ b/layouts/shortcodes/runtime_version.html @@ -0,0 +1 @@ +{{ $software := .Get 0 }}{{ $key := or (.Get 1) "default" }}{{ with index .Site.Data.runtime_versions $software }}{{ with index . $key }}{{ index . 0 }}{{ end }}{{ end }} \ No newline at end of file diff --git a/layouts/shortcodes/runtimes_versions.html b/layouts/shortcodes/runtimes_versions.html new file mode 100644 index 000000000..beea16c45 --- /dev/null +++ b/layouts/shortcodes/runtimes_versions.html @@ -0,0 +1,50 @@ +{{ $software := or (.Get 0) }} +{{ $version_list := .Site.Data.runtime_versions }} + +{{ with index $version_list $software }} + {{ $default := .default | default (slice) }} + {{ $accepted := .accepted | default (slice) }} + {{ $default_len := len $default }} + {{ $accepted_len := len $accepted }} + {{ $max_len := $default_len }} + {{ if gt $accepted_len $default_len }} + {{ $max_len = $accepted_len }} + {{ end }} + + + + + {{ if $default_len }} + + {{ end }} + {{ if $accepted_len }} + + {{ end }} + + + + {{ range $i := seq 0 (sub $max_len 1) }} + + {{ if $default_len }} + + {{ end }} + {{ if $accepted_len }} + + {{ end }} + + {{ end }} + +
Default VersionAccepted Versions
+ {{ with index $default $i }} + {{ . }} + {{ else }} + {{ end }} + + {{ with index $accepted $i }} + {{ . }} + {{ else }} + + {{ end }} +
+

The end-of-life (EOL) versions are marked as such.

+{{ end }} diff --git a/layouts/shortcodes/software_versions_shared_dedicated.html b/layouts/shortcodes/software_versions_shared_dedicated.html new file mode 100644 index 000000000..448e93013 --- /dev/null +++ b/layouts/shortcodes/software_versions_shared_dedicated.html @@ -0,0 +1,38 @@ +{{ $software := or (.Get 0) }} +{{ $version_list := .Site.Data.software_versions_shared_dedicated }} +{{ $software_versions := index $version_list $software }} +{{ $has_dev := false }} + +{{ if $software_versions.dev }} + {{ $has_dev = true }} +{{ end }} + + + + + {{ if $has_dev }} + + {{ end }} + + + + {{ range $index, $dedicated_version := $software_versions.dedicated }} + + + {{ if $has_dev }} + + {{ end }} + + {{ end }} + +
DedicatedDev
{{ $dedicated_version }} + {{ with index $software_versions.dev $index }} + {{ . }} + {{ else }} + + {{ end }} +
+{{ if $has_dev }} + {{ $.Page.RenderString "{{< callout type=\"warning\">}} DEV plan is free, for testing purposes only. It has lower performances, no backups, extensions nor SLA. You can find more info [in the FAQ](/doc/find-help/faq/) {{< /callout >}}" | safeHTML }} +{{ end }} + diff --git a/layouts/shortcodes/tooltip.html b/layouts/shortcodes/tooltip.html new file mode 100644 index 000000000..807e5e763 --- /dev/null +++ b/layouts/shortcodes/tooltip.html @@ -0,0 +1,21 @@ +{{$title := .Get "title" }} +{{- if not $title -}} +{{- errorf "missing tooltip title" -}} +{{- end -}} +{{ .Scratch.Set "title" $title }} +{{ $def := index .Site.Data.tooltips (.Scratch.Get "title") }} + +{{- if not $def -}} +{{- errorf "%s not in tooltips" $title -}} +{{- end -}} + + +{{ if $.Site.Params.Debug }} +
+ {{ < tooltip title="{{$title}}" > }}{{ .Inner }}{{ < /tooltip > }} +
+{{ end }} +{{ .Inner }} +{{ if $.Site.Params.Debug }} +
+{{ end }} diff --git a/layouts/sitemap.xml b/layouts/sitemap.xml new file mode 100644 index 000000000..d99a899ba --- /dev/null +++ b/layouts/sitemap.xml @@ -0,0 +1,27 @@ +{{ printf "" | safeHTML }} + + {{ range .Data.Pages }} + {{- if not (or + (hasPrefix .RelPermalink "/developers/tags") + (hasPrefix .RelPermalink "/developers/categories") + ) -}} + + {{ .Permalink }}{{ if not .Lastmod.IsZero }} + {{ safeHTML ( .Lastmod.Format "2006-01-02T15:04:05-07:00" ) }}{{ end }}{{ with .Sitemap.ChangeFreq }} + {{ . }}{{ end }}{{ if ge .Sitemap.Priority 0.0 }} + {{ .Sitemap.Priority }}{{ end }}{{ if .IsTranslated }}{{ range .Translations }} + {{ end }} + {{ end }} + + {{- end -}} + {{ end }} + diff --git a/runtimes/docker/docker.md b/runtimes/docker/docker.md deleted file mode 100644 index 635b1975e..000000000 --- a/runtimes/docker/docker.md +++ /dev/null @@ -1,163 +0,0 @@ ---- -title: Deploy Docker images -shortdesc: Docker is an easy, lightweight virtualized environment for portable applications. -tags: -- docker ---- - -## Deploy Docker images - -Clever Cloud allows you to deploy any application running inside a -Docker container. This page will explain how to set up your application -to run it on our service. - -
-
Note for Beta Version
-
-Docker support is still in beta. It does not yet support FS -Buckets, validation of your Dockerfile, or other advanced features. -
-
- -### Overview - -Docker is an easy, lightweight virtualized environment for portable -applications. - -Docker containers can encapsulate any payload, and will run consistently -on and between virtually any server. The same container that a developer -builds and tests on a laptop will run at scale, in production*, on VMs, -bare-metal servers, public instances, or combinations of the above. - -### Create an application - -1. Create a new app by clicking on the **Add an Application** button, in the sidebar. -2. Select a brand new instance (or a repository from GitHub if your account is linked). -3. Then select Docker in the platforms list. -4. Configure your scaling options. -5. Enter your application's name and description and click "Next". You can also select the region you want (North America or Europe). -
- -
- - -### Requirements - -Clever Cloud does not have a lot of requirements, here is what you *need* -to do to ensure that your application will run: - -* Push on the **master branch**. - -* Commit a file named **Dockerfile**, [Here is what it will look like](http://docs.docker.io/introduction/working-with-docker/#working-with-the-dockerfile "Dockerfile") - -* Listen on **port 8080**. - -### Dockerfile contents - -You can virtually put everything you want in your Dockerfile. The only -mandatory (for us) instruction to put in it is: - -```bash -CMD -``` - - * **command to run**: this is the command that starts your - application. Your application **must** listen on port 8080. It can be - easier for you to put a script in your docker image and call it with - the CMD instruction. - - -### Sample apps - -We provide a few examples of dockerized applications on Clever Cloud. - -[Elixir App](https://github.com/CleverCloud/demo-docker-elixir/blob/master/Dockerfile) -[Haskell App](https://github.com/CleverCloud/demo-haskell) -[Hack / HHVM App](https://github.com/CleverCloud/demo-hhvm) -[Seaside / Smalltalk App](https://github.com/CleverCloud/demo-seaside) -[Rust App](https://github.com/CleverCloud/demo-rust) - -### Deploying a Rust application - -To make your dockerized application run on clever Cloud, you need to: - - - expose port 8080 in your docker file - - run the application with `CMD` or `ENTRYPOINT` - -For instance, here is the `Dockerfile` used for the Rust application. - -```bash -# rust tooling is provided by `archlinux-rust` -FROM geal/archlinux-rust -MAINTAINER Geoffroy Couprie, contact@geoffroycouprie.com - -# needed by rust -ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib - -# relevant files are in `./source` -ADD . /source -WORKDIR /source - -# Clever Cloud expects your app to listen on port 8080 -EXPOSE 8080 -RUN rustc -V - -# Build your application -RUN cargo build - -# Run the application with `CMD` -CMD cargo run -``` - -#### Deploying a HHVM application - -Deploying a HHVM application is a bit trickier as it needs to have both HHVM -and nginx running as daemons. To be able to have them running both, we need to -put them in a start script: - -```bash -#!/bin/sh - -hhvm --mode server -vServer.Type=fastcgi -vServer.Port=9000& - -service nginx start - -composer install - -echo "App running on port 8080" - -tail -f /var/log/hhvm/error.log -``` - -Since the two servers are running as daemons, we need to start a long-running -process. In this case we use `tail -f` - -We then add `start.sh` as the `CMD` in the `Dockerfile` - -```bash -# We need HHVM -FROM jolicode/hhvm - -# We need nginx -RUN sudo apt-get update \ - && sudo apt-get install -y nginx - -ADD . /root -RUN sudo chmod +x /root/start.sh - -# Nginx configuration -ADD hhvm.hdf /etc/hhvm/server.hdf -ADD nginx.conf /etc/nginx/sites-available/hack.conf -RUN sudo ln -s /etc/nginx/sites-available/hack.conf /etc/nginx/sites-enabled/hack.conf -# Checking nginx config -RUN sudo nginx -t - -RUN sudo chown -R www-data:www-data /root -WORKDIR /root - -# The app needs to listen on port 8080 -EXPOSE 8080 - -# Launch the start script -CMD ["sudo","/root/start.sh"] -``` diff --git a/runtimes/go/go.md b/runtimes/go/go.md deleted file mode 100644 index 9edaa3a5a..000000000 --- a/runtimes/go/go.md +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: Deploy Go apps -shortdesc: Go, otherwise known as Golang, is an open source, compiled, garbage-collected, concurrent system programming language. -tags: -- go ---- - -# Deploy Go applications - -Clever Cloud allows you to deploy any Go application. This page will -explain you how to set up your application to run it on our service. - -You do not need to change a lot in your application, the *requirements* will help you configure your applications with some mandatory files to add, and properties to setup. - -## Overview - -Go, otherwise known as Golang, is an open source, compiled, garbage-collected, concurrent system programming language. It was first designed and developed at Google Inc. beginning in September 2007 by Robert Griesemer, Rob Pike, and Ken Thompson. - -## Create an application - -Refer to the page [Deploy an application on Clever Cloud](/doc/clever-cloud-overview/add-application/). - -## Necessary information - -Be sure that: - -* you push in master branch - -* your application listens to the wild network 0.0.0.0, - not only localhost or 127.0.0.1 - -* your application listens on port 8080 - -## Requirements - -Apart from listening on port 8080, there is nothing to -change on your application. - -We automatically build and run your application, as `go get myapp` would -build it. The executable is run with the application's root as its -current path. So if your application has a "static" folder at its root, it will be -accessible via "./static" in your application. - -We currently support single module applications only. That means that -your sources files just need to be at the project's root, and you can't -have multiple modules running. - -Also, the go tool requires that you put your main code in a file named `main.go`. If you -do not do that, go will generate a library and not an executable. So if you get a `Nothing -listening on port 8080`, please check that your main file is named `main.go`. - -## More configuration - -By default, we consider that your repository contains a single -application. We put your application in ${GOPATH}/src/{app_id} and then -run `go get {app_id}`. - -If you want to configure more precisely your dependencies (e.g. have -private libraries, or specific versions of some libraries), the -following will explain you how to do it: - -1. Make your repository have a GOPATH structure: - -``` haskell -./ - src/ - myapp/ - foo/ - module1/ - module2/ - module3/ -``` -
- -Here you have the modules `myapp`, `foo/module1`, `foo/module2` and `module3`. - -2. Create a *clevercloud/go.json* file at the top of your repository: - -``` haskell -./ - clevercloud/ - go.json - src/ - myapp/ - ... -``` - - -3. In the go.json file, put the following: - -```javascript -{ - "deploy": { - "appIsGoPath": true, - "main": "myapp" - } -} -``` -
- -If `appIsGoPath` is present and equals `true`, then we consider that -your repo root is the *GOPATH*. the `main` field then becomes mandatory -and must be the name of the module you want to run. e.g. if you want -to run `module1`, `main` must be `foo/module1`. - -4. (Optional) Add a "execDir" field to the "deploy" object: - -```javascript -{ - "deploy": { - "appIsGoPath": true, - "main": "myapp" - "execDir": "src/myapp" - } -} - ``` -
- - -The `execDir` value must be relative to the root of your repo. In the -example above, we will run the application in the src/myapp directory. - -## Environment injection - -Clever Cloud can inject environment variables that are defined in the -dashboard and by add-ons linked to your application. - -To access your variable in your application, nothing simpler! Just get -it from your environment, like you would with `PATH`: -`os.Getenv("MY_VARIABLE")`. - -## Deploy on Clever Cloud - -Application deployment on Clever Cloud is via Git. Follow [these steps](/doc/clever-cloud-overview/add-application/) to deploy your application. diff --git a/runtimes/java/java-gradle.md b/runtimes/java/java-gradle.md deleted file mode 100644 index d17a17bbb..000000000 --- a/runtimes/java/java-gradle.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: Gradle deployment -position: 3 -shortdesc: Gradle is a project automation tool that buildsโ€ฆ -tags: -- java ---- - -# Deploy Gradle projects - -Clever Cloud offers you to run your Gradle projects. You can deploy this kind of project -without changing your code, but running it on Clever Cloud needs some configuration files, -to add parameters like your gradle task for example. - -## Overview - -Gradle is a project automation tool that builds upon the concepts of -Apache Ant and Apache Maven and introduces a Groovy-based -domain-specific language (DSL) instead of the more traditional XML form -of declaring the project configuration. - -## Create an application - -Refer to the page [Deploy an application on Clever Cloud](/doc/clever-cloud-overview/add-application/). - -## Necessary information - -You *must* provide a `clevercloud/gradle.json` file (gradle.json file in -clevercloud folder which is at the root of you application) that -contains at least the following: - -```javascript -{ - "deploy": { - "goal": "grails:run" - } -} -``` - -That is the only option you really need to supply. - -## Optional configuration - -The full configuration can look like the following: - -```haskell -{ - "build": { - "type": "", - "goal": "" - }, - "deploy": { - "goal": "" - }, - "hooks": { - "postDeploy": "" - } -} -``` -You can use the following properties: - -* ``build`` - * ``"type"`` can be ``"maven"``, ``"gradle"`` or ``"ant"``. - * ``"goal"`` is the target you want to use to build your project. -* ``deploy`` - * ``"goal"`` the goal/target and options you want to execute to - deploy/run you project. (This one is mandatory.) -* ``hooks`` - * ``postDeploy`` execute a custom script after the deployment. Some frameworks or custom applications might require bootstrapping before the application may run. -You can achieve this by creating a custom script with your commands and adding the associated file name. - -## The Gradle Wrapper - -Since Gradle can come in many versions, Clever Cloud automatically support the -[Gradle Wrapper|http://www.gradle.org/docs/current/userguide/gradle_wrapper.html]: -Just create and commit the `gradlew` file and the wrapper `jar` and -`properties` files: - -```haskell -./ - clevercloud/ - gradle.json - gradlew - gradle/wrapper/ - gradle-wrapper.jar - gradle-wrapper.properties - src/ -``` - - -## Environment injection - -Clever Cloud can inject environment variables that are defined in the -dashboard and by add-ons linked to your application. - -For Java applications, the environment is injected in the -`System.getProperties()` object. So, to use a variable, you just do -`System.getProperties().getProperty("MY_VARIABLE")`. - -For Groovy applications, just use the `System.getProperty("MY_VARIABLE")`. - diff --git a/runtimes/java/java-jar.md b/runtimes/java/java-jar.md deleted file mode 100644 index 335b7badb..000000000 --- a/runtimes/java/java-jar.md +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: Jar deployment -position: 3 -shortdesc: Deploy a jar on Clever Cloud... -tags: -- java ---- - -# Deploy Jar files - -Clever Cloud offers you to run any Java ARchive file. You do not -need to change your code, but running it on Clever Cloud needs some -configuration files, here is what you can do: - - * Commit and push a single jar file with all dependencies embedded; - * Commit and push your sources, let Clever Cloud build them with maven or gradle, and run the resulting jar; - -## Create an application - -Refer to the page [Deploy an application on Clever Cloud](/doc/clever-cloud-overview/add-application/). - -## Necessary information - -You *must* provide a `clevercloud/jar.json` file (jar.json file in -clevercloud folder which is at the root of you application) that -contains at least the following: - -```javascript -{ - "deploy": { - "jarName": "path/to/jar" - } -} -``` - -That is the least you need to do. Note that `path/to/jar` *must not* -start with a `/` and that the path should be relative to your -repository's root. - -## Build options - -You do not need to build and commit a jar. Instead you can push your -sources and build them with either gradle, ant or maven. Here is the -configuration you need to provide in the `clevercloud/jar.json` file: - -```javascript -{ - "build": { - "type": "maven"|"gradle"|"ant", - "goal": "package" - } -} -``` - -The `goal` field is what will be asked to the build command, like `mvn -package` for a `maven` build with the `package` goal. - -An configuration example with a maven build that generates a jar with -embedded dependencies is: - -```javascript -{ - "build": { - "type": "maven", - "goal": "package" - }, - "deploy": { - "jarName": "target/myproject-1.0-jar-with-dependencies.jar" - } -} -``` -## More configuration - -The full configuration can look like the following: - -```haskell -{ - "build": { - "type": "", - "goal": "" - }, - "deploy": { - "jarName": "" - }, - "hooks": { - "postDeploy": "" - } -} -``` -You can use the following properties: - -* ``build`` - * ``"type"`` can be ``"maven"``, ``"gradle"`` or ``"ant"``. - * ``"goal"`` is the target you want to use to build your project. -* ``deploy`` - * ``"goal"`` the goal/target and options you want to execute to deploy/run you project. -* ``hooks`` - * ``postDeploy`` execute a custom script after the deployment. Some frameworks or custom applications might require bootstrapping before the application may run. -You can achieve this by creating a custom script with your commands and adding the associated file name. - -## Environment injection - -Clever Cloud can inject environment variables that are defined in the -dashboard and by add-ons linked to your application. - -For Java applications, the environment is injected in the -`System.getProperties()` object. So, to use a variable, you just do -`System.getProperties().getProperty("MY_VARIABLE")`. - -For Groovy applications, just use the `System.getProperty("MY_VARIABLE")`. diff --git a/runtimes/java/java-maven.md b/runtimes/java/java-maven.md deleted file mode 100644 index d73b4f4c4..000000000 --- a/runtimes/java/java-maven.md +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: Java Maven -position: 3 -shortdesc: Maven is essentially a project management and comprehension tool... -tags: -- java ---- - -# Deploy Java Maven projects - -Clever Cloud offers you to run your Java Maven projects. You can deploy this kind of project without changing your code, but running it on Clever Cloud needs some configuration files, to add parameters like your targeted container for instance. - - -## Overview -Maven is essentially a project management and comprehension tool and as such provides a way to help with managing: - -* Builds -* Documentation -* Reporting -* Dependencies -* SCMs -* Releases -* Distribution - - -## About Cargo -To run your app, you can, for example, use plugins like cargo -(Find it here). -Your application must be set to listen on the port 8080. - -## Create an application - -Refer to the page [Deploy an application on Clever Cloud](/doc/clever-cloud-overview/add-application/). - -## Necessary information - -The `clevercloud/maven.json` (maven.json file in clevercloud folder which is at the root of you application) file must contain the _goal_ field to indicate how to start your application: - -```javascript - { - "deploy": { - "goal": "yourgoal" - } - } -``` - -An example of what can be found as a goal value is: - -```haskell -"-Dtest.active=false -Dexec.mainClass=\"com.example.Main\" assembly:jar-with-dependencies exec:java" -``` - -## Optional configuration - -The full configuration can look like the following: - -```haskell -{ - "build": { - "type": "", - "goal": "" - }, - "deploy": { - "goal": "" - }, - "hooks": { - "postDeploy": "" - } -} -``` -You can use the following properties: - -* ``build`` - * ``"type"`` can be ``"maven"``, ``"gradle"`` or ``"ant"``. - * ``"goal"`` is the target you want to use to build your project. -* ``deploy`` - * ``"goal"`` the goal/target and options you want to execute to - deploy/run you project. (This one is mandatory.) -* ``hooks`` - * ``postDeploy`` execute a custom script after the deployment. Some frameworks or custom applications might require bootstrapping before the application may run. -You can achieve this by creating a custom script with your commands and adding the associated file name. - -## Deploy on Clever Cloud - -Application deployment on Clever Cloud is via Git. Follow [these steps](/doc/clever-cloud-overview/add-application/) to deploy your application. diff --git a/runtimes/java/java-war.md b/runtimes/java/java-war.md deleted file mode 100644 index 0272be0a7..000000000 --- a/runtimes/java/java-war.md +++ /dev/null @@ -1,296 +0,0 @@ ---- -title: Java War/Ear -position: 4 -shortdesc: In J2EE applications modules are packaged as EAR and WAR based on their functionality. -tags: -- java ---- - -# Deploy WAR/EAR projects - -Clever Cloud allows you to run WAR or EAR applications. You can deploy these projects without changing your code. We just need a configuration file with your targeted container. - -## Overview - -In J2EE application modules are packaged as EAR and WAR based on their functionality. - -* WAR: Web modules which contains Servlet class files, JSP FIles, supporting files, GIF and HTML files are packaged as JAR file with *.war* extension. - -* EAR: *.war* and *.jar* files are packaged as JAR file with .ear extension and deployed into Application Server. EAR file contains configuration such as application security role mapping, EJB reference mapping and context root url mapping of web modules. - -## Available containers - -The Clever Cloud supports many servlet containers. -The supported containers are listed below: - - - - - - - - - - - - - - - - - - -
ApacheJettyJbossGlassfishResin
Apache Tomcat 4.1Jetty 6.1Jboss 6.1Glassfish 3.1Resin 3.1
Apache Tomcat 5.5Jetty 7.6Jboss AS 7.1Glassfish 4.1ย 
Apache Tomcat 6.0Jetty 8.1ย ย ย 
Apache Tomcat 7.0Jetty 9.0ย ย ย 
Apache Tomcat 8.8ย ย ย ย 
- - -## Create an application - -Refer to the page [Deploy an application on Clever Cloud](/doc/clever-cloud-overview/add-application/). - -## Configure your application - -
-

**Warning!**

-You **must** provide a `clevercloud/war.json` file in your application repository. -
- -### Full configuration example. - -Here's what your configuration file can look like: - -```javascript -{ - "build": { - "type": "maven", - "goal": "package" - }, - "deploy": { - "container": "TOMCAT8", - "war": [ - { - "file": "target/my-app-1.0-SNAPSHOT.war", - "context": "/app1", - "checkMe": "/app1/ping" - }, - { - "file": "my-second-app.war", - "context": "/app2", - "checkMe": "/app2/web/foobar" - } - ] - } -} -``` - -### Ok, but what does all this configuration mean? - -#### Let's start with the mandatory part: - -```javascript -{ - "deploy":{ - "container":"", - "war" : [ - { - "file":"", - "context":"/", - "checkMe":"/" - } - ] - } -} -``` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
UsageFieldDescription
Required**container**Name of the container to use. Should contain one of the values in the left column of the [containers table](#available-containers) (in uppercase and all).
Required**file**Should contain the path of the war/ear file relative to your application root.
Optional**context** -
    -
  • Must start with a slash (/), can be "/".
  • -
  • Defines the base path you want your app to be under. If your app has a /foobar endpoint, it will be available under the `/{my-context}/foobar` path.
  • -
  • Not needed for an `ear` file.
  • -
  • The default value for a war is the name of the war without the extensions: helloworld-1.0.war will be deployed under the `/helloworld-1.0` context.
  • -
-
Optional**checkMe** -
    -
  • This field is recommended
  • -
  • A path to GET in order to test if the application is really running.
  • -
  • By default we will consider that the application is up if the container is up.
  • -
  • With this option, we will try to `GET /{checkMe}` for each one of your wars and consider the app down until every single checkMe path that replies a 200.
  • -
-
- -#### Build your application on Clever Cloud - -The mandatory part alone is enoughโ€ฆ if you directly push a dry war file to deploy. You -might want to just push your code to Clever Cloud and let us build the app and generate -the war. - -That you can do, by setting the "build" field object in the `war.json` file: - -```javascript -{ - "build": { - "type": "", - "goal": "" - } -} -``` - - - - - - - - - - - - - - - - - - - - - -
UsageFieldDescription
Required**type** -
    -
  • The tool you want to use to build your app
  • -
  • Can be "maven" or "ant"
  • -
-
Required**goal** -
    -
  • -The goal you want the tool to execute. -
  • -
  • Basically, for maven, you want to put "package" in here.
  • -
-
- -#### More configuration - -Need more configuration? To run a script at the end of your deployment? To add your -private SSH key to access private dependencies? Go check the [Common configuration page](/doc/clever-cloud-overview/common-application-configuration/). - -## Available containers - -Here's the list of the configuration values for the "container" field in `war.json`: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ValueDescription
GLASSFISH3Use Glassfish 3.x -(see http://glassfish.java.net/)
GLASSFISH4Use Glassfish 4.x -(see http://glassfish.java.net/)
JBOSS6Use JBoss AS 6.x -(see http://www.jboss.org/jbossas)
JBOSS7Use JBoss AS 7.x -(see http://www.jboss.org/jbossas)
RESIN3Use Resin AS 3.x (see http://www.caucho.com/resin-3.1/doc/)
RESIN4Use Resin AS 4.x (see http://www.caucho.com/resin-4/doc/)
JETTY6Use Jetty servlet container 6.x (see http://jetty.codehaus.org/jetty/)
JETTY7Use Jetty servlet container 7.x (see https://www.eclipse.org/jetty/)
JETTY8Use Jetty servlet container 8.x (see https://www.eclipse.org/jetty/)
JETTY9Use Jetty servlet container 9.x (see http://www.eclipse.org/jetty/documentation/current/)
TOMCAT4Use Tomcat servlet container 4.x (see https://tomcat.apache.org/)
TOMCAT5Use Tomcat servlet container 5.x (see https://tomcat.apache.org/)
TOMCAT6Use Tomcat servlet container 6.x (see https://tomcat.apache.org/)
TOMCAT7Use Tomcat servlet container 7.x (see https://tomcat.apache.org/)
TOMCAT8Use Tomcat servlet container 8.x (see https://tomcat.apache.org/)
- -## Environment injection - -Clever Cloud can inject environment variables that are defined in the -dashboard and by add-ons linked to your application. - -For WAR/EAR applications, the environment is injected in the -`System.getProperties()` object. So, to use a variable, you just do -`System.getProperties().getProperty("MY_VARIABLE")`. - -## Deploy on Clever Cloud - -Application deployment on Clever Cloud is via Git. Follow [these steps](/doc/clever-cloud-overview/add-application/) to deploy your application. diff --git a/runtimes/java/play-framework-1.md b/runtimes/java/play-framework-1.md deleted file mode 100644 index e5f89044d..000000000 --- a/runtimes/java/play-framework-1.md +++ /dev/null @@ -1,107 +0,0 @@ ---- -title: Play Framework 1 -position: 1 -shortdesc: Play is an open source web application framework, written in Scala and Java, which follows the modelโ€“viewโ€“controller (MVC) architectural pattern. -tags: -- java ---- - -# Deploy Play Framework 1.x - -Clever Cloud supports Play 1.x applications natively. The present guide explains how to set up your application to run -on Clever Cloud. - -## Overview - -Play is an open source web application framework, written in Scala and Java, which follows the modelโ€“viewโ€“controller -(MVC) architectural pattern. It aims to optimize developer productivity by using convention over configuration, hot code -reloading and display of errors in the browser. - -## Create an application - -Refer to the page [Deploy an application on Clever Cloud](/doc/clever-cloud-overview/add-application/). - -## Necessary information - -* The application must be located at the **root** of the git repository. - -## Select Play! version - -Clever Cloud supports Play! **1.2** and **1.3**. You can select the Play! version for your application by creating a -`play1_version` file in the `/clevercloud` folder. - -The `play1_version` file can contain one of the following values: - -* `1.2` or `12` for **Play! 1.2**. -* `1.3` or `12` for **Play! 1.3**. - - -## Play! configuration - -By default, your application will run on Clever Cloud with the option `--%clevercloud`. -It means that you can define special keys in your `application.conf` file that will be used only on Clever Cloud. - -You can for example: - -* set production mode so the files are compiled at startup time and the errors are logged in a file: - - ```bash - %clevercloud.application.mode=prod - ``` - -* set up a mysql database - - ```bash - %clevercloud.db.url=jdbc:mysql://{yourcleverdbhost}/{dbname} - %clevercloud.db.driver=com.mysql.jdbc.Driver - %clevercloud.db.user={yourcleveruser} - %clevercloud.db.pass={yourcleverpass} - ``` - -More information on [playframework.com](http://www.playframework.com). - -## Configuration file - -You can configure your application start command by adding a `./clevercloud/play.json` file with the following fields: - -```javascript -{ - "hooks": { - "postDeploy": "pathtoyourscript" - } -} -``` - -**postDeploy**: execute a custom script after the deploy. Some frameworks or custom applications might require -bootstrapping before the application may run. You can achieve this by creating a custom script with your commands and -adding the associated file name in `clevercloud/play.json`. - -## Environment injection - -Clever Cloud can inject environment variables that are defined in the -dashboard and by add-ons linked to your application. - -To access the environment variables from your application, you need to -reference them in your application.conf file: -you just have to put `my.option=${MY_VARIABLE}` in your application.conf file, and then use -the configuration item `my.option` in your application. - -So for an application using the MySQL add-on, you can set: - -```bash -%clevercloud.db.url="jdbc:mysql://"${MYSQL_ADDON_HOST}"/"${MYSQL_ADDON_DB} -%clevercloud.db.driver=com.mysql.jdbc.Driver -%clevercloud.db.user=${MYSQL_ADDON_USER} -%clevercloud.db.pass=${MYSQL_ADDON_PASSWORD} -``` - -## HTTPS support - -HTTPS is handled by Clever Cloud ahead of your application, your application -retrieves the traffic in plain http. To be able to use `request.secure`, you -have to add `XForwardedSupport=all` in `application.conf`. - -## Deploy on Clever Cloud - -Application deployment on Clever Cloud is via Git. Follow [these steps](/doc/clever-cloud-overview/add-application/) to -deploy your application. diff --git a/runtimes/java/play-framework-2.md b/runtimes/java/play-framework-2.md deleted file mode 100644 index a6c3fc542..000000000 --- a/runtimes/java/play-framework-2.md +++ /dev/null @@ -1,118 +0,0 @@ ---- -title: Play Framework 2 -position: 2 -shortdesc: Play is an open source web application framework, written in Scala and Java, which follows the modelโ€“viewโ€“controller (MVC) architectural pattern. -tags: -- java ---- - -# Deploy Play Framework 2 Java - -Clever Cloud supports Play! 2 applications natively. The following guide explains how to set up your application to run the Clever Cloud. - -## Overview - -Play is an open source web application framework, written in Scala and Java, which follows the modelโ€“viewโ€“controller (MVC) architectural pattern. It aims to optimize developer productivity by using convention over configuration, hot code reloading and display of errors in the browser. - -## Create an application - -Refer to the page [Deploy an application on Clever Cloud](/doc/clever-cloud-overview/add-application/). - -## Necessary information - -* The application must be located at the **root** of the git repository. -* Starting from **Play 2.4**, your application needs **Java 8** to run. Please read [select java version](https://www.clever-cloud.com/doc/java/select-java-version/) for more information. - -## Configuration file - -You can configure your application start command by adding a -`./clevercloud/sbt.json` file with the following fields: - -```javascript -{ - "deploy":{ - "goal": "yourgoal" - }, - "hooks": { - "postDeploy": "pathtoyourscript" - } -} -``` - -**goal**: can for example contain additional configuration like -`"-Dconfig.resource=clevercloud.conf"` or `"-Dplay.version=2.0.4"`. - - -**postDeploy**: execute a custom script after the deploy. Some frameworks or custom applications might require bootstrapping before the application may run. -You can achieve this by creating a custom script with your commands and -adding the associated file name in `clevercloud/sbt.json`. - -## Environment injection - -Clever Cloud can inject environment variables that are defined in the -dashboard and by add-ons linked to your application. - -There are two way to access the environment variables from your application: - - * you can reference them in your application.conf file: - you just have to put `my.option=${MY_VARIABLE}` in your application.conf file, and then use - the configuration item `my.option` in your application. - - * you can also use the `System.getenv("MY_VARIABLE")` method. Be aware that it can return null. - - So for an application using the MySQL add-on, you can set: - -```bash -db.default.driver=org.postgresql.Driver -db.default.url="jdbc:postgresql://"${POSTGRESQL_ADDON_HOST}"/"${POSTGRESQL_ADDON_DB} -db.default.user=${POSTGRESQL_ADDON_USER} -db.default.password=${POSTGRESQL_ADDON_PASSWORD} -``` - -## Known problems with Play! 2 - -Please read the following if your project fails with this error: - -`sbt.ResolveException: unresolved dependency: play#sbt-plugin;2.0: not found` - -Some versions of Play2 try to retrieve a nonexistent version of -"sbt-plugin" which is required by the framework to work. -You have two options to fix this problem: - -You can set the "play.version" environment variable in the -`clevercloud/sbt.json` file. -For example, for Play 2.0.4: - -``` javascript -{ - "deploy": { - "goal": "-Dplay.version=2.0.4" - } -} -``` - -Otherwise, you can modify `plugins.sbt` in the project folder of your -app like the following: - -``` scala -// Comment to get more information during initialization -logLevel := Level.Warn - -// The Typesafe repository -resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/" - -// Use the Play sbt plugin for Play projects -addSbtPlugin("play" % "sbt-plugin" % "2.0.4") // The important part of the configuration -``` - -The two solutions do the job, you can pick your favorite. - -## HTTPS support - -HTTPS is handled by Clever Cloud ahead of your application, your application -retrieves the traffic in plain http. To be able to use `request.secure`, you -have to add `trustxforwarded=true` in `application.conf`. - -## Deploy on Clever Cloud - -Application deployment on Clever Cloud is via Git. Follow [these steps](/doc/clever-cloud-overview/add-application/) to deploy your application. diff --git a/runtimes/java/select-java-version.md b/runtimes/java/select-java-version.md deleted file mode 100644 index 02f396a1d..000000000 --- a/runtimes/java/select-java-version.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Selecting the java version -shortdesc: This section provides information for selecting the appropriate java version for your application -tags: -- java ---- - -## Selecting your java version - -Simply set the environment variable **JAVA_VERSION** to the version you want - -Accepted values are `6`, `7` and `8` - -## Retrocompatibility with the old configuration system - -The configuration of the JAVA_VERSION through the **clevercloud/java_version** file still works. This is totally backward compatible. diff --git a/runtimes/nodejs/nodejs-mongodb-sample-app.md b/runtimes/nodejs/nodejs-mongodb-sample-app.md deleted file mode 100644 index 1fff789ef..000000000 --- a/runtimes/nodejs/nodejs-mongodb-sample-app.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Node.js + MongoDB sample application -shortdesc: The goal of this article is to show you how to deploy a Node.js + MongoDB application on Clever Cloud. -tags: -- nodejs ---- - -# Node.js + MongoDB sample application - -The goal of this article is to show you how to deploy a Node.js + MongoDB application on Clever Cloud. - -The application is a very simple list. You can add and delete values. More information about the application: - -* [Github repo](https://github.com/CleverCloud/demo-nodejs-mongodb) -* [Clever Cloud demo](http://nodejs-demo.cleverapps.io/) - - -
-If you want to test our platform and deploy this application, just follow these simple steps: - -1. Fork the [Github repo](https://github.com/CleverCloud/demo-nodejs-mongodb). -2. Create an application from your github repo. -3. Create a [MongoDB add-on](/doc/addons/clever-cloud-addons/) and link it to your application. -4. That's all the application will use the environment variables to connect to MongoDB. - - -

If you need further information, feel free to send an email to . - diff --git a/runtimes/nodejs/nodejs.md b/runtimes/nodejs/nodejs.md deleted file mode 100644 index 2680dcf7a..000000000 --- a/runtimes/nodejs/nodejs.md +++ /dev/null @@ -1,245 +0,0 @@ ---- -title: Deploy Node.js apps -shortdesc: Node.js is a platform built on Chrome's JavaScript runtime for building fast, scalable network applications. -tags: -- nodejs ---- - -# Deploy Node.js apps - -Clever Cloud allows you to deploy any Node.js application. This page will -explain you how to set up your application to run it on our service. - -You do not need to change a lot in your application, the *requirements* will help you to configure your apps with some -mandatory files to add, and properties to setup. - -## Overview - -Node.js is a platform built on Chrome's JavaScript runtime for building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, pretty good for data-intensive real-time applications that run across distributed devices. - -## Create an application - -Refer to the page [Deploy an application on Clever Cloud](/doc/clever-cloud-overview/add-application/). - -## Necessary information - -Be sure that: - -* you have pushed in master branch -* you listen on port 8080 -* you have added application name in package.json -* you have added application version in package.json -* you have added application start script in package.json - -## Requirements - -First, your application must be set to listen on the 8080 port, for worldwide -connections. The following code describes a Hello world application listening on -that port: - -```javascript -// Load the http module to create an http server. -var http = require('http'); - -// Configure our HTTP server to respond with Hello World to all requests. -var server = http.createServer(function (request, response) { - response.writeHead(200, {"Content-Type": "text/plain"}); - response.end("Hello World\n"); -}); - -// Last, but not least, listen on port 8080 -server.listen(8080); -``` -Then, a *package.json* file is mandatory to initiate your app deployment on Clever Cloud. The next section will detail this point. - -### Describing package.json - -Even if you have no dependencies, you have to provide a `package.json` file at the root of your projectโ€™s directory. - -
-
About dependencies:
-
    -
  • For every Node.js project you **HAVE TO** provide a package.json file at the root of your projectโ€™s -directory.
  • -
  • Additionally, make sure that the folder "/node_modules" is in your .gitignore file before pushing your app.
  • -
-
- -If you already are a Node.js guru, you probably wonโ€™t have to change anything to that -file. Just check the required fields below. - -The `package.json` file should look like the following: - -```javascript -{ - "name" : "myapp", - "version" : "0.1.0", - "main" : "myapp.js", - "scripts" : { - "start" : "node myapp.js" - }, - "engines" : { - "node" : "~4.0" - } -} -``` - -### The json fields - -The following table describes each of the fields formerly mentioned. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
UsageFieldDescription
RequirednameName of your application. You need to fill this field.
RequiredversionVersion of you application. You need to fill this field.
At least onemainThis field allows you to specify the file you want to run. It should -be the relative path of the file starting at the project's root. It's used prior to the next one.
scripts.startThis field provides a command line to run. It is required if the main one is missing. You need one -of scripts.start and main. If both exist, we use the main one.
Optionalengines.nodeSets the node engine version you app runs with. Any "A.B.x" or "^A.B.C" or "~A.B" version will lead -to run the application with le latest "A.B" local version. If this field is -missing, we use the greatest default local version (0.10 until 2015-10-11). If you want to use iojs, put either "iojs", "iojs-v1.0.3", or any truncated -version number (e.g. "iojs-1" will work).
If you want to ensure that your app will always run, please put something of the form "^A.B.C" and avoid setting only ">=A.B.C".
- -### NPM modules dependencies - -If you need some modules you can easily add some with the *dependencies* field. - -Here is an example : - -```javascript -{ - "name" : "myapp", - "version" : "0.1.0", - "main" : "myapp.js", - "scripts" : { - "start" : "node myapp.js" - }, - "engines": { - "node": "0.8.15" - }, -"dependencies": { - "express": "3.x", - "socket.io": "0.9.x", - "underscore": "1.4.3" - } -} -``` - -## Node.js supported versions - -The Clever Cloud can virtually run any version of node >= 0.6 and any -module. Lesser (pre-npm) versions are not officially supported. Unstable -versions are not supported either. We support the io.js runtime. - -### Pre-installed modules - -We currently host the following Node.js versions, with these modules already installed: - -**You can use any version of node you need and any modules you need. Preinstall version is only for faster deployment process.** - -
-
- - - - - - - - - - - - - -
Pre-installed modules
socket.io
express
async
mysql
pg
-
-
- - -New versions will be added as they are released. - -### Defining *pre-installed* - -The above table describes the modules pre-installed. -These modules are available at deploy time, without the need to download and -install them. - -If you use modules that are not pre-installed, we will just get them with npm -(provided they are in the npm repository), and install it before we start your -application. The deploy will then be a little longer, due to probable -compilation of some of these modules. - -Some modules require system dependencies to build, require to rebuild nodeโ€ฆ so -we installed the most used ones. - -If you think more modules are commonly used and should be pre-installed, do not -hesitate to contact us at - -## Environment injection - -Clever Cloud can inject environment variables that are defined in the -dashboard and by add-ons linked to your application. - -To access your variable in your application, nothing simpler! Just get -it from your environment, like you would with `PATH`: -`process.env["MY_VARIABLE"]`. - -You can, for example, inject the NODE_ENV variable to define it at "production". It is not -currently set on our machines, because we need to build the project first. Beware, -devDependencies do not get fetched if NODE_ENV=production. - -### Special env NPM_TOKEN - -Since April 2015, npmjs.com allows you to have private repositories. The bad news is, -you have to write a specific line in your `.npmrc` for that. The good news is, on Clever -Cloud, you only need to provide the *token* part, and we set up everything for you! - -So to register your npm auth token, you need to add to your application the `NPM_TOKEN` -environment variable. - -``` javascript -Example: -NPM_TOKEN=00000000-0000-0000-0000-000000000000 -``` - -As you can see, only the `authToken` value is needed, not the full url you can find in -your .npmrc. - -## Deploy on Clever Cloud - -Application deployment on Clever Cloud is via Git. Follow [these steps](/doc/clever-cloud-overview/add-application/) to deploy your application. - -## Deployment video - -More info on nodejs.org. diff --git a/runtimes/php/php-apps.md b/runtimes/php/php-apps.md deleted file mode 100644 index 9e48e4cab..000000000 --- a/runtimes/php/php-apps.md +++ /dev/null @@ -1,356 +0,0 @@ ---- -title: Deploy PHP applications -shortdesc: PHP is a widely-used general-purpose scripting language that is especially suited for Web development and can be embedded into HTML. -tags: -- php ---- - -# Deploy PHP apps - -PHP is available on our platform with the branches 5.4 and 5.5. You can use FTP or Git to deploy your applications. - -The HTTP server is [Apache 2](https://httpd.apache.org/), and the PHP code is executed by [PHP-FPM](http://php-fpm.org/). - -## Overview - -PHP is a widely-used general-purpose scripting language that is especially suited for Web development and can be embedded -into HTML. - -## Create an application - -Refer to the page [Deploy an application on Clever Cloud](/doc/clever-cloud-overview/add-application/). - -
-

Warning:

-

An FTP application is automatically started once the application is created, even if no code has been sent.

-

- When you create a FTP application, a free [FS Bucket](/doc/addons/fs_buckets/) add-on is - provisioned, named after the application. You will find the FTP - credentials in the configuration tab of this add-on. -

-
- -## Choose your PHP version - -Since January 2016, choosing a PHP version has gotten easier: just set the PHP_VERSION environment -variable to one of the following values: - -- 5.4 -- 5.5 -- 5.6 -- 7.0 - -By default, all new PHP applications are created with a default PHP_VERSION, set to 5.6. -You can of course change it whenever you want then redeploy your application to use the -version you want. - -## Configuration files for PHP applications - -The configuration file for your PHP application must be `/clevercloud/php.json`, that is a *php.json* file in a -`/clevercloud` folder at the root of your application. - -### Change the webroot - -Since one of the best practices of PHP development is to take the libraries and core files outside the webroot, you may -want to set another webroot than the default one (*the root of your application*). - -To change the webroot, just set the key `webroot` in the `deploy` part -of the configuration file *clevercloud/php.json* with the absolute path (*from the root of your application*) of your new public folder. - -In the following example we want to set the webroot to the folder `/public`: - -```javascript - { - "deploy": { - "webroot": "/public" - } - } -``` - -Please note the absolute path style: `/public`. - -
-

Warning:

-

The change of the webroot will be rejected during the deployment if the target directory does not exist or is not a directory.

-
- -### Change PHP settings - -Most of PHP settings can be changed using a `.user.ini` file. Please refer to the -[official documentation](http://www.php.net/manual/en/configuration.file.per-user.php) for more information. - -Other settings can be changed by adding the following line in `clevercloud/php.json`: - -```javascript - { - "configuration": { - "mbstring.func_overload": 2, - "another.setting": "value" - } - } -``` - -Here is the list of available settings: - -* `mbstring.func_overload` - -**Note**: You can send a request to the support if you need to change a setting which is not in this list. - -#### Maximum PHP Children per instance - -You can fix the maximum number of PHP running processes per instance by adding the following line in `clevercloud/php.json`: - -```javascript - { - "configuration": { - "pm.max_children": 32 - } - } -``` - -This setting is usefull if you need to limit the number of running processes according to the maximum connections limit -of your MySQL or PostgreSQL database. - -By default, `pm.max_children` is set to **10**. - -### Configure Apache - -We use Apache 2 as HTTP Server. In order to configure it, you can create a `.htaccess` file and set directives inside -this file. - -The `.htaccess` file can be created everywhere in you app, depending of the part of the application covered by directives. -However, directives who applies to the entire application must be declared in a `.htaccess` file to the application root. - -#### Define a custom HTTP timeout - -You can define the timeout of an HTTP request in Apache using the `HTTP_TIMEOUT` -[environment variable](/doc/admin-console/environment-variables/). - -By default, the HTTP timeout is se to 3 minutes (180 seconds). - -#### Prevent Apache to redirect HTTPS calls to HTTP when adding a trailing slash - -`DirectorySlash` is enabled by default on the PHP scalers, therefore Apache will add a trailing slash to a resource when - it detects that it is a directory. - -eg. if foobar is a directory, Apache will automatically redirect http://example.com/foobar to http://example.com/foobar/ - -Unfortunately the module is unable to detect if the request comes from a secure connection or not. As a result it will -force an HTTPS call to be redirected to HTTP. - -In order to prevent this behavior, you can add the following statements in a `.htaccess` file: - -```apache -DirectorySlash Off -RewriteEngine On -RewriteCond %{REQUEST_FILENAME} -d -RewriteRule ^(.+[^/])$ %{HTTP:X-Forwarded-Proto}://%{HTTP_HOST}/$1/ [R=301,L,QSA] -``` - -These statements will keep the former protocol of the request when issuying the redirect. Assuming that the header -X-Forwarded-Proto is always filled (which is the case on our platform). - -If you want to force all redirects to HTTPS, you can replace `%{HTTP:X-Forwarded-Proto}` with `https`. - -### Composer - -We support Composer build out of the box. You just need to provide a `composer.json` file in the root of -your repository and we will run `composer.phar install` for you. - -The PHP instances embed the latest release of Composer. You can check it on the following pages: - -* [php54info.cleverapps.io/composer](https://php54info.cleverapps.io/composer) for PHP 5.4 -* [php55info.cleverapps.io/composer](https://php55info.cleverapps.io/composer) for PHP 5.5 - -
-

Note:

-

Add your own `composer.phar` file in the root of your repository if you need to override our version for the build phase.

-
- -Example of a `composer.json` file: - -```javascript -{ - "require": { - "laravel/framework": "4.1.*", - "ruflin/Elastica": "dev-master", - "shift31/laravel-elasticsearch": "dev-master", - "natxet/CssMin": "dev-master" - }, - "repositories": [ - { - "type": "vcs", - "url": "https://github.com/timothylhuillier/laravel-elasticsearch.git" - } - ], - "autoload": { - "classmap": [ - "app/controllers", - "app/models", - "app/database/migrations", - "app/database/seeds" - ], - "psr-0": { - "SomeApp": "app" - } - }, - "config": { - "preferred-install": "dist" - }, - "minimum-stability": "dev" -} -``` - -#### GitHub rate limit - -Sometimes, you can encounter the following error when downloading dependencies: - -``` -Failed to download symfony/symfony from dist: Could not authenticate against github.com -``` - -To prevent this download dependencies's fails that is often caused by rate limit of GitHub API while deploying your apps, -we recommend you to add `oauth` token in your composer configuration file or in separate file named as described in -[composer FAQ (API rate limit and OAuth tokens)](https://getcomposer.org/doc/articles/troubleshooting.md#api-rate-limit-and-oauth-tokens). - -You can find more documentation about composer configuration at [getcomposer.com](https://getcomposer.org/doc/04-schema.md). - -#### Example - -You use Artisan to manage your project and you want to execute _artisan migrate_ before running your app. - -First, add a file `ccbuild.sh` at the root of your project with these lines: - -```bash -#!/bin/bash - -php artisan migrate -``` - -Then add these lines in `clevercloud/php.json`: - -```javascript - { - "hooks": { - "postDeploy": "ccbuild.sh" - } - } -``` - -Note: You must add the _execute_ permission to your file (`chmod u+x yourfile`) before pushing it. - -## Environment injection - -Clever Cloud can inject environment variables that are defined in the -dashboard and by add-ons linked to your application. - -To access the variables, use the `getenv` function. So, for example, if -your application has a postgresql add-on linked: - -```php - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
WordpressPrestashop
DokuwikiJoomla
SugarCRMDrupal
MagentoStatus.net
SymfonyThelia
- - -## Available extensions and modules - -You can check enabled extensions and versions by viewing our `phpinfo()` example for -[PHP 5.4](https://php54info.cleverapps.io) and [PHP 5.5](https://php55info.cleverapps.io). - -**Warning**: some extensions (OPcache, Mysqlnd and IonCube) need to be enabled explicitly. Please read below to know -how to enable them. - -If you have a request about modules, feel free to contact our support at . - -### Enable specific extensions - -Some extensions need to be enabled explicitly. To enable this extensions, you'll need to set the corresponding -[environment variable](/doc/admin-console/environment-variables/): - -* OPcache: set `ENABLE_OPCACHE` to `true`. - - OPcache is a cache system who store PHP' compiled bytecode in shared memory to improve PHP performances. - -* mysqlnd_ms: set `ENABLE_MYSQLND_MS` to `true`. - - mysqlnd_ms is a load balancing and replication plugin for mysqlnd (MySQLnative driver for PHP). It can be used with - a master/slave database system. - -* IonCube: set `ENABLE_IONCUBE` to `true`. - - IonCube is a tool to obfuscate PHP code. It's often used by paying Prestashop and Wordpress plugins. - -* Redis: set `ENABLE_REDIS` to `true`. - - Redis is an in-memory datastructure store. This extension allows to use it from PHP. - -
-

Warning:

-

This extensions are only available for PHP >= 5.5.

-
- -## Use Redis to store PHP Sessions - -We provide the possibility to store the PHP sessions in a [Redis database](/doc/addons/redis/) to improve the performances of -your application. - -To enable this feature, you need to: - - - enable Redis support on the application (create an [environment variable](/doc/admin-console/environment-variables/) named `ENABLE_REDIS` with the value `true`.) - - create and link a Redis add-on - - create an [environment variable](/doc/admin-console/environment-variables/) named `SESSION_TYPE` with the value `redis`. - -
-

Warning:

-

You must have a Redis add-on - linked with your application - to enable PHP session storage in Redis.
- If no Redis add-on is linked with your application, the deployment will fail.

-
- -## Deploy on Clever Cloud - -Application deployment on Clever Cloud is via **Git or FTP**. Follow -[these steps](/doc/clever-cloud-overview/add-application/) to deploy your application. diff --git a/runtimes/php/tutorial-drupal.md b/runtimes/php/tutorial-drupal.md deleted file mode 100644 index e7762fe21..000000000 --- a/runtimes/php/tutorial-drupal.md +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: Deploy a Drupal website -shortdesc: This article shows you how to deploy a Drupal-based website on the Clever Cloud. -tags: -- php ---- - -# Deploy a Drupal website - -## Create an application - -You can find in [this article](/doc/clever-cloud-overview/add-application/#create-an-application) the process to create an application. - -## Two choices for deployment - -During the creation of a PHP application, it is asked if you want to deploy it via FTP or via Git. These two techniques have their own pros and cons but have the same end result. - -## Deploy via FTP - -1. Download the Drupal source files on [drupal.org](http://drupal.org) -2. [Add a MySQL database add-on](/doc/addons/clever-cloud-addons/) -3. [Send these Drupal files via FTP](/doc/clever-cloud-overview/add-application/#ftp-deployment) using the FTP credentials you received by email when you created the application. -4. When finished, launch the application with the url that you can find in the *domains* panel in the left sidebar. -5. Follow the Drupal installation steps -6. When asked for database informations, fill them with the ones you received by email: - * database name - * database username - * database password - * database host, for example `bj79c949bvl2deb6.mysql.clvrcld.net` - * database port - - -## Deploy via Git - -1. Download the Drupal source files on [drupal.org](http://drupal.org) -2. [Add a MySQL database add-on](/doc/addons/clever-cloud-addons/) -3. Open `.gitignore` file and delete `sites/*/settings*.php` line -4. Copy the file `sites/default/default.settings.php` to `sites/default/settings.php` -5. Open `sites/default/settings.php` and line 213, replace - - ```php - $databases = array(); - ``` - -
- by - - ```php - $databases = array ( - 'default' => - array ( - 'default' => - array ( - 'database' => 'yourDatabaseName', - 'username' => 'yourDatabaseUsername', - 'password' => 'yourDatabasePassword', - 'host' => 'yourDatabaseHost(beh2n9c2pai0f98k.mysql.clvrcld.net)', - 'port' => '', - 'driver' => 'mysql', - 'prefix' => '', - ), - ), - ); - ``` -6. Replace the line `$drupal_hash_salt = ''` with `$drupal_hash_salt = 'yoursalt'`. You can generate salts with -[this link](http://www.passwordtool.hu/). -5. As mentioned in this [article](/doc/addons/fs_buckets/), with Git deployments, files that are uploaded by users must be -persisted in a File System Bucket. In order to do so, [add a File Bucket](/doc/addons/fs_buckets/) via the console. -You will then receive your bucket id. -6. At the root of your application, create a `clevercloud/buckets.json` file (create a `clevercloud` -folder in which you create a `buckets.json` file). -7. Add the following lines in this file. Do not forget to replace bucketId by the bucketId you received by email: - - ```javascript - [ - { - "bucket" : "bucketId", - "folder" : "/sites/default/files" - } - ] - ``` - -5. Send these Drupal files via Git. Read this [article](/doc/clever-cloud-overview/add-application/#git-deployment) if you need more information about it. -6. When finished, get the url that you can find in the *domains* panel in the left sidebar. Then open the following link: - -`http://yourapplication.cleverapps.io/install.php` - -Do not forget the **/install.php** page otherwise installation will not happen. -Follow the steps and you're done! diff --git a/runtimes/php/tutorial-wordpress.md b/runtimes/php/tutorial-wordpress.md deleted file mode 100644 index 7d5c00b32..000000000 --- a/runtimes/php/tutorial-wordpress.md +++ /dev/null @@ -1,152 +0,0 @@ ---- -title: Deploy a Wordpress website -shortdesc: This article shows you how to deploy a Wordpress-based website on the Clever Cloud. -tags: -- php ---- - -# Deploy a Wordpress website - -## Create an application - -You can find in [this article](/doc/clever-cloud-overview/add-application/#create-an-application) the process to create an -application. - - -## Two choices for deployment - -During the creation of a PHP application, it is asked if you want to deploy it via FTP or via Git. These two techniques -have their own pros and cons but have the same end result. - -## Deploy via FTP - -1. Download the Wordpress source files on [wordpress.org](http://wordpress.org). - -2. [Add a MySQL database add-on](/doc/addons/clever-cloud-addons/). - -3. Rename the file `wp-config-sample.php` to `wp-config.php`. - -4. Replace in `wp-config.php` the host (for example: bj79c949bvl2deb6.mysql.clvrcld.net), database name, username and -password using the [environment variables](/doc/admin-console/environment-variables/) of the add-on. - -3. [Send these Wordpress files via FTP](/doc/clever-cloud-overview/add-application/#ftp-deployment) using the FTP -credentials displayed in the application' information page. - -6. When finished, you can launch the application with the url that you can find in the *domains* panel in the left sidebar. - - -## Deploy via Git - -1. Download the Wordpress source files on [wordpress.org](http://wordpress.org). - -2. [Add a MySQL database add-on](/doc/addons/clever-cloud-addons/). - -3. Rename the file `wp-config-sample.php` to `wp-config.php`. - -4. Replace in `wp-config.php` the host (for example: bj79c949bvl2deb6.mysql.clvrcld.net), database name, username and -password using the [environment variables](/doc/admin-console/environment-variables/) of the add-on. - -5. As mentioned in this [article](/doc/addons/fs_buckets/), with Git deployments, files that are uploaded by users must -be persisted in a File System Bucket. In order to do so, [add a FS Bucket](/doc/addons/fs_buckets/) via the console. -You will find the bucketId in the [information](/doc/addons/clever-cloud-addons/) section of the FS Bucket add-on. - -6. At the root of your application, create a `clevercloud/buckets.json` file (create a `clevercloud` folder in which -you create a `buckets.json` file). - -7. Add the following lines in this file. Do not forget to replace `bucketId` by the bucketId displayed in the -[information](/doc/addons/clever-cloud-addons/) section of the FS Bucket add-on. - ```javascript - [ - { - "bucket" : "bucketId", - "folder" : "/wp-content/uploads" - } - ] - ``` - -8. Send these Wordpress files via Git. Read this [article](/doc/clever-cloud-overview/add-application/#git-deployment) -if you need more information about it. - -9. When finished, you can launch the application with the url that you can find in the *domains* panel in the left sidebar. - - -### Install a Wordpress plugin with Git - -Wordpress plugins can be installed from the administration panel, to help the user. However, this way doesn't work with -git. Indeed, as explained above, deploying with git prevents to keep files uploaded by the user and the plugin installed -on the admin panel will be lost at the next deployment, because the code of the plugin isn't tracked by git. - -To solve this problem, we recommend to install the plugin manually by copying the content of the plugin to the -`/wp-content/plugins/` folder, add the new files to git and then deploy your application. - -The plugin will then be available in the **Extensions** section of your admin panel and you will be able to manage it -as others Wordpress plugins. To uninstall the plugin, the procedure is the same as before except that you have to delete -the folder corresponding to the plugin you want to delete. The extension will be automatically disabled, but we recommend -you to delete it from you admin panel before removing the file, in order to clean your database and all files that the -plugin could have created. - - -## Optimise and speed-up your Wordpress - -There are multiple ways to optimise your Wordpress and speed-up its response time. -We provide different tools and software to help you in this task as [Varnish](/doc/php/varnish/) for the HTTP cache, -and [Redis](/doc/addons/redis/) for the object caching. - - -### Performance plugins - -
-

Warning:

-

We recommend you to not use performance plugins like W3 Total Cache or JetPack as they are - intended to be used on a shared hosting server.
- We noticed performances problems when performance plugins are enabled and we recommend to use Varnish and Redis - if you need performance optimisations on Clever Cloud.

-
- - -### HTTP Cache with Varnish - -Enabling [Varnish](/doc/tools/varnish/) for your application is very simple. All instances of PHP provide -[Varnish](/doc/tools/varnish/), you just have to configure your application to use it. - -1. To use Varnish in your application, you have to create a `varnish.vcl` file in the `clevercloud` folder of -your application. If this folder doesn't exist, create it in the **root** of your project. - -2. Copy [this code](https://raw.githubusercontent.com/CleverCloud/varnish-examples/master/wordpress.vcl) into the -`varnish.vcl` file you just created. It'll configure Varnish to work with your Wordpress. - -3. To properly purge the Varnish cache of your application when a post is created/updated, a comment is posted, ... -we recommend you to install the [Varnish HTTP Purge](https://wordpress.org/plugins/varnish-http-purge/) plugin to -your Wordpress. It'll purge the Varnish cache for you and give you the possibility to purge it manually. - -If you need to manually purge the Varnish cache, the plugin provides a **Purge Varnish cache** button on the top bar -of your website. - - -### Object cache with Redis - -[Redis](/doc/addons/redis/) offers you a good way to speed-up your application by caching some of the objects of your -application, as the result of SQL queries of your application, improving the response time. - -To enable [Redis](/doc/addons/redis/) for your Wordpress, you need to disable other Object Cache and Data Cache of your -application (as those provided by *W3 Total Cache* for example). Make sure they aren't enabled to avoid conflicts and -performance problems. - -1. [Create a Redis add-on](/doc/addons/clever-cloud-addons/) for your application. - -2. Add the following lines to your `wp-config.php` file. Make sure they are **before** the -`require_once(ABSPATH . 'wp-settings.php');` line, otherwise the Redis connexion will not work for your application and -your application will return only white pages! -```php -define('WP_CACHE_KEY_SALT', 'tvm_'); -define('WP_REDIS_CLIENT', 'pecl'); -define('WP_REDIS_HOST', getenv('REDIS_HOST')); -define('WP_REDIS_PORT', getenv('REDIS_PORT')); -define('WP_REDIS_PASSWORD', getenv('REDIS_PASSWORD')); -``` - -3. Download [this file](http://plugins.svn.wordpress.org/redis-cache/trunk/includes/object-cache.php) -who manages the connexion with Redis and Wordpress and moves it to your `/wp-content` folder. The file **must** be named -`object-cache.php`. - -4. Redis should now work with your Wordpress. diff --git a/runtimes/python/python-django-sample.md b/runtimes/python/python-django-sample.md deleted file mode 100644 index fde4b19db..000000000 --- a/runtimes/python/python-django-sample.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Sample Django application -shortdesc: The goal of this article is to show you how to deploy a Django application on Clever Cloud. -tags: -- python ---- - -# Django sample application - -The goal of this article is to show you how to deploy a Django application on Clever Cloud. - -The application is a very basic one. More information about the application: - -* [Github repo](https://github.com/CleverCloud/django-example) -* [Clever Cloud demo](http://django.cleverapps.io/) - -
-If you want to test our platform and deploy this application, just follow these simple steps: - -1. Clone the [Github repo](https://github.com/CleverCloud/django-example) -2. Git push (deploy) your application. - -

-
-
Reminder
-

Do not forget to add the [clevercloud/python.json](https://github.com/CleverCloud/django-example/blob/master/clevercloud/python.json) in any Python project so that we get your required modules. -

-
- - -

If you need further information, feel free to send an email to . - diff --git a/runtimes/python/python-flask-sample-app.md b/runtimes/python/python-flask-sample-app.md deleted file mode 100644 index 2355d37e3..000000000 --- a/runtimes/python/python-flask-sample-app.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Sample Python application -shortdesc: The goal of this article is to show you how configure and deploy a simple Flask application on Clever Cloud. -tags: -- python ---- - -# Flask Demo - -This is a small Flask app that replies with a header dump to any request. - -You can deploy this application as-is on Clever Cloud: - -```bash -git clone https://github.com/CleverCloud/demo-flask -git remote add clevercloud {your-clever-cloud-endpoint} -git push clevercloud master -``` - -And it will do the trick. - -We demonstrate several Clever Cloud possibilities in this application: - -## Choose python version - -We have a `python_version` file in the `/clevercloud` folder that contains **3**. -This will select the latest *Python 3* version installed (at the time of this writing, 3.4). - -Documentation: [Use Python 3](https://www.clever-cloud.com/doc/python/python_apps/#use-python-3) - -## Build app in a subfolder - -In the `/clevercloud/python.json` file, we have the `"build"."folder"` field that points to the `app` folder. -We will build & run the app from this `app` folder. - - -## Static files - -We set up in `/clevercloud/python.json` a "static" folder: everything in that folder will be served statically. -Note that the static folder will be the root of static files requests. In this example, to get to Cat.svg which is in -the "s" folder in the `/clevercloud/static folder`, you need to request "http://{yourdomain}/s/Cat.svg". - -You can also see that "s" is a link to the static folder at the root of the app. It's just to show that you can do symlinks. - -Documentation: [Manage your static files](https://www.clever-cloud.com/doc/python/python_apps/#manage-your-static-files) - -## Run the app - -As explained in [Select your module](https://www.clever-cloud.com/doc/python/python_apps/#select-your-module) -we ask Clever Cloud to run the "app" Flask application defined in the `hello.py` file. So the "module" field is `hello:app`. \ No newline at end of file diff --git a/runtimes/python/python_apps.md b/runtimes/python/python_apps.md deleted file mode 100644 index 5c0ef8469..000000000 --- a/runtimes/python/python_apps.md +++ /dev/null @@ -1,154 +0,0 @@ ---- -title: Deploy Your App -position: 1 -shortdesc: Python 2.7.8 and 3.4.1 are available on our platform. You can use Git to deploy your application. -tags: -- python ---- - -# Deploy Python apps - -Python is a programming language that lets you work more quickly and integrate your systems more effectively. -You can learn how to use Python and see almost immediate gains in productivity and lower maintenance costs. - - -## Overview - -Python 2.7 and 3.4 are available on our platform. You can use Git to deploy your application. - - -## Create an application - -Refer to the page [Deploy an application on Clever Cloud](/doc/clever-cloud-overview/add-application/). - -## Available extensions and modules - -You are granted to install external libs. As you can do on your workstation you can easily use **pip** and **requirements.txt**. - -For example to install *Flask* and various libs you have to create a file `/requirements.txt` : - -```javascript -SQLAlchemy==0.7.8 -Flask==0.9 -Flask-Admin==1.0.2 -Flask-Assets==0.8 -Flask-DebugToolbar==0.7.1 -Flask-KVSession==0.3.2 -Flask-Mail==0.8.2 -Flask-SQLAlchemy==0.16 -Flask-Script==0.5.3 -Flask-WTF==0.8.3 -webassets==0.8 -pytz==2012d -psycopg2==2.4.5 -``` - -If you have any question, feel free to [contact our support](https://www.clever-cloud.com/doc/get-help/support/). - - -## Configuration file - -The configuration file for your Python application must be `/clevercloud/python.json`. - -You can find a [example of Flask application](/doc/python/python-flask-sample-app/) who use concept detailed below. - - -### Select your module - -To select which module you want to start, use the key `module` in `deploy` like the following: - -```haskell - { - "deploy": { - "module": "mymodule:app" - } - } -``` - -The module (without .py) must be importable, i.e. be in `PYTHONPATH`. For example with *Flask*, it's gonna be the name of -your main server file followed by your Flask object: `server:app` for example if you have a `server.py` file at the root -of your project with a Flask `app` object inside. - -Basically, you should just point to a WSGI capable object. - - -### Manage your static files - -To enable Nginx to serve your static resources you must set your public folder in -`clevercloud/python.json` like below: - -```haskell - { - "deploy": { - "static": "/mypublicfolder" - } - } -``` - -Also, you are able to use a Filesystem Bucket to store your static files. Please refer to the -[File System Buckets](/doc/addons/clever-cloud-addons/#fs-buckets-file-system-with-persistance/) section. - -**Note**: the path of your folder must be absolute regarding the root of your application. - - -### Use Python 3 - -The default version of python on Clever Cloud is **2.7**, if you want to use python **3.4** instead, use the file -`/clevercloud/python_version` and put `3` in it. - -**Note**: the version is an integer, do not use quotes. values allowed are `2` and `3`. - - -## Environment injection - -Clever Cloud can inject environment variables that are defined in the dashboard and by add-ons linked to your application. - -The access to these variables is simple: just get them as you would with any environment variable: - -```python -import os -os.getenv("MY_VARIABLE") -``` - - -## Git Deployment - -*You will need git on your computer to deploy via this tool. Here is the official website of Git to get more -information: [git-scm.com](http://git-scm.com)* - -After you created an app in the [console](https://console.clever-cloud.com), the console prompt you the following message: - -
- -
- - -### Setting up your remotes - -1. The "Information" page of your app gives you your git deployment URL. It looks like this: -``git+ssh://git@push.clever-cloud.com/.git``. Copy it in your clipboard. - -2. On your computer, go into your application repository. -If you didn't already track your app with **git**, start by typing: - - ```bash - $ git init - ``` - -3. Then, use the `git remote` command to add the deploy URL: - - ```bash - $ git remote add - ``` - -4. The last step is to push your application: - - ```bash - $ git push master - ``` - -
-

Warning:

-

The remote branch on Clever Cloud is ALWAYS master. If your local branch is not "master", use this syntax:

-
git push < name > yourbranch:master
-
diff --git a/runtimes/ruby/ruby.md b/runtimes/ruby/ruby.md deleted file mode 100644 index eb22ba575..000000000 --- a/runtimes/ruby/ruby.md +++ /dev/null @@ -1,206 +0,0 @@ ---- -title: Deploy Ruby on Rails apps -shortdesc: Ruby on Rails is an open source web application framework which runs on the Ruby programming language. -tags: -- ruby ---- - -# Deploy Ruby on Rails applications - -Clever Cloud allows you to deploy any Ruby on Rails application. This page will -explain you how to set up your application to run it on our service. - -You do not need to change a lot in your application, the *requirements* will help you configure your applications with some mandatory files to add, and properties to setup. - -## Overview - -Ruby on Rails is an open source web application framework which runs on the Ruby programming language. It is a full-stack framework: it allows creating pages and applications that gather information from the web server, talk to or query the database, and render templates out of the box. As a result, Rails features a routing system that is independent of the web server. - - -## Create an application - -Refer to the page [Deploy an application on Clever Cloud](/doc/clever-cloud-overview/add-application/). - -## Necessary information - -Be sure that: - -* you push to the master branch - -* you commit your Gemfile.lock file - -* you have a config.ru file (This one is most of the time generated by rails) - -## Requirements - -First, your application must use rack. This implies that a config.ru -file is present. - -Then, you need to provide a Gemfile.lock. To do that, please run: - -```bash -.../myapp $ bundle install ## That will generate Gemfile.lock -.../myapp $ git add Gemfile.lock -.../myapp $ git commit -m "Add production dependency file" -``` - -## Choose ruby version - -Simply add this to your Gemfile - -``` -ruby '2.1' -``` - -`rubyversion` must be a string. The given string is tested against the -available versions by using the /^/ regexp. - - * "2" will select the greatest "2.X.Y" version available. - * "2.0" will select the greatest "2.0.Y" version available. - * "2.0.0-p481" will select the "2.0.0-p481" version. - -If given `rubyversion` does not match any available version, your -deployment will fail. - -If you need a version that is not yet installed, please contact the -support to ask for the version to be added. We try to follow the -releases, but, hey, we're human! - -Due to current landscape in ruby applications, the default version is the -greatest 2.1.Y. We provide also the latest 2.2.Y version and the latest -1.9.Y too, but prefer the current stable: 2.1. - -## Configuration secret key production - -You need to use environment injection for `secret_key_base` in file `./config/secret.yml` : - -```yml - # You can use `rake secret` to generate a secure secret key. - # Do not keep production secrets in the repository, - # instead read values from the environment. - production: - secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> -``` - -Clever Cloud can inject environment variables that are defined in the -dashboard and by add-ons linked to your application. - -To access your variable in your application, nothing simpler! Just get -it from your environment, like you would with `PATH`: -`ENV["MY_VARIABLE"]`. - - -## More configuration - -You can configure your deployment via the `clevercloud/ruby.json` -configuration file. This file is optional. - -### Set deployment RUBY_ENV and rake goals to execute - -```javascript -{ - "deploy" : { - "env": "", - "rakegoals": [], - "sidekiq": true - } -} -``` - -The following table describes each field: - - - - - - - - - - - - - - - - - - - - - - - - - - - -
UsageFieldDescription
Optionaldeploy.envThis field is only used for overriding the default "production" RAILS_ENV value.
Optionaldeploy.rakegoals -Specify a list of rake goals to execute. -They will be executed in the order of the list:
-
bundle exec rake "goal1"

-
bundle exec rake "goal2"

-We do not execute any rake goals by default. -
Optionaldeploy.sidekiq -Run a sidekiq process in background. Beware, you will need a redis instance to use this -feature. -
- - -The sidekiq field can also be an array of strings instead of a boolean, like this: - -```javascript -"sidekiq": [ - "./config/sidekiq_1.yml", - "./config/sidekiq_2.yml", - "./config/sidekiq_3.yml" -] -``` - -Each string is the path *from the root of the repository* to a sidekiq configuration file. -Each file might contain something like the following: - -```yaml ---- -:concurrency: 4 -:pidfile: tmp/pids/sidekiq_1.pid -:queues: - - [critical, 2] - - default - -production: - :logfile: ./log/sidekiq.log -``` - -It's a standard sidekiq.yml configuration file. - -### Manage your static files - -To make Nginx serve your static resources you must set your public folder in `clevercloud/ruby.json` like below: - -```haskell - { - "deploy": { - "static": "/mypublicfolder" - } - } -``` - -*Note: the path of your folder must be absolute regarding the root of your application.* - -### Update wsgi buffer size - -The default buffer size for headers is 4096. This is enough for most people. But you might -need to increase that value if your application uses very long query string or headers. - -To change the buffer size, set the `WSGI_BUFFER_SIZE` [environment variable](admin-console/environment-variables) in the Clever Cloud console. - -Example: - -``` -WSGI_BUFFER_SIZE=8192 -``` - -## Deploy on Clever Cloud - -Application deployment on Clever Cloud is via Git. Follow [these steps](/doc/clever-cloud-overview/add-application/) to deploy your application. diff --git a/runtimes/ruby/tutorial-ruby.md b/runtimes/ruby/tutorial-ruby.md deleted file mode 100644 index af07dd9a3..000000000 --- a/runtimes/ruby/tutorial-ruby.md +++ /dev/null @@ -1,124 +0,0 @@ ---- -title: Hello world tutorial -shortdesc: How to write a hello world web application using Rack and deploy it on the Clever Cloud. -tags: -- ruby ---- -# Hello World tutorial for Rack-based application - -## Introduction - -Currently, the Clever Cloud supports Rack-based applications. -Created in 2007, Rack has become the de-facto standard for ruby -web applications. - - -## Dependencies - -To follow this tutorial, you will need: - -* Ruby >= 1.9.2 (w/ Rubygems) - -* Bundler (`gem install bundler` and you're good to go!) - -* Your preferred editor - -* Git (for the deploy part) - -
-To manage your gems and ruby versions, we recommend rbenv. -If you use a system-wide installation of ruby, You will have to use `sudo` with the `gem` and `bundle` commands, -or use arguments that will make gem and bundle install the gem in directories you have write-permissions in. -
- - -## Create and write your application - -```bash -$ mkdir helloworld-rack -$ cd !$ # or 'helloworld-rack'. -$ touch hello.rb config.ru Gemfile -``` - -Inside `hello.rb` put the following: - -```ruby -class HelloWorld - def call(env) - [200, {"Content-Type" => "text/plain"}, ["Hello world!"]] - end -end -``` - -Inside the `config.ru` (That is, the main Rack entry-point) put: - -```ruby -require './hello' -run HelloWorld.new -``` - -The `Gemfile` file will contain our dependencies: - -```ruby -source 'https://rubygems.org' - -gem 'rack', '~>1.5.1' -``` - -We don't need any more dependencies. The Gemfile is mandatory to deploy -on the Clever Cloud. - - -## Test your application - -To test your application, just fetch the dependencies using bundler: - -```bash -$ bundle -Fetching gem metadata from https://rubygems.org/.......... -Resolving dependencies... -Using rack (1.5.2) -Using bundler (1.3.5) -Your bundle is complete! -Use `bundle show [gemname]` to see where a bundled gem is installed. -$ rackup # That will start your application -[2013-09-16 17:35:26] INFO WEBrick 1.3.1 -[2013-09-16 17:35:26] INFO ruby 2.0.0 (2013-06-27) [x86_64-linux] -[2013-09-16 17:35:26] INFO WEBrick::HTTPServer#start: pid=5656 port=9292 -``` - -You can now test with your browser at localhost:9292. - - - -## Deploy your application - -1. Using the Clever Cloud console, create a new Ruby application (https://console.clever-cloud.com/users/me/applications/new). -2. Initialize and set up a the git repository for your application: - -```bash -$ git init -Initialized empty Git repository in /*******/helloworld-rack/.git/ -$ git add config.ru Gemfile Gemfile.lock hello.rb -$ git commit -m "Initial commit, ready for clever push" -[master (root-commit) eaadcfc] Initial commit, ready for clever push - 4 files changed, 20 insertions(+) - create mode 100644 Gemfile - create mode 100644 Gemfile.lock - create mode 100644 config.ru - create mode 100644 hello.rb -$ git remote add cleverapps git+ssh://git@push.clever-cloud.com/app_xxxxx-xxxxx-xxxxx-xxxxx-xxxxxx.git -$ git push cleverapps master -Counting objects: 6, done. -Delta compression using up to 2 threads. -Compressing objects: 100% (5/5), done. -Writing objects: 100% (6/6), 641 bytes | 0 bytes/s, done. -Total 6 (delta 0), reused 0 (delta 0) -remote: {"id":320,"message":"The application has successfully been queued for redeploy.","type":"success"} -To git+ssh://git@push.clever-cloud.com/app_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.git - * [new branch] master -> master -``` - - -And now, wait till the end of the deployment. You can check the logs in the console. -Our demo for this tutorial is here: https://helloworld-rack-demo.cleverapps.io/. diff --git a/runtimes/scala/play-framework-1.md b/runtimes/scala/play-framework-1.md deleted file mode 100644 index b68fd5184..000000000 --- a/runtimes/scala/play-framework-1.md +++ /dev/null @@ -1,107 +0,0 @@ ---- -title: Play Framework 1 -position: 1 -shortdesc: Play is an open source web application framework, written in Scala and Java, which follows the modelโ€“viewโ€“controller (MVC) architectural pattern. -tags: -- scala ---- - -# Deploy Play Framework 1.x - -Clever Cloud supports Play 1.x applications natively. The present guide explains how to set up your application to run -on Clever Cloud. - -## Overview - -Play is an open source web application framework, written in Scala and Java, which follows the modelโ€“viewโ€“controller -(MVC) architectural pattern. It aims to optimize developer productivity by using convention over configuration, hot code -reloading and display of errors in the browser. - -## Create an application - -Refer to the page [Deploy an application on Clever Cloud](/doc/clever-cloud-overview/add-application/). - -## Necessary information - -* The application must be located at the **root** of the git repository. - -## Select Play! version - -Clever Cloud supports Play! **1.2** and **1.3**. You can select the Play! version for your application by creating a -`play1_version` file in the `/clevercloud` folder. - -The `play1_version` file can contain one of the following values: - -* `1.2` or `12` for **Play! 1.2**. -* `1.3` or `12` for **Play! 1.3**. - - -## Play! configuration - -By default, your application will run on Clever Cloud with the option `--%clevercloud`. -It means that you can define special keys in your `application.conf` file that will be used only on Clever Cloud. - -You can for example: - -* set production mode so the files are compiled at startup time and the errors are logged in a file: - - ```bash - %clevercloud.application.mode=prod - ``` - -* set up a mysql database - - ```bash - %clevercloud.db.url=jdbc:mysql://{yourcleverdbhost}/{dbname} - %clevercloud.db.driver=com.mysql.jdbc.Driver - %clevercloud.db.user={yourcleveruser} - %clevercloud.db.pass={yourcleverpass} - ``` - -More information on [playframework.com](http://www.playframework.com). - -## Configuration file - -You can configure your application start command by adding a `./clevercloud/play.json` file with the following fields: - -```javascript -{ - "hooks": { - "postDeploy": "pathtoyourscript" - } -} -``` - -**postDeploy**: execute a custom script after the deploy. Some frameworks or custom applications might require -bootstrapping before the application may run. You can achieve this by creating a custom script with your commands and -adding the associated file name in `clevercloud/play.json`. - -## Environment injection - -Clever Cloud can inject environment variables that are defined in the -dashboard and by add-ons linked to your application. - -To access the environment variables from your application, you need to -reference them in your application.conf file: -you just have to put `my.option=${MY_VARIABLE}` in your application.conf file, and then use -the configuration item `my.option` in your application. - -So for an application using the MySQL add-on, you can set: - -```bash -%clevercloud.db.url="jdbc:mysql://"${MYSQL_ADDON_HOST}"/"${MYSQL_ADDON_DB} -%clevercloud.db.driver=com.mysql.jdbc.Driver -%clevercloud.db.user=${MYSQL_ADDON_USER} -%clevercloud.db.pass=${MYSQL_ADDON_PASSWORD} -``` - -## HTTPS support - -HTTPS is handled by Clever Cloud ahead of your application, your application -retrieves the traffic in plain http. To be able to use `request.secure`, you -have to add `XForwardedSupport=all` in `application.conf`. - -## Deploy on Clever Cloud - -Application deployment on Clever Cloud is via Git. Follow [these steps](/doc/clever-cloud-overview/add-application/) to -deploy your application. diff --git a/runtimes/scala/play-framework-2.md b/runtimes/scala/play-framework-2.md deleted file mode 100644 index 82279793e..000000000 --- a/runtimes/scala/play-framework-2.md +++ /dev/null @@ -1,147 +0,0 @@ ---- -title: Play Framework 2 -position: 2 -shortdesc: Play is an open source web application framework, written in Scala and Java, which follows the modelโ€“viewโ€“controller (MVC) architectural pattern. -tags: -- scala ---- - -# Deploy Play Framework 2 Scala - -Clever Cloud supports Play! 2 applications natively. The following guide explains how to set up your application to run the Clever Cloud. -To support the Play! 2 framework, we use SBT. - -## Overview - -Play is an open source web application framework, written in Scala and Java, which follows the modelโ€“viewโ€“controller (MVC) architectural pattern. It aims to optimize developer productivity by using convention over configuration, hot code reloading and display of errors in the browser. - -## Create an application - -Refer to the page [Deploy an application on Clever Cloud](/doc/clever-cloud-overview/add-application/). - -## Necessary information - -* The application must be located at the **root** of the git repository. -* Starting from **Play 2.4**, your application needs **Java 8** to run. Please read [select java version](https://www.clever-cloud.com/doc/java/select-java-version/) for more information. - -## Configuration file - -You can configure your application start command by adding a `./clevercloud/sbt.json` file with the following fields: - -```javascript -{ - "deploy":{ - "goal": "yourgoal" - }, - "hooks": { - "postDeploy": "pathtoyourscript" - } -} -``` - -**goal**: can for example contain additional configuration like -`"-Dconfig.resource=clevercloud.conf"` or `"-Dplay.version=2.0.4"`. - - -**postDeploy**: execute a custom script after the deploy. Some frameworks or custom applications might require bootstrapping before the application may run. -You can achieve this by creating a custom script with your commands and -adding the associated file name in `clevercloud/sbt.json`. - -## Environment injection - -Clever Cloud can inject environment variables that are defined in the -dashboard and by add-ons linked to your application. - -There are two way to access the environment variables from your application: - - * you can reference them in your application.conf file: - you just have to put `my.option=${MY_VARIABLE}` in your application.conf file, and then use - the configuration item `my.option` in your application. - - * you can also use the `System.getenv("MY_VARIABLE")` method. Be aware that it can return null. - -So for an application using the MySQL add-on, you can set: - -```bash -db.default.driver=org.postgresql.Driver -db.default.url="jdbc:postgresql://"${POSTGRESQL_ADDON_HOST}"/"${POSTGRESQL_ADDON_DB} -db.default.user=${POSTGRESQL_ADDON_USER} -db.default.password=${POSTGRESQL_ADDON_PASSWORD} -``` - -## Known problems with Play! 2 - -Please read the following if your project fails with this error: - -`sbt.ResolveException: unresolved dependency: play#sbt-plugin;2.0: not found` - -Some versions of Play2 try to retrieve a nonexistent version of -"sbt-plugin" which is required by the framework to work. -You have two options to fix this problem: - -You can set the "play.version" environment variable in the -`/clevercloud/sbt.json` file. -For example, for Play 2.0.4: - -``` javascript -{ - "deploy": { - "goal": "-Dplay.version=2.0.4" - } -} -``` - -Otherwise, you can modify `plugins.sbt` in the project folder of your -app like the following: - -``` scala -// Comment to get more information during initialization -logLevel := Level.Warn - -// The Typesafe repository -resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/" - -// Use the Play sbt plugin for Play projects -addSbtPlugin("play" % "sbt-plugin" % "2.0.4") // The important part of the configuration -``` - -The two solutions do the job, you can pick your favorite. - -## Failed to acquire connection: Too many connections - -You may run into this error during deployments: - -``` scala -[error] c.j.b.h.AbstractConnectionHook - Failed to acquire connection to jdbc:
Sleeping for 1000ms and trying again. Attempts left: 10. Exception: null.Message:FATAL: too many connections for role "" -``` - -By default, Play! opens a pool of 10 connections, which is more than the -connection limit allowed by DEV database plans. During a no-downtime -deployment, there are at least two instances of the application running in -parallel, so it's 20 connections. - -To avoid connection exhaustion, you should limit your pool at half the number -of available connections (if you have horizontal scaling enabled, adjust -accordingly). - -``` scala -# conf/application.conf - -db.default.partitionCount=2 -db.default.maxConnectionsPerPartition=5 -db.default.minConnectionsPerPartition=5 -``` - - -## HTTPS support - -HTTPS is handled by Clever Cloud ahead of your application, your application -retrieves the traffic in plain http. To be able to use `request.secure`, you -have to add `trustxforwarded=true` in `application.conf`. - -## Deploy on Clever Cloud - -Application deployment on Clever Cloud is via Git. Follow [these steps](/doc/clever-cloud-overview/add-application/) to deploy your application. - - -More info on playframework.com. diff --git a/runtimes/scala/scala.md b/runtimes/scala/scala.md deleted file mode 100644 index b42b54a75..000000000 --- a/runtimes/scala/scala.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: Scala with SBT -shortdesc: Scala is an object-functional programming and scripting language that runs on the Java platformโ€ฆ -tags: -- scala ---- - -# Deploy Scala apps - -The Clever Cloud allows you to deploy Scala and Java applications built with SBT. -This document will explain you how to set up your app to run on our service. - -## Overview - -Scala is an object-functional programming and scripting language that runs on the Java platform for general software -applications, statically typed, designed to concisely express solutions in an elegant, type-safe and lightweight manner. -Scala includes full support for functional programming (including currying, pattern matching, algebraic data types, lazy -evaluation, tail recursion, immutability, etc.). - -## Create an application - -Refer to the page [Deploy an application on Clever Cloud](/doc/clever-cloud-overview/add-application/). - -## Requirements - -First, your application must be set to listen on the 8080 port, for worldwide -connections. - -We currently support both sbt-native-packager and sbt-start-script. So -you need to add one of them to your project. (Please use sbt-native-packager if you can, -sbt-start-script has some bugs involving environment variables) - -These plugins will add the "stage" goal that we will use to create a -start script we will execute. - -In project/plugins.sbt: - -```scala -addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "0.8.0") -``` - -or - -```scala -addSbtPlugin("com.typesafe.sbt" % "sbt-start-script" % "0.10.0") -// Or 0.9.0 if you use sbt โ‰ค0.12 -``` - - -You can also use newer (or older) versions of the plugin. - -Prepend to build.sbt: - -```scala -packageArchetype.java_application -``` - -or - -```scala -import com.typesafe.sbt.SbtStartScript - -seq(SbtStartScript.startScriptForClassesSettings: _*) -``` - -That should be enough for a project with a main method. - -Please note that the sbt-start-script plugin is going toward deprecation. Also, please -note that sbt-start-script fails to handle environment variables in a correct way. - -For more configuration, please go to https://github.com/sbt/sbt-start-script. - -## Environment injection - -Clever Cloud can inject environment variables that are defined in the -dashboard and by add-ons linked to your application. - -To get an env variable from your code, you can use the `System.getenv("MY_VARIABLE")` method. Be aware that it can return null. - -## Deploy on Clever Cloud - -Application deployment on Clever Cloud is via Git. Follow [these steps](/doc/clever-cloud-overview/add-application/) to deploy your application. diff --git a/shared/blackfire.md b/shared/blackfire.md new file mode 100644 index 000000000..786649e4d --- /dev/null +++ b/shared/blackfire.md @@ -0,0 +1,5 @@ +### Monitor your application with Blackfire + +You can use [Blackfire](https://www.blackfire.io/) to monitor your application on Clever Cloud. + +Please refer to our [Blackfire documentation](/doc/metrics/blackfire) to configure it for your application. diff --git a/shared/cached-dependencies.md b/shared/cached-dependencies.md new file mode 100644 index 000000000..4477905f9 --- /dev/null +++ b/shared/cached-dependencies.md @@ -0,0 +1,15 @@ +### Cached dependencies + +#### Enabling dependencies caching + +You can enable dependencies caching by adding the `CC_CACHE_DEPENDENCIES=true` [environment variable](#setting-up-environment-variables-on-clever-cloud) in your application. It is enabled by default only for rust and haskell applications. + +#### Disabling dependencies caching + +You can disable dependencies caching completely by removing the `CC_CACHE_DEPENDENCIES` environment variable from the Clever Cloud console, in the **Environment variables** menu of your application. + +Or by setting it to `CC_CACHE_DEPENDENCIES=false` + +To fully remove cached dependencies, you have to rebuild your application from scratch. + +You can select "rebuild and restart" from the Clever Cloud console or launch `clever restart --without-cache` with the Clever Tools CLI. diff --git a/shared/ci-cd-configuration.md b/shared/ci-cd-configuration.md new file mode 100644 index 000000000..5acccf88c --- /dev/null +++ b/shared/ci-cd-configuration.md @@ -0,0 +1,11 @@ + +### Mandatory configuration + +Your repository must contain at least the following variables to use the CLI: + +- `CLEVER_TOKEN` +- `CLEVER_SECRET` + +Find it in your machine, usually in `~/.config/clever-cloud/clever-tools.json`, after installing [Clever Tools](https://github.com/CleverCloud/clever-tools/). + +โš ๏ธ `CLEVER_TOKEN` and `CLEVER_SECRET` expire after one year. Make sure to set a reminder to inject the new ones to avoid breaking your pipelines. diff --git a/shared/create-application.md b/shared/create-application.md new file mode 100644 index 000000000..f64071aaf --- /dev/null +++ b/shared/create-application.md @@ -0,0 +1,17 @@ + +## Create an application on Clever Cloud + +### With the web console + +Refer to [Quickstart](/doc/quickstart) for more details on application creation via the console. + +### With the Clever Tools CLI + +1. Make sure you have clever-tools installed locally or follow our [CLI getting started](/doc/cli/) guide. +2. In your code folder, do `clever create --type --region --org ` where : + 1. `type` is the type of technology you rely on + 2. `app-name` the name you want for your application, + 3. `zone` deployment zone (`par` for Paris and `mtl` for Montreal) + 4. `org` the organisation ID the application will be created under. + +Refer to [clever create](/doc/cli/applications/) for more details on application creation with Clever Tools. diff --git a/shared/db-backup.md b/shared/db-backup.md new file mode 100644 index 000000000..367e169de --- /dev/null +++ b/shared/db-backup.md @@ -0,0 +1,5 @@ +## Database Daily Backup and Retention + +By default, Clever Cloud performs a free backup every day, with a retention of seven days. Retention and frequency can be customized for Premium customers. + +Each backup can be found in the add-on dashboard in the web console, along with the credentials. diff --git a/shared/db-migration.md b/shared/db-migration.md new file mode 100644 index 000000000..3d384af32 --- /dev/null +++ b/shared/db-migration.md @@ -0,0 +1,10 @@ +## Migrate your database + +Clever Cloud provides an add-on Migration/Upgrade tool. You can access it from the [Console](https://console.clever-cloud.com), in the left menu when an add-on is selected. It allows to choose a higher plan, a new version or another deployment zone. + +A migration process creates new instances, moves your data into it and stops the old ones if the process ended correctly. In case of a failure during migration, new instances are deleted and you go back to the original ones. +The duration may vary depending on how much data your add-on has. Your database becomes read only for the entire duration. + +If you want to restart your add-on or update to the last supported version of the current branch, migrate it to the same plan, version, zone. + +- [More Clever Cloud Tips and Tricks](/doc/best-practices/tips_and_tricks/) diff --git a/shared/deploy-ftp.md b/shared/deploy-ftp.md new file mode 100644 index 000000000..18b019489 --- /dev/null +++ b/shared/deploy-ftp.md @@ -0,0 +1,13 @@ +## FTP Deployment + +Make sure you have [Filezilla](https://filezilla-project.org/) or an other FTP software installed in your machine. + +When you chose to deploy your application via FTP at the application creation, the system creates a free [FS Bucket](/doc/addons/fs-bucket) with an ID matching your application's ID. + +Find the FTP credentials in the configuration tab of this particular FS Bucket. + +Just follow the instructions of your FTP Software to send code to Clever Cloud. + +โš ๏ธ **An FTP application automatically starts once you create the application, even if you don't send any code yet.** + +Refer to [Quick Start - FTP deployment](/doc/quickstart#ftp-deployment) for more details. diff --git a/shared/deploy-git.md b/shared/deploy-git.md new file mode 100644 index 000000000..bed2a8ef4 --- /dev/null +++ b/shared/deploy-git.md @@ -0,0 +1,19 @@ +## Git Deployment on Clever Cloud + +*You need Git on your computer to deploy via this tool. Here is the official website of Git to get more information: [git-scm.com](https://git-scm.com)* + +### Setting up your remotes + +1. The "Information" page of your app gives you your Git deployment URL, it looks like this: + 1. `git+ssh://git@push.clever-cloud.com/.git` + 2. Copy it in your clipboard + +2. Locally, under your code folder, type in `git init` to set up a new git repository or skip this step if you already have one + +3. Add the deploy URL with `git remote add ` + +4. Add your files via `git add ` and commit them via `git commit -m ` + +5. Now push your application on Clever Cloud with `git push master` + +Refer to [git deployments](/doc/quickstart) for more details. diff --git a/shared/env-injection.md b/shared/env-injection.md new file mode 100644 index 000000000..aa02a543d --- /dev/null +++ b/shared/env-injection.md @@ -0,0 +1,8 @@ +## Environment injection + +Clever Cloud injects environment variables from your application settings as mentioned in [setting up environment variables](#setting-up-environment-variables-on-clever-cloud) and is also injecting in your application production environment, those from your [linked add-ons](#linking-a-database-or-any-other-add-on-to-your-application). + +### Custom build configurations + +On Clever Cloud you can define some build configuration: like the app folder to deploy or the path to validate your application deployment is ready +To do that follow the [documentation here](/doc/reference/reference-environment-variables/#variables-you-can-define) and add the environment variable you need. diff --git a/shared/git-push.md b/shared/git-push.md new file mode 100644 index 000000000..bba67c947 --- /dev/null +++ b/shared/git-push.md @@ -0,0 +1,21 @@ +## Push your code + +Once you complete these steps, commit your content to the local repository and deploy it: + +```bash +git add . +git commit -m "First deploy" +clever deploy +clever open +``` + +You can display your website's URL or add a custom domain to it (you'll need to configure DNS): + +```bash +clever domain +clever domain add your.website.tld +``` + +## 404 page location + +If you need to use a specific page for 404 errors, define its location with `SERVER_ERROR_PAGE_404` environment variable from Static Web Server, used as default in `static` runtime. For example : `SERVER_ERROR_PAGE_404=404.html`. diff --git a/shared/java-versions.md b/shared/java-versions.md new file mode 100644 index 000000000..de51a9958 --- /dev/null +++ b/shared/java-versions.md @@ -0,0 +1,9 @@ +## Available Java versions + +Set the environment variable `CC_JAVA_VERSION` to the version you want. + +We follow the official Java [roadmap](https://www.oracle.com/java/technologies/java-se-support-roadmap.html) by supporting both LTS and latest non-LTS versions. + +We are using OpenJDK distribution for mentioned Java versions. + +Every non-LTS versions where _Premier support_ ends will be removed without warning as you should be able to switch to the next available non-LTS version without any trouble. diff --git a/shared/kv-explorer.md b/shared/kv-explorer.md new file mode 100644 index 000000000..29ce77bec --- /dev/null +++ b/shared/kv-explorer.md @@ -0,0 +1,21 @@ +## Clever Cloud KV Explorer + +Access and edit your Key-Value databases with the **KV Explorer** tool, it's part of Clever Cloud's all included experience. + +### Supported data types + +Hash, list, set and string types are supported. For Materia KV, only string type is currently available, with other types coming soon. + +### An intuitive, useful interface + +The interface lets you filter keys by type and perform wildcard searches (for example: `*value_to_search*`). Value fields are multi-line for convenience, and you can copy/paste values directly from the interface. Special attention has been paid to accessibility and keyboard navigation with shortcuts to optimize your experience. + +### KV Explorer Terminal + +At the bottom of the page, you'll find an integrated terminal that works like a traditional CLI client. Type your commands and press Enter to execute them. All commands are supported, including `FLUSHDB` and `FLUSHALL`. Be careful with these as they erase data! + +KV Explorer is in Beta testing phase and we'll improve it over the coming months, thanks to your feedback and suggestions. + +- [ Share your feedback on KV Explorer](https://github.com/CleverCloud/Community/discussions/categories/kv-explorer) + +![KV Explorer](/images/kv-explorer.webp "The KV Explorer tool in the Console") diff --git a/shared/link-addon.md b/shared/link-addon.md new file mode 100644 index 000000000..8e8acfafb --- /dev/null +++ b/shared/link-addon.md @@ -0,0 +1,15 @@ +## Linking a database or any other add-on to your application + +By linking an application to an add-on, the application has the add-on environment variables in its own environment by default. + +### On add-on creation + +Many add-ons do exist on Clever Cloud: refer to [the full list](/doc/addons) and check add-ons dedicated pages for full instructions. + +During add-on creation, an **Applications** screen appears, with a list of your applications. You can toggle the button to *Link* and click *next*. If you finish the process of add-on creation, the application is automatically linked to it. + +### Add-on already exists + +In the Clever Cloud console, under the **Service Dependencies** menu of your application, you can use the *Link add-ons* dropdown menu to select the name of the add-on you want to link and use the *add* button to finish the process. + +You can also link another application from the same page in the Clever Cloud console, using the *Link applications* dropdown menu. diff --git a/shared/mise.md b/shared/mise.md new file mode 100644 index 000000000..5fd574ea9 --- /dev/null +++ b/shared/mise.md @@ -0,0 +1,7 @@ +### Install tools with Mise package manager + +[Mise](https://mise.jdx.dev) is available on all Clever Cloud runtimes to install and manage tools and dependencies. Add a `mise.toml` file at the root of your project and all defined tools are installed at the specified version before the build phase. To place this file in a subdirectory, set the `CC_MISE_FILE_PATH` environment variable to its relative path (e.g. `config/mise.toml`). You can also use Mise to define [environment variables](https://mise.jdx.dev/environments/) and [tasks](https://mise.jdx.dev/tasks/) in a declarative way. + +To disable Mise tool installation, set `CC_DISABLE_MISE` environment variable to `true`. + +- [Learn more about Mise configuration](https://mise.jdx.dev/configuration.html) diff --git a/shared/more-config.md b/shared/more-config.md new file mode 100644 index 000000000..e1fa63df6 --- /dev/null +++ b/shared/more-config.md @@ -0,0 +1,9 @@ +## More configuration + +Need more configuration? To run a script at the end of your deployment? To add your private SSH key to access private dependencies? + +Go check the [Common configuration page](/doc/reference/common-configuration). + +You may want to have an advanced usage of your application, in which case we recommend you to read the **Administrate** documentation section. + +If you can't find something or have a specific need like using a non supported version of a particular software, please reach out to the [support](/doc/find-help/support). diff --git a/shared/new-relic.md b/shared/new-relic.md new file mode 100644 index 000000000..205446214 --- /dev/null +++ b/shared/new-relic.md @@ -0,0 +1,5 @@ +### Monitor your application with New Relic + +You can use [New Relic](https://www.newrelic.com/) to monitor your application on Clever Cloud. + +Please refer to our [New Relic documentation](/doc/metrics/new-relic) to configure it for your application. diff --git a/shared/pgpool.md b/shared/pgpool.md new file mode 100644 index 000000000..8b67df536 --- /dev/null +++ b/shared/pgpool.md @@ -0,0 +1,3 @@ +Pgpool-II is a proxy software that sits between PostgreSQL servers and a PostgreSQL database client. + +You can read the [official project page](https://www.pgpool.net/docs/latest/en/html/intro-whatis.html) for more information. diff --git a/shared/proxysql.md b/shared/proxysql.md new file mode 100644 index 000000000..7ac47b6e0 --- /dev/null +++ b/shared/proxysql.md @@ -0,0 +1,4 @@ +ProxySQL is a tool that acts like a proxy between your application and your MySQL add-on. Instead of connecting to your MySQL add-on, you can connect +to the local ProxySQL and it will forward all your requests to your MySQL add-on. + +This allows you to let ProxySQL take care of some interesting features like connection pooling or leader / follower setup. diff --git a/shared/redirectionio.md b/shared/redirectionio.md new file mode 100644 index 000000000..04dbcaa2d --- /dev/null +++ b/shared/redirectionio.md @@ -0,0 +1,11 @@ +## Use Redirection.io as a proxy + +[Redirection.io](https://redirection.io) can help reduce HTTP traffic issues on your website. It gives complete control over how HTTP requests are handled, which helps make it SEO-friendly. You can link any application to a Redirection.io project by setting the following environment variables. Port allocation is managed automatically by [Request Flow](/doc/develop/request-flow/). + +| Name | Description | Default value | +|-----------------------|------------------------------|--------------------------------| +| `CC_REDIRECTIONIO_PROJECT_KEY` | The Redirection.io project key | | +| `CC_REDIRECTIONIO_FORWARD_PORT` | Override the port Redirection.io forwards traffic to (optional) | | +| `CC_REDIRECTIONIO_INSTANCE_NAME` | The name of your application (optional) | | + +- [Learn more about Redirection.io](https://redirection.io/) diff --git a/shared/request-flow.md b/shared/request-flow.md new file mode 100644 index 000000000..1fe40c7f3 --- /dev/null +++ b/shared/request-flow.md @@ -0,0 +1,15 @@ +## Request Flow: Varnish, Redirection.io, custom proxy + +Request Flow automatically chains reverse proxies between port `8080` (public) and your application, managing port allocation with no manual configuration. Supported services are activated by their presence in your project: + +- **Otoroshi Challenge**: set `OTOROSHI_CHALLENGE_SECRET` +- **Varnish**: add a `clevercloud/varnish.vcl` file or set `CC_VARNISH_FILE` +- **Redirection.io**: set `CC_REDIRECTIONIO_PROJECT_KEY` + +All three can be active simultaneously. To control the order, set `CC_REQUEST_FLOW` (e.g. `redirectionio,varnish`). To add a custom middleware, include `custom` in the chain and define `CC_REQUEST_FLOW_CUSTOM` with `@@LISTEN_PORT@@` and `@@FORWARD_PORT@@` placeholders. To block public access, set `CC_REQUEST_FLOW=block`. + +When at least one middleware is active, your application must listen on port `9000` instead of `8080`. + +- [Learn more about Request Flow](/doc/develop/request-flow/) +- [Learn more about Varnish on Clever Cloud](/doc/develop/varnish/) +- [Learn more about Redirection.io](https://redirection.io/) diff --git a/shared/ruby.md b/shared/ruby.md new file mode 100644 index 000000000..55d18a936 --- /dev/null +++ b/shared/ruby.md @@ -0,0 +1,191 @@ +## Configure your Ruby on Rails application + +### Mandatory configuration + +Be sure that: + +* you push to the **master branch** +* you commit your `gems.locked` or `Gemfile.lock` file +* you have a `config.ru` file (this one is most of the time generated by rails) +* you have `gem puma` in your `Gemfile` (`puma` is the default application server from rails, when creating a new ruby application, an [environment variable](#setting-up-environment-variables-on-clever-cloud) is automatically added: `CC_RACKUP_SERVER=puma`) + +You need to provide a `gems.locked` or `Gemfile.lock` file. To do that ensure you have at least once run `bundle install` in your terminal at the root of your rails project. + +### Choose ruby version + +If you specify a ruby version in your `gems.rb` of `Gemfile`, we'll use it, otherwise; keep reading. + +On your Clever Cloud application create an [environment variable](#setting-up-environment-variables-on-clever-cloud) `CC_RUBY_VERSION=rubyversion` where `rubyversion` represents: + +* "3" will select the greatest "3.X.Y" version available. +* "3.3" will select the greatest "3.3.Y" version available. +* "3.3.1" will select the "3.3.1" version. + +Due to current landscape in ruby applications, the default version is the greatest 3.3.Y. We also provide versions 2.3.Y, 2.4.Y, 2.5.Y, 2.6.Y and 2.7.Y. + +If given `rubyversion` does not match any available version, your deployment will fail. + +### Choose your environment + +You can set the `RUBY_ENV` [environment variable](#setting-up-environment-variables-on-clever-cloud) to the value you want. By default it is set to `production`. +Most used values are `production` and `development` but you can use any custom one as long as you have set up of the required variables for this environment in your `./config/` folder files. + +### Secure configuration of secret key + +There are many way to add secret key to your environment and each one is valid. Clever Cloud provides you a secure way so you don't have to commit any file containing it. + +1. generate the secret key locally with `rake secret` +2. add it to your environment in `./config/secret.yml` with: + + ```yaml + production: + secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> + ``` + +### Configure Rake goals + +You can specify a list of rake goals to execute before the deployment of your application by using the `CC_RAKEGOALS` environment variable. + +The value of this variable must be a comma-separated list of goals, for instance: + +```bash +CC_RAKEGOALS="db:migrate, assets:precompile" +``` + +We do not execute any rake goals by default. + +### Configure Sidekiq + +To run a Sidekiq process in background you will need to enable it with the `CC_ENABLE_SIDEKIQ=true` environment variable. + +Please note you will need a Redis instance to use this feature. + +You can specify multiple Sidekiq configuration files with the `CC_SIDEKIQ_FILES` environment variable. + +The value of this variable must be a comma-separated list of files: + +```bash +CC_SIDEKIQ_FILES="./config/sidekiq_1.yml,./config/sidekiq_2.yml,./config/sidekiq_3.yml" +``` + +One Sidekiq process will be started per configuration file. + +**Note:** `CC_SIDEKIQ_FILES` have precedence over `CC_ENABLE_SIDEKIQ` which means that even if `CC_SIDEKIQ_FILES` is defined and `CC_ENABLE_SIDEKIQ` is set to `false`, Sidekiq will still be enabled. + +Each path is the path *from the root of the repository* to a sidekiq configuration file. + +Each file might contain something like this standard sidekiq.yml file: + +```yaml +--- +:concurrency: 4 +:pidfile: tmp/pids/sidekiq_1.pid +:queues: + - [critical, 2] + - default + +production: + :logfile: ./log/sidekiq.log +--- +``` + +### Manage your static files and assets + +For a standard Rails application using the asset pipeline, you typically do not need to set `STATIC_FILES_PATH` or `STATIC_URL_PREFIX`. Rails serves assets through the application itself. Make sure to include the `assets:precompile` task in the `CC_RAKEGOALS` environment variable value: + +```bash +CC_RAKEGOALS="db:migrate, assets:precompile" +``` + +If you need NGINX to serve static files directly (for example, for a non-Rails Rack application), configure these [environment variables](#setting-up-environment-variables-on-clever-cloud): + +`STATIC_FILES_PATH`: should point to a directory where your static files are stored. The path must be absolute regarding the root of your application. + +`STATIC_URL_PREFIX`: the URL path under which you want to serve static files (for example `/public/`). If not set, NGINX serves common static file extensions automatically. + +### Using Active Storage and Cellar S3 + +Only for Rails >= 5.2. + +* Enable Active Storage for your application: `$ rails active_storage:install` then `$ rake db:migrate` +* Add `gem "aws-sdk-s3", require: false` to your Gemfile, run `$ bundle install` +* Add `config.active_storage.service = :clevercloud` in `config/environments/production.yml` +* Add in `config/storage.yml`: + + ```yaml + clevercloud: + service: S3 + access_key_id: <%= ENV['CELLAR_ADDON_KEY_ID'] %> + secret_access_key: <%= ENV['CELLAR_ADDON_KEY_SECRET'] %> + region: us-east-1 + bucket: <%= ENV['CELLAR_ADDON_BUCKET_NAME'] %> + endpoint: <%= ENV['CELLAR_ADDON_ENDPOINT'] %> + force_path_style: true + ``` + +* In the clever cloud console create a Cellar S3 storage add-on, name it, link it to your rails application and create a bucket. +* In the environment variables section of your Ruby on Rails application on Clever Cloud add the following environment variables: + + ```bash + CELLAR_ADDON_BUCKET_NAME="" + CELLAR_ADDON_ENDPOINT="https://cellar-c2.services.clever-cloud.com" + ``` + +You can now commit and push your changes. + +Also, you are able to use a Filesystem Bucket to store your static files. Please refer to the +[File System Buckets](/doc/addons/fs-bucket) section. + +### NGINX configuration + +NGINX settings can be configured with [environment variables](#setting-up-environment-variables-on-clever-cloud): + +* `NGINX_READ_TIMEOUT`: the response timeout in seconds. (Default: 300) + +#### Basic authentication + +If you need basic authentication, you can enable it using [environment variables](/doc/reference/reference-environment-variables/#ruby). You will need to set `CC_HTTP_BASIC_AUTH` variable to your own `login:password` pair. If you need to allow access to multiple users, you can create additional environment `CC_HTTP_BASIC_AUTH_n` (where `n` is a number) variables. + +#### NGINX optional configuration with `clevercloud/http.json` + +NGINX settings can be configured further in `clevercloud/http.json`. All its fields are optional. + +* `languages`: configure a default language and redirections +* `error_pages`: configure custom files for error pages +* `force_https`: automatically redirect HTTP traffic to HTTPS +* `aliases`: set up redirections +* `charset`: force a specific charset + +```json +{ + "languages": { + "default": {"rewrite": "en"}, + "fr": {"rewrite": "en"} + }, + "error_pages": { + "404": "path/to/page" + }, + "force_https": true, + "aliases": { + "/path":ย "redirection" + }, + "charset": "latin-1" +} +``` + +### Puma configuration + +Puma reads its configuration from the `config/puma.rb` file. See [the puma documentation](https://github.com/puma/puma/blob/master/README.md) for more information. + +You can override this configuration with [environment variables](#setting-up-environment-variables-on-clever-cloud). +Each of them, when specified, will be preferred over the setting from `config/puma.rb`. + +* `CC_PUMA_WORKERS` overrides the number of workers (for example, `CC_PUMA_WORKERS=2`) +* `CC_PUMA_THREADS` overrides the number of threads per worker, can be a raw number or a range (for example, `CC_PUMA_THREADS=6` or `CC_PUMA_THREADS=4:8`) + +If they are not defined in the environment nor in `config/puma.rb` we will setup the values depending on the size of the scaler your application is running on. +We also fill the `WEB_CONCURRENCY` and `RAILS_MAX_THREADS` environment variable if they are not present as they may be used by rails' puma configuration. + +## Overriding rackup application server + +You can override the puma default server by setting an [environment variable](#setting-up-environment-variables-on-clever-cloud) `CC_RACKUP_SERVER=yourserver`. We do not recommend you do it. diff --git a/shared/set-env-vars.md b/shared/set-env-vars.md new file mode 100644 index 000000000..c22508bcc --- /dev/null +++ b/shared/set-env-vars.md @@ -0,0 +1,18 @@ +## Setting up environment variables on Clever Cloud + +### With the Clever Cloud console + +1. Go to the Clever Cloud console, and find the app you want to fine tune under it's organisation. +2. Find the **Environment variables** menu and select it. +3. In this menu, you will see a form with *VARIABLE_NAME* and *variable value* fields. +4. Fill them with the desired values then select **Add**. +5. Don't forget to "Update Changes" at the end of the menu. + +### With the Clever Tools CLI + +1. Make sure you have clever-tools installed locally. Refer to our [CLI getting started](/doc/cli/). +2. In your code folder, do `clever env set ` + +Refer to [environment variables reference](/doc/reference/reference-environment-variables) for more details on available environment variables on Clever Cloud. + +You can of course create custom ones with the interface we just demonstrated, they will be available for your application. diff --git a/shared/single-sign-on.md b/shared/single-sign-on.md new file mode 100644 index 000000000..2a4c2c4ac --- /dev/null +++ b/shared/single-sign-on.md @@ -0,0 +1,10 @@ + +Clever Cloud has its own SSO (Single Sign-On) authentication to authenticate to various services. All members of your organisation will be able to authenticate to the services in the same organisation, using their Clever Cloud account. When a service needs to authenticate you, it redirects to a login form. Enter your Clever Cloud credentials as well as your 2FA Authentication code if needed. + +![SSO Needed Rights](/images/sso-needed-rights.png) + +If it's the first time you use the Clever Cloud SSO, accept all the tokens permissions listed, otherwise the backend service might not work correctly. If you mistakenly disabled some rights at some point, you have to revoke all tokens generated by this OAuth consumer: + +1. First, go to your user's OAuth token in the [Web console](https://console.clever-cloud.com/users/me/oauth-tokens) +2. Then, find all tokens named `Keycloak Consumer` and revoke them +3. Try to log-in again. The rights list should now be displayed. diff --git a/shared/static-create.md b/shared/static-create.md new file mode 100644 index 000000000..70aef3ea9 --- /dev/null +++ b/shared/static-create.md @@ -0,0 +1,29 @@ + +## Deploy a static application + +You can create an application in our [Console](https://console.clever-cloud.com) or through [Clever Tools](/doc/cli). Install them with `npm` or [any supported package manager](/doc/cli/install/): + +```bash +# Install with npm or any supported method +npm i -g clever-tools + +# Login to Clever Cloud and check it worked +clever login +clever profile +``` + +Go to the folder where you want to create your application, and run the following command: + +```bash +cd myStaticApp +clever create -t static + +# If the folder is not a git repository, initialize it: +git init +``` + +To deploy on Clever Cloud, your local folder need to be an initialized git repository linked to an application. If you already have an application on Clever Cloud and want to link it to the current local folder: + +```bash +clever link your_app_name_or_ID +``` diff --git a/shared/static-deploy.md b/shared/static-deploy.md new file mode 100644 index 000000000..d10988497 --- /dev/null +++ b/shared/static-deploy.md @@ -0,0 +1,21 @@ +### Push your code + +Once you complete these steps, commit your content to the local repository and deploy it: + +```bash +git add . +git commit -m "First deploy" +clever deploy +clever open +``` + +You can display your website's URL or add a custom domain to it (you'll need to configure DNS): + +```bash +clever domain +clever domain add your.website.tld +``` + +### 404 page location + +If you need to use a specific page for 404 errors, define its location with `SERVER_ERROR_PAGE_404` environment variable from Static Web Server, used as default in `static` runtime. For example : `SERVER_ERROR_PAGE_404=404.html`. diff --git a/shared/static-guides.md b/shared/static-guides.md new file mode 100644 index 000000000..97e1ce716 --- /dev/null +++ b/shared/static-guides.md @@ -0,0 +1,11 @@ +{{< cards >}} + {{< card link="/developers/guides/astro" title="Astro" subtitle= "Build and deploy a Astro application on Clever Cloud" icon="astro" >}} + {{< card link="/developers/guides/docusaurus" title="Docusaurus" subtitle= "Build and deploy a static Docusaurus based website on Clever Cloud" icon="docusaurus" >}} + {{< card link="/developers/guides/eleventy" title="Eleventy (11ty)" subtitle= "Build and deploy a static Eleventy (11ty) based website on Clever Cloud" icon="11ty" >}} + {{< card link="/developers/guides/hexo" title="Hexo" subtitle= "Build and deploy a static Hexo based website on Clever Cloud" icon="hexo" >}} + {{< card link="/developers/guides/hugo" title="Hugo" subtitle= "Build and deploy a static Hugo based website on Clever Cloud" icon="hugo" >}} + {{< card link="/developers/guides/lume-deno" title="Lume (Deno)" subtitle= "Build and deploy a static Lume (Deno) based website on Clever Cloud" icon="deno" >}} + {{< card link="/developers/guides/mdbook" title="mdBook" subtitle= "Build and deploy a static mbBook based website on Clever Cloud" icon="mdbook" >}} + {{< card link="/developers/guides/mkdocs" title="MkDocs" subtitle= "Build and deploy a static MkDocs based website on Clever Cloud" icon="docs" >}} + {{< card link="/developers/guides/nuxt" title="Nuxt" subtitle= "Build and deploy a Nuxt application on Clever Cloud" icon="nuxt" >}} +{{< /cards >}} diff --git a/shared/url_healthcheck.md b/shared/url_healthcheck.md new file mode 100644 index 000000000..138b58af6 --- /dev/null +++ b/shared/url_healthcheck.md @@ -0,0 +1,42 @@ +## Enable health check during deployment + +The healthcheck allows you to limit downtimes. Indeed, you can provide Clever Cloud with paths to check. If these paths return something other than 200, the deployment will fail. + +Add one (or several) environment variable as such: + +```bash +CC_HEALTH_CHECK_PATH=/my/awesome/path +``` + +Or + +```bash +CC_HEALTH_CHECK_PATH_0=/my/awesome/path +CC_HEALTH_CHECK_PATH_1=/my/other/path +``` + +The deployment process checks all paths. All of them must reply with a `200 OK` response code. + +By default, when no [environment variable](/doc/reference/reference-environment-variables) (for ex: `APP_HOME`) is defined, the monitoring checks your repository root path `/`. + +### Example + +Using the path listed above, below are the expected logs: + +```text +Response from GET /my/awesome/path is 200 +Response from GET /my/other/path is 500 +Health check failed: +- GET /my/other/path returned 500. +If the deployment fails after this message, please update your configuration and redeploy. +``` + +In this example, the first path is OK, but the second one failed. This gives you a hint on what failed in your application. + +### Best practice for healthcheck endpoints + +To make the most of a healthcheck endpoint, have it check your critical dependencies. For example: + +- execute `SELECT 1 + 1;` on your database +- retrieve a specific Cellar file +- ping a specific IP through a VPN diff --git a/shared/warp10-concepts.md b/shared/warp10-concepts.md new file mode 100644 index 000000000..65cce033d --- /dev/null +++ b/shared/warp10-concepts.md @@ -0,0 +1,10 @@ +## Main concepts + +Warp 10 is a time series database, it uses the notion of `class`, `labels`, `longitude`, `latitude`, `altitude` and `value`. `labels` is a kind of dictionary. That's called a **map** under the warp10 terminology. + +A GeoTime Serie (GTS) is defined by a `class` and some `labels`. They're indexed and used to quickly retrieved the data. A GTS may contain some values which have the following model: `[ timestamp longitude latitude altitude value ]` + +Warp 10 uses Warp Script. It's a stack based language using reverse polish notation. + +* [Warp 1O documentation](https://www.warp10.io/doc/reference) +* [Warp Script documentation](https://www.warp10.io/content/03_Documentation/04_WarpScript) diff --git a/shared/warp10-content.md b/shared/warp10-content.md new file mode 100644 index 000000000..1087bfaaa --- /dev/null +++ b/shared/warp10-content.md @@ -0,0 +1,99 @@ +### Time and duration in Warp 10 + +The platform's time unit is in **microsecond**. + +* [Learn more about date functions](https://www.warp10.io/tags/date) +* [Learn more about time functions](https://www.warp10.io/tags/time) + +#### Duration is set by the followings symbols + +- `d`: day +- `h`: Hour +- `ms`: millisecond +- `ns`: nanosecond +- `ps`: picosecond +- `s`: second +- `us`: microsecond +- `w`: week + +#### Date + +Allowed format: + +- ISO8601 +- Timestamp in microsecond + +Builtin function: + +- `NOW`: get the current timestamp +- `ISO8601`: Convert a string or a timestamp to a ISO8601 date format + +## Technical constraints + +The followings limits are defined in Warp 10. The **soft** limit can be passed over by an [`AUTHENTICATE`](https://www.warp10.io/doc/AUTHENTICATE) operation. Operations over **soft limits** may be intensive. The **hard** limit is unsurpassable. + +| WarpScript Operator | Warp 10 limit description | soft limit | hard limit | +| ------------------- | ------------------------------------------------------------- | ---------- | ---------- | +| MAXGTS | Maximum number of GTS which can be fetched | 10e5 | 5e7 | +| LIMIT | Maximum number of datapoints which can be fetched during a script execution | 10e6 | 10e7 | +| MAXBUCKETS | Maximum number of buckets which can be created by a call to BUCKETIZE | 10e5 | 50e5 | +| MAXDEPTH | Maximum depth (number of levels) of the execution stack | 5e3 | 5e3 | +| MAXLOOP | Maximum number of milliseconds which can be spent in a loop | 5e3 | 10e3 | +| MAXOPS | Maximum number of operations which can be performed during a single WarpScript execution | 5e6 | 5e7 | +| MAXSYMBOLS | Maximum number of simultaneous symbols which can be defined on the stack during a single WarpScript execution | 64 | 256 | +| MAXGEOCELLS | Maximum number of cells a GEOSHAPE | 10e3 | 10e4 | +| MAXPIXELS | Maximum size (in pixels) of images which can be created by PGraphics | 10e5 | 10e5 | +| MAXRECURSION | Maximum nesting depth of macro calls | 16 | 32 | + +### Usage + +An example where it is needed to increase the fetch limit by the `LIMIT` function + +```warpscript +'' AUTHENTICATE +50e6 TOLONG LIMIT +// Fetch on the 'accessLogs' class for your application id as labels +[ '' 'accessLogs' { 'app_id' '' } NOW 1 w ] FETCH +``` + +## Visualization and exploration + +### Quantum + +Quantum is a web tool used to run some WarpScript. You can access to it from your metrics interface. + +It provides the path to the Clever Cloud Warp 10 gateway and let you explore your data. + +## Classes Reference + +In Warp 10, classes organize metrics from various sources, like applications or add-ons, into specific categories (CPU usage, memory statistics, etc.). This structure makes the data easy to retrieve and analyze with WarpScript. + +For a complete list of Telegraf classes and their descriptions, see [the classes list](/doc/metrics/#classes). + +## Macro + +Warp 10 provide a server side macro manager. It is a way to release some ready to use WarpScript. Hence, Clever Cloud provides some macros as helpers to avoid redundant and often need code. + +* [Warp 10' macros documentations](https://www.warp10.io/content/03_Documentation/07_Extending_Warp_10/01_Server_side_macros) + +### Consumption + +The following macros are helpers to compute consumption in seconds + +- `app_consumption` + +Return the consumption in **second** by **applications** for a specific **organisation**. +`Start` and `End` parameters can be either a timestamp in microseconds or an iso8601 date format. + +```bash +'' '' '' '' @clevercloud/app_consumption +``` + +- `orga_consumption` + +Return **all** the consumption in **second** for a specific **organisation**. `Start` and `End` parameters +can be either a timestamp in microseconds or an iso8601 date format. + +```bash +'' '' '' '' @clevercloud/app_consumption +``` diff --git a/static/android-chrome-192x192.png b/static/android-chrome-192x192.png new file mode 100644 index 000000000..a5abf4f6d Binary files /dev/null and b/static/android-chrome-192x192.png differ diff --git a/static/android-chrome-512x512.png b/static/android-chrome-512x512.png new file mode 100644 index 000000000..b69345655 Binary files /dev/null and b/static/android-chrome-512x512.png differ diff --git a/static/apple-touch-icon.png b/static/apple-touch-icon.png new file mode 100644 index 000000000..b36e37587 Binary files /dev/null and b/static/apple-touch-icon.png differ diff --git a/static/cloud-synccloud-icon.png b/static/cloud-synccloud-icon.png new file mode 100644 index 000000000..eb8f9f65f Binary files /dev/null and b/static/cloud-synccloud-icon.png differ diff --git a/static/favicon-16x16.png b/static/favicon-16x16.png new file mode 100644 index 000000000..a513d27a2 Binary files /dev/null and b/static/favicon-16x16.png differ diff --git a/static/favicon-32x32.png b/static/favicon-32x32.png new file mode 100644 index 000000000..05cf45886 Binary files /dev/null and b/static/favicon-32x32.png differ diff --git a/static/favicon-dark.svg b/static/favicon-dark.svg new file mode 100644 index 000000000..758cc1846 --- /dev/null +++ b/static/favicon-dark.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/static/favicon.ico b/static/favicon.ico new file mode 100644 index 000000000..a4e2ecf77 Binary files /dev/null and b/static/favicon.ico differ diff --git a/static/favicon.ico.png b/static/favicon.ico.png new file mode 100644 index 000000000..b2ab15563 Binary files /dev/null and b/static/favicon.ico.png differ diff --git a/static/favicon.svg b/static/favicon.svg new file mode 100644 index 000000000..6297feda2 --- /dev/null +++ b/static/favicon.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/static/fonts/plus-jakarta-sans-v8-latin-700.ttf b/static/fonts/plus-jakarta-sans-v8-latin-700.ttf new file mode 100644 index 000000000..dfe9b7bf1 Binary files /dev/null and b/static/fonts/plus-jakarta-sans-v8-latin-700.ttf differ diff --git a/static/fonts/plus-jakarta-sans-v8-latin-700.woff2 b/static/fonts/plus-jakarta-sans-v8-latin-700.woff2 new file mode 100644 index 000000000..18d8d152f Binary files /dev/null and b/static/fonts/plus-jakarta-sans-v8-latin-700.woff2 differ diff --git a/static/images/404.png b/static/images/404.png new file mode 100644 index 000000000..7921d1be5 Binary files /dev/null and b/static/images/404.png differ diff --git a/static/images/TCP_redirection_console.png b/static/images/TCP_redirection_console.png new file mode 100644 index 000000000..9c85f413b Binary files /dev/null and b/static/images/TCP_redirection_console.png differ diff --git a/static/images/activity.png b/static/images/activity.png new file mode 100644 index 000000000..850f2d925 Binary files /dev/null and b/static/images/activity.png differ diff --git a/static/images/addon-dashboard.png b/static/images/addon-dashboard.png new file mode 100644 index 000000000..65cdaed68 Binary files /dev/null and b/static/images/addon-dashboard.png differ diff --git a/static/images/analytics.png b/static/images/analytics.png new file mode 100644 index 000000000..8defce3ce Binary files /dev/null and b/static/images/analytics.png differ diff --git a/static/images/app-management.png b/static/images/app-management.png new file mode 100644 index 000000000..b053a470d Binary files /dev/null and b/static/images/app-management.png differ diff --git a/static/images/application-edit.png b/static/images/application-edit.png new file mode 100644 index 000000000..4e5194064 Binary files /dev/null and b/static/images/application-edit.png differ diff --git a/static/images/billing-infos.png b/static/images/billing-infos.png new file mode 100644 index 000000000..d353232d6 Binary files /dev/null and b/static/images/billing-infos.png differ diff --git a/static/images/brand.png b/static/images/brand.png new file mode 100644 index 000000000..4394fb643 Binary files /dev/null and b/static/images/brand.png differ diff --git a/static/images/ccpm-2024-08-02-image_0.png b/static/images/ccpm-2024-08-02-image_0.png new file mode 100644 index 000000000..322844202 Binary files /dev/null and b/static/images/ccpm-2024-08-02-image_0.png differ diff --git a/static/images/clever-cloud-runners-basic-with-runtimes-alt.svg b/static/images/clever-cloud-runners-basic-with-runtimes-alt.svg new file mode 100644 index 000000000..393bc4900 --- /dev/null +++ b/static/images/clever-cloud-runners-basic-with-runtimes-alt.svg @@ -0,0 +1,5364 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + Franck Bret + + + + + Octobus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/images/clever-tasks.webp b/static/images/clever-tasks.webp new file mode 100644 index 000000000..f15b54484 Binary files /dev/null and b/static/images/clever-tasks.webp differ diff --git a/static/images/clever-tools-4.5-help.webp b/static/images/clever-tools-4.5-help.webp new file mode 100644 index 000000000..5083b7f7e Binary files /dev/null and b/static/images/clever-tools-4.5-help.webp differ diff --git a/static/images/clever-tools-metabase-version-check.webp b/static/images/clever-tools-metabase-version-check.webp new file mode 100644 index 000000000..fa774c7e8 Binary files /dev/null and b/static/images/clever-tools-metabase-version-check.webp differ diff --git a/static/images/clever-tools-new-create.webp b/static/images/clever-tools-new-create.webp new file mode 100644 index 000000000..015cadf2c Binary files /dev/null and b/static/images/clever-tools-new-create.webp differ diff --git a/static/images/cloudflare-https-setting.png b/static/images/cloudflare-https-setting.png new file mode 100644 index 000000000..95b7e6fce Binary files /dev/null and b/static/images/cloudflare-https-setting.png differ diff --git a/static/images/cloudflare-page-rule-ssl.png b/static/images/cloudflare-page-rule-ssl.png new file mode 100644 index 000000000..141dc8f07 Binary files /dev/null and b/static/images/cloudflare-page-rule-ssl.png differ diff --git a/static/images/console-api-tokens-tips.webp b/static/images/console-api-tokens-tips.webp new file mode 100644 index 000000000..4604e07cb Binary files /dev/null and b/static/images/console-api-tokens-tips.webp differ diff --git a/static/images/console-api-tokens.webp b/static/images/console-api-tokens.webp new file mode 100644 index 000000000..0addaf091 Binary files /dev/null and b/static/images/console-api-tokens.webp differ diff --git a/static/images/console-new-ip-par.webp b/static/images/console-new-ip-par.webp new file mode 100644 index 000000000..168213e72 Binary files /dev/null and b/static/images/console-new-ip-par.webp differ diff --git a/static/images/console-new-oauth-tokens.webp b/static/images/console-new-oauth-tokens.webp new file mode 100644 index 000000000..e7000691d Binary files /dev/null and b/static/images/console-new-oauth-tokens.webp differ diff --git a/static/images/console-sessions.webp b/static/images/console-sessions.webp new file mode 100644 index 000000000..b6a857b43 Binary files /dev/null and b/static/images/console-sessions.webp differ diff --git a/static/images/doc-link-console.webp b/static/images/doc-link-console.webp new file mode 100644 index 000000000..199eec729 Binary files /dev/null and b/static/images/doc-link-console.webp differ diff --git a/static/images/feature.png b/static/images/feature.png new file mode 100644 index 000000000..5ceef479a Binary files /dev/null and b/static/images/feature.png differ diff --git a/static/images/github-branches.png b/static/images/github-branches.png new file mode 100644 index 000000000..a704c2b06 Binary files /dev/null and b/static/images/github-branches.png differ diff --git a/static/images/github-deployment-branch.png b/static/images/github-deployment-branch.png new file mode 100644 index 000000000..42597ff01 Binary files /dev/null and b/static/images/github-deployment-branch.png differ diff --git a/static/images/grafana-alerts.png b/static/images/grafana-alerts.png new file mode 100644 index 000000000..a46cab5c8 Binary files /dev/null and b/static/images/grafana-alerts.png differ diff --git a/static/images/grafana-from-oveview-pane.png b/static/images/grafana-from-oveview-pane.png new file mode 100644 index 000000000..96b509e2a Binary files /dev/null and b/static/images/grafana-from-oveview-pane.png differ diff --git a/static/images/heptapod-billing.png b/static/images/heptapod-billing.png new file mode 100644 index 000000000..e80194e4d Binary files /dev/null and b/static/images/heptapod-billing.png differ diff --git a/static/images/icons.png b/static/images/icons.png new file mode 100644 index 000000000..452f05323 Binary files /dev/null and b/static/images/icons.png differ diff --git a/static/images/invoice-amount-to-pay.png b/static/images/invoice-amount-to-pay.png new file mode 100644 index 000000000..435bc3765 Binary files /dev/null and b/static/images/invoice-amount-to-pay.png differ diff --git a/static/images/invoice-credits-balance.png b/static/images/invoice-credits-balance.png new file mode 100644 index 000000000..0d2ce8a06 Binary files /dev/null and b/static/images/invoice-credits-balance.png differ diff --git a/static/images/invoice-list.png b/static/images/invoice-list.png new file mode 100644 index 000000000..65642a45c Binary files /dev/null and b/static/images/invoice-list.png differ diff --git a/static/images/invoice-runtime-detail.png b/static/images/invoice-runtime-detail.png new file mode 100644 index 000000000..9ca4db8f3 Binary files /dev/null and b/static/images/invoice-runtime-detail.png differ diff --git a/static/images/jenkins/cloud-configuration.png b/static/images/jenkins/cloud-configuration.png new file mode 100644 index 000000000..1bc18af58 Binary files /dev/null and b/static/images/jenkins/cloud-configuration.png differ diff --git a/static/images/jenkins/full-dashboard.png b/static/images/jenkins/full-dashboard.png new file mode 100644 index 000000000..689f5ad2a Binary files /dev/null and b/static/images/jenkins/full-dashboard.png differ diff --git a/static/images/jenkins/jobs-history.png b/static/images/jenkins/jobs-history.png new file mode 100644 index 000000000..05b8f7955 Binary files /dev/null and b/static/images/jenkins/jobs-history.png differ diff --git a/static/images/jenkins/runner-deploying.png b/static/images/jenkins/runner-deploying.png new file mode 100644 index 000000000..7678e383d Binary files /dev/null and b/static/images/jenkins/runner-deploying.png differ diff --git a/static/images/jenkins/update-available-cc-dashboard.png b/static/images/jenkins/update-available-cc-dashboard.png new file mode 100644 index 000000000..d22b392d8 Binary files /dev/null and b/static/images/jenkins/update-available-cc-dashboard.png differ diff --git a/static/images/jenkins/update-available.png b/static/images/jenkins/update-available.png new file mode 100644 index 000000000..97824cd54 Binary files /dev/null and b/static/images/jenkins/update-available.png differ diff --git a/static/images/keycloak-dashboard.webp b/static/images/keycloak-dashboard.webp new file mode 100644 index 000000000..5fa11b7da Binary files /dev/null and b/static/images/keycloak-dashboard.webp differ diff --git a/static/images/kv-explorer.webp b/static/images/kv-explorer.webp new file mode 100644 index 000000000..377886666 Binary files /dev/null and b/static/images/kv-explorer.webp differ diff --git a/static/images/logo-dark.svg b/static/images/logo-dark.svg new file mode 100644 index 000000000..6b03a715e --- /dev/null +++ b/static/images/logo-dark.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/static/images/logo.svg b/static/images/logo.svg new file mode 100644 index 000000000..45829f5b7 --- /dev/null +++ b/static/images/logo.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/static/images/matomo/full-dashboard.png b/static/images/matomo/full-dashboard.png new file mode 100644 index 000000000..7ad95f994 Binary files /dev/null and b/static/images/matomo/full-dashboard.png differ diff --git a/static/images/metrics-home.png b/static/images/metrics-home.png new file mode 100644 index 000000000..22c3d3f52 Binary files /dev/null and b/static/images/metrics-home.png differ diff --git a/static/images/monitoring.png b/static/images/monitoring.png new file mode 100644 index 000000000..a5659d44d Binary files /dev/null and b/static/images/monitoring.png differ diff --git a/static/images/new-logs-update.webp b/static/images/new-logs-update.webp new file mode 100644 index 000000000..083a2fff0 Binary files /dev/null and b/static/images/new-logs-update.webp differ diff --git a/static/images/new-logs.webp b/static/images/new-logs.webp new file mode 100644 index 000000000..c6a0d3d61 Binary files /dev/null and b/static/images/new-logs.webp differ diff --git a/static/images/new-oauth-consumer.webp b/static/images/new-oauth-consumer.webp new file mode 100644 index 000000000..1590c1dc2 Binary files /dev/null and b/static/images/new-oauth-consumer.webp differ diff --git a/static/images/open_the_app_ico.png b/static/images/open_the_app_ico.png new file mode 100644 index 000000000..d300ae966 Binary files /dev/null and b/static/images/open_the_app_ico.png differ diff --git a/static/images/pg-studio.png b/static/images/pg-studio.png new file mode 100644 index 000000000..188a9bfce Binary files /dev/null and b/static/images/pg-studio.png differ diff --git a/static/images/primary-domain-link.webp b/static/images/primary-domain-link.webp new file mode 100644 index 000000000..c181964d7 Binary files /dev/null and b/static/images/primary-domain-link.webp differ diff --git a/static/images/scaling_horizontal_scheme.jpg b/static/images/scaling_horizontal_scheme.jpg new file mode 100644 index 000000000..d98fd8001 Binary files /dev/null and b/static/images/scaling_horizontal_scheme.jpg differ diff --git a/static/images/scaling_vertical_scheme.jpg b/static/images/scaling_vertical_scheme.jpg new file mode 100644 index 000000000..d8dfab6ff Binary files /dev/null and b/static/images/scaling_vertical_scheme.jpg differ diff --git a/static/images/schema-config-provider-01.svg b/static/images/schema-config-provider-01.svg new file mode 100755 index 000000000..86540a08e --- /dev/null +++ b/static/images/schema-config-provider-01.svg @@ -0,0 +1,4094 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + shipping-api + PULSAR_TOPIC=orderUSER_API_HOST=https://user.example.com/apiENABLE_PARTNERS=true + + + + + + + + + + + payment-api + PULSAR_TOPIC=orderUSER_API_HOST=https://user.example.com/apiENABLE_SEPA=false + + + + + + + + + + + + + diff --git a/static/images/schema-config-provider-02.svg b/static/images/schema-config-provider-02.svg new file mode 100755 index 000000000..a201d5380 --- /dev/null +++ b/static/images/schema-config-provider-02.svg @@ -0,0 +1,4087 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + shipping-api + PULSAR_TOPIC=orderUSER_API_HOST=https://user.example.com/apiENABLE_PARTNERS=true + + + + + + + + + + + + + payment-api + PULSAR_TOPIC=orderUSER_API_HOST=https://user.example.com/apiENABLE_SEPA=false + + + + + + + + + + + + + ย  + ย  + + + + + + + my-config + PULSAR_TOPIC=orderUSER_API_HOST=https://user.example.com/api + + + + + + + + + + + + shipping-api + ENABLE_PARTNERS=true + + + + + + + + + + + payment-api + ENABLE_SEPA=false + + + + + + + + + + + diff --git a/static/images/schema-config-provider-03.svg b/static/images/schema-config-provider-03.svg new file mode 100755 index 000000000..ff99dd867 --- /dev/null +++ b/static/images/schema-config-provider-03.svg @@ -0,0 +1,4087 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + shipping-api + PULSAR_TOPIC=orderUSER_API_HOST=https://user.example.com/apiENABLE_PARTNERS=true + + + + + + + + + + + + + payment-api + PULSAR_TOPIC=orderUSER_API_HOST=https://user.example.com/apiENABLE_SEPA=false + + + + + + + + + + + + + ย  + ย  + + + + + + + my-config + PULSAR_TOPIC=orderUSER_API_HOST=https://user.example.com/api + + + + + + + + + + + + + shipping-api + ENABLE_PARTNERS=true + + + + + + + + + + + + + payment-api + ENABLE_SEPA=false + + + + + + + + + + + + ย  + ย  + + + + + + + my-config + PULSAR_TOPIC=orderUSER_API_HOST=https://user.example.com/api + + + + + + + + + + + + shipping-api + PULSAR_TOPIC=order_2ENABLE_PARTNERS=true + + + + + + + + + + + payment-api + ENABLE_SEPA=false + + + + + + + + + + diff --git a/static/images/select-scalab-horizontal.png b/static/images/select-scalab-horizontal.png new file mode 100644 index 000000000..2a4ca0860 Binary files /dev/null and b/static/images/select-scalab-horizontal.png differ diff --git a/static/images/select-scalab.png b/static/images/select-scalab.png new file mode 100644 index 000000000..7ac9d4a5e Binary files /dev/null and b/static/images/select-scalab.png differ diff --git a/static/images/service-dependencies-config-update.png b/static/images/service-dependencies-config-update.png new file mode 100644 index 000000000..ca21aac90 Binary files /dev/null and b/static/images/service-dependencies-config-update.png differ diff --git a/static/images/service-dependencies-example.png b/static/images/service-dependencies-example.png new file mode 100644 index 000000000..839f58947 Binary files /dev/null and b/static/images/service-dependencies-example.png differ diff --git a/static/images/sso-needed-rights.png b/static/images/sso-needed-rights.png new file mode 100644 index 000000000..2e88eb269 Binary files /dev/null and b/static/images/sso-needed-rights.png differ diff --git a/static/site.webmanifest b/static/site.webmanifest new file mode 100644 index 000000000..7ea5524af --- /dev/null +++ b/static/site.webmanifest @@ -0,0 +1,20 @@ +{ + "name": "Clever Cloud Documentation", + "short_name": "Clever Doc", + "start_url": "index.html", + "icons": [ + { + "src": "android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#000000", + "background_color": "#000000", + "display": "standalone" +} \ No newline at end of file diff --git a/update-cli-reference.sh b/update-cli-reference.sh new file mode 100755 index 000000000..1f7d1446b --- /dev/null +++ b/update-cli-reference.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +FILE="content/doc/reference/cli.md" +URL="https://raw.githubusercontent.com/CleverCloud/clever-tools/refs/heads/master/skills/clever-tools/references/full-documentation.md" + +front_matter="""--- +type: docs +linkTitle: CLI reference +title: Clever Tools - CLI commands reference +description: Clever Tools commands reference to create and manage Clever Cloud applications, add-ons and services. Ideal to provide to LLMS and AI assisted IDEs. +keywords: +- cli +- clever-tools +- commands +- reference +- applications +- add-ons +aliases: +- /doc/reference/clever-tools/configure +- /doc/reference/clever-tools/manage +- /doc/reference/clever-tools/create +- /doc/reference/clever-tools/lifecycle +- /reference/clever-tools +- /reference/clever-tools/getting_started +--- +""" + +echo "${front_matter}" > "${FILE}" +curl -fSL "${URL}" >> "${FILE}"