├── 1 Getting Started
└── README.md
├── 2 Cloud Providers
├── Adding DigitalOcean Profile.md
├── Adding Vultr Profile.md
├── Deleting Cloud Provider.md
└── README.md
├── 3 Servers
├── Deleting Server.md
├── Provisioning DigitalOcean Server.md
├── README.md
└── SSH Keys.md
├── 4 Sites
├── Creating Sites
│ ├── Adding Laravel app.md
│ ├── Adding Static site.md
│ ├── Adding WordPress blog.md
│ ├── Adding a domain.md
│ ├── Adding grav CMS.md
│ └── README.md
├── Deleting Site.md
├── README.md
└── SSL Certificates.md
├── 5 Databases
├── Adding Database User.md
├── Adding Database.md
└── README.md
├── 6 Deployments
├── Deploying
│ ├── Deploying a Laravel App.md
│ ├── Deploying a Static App.md
│ └── Rolling back.md
├── Environment Variables.md
├── Hooks.md
├── Local Repository.md
├── README.md
└── Remote Repository.md
├── FAQ.md
├── README.md
└── Troubleshooting.md
/1 Getting Started/README.md:
--------------------------------------------------------------------------------
1 | ## GETTING STARTED
2 | ---
3 |
4 | ### PREREQUISITES:
5 | The only "soft" prerequisite for Cleaver on all supported platforms is that you need to have git installed and should be in your path. Cleaver only requires git for deployments. Given that Cleaver is a tool for developer, we expect everyone to have git already installed.
6 |
7 |
8 | ## macOS
9 |
10 | ### STEPS
11 |
12 | 1. [Download Cleaver for macOS][1].
13 | 2. To avoid any issue with the file permissions and to avoid any kind of possible data loss, copy Cleaver app to your */Applications* folder first.
14 | 3. Open the app and sign in. If you have not signed up yet, it only takes few seconds to create a new account.
15 |
16 | [See Cleaver for MacOS in action][cleaver-mac]
17 | ---
18 |
19 | ## Linux
20 |
21 | Right now we provide Cleaver in an [AppImage][app-image] format for Linux operating systems.
22 |
23 | ### STEPS
24 | 1. [Download Cleaver for Linux][1].
25 | 2. If you haven't already, install git: `sudo apt install git`
26 | 3. Double click the downloaded AppImage file.
27 | 4. When asked to integrate Cleaver with your system, click on `Yes`.
28 | 5. Once the app is open, sign in. If you have not signed up yet, it only takes few seconds to create a new account.
29 |
30 | [See Cleaver for Linux in action][cleaver-linux]
31 | ---
32 |
33 | ## Windows
34 |
35 | ### STEPS
36 | 1. [Download Cleaver for Windows][1].
37 | 2. Double click the one-click `Cleaver Setup.exe` file.
38 | 3. The app will be installed to `%localappdata%\Programs\Cleaver` and should run automatically
39 | 5. Once the app is open, sign in. If you have not signed up yet, it only takes few seconds to create a new account.
40 |
41 | [See Cleaver for Windows in action][cleaver-linux]
42 |
43 |
44 | Please let us know if you find more issues. We'll do our best to resolve it in the next release.
45 |
46 | Having an issue? See [Getting Started Troubleshooting][troubleshooting] page. If not, let's [add a cloud provider][cloud-providers] to be able to spin off a new server.
47 |
48 | [1]: https://getcleaver.com/?ref=docs
49 | [signup]: https://www.producthunt.com/my/upcoming/cleaver/edit
50 | [troubleshooting]: ../Troubleshooting.md
51 | [cloud-providers]: ../2%20Cloud%20Providers
52 | [app-image]: https://appimage.org/
53 | [cleaver-mac]: https://youtu.be/y-25SRQcpWI
54 | [cleaver-linux]: https://youtu.be/y3BrdnKfYd8
55 | [cleaver-windows]: https://youtu.be/iLOFT-eGVYg
56 |
--------------------------------------------------------------------------------
/2 Cloud Providers/Adding DigitalOcean Profile.md:
--------------------------------------------------------------------------------
1 | ## ADDING DIGITALOCEAN PROFILE
2 | ---
3 |
4 | To allow Cleaver to use your DigitalOcean account so that it can create and administer new servers, you need to first add an access token from your DigitalOcean account to Cleaver. This is one time thing and don't have to do it again unless you revoked or edited the access token.
5 |
6 | #### STEPS
7 |
8 | 1. Go to https://cloud.digitalocean.com/settings/api/tokens and click **Generate New Token** button.
9 |
10 | 2. Provide a name for this token; something that you could remember later, such as **Awesome Cleaver**.
11 |
12 | 3. Make sure that both `Read` and `Write` scopes are selected. Cleaver will not be able to provision a server for you without the `Write` permission.
13 |
14 | 4. Click **Generate Token** button.
15 |
16 | 5. Copy the access token, switch to Cleaver app, and select **Providers** menu from the sidebar.
17 |
18 | 6. Click the **Add New Provider** button.
19 |
20 | 7. Once on the Add New Provider page make sure to select `DigitalOcean` tab.
21 |
22 | 8. **PROFILE NAME**: The name of this profile. If you have multiple providers and/or profiles, this name is going to be important when creating a new server.
23 |
24 | 9. **ACCESS TOKEN**: The token that you copied from DigitalOcean in step 5.
25 |
26 | 10. Once you are done, click the **Add** button.
27 |
28 | Cleaver will verify your token with DigitalOcean and if everything goes well, you should see your new token name listed on the `Providers` page. And in case you were wondering, the access token is saved in your keyring.
29 |
30 | If things are still not clear, or if you are having an issue, please watch [this][do-clip] clip that shows how to add a DigitalOcean access token.
31 |
32 |
33 |
34 | [do-clip]: https://www.youtube-nocookie.com/embed/9EKtO_KfQvc?rel=0
35 |
--------------------------------------------------------------------------------
/2 Cloud Providers/Adding Vultr Profile.md:
--------------------------------------------------------------------------------
1 | ## ADDING VULTR PROFILE
2 | ---
3 |
4 | To allow Cleaver to use your Vultr account so that it can create and administer new servers, you first need to add a personal access token from your Vultr account to Cleaver. This is one time thing and don't have to do it again unless you revoked or edited the access token.
5 |
6 | #### STEPS
7 |
8 | 1. Go to https://my.vultr.com/settings/#settingsapi and make sure to select **API** tab.
9 |
10 | 2. If API access isn't enabled, click **Enable API** button to enable it.
11 |
12 | 3. In the **Access Control** panel, click on **Allow All IPv4** button to allow to use API from your desktop.
13 |
14 | 4. Confirm by clicking **Ok**.
15 |
16 | 4. Copy the API key, switch to Cleaver app, and select **Providers** menu from the sidebar.
17 |
18 | 5. Click the **Add New Provider** button.
19 |
20 | 6. Once on the Add New Provider page make sure to select `Vultr` tab.
21 |
22 | 7. **PROFILE NAME**: The name of this profile. If you have multiple providers and/or profiles, this name is going to be important when creating a new server.
23 |
24 | 8. **ACCESS TOKEN**: The token that you copied from Vultr in step 5.
25 |
26 | 9. Once you are done, click the **Add** button.
27 |
28 | Cleaver will verify your token with Vultr and if everything goes well, you should see your new token name listed on the `Providers` page.
29 |
30 | If things are still not clear, or if you are having an issue, please send us an email. In the meantime, watch the following clip that shows how to add a Vultr personal access token to Cleaver. And in case you were wondering, the access token is saved in your keyring.
31 |
32 | If things are still not clear, or if you are having an issue, please watch [this][vultr-clip] clip that shows how to add a DigitalOcean access token.
33 |
34 |
35 | [vultr-clip]: https://www.youtube-nocookie.com/embed/x80xhiAS7Ro?rel=0
36 |
--------------------------------------------------------------------------------
/2 Cloud Providers/Deleting Cloud Provider.md:
--------------------------------------------------------------------------------
1 | ## DELETING CLOUD PROVIDER PROFILE
2 | ---
3 |
4 | > **🗒 Note**: You can only delete a cloud provider profile if there are no servers associated with it. Otherwise you need to first delete the associated servers before deleting the cloud profider profile.
5 |
6 | ### STEPS
7 | 1. From the list of cloud provider profile, click the vertical bar menu (3 vertical dots) next to the profile you want to remove and select `Delete`.
8 |
9 | If there are no servers associated with this profile, the profile will be deleted right away. Otherwise you will be get an error notice.
10 |
11 |
--------------------------------------------------------------------------------
/2 Cloud Providers/README.md:
--------------------------------------------------------------------------------
1 | ## CLOUD PROVIDERS
2 |
3 | ---
4 |
5 | Right now Cleaver supports [DigitalOcean][digitalocean] and [Vultr][vultr] cloud providers and plan to add more cloud providers in future such as AWS, Linode etc. If you feel like we should add more cloud providers or you want us to prioritize one over the others, please let us know.
6 |
7 | [digitalocean]: https://digitalocean.com
8 |
9 | [vultr]: https://www.vultr.com
10 |
11 |
--------------------------------------------------------------------------------
/3 Servers/Deleting Server.md:
--------------------------------------------------------------------------------
1 | ## DELETING SERVER
2 | ---
3 |
4 | ### STEPS
5 |
6 | 1. Select the server that you want to delete.
7 |
8 | 2. Select `Danger Zone` from the secondary sidebar
9 |
10 | 3. Type the name of the server and click `Delete` button.
11 |
12 | **⚠️ Warning**: Everything on this server such as all your sites, databases, SSL certificates, SSH keys etc. will be gone forever once you delete the server. There is no UNDO button!
--------------------------------------------------------------------------------
/3 Servers/Provisioning DigitalOcean Server.md:
--------------------------------------------------------------------------------
1 | ## PROVISIONING SERVER ON DIGITALOCEAN
2 |
3 | ---
4 |
5 | > **🗒 Note**: Make sure you have authorized Cleaver to create and administer servers on DigitalOcean by adding an access token. If not, perform [these steps][1] first.
6 |
7 | #### STEPS
8 |
9 | 1. Select **Servers** menu from the sidebar.
10 |
11 | 2. Click **Add New Server** button from the top-right corner.
12 |
13 | 3. If it has not already, let Cleaver fetch the latest available specs from DigitalOcean. This should take no more than few seconds.
14 |
15 | 4. **SERVER NAME**: Cleaver should have created a server name for you. You can change it if you want. Server name must be unique for the selected cloud provider.
16 |
17 | 5. **PROVIDER PROFILE**: Select the profile you want to use for creating this server. If you have multiple profiles, make sure you have selected the correct one.
18 |
19 | 6. **SERVER SIZE**: Select the size of the server you want to create. You can see the full specs of each size by checking the `show specs` checkbox. Make very sure that you have selected the right size.
20 |
21 | 7. **SERVER REGION**: The location of the data center where your server will be created.
22 |
23 | 8. **DATABASE SERVER TYPE**: Select the database server you want to install when provisioning. This is optional and you can only choose one. If you want, you can skip this for now as you can always install this later.
24 |
25 | 9. **LANGUAGES**: Select languages to be installed during provisioning. You can pick multiple languages. You don't have to decide what to install right now. When you create a site later, the appropriate languages and libraries will be installed for you. However, it's a good idea to install them now if you already know you are going to need them.
26 |
27 | 10. Verify all the choices you have made one more time and click the **Add** button.
28 |
29 | Sit back and relax! Based on what have selected to install and the location you have selected, Cleaver is going to take anywhere from 5 to 10 minutes to get the server ready for you. You can keep your eye on the `status` column to see what Cleaver is doing on the server.
30 |
31 | > **🗒 Note**: The sudo password for this server will be automatically generated and set for you and should be displayed at the top. This password is automatically saved in your keychain as well. You should note down this password and put it in a safe place just in case.
32 |
33 |
34 |
35 | > **⚠️ Warning**: Don't rename, edit, or delete any password created by Cleaver from the keychain.
36 |
37 | If things are still not clear, please watch [this][2] clip that shows how to provision a DigialOcean server.
38 |
39 |
40 |
41 | [1]: ../2%20Cloud%20Providers/Adding%20DigitalOcean%20Profile.md
42 | [2]: https://www.youtube-nocookie.com/embed/Ly9POjhqpDY?rel=0
43 | [ssl-certificates-later]: ../SSL%20Certificates.md
44 |
--------------------------------------------------------------------------------
/3 Servers/README.md:
--------------------------------------------------------------------------------
1 | ## SERVER PROVISIONING
2 | ---
3 |
4 | > **Server Provisioning** is just a fancy way of saying "I want to create a server and install all the required dependencies and systems so that it's ready to operate." [1][1].
5 |
6 | Typically, you'd spend at least a couple of hours to complete this task if you were doing it manually and that's if you already knew what you are doing. If not, good luck! You are looking forward to spending days, if not weeks, to make your server production ready. And then you have to worry about security, firewalls, user accounts, updates and other things. But not with Cleaver! Just tell Cleaver some basic requirements and it will get the server ready for you in just few minutes. Let's get started!
7 |
8 |
9 | ## PROVISIONING A SERVER ON DIGITALOCEAN or VULTR
10 |
11 | ---
12 |
13 | > **🗒 Note**: Make sure you have authorized Cleaver to create and administer servers by adding an access token from your choice of cloud provider.
14 |
15 | #### STEPS
16 |
17 | 1. Select **Servers** menu from the sidebar.
18 |
19 | 2. Click **Add New Server** button from the top-right corner.
20 |
21 | 3. Make sure you have selected the correct cloud provider (i.e. either DigitalOcean or Vultr)
22 |
23 | 3. If it has not already, let Cleaver fetch the latest available specs from the selected cloud provider. This should take no more than few seconds.
24 |
25 | 4. **SERVER NAME**: Cleaver should have created a server name for you. You can change it if you want. Server name must be unique for the selected cloud provider.
26 |
27 | 5. **PROVIDER PROFILE**: Select the profile you want to use for creating this server. If you have multiple profiles, make sure you have selected the correct one.
28 |
29 | 6. **SERVER SIZE**: Select the size of the server you want to create. You can see the full specs of each size by checking the `show specs` checkbox. Make very sure that you have selected the right size.
30 |
31 | 7. **SERVER REGION**: The location of the data center where your server will be created.
32 |
33 | 8. **DATABASE SERVER TYPE**: Select the database server you want to install when provisioning. This is optional and you can only choose one. If you want, you can skip this for now as you can always install this later.
34 |
35 | 9. **LANGUAGES**: Select languages to be installed during provisioning. You can pick multiple languages. You don't have to decide what to install right now. When you create a site later, the appropriate languages and libraries will be installed for you. However, it's a good idea to install them now if you already know you are going to need them.
36 |
37 | 10. Verify all the choices you have made one more time and click the **Add** button.
38 |
39 | Sit back and relax! Based on what have selected to install and the location you have selected, Cleaver is going to take anywhere from 5 to 10 minutes to get the server ready for you. You can keep your eye on the `status` column to see what Cleaver is doing on the server.
40 |
41 | > **🗒 Note**: The sudo password for this server will be automatically generated and set for you and should be displayed at the top. This password is automatically saved in your keychain as well. You should note down this password and put it in a safe place just in case.
42 |
43 |
44 |
45 | > **⚠️ Warning**: Don't rename, edit, or delete any password created by Cleaver from the keychain.
46 |
47 | If things are still not clear, or if you are having an issue, please send us an email. In the meantime, watch the following clip that shows how to provision a server on DigitalOcean. Steps for provisioning a server on Vultr is pretty much the same as that of on DigitalOcean.
48 |
49 |
50 |
51 |
52 |
53 |
54 | [1]: https://en.wikipedia.org/wiki/Provisioning
55 |
--------------------------------------------------------------------------------
/3 Servers/SSH Keys.md:
--------------------------------------------------------------------------------
1 | ## SSH KEYS
2 | ---
3 |
4 | When you create a server, Cleaver automatically adds a public SSH key to your server. The private counterpart of this public SSH key can be found under `~/.ssh/cleaver` folder on macOS/Linux. Cleaver also adds a private key on the provisioned server itself and if you go to `Servers > > SSH Keys`, you can see its public counterpart. You use this key when you need to let other third party services access your server.
5 |
6 | For security reason, Cleaver disables disables password login. User `cleaver` is created and used by Cleaver to run tasks on your server.
7 |
8 | ### SSHing into your server using the default SSH key
9 | ---
10 | On MacOS or Linux, from the terminal you can run the following command:
11 |
12 | `ssh cleaver@ -i ~/.ssh/cleaver/`
13 |
14 | ### Adding additional SSH Keys
15 | ---
16 | In addition to the default key that Cleaver added for you, you can add additional SSH keys to your server - as many as you want.
17 |
18 | #### STEPS
19 |
20 | 1. Select a server then select `SSH Keys`from the sidebar.
21 |
22 | 2. Click `Add New Key`button.
23 |
24 | 3. **NAME**: The name of the key. This name must be unique for the selected server.
25 |
26 | 4. **PUBLIC KEY**: The public key that you want to copy to your server.
**Pro tip**: On macOS, you can run something like `cat ~/.ssh/id_rsa.pub | pbcopy` on your terminal to copy the contents of `~/.ssh/id_rsa.pub` to your clipboard.
27 |
28 | 5. Click **Add** button.
29 |
30 | If you want to verify whether the key was really added to your server, you could try to login using the private pair of the key that you just added:
31 |
32 | `ssh cleaver@ -i ~/.ssh/id_rsa`
33 |
34 | Or, you could log into your server and verify that the key was appended to `/home/cleaver/.ssh/authorized_keys`.
35 |
36 | **⚠️ Warning**: Don't modify `/home/cleaver/.ssh/authorized_keys` by hand otherwise you may not be able to login to your server and/or Cleaver may not be able to run administer your server. Use Cleaver to manage your keys.
37 |
38 |
39 | ### Deleting SSH Keys
40 | ---
41 |
42 | ### STEPS
43 |
44 | 1. Select the server you want to delete a SSH key from.
45 |
46 | 2. From the list of SSH key, click the vertical bar menu (3 vertical dots) next to the key you want to remove and select `Delete`.
47 | The key will be deleted immediately **without** asking for confirmation.
48 |
49 |
50 | If things are still not clear, or if you are having an issue, please watch [this][ssh-clip] clip that shows how to manage SSH keys using Cleaver.
51 |
52 |
53 |
54 | [1]: https://unix.stackexchange.com/a/82639/249514
55 | [ssh-clip]: https://www.youtube-nocookie.com/embed/s4xTsITVQ3M?rel=0
56 |
--------------------------------------------------------------------------------
/4 Sites/Creating Sites/Adding Laravel app.md:
--------------------------------------------------------------------------------
1 | ## ADDING LARAVEL APP
2 | ---
3 |
4 | ### STEPS
5 |
6 | 1. Select the server you want to add this Laravel site to.
7 |
8 | 2. Select `Sites` menu from the secondary sidebar.
9 |
10 | 3. Click the **Add New Site** button.
11 |
12 | 4. **DOMAIN NAME**: Domain name for this site like laravel.example.com. You must provide this value.
13 |
14 | 5. **ALSO ADD DNS RECORDS**: If you check this checkbox, Cleaver will add an [A record][dns] for your domain as well as a [www CNAME][dns]* for your domain. This basically means that if you added a site, say example.com, Cleaver configures your domain records with your cloud provider so that eventually you will be able to access your website using both example.com and www.example.com. This will only work if you have pointed your domain to the nameservers of the selected cloud providers (such as ns1.digitalocean.com, ns1.vultr.com etc)
15 |
16 | 5. **PROJECT TYPE**: Select **Laravel**.
17 |
18 | 6. **SECURE WITH LET'S ENCRYPT**: Check this field if you want to install and configure SSL certificates (from Let's Encrypt) for this site. We highly recommend you to check this option; after all it's free! If you decide to check this field and install SSL certificates, you must provide a valid email address.
19 | > **⚠️ Warning**: If you have not checked the checkbox in step 5 to let Cleaver configure DNS records for you, make sure you domain is pointed to the nameservers of the selected cloud provider otherwise this setup will fail.
20 | > **🗒 Note**: In case you decided not to secure your site with free SSL certificates at this time, you can always [install SSL certificates and secure your site later][ssl-certificates-later].
21 |
22 | 7. Double check that all the values are what you wanted and then click **Add** button.
23 |
24 | Cleaver will finish installing and configuring the site for you within a couple of minutes. Among few other Laravel dependencies, Cleaver also installs PHP and NodeJS if you didn't install them when provisioning the server. Redis Server and Memcached will be installed as well. All these could add extra minutes to finish creating the site.
25 |
26 | > **🗒 Note**: If this is the first secure site on the server then it is going to take few extra minutes to make sure your SSL certificates are as secure as possible.
27 |
28 | Once it is done, you can visit this site on your browser. You should see a the output of `phpinfo()` on the page.
29 |
30 | > 🍄 Just for fun, after Cleaver is done adding your site, you could go to https://ssllabs.com/ssltest/analyze.html to check what security grade your site gets. It should get at least an A because you deserve nothing less!
31 |
32 |
33 | If things are still not clear, or if you are having an issue, please watch [this][site-clip] clip that shows how to create a secure Laravel site using Cleaver.
34 |
35 |
36 |
37 | \* www CNAME is only added for a domain and not for a sub-domain
38 |
39 | [dns]: https://www.name.com/support/articles/205516858-Understanding-DNS-record-types
40 | [ssl-certificates-later]: ../SSL%20Certificates.md
41 | [site-clip]: https://www.youtube-nocookie.com/embed/ZpfERBqgBfQ?rel=0
42 |
--------------------------------------------------------------------------------
/4 Sites/Creating Sites/Adding Static site.md:
--------------------------------------------------------------------------------
1 | ## ADDING A STATIC SITE
2 | ---
3 |
4 | ### STEPS
5 |
6 | 1. Select the server you want to add this static site to.
7 |
8 | 2. Select `Sites` menu from the secondary sidebar.
9 |
10 | 3. Click the **Add New Site** button.
11 |
12 | 4. **DOMAIN NAME**: Domain name for this site like example.com. You must provide this value.
13 |
14 | 5. **ALSO ADD DNS RECORDS**: If you check this checkbox, Cleaver will add an [A record][dns] for your domain as well as a [www CNAME][dns]* for your domain. This basically means that if you added a site, say example.com, Cleaver configures your domain records with your cloud provider so that eventually you will be able to access your website using both example.com and www.example.com. This will only work if you have pointed your domain to the nameservers of the selected cloud providers (such as ns1.digitalocean.com, ns1.vultr.com etc)
15 |
16 | 5. **PROJECT TYPE**: **Static HTML** should be selected by default. If not, select it.
17 |
18 | 6. **WEB DIRECTORY**: The directory is where the site will point to while serving files. In other words, directory where the "point-of-entry" (usually index.html) for this site will be. For example, if your `index.html` file will be in the top folder of the site, leave this field blank. But instead if the index file will be, say, in `public` sub-directory of the site folder, you want to put `public` for the value.
19 |
20 | 7. **SECURE WITH LET'S ENCRYPT**: Check this field if you want to install and configure SSL certificates (from Let's Encrypt) for this site. We highly recommend you to check this option; after all it's free! If you decide to check this field and install SSL certificates, you must provide a valid email address.
21 | > **⚠️ Warning**: If you have not checked the checkbox in step 5 to let Cleaver configure DNS records for you, make sure you domain is pointed to the nameservers of the selected cloud provider otherwise this setup will fail.
22 | > **🗒 Note**: In case you decided not to secure your site with free SSL certificates at this time, you can always [install SSL certificates and secure your site later](/ssl-certificates.md).
23 |
24 | 8. Double check that all the values are what you wanted and then click **Add** button.
25 |
26 | Cleaver will finish installing and configuring the site for you within a couple of minutes.
27 |
28 | > **🗒 Note**: If this is the first secure site on the server then it is going to take few extra minutes to make sure your SSL certificates are as secure as possible.
29 |
30 | Once it is done, you can click on a little arrow to visit the site on your browser. Make sure that it's served over https and not http.
31 |
32 | > 🍄 Just for fun, after Cleaver is done adding your site, you could go to https://ssllabs.com/ssltest/analyze.html to check what security grade your site gets. It should get at least an A because you deserve nothing less!
33 |
34 | If things are still not clear, or if you are having an issue, please send us an email. In the meantime, watch the following clip that shows how to create a secure static web app using Cleaver: https://www.youtube-nocookie.com/embed/R6K-aOu3A7o?rel=0
35 |
36 |
37 | \* www CNAME is only added for a domain and not for a sub-domain
38 |
39 | [ssl-certificates-later]: ../SSL%20Certificates.md
40 | [dns]: https://www.name.com/support/articles/205516858-Understanding-DNS-record-types
41 |
--------------------------------------------------------------------------------
/4 Sites/Creating Sites/Adding WordPress blog.md:
--------------------------------------------------------------------------------
1 | ## ADDING WORDPRESS BLOG
2 | ---
3 |
4 | Creating a secure WordPress blog with Cleaver is not that different than creating a static site. The only difference is that you need to create a database and a database user as required by WordPress. Select `Databases` menu from the sidebar to quickly add a database and a user before performing following steps.
5 |
6 | ### STEPS
7 |
8 | 1. Select the server you want to add this Wordpress site to.
9 |
10 | 2. Select `Sites` menu from the secondary sidebar.
11 |
12 | 3. Click the **Add New Site** button.
13 |
14 | 4. **DOMAIN NAME**: Domain name for this site like blog.example.com. You must proide this value.
15 |
16 | 5. **ALSO ADD DNS RECORDS**: If you check this checkbox, Cleaver will add an [A record][dns] for your domain as well as a [www CNAME][dns]* for your domain. This basically means that if you added a site, say example.com, Cleaver configures your domain records with your cloud provider so that eventually you will be able to access your website using both example.com and www.example.com. This will only work if you have pointed your domain to the nameservers of the selected cloud providers (such as ns1.digitalocean.com, ns1.vultr.com etc)
17 |
18 | 5. **PROJECT TYPE**: Select **WordPress**.
19 |
20 | 6. **WORDPRESS DATABASE**: Select a database where all the WordPress related tables will be added automatically by WordPress and a database user that has access to use the selected database.
21 |
22 | 7. **SECURE WITH LET'S ENCRYPT**: Check this field if you want to install and configure SSL certificates (from Let's Encrypt) for this site. We highly recommend you to check this option; after all it's free! If you decide to check this field and install SSL certificates, you must provide a valid email address.
23 | > **⚠️ Warning**: If you have not checked the checkbox in step 5 to let Cleaver configure DNS records for you, make sure you domain is pointed to the nameservers of the selected cloud provider otherwise this setup will fail.
24 | > **🗒 Note**: In case you decided not to secure your site with free SSL certificates at this time, you can always [install SSL certificates and secure your site later][ssl-certificates-later].
25 |
26 | 8. Double check that all the values are what you wanted and then click **Add** button.
27 |
28 | Cleaver will finish installing and configuring the site for you within a couple of minutes. Among few other WordPress dependencies, Cleaver also installs PHP if you didn't install it when provisioning the server.
29 |
30 | > **🗒 Note**: If this is the first secure site on the server then it is going to take few extra minutes to make sure your SSL certificates are as secure as possible.
31 |
32 | Once it is done, you can visit this site on your browser to finish configuring your WordPress blog. Make sure that the site is served over https and not http.
33 |
34 | > 🍄 Just for fun, after Cleaver is done adding your site, you could go to https://ssllabs.com/ssltest/analyze.html to check what security grade your site gets. It should get at least an A because you deserve nothing less!
35 |
36 | If things are still not clear, or if you are having an issue, please send us an email. In the meantime, watch the following clip that shows how to create a secure WordPress blog using Cleaver: https://www.youtube-nocookie.com/embed/Sws9mIkQSYI?rel=0&showinfo=0
37 |
38 |
39 | \* www CNAME is only added for a domain and not for a sub-domain
40 | [ssl-certificates-later]: ../SSL%20Certificates.md
41 |
42 | [dns]: https://www.name.com/support/articles/205516858-Understanding-DNS-record-types
43 |
--------------------------------------------------------------------------------
/4 Sites/Creating Sites/Adding a domain.md:
--------------------------------------------------------------------------------
1 | ## Adding Domain
2 | ---
3 |
4 | When you add a (sub)domain, Cleaver will automatically add an `A record` for the domain to DigitalOcean if it does not exist already. While creating an A record, Cleaver also adds an `A record` for `www` subdomain. What this means is that, after adding a site, say example.com, it will be accessible using both www.example.com and example.com. You add a domain when creating a site.
--------------------------------------------------------------------------------
/4 Sites/Creating Sites/Adding grav CMS.md:
--------------------------------------------------------------------------------
1 | ## ADDING GRAV CMS
2 | ---
3 |
4 | ### STEPS
5 |
6 | 1. Select the server you want to add this [Grav][1] site to.
7 |
8 | 2. Select `Sites` menu from the secondary sidebar.
9 |
10 | 3. Click the **Add New Site** button.
11 |
12 | 4. **DOMAIN NAME**: Domain name for this site like grav.example.com.
13 |
14 | 5. **ALSO ADD DNS RECORDS**: If you check this checkbox, Cleaver will add an [A record][dns] for your domain as well as a [www CNAME][dns]* for your domain. This basically means that if you added a site, say example.com, Cleaver configures your domain records with your cloud provider so that eventually you will be able to access your website using both example.com and www.example.com. This will only work if you have pointed your domain to the nameservers of the selected cloud providers (such as ns1.digitalocean.com, ns1.vultr.com etc)
15 |
16 | 5. **PROJECT TYPE**: Select **Grav**.
17 |
18 | 6. **ADD ADMIN PLUGIN**: Check this field to install Grav with [admin plugin][2].
19 |
20 | 7. **SECURE WITH LET'S ENCRYPT**: Check this field if you want to install and configure SSL certificates (from Let's Encrypt) for your Grav site. We highly recommend you to check this option; after all it's free! If you decide to check this field and install SSL certificates, you must provide a valid email address.
21 | > **⚠️ Warning**: If you have not checked the checkbox in step 5 to let Cleaver configure DNS records for you, make sure you domain is pointed to the nameservers of the selected cloud provider otherwise this setup will fail.
22 | > **🗒 Note**: In case you decided not to secure your site with free SSL certificates at this time, you can always [install SSL certificates and secure your site later][ssl-certificates-later].
23 |
24 | 8. Double check that all the values are what you wanted and then click **Add** button.
25 |
26 | Cleaver will finish installing and configuring the site for you within a couple of minutes. Among few other Grav dependencies, Cleaver also installs PHP if you didn't install it when provisioning the server.
27 |
28 | > **🗒 Note**: If this is the first secure site on the server then it is going to take few extra minutes to make sure your SSL certificates are as secure as possible.
29 |
30 | Once it is done, you can click on a little arrow to visit the site on your browser. Make sure that it's served over https and not http.
31 |
32 | > 🍄 Just for fun, after Cleaver is done adding your site, you could go to https://ssllabs.com/ssltest/analyze.html to check what security grade your site gets. It should get at least an A because you deserve nothing less!
33 |
34 |
35 |
36 |
37 | If things are still not clear, or if you are having an issue, please watch [this][site-clip] clip that shows how to create a secure Grav cms site with the admin plugin using Cleaver.
38 |
39 |
40 | \* www CNAME is only added for a domain and not for a sub-domain
41 |
42 | [1]: https://getgrav.org
43 | [2]: https://github.com/getgrav/grav-plugin-admin/blob/develop/README.md
44 | [site-clip]: https://www.youtube-nocookie.com/embed/1Xfl8ARLq28?rel=0
45 | [ssl-certificates-later]: ../SSL%20Certificates.md
46 | [dns]: https://www.name.com/support/articles/205516858-Understanding-DNS-record-types
47 |
--------------------------------------------------------------------------------
/4 Sites/Creating Sites/README.md:
--------------------------------------------------------------------------------
1 | # Creating Sites
2 | ---
3 | Once your server is provisioned, you are ready to add one or many sites to your server. Cleaver supports 4 different types of sites right out of the box - static web apps, Laravel apps, WordPress blogs, and Grav CMS apps. We have plans to add plenty more in future.
4 |
5 | The main goal of Cleaver is to make server provisioning and site deployments easy and accessible for everyone. And to be true to its goal, Cleaver lets you just add your domains/ subdomains without having to deal with scary sounding system admin abbreviations such as `DNS`, `A records`, `CNAME records` etc. On top of this, Cleaver -- with the check of one checkbox -- installs, configures, and renews SSL certificates to make your site secure and thanks to [Let's Encrypt][letsencrypt], you don't pay a single penny for these SSL certificates. Some of Cleaver's early users have said that this alone makes Cleaver so powerful and helpful.
6 |
7 | [letsencrypt]: https://letsencrypt.org/
--------------------------------------------------------------------------------
/4 Sites/Deleting Site.md:
--------------------------------------------------------------------------------
1 | ## DELETING SITE
2 | ---
3 |
4 | ### STEPS
5 |
6 | 1. Select the site that you want to delete.
7 |
8 | 2. Select `Danger Zone` from the secondary sidebar
9 |
10 | 3. Type the domain name of the site and click `Delete` button.
11 |
12 | **⚠️ Warning**: Everything related to the site from the server such as your files, static assets, error logs, SSL certificates will be gone forever once you delete the site. There is no UNDO button.
13 |
14 | **🗒 Note**: Deleting a site doesn't delete the corresponding dns records that was added during the creation of the site, if any. You need to manually delete these records from your cloud provider's domain list.
--------------------------------------------------------------------------------
/4 Sites/README.md:
--------------------------------------------------------------------------------
1 | ## SITES
2 | ---
3 |
4 | Creating secure sites with Cleaver only takes few easy steps. Cleaver try to automate things as much as possible for you so that you could focus your time on doing things what you are good at - crafting beautiful and useful web apps.
5 |
6 | Among few other complex things, Cleaver takes care of adding domain records, installing missing dependencies, installing SSL certificates with auto-renewal on, ensuring proper files and folders permissions, configuring PHP-FPM (where applicable), configuring nginx, creating log files, setting up site to make it easy for zero downtime deployments and few more! We told you, Cleaver saves you hours of your valuable time.
7 |
8 | ### Adding Domain
9 |
10 | When you add a (sub)domain, Cleaver will automatically add an `A record` for the domain to the cloud provider if it does not exist already. While creating an A record, Cleaver also adds an `A record` for `www` subdomain. What this means is that, after adding a site, say example.com, it will be accessible using both www.example.com and example.com. There is no extra step to add a domain; you add a domain when creating a site.
--------------------------------------------------------------------------------
/4 Sites/SSL Certificates.md:
--------------------------------------------------------------------------------
1 | ## SECURING YOUR SITE USING FREE LETS ENCRYPT CERTIFICATES
2 | ---
3 |
4 | Cleaver let's you, with just checking one checkbox, secure your website at the time of creation. While this is convenient, but sometimes you may not want to install the certificates when creating a site esp. if you haven't setup your DNS records yet or for some other reasons. If so, you can always come back and secure your site with free SSL certificates courtesy of [Lets Encrypt][letsencrypt]!
5 |
6 | ### STEPS
7 |
8 | 1. Select the site you want to secure with SSL certificates.
9 |
10 | 2. From the secondary sidebar, select `SSL Certificates`.
11 | 3. Click on `ADD Certificates` button.
12 |
13 | 4. **LET'S ENCRYPT WEBMASTER EMAIL**: The email that these SSL certificates will be registered under. This is where Lets Encrypt will send you emails in case there was a problem with it or in case it needs to be renewed.
14 |
15 | 5. **DOMAIN TO SECURE**: The domain that needs to be secured. The top level domain should always be included.
16 | You can add additional subdomains if you want by clicking the `+` button. Usually if you are installing certificates for say example.com, you could also include www.example.com and have same certificates applied to both these two domains. In case the domain you are trying to secure is already a subdomain, such as blog.example.com, it usually doesn't make sense to add extra subdomains.
17 | > **⚠️ Warning**: If you haven't set up your DNS records properly and the domains you have entered on this page are not already accessible, the certificate installation process will fail and may invite unwanted side effects. You want to make sure that these domains are accessible first (try to ping them from your terminal to be sure).
18 |
19 | 7. If everything looks ok, click **Add SSL Certificates** button. Cleaver will do a quick DNS lookup for your domains and if it finds a possible problem, it should warn you. You can click **Yes** button to continue.
20 |
21 | Wait for few minutes while Cleaver secures your site with free and robust SSL certificates.
22 |
23 | > **🗒 Note**: If this is the first secure site on the server then it is going to take few extra minutes to make sure your SSL certificates are as secure as possible.
24 |
25 |
26 | [letsencrypt]: https://letsencrypt.org/
27 |
28 |
--------------------------------------------------------------------------------
/5 Databases/Adding Database User.md:
--------------------------------------------------------------------------------
1 | ## ADDING DATABASE USER
2 | ---
3 | ### STEPS
4 |
5 | 1. Select your server and from the secondary sidebar select `Databases`.
6 |
7 | 2. Switch to `Users` tab.
8 |
9 | 2. Click `Add New User` button.
10 |
11 | 3. **NAME**: Name of the database user. The name of the database user must be unique on this server.
12 |
13 | 4. **PASSWORD**: Password for this database user. This password will be automatically added to your keychain.
14 |
15 | 5. **CAN ACCESS**: Optionally, select a list of database that you want to allow this user to access. You can always come back and add/remove access later.
16 |
17 | 4. **DATABASE SERVER TYPE**: You'll only see this field if you haven't installed a database server on your server yet. Select the server you want to install before adding a database user. We recommend [MariaDB][mariadb].
18 |
19 | 5. Click **Add** button.
20 |
21 |
22 | ## DELETING DATABASE USER
23 | ---
24 |
25 | ### STEPS
26 | 1. From the list of database users, click the vertical bar menu (3 vertical dots) next to the database user you want to remove and select `Delete`.
27 |
28 | 2. Confirm that you really want to delete this database user by clicking **OK** button.
29 |
30 | ## EDITING DATABASE ACCESS PRIVILEGE
31 | ---
32 |
33 | ### STEPS
34 |
35 | 1. From the list of database users, click the vertical bar menu (3 vertical dots) next to the database user you want to adjust permissions and select `Edit`.
36 |
37 | 2. Add or remove database(s) from the `CAN ACCESS` list.
38 |
39 | 3. Click **Edit** button to commit the changes.
40 |
41 | ---
42 |
43 | If things are still not clear, or if you are having an issue, please send us an email. In the meantime, watch the following clip that shows how to add a database user to your server using Cleaver: https://www.youtube-nocookie.com/embed/BHUj4UAVikk?rel=0
44 |
45 |
46 |
47 |
48 | [mariadb]: https://mariadb.org/
49 |
--------------------------------------------------------------------------------
/5 Databases/Adding Database.md:
--------------------------------------------------------------------------------
1 | ## ADDING DATABASE
2 | ---
3 |
4 | ### STEPS
5 |
6 | 1. Select your server and from the secondary sidebar select `Databases`.
7 |
8 | 2. Make sure you are on `Databases` tab.
9 |
10 | 3. Click `Add New Database` button.
11 |
12 | 4. **NAME**: Name of the database. The name of the database must be unique on this server.
13 |
14 | 4. **DATABASE SERVER TYPE**: You'll only see this field if you haven't installed a database server on your server yet. Select the server you want to install before adding a database. We recommend [MariaDB][mariadb].
15 |
16 | 5. Click **Add** button
17 |
18 |
19 | ## DELETING DATABASE
20 | ---
21 |
22 | ### STEPS
23 |
24 | 1. From the list of database, click the vertical bar menu (3 vertical dots) next to the database you want to remove and select `Delete`.
25 |
26 | 2. Confirm that you really want to delete this database by clicking **OK** button.
27 |
28 |
29 |
30 | ---
31 |
32 | If things are still not clear, or if you are having an issue, please send us an email. In the meantime, watch the following clip that shows how to add a database to your server using Cleaver: https://www.youtube-nocookie.com/embed/Vh4iLzXuThU?rel=0
33 |
34 |
35 |
36 | [mariadb]: https://mariadb.org/
37 |
--------------------------------------------------------------------------------
/5 Databases/README.md:
--------------------------------------------------------------------------------
1 | ## MANAGING DATABASE SERVER
2 | ---
3 |
4 | Cleaver lets you install, configure, and manage databases and database users using its intuitive UI. Right now Cleaver supports MySQL database server version 5.7 and MariaDB database server version 10.2.
5 |
6 | You can decide to install a database server when provisioning the server or later, when creating a database or a database user. Whenever you decide to install a database server, a root database user will be created and a random password will be set for you. You can find the root database user password in your keychain.
--------------------------------------------------------------------------------
/6 Deployments/Deploying/Deploying a Laravel App.md:
--------------------------------------------------------------------------------
1 | ## DEPLOYING A LARAVEL APP
2 | ---
3 |
4 | ### STEPS
5 | 1. [Setup the local git repository][setup-repo]
6 | 2. [Adjust hooks][adjust-hooks]
7 | 3. [Deploy][deploy]
8 | 4. [Sync environment variables][sync-env]
9 |
10 | If things are still not clear, or if you are having an issue, please send us an email. In the meantime, watch the following clip that shows how to deploy a Laravel app using Cleaver:
11 | https://www.youtube-nocookie.com/embed/pdzvB1Et0-c?rel=0
12 |
13 |
14 | [setup-repo]: ../Local%20Repository.md
15 | [adjust-hooks]: ../Hooks.md
16 | [deploy]: ../README.md
17 | [sync-env]: ../Environment%20Variables.md
18 |
19 |
20 |
--------------------------------------------------------------------------------
/6 Deployments/Deploying/Deploying a Static App.md:
--------------------------------------------------------------------------------
1 | ## DEPLOYING A STATIC WEB APP
2 | ---
3 |
4 | ### STEPS
5 | 1. [Setup the local git repository][setup-repo]
6 | 2. [Adjust hooks][adjust-hooks]
7 | 3. [Deploy][deploy]
8 |
9 | If things are still not clear, or if you are having an issue, please send us an email. In the meantime, watch the following clip that shows how to deploy a static web app using Cleaver: https://www.youtube-nocookie.com/embed/2dcyH6be8fI?rel=0
10 |
11 |
12 |
13 | [setup-repo]: ../Local%20Repository.md
14 | [adjust-hooks]: ../Hooks.md
15 | [deploy]: ../README.md
16 |
--------------------------------------------------------------------------------
/6 Deployments/Deploying/Rolling back.md:
--------------------------------------------------------------------------------
1 | ## ROLLING BACK A DEPLOYMENT
2 | ---
3 | Cleaver's 1-click rollback lets you quickly switch back to a previous deployment. This is really useful in case you realized there was a problem with newly pushed code or in case there was an error during deployment.
4 |
5 | ### STEPS
6 | 1. From the list of deployments, click the vertical bar menu (3 vertical dots) next to the deployment you want to rollback to and select `Rollback`.
7 | 2. There is not step 2.
8 |
9 | ### THINGS TO REMEMBER WITH ROLLING BACK
10 | There are few things you have to keep in mind when rolling back a deployment:
11 |
12 | 1. Rollback doesn't transfer anything from the linked repository. Rollback only points to a previous snapshot if it already exists on your server.
13 | 2. It doesn't make any changes to your linked repository.
14 | 3. Rollback is not available for the top/current deployment (you'll notice that the `Rollback` menu is disabled) because it doesn't make sense to rollback to the current deployment.
15 | 4. Rollback doesn't revert hooks! This means it doesn't rollback things such as migrations or any database changes that have already been made. Make sure to revert any migrations manually.
16 |
17 |
18 |
--------------------------------------------------------------------------------
/6 Deployments/Environment Variables.md:
--------------------------------------------------------------------------------
1 | ## ENVIRONMENT VARIABLES
2 | ---
3 | > **🗒 Note**: Only applies to Laravel apps
4 |
5 | As you should already know, Laravel allows you configuration variables via an .env file. You can add these variables in Cleaver and then copy to server whenever you need to. Let's see how:
6 |
7 | 1. Select a Laravel site.
8 |
9 | 2. Select `Deployments` from the sidebar and then select `Environment` tab.
10 |
11 | 3. **.ENV FILE PATH**: Browse your `.env` file that you'd like to copy to your server. We recommend that you have a `.env.cleaver` file for your live site.
12 |
13 | 4. Once you are ready, click **Add** button.
14 |
--------------------------------------------------------------------------------
/6 Deployments/Hooks.md:
--------------------------------------------------------------------------------
1 | ## HOOKS
2 | ---
3 |
4 | Hooks are a collection of scripts that are run in order when deploying an app. Think of them as steps necessary to deploy an app successfully.
5 |
6 | If you select `Hooks` tab after setting up a repository, you will notice that Cleaver installs some hooks for you. These hooks are needed to deploy your app properly. You cannot delete these hooks.
7 |
8 | You will also notice that some of the hooks have a 🔒 icon in front of them. These hooks cannot be deleted or disabled. Hooks without a 🔒 can be disabled.
9 |
10 | > **🗒 Note**: Enabling or disabling a hook won't affect a deployment that's already in progress. If you make any changes to hooks, you have to deploy your app again for the changes to take effect.
11 |
--------------------------------------------------------------------------------
/6 Deployments/Local Repository.md:
--------------------------------------------------------------------------------
1 | ## SETTING UP LOCAL REPOSITORY
2 | ---
3 | ### Local Repository deployment has been deprecated in Cleaver v1.0
4 | ### Starting from Cleaver v1.1, local repository is no longer supported.
5 |
--------------------------------------------------------------------------------
/6 Deployments/README.md:
--------------------------------------------------------------------------------
1 | ## DEPLOYMENTS
2 | ---
3 |
4 | Once you have [setup your project's local git repo][setup-repo] and [lined up the hooks][hooks], you are ready to [deploy your app][deploy]. All you need to do is click the `🚀 Deploy Now` button!
5 |
6 | Cleaver supports zero downtime deployments right out of the box. This means once deployment is made, it takes fractions of seconds to switch from the old version of your site to the latest version of your site - so quick that it really is almost zero downtime.
7 |
8 | Cleaver saves the last 5 deployments so that you could rollback to an old one quickly if you need to.
9 |
10 | If your app depends on .env file (like a Laravel app does), make sure to [add and activate][env] your .env variables.
11 |
12 |
13 | [setup-repo]: /deployments/setting-up-local-repository.md
14 | [hooks]: /deployments/hooks.md
15 | [deploy]: /deployments/deploying.md
16 | [env]: /deployments/environment
17 |
--------------------------------------------------------------------------------
/6 Deployments/Remote Repository.md:
--------------------------------------------------------------------------------
1 |
2 | ## DEPLOYING FROM A REMOTE REPOSITORY
3 |
4 | Cleaver lets you deploy from a remote repository on either GitHub, GitLab, or BitBucket. Cleaver supports both private and public repositories.
5 |
6 | Switch repository from a one version control provider (GitHub, GitLab, or BitBucket) to to another is seamless and you don't lose anything, including your old deployments. This means you could still rollback to an old deployment if you need to.
7 |
8 | ### PREREQUISITES
9 |
10 | If you have provisioned your server before Cleaver v0.20, you **MUST** update your server. Cleaver will let you know if your server needs to be updated. It only takes a few seconds to apply the update needed for supporting remote repository deployment.
11 |
12 | ### STEPS
13 | 1. Go to your VCP, and create and copy a new personal access token. This differs for each VCP. See steps below for each provider.
14 | 2. Back in Cleaver, select `Providers` from the sidebar and click `Add New Provider`.
15 | 3. Select your VCP - either GitHub, GitLab, or BitBucket and enter a profile name for this provider. Paste the personal access token that you created in step 1 above in the Access Token field. Click `Add` when you are done.
16 | 4. Select the site you are trying to deploy and select `Repository` tab.
17 | 5. In the `REMOTE REPOSITORY` field, copy paste your git project like so: `getcleaver/docs`.
18 | 6. Add default branch to deploy from in `DEFAULT BRANCH TO DEPLOY` field. Don't worry, you can always deploy from a different branch if you need to.
19 | 7. Hit `Done` button and now you are ready to deploy from your remote repository!
20 |
21 | #### GETTING PERSONAL ACCESS TOKEN FROM GITHUB
22 | `. Go to https://github.com/settings/tokens/new and create a new personal access token.
23 | 2. Select **repo** scope.
24 |
25 | #### GETTING PERSONAL ACCESS TOKEN FROM GITLAB
26 | 1. Go to https://gitlab.com/profile/personal_access_tokens and create a new personal access token.
27 | 2. Leave the `Expires At` field blank and select **api** scope.
28 |
29 | #### GETTING PERSONAL ACCESS TOKEN (APP PASSWORD) FROM BITBUCKET
30 | 1. Go to https://bitbucket.org/account
31 | 2. From the sidebar and from under ACCESS MANAGEMENT, select `App passwords`.
32 | 3. Click `Create app password` button.
33 | 4. Give it a label and select `Repositories>Read` permission.
34 |
--------------------------------------------------------------------------------
/FAQ.md:
--------------------------------------------------------------------------------
1 | ## FREQUENTLY ASKED QUESTIONS
2 |
3 | **Where is all the my servers and sites information/ metadata
4 | saved?**
5 |
6 | Cleaver doesn't save any of your information in the cloud. This
7 | means you own the information about your servers and sites and
8 | nobody else. They are saved on your local machine in a single file -
9 | `cleaver.db`. The location depends on the type of Operating
10 | System you are using:
11 |
12 | On OSX: `~/Library/Application Support/cleaver/`
13 |
14 | On Windows: `%APPDATA%/cleaver`
15 |
16 | On Linux: `$XDG_CONFIG_HOME/cleaver` or `~/.config/cleaver`
17 |
18 | **What are the steps for creating and provisioning a DigitalOcean server?**
19 |
20 | * Please follow [these steps][provisioning].
21 |
22 |
23 | **What are the steps for creating and provisioning a Vultr server?**
24 |
25 | * Please follow [these steps][provisioning].
26 |
27 | **What does Cleaver do to my server when provisioning? What software gets installed?**
28 | * Following are some of the important operations that Cleaver performs when provisioning your server:
29 | - Installs Ubuntu 18.04 and some packages - `wget`, `unzip`, and `zip`
30 | - Configures automatic security updates
31 | - Creates a swap file
32 | - Creates a non-admin user named `cleaver`
33 | - Adds public keys of GitHub, GitLab, and BitBucket to make it easy to deploy your web apps
34 | - Configures SSH and disabled password authentication
35 | - Configures firewall that allows SSH connection on Port 22, TCP connections on both port 80 and 443
36 | - Configures fail2ban
37 | - Installs and configures supervisor
38 | - Installs and configures Nginx
39 |
40 | [provisioning]: /servers/provisioning.md
41 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## CLEAVER
2 | ---
3 |
4 | [Cleaver][1] helps you create servers ready for deploying your web apps with zero downtime. The goals of Cleaver are:
5 |
6 | * To make server provisioning easy and accessible for everyone - pros or amateurs.
7 | * To make server provisioning affordable for everyone esp. for indie developers.
8 | * To make handling of server related tasks such as creating domains, managing databases, zero downtime deployments, adding/removing SSH keys etc. easy and intuitive.
9 |
10 | ### PLEASE SAY HELLO 👋
11 |
12 | 💬 **SLACK**: https://goo.gl/stckNZ
13 | Use Slack to interact with the team as well as the users of Cleaver. This is the recommended and preferred way.
14 |
15 | 🐦 **Twitter**: https://twitter.com/getcleaver
16 | Use Twitter for a quick question or a casual conversation or to let us know how well we are doing. If you like Cleaver, a quick appreciation tweet will be more effective than few cups of coffee for us to improve Cleaver to make it even more helpful for you.
17 |
18 | 🎥 **YouTube**: https://www.youtube.com/channel/UCrLgKI8j01ReLBQudXA_elw
19 | Our goal is to make Cleaver as intuitive as possible to avoid making you consult documentation or watch tutorials. But in case you need them, we have some short video clips added on our Cleaver channel. Please watch them and let us know how we are doing.
20 |
21 | [1]: https://getcleaver.com/?ref=docs
22 |
--------------------------------------------------------------------------------
/Troubleshooting.md:
--------------------------------------------------------------------------------
1 | ## GETTING STARTED TROUBLESHOOTING
2 | ---
3 |
4 | * **I cannot sign in**
5 | * Make sure you have created a Cleaver account. You can create an account from within the app. It only takes few seconds to signup for a new account.
6 |
7 |
8 | ## CLOUD PROVIDER TROUBLESHOOTING
9 | ---
10 |
11 | * **I cannot sign in**
12 | * Make sure you have created a Cleaver account. You can create an account from within the app and only takes few seconds.
13 |
14 |
15 | * **I keep getting 'Error adding the profile' error**
16 | * Make sure the access token you copied exists on the provider and is valid.
17 |
18 |
19 | ## SERVER PROVISION TROUBLESHOOTING
20 | ---
21 |
22 | * **I don't see a list of server region**
23 | * Hit `cancel` button and try again by clicking `Add New Server` button. If you still can't see the list, try restarting the app.
24 |
25 |
26 | * **Server status is 'error' and I don't know why**
27 | * First, make sure your access token is valid.
28 | * This is a known issue with DigitalOcean sometimes. Go to your [DigitalOcean Dashboard][do-dashboard] and see if it says "There was an error while creating your droplet" next to your droplet. In either case, try creating a new server again. If the problem persists, wait for few minutes and try creating a server on a different region.
29 | * Check [DigitalOcean status page][do-status] and make sure the region you have selected is not having an issue.
30 | * If everything seems fine and nothing works, please send us an email.
31 |
32 |
33 | * **Server provisioning is taking forever**
34 |
35 | * Server provisioning duration could depend on few factors:
36 | * The region you have selected.
37 | * DigitalOcean is going through a maintenance or experiencing some issues.
38 | * Extra packages you have selected (such as MySQL, NodeJS) etc. and the status of these packages.
39 | * Your network is slow (not a big factor but still) or got interrupted while provisioning.
40 | Sometimes it is helpful to just let it run for extended time. Also, you want to go to DigitalOcean dashboard and see if there was an error or not.
41 | Try restarting the app and provisioning a new server possibly on a different region.
42 |
43 |
44 | * **I cannot login to my server as root**
45 | * Once your server is initially provisioned, logging as root user over SSH is disabled by Cleaver because of [security concerns][1]. Try to login as user `cleaver` which is created for you by Cleaver when provisioning your server.
46 |
47 | * **Where is the private key for a server that I just created?**
48 | * On macOS, it's under `~/.ssh/cleaver` and starts with the nave of the server followed by a random id.
49 |
50 |
51 | * **I cannot login as user `cleaver` over ssh**
52 | * Make sure to you pass in your private key located under `~/.ssh/cleaver` when logging in. Something like:
53 |
54 | `ssh cleaver@ -i ~/.ssh/cleaver/`
55 |
56 |
57 | ## SITE TROUBLESHOOTING
58 | ---
59 |
60 | * **Installing Let's Encrypt fails or my site is not encrypted**
61 | * There could be a number of reasons why Let's Encrypt SSL certificates would fail:
62 | * Make sure you own the domain you are adding
63 | * Make sure the domain is pointed to the cloud server's nameservers (for DigitalOcean it would be ns1.digitalocean.com, ns2.digitalocean.com, and ns3.digitalocean.com) that you are adding this site to.
64 | * Make sure there isn't already a site running with this name somewhere else.
65 | * Make sure you are not creating too many secure sites on this server. Let's Encrypt allows you to create only [5 certificates per hour][letsencrypt-rate-limit] on 1 server.
66 |
67 | * **Let's Encrypt configuration is taking forever**
68 | * If you are adding a secure site for the first time, SSL certificate configuration could take some extra minutes as we create a [dhparam][dhparam] file for extra security. Unfortunately, there is no way to know how long it would take - it could take anywhere from 3-4 minutes to 30 minutes or more. But we have never seen it go beyond 10 minutes ourselves.
69 |
70 | Creation of the dhparam file only happens on the first SSL site creation, so you should not see SSL certicates configuration taking too much time every time you add a new site. If it does, let us know and we'll figure it out together.
71 |
72 | * **I have other questions or I'm still having an issue**
73 | * We are very sorry that you are still having an issue. Please email us with as much information as possible and we'll sort it out right away.
74 |
75 | ## DATABASE TROUBLESHOOTING
76 | ---
77 |
78 | * **My MySQL setup has an issue**
79 | * MySQL sometimes does not play well with installation scripts. This is also one of the reasons why we strongly recommend [MariaDB][mariadb]. But if you cannot switch to MariaDB, try installing MySQL again by logging into your server. You can [follow these steps][2].
80 |
81 |
82 | ## DEPLOYMENT TROUBLESHOOTING
83 | ---
84 |
85 | * **Deploy Now button is disabled**
86 | * Make sure you have added a path to your local git repo. If you have not, click on `⚙️ Settings` button to [link your repo][setup-repo] first.
87 |
88 |
89 | * **My .env variables are not synced when deploying**
90 | * This is by design. Go to `Environment` tab to sync it manually.
91 |
92 |
93 | * **My changes are not being deployed**
94 | * Make sure that you have committed all your changes before you want to deploy. This is by design as well.
95 | * Make sure you have set the branch that you intend to deploy on the [setup repo page][setup-repo]
96 |
97 |
98 | * **Deployment fails sometimes but then deploying it again works**
99 | * Make sure to wait at least a minute before deploying a new deployment.
100 | If you click `🚀 Deploy Now` button too many times consecutively, you may have been throttled by your own server.
101 |
102 |
103 | * **The Rollback button on the first/ top deployment is disabled**
104 | * This is by design as it really doesn't make sense to rollback to the current deployment. If you have a good case against it, please let us know.
105 |
106 |
107 | [setup-repo]: /deployments/setup-local-repo
108 |
109 | [mariadb]: https://mariadb.org/
110 | [2]: https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-16-04
111 |
112 | [mariadb]: https://mariadb.org/
113 | [2]: https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-16-04
114 | [letsencrypt-rate-limit]: https://letsencrypt.org/docs/rate-limits/
115 | [dhparam]: https://security.stackexchange.com/questions/94390/whats-the-purpose-of-dh-parameters
116 |
117 | [1]: https://unix.stackexchange.com/a/82639/249514
118 | [do-dashboard]: https://cloud.digitalocean.com/droplets
119 | [do-status]: http://status.digitalocean.com/
--------------------------------------------------------------------------------