---
title: "Cloud server with Jenkins"
sidebar_label: "Jenkins"
sidebar_position: 3
toc_max_heading_level: 3
description: "How to create a cloud server for automating software development processes"
---

import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'
import {TabItemLabel} from '@selectel/docux/components'
import {CustomTable} from '@selectel/docux/components'
import Formbricks from '@theme/MDXComponents/Formbricks'
import CreateServer from '@site/i18n/en/docusaurus-plugin-content-docs/current/_partials/cloud-servers/applications/create-server-for-apps.mdx'

# Cloud server with Jenkins

Jenkins is an open-source continuous integration server. The application is designed to automate various stages of software development, including build, test, and software deployment.

You can [create a cloud server with a pre-installed Jenkins application](#create-cloud-server-with-jenkins). In Russia, the application runs on a cloud server with the [SelectOS 1 64-bit](https://selectos.selectel.ru/news/mega/) operating system. In other countries — Ubuntu 24.04.

Before creating a cloud server with an application, review the [software license agreements](https://423.selcdn.ru/kb/license-agreements-for-application-images-LANG.pdf) included in the image.

## Minimum resource requirements \{#minimum-requirements}

<CustomTable>
  <table>
    <thead>
      <th />

      <th>Up to 100 users</th><th>100—500 users</th><th>From 500 users `*`</th>
    </thead>

    <tbody>
      <tr>
        <th>Number of vCPUs</th><td>2</td><td>4</td><td>4</td>
      </tr>

      <tr>
        <th>RAM</th><td>4 GB</td><td>8 GB</td><td>8 GB</td>
      </tr>

      <tr>
        <th>Boot volume</th><td>20 GB</td><td>50 GB</td><td>50 GB</td>
      </tr>
    </tbody>
  </table>
</CustomTable>

`*` We recommend connecting external agents.

## Create a cloud server with Jenkins \{#create-cloud-server-with-jenkins}

For Jenkins to function, the cloud server must be accessible from the internet. To achieve this, when creating the server, you must create a private subnet and attach a public floating IP address. To configure Jenkins, you must specify user data — custom operating system configuration parameters — when creating the server.

After the server with Jenkins is created, a free [TLS certificate from Let’s Encrypt®](/certificates-manager/certificates/lets-encrypt.mdx) will be automatically issued for the domain you specify. To issue the certificate, you must add an A record for the domain and specify the server's public floating IP address as the record value. You can add the domain to [Selectel DNS hosting (actual](/dns-hosting/)).

1. [Create a public floating IP address](#create-floating-ip).

2. [Add an A record for the domain](#add-a-record).

3. [Create a cloud server with Jenkins](#create-jenkins-server).

### 1. Create a public floating IP address \{#create-floating-ip}

Create a public floating IP address so that the cloud server with Jenkins is accessible from the internet.

Use the [Create a public floating IP address](/cloud-servers/cloud-networks/public-floating-ip-addresses.mdx#create-public-floating-ip) section of the [Public Floating IP Addresses](/cloud-servers/cloud-networks/public-floating-ip-addresses.mdx) guide.

### 2. Add an A record for the domain⁠ \{#add-a-record}

[Add a resource record](/dns-hosting/records/add-record.mdx) to access Jenkins by domain.

Specify:

* [resource record type](/dns-hosting/records/add-record.mdx#record-types) in the group — A;
* record value — the public floating IP address that you [created in step 1](#create-floating-ip).

### 3. Create a server with Jenkins \{#create-jenkins-server}

<CreateServer AppNameInPanel="Cloud Jenkins" MinConfig="2 vCPU, RAM starting from 4 GB and a boot disk size starting from 20 GB for 100 users and less" OptionalVolumes="Optional: add an additional" VolumeSize="Specify the size of the network disk in GB or TB" />

<div style={{paddingLeft:'2em'}}>
  ```yaml
  #cloud-config

  write_files:
  - path: "/opt/gomplate/values/user-values.yaml"
    permissions: "0644"
    content: |
      username: "<administrator_username>"
      password: "<administrator_password>"
      domain: "<example.ru>"
      email: "<root@example.com>"

  ```

  Specify:

  * `<administrator_username>` — Jenkins administrator name;
  * `<administrator_password>` — Jenkins administrator password. Must be more than eight characters;
  * `<example.ru>` — the domain to access Jenkins, which you [added earlier](#add-a-record);
  * `<root@example.com>` — Jenkins administrator email for account creation and Let’s Encrypt® notifications.
</div>

<Formbricks />
