CINXE.COM
DigitalOcean Marketplace
<!DOCTYPE html><html lang="en-US"><head><meta charSet="utf-8"/><meta name="viewport" content="initial-scale=1.0, width=device-width"/><meta property="og:locale" content="en_US"/><meta property="og:site_name" content="DigitalOcean"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary"/><meta name="twitter:site" content="@DigitalOcean"/><meta name="twitter:creator" content="@DigitalOcean"/><title>DigitalOcean Marketplace</title><meta property="og:title" content="DigitalOcean Marketplace"/><meta name="description" content="DigitalOcean Marketplace lets developers easily discover and quickly launch services, components and tools from the open source projects and companies that they love."/><meta property="og:description" content="DigitalOcean Marketplace lets developers easily discover and quickly launch services, components and tools from the open source projects and companies that they love."/><meta property="og:url" content="https://marketplace.digitalocean.com"/><link rel="canonical" href="https://marketplace.digitalocean.com"/><meta property="og:image" content="https://www.digitalocean.com/assets/media/logo-a721c4a7.png"/><meta property="og:image:alt" content="DigitalOcean"/><meta name="next-head-count" content="16"/><link rel="apple-touch-icon" sizes="180x180" href="/static/apple-touch-icon.png"/><link rel="icon" type="image/png" sizes="32x32" href="/static/favicon-32x32.png"/><link rel="icon" type="image/png" sizes="16x16" href="/static/favicon-16x16.png"/><link rel="mask-icon" href="/static/mask-icon.svg" color="#3387ff"/><link rel="manifest" href="/static/site.webmanifest"/><link rel="manifest" href="/static/manifest.json"/><link rel="shortcut icon" href="/static/favicon.ico"/><meta name="msapplication-TileColor" color="#3387ff"/><meta name="msapplication-config" content="/static/browserconfig.xml"/><script>(function(d) { var config = { kitId: 'ryt7tqg', scriptTimeout: 3000, async: true, }, h = d.documentElement, t = setTimeout(function() { h.className = h.className.replace(/wf-loading/g, '') + ' wf-inactive'; }, config.scriptTimeout), tk = d.createElement('script'), f = false, s = d.getElementsByTagName('script')[0], a; h.className += ' wf-loading'; tk.src = 'https://use.typekit.net/' + config.kitId + '.js'; tk.async = true; tk.onload = tk.onreadystatechange = function() { a = this.readyState; if (f || (a && a != 'complete' && a != 'loaded')) return; f = true; clearTimeout(t); try { Typekit.load(config); } catch (e) {} }; s.parentNode.insertBefore(tk, s); })(document);</script><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="/_next/static/chunks/webpack-92ec6f198a65aa87.js" defer=""></script><script src="/_next/static/chunks/framework-21bee21590f1dc09.js" defer=""></script><script src="/_next/static/chunks/main-c8e559342204fdb7.js" defer=""></script><script src="/_next/static/chunks/pages/_app-b2e2ee0507b004bc.js" defer=""></script><script src="/_next/static/chunks/29107295-c3c12e6f8bf94c9b.js" defer=""></script><script src="/_next/static/chunks/bd43453b-e68f36c83764a57a.js" defer=""></script><script src="/_next/static/chunks/306-50ad5cefa1f1f797.js" defer=""></script><script src="/_next/static/chunks/923-5de6618319e4261b.js" defer=""></script><script src="/_next/static/chunks/453-36c08580cdf561cf.js" defer=""></script><script src="/_next/static/chunks/146-aff4c59f185c7e6a.js" defer=""></script><script src="/_next/static/chunks/392-1c68715572c8b6a7.js" defer=""></script><script src="/_next/static/chunks/381-ca91a9b56e03bdc8.js" defer=""></script><script src="/_next/static/chunks/39-0d1ac2ba200061a6.js" defer=""></script><script src="/_next/static/chunks/463-25e491464d6ec839.js" defer=""></script><script src="/_next/static/chunks/131-42747a8c30af5d2b.js" defer=""></script><script src="/_next/static/chunks/387-b8ece7e09740f0f9.js" defer=""></script><script src="/_next/static/chunks/pages/index-9213b4ee9371546d.js" defer=""></script><script src="/_next/static/24295d1430a724cc619babbb7ebdbd1f0fd1c7e8/_buildManifest.js" defer=""></script><script src="/_next/static/24295d1430a724cc619babbb7ebdbd1f0fd1c7e8/_ssgManifest.js" defer=""></script><style data-styled="" data-styled-version="5.3.5"></style></head><body><div><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="position: absolute; width: 0; height: 0" aria-hidden="true" id="__SVG_SPRITE_NODE__"></svg></div><div id="__next" data-reactroot=""></div><script id="__NEXT_DATA__" type="application/json">{"props":{"headers":{"host":"marketplace.digitalocean.com","cdn-loop":"cloudflare; loops=1","cf-ipcountry":"SG","accept-encoding":"gzip, br","cf-ray":"8e736fb49abca3dc-SIN","cf-visitor":"{\"scheme\":\"https\"}","user-agent":"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022; .NET CLR 1.0.3705; .NET CLR 1.1.4322)","accept":"*/*","cf-connecting-ip":"8.222.208.146","x-forwarded-proto":"https","x-forwarded-for":"8.222.208.146, 162.158.163.139","connection":"close"},"pageProps":{"homepage":{"hero_title":[{"text":"DigitalOcean Marketplace solutions keep you growing","__typename":"PrismicStructuredText"}],"hero_text":[{"text":"Power up your app, Droplet, Kubernetes clusters, and more with Droplet 1-Click preconfigured VMs, Kubernetes 1-Click helm deployments, and SaaS Add-Ons.","__typename":"PrismicStructuredText"}],"search_label_text":[{"text":"Find a solution","__typename":"PrismicStructuredText"}],"app_cat_group_title":[{"text":"Explore DigitalOcean Marketplace categories","__typename":"PrismicStructuredText"}],"app_cat_group":[{"app_cat_icon":{"url":"https://images.prismic.io/do-marketplace-testing/dd9f1d99-3d79-463c-b925-d2e3a11c3928_kubernetes_icon.svg?auto=compress,format","__typename":"PrismicStructuredImage"},"app_cat_title":[{"text":"Kubernetes 1-Click Deployments","__typename":"PrismicStructuredText"}],"app_cat_body":[{"text":"Rapidly deploy preconfigured software or tech stacks.","__typename":"PrismicStructuredText"}],"app_cat_link":{"url":"https://marketplace.digitalocean.com/category/kubernetes","__typename":"PrismicWebLink"},"__typename":"AppCatGroup"},{"app_cat_icon":{"url":"https://images.prismic.io/do-marketplace-testing%2F8062b9c5-4537-444c-a5f4-4a08ab13f84b_dev-tools-50-x-50.svg?auto=compress,format","__typename":"PrismicStructuredImage"},"app_cat_title":[{"text":"Developer Tools and Services","__typename":"PrismicStructuredText"}],"app_cat_body":[{"text":"Tools and services that get you to production faster.","__typename":"PrismicStructuredText"}],"app_cat_link":{"url":"https://marketplace.digitalocean.com/category/developer-tools","__typename":"PrismicWebLink"},"__typename":"AppCatGroup"},{"app_cat_icon":{"url":"https://images.prismic.io/do-marketplace-testing%2Fc3974e17-0391-4287-aa60-8c21cd856adb_blogs-forums-50-x-50.svg?auto=compress,format","__typename":"PrismicStructuredImage"},"app_cat_title":[{"text":"Blogs and Forums\t","__typename":"PrismicStructuredText"}],"app_cat_body":[{"text":"Build a community with ready-to-go software like WordPress, Ghost, and Discourse.","__typename":"PrismicStructuredText"}],"app_cat_link":{"url":"https://marketplace.digitalocean.com/category/blogs-and-forums","__typename":"PrismicWebLink"},"__typename":"AppCatGroup"}],"featured_apps_group_title":[{"text":"Staff Picks","__typename":"PrismicStructuredText"}],"featured_apps_group":[{"featured_app":{"name":"WordPress","appId":"5ba19759c472e4189b34e066","developerId":"","safeName":["wordpress"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/wordpress-20-04.svg","version":"6.4.5","osVersion":"Ubuntu 22.04","tags":["Blogs and Forums"],"support":{"url":"https://wordpress.org/support/","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"WordPress","version":"6.4.1","website":"","releaseNotes":"https://wordpress.org/news/","licenseLink":"https://wordpress.org/about/license/","licenseType":"GPL 2","__typename":"CustomSoftware"},{"name":"Apache","version":"2.4.52","website":"","releaseNotes":"https://packages.ubuntu.com/focal/apache2","licenseLink":"https://www.apache.org/licenses/","licenseType":"Apache 2","__typename":"CustomSoftware"},{"name":"MySQL server","version":"8.0.35","website":"","releaseNotes":"https://packages.ubuntu.com/focal/mysql-server","licenseLink":"https://www.mysql.com/about/legal/licensing/oem/#5","licenseType":"GPL 2 with modifications","__typename":"CustomSoftware"},{"name":"PHP","version":"8.0.30","website":"","releaseNotes":"https://packages.ubuntu.com/focal/php","licenseLink":"http://php.net/license/index.php","licenseType":"PHP v3.01","__typename":"CustomSoftware"},{"name":"Fail2ban","version":"5.2.1","website":"","releaseNotes":"https://plugintests.com/plugins/wporg/wp-fail2ban/latest","licenseLink":"https://github.com/fail2ban/fail2ban/blob/0.11/COPYING","licenseType":"GPL 2","__typename":"CustomSoftware"},{"name":"Postfix","version":"3.6.4","website":"","releaseNotes":"https://packages.ubuntu.com/focal/postfix","licenseLink":"http://www.postfix.org/IBM-Public-License-1.0.txt","licenseType":"IBM Public","__typename":"CustomSoftware"},{"name":"Certbot","version":"1.21","website":"","releaseNotes":"https://packages.ubuntu.com/focal/certbot","licenseLink":"https://github.com/certbot/certbot/blob/master/LICENSE.txt","licenseType":"Apache 2","__typename":"CustomSoftware"}],"summary":"A popular Content Management System built on PHP and MySQL.","description":"\u003cblockquote\u003e\n \u003cp\u003e- \u0026#34;WordPress is a factory that makes webpages\u0026#34; Fred Meyer\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eWordPress is a free and open-source content management system. Originally it was intended to be a blog-publishing system, but has evolved to support other web content types including more traditional mailing lists and Internet forums, media galleries, membership sites, learning management systems (LMS) and online stores. WordPress is used by 42.8% of the top 10 million websites as of October 2021.\u003c/p\u003e\n\u003ch1 id=\"before-you-deploy-your-first-wordpress-droplet\"\u003eBefore you deploy your first WordPress Droplet\u003c/h1\u003e\n\u003ch4 id=\"get-a-domain-name\"\u003eGet a Domain name\u003c/h4\u003e\n\u003cp\u003eUse this \u003ca href=\"https://docs.digitalocean.com/products/networking/dns/quickstart/\" rel=\"noopener\" target=\"_blank\"\u003eDNS quickstart\u003c/a\u003e guide to get your DNS setup on DigitalOcean. You’ll first need to purchase and register your domain through a third party, such as Name.com, GoDaddy, etc…\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eWhy do you need a domain name?\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003eThis is how others will access your server and how you and your users will be identified on the network.\u003c/p\u003e\u003c/li\u003e\n\u003c/ul\u003e","gettingStarted":"\u003cp\u003eOn your first \u003ca href=\"https://docs.digitalocean.com/products/droplets/how-to/connect-with-ssh/\"\u003eSSH login to the droplet\u003c/a\u003e or launch of the Droplet console of your WordPress Droplet 1-Click, you will be greeted by a WordPress setup script.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cem\u003eIf you do not have a Domain yet you can enter the IP address of your Droplet into the setup script when prompted for the Domain/Subdomain instead.\u003c/em\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThe first step is to enter your domain name. Make sure that your domain is pointing to the new droplet IP. If your DNS is managed by DigitalOcean, it should look like this:\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://i.imgur.com/zRbRECQ.png\" alt=\"WordPress DNS Setup Example\"\u003e\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eThe DNS Host may be the same company you registered the domain with or another entity you designate. To connect your DNS hosting to DigitalOcean, check out \u003ca href=\"https://docs.digitalocean.com/tutorials/dns-registrars/\"\u003ethis guide\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eOnce your A record is set up, you are ready to enter your domain in the script:\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://i.imgur.com/prDL8Ky.png\" alt=\"WordPress Domain Prompt\"\u003e\u003c/p\u003e\n\u003cp\u003eNext, the script will ask you user-related data:\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://i.imgur.com/1uvpST4.png\" alt=\"WordPress User Data Prompt\"\u003e\u003c/p\u003e\n\u003cp\u003eAfter you acknowledge data is correct, the script will ask if you want to configure HTTPS automatically for your droplet. We highly recommend setting HTTPS since using a domain is useless without it.\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eYou will need to provide the email address which will receive security and renewal notices:\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://i.imgur.com/xYaZja6.png\" alt=\"Certbot Email Prompt\"\u003e\u003c/p\u003e\n\u003cp\u003eFinally, after reading the LetsEncrypt Terms of Service and selecting whether to share or not your email address with the Electronic Frontier Foundation, the script will ask you which domain names would you like to activate HTTPS for:\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://i.imgur.com/vwFGHAr.png\" alt=\"WordPress HTTPS Activation Prompt\"\u003e\u003c/p\u003e\n\u003cp\u003eConsider activating HTTPS for both naked and WWW versions of your domain by specifying 1,2.\u003c/p\u003e\n\u003cp\u003eWordPress will take a few minutes to set up plugins and finish installation, after that you can access your fresh WordPress Droplet by typing your domain name in the browser. For accessing the admin console, use https://%YOUR_DOMAIN%/wp-admin.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cem\u003eIf you entered an IP address instead of the Domain name you can access the admin console by using https://%YOUR_IP%/wp-admin instead.\u003c/em\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003ch1 id=\"getting-started-with-wordpress\"\u003eGetting started with WordPress\u003c/h1\u003e\n\u003cp\u003eWordPress official website has quite a few excellent sources of information for beginners and even experienced users.\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eIf you are starting your journey with WordPress, consider taking a look at the official \u003ca href=\"https://wordpress.com/learn/all-courses/\"\u003ecourses\u003c/a\u003e.\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://wordpress.com/learn/articles/\"\u003eArticles\u003c/a\u003e page contains some lovely ideas on how to improve your WordPress website. Or you can get exclusive knowledge from WordPress experts on \u003ca href=\"https://wordpress.com/learn/webinars/\"\u003ewebinars\u003c/a\u003e.\u003c/p\u003e\n\u003ch2 id=\"droplet-summary\"\u003eDroplet Summary\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe root password for the MySQL instance running on your Droplet is in /root/.digitalocean_password. The Droplet root user will not be prompted for the MySQL password.\u003c/li\u003e\n\u003cli\u003eIf you’re connecting to a DigitalOcean Managed Database, your MySQL connection information can be found in /var/www/html/wp-config.php.\u003c/li\u003e\n\u003cli\u003eThe web root is /var/www/html, and the WordPress configuration file is /var/www/html/wp-config.php.\u003c/li\u003e\n\u003cli\u003eYou can get information about the PHP installation by logging into the Droplet and running php -i.\u003c/li\u003e\n\u003cli\u003eUFW firewall allows only SSH (port 22, rate limited), HTTP (port 80), and HTTPS (port 443) access.\u003c/li\u003e\n\u003cli\u003eDroplet sets the MySQL root password, runs mysql_secure_installation, and creates a wordpress user with the necessary permissions. The Droplet root user will not be prompted for the MySQL password. Keep in mind that if you’re connecting to a DigitalOcean Managed Database, the locally installed database will be disabled.\u003c/li\u003e\n\u003cli\u003eDroplet sets up the debian-sys-maint user in MySQL so the system’s init scripts for MySQL will work without requiring the MySQL root user password.\u003c/li\u003e\n\u003cli\u003eDroplet creates the initial WordPress configuration file to set up \u003ca href=\"https://developer.wordpress.org/reference/functions/wp_salt/\"\u003esalt keys\u003c/a\u003e and allow the WordPress instance to connect to the database.\u003c/li\u003e\n\u003cli\u003eXML-RPC is disabled to help prevent DDoS and other brute force attacks.\u003c/li\u003e\n\u003cli\u003eSome of PHP’s settings are modified to increase the maximum file size and execution time.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://httpd.apache.org/docs/current/mod/mod_rewrite.html\"\u003eApache rewrite module\u003c/a\u003e is enabled so the WordPress permalink feature will work.\u003c/li\u003e\n\u003cli\u003eApache is configured with UseCanonicalName On to mitigate \u003ca href=\"https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8295\"\u003eCVE-2017-8295\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1 id=\"protect-your-wordpress-data-with-snapshooter\"\u003eProtect your Wordpress data with SnapShooter\u003c/h1\u003e\n\u003cp\u003e\u003ca href=\"https://marketplace.digitalocean.com/add-ons/snapshooter\"\u003eSnapShooter\u003c/a\u003e, an offering from DigitalOcean, offers comprehensive backup solutions for all your cloud resources, including your WordPress application data. To access \u003ca href=\"https://marketplace.digitalocean.com/add-ons/snapshooter\"\u003eSnapShooter\u003c/a\u003e, navigate to the left-hand navigation menu in your DigitalOcean cloud console. As part of the free tier, you can back up a single resource, such as your WordPress application data.\u003c/p\u003e\n\u003cp\u003eTo back up your WordPress application, start by installing the SnapShooter add-on to your DigitalOcean account. Next, do a single sign-on to access the SnapShooter console, where you can add a target storage solution, such as Spaces, and create a new backup job. From there, select your WordPress application (with or without the database) as the recipe, and choose your preferred backup policy. Follow our step-by-step \u003ca href=\"https://www.youtube.com/watch?v=9NYqzeWEnAY\"\u003evideo\u003c/a\u003e or \u003ca href=\"https://docs.digitalocean.com/developer-center/easy-web-application-back-ups-with-snapshooter/\"\u003eblog tutorial\u003c/a\u003e to get this working today.\u003c/p\u003e\n\u003cp\u003eWith SnapShooter, you can restore your WordPress application and its data to another server, whether it's within DigitalOcean or another location, in case of a disaster or migration. Keep in mind that your Spaces/S3 usage will incur charges from your cloud provider.\u003c/p\u003e\n\u003cp\u003eProtect your WordPress data with SnapShooter's reliable and straightforward backup solutions today.\u003c/p\u003e\n\u003ch1 id=\"optimize-wordpress-with-nitropack\"\u003eOptimize WordPress with NitroPack\u003c/h1\u003e\n\u003cp\u003e\u003ca href=\"https://nitropack.io/platform/wordpress?utm_source=digitalocean\u0026amp;utm_medium=snippet\u0026amp;utm_campaign=promo\"\u003eNitroPack\u003c/a\u003e is a web performance \u0026amp; CWV improvement service. It neatly integrates with WordPress websites providing better speed, customer experience, and conversions. It has everything you need for a fast website in a single solution – smart caching, image optimization, code optimization, lazy loading, built-in CDN, and more. With advanced features like font subsetting, adaptive image sizing, and device-aware cashing, NitroPack helps websites reach 90+ PSI scores and pass Core Web Vitals.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=wordpress-20-04","addonSlug":null,"imageLabel":"wordpress-20-04","imageId":160376476,"externalLabel":null,"additionalLinks":[{"name":"Source Code","url":"https://github.com/digitalocean/droplet-1-clicks/tree/master/wordpress-20-04?utm_source=digitalocean_marketplace_app_listing_page","description":"Packer scripts that were used to build this 1-Click App","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"Plesk","appId":"5bcf7c09916ddf7564a7cb9b","developerId":"","safeName":["plesk"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/plesk-20-04.svg","version":"18.0.64","osVersion":"Ubuntu 22.04","tags":["Blogs and Forums"],"support":{"url":"https://www.plesk.com/support","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Plesk Obsidian","version":"18.0","website":"","releaseNotes":"https://docs.plesk.com/release-notes/obsidian/change-log/","licenseLink":"https://www.plesk.com/legal/","licenseType":"Proprietary","__typename":"CustomSoftware"},{"name":"Ubuntu Linux","version":"22.04","website":"","releaseNotes":"","licenseLink":"https://ubuntu.com/legal","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"WordPress","version":"latest","website":"","releaseNotes":"","licenseLink":"https://wordpress.org/about/license/","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"Apache","version":"2.4","website":"","releaseNotes":"","licenseLink":"https://www.apache.org/licenses/LICENSE-2.0","licenseType":"Apache License","__typename":"CustomSoftware"},{"name":"NGINX","version":"1.14.2","website":"","releaseNotes":"","licenseLink":"http://nginx.org/LICENSE","licenseType":"2-clause BSD-like","__typename":"CustomSoftware"},{"name":"Git","version":"2.21","website":"","releaseNotes":"","licenseLink":"http://opensource.org/licenses/GPL-2.0","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"MySQL","version":"5.7","website":"","releaseNotes":"","licenseLink":"https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"Maria DB","version":"5.5, 10.0, 10.1, 10.2","website":"","releaseNotes":"","licenseLink":"https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"phpMyAdmin","version":"4.8.4","website":"","releaseNotes":"","licenseLink":"https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"PostgreSQL","version":"8.4–10.8","website":"","releaseNotes":"","licenseLink":"https://www.postgresql.org/about/licence/","licenseType":"BSD/MIT similar","__typename":"CustomSoftware"},{"name":"PHP","version":"7.1, 7.2, 7.3","website":"","releaseNotes":"","licenseLink":"https://php.net/license/","licenseType":"PHP License","__typename":"CustomSoftware"},{"name":"Node.js","version":"4.6.1, 6.14.1, 8.11.1, 9.0.0, 10.0.0","website":"","releaseNotes":"","licenseLink":"https://raw.githubusercontent.com/nodejs/node/master/LICENSE","licenseType":"MIT License","__typename":"CustomSoftware"},{"name":"Ruby","version":"2.6.3","website":"","releaseNotes":"","licenseLink":"https://www.ruby-lang.org/en/about/license.txt","licenseType":"Ruby License","__typename":"CustomSoftware"},{"name":"ProFTPD","version":"1.3.6","website":"","releaseNotes":"","licenseLink":"https://opensource.org/licenses/GPL-2.0","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"Courier IMAP","version":"4.16.1","website":"","releaseNotes":"","licenseLink":"https://opensource.org/licenses/GPL-2.0","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"Postfix","version":"2.6–3.1","website":"","releaseNotes":"","licenseLink":"http://www.postfix.org/IBM-Public-License-1.0.txt","licenseType":"IBM Public License","__typename":"CustomSoftware"},{"name":"Dovecot","version":"2.3.4.1","website":"","releaseNotes":"","licenseLink":"https://dovecot.org/doc/COPYING","licenseType":"MIT, LGPL","__typename":"CustomSoftware"},{"name":"Roundcube Webmail","version":"1.3.8","website":"","releaseNotes":"","licenseLink":"https://www.gnu.org/licenses/gpl-3.0.html","licenseType":"GPL","__typename":"CustomSoftware"}],"summary":"Plesk Obsidian (new!) is the leading WebOps platform and hosting control panel","description":"\u003cp\u003ePlesk Obsidian (new!) is the leading secure WordPress and website management platform providing you with a simple yet performant and scalable platform developed for modern website hosting.\u003c/p\u003e\n\u003cp\u003eWith Plesk on DigitalOcean you get access to a modern and lightweight stack to build, secure, and run websites and applications through one intuitive browser-based interface.\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e: To upgrade Plesk, you can now purchase a license for Plesk \u003ca href=\"https://marketplace.digitalocean.com/add-ons/plesk-licenses\" rel=\"noopener\" target=\"_blank\"\u003eright here\u003c/a\u003e on DigitalOcean!\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.youtube.com/watch?v=-DfOMjoAp3k\" rel=\"noopener\" target=\"_blank\"\u003ePlesk on DigitalOcean Intro Video\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.udemy.com/make-wordpress-hosting-easy-with-plesk-on-digitalocean/\" rel=\"noopener\" target=\"_blank\"\u003eFree Udemy Course: Make WordPress Hosting Easy with Plesk on DigitalOcean\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eHost \u0026amp; manage your Websites and Applications\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003eEasily install, manage and operate WordPress, Joomla, Drupal, Magento, Prestashop - or your own custom website or application. For yourself or for your customers.\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eOne Dashboard\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003eBuild and manage multiple sites from a single dashboard. You can also run updates, monitor performance and onboard new prospects all from the same place.\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eRobust Site \u0026amp; Server Security\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003eBroad security by default across OS, network and apps. Firewall, Fail2ban and WAF bundled and activated by default.\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eIntegrated with the DigitalOcean DNS\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003eKeep your domains and websites in sync with Plesk through the DigitalOcean DNS integration available at few clicks.\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eThe Ultimate Toolkit for WordPress Sites\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003eOne platform to install, update and remove instances, themes \u0026amp; plugins. Built-in security, sync and backup/restore features. Optional staging/cloning environments (\u003ca href=\"https://www.plesk.com/upgrade\" rel=\"noopener\" target=\"_blank\"\u003ePro and Host editions only - click to compare\u003c/a\u003e).\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eComplete Flexibility and Control\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003eYou get full root access via SSH on every Plesk-powered VPS so you can install any third-party, open source, or customized application you need.\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eLight Core, expandable with 100+ Extensions\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003eDo more with your platform as you integrate tools like DigiCert SSL, Speed Kit, Node.js, Let’s Encrypt SSL, Git, ImunifyAV, Backup to Cloud Pro and more.\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eManage eMail for all Domains\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003ePlesk comes with a full-fledged eMail server included. Manage multiple users and mailboxes per domain. Or offer eMail hosting to your customers. \u003cstrong\u003eNote: to set up your reverse DNS record required to run an eMail service, please contact the DigitalOcean Support.\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eUpgrade to the full unlimited Plesk Editions\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003eUpgrade to premium features including staging, cloning, reseller management and more or through \u003ca href=\"https://marketplace.digitalocean.com/add-ons/plesk-licenses\" rel=\"noopener\" target=\"_blank\"\u003ePlesk License Add-On\u003c/a\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003ePlesk Droplet/VM Size Requirements\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003ePlesk runs smoothly with 1GB RAM and 1 vCPU for smaller websites and environments. Running multiple websites or higher traffic require a larger droplet size. \u003cstrong\u003eWe recommend 2 CPU cores and 4GB RAM for the best performance\u003c/strong\u003e. \u003ca href=\"https://docs.plesk.com/release-notes/obsidian/hardware-requirements/#s2\" rel=\"noopener\" target=\"_blank\"\u003ePlease also refer to the Plesk Infrastructure Requirements for details.\u003c/a\u003e\u003c/p\u003e\u003c/li\u003e\n\u003c/ul\u003e","gettingStarted":"\u003cp\u003eThe easiest way is by using the root username and password that you define while creating a droplet.\u003c/p\u003e\n\u003ch3 id=\"to-log-in-to-plesk-for-the-first-time-using-a-root-password\"\u003e\u003cstrong\u003eTo log in to Plesk for the first time using a root password:\u003c/strong\u003e\u003c/h3\u003e\n\u003cp\u003eSee the video instruction: \u003ccode\u003ehttps://youtu.be/ZvxiBEQ1ay4\u003c/code\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eCopy the droplet IPv4 address and then open the \u003ccode\u003ehttps://your_droplet_public_ipv4\u003c/code\u003e link in your browser.\u003c/li\u003e\n\u003cli\u003eIgnore the “Your connection is not private” warning in your browser and proceed. It is safe to do so because the connection to your Plesk server is actually secure and encrypted with a self-signed SSL/TLS certificate. \u003c/li\u003e\n\u003cli\u003eOn the Plesk login page, specify the root username, the root password you have created earlier, and then click \u003cstrong\u003eLog in\u003c/strong\u003e.\u003c/li\u003e\n\u003cli\u003eYou will be redirected to the Plesk welcome screen. Follow the instructions on this screen and then click \u003cstrong\u003eEnter Plesk\u003c/strong\u003e to log in to Plesk.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e If you log in to a Plesk instance that is still being deployed, you will see the maintenance screen. Once the deployment is finished, the maintenance screen will be gone and you will be able to start using Plesk.\u003c/p\u003e\n\u003cp\u003eYou can also \u003ca href=\"https://docs.plesk.com/en-US/obsidian/deployment-guide/plesk-installation-and-upgrade-on-public-cloud-services/installing-plesk-on-digitalocean.79699/#accessing-plesk-for-the-first-time\"\u003elog in to Plesk using SSH keys\u003c/a\u003e if you have chosen this way when creating a droplet.\u003c/p\u003e\n\u003ch3 id=\"next-steps\"\u003eNext steps\u003c/h3\u003e\n\u003cp\u003eYour Plesk is completely ready to work and you can start adding your first domain. However, we recommend that you also make the following steps:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://docs.plesk.com/en-US/obsidian/deployment-guide/plesk-installation-and-upgrade-on-public-cloud-services/installing-plesk-on-digitalocean.79699/#setting-up-dns-hosting\"\u003eSet up DNS hosting in DigitalOcean DNS\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.plesk.com/en-US/obsidian/deployment-guide/plesk-installation-and-upgrade-on-public-cloud-services/installing-plesk-on-digitalocean.79699/#assigning-floating-ip-addresses\"\u003eAssign a floating IP address to your droplet\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"see-further-information\"\u003eSee further information:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://docs.plesk.com/en-US/obsidian/deployment-guide/plesk-installation-and-upgrade-on-public-cloud-services/installing-plesk-on-digitalocean.79699/\"\u003ePlesk DigitalOcean Documentation\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.plesk.com/release-notes/obsidian/hardware-requirements/#s2\"\u003ePlesk Infrastructure requirements\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.plesk.com/\"\u003ePlesk Documentation\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.udemy.com/make-wordpress-hosting-easy-with-plesk-on-digitalocean/\"\u003eFree Udemy Course: Make WordPress Hosting Easy with Plesk on DigitalOcean\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.plesk.com/university\"\u003ePlesk University\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=plesk-20-04","addonSlug":null,"imageLabel":"plesk-20-04","imageId":168436711,"externalLabel":null,"additionalLinks":[{"name":"Upgrade your Plesk to a Web Pro or Web Host Edition","url":"https://marketplace.digitalocean.com/add-ons/plesk-licenses","description":"Upgrade your Web Admin license to a Web Pro or Web Host Edition.","__typename":"AdditionalLink"},{"name":"Plesk Course on Udemy (free)","url":"https://www.udemy.com/course/make-wordpress-hosting-easy-with-plesk-on-digitalocean/","description":"Host your WordPress website on DigitalOcean and simplify WordPress and webhosting with the Plesk hosting platform. ","__typename":"AdditionalLink"},{"name":"Plesk University (free)","url":"https://www.plesk.com/university","description":"Designed with your needs in mind, Plesk certification courses will guide you from being a novice to becoming an expert. ","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"Docker","appId":"5ba19751fc53b8179c7a0071","developerId":"","safeName":["docker"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/docker-20-04.svg","version":"latest","osVersion":"Ubuntu 22.04","tags":["Developer Tools"],"support":{"url":"https://forums.docker.com","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Docker CE","version":"25.0.3","website":"","releaseNotes":"https://docs.docker.com/release-notes/docker-ce/","licenseLink":"https://github.com/docker/docker/blob/master/LICENSE","licenseType":"Apache 2","__typename":"CustomSoftware"},{"name":"Docker Compose","version":"2.17.2","website":"","releaseNotes":"https://docs.docker.com/release-notes/docker-compose/","licenseLink":"https://github.com/docker/compose/blob/master/LICENSE","licenseType":"Apache 2","__typename":"CustomSoftware"},{"name":"Docker BuildX","version":"0.12.1","website":"","releaseNotes":"https://docs.docker.com/build/release-notes/","licenseLink":"https://github.com/docker/buildx/blob/master/LICENSE","licenseType":"Apache 2","__typename":"CustomSoftware"}],"summary":"An open platform for developers and sysadmins to build, ship, and run distributed applications!","description":"\u003cp\u003eDocker containers combine software and related dependencies into a standardized unit for software development that includes everything it needs to run: code, runtime, system tools and libraries. This guarantees that your application will always run the same and makes collaboration as simple as sharing a container image.\u003c/p\u003e\n\u003cp\u003eThis 1-click enables you to create a DigitalOcean droplet pre-installed with recommended Docker tools (docker-engine, docker-compose).\u003c/p\u003e\n\u003cp\u003eFor reference, the \u003ca href=\"https://github.com/digitalocean/droplet-1-clicks/tree/master/docker-20-04\" rel=\"noopener\" target=\"_blank\"\u003epacker file\u003c/a\u003e used to create the Docker 1-click is here, and the recommended installation steps from Docker are \u003ca href=\"https://docs.docker.com/install/linux/docker-ce/ubuntu/\" rel=\"noopener\" target=\"_blank\"\u003ehere\u003c/a\u003e.\u003c/p\u003e","gettingStarted":"\u003cp\u003eOnce the Docker One-Click Droplet is created, you can log into it as root. Make sure to substitute the Droplet’s public IPv4 address.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e$ ssh root@your_droplet_public_ipv4\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eDocker -d will already be running as a service and the Docker command line tool is included in the PATH, so it’s ready to use. \u003ccode\u003e$ docker version\u003c/code\u003e command shows the version of Docker engine installed.\u003c/p\u003e\n\u003cp\u003eNote about firewall rules: If you are using the default droplet firewall rules in DigitalOcean cloud, then you just need to follow the same practices. However, if you depend on the Linux firewall (iptables), then you need to be aware of \u003ca href=\"https://docs.docker.com/network/iptables/\"\u003ehow Docker works with iptables\u003c/a\u003e.\u003c/p\u003e\n\u003ch1 id=\"after-installing-docker\"\u003eAfter installing Docker\u003c/h1\u003e\n\u003cp\u003eIf you are new to Docker or have not explored all its capabilities, we highly recommend the official getting started tutorial: \u003ca href=\"https://docs.docker.com/get-started/\"\u003ehttps://docs.docker.com/get-started/\u003c/a\u003e\u003c/p\u003e\n\u003ch4 id=\"check-versions\"\u003eCheck versions\u003c/h4\u003e\n\u003cp\u003eExecute in the ssh console:\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003edocker version\u003c/code\u003e\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003edocker compose version\u003c/code\u003e\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003edocker buildx version\u003c/code\u003e\u003c/p\u003e\n\u003ch4 id=\"language-specific-tutorials\"\u003eLanguage specific tutorials\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://docs.docker.com/language/nodejs/\"\u003eNode JS\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.docker.com/language/python/\"\u003ePython\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.docker.com/language/java/\"\u003eJava\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-install-and-set-up-laravel-with-docker-compose-on-ubuntu-22-04\"\u003eLaravel\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-with-docker-compose\"\u003eWordpress\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.docker.com/language/golang/\"\u003eGo\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.docker.com/language/dotnet/\"\u003eC#(.NET)\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"setting-up-a-production-system\"\u003eSetting up a production system\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cp\u003e\u003ca href=\"https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-docker/\"\u003eUsing NGINX \u003c/a\u003e\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.nginx.com/products/nginx/\"\u003eNGINX Plus\u003c/a\u003e, the high‑performance application delivery platform, load balancer, and web server, is available as the Docker container.\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003ca href=\"https://www.digitalocean.com/community/questions/how-to-attach-digitalocean-block-storage-to-docker-container\"\u003eDO Storage \u003c/a\u003e\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eIn cloud computing, block storage is a network-based way to store data. Block storage services, like \u003ca href=\"https://docs.digitalocean.com/products/volumes/\"\u003eDigitalOcean Volumes Block Storage\u003c/a\u003e, provide similar behavior to traditional block storage devices, like hard drives.\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003ca href=\"https://docs.digitalocean.com/products/container-registry/how-to/use-registry-docker-kubernetes/\"\u003eDO Registry\u003c/a\u003e\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eThe DigitalOcean Container Registry (DOCR) is a private Docker image registry with additional tooling support that enables integration with your Docker environment and DigitalOcean Kubernetes clusters. DOCR registries are private and co-located in the datacenters where DigitalOcean Kubernetes clusters are operated for secure, stable, and performant rollout of images to your clusters.\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-monitor-docker-using-zabbix-on-ubuntu-20-04\"\u003eEnable monitoring\u003c/a\u003e\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.zabbix.com/\"\u003eZabbix\u003c/a\u003e is a monitoring system that can monitor the state of almost any element of your IT infrastructure, such as networks, servers, virtual machines, and applications.\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003ca href=\"https://github.com/syntaqx/terraform-digitalocean-docker\"\u003eUsing Terraform\u003c/a\u003e\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eTerraform is an IAC tool, used primarily by DevOps teams to automate various infrastructure tasks. The provisioning of cloud resources, for instance, is one of the main use cases of Terraform. It's a cloud-agnostic, open-source provisioning tool written in the Go language and created by HashiCorp\u003c/p\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1 id=\"update-instructions\"\u003eUpdate instructions\u003c/h1\u003e\n\u003ch4 id=\"docker\"\u003eDocker\u003c/h4\u003e\n\u003col\u003e\n\u003cli\u003e\u003cp\u003eGo to \u003ca href=\"https://download.docker.com/linux/ubuntu/dists/\"\u003ehttps://download.docker.com/linux/ubuntu/dists/\u003c/a\u003e.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eSelect your Ubuntu version in the list.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eGo to pool/stable/ and select the applicable architecture (amd64, armhf, arm64, or s390x).\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eDownload the following deb files for the Docker Engine, CLI, containerd, and Docker Compose packages:\u003c/p\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre\u003e\u003ccode\u003econtainerd.io_\u0026lt;version\u0026gt;_\u0026lt;arch\u0026gt;.deb\ndocker-ce_\u0026lt;version\u0026gt;_\u0026lt;arch\u0026gt;.deb\ndocker-ce-cli_\u0026lt;version\u0026gt;_\u0026lt;arch\u0026gt;.deb\ndocker-buildx-plugin_\u0026lt;version\u0026gt;_\u0026lt;arch\u0026gt;.deb\ndocker-compose-plugin_\u0026lt;version\u0026gt;_\u0026lt;arch\u0026gt;.deb\u003c/code\u003e\u003c/pre\u003e\n\u003col start=\"5\"\u003e\n\u003cli\u003eInstall the .deb packages. Update the paths in the following example to where you downloaded the Docker packages.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre\u003e\u003ccode\u003esudo dpkg -i ./containerd.io_\u0026lt;version\u0026gt;_\u0026lt;arch\u0026gt;.deb \\\n ./docker-ce_\u0026lt;version\u0026gt;_\u0026lt;arch\u0026gt;.deb \\\n ./docker-ce-cli_\u0026lt;version\u0026gt;_\u0026lt;arch\u0026gt;.deb \\\n ./docker-buildx-plugin_\u0026lt;version\u0026gt;_\u0026lt;arch\u0026gt;.deb \\\n ./docker-compose-plugin_\u0026lt;version\u0026gt;_\u0026lt;arch\u0026gt;.deb\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe Docker daemon starts automatically.\u003c/p\u003e\n\u003ch4 id=\"docker-compose\"\u003eDocker Compose\u003c/h4\u003e\n\u003col\u003e\n\u003cli\u003e\u003cp\u003eGo to \u003ca href=\"https://docs.docker.com/compose/release-notes/\"\u003ehttps://docs.docker.com/compose/release-notes/\u003c/a\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eFind new version\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eExecute:\u003c/p\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre\u003e\u003ccode\u003eDOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}\nmkdir -p $DOCKER_CONFIG/cli-plugins\ncurl -SL https://github.com/docker/compose/releases/download/v\u0026lt;version\u0026gt;/docker-compose-linux-\u0026lt;arch\u0026gt; -o $DOCKER_CONFIG/cli-plugins/docker-compose\nchmod +x $DOCKER_CONFIG/cli-plugins/docker-compose\u003c/code\u003e\u003c/pre\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=docker-20-04","addonSlug":null,"imageLabel":"docker-20-04","imageId":170342955,"externalLabel":null,"additionalLinks":[{"name":"Awesome Compose","url":"https://github.com/docker/awesome-compose","description":"A curated list of Docker Compose samples","__typename":"AdditionalLink"},{"name":"Docker on DigitalOcean Community","url":"https://www.digitalocean.com/community/tags/docker","description":"Docker Tutorials, Questions, and Resources","__typename":"AdditionalLink"},{"name":"Source Code","url":"https://github.com/digitalocean/droplet-1-clicks/tree/master/docker-20-04","description":"Packer scripts used to build this 1-Click App","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"cPanel \u0026 WHM® for AlmaLinux 9","appId":"7a434bd1894e4ae6f244452e","developerId":"","safeName":["cpanel-whm-for-almalinux-9"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/cpanel-cpanelwhmforalma.svg","version":"RELEASE","osVersion":"AlmaLinux 9","tags":["Blogs and Forums"],"support":{"url":"https://go.cpanel.net/digitalocean","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"WordPress 6.4","version":"6.4.3","website":"","releaseNotes":"","licenseLink":"","licenseType":"GPL 2","__typename":"CustomSoftware"},{"name":"Roundcube Webmail","version":"1.6.0","website":"","releaseNotes":"","licenseLink":"","licenseType":"GPL 3","__typename":"CustomSoftware"},{"name":"Git","version":"2.43.2","website":"","releaseNotes":"","licenseLink":"","licenseType":"GPL 2","__typename":"CustomSoftware"}],"summary":"Create an exceptional hosting experience using the industry leading hosting platform with world-class support. AlmaLinux 9 is now a supported operating system","description":"\u003cp\u003eThe cPanel interface allows your customers to do a multitude of things to manage their sites, intranets, and keep their online properties running smoothly.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003ePublish a website\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eAllow your customers to choose from the most popular site builders to launch their web presence or give them the resources to build and monitor their own websites from the ground up.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eCreate emails \u0026amp; calendars\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eGive your customers the ability to stay connected with the powerful email and calendar capabilities baked into cPanel \u0026amp; WHM. With our software, they can launch new email accounts, create shared calendars and enjoy various levels of spam protection.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eBackup, transfer \u0026amp; manage files\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eSecurely backup and transfer all web files from within the cPanel interface or allow your customers to use the FTP controls.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eManage domains\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eOffer your tech-savvy site owners the power to manage their network of domains. Create aliases, add or remove subdomains, manage DNS zones and direct site visitors around any of your web properties.\u003c/p\u003e\n\u003cp\u003e*cPanel licenses are now availabe at DigitalOcean Marketplace: \u003ca href=\"https://marketplace.digitalocean.com/add-ons/cpanel-license\" rel=\"noopener\" target=\"_blank\"\u003ehttps://marketplace.digitalocean.com/add-ons/cpanel-license\u003c/a\u003e\u003c/p\u003e","gettingStarted":"\u003cp\u003eWhen you create a droplet, cPanel \u0026amp; WHM will automatically begin installation in the background. The installation process takes about 10-15 minutes. You cannot log in to WHM until the installation process is complete.\u003c/p\u003e\n\u003cp\u003eFor instructions on logging in to WHM and creating a WordPress site, read our \u003ca href=\"https://docs.cpanel.net/knowledge-base/accounts/from-whm-to-website/\"\u003eFrom WHM to Website\u003c/a\u003e documentation.\u003c/p\u003e\n\u003cp\u003eFor more information about installing, configuring, and managing WordPress, read our \u003ca href=\"https://docs.cpanel.net/knowledge-base/cpanel-developed-plugins/wordpress-toolkit/\"\u003eWordPress Toolkit\u003c/a\u003e documentation.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=cpanel-cpanelwhmforalma","addonSlug":null,"imageLabel":"cpanel-cpanelwhmforalma","imageId":169811773,"externalLabel":null,"additionalLinks":[],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"LAMP","appId":"5ba19754c472e4189b34e049","developerId":"","safeName":["lamp"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/lamp-20-04.svg","version":"Latest","osVersion":"Ubuntu 22.04","tags":["Frameworks"],"support":{"url":"https://www.digitalocean.com/docs/","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Apache","version":"2.4.52","website":"","releaseNotes":"https://packages.ubuntu.com/focal/apache2","licenseLink":"https://www.apache.org/licenses/","licenseType":"Apache 2","__typename":"CustomSoftware"},{"name":"MySQL server","version":"8.0.34","website":"","releaseNotes":"https://packages.ubuntu.com/focal/mysql-server","licenseLink":"https://www.mysql.com/about/legal/licensing/oem/#5","licenseType":"GPL 2 with modifications","__typename":"CustomSoftware"},{"name":"PHP","version":"8.2.10","website":"","releaseNotes":"https://packages.ubuntu.com/focal/php","licenseLink":"http://php.net/license/index.php","licenseType":"PHP v3.01","__typename":"CustomSoftware"},{"name":"Fail2ban","version":"0.11.1","website":"","releaseNotes":"https://packages.ubuntu.com/focal/fail2ban","licenseLink":"https://www.mysql.com/about/legal/licensing/oem/#5","licenseType":"GPL 2 with modifications","__typename":"CustomSoftware"},{"name":"Postfix","version":"3.4.10","website":"","releaseNotes":"https://packages.ubuntu.com/focal/postfix","licenseLink":"http://www.postfix.org/IBM-Public-License-1.0.txt","licenseType":"IBM Public","__typename":"CustomSoftware"},{"name":"Certbot","version":"0.39.0","website":"","releaseNotes":"https://packages.ubuntu.com/focal/python3-certbot-apache","licenseLink":"https://github.com/certbot/certbot/blob/master/LICENSE.txt","licenseType":"Apache 2","__typename":"CustomSoftware"}],"summary":"In less than a minute, spin up a cloud server with Apache, MySQL, and PHP installed.","description":"\u003cp\u003eIn less than a minute, spin up a cloud server with Apache, MySQL, and PHP installed.\u003c/p\u003e","gettingStarted":"\u003cp\u003eIn addition to the package installation, the 1-Click also:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnables the UFW firewall to allow only SSH (port \u003ccode\u003e22\u003c/code\u003e, rate limited), HTTP (port \u003ccode\u003e80\u003c/code\u003e), and HTTPS (port \u003ccode\u003e443\u003c/code\u003e) access.\u003c/li\u003e\n\u003cli\u003eSets the MySQL root password and runs \u003ccode\u003emysql_secure_installation\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eSets up the \u003ccode\u003edebian-sys-maint\u003c/code\u003e user in MySQL so the system’s init scripts for MySQL will work without requiring the MySQL \u003ccode\u003eroot\u003c/code\u003e user password.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAfter you create a LAMP One-Click Droplet:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eYou can view the LAMP instance immediately by visiting the Droplet’s IP address in your browser.\u003c/li\u003e\n\u003cli\u003eYou can log into the Droplet as root using either the password you set when you created the Droplet or with an SSH key, if you added one during creation.\u003c/li\u003e\n\u003cli\u003eThe MySQL root password is in \u003ccode\u003e/root/.digitalocean_password\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe web root is \u003ccode\u003e/var/www/html\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eYou can get information about the PHP installation by logging into the Droplet and running \u003ccode\u003ephp -i\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIn addition, there are a few customized setup steps that we recommend you take.\u003c/p\u003e\n\u003cp\u003eCreating an Apache virtual hosts file for each site maintains the default configuration as the fallback, as intended, and makes it easier to manage changes when hosting multiple sites.\u003c/p\u003e\n\u003cp\u003eTo do so, you’ll need to create two things for each domain: a new directory in \u003ccode\u003e/var/www\u003c/code\u003e for that domain’s content, and a new virtual host file in \u003ccode\u003e/etc/apache2/sites-available\u003c/code\u003e for that domain’s configuration. For a detailed walkthrough, you can follow \u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-16-04\"\u003eHow to Set Up Apache Virtual Hosts\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eSetting up an SSL certificate enables HTTPS on the web server, which secures the traffic between the server and the clients connecting to it. Certbot is a free and automated way to set up SSL certificates on a server. It’s included as part of the LAMP One-Click to make securing the Droplet easier.\u003c/p\u003e\n\u003cp\u003eTo use Certbot, you’ll need a registered domain name and two DNS records:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAn A record from a domain (e.g., \u003ccode\u003eexample.com\u003c/code\u003e) to the server’s IP address\u003c/li\u003e\n\u003cli\u003eAn A record from a domain prefaced with \u003ccode\u003ewww\u003c/code\u003e (e.g., \u003ccode\u003ewww.example.com\u003c/code\u003e) to the server’s IP address\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAdditionally, if you’re using a virtual hosts file, you’ll need to make sure the server name directive in the VirtualHost block (e.g., \u003ccode\u003eServerName example.com\u003c/code\u003e) is correctly set to the domain.\u003c/p\u003e\n\u003cp\u003eOnce the DNS records and, optionally, the virtual hosts files are set up, you can generate the SSL certificate. Make sure to substitute the domain in the command.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ecertbot --apache -d example.com -d www.example.com\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eHTTPS traffic on port \u003ccode\u003e443\u003c/code\u003e is already allowed through the firewall. After you set up HTTPS, you can optionally deny HTTP traffic on port \u003ccode\u003e80\u003c/code\u003e:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eufw delete allow 80/tcp\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eFor a more detailed walkthrough, you can follow \u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-18-04\"\u003eHow to Secure Apache with Let’s Encrypt\u003c/a\u003e or view \u003ca href=\"https://certbot.eff.org/docs/using.html\"\u003eCertbot’s official documentation\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eYou can serve files from the web server by adding them to the web root (\u003ccode\u003e/var/www/html\u003c/code\u003e) using \u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-use-sftp-to-securely-transfer-files-with-a-remote-server\"\u003eSFTP\u003c/a\u003e or other tools.\u003c/p\u003e\n\u003cp\u003eA newly-created LAMP Droplet includes an \u003ccode\u003eindex.html\u003c/code\u003e web page. You can change this by uploading a custom \u003ccode\u003eindex.html\u003c/code\u003e file or remove it.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=lamp-20-04","addonSlug":null,"imageLabel":"lamp-20-04","imageId":140021096,"externalLabel":null,"additionalLinks":[{"name":"Source Code","url":"https://github.com/digitalocean/droplet-1-clicks/tree/master/lamp-20-04?utm_source=digitalocean_marketplace_app_listing_page","description":"Packer scripts that were used to build this 1-Click App","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"Ubuntu Desktop (GNOME)","appId":"f821d22e595089f743b1918c","developerId":"","safeName":["ubuntu-desktop-gnome"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/ubuntudesktopgno.svg","version":"1.524","osVersion":"Ubuntu 22.04","tags":["Developer Tools"],"support":{"url":"https://ubuntu.com/openstack/support","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Ubuntu Desktop","version":"1.524","website":"","releaseNotes":"","licenseLink":"https://help.gnome.org/admin/gdm/stable/license.html.en","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"x11vnc","version":"0.9.16-8","website":"","releaseNotes":"","licenseLink":"https://github.com/LibVNC/x11vnc/blob/master/misc/LICENSE","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"sddm","version":" 4:5.24","website":"","releaseNotes":"","licenseLink":"https://github.com/sddm/sddm/blob/develop/LICENSE","licenseType":"GPL","__typename":"CustomSoftware"}],"summary":"The open source Ubuntu desktop operating system powers millions of PCs and laptops around the world.\n\n","description":"\u003cp\u003eThe Desktop edition includes a user-friendly graphical interface for working with the OS, providing users with an experience comparable to Windows or macOS. Ubuntu Desktop powers millions of computers worldwide. Canonical provides an optional subscription-based package that provides enterprise-grade support.\u003c/p\u003e","gettingStarted":"\u003cp\u003eAfter the Ubuntu Desktop droplet is started, it's required to login into the droplet using ssh. VNC password, desktop user name and user password will be generated and shown to the user. After required variables are generated, droplet will be fully functional and ready to use.\u003c/p\u003e\n\u003cp\u003eURL to connect is vnc://IP:5900\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eHow install VNC client for Windows:\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cp\u003eVisit the RealVNC website (\u003ca href=\"https://www.realvnc.com/download/viewer/\"\u003ehttps://www.realvnc.com/download/viewer/\u003c/a\u003e) and download the VNC Viewer for Windows.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eRun the installer you downloaded. Follow the on-screen instructions to complete the installation.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eOnce installed, launch VNC Viewer.\u003c/p\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eEnter the IP address of the droplet and 5900 as port.\u003c/p\u003e\n\u003cp\u003eEnter the VNC server's password when prompted.\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003eClick \"Connect\" to establish a VNC connection to the remote machine.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eYou should now see the remote desktop.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eLinux:\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cp\u003eFollow the instructions \u003ca href=\"https://www.realvnc.com/en/connect/download/viewer/linux/\"\u003ehttps://www.realvnc.com/en/connect/download/viewer/linux/\u003c/a\u003e to install the Package\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eLaunch VNC Viewer:\u003c/p\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eOpen a terminal and type vncviewer.\u003c/p\u003e\n\u003cp\u003eEnter the IP address of the droplet and 5900 as port.\u003c/p\u003e\n\u003cp\u003eEnter the VNC server's password when prompted.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMacOS:\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cp\u003eFirst option to connect is already installed. Open Finder -\u0026gt; click on the menu \"Go\" -\u0026gt; click on the menu item \"Connect to server\" and enter droplet's IP address and 5900 as port.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eAlso it's possible to install custom client, for example \u003ca href=\"https://www.realvnc.com/en/connect/download/viewer/macos/\"\u003ehttps://www.realvnc.com/en/connect/download/viewer/macos/\u003c/a\u003e\u003c/p\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eKeep in mind that this guide uses RealVNC as an example, and steps might differ if you use a different VNC client. Always refer to the specific documentation of the VNC client you choose for detailed instructions.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cem\u003eNote\u003c/em\u003e\u003c/strong\u003e Remote Desktop Server is installed too, it's listening on default port - 3389. Marketplace team recommends to use VNC clients, but RDP is accessible too. \u003c/p\u003e\n\u003cp\u003eHow to install RDP client:\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eUbuntu\u003c/em\u003e \u003c/p\u003e\n\u003cp\u003e\u003ccode\u003esudo apt install remmina remmina-plugin-vnc\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eWindows\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eit's already installed, run Remote Desktop\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eMacOS\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eInstall the app from the app store, use this link:\u003cbr\u003e\n\u003ca href=\"https://apps.apple.com/us/app/microsoft-remote-desktop/id1295203466?mt=12\"\u003ehttps://apps.apple.com/us/app/microsoft-remote-desktop/id1295203466?mt=12\u003c/a\u003e\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=ubuntudesktopgno","addonSlug":null,"imageLabel":"ubuntudesktopgno","imageId":147430679,"externalLabel":null,"additionalLinks":[{"name":"Source Code","url":"https://github.com/digitalocean/droplet-1-clicks/tree/master/ubuntu-desktop-22-04","description":"Packer scripts that were used to build this 1-Click App","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"Ollama with Open WebUI","appId":"f9d035269cfdbfb979e44869","developerId":"","safeName":["ollama-with-openwebui"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/sharklabs-ollamawithopenwe.png","version":"0.3.6","osVersion":"Ubuntu 22.04","tags":["Developer Tools"],"support":{"url":"","email":"marketplace-eng@digitalocean.com","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Ollama","version":"0.3.6","website":"https://www.ollama.com/","releaseNotes":"","licenseLink":"https://raw.githubusercontent.com/ollama/ollama/main/LICENSE","licenseType":"MIT License","__typename":"CustomSoftware"},{"name":"Open WebUI","version":"0.3.13","website":"https://openwebui.com/","releaseNotes":"","licenseLink":"https://raw.githubusercontent.com/open-webui/open-webui/main/LICENSE","licenseType":"MIT License","__typename":"CustomSoftware"},{"name":"Anaconda","version":"2024.06-1","website":"","releaseNotes":"","licenseLink":"https://legal.anaconda.com/policies/en/?name=terms-of-service","licenseType":"Non-Commericial Use Only","__typename":"CustomSoftware"}],"summary":"Deploy Ollama and Open-WebUI on DigitalOcean Droplets to chat with LLMs instantly and access a wide range of models from the Ollama library","description":"\u003cp\u003eOllama with Open WebUI provides a fast and easy way to deploy and interact with Large Language Models (LLMs). Integration with the Ollama models library offers a variety of models for tasks like natural language processing, chatbots, and content generation. Ideal for developers, data scientists, and AI enthusiasts, this application provides a simple yet platform to explore and experiment with foundational models.\u003c/p\u003e","gettingStarted":"\u003ch3 id=\"getting-started-guide-digitaloceans-ollama-droplet-1-click\"\u003eGetting Started Guide: DigitalOcean's Ollama Droplet 1-Click\u003c/h3\u003e\n\u003cp\u003eWelcome to DigitalOcean's Ollama Droplet 1-Click! This guide will walk you through the initial setup, accessing applications, managing services, using Conda environments and configuring TLS.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eOllama\u003c/strong\u003e is a powerful tool designed to simplify the interaction with Large Language Models (LLMs). It allows you to easily download, manage, and deploy various LLMs for tasks like natural language processing, chatbots, and content generation.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eOpen WebUI\u003c/strong\u003e is a user-friendly web interface that provides an intuitive way to interact with LLMs. It allows you to input queries, manage models, and view outputs in real-time. Open-WebUI is integrated with Ollama to enhance your workflow and make it easier to experiment with different models.\u003c/p\u003e\n\u003ch4 id=\"1-accessing-open-webui\"\u003e1. \u003cstrong\u003eAccessing Open WebUI\u003c/strong\u003e\u003c/h4\u003e\n\u003cp\u003eTo start using the Open WebUI, open your web browser and navigate to:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ehttp://your_droplet_public_ipv4\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cimg src=\"https://do-not-delete-droplet-assets.nyc3.digitaloceanspaces.com/ollama-with-openwebui-3.gif\" alt=\"welcome screen\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e The first account created on Open WebUI gains Administrator privileges, which allows control over user management and system settings. Make sure to set up this account immediately to secure your environment.\u003c/p\u003e\n\u003ch4 id=\"2-introduction-to-the-open-webui-interface\"\u003e2. \u003cstrong\u003eIntroduction to the Open WebUI Interface\u003c/strong\u003e\u003c/h4\u003e\n\u003cp\u003eOnce logged into Open WebUI, you will find an intuitive dashboard that allows you to interact with LLMs. The main features include:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eModel Management\u003c/strong\u003e: Easily switch between different models, load new ones from the Ollama library, and manage their configurations.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eInteractive Console\u003c/strong\u003e: Input queries and receive responses directly from the models, allowing for real-time experimentation and testing.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eMultiple Connections\u003c/strong\u003e: Connect your OpenAI API, to seamlessly switch between local models and ChatGPT.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cimg src=\"https://do-not-delete-droplet-assets.nyc3.digitaloceanspaces.com/ollama-with-openwebui-1.gif\" alt=\"Connections\"\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eUser Management\u003c/strong\u003e: Once users sign up to your Open WebUI droplet, manage and revoke access.\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://do-not-delete-droplet-assets.nyc3.digitaloceanspaces.com/ollama-with-openwebui-4.gif\" alt=\"Settings\"\u003e\u003c/p\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Once users sign up to your Open WebUI droplet, they will need to be approved from the admin panel to be able to login and access the UI.\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://do-not-delete-droplet-assets.nyc3.digitaloceanspaces.com/ollama-with-openwebui-5.png\" alt=\"Pending users\"\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSettings\u003c/strong\u003e: Configure various aspects of the Open WebUI, system settings, and more.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cimg src=\"https://do-not-delete-droplet-assets.nyc3.digitaloceanspaces.com/ollama-with-openwebui-2.gif\" alt=\"Settings\"\u003e\u003c/p\u003e\n\u003cp\u003eFor advanced settings and more detailed usage, refer to the \u003ca href=\"https://open-webui.docs\"\u003eOpen WebUI documentation\u003c/a\u003e.\u003c/p\u003e\n\u003ch4 id=\"3-service-management\"\u003e3. \u003cstrong\u003eService Management\u003c/strong\u003e\u003c/h4\u003e\n\u003cp\u003eOllama and Open WebUI are configured to run as systemd services for easy management. You can manage these services using the following commands:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eCheck Open WebUI service status\u003c/strong\u003e:\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003esystemctl status open-webui\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eCheck Ollama service status\u003c/strong\u003e:\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003esystemctl status ollama\u003c/code\u003e\u003c/pre\u003e\n\u003ch4 id=\"4-application-environment\"\u003e4. \u003cstrong\u003eApplication Environment\u003c/strong\u003e\u003c/h4\u003e\n\u003cp\u003eAll applications are installed under the user \u003ccode\u003edigitalocean\u003c/code\u003e. The Droplet includes a pre-installed Anaconda distribution, which is configured for the Open WebUI.\u003c/p\u003e\n\u003ch4 id=\"5-using-conda-for-open-webui\"\u003e5. \u003cstrong\u003eUsing Conda for Open WebUI\u003c/strong\u003e\u003c/h4\u003e\n\u003cp\u003eConda is already set up, and Open WebUI is available within the 'ui' virtual environment. To access and manage this environment, follow these steps:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003eActivate the Conda environment\u003c/strong\u003e:\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003esource /home/digitalocean/anaconda3/etc/profile.d/conda.sh\n conda activate ui\u003c/code\u003e\u003c/pre\u003e\n\u003ch4 id=\"6-downloading-models-from-ollama-repository\"\u003e6. \u003cstrong\u003eDownloading Models from Ollama Repository\u003c/strong\u003e\u003c/h4\u003e\n\u003cp\u003eTo enhance the functionality of your setup, you can download models from the Ollama repository. Use the following command to download a specific model:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003eollama pull \u0026lt;model_name\u0026gt;\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eReplace \u003ccode\u003e\u0026amp;amp;amp;amp;lt;model_name\u0026amp;amp;amp;amp;gt;\u003c/code\u003e with the name of the desired model.\u003c/p\u003e\n\u003ch4 id=\"7-accessing-your-anaconda-distribution\"\u003e7. \u003cstrong\u003eAccessing Your Anaconda Distribution\u003c/strong\u003e\u003c/h4\u003e\n\u003cp\u003eTo manage your Conda environments and packages:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003eSwitch to the DigitalOcean user\u003c/strong\u003e:\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003esu - digitalocean\u003c/code\u003e\u003c/pre\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eVerify Conda installation\u003c/strong\u003e:\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eIf the \u003ccode\u003econda\u003c/code\u003e command is not working, initialize Conda with:\u003c/p\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003e/home/digitalocean/anaconda3/bin/conda init\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eAfter running this command, you may need to source the \u003ccode\u003e~/.bashrc\u003c/code\u003e file or log out and back in using \u003ccode\u003esu - digitalocean\u003c/code\u003e.\u003c/p\u003e\n\u003ch4 id=\"8-creating-and-managing-conda-environments\"\u003e8. \u003cstrong\u003eCreating and Managing Conda Environments\u003c/strong\u003e\u003c/h4\u003e\n\u003cp\u003eUse Conda to create isolated environments tailored to your specific projects:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eCreate a new Conda environment\u003c/strong\u003e:\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003econda create --name myenv\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eActivate the environment\u003c/strong\u003e:\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003econda activate myenv\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eInstall necessary packages and libraries within this environment using Conda or pip.\u003c/p\u003e\n\u003cp\u003eFor more detailed instructions on using Conda, refer to the \u003ca href=\"https://docs.conda.io/\"\u003eConda documentation\u003c/a\u003e.\u003c/p\u003e\n\u003ch4 id=\"9-configuring-https-with-tls-using-certbot-and-caddy\"\u003e9. \u003cstrong\u003eConfiguring HTTPS with TLS using Certbot and Caddy\u003c/strong\u003e\u003c/h4\u003e\n\u003cp\u003eTo secure your Open WebUI with HTTPS, you can configure TLS using Certbot and Caddy.\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003eInstall Certbot\u003c/strong\u003e:\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003esudo apt-get update\n sudo apt-get install certbot\u003c/code\u003e\u003c/pre\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eGenerate SSL Certificates\u003c/strong\u003e:\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eRun the following command to obtain a free SSL certificate from Let's Encrypt:\u003c/p\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003esudo certbot certonly --standalone -d \u0026lt;your_domain\u0026gt;\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eReplace \u003ccode\u003e\u0026amp;amp;amp;amp;lt;your_domain\u0026amp;amp;amp;amp;gt;\u003c/code\u003e with your actual domain name.\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eConfigure Caddy to Use HTTPS\u003c/strong\u003e:\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eEdit the Caddy configuration file located at \u003ccode\u003e/etc/caddy/caddyfile\u003c/code\u003e. Update it to include the following settings:\u003c/p\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre\u003e\u003ccode\u003e:443 {\n tls /etc/letsencrypt/live/\u0026lt;your_domain\u0026gt;/fullchain.pem /etc/letsencrypt/live/\u0026lt;your_domain\u0026gt;/privkey.pem\n reverse_proxy localhost:8080\n log {\n output file /var/log/caddy/access.log\n }\n }\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eReplace \u003ccode\u003e\u0026amp;amp;amp;amp;lt;your_domain\u0026amp;amp;amp;amp;gt;\u003c/code\u003e with your actual domain name.\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eRestart Caddy Service\u003c/strong\u003e:\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eAfter making changes to the Caddyfile, restart the Caddy service to apply the new configuration:\u003c/p\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003esudo systemctl restart caddy\u003c/code\u003e\u003c/pre\u003e\n\u003ch4 id=\"10-security-measures-with-fail2ban\"\u003e10. \u003cstrong\u003eSecurity Measures with Fail2Ban\u003c/strong\u003e\u003c/h4\u003e\n\u003cp\u003eFail2Ban is configured to provide additional security by monitoring login attempts and banning IP addresses that show malicious signs. The rules for Open WebUI are defined as follows:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eFail2Ban Configuration for Open WebUI\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe configuration file is located at \u003ccode\u003e/etc/fail2ban/jail.d/open-webui.conf\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThis configuration limits the number of failed login attempts and bans the IP address for a specified time.\u003c/li\u003e\u003c/ul\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eAdjusting Fail2Ban Rules\u003c/strong\u003e: Users can customize or add additional rules as needed to increase security based on specific requirements.\u003c/p\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"11-increasing-droplet-size-for-larger-models\"\u003e11. \u003cstrong\u003eIncreasing Droplet Size for Larger Models\u003c/strong\u003e\u003c/h4\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e To run larger foundational models, it is recommended to increase your Droplet size. Ensure you have sufficient CPU, RAM, and storage to handle the demands of larger models, which can significantly improve performance and stability.\u003c/p\u003e\n\u003cp\u003eThis guide provides all the essentials to get you started with Ollama and Open WebUI on your DigitalOcean Droplet, offering a robust and scalable environment for working with Large Language Models.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=sharklabs-ollamawithopenwe","addonSlug":null,"imageLabel":"sharklabs-ollamawithopenwe","imageId":163919877,"externalLabel":null,"additionalLinks":[],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"Laravel","appId":"5f17f6c1d8651101a55acf3b","developerId":"","safeName":["laravel"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/devdojo-laravel-20-04.svg","version":"11.26.0","osVersion":"Ubuntu 22.04","tags":["Frameworks"],"support":{"url":"https://devdojo.com","email":"support@devdojo.com","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Laravel","version":"11.26.0","website":"","releaseNotes":"https://github.com/laravel/laravel","licenseLink":"https://github.com/laravel/laravel#license","licenseType":"MIT License","__typename":"CustomSoftware"},{"name":"Nginx","version":"1.18.0","website":"","releaseNotes":"https://packages.ubuntu.com/bionic/nginx","licenseLink":"http://nginx.org/LICENSE","licenseType":"Custom","__typename":"CustomSoftware"},{"name":"MySQL server","version":"8.0.37","website":"","releaseNotes":"https://packages.ubuntu.com/bionic/mysql-server","licenseLink":"https://www.mysql.com/about/legal/licensing/oem/#5","licenseType":"GPL 2 with modifications","__typename":"CustomSoftware"},{"name":"PHP","version":"8.3.12","website":"","releaseNotes":"https://packages.ubuntu.com/bionic/php","licenseLink":"http://php.net/license/index.php","licenseType":"PHP v3.01","__typename":"CustomSoftware"},{"name":"Certbot","version":"2.11.0","website":"","releaseNotes":"https://github.com/certbot/certbot/blob/master/CHANGELOG.md","licenseLink":"https://github.com/certbot/certbot/blob/master/LICENSE.txt","licenseType":"Apache 2","__typename":"CustomSoftware"},{"name":"Composer","version":"2.7.7","website":"","releaseNotes":"https://github.com/composer/composer/releases","licenseLink":"https://github.com/composer/composer/blob/master/LICENSE","licenseType":"MIT license","__typename":"CustomSoftware"}],"summary":"Laravel is an open-source PHP framework that provides a set of tools and resources to build modern PHP applications.","description":"\u003cp\u003e\u003ca href=\"https://laravel.com/\" rel=\"noopener\" target=\"_blank\"\u003eLaravel\u003c/a\u003e is an open-source PHP framework that provides a set of tools and resources to build modern PHP applications.\u003c/p\u003e","gettingStarted":"\u003cp\u003eIn addition to the package installation, the One-Click also:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnables the UFW firewall to allow only SSH (port 22, rate limited), HTTP (port 80), and HTTPS (port 443) access.\u003c/li\u003e\n\u003cli\u003eCreates the initial Laravel configuration file to set up database credentials and allow the Laravel instance to connect to the database.\u003c/li\u003e\n\u003cli\u003eAfter you create a Laravel One-Click Droplet, you’ll need to log into the Droplet via SSH to finish the Laravel setup.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFrom a terminal on your local computer, connect to the Droplet as root. Make sure to substitute the Droplet’s public IPv4 address.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003essh root@your_droplet_public_ipv4\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eIf you did not add an SSH key when you created the Droplet, you’ll first be prompted to reset your root password.\u003c/p\u003e\n\u003cp\u003eThen, the interactive script that runs will first prompt you for your domain or subdomain:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e--------------------------------------------------\nThis setup requires a domain name. If you do not have one yet, you may\ncancel this setup, press Ctrl+C. This script will run again on your next login\n--------------------------------------------------\nEnter the domain name for your new Laravel site.\n(ex. example.org or test.example.org) do not include www or http/s\n--------------------------------------------------\nDomain/Subdomain name:\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe next prompt asks if you want to use SSL for your website via Let’s Encrypt, which we recommend:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eNext, you have the option of configuring LetsEncrypt to secure your new site. Before doing this, be sure that you have pointed your domain or subdomain to this server's IP address. You can also run LetsEncrypt certbot later with the command 'certbot --nginx'\n\nWould you like to use LetsEncrypt (certbot) to configure SSL(https) for your new site? (y/n):\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eNext, run your Laravel migrations:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003ecd /var/www/laravel\nphp artisan migrate\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eAt this point, you can visit the Droplet’s IP address or your domain name in your browser to see the Laravel installation.\u003c/p\u003e\n\u003cp\u003eThe web root is \u003ccode\u003e/var/www/laravel\u003c/code\u003e, and the Laravel configuration file is \u003ccode\u003e/var/www/laravel/.env\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eYou can get information about the PHP installation by logging into the Droplet and running \u003ccode\u003ephp -i\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIn addition, there are a few customized setup steps that we recommend you take.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cp\u003eYou should consider securing the MySQL instance by running the \u003ccode\u003emysql_secure_installation\u003c/code\u003e command.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eCreating an Nginx server block file for each new site and makes it easier to manage changes when hosting multiple sites.\u003c/p\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eTo do so, you’ll need to create two things for each domain: a new directory in \u003ccode\u003e/var/www\u003c/code\u003e for that domain’s content, and a new server block file in /etc/nginx/sites-available for that domain’s configuration. For a detailed walkthrough, you can follow \u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu-16-04\"\u003eHow to Set Up Nginx Server Blocks\u003c/a\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIf you didn’t enable HTTPS during the initial setup script, you can enable it manually at any time after your domain name has been pointed to the Droplet's IP address.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSetting up an SSL certificate enables HTTPS on the web server, which secures the traffic between the server and the clients connecting to it. Certbot is a free and automated way to set up SSL certificates on a server. It’s included as part of the Laravel One-Click to make securing the Droplet easier.\u003c/p\u003e\n\u003cp\u003eTo use Certbot, you’ll need a registered domain name and two DNS records:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAn A record from the domain (e.g., \u003ccode\u003eexample.com\u003c/code\u003e) to the server’s IP address\u003c/li\u003e\n\u003cli\u003eAn A record from a domain prefaced with www (e.g., \u003ca href=\"http://www.example.com\"\u003ewww.example.com\u003c/a\u003e) to the server’s IP address\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAdditionally, if you’re using a server block file, you’ll need to make sure the server name directive in the Nginx server block (e.g., \u003ccode\u003eserver_name example.com\u003c/code\u003e) is correctly set to the domain.\u003c/p\u003e\n\u003cp\u003eOnce the DNS records and, optionally, the server block files are set up, you can generate the SSL certificate. Make sure to substitute the domain in the command.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ecertbot --nginx -d example.com -d www.example.com\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eFor a more detailed walkthrough, you can follow \u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-18-04\"\u003eHow to Secure Nginx with Let’s Encrypt\u003c/a\u003e or view \u003ca href=\"https://certbot.eff.org/docs/using.html\"\u003eCertbot’s official documentation\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eYou can serve files from the web server by adding them to the web root (\u003ccode\u003e/var/www/laravel\u003c/code\u003e) using \u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-use-sftp-to-securely-transfer-files-with-a-remote-server\"\u003eSFTP\u003c/a\u003e or other tools.\u003c/p\u003e\n\u003cp\u003eTo add multiple websites, you can use the \u003ca href=\"https://github.com/thedevdojo/larasail#creating-a-new-site\"\u003eLaraSail automation script\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eAbout DigitalOcean Managed DBaaS\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eIf you select to install a DigitalOcean Managed Database while creating this 1-click app, DigitalOcean handles the creation of the database cluster as well as the Droplet. The Droplet will have a \u003cstrong\u003eDATABASE_URL\u003c/strong\u003e environment variable configured including a database connection string, such as:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e* postgresql://doadmin:@dbaas-db-11111-do-user-1111111-1.b.db.ondigitalocean.com:25060/defaultdb?sslmode=require\u003c/strong\u003e*\u003c/p\u003e\n\u003cp\u003eYour managed database configuration and credentials will be stored in \u003cstrong\u003e\u003cem\u003e/root/.digitalocean_dbaas_credentials\u003c/em\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003ePlease note that there is additional configuration needed to connect your managed database to this Droplet after creation.\u003c/strong\u003e\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=devdojo-laravel-20-04","addonSlug":null,"imageLabel":"devdojo-laravel-20-04","imageId":166879200,"externalLabel":null,"additionalLinks":[{"name":"How To Install and Configure Laravel with Nginx on Ubuntu 22.04","url":"https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-laravel-with-nginx-on-ubuntu-22-04","description":"In this guide, you’ll install and configure a new Laravel application on an Ubuntu 22.04 server.","__typename":"AdditionalLink"},{"name":"How to Set Up a Scalable Laravel Application using Managed Databases and Object Storage","url":"https://www.digitalocean.com/community/tutorials/how-to-set-up-a-scalable-laravel-6-application-using-managed-databases-and-object-storage","description":"In this guide, you will learn how to update an existing Laravel application to prepare it for horizontal scalability.","__typename":"AdditionalLink"},{"name":"Laravel 7 Basics Video Course","url":"https://devdojo.com/course/laravel-7-basics","description":"In this video series you will learn the basics of Laravel 7.","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"OpenLiteSpeed WordPress","appId":"5bedf85f599f95343bfaecfc","developerId":"","safeName":["openlitespeed-wordpress"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/litespeedtechnol-openlitespeedwor-20-04.svg","version":"6.7","osVersion":"Ubuntu 24.04","tags":["Blogs and Forums"],"support":{"url":"https://docs.litespeedtech.com/cloud/images/wordpress/","email":"support@litespeedtech.com","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"WordPress","version":"6.7","website":"","releaseNotes":"https://wordpress.org/support/wordpress-version/version-5-9/","licenseLink":"https://wordpress.org/about/license/","licenseType":"GPL 2","__typename":"CustomSoftware"},{"name":"OpenLiteSpeed","version":"1.7.19","website":"","releaseNotes":"https://openlitespeed.org/release-log/version-1-7-x/","licenseLink":"https://www.litespeedtech.com/open-source/openlitespeed","licenseType":"GPLv3","__typename":"CustomSoftware"},{"name":"MariaDB","version":"10.11.7","website":"","releaseNotes":"https://mariadb.org/","licenseLink":"https://mariadb.com/kb/en/library/mariadb-license/","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"PHP","version":"8.3","website":"","releaseNotes":"http://rpms.litespeedtech.com/debian/","licenseLink":"","licenseType":"proprietary","__typename":"CustomSoftware"},{"name":"CertBot","version":"1.21.0","website":"","releaseNotes":"https://github.com/certbot/certbot/blob/master/certbot/CHANGELOG.md","licenseLink":"https://github.com/certbot/certbot/blob/master/LICENSE.txt","licenseType":"Apache2","__typename":"CustomSoftware"},{"name":"phpMyAdmin","version":"5.2.0","website":"","releaseNotes":"https://www.phpmyadmin.net/news/","licenseLink":"https://www.phpmyadmin.net/license/","licenseType":"GPLv2","__typename":"CustomSoftware"},{"name":"Memcached","version":"1.6.14-1","website":"","releaseNotes":"https://packages.ubuntu.com/search?keywords=memcached","licenseLink":"https://github.com/memcached/memcached/blob/master/LICENSE","licenseType":"BSD","__typename":"CustomSoftware"},{"name":"Redis","version":"6.0.16","website":"","releaseNotes":"https://packages.ubuntu.com/jammy/redis-server","licenseLink":"https://redis.io/topics/license","licenseType":"BSD","__typename":"CustomSoftware"},{"name":"Postfix","version":"3.6.4","website":"","releaseNotes":"https://packages.ubuntu.com/search?keywords=postfix","licenseLink":"http://www.postfix.org/IBM-Public-License-1.0.txt","licenseType":"IBM PUBLIC","__typename":"CustomSoftware"}],"summary":"Blazing-fast WordPress with LSCache, 300+ times faster than regular WordPress","description":"\u003cp\u003eOpenLiteSpeed is the Open Source edition of LiteSpeed Web Server Enterprise and contains all of the essential features, including HTTP/3 support. OLS provides enormous scalability, and an accelerated hosting platform for WordPress. This One-Click gives you OpenLiteSpeed, PHP, MySQL Server, WordPress, LiteSpeed Cache, and other useful applications.\u003c/p\u003e","gettingStarted":"\u003cp\u003eFrom a terminal on your local computer, connect to the Droplet as root. Make sure to substitute the Droplet’s IP address.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003essh root@use_your_droplet_ip\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eAn interactive script that runs will first prompt you for your domain or subdomain.\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eYou can press CTRL+C and continue to SSH. The prompt will open again the next time you log in, and will continue to do so until you finish the whole setup.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ePlease input a valid domain:\nPlease verify it is correct. [y/N]\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can also automatically apply Let's Encrypt SSL if your domain is pointed to this server already. Enter \u003ccode\u003ey\u003c/code\u003e and your email address to finish the process.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eDo you wish to issue a Let's encrypt certificate for this domain? [y/N]\nPlease enter your E-mail:\nPlease verify it is correct: [y/N]\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOnce finished, you should see Certificate has been successfully installed…\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eDo you wish to force HTTPS rewrite rule for this domain? [y/N]\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eEnter \u003ccode\u003ey\u003c/code\u003e to force HTTPS rules to be applied\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eDo you wish to update the system which include the web server? [Y/n]\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThis script will automatically go away after your domain has been added.\u003c/p\u003e\n\u003ch1 id=\"for-more-support\"\u003eFor more support\u003c/h1\u003e\n\u003cp\u003ePlease visit our \u003ca href=\"https://docs.litespeedtech.com/cloud/wordpress/\"\u003eQuick Start page\u003c/a\u003e for details on how to access your WordPress One Click and complete your configuration.\u003c/p\u003e\n\u003cp\u003eCommunity Support: \u003ca href=\"https://litespeedtech.com/slack\"\u003e\u003cimg src=\"https://img.shields.io/badge/slack-LiteSpeed-blue.svg?logo=slack\" alt=\"null\"\u003e\u003c/a\u003e\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=litespeedtechnol-openlitespeedwor-20-04","addonSlug":null,"imageLabel":"litespeedtechnol-openlitespeedwor-20-04","imageId":170280256,"externalLabel":null,"additionalLinks":[{"name":"HTTP/3 Frequently Asked Questions","url":"https://www.litespeedtech.com/http3-faq","description":"Everything you've ever wanted to know about the new HTTP/3 and QUIC application protocol supported by OpenLiteSpeed.","__typename":"AdditionalLink"},{"name":"About LiteSpeed's Superior Performance","url":"https://openlitespeed.org/benchmarks/wp-http2/","description":"Benchmarks comparing the OpenLiteSpeed, nginx and Apache implementations of HTTP/2.","__typename":"AdditionalLink"},{"name":"QUIC Cloud Service","url":"https://openlitespeed.org/quic-cloud/","description":"QUIC.cloud is the First and Only Complete WordPress Optimization Solution.","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"OpenVPN Access Server","appId":"5ca53addcc34df6c75840755","developerId":"","safeName":["openvpn-access-server"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/openvpn-logo.svg","version":"2.11.3","osVersion":"Ubuntu 22.04","tags":["Security"],"support":{"url":"https://openvpn.net/digital-ocean-support/","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"OpenVPN Access Server","version":"2.11.3","website":"","releaseNotes":"https://openvpn.net/vpn-server-resources/release-notes/","licenseLink":"https://openvpn.net/license/","licenseType":"Custom","__typename":"CustomSoftware"}],"summary":"Run your own OpenVPN server with web-based interface.","description":"\u003cp\u003eOpenVPN Access Server offers a web based interface to easily setup and manage your OpenVPN-based VPN server to access private and public resources that is compatible with many platforms, and supports multiple authentication systems.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eGet Technical Support 24/7 and Schedule a Live Demo at openvpn.com.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThe official OpenVPN Connect client supports Windows, macOS, iOS, Android and ChromeOS, while the open source OpenVPN client provides support for Linux, FreeBSD, and many other platforms and devices.\u003c/p\u003e\n\u003cp\u003eOur products are based on the market-proven OpenVPN protocol and trusted by some of the world\u0026#39;s most renowned brands for their unmatched flexibility, scalability, and ease of use. \u003c/p\u003e\n\u003cp\u003eAccess Server includes a built-in local authentication system that can be fully managed in the web interface, but can also authenticate against PAM, LDAP, RADIUS, SAML, and even custom authentication solutions.\u003c/p\u003e\n\u003cp\u003eOur licensing model is based on the number of active VPN connections allowing us to provide businesses of any size with an affordable and scalable solution. Access Server is free to install and use for 2 simultaneous VPN connections for testing purposes.\u003c/p\u003e\n\u003cp\u003e--\u003cbr/\u003e\nOpenVPN Access Server is OpenVPN Inc.\u0026#39;s official self-managed VPN server solution. For a fully managed cloud solution we also offer CloudConnexa.\u003c/p\u003e","gettingStarted":"\u003ch3 id=\"deployment-steps\"\u003eDeployment steps\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\u003cp\u003eDeploy a Droplet from the Marketplace and log on using SSH.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eDuring setup an admin user and password will be set.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eNext log on to the admin web interface of your droplet, for example: \u003ca href=\"https://123.45.67.89/admin/\"\u003ehttps://123.45.67.89:943/admin/\u003c/a\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eIf you see any SSL certificate warnings, that is normal, please override them.\u003c/p\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eOur \u003ca href=\"https://openvpn.net/vpn-server-resources/digital-ocean-quick-start-guide/\"\u003eQuick Start Guide\u003c/a\u003e gives more details on how to quickly get started with your own Access Server.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=openvpn-18-04","addonSlug":null,"imageLabel":"openvpn-18-04","imageId":126498652,"externalLabel":null,"additionalLinks":[{"name":"Quick Start Guide","url":"https://openvpn.net/vpn-server-resources/digital-ocean-quick-start-guide/","description":"Get started quickly","__typename":"AdditionalLink"},{"name":"Frequently Asked Questions","url":"https://openvpn.net/digital-ocean-faq/","description":"Frequently Asked Questions","__typename":"AdditionalLink"},{"name":"OpenVPN Support","url":"https://openvpn.net/digital-ocean-support/","description":"Get support for Access Server","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"CyberPanel","appId":"5c1c0609abd08a51bda78d36","developerId":"","safeName":["cyberpanel"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/litespeedtechnol-cyberpanel-20-04.svg","version":"2.3.8","osVersion":"Ubuntu 22.04","tags":["Blogs and Forums"],"support":{"url":"https://docs.litespeedtech.com/cloud/images/cyberpanel/","email":"support@litespeedtech.com","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"CyberPanel","version":"2.3.6","website":"","releaseNotes":"https://cyberpanel.net/docs/change-log-for-cyberpanel/","licenseLink":"https://github.com/usmannasir/cyberpanel/blob/v2.0.0/LICENSE","licenseType":"GPLv3","__typename":"CustomSoftware"},{"name":"OpenLiteSpeed","version":"1.7.19","website":"","releaseNotes":"https://openlitespeed.org/release-log/","licenseLink":"https://www.litespeedtech.com/open-source/openlitespeed","licenseType":"GPLv3","__typename":"CustomSoftware"},{"name":"PHP","version":"8.3","website":"","releaseNotes":"http://rpms.litespeedtech.com/debian/","licenseLink":"","licenseType":"proprietary","__typename":"CustomSoftware"},{"name":"Rainloop","version":"1.14.0","website":"","releaseNotes":"https://www.rainloop.net/changelog/","licenseLink":"https://www.rainloop.net/licensing/","licenseType":"AGPLv3","__typename":"CustomSoftware"},{"name":"PowerDNS","version":"4.1.1","website":"","releaseNotes":"https://doc.powerdns.com/","licenseLink":"https://github.com/PowerDNS/pdns/blob/master/COPYING","licenseType":"GPLv2","__typename":"CustomSoftware"},{"name":"Redis","version":"5.0.7","website":"","releaseNotes":"https://packages.ubuntu.com/focal/redis","licenseLink":"https://redis.io/topics/license","licenseType":"BSD","__typename":"CustomSoftware"},{"name":"memcached","version":"1.5.22","website":"","releaseNotes":"https://www.ubuntuupdates.org/package/core/focal/main/updates/memcached","licenseLink":"https://github.com/memcached/memcached/blob/master/LICENSE","licenseType":"BSD","__typename":"CustomSoftware"}],"summary":"CyberPanel is a next-generation hosting control panel, which provides a friendly user interface and popular applications.","description":"\u003cp\u003eThe CyberPanel image provides a One-Click installer to automatically install OpenLiteSpeed, LSCache, WordPress, Prestashop, Joomla and contains all of the essential features, including HTTP/3 support. It also automates the initial setup for components like Mail service and DNS, to reduce the time it takes to get set up for hosting.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eHighlights\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRedis Mass Hosting\u003c/li\u003e\n\u003cli\u003eImunify360 Integration\u003c/li\u003e\n\u003cli\u003eGit Manager\u003c/li\u003e\n\u003cli\u003eCloudFlare DNS Synchronization\u003c/li\u003e\n\u003cli\u003eWeb Based Terminal\u003c/li\u003e\n\u003cli\u003eDocker Manager.\u003c/li\u003e\n\u003cli\u003eDifferent Level Of users.\u003c/li\u003e\n\u003cli\u003eAuto SSL.\u003c/li\u003e\n\u003cli\u003eFTP Server.\u003c/li\u003e\n\u003cli\u003eLight weight DNS Server (PowerDNS).\u003c/li\u003e\n\u003cli\u003ePHPMYAdmin.\u003c/li\u003e\n\u003cli\u003eEmail Support (Rainloop).\u003c/li\u003e\n\u003cli\u003eFile Manager.\u003c/li\u003e\n\u003cli\u003ePHP Management.\u003c/li\u003e\n\u003cli\u003eFirewall.\u003c/li\u003e\n\u003cli\u003eOne click Backup and Restore.\u003c/li\u003e\n\u003cli\u003eOne click conversion from OpenLiteSpeed to LiteSpeed Enterprise.\u003c/li\u003e\n\u003cli\u003eAuto Backups to DigitalOcean Spaces.\u003c/li\u003e\n\u003c/ul\u003e","gettingStarted":"\u003ch1 id=\"for-more-support\"\u003eFor more support\u003c/h1\u003e\n\u003cp\u003ePlease visit our \u003ca href=\"https://docs.litespeedtech.com/cloud/images/cyberpanel/\"\u003eQuick Start page\u003c/a\u003e for details on how to access your CyberPanel One Click and complete your configuration.\u003c/p\u003e\n\u003cp\u003eCommunity Support: \u003ca href=\"https://www.litespeedtech.com/slack\"\u003e\u003cimg src=\"https://img.shields.io/badge/slack-LiteSpeed-blue.svg?logo=slack\" alt=\"null\"\u003e\u003c/a\u003e\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=litespeedtechnol-cyberpanel-20-04","addonSlug":null,"imageLabel":"litespeedtechnol-cyberpanel-20-04","imageId":169076002,"externalLabel":null,"additionalLinks":[{"name":"HTTP/3 Frequently Asked Questions","url":"https://www.litespeedtech.com/http3-faq","description":"Everything you've ever wanted to know about the new HTTP/3 and QUIC application protocol supported by OpenLiteSpeed.","__typename":"AdditionalLink"},{"name":"About LiteSpeed's Superior Performance","url":"https://openlitespeed.org/benchmarks/","description":"Benchmarks comparing the OpenLiteSpeed, nginx and Apache implementations of HTTP/2.","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"MERN","appId":"d3c8b4b0023fb7cd00316fa1","developerId":"","safeName":["mern"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/mern.svg","version":"1.0","osVersion":"Ubuntu 22.04","tags":["Frameworks"],"support":{"url":"https://www.digitalocean.com/docs/","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"NGINX","version":"1.18.0","website":"","releaseNotes":"","licenseLink":"http://nginx.org/LICENSE","licenseType":"Custom","__typename":"CustomSoftware"},{"name":"Certbot","version":"1.21.0","website":"","releaseNotes":"","licenseLink":"https://github.com/certbot/certbot/blob/master/LICENSE.txt","licenseType":"Apache 2","__typename":"CustomSoftware"},{"name":"npm","version":"9.5.0","website":"","releaseNotes":"","licenseLink":"https://docs.npmjs.com/policies/npm-license","licenseType":"Artistic License 2.0","__typename":"CustomSoftware"},{"name":"React","version":"^18.2.0","website":"","releaseNotes":"","licenseLink":"https://github.com/facebook/react/blob/main/LICENSE","licenseType":"MIT License","__typename":"CustomSoftware"},{"name":"Express.js","version":"~4.16.1","website":"","releaseNotes":"","licenseLink":"https://github.com/expressjs/express/blob/master/LICENSE","licenseType":"MIT License","__typename":"CustomSoftware"},{"name":"MongoDB","version":"6.0.4","website":"","releaseNotes":"","licenseLink":"https://www.mongodb.com/licensing/server-side-public-license","licenseType":"SSPL","__typename":"CustomSoftware"},{"name":"pm2","version":"5.2.2","website":"","releaseNotes":"","licenseLink":"https://github.com/Unitech/pm2/blob/master/GNU-AGPL-3.0.txt","licenseType":"GNU AGPL v3","__typename":"CustomSoftware"}],"summary":"Get MongoDB, Express.js, React and NGINX installed on your Droplet in less than a minute.","description":"\u003cp\u003eThe MERN stack consists of open-source software to get the backend and frontend up and running. Available as a one-click install, get MongoDB, ExpressJS, React and NodeJS installed on your Droplet in less than a minute.\u003c/p\u003e","gettingStarted":"\u003cp\u003eAfter your droplet is created, you can access your MERN stack by typing the droplet’s IP address in your browser:\u003cbr\u003e\n\u003cimg src=\"https://do-not-delete-droplet-assets.nyc3.digitaloceanspaces.com/FHxUEjz.png\" alt=\"MERN Welcome Page\"\u003e\u003c/p\u003e\n\u003cp\u003eIf you see the \u003cem\u003eSite can’t be reached\u003c/em\u003e or \u003cem\u003eNginx 502 Bad Gateway\u003c/em\u003e errors, give it 2-3 minutes and reload the page.\u003c/p\u003e\n\u003cp\u003eTo connect to the local MongoDB console, use:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e$ mongosh 127.0.0.1:27017 -u \"admin\" -p \"\u0026lt;Your MongoDB password\u0026gt;\" --authenticationDatabase \"admin\"\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eTo connect your backend to the local MongoDB, use this connection string:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003emongodb://admin:\u0026lt;Your MongoDB password\u0026gt;@127.0.0.1:27017\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYour MongoDB password can be found on the welcome message of your MERN terminal.\u003c/p\u003e\n\u003cp\u003eSample React application is served by PM2 as a \u003cem\u003emern\u003c/em\u003e user. To view deployed applications, use:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e$ su - mern -c \"pm2 list\"\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eAfter you have created your MERN droplet, it is highly recommended you configure an Nginx server block file for each site you plan to host. Doing so will make the default configuration the fallback, as intended, and will make it easier to manage changes when hosting multiple sites.\u003c/p\u003e\n\u003ch1 id=\"configuring-nginx\"\u003eConfiguring Nginx\u003c/h1\u003e\n\u003cp\u003eTo do so, you’ll need to create two things for each domain: a new directory in /var/www for that domain’s content, and a new server block file in /etc/nginx/sites-available for that domain’s configuration. For a detailed walkthrough, you can follow \u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu-16-04\"\u003eHow to Set Up Nginx Server Blocks\u003c/a\u003e.\u003c/p\u003e\n\u003ch1 id=\"adding-a-domain-name\"\u003eAdding a domain name\u003c/h1\u003e\n\u003cp\u003eA domain name allows others to access your website with an encrypted connection. If you intend to host a website on your MERN Droplet 1-Click.\u003c/p\u003e\n\u003cp\u003eMERN Droplet 1-Click comes with certbot installed, making it easier to enable HTTPS on your 1-Click.\u003c/p\u003e\n\u003cp\u003eFirst, ensure your domain points to the new droplet IP. If your DNS is managed by DigitalOcean, it should look like this:\u003cbr\u003e\n\u003cimg src=\"https://do-not-delete-droplet-assets.nyc3.digitaloceanspaces.com/D4tIskY.png\" alt=\"MERN Domain Name Example\"\u003e\u003c/p\u003e\n\u003cp\u003eThe DNS Host may be the same company you registered the domain with or another entity you designate. To connect your DNS hosting to DigitalOcean, check out \u003ca href=\"https://docs.digitalocean.com/tutorials/dns-registrars/\"\u003ethis guide\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eOnce your A record is set up, you should configure nginx to host your new domain properly. Detailed instructions can be found in \u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu-16-04\"\u003ethis article\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://do-not-delete-droplet-assets.nyc3.digitaloceanspaces.com/d7L6eSb.png\" alt=\"MERN Certbot Example\"\u003e\u003c/p\u003e\n\u003cp\u003eAfter you answer questions from certbot, your HTTPS setup is finished.\u003c/p\u003e\n\u003cp\u003eUse your domain in the web browser to access your MERN Droplet.\u003c/p\u003e\n\u003ch2 id=\"droplet-summary\"\u003eDroplet Summary\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUFW firewall allows only SSH (port 22, rate limited), HTTP (port 80), and HTTPS (port 443) access.\u003c/li\u003e\n\u003cli\u003eThe MERN Droplet comes with the \u003cem\u003emern\u003c/em\u003e user for managing sample applications and PM2.\u003c/li\u003e\n\u003cli\u003eThe MongoDB is set with the \u003cem\u003eadmin\u003c/em\u003e user and SCRAM-SHA-1 authentication.\u003c/li\u003e\n\u003cli\u003eThe MongoDB password for the \u003cem\u003eadmin\u003c/em\u003e user is located in /root/.digitalocean_password.\u003c/li\u003e\n\u003cli\u003eSample React application is located at /home/mern/client.\u003c/li\u003e\n\u003c/ul\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=mern","addonSlug":null,"imageLabel":"mern","imageId":128276461,"externalLabel":null,"additionalLinks":[{"name":"Source Code","url":"https://github.com/digitalocean/droplet-1-clicks/tree/master/mern-22-04?utm_source=digitalocean_marketplace_app_listing_page","description":"Packer scripts that were used to build this 1-Click App","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"Easypanel","appId":"624afb944029ed00590718e0","developerId":"","safeName":["easypanel"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/easypanel.svg","version":"1.16.0","osVersion":"Ubuntu 22.04","tags":["Developer Tools"],"support":{"url":"https://easypanel.io","email":"help@easypanel.io","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Docker","version":"latest","website":"","releaseNotes":"","licenseLink":"","licenseType":"","__typename":"CustomSoftware"}],"summary":"Easypanel is a modern server control panel which uses Docker under the hood. ","description":"\u003cp\u003eYou can think of it as \u0026#34;self-hosted Heroku\u0026#34;. It helps you deploy Node.js, Ruby, Python, PHP, Go and Java applications.\u003c/p\u003e","gettingStarted":"\u003cp\u003eAfter creating your server, you can access Easypanel using the IP address of your server on port 3000.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=easypanel","addonSlug":null,"imageLabel":"easypanel","imageId":130115563,"externalLabel":null,"additionalLinks":[{"name":"Documentation","url":"https://easypanel.io/docs","description":"Easypanel Documentation","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"WordPress-WooCommerce","appId":"fb101b18b6526102fb2caa4c","developerId":"","safeName":["wordpress-woocommerce"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/mpdev-woocommercelogou.png","version":"8.7.0","osVersion":"Ubuntu 22.04","tags":["eCommerce"],"support":{"url":"https://smartarget.online/page_contact.html","email":"support@smartarget.online","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"WordPress","version":"6.5.2","website":"","releaseNotes":"","licenseLink":"","licenseType":"GPL 2","__typename":"CustomSoftware"},{"name":"WooCommerce","version":"8.7.0","website":"","releaseNotes":"","licenseLink":"","licenseType":"GPL 2","__typename":"CustomSoftware"},{"name":"MySQL server","version":"8.0.36","website":"","releaseNotes":"","licenseLink":"","licenseType":"GPL 2","__typename":"CustomSoftware"},{"name":"Apache","version":"2.4.52","website":"","releaseNotes":"","licenseLink":"","licenseType":"Apache 2","__typename":"CustomSoftware"},{"name":"PHP","version":"8.3","website":"","releaseNotes":"","licenseLink":"","licenseType":"PHP v3.01","__typename":"CustomSoftware"}],"summary":"1-Click install of WordPress \u0026 WooCommerce on DigitalOcean","description":"\u003cp\u003eWooCommerce is a customizable, open-source eCommerce platform built on WordPress and one of the most popular eCommerce platforms in the world. \u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003eThis droplet includes WordPress and WooCommerce plugin to make it easier for your to start your online store.\u003c/p\u003e","gettingStarted":"\u003ch1 id=\"getting-started-after-deploying-wordpress\"\u003eGetting started after deploying WordPress\u003c/h1\u003e\n\u003cp\u003eIn addition to the package installation, this 1-Click App also:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnables the UFW firewall to allow only SSH (port\u0026nbsp;\u003ccode\u003e22\u003c/code\u003e, rate limited), HTTP (port\u0026nbsp;\u003ccode\u003e80\u003c/code\u003e), and HTTPS (port\u0026nbsp;\u003ccode\u003e443\u003c/code\u003e) access.\u003c/li\u003e\n\u003cli\u003eSets the MySQL root password, runs\u0026nbsp;\u003ccode\u003emysql_secure_installation\u003c/code\u003e, and creates a\u0026nbsp;\u003ccode\u003ewordpress\u003c/code\u003e\u0026nbsp;user with the necessary permissions. Note that the Droplet root user will not be prompted for the MySQL password. Keep in mind that if you're connecting to a DigitalOcean Managed Database, the locally installed database will be disabled.\u003c/li\u003e\n\u003cli\u003eSets up the\u0026nbsp;\u003ccode\u003edebian-sys-maint\u003c/code\u003e\u0026nbsp;user in MySQL so the system's init scripts for MySQL will work without requiring the MySQL\u0026nbsp;\u003ccode\u003eroot\u003c/code\u003e\u0026nbsp;user password.\u003c/li\u003e\n\u003cli\u003eCreates the initial WordPress configuration file to set up\u0026nbsp;\u003ca href=\"https://developer.wordpress.org/reference/functions/wp_salt/\"\u003esalt keys\u003c/a\u003e\u0026nbsp;and allow the WordPress instance to connect to the database.\u003c/li\u003e\n\u003cli\u003eDisables XML-RPC to help prevent DDoS and other brute force attacks.\u003c/li\u003e\n\u003cli\u003eModifies some of PHP's settings to increase the maximum file size and execution time.\u003c/li\u003e\n\u003cli\u003eEnables the\u0026nbsp;\u003ca href=\"https://httpd.apache.org/docs/current/mod/mod_rewrite.html\"\u003eApache rewrite module\u003c/a\u003e\u0026nbsp;so the WordPress permalink feature will work.\u003c/li\u003e\n\u003cli\u003eConfigures Apache with\u0026nbsp;\u003ccode\u003eUseCanonicalName On\u003c/code\u003e\u0026nbsp;to mitigate\u0026nbsp;\u003ca href=\"https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8295\"\u003eCVE-2017-8295\u003c/a\u003e. You need a fully qualified domain name (FQDN) to use this One-Click, which you can purchase from any domain registrar. You do not have to manage your domain with\u0026nbsp;\u003ca href=\"https://www.digitalocean.com/docs/networking/dns/\"\u003eDigitalOcean DNS\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAfter you create a WordPress One-Click Droplet, you’ll need to log into the Droplet via SSH to finish the WordPress setup. If you try to visit the Droplet’s IP address before logging into the Droplet, you’ll see a DigitalOcean landing page.\u003c/p\u003e\n\u003cp\u003eTo finish setup, connect to the Droplet as root. Make sure to substitute the Droplet’s public IPv4 address.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003essh root@your_droplet_public_ipv4\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThen, once your database is ready, the interactive script that runs will first prompt you for your domain or subdomain. For testing purposes, you can enter the IP address of the Droplet if you don't have a domain setup yet.\u003c/p\u003e\n\u003chr\u003e\n\u003ch3 id=\"connecting-wordpress-to-a-digitalocean-managed-database\"\u003eConnecting WordPress to a DigitalOcean Managed Database\u003c/h3\u003e\n\u003cp\u003eIf you'd like to use a DigitalOcean managed MySQL database with your WordPress 1-Click App, make sure you select that checkbox when prompted on the Droplet Create page.\u003c/p\u003e\n\u003chr\u003e\n\u003ch3 id=\"configure-hostname-and-letsencrypt\"\u003eConfigure hostname and LetsEncrypt\u003c/h3\u003e\n\u003cp\u003eWhen you connect to your WordPress 1-Click App Droplet via SSH for the 1st time, you’ll be prompted to enter a hostname after any required database configuration is completed:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eTo cancel setup, press Ctrl+C. This script will run again on your next login\n--------------------------------------------------\nEnter the domain name for your new WordPress site.\n(ex. example.org or test.example.org) do not include www or http/s\n--------------------------------------------------\nDomain/Subdomain name:\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe next prompt asks if you want to use SSL for your website via Let’s Encrypt, which we recommend:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eNext, you have the option of configuring LetsEncrypt to secure your new site. Before doing this, be sure that you have pointed your domain or subdomain to this server's IP address. You can also run LetsEncrypt certbot later with the command 'certbot --apache'\n\nWould you like to use LetsEncrypt (certbot) to configure SSL(https) for your new site? (y/n):\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eAfter you respond to these two prompts, you’ll see a confirmation message:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eWordPress has been enabled at http://example.org Please open this URL in a browser to complete the setup of your site.\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eAt this point, you should visit the Droplet's IP address in your browser to finish the WordPress installation through the web interface.\u003c/p\u003e\n\u003cp\u003eOnce the installation is complete, you can use the WordPress administration dashboard to further customize the new site. For reference:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe root password for the MySQL instance running on your Droplet is in\u0026nbsp;\u003ccode\u003e/root/.digitalocean_password\u003c/code\u003e. Note that the Droplet root user will not be prompted for the MySQL password.\u003c/li\u003e\n\u003cli\u003eIf you're connecting to a DigitalOcean Managed Database, your MySQL connection information can be found in\u0026nbsp;\u003ccode\u003e/var/www/html/wp-config.php\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe web root is\u0026nbsp;\u003ccode\u003e/var/www/html\u003c/code\u003e, and the WordPress configuration file is\u0026nbsp;\u003ccode\u003e/var/www/html/wp-config.php\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eYou can get information about the PHP installation by logging into the Droplet and running php -i.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIn addition, there are a few customized setup steps that we recommend you take. For example, creating an Apache virtual hosts file for each site maintains the default configuration as the fallback, as intended, and makes it easier to manage changes when hosting multiple sites.\u003c/p\u003e\n\u003cp\u003eTo do so, you'll need to create two things for each domain: a new directory in\u0026nbsp;\u003ccode\u003e/var/www\u003c/code\u003e\u0026nbsp;for that domain's content, and a new virtual host file in\u0026nbsp;\u003ccode\u003e/etc/apache2/sites-available\u003c/code\u003e\u0026nbsp;for that domain's configuration. For a detailed walkthrough, you can follow\u0026nbsp;\u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-16-04\"\u003eHow to Set Up Apache Virtual Hosts\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eIf you didn't enable HTTPS during the initial setup script, you can enable it manually at any time after the fact.\u003c/p\u003e\n\u003cp\u003eSetting up an SSL certificate enables HTTPS on the web server, which secures the traffic between the server and the clients connecting to it. Certbot is a free and automated way to set up SSL certificates on a server. It's included as part of the WordPress One-Click to make securing the Droplet easier.\u003c/p\u003e\n\u003cp\u003eTo use Certbot, you'll need a registered domain name and two DNS records:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAn A record from the domain (e.g.,\u0026nbsp;\u003ccode\u003eexample.com\u003c/code\u003e) to the server's IP address\u003c/li\u003e\n\u003cli\u003eAn A record from the domain prefaced with\u0026nbsp;\u003ccode\u003ewww\u003c/code\u003e\u0026nbsp;(e.g.,\u0026nbsp;\u003ccode\u003ewww.example.com\u003c/code\u003e) to the server's IP addressAdditionally, if you're using a virtual hosts file, you'll need to make sure the server name directive in the VirtualHost block (e.g.,\u0026nbsp;\u003ccode\u003eServerName example.com\u003c/code\u003e) is correctly set to the domain.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOnce the DNS records and, optionally, the virtual hosts files are set up, you can generate the SSL certificate. Make sure to substitute the domain in the command.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ecertbot --apache -d example.com -d www.example.com\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eHTTPS traffic on port 443 is already allowed through the firewall. After you set up HTTPS, you can optionally deny HTTP traffic on port 80:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eufw delete allow 80/tcp\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eFor a more detailed walkthrough, you can follow\u0026nbsp;\u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-18-04\"\u003eHow to Secure Apache with Let's Encrypt\u003c/a\u003e\u0026nbsp;or view\u0026nbsp;\u003ca href=\"https://certbot.eff.org/docs/using.html\"\u003eCertbot's official documentation\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eYou can serve files from the web server by adding them to the web root (\u003ccode\u003e/var/www/html\u003c/code\u003e) using\u0026nbsp;\u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-use-sftp-to-securely-transfer-files-with-a-remote-server\"\u003eSFTP\u003c/a\u003e\u0026nbsp;or other tools.\u003c/p\u003e\n\u003ch1 id=\"upgrade-instructions\"\u003eUpgrade instructions\u003c/h1\u003e\n\u003cp\u003eYou can run the following command to update WordPress to the latest version.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e#!/bin/sh\n\nset -e\n\n################################################################################\n# repo\n################################################################################\nhelm repo add bitnami https://charts.bitnami.com/bitnami\nhelm repo update \u0026gt; /dev/null\n\n################################################################################\n# chart\n################################################################################\nSTACK=\"wordpress\"\nCHART=\"bitnami/wordpress\"\nNAMESPACE=\"wordpress\"\n\nif [ -z \"${MP_KUBERNETES}\" ]; then\n # use local version of values.yml\n ROOT_DIR=$(git rev-parse --show-toplevel)\n values=\"$ROOT_DIR/stacks/wordpress/values.yml\"\nelse\n # use github hosted master version of values.yml\n values=\"https://raw.githubusercontent.com/digitalocean/marketplace-kubernetes/master/stacks/wordpress/values.yml\"\nfi\n\nhelm upgrade \"$STACK\" \"$CHART\" \\\n --namespace \"$NAMESPACE\" \\\n --values \"$values\" \\\n --set wordpressPassword=$(kubectl get secret --namespace \"wordpress\" wordpress -o jsonpath=\"{.data.wordpress-password}\" | base64 --decode) \\\n --set mariadb.auth.rootPassword=$(kubectl get secret --namespace \"wordpress\" wordpress-mariadb -o jsonpath=\"{.data.mariadb-root-password}\" | base64 --decode) \\\n --set mariadb.auth.password=$(kubectl get secret --namespace \"wordpress\" wordpress-mariadb -o jsonpath=\"{.data.mariadb-password}\" | base64 --decode)\u003c/code\u003e\u003c/pre\u003e\n\u003ch1 id=\"uninstall-instructions\"\u003eUninstall instructions\u003c/h1\u003e\n\u003cp\u003eYou can run the following command to uninstall WordPress.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e#!/bin/sh\n\nset -e\n\n################################################################################\n# chart\n################################################################################\nSTACK=\"wordpress\"\nNAMESPACE=\"wordpress\"\n\n\nhelm uninstall \"$STACK\" \\\n --namespace \"$NAMESPACE\"\n\nkubectl delete ns \"$NAMESPACE\"\u003c/code\u003e\u003c/pre\u003e\n\u003ch1 id=\"api-creation\"\u003eAPI Creation\u003c/h1\u003e\n\u003cp\u003eIn addition to creating a Droplet from the\u0026nbsp;WordPress\u0026nbsp;1-Click App via the control panel, you can also use the\u0026nbsp;\u003ca href=\"https://digitalocean.com/docs/api\"\u003eDigitalOcean API\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eAs an example, to create a 4GB\u0026nbsp;WordPress\u0026nbsp;Droplet in the SFO2 region, you can use the following curl command. You'll need to either save your\u0026nbsp;\u003ca href=\"https://docs.digitalocean.com/reference/api/create-personal-access-token/\"\u003eAPI access token\u003c/a\u003e\u0026nbsp;to an environment variable or substitute it into the command below.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ecurl -X POST -H 'Content-Type: application/json' \\\n -H 'Authorization: Bearer '$TOKEN'' -d \\\n '{\"name\":\"choose_a_name\",\"region\":\"sfo2\",\"size\":\"s-2vcpu-4gb\",\"image\":\"wordpress-20-04\"}' \\\n \"https://api.digitalocean.com/v2/droplets\"\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=smartarget-wordpresswoocomm","addonSlug":null,"imageLabel":"smartarget-wordpresswoocomm","imageId":154146708,"externalLabel":null,"additionalLinks":[],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"3CX","appId":"ed8bbfee8514d9db3856520e","developerId":"","safeName":["3cx"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/3cxcommunication-3cx.png","version":"20.0.3.806","osVersion":"Debian 12 (Bookworm)","tags":["Business Apps"],"support":{"url":"https://www.3cx.com","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[],"summary":"3CX is a business communications solution that offers companies of all sizes with a complete package for calls, video conferencing, live chat and messaging. It's open-platform, meaning you can choose from a variety of supported IP Phones and SIP Trunks that best suit your business needs.","description":"\u003cp\u003e3CX is a business communications solution that offers companies of all sizes with a complete package for calls, video and live chat, out of the box. With integrated video conferencing, apps for Android and iOS, website live chat, SMS, Facebook and WhatsApp messaging integration, 3CX boosts employee productivity and enhances the customer experience.\u003c/p\u003e\n\u003cp\u003e3CX is open-standards, allowing you to choose from a selection of supported IP Phones and SIP Trunks that best suit your business needs and budget. Installation, management and use of 3CX is extremely easy and straightforward saving you time on phone system management and maintenance.\u003c/p\u003e\n\u003cp\u003ePricing is based on the number of simultaneous calls you need, not on the number of users/extensions you have, which also knocks down the cost of ownership tremendously.\u003c/p\u003e\n\u003cp\u003eChoose between 3CX Dedicated PRO or Enterprise. Both come with their set of Unified Communications features all bundled in the initial price, so there are no hidden costs and extra add-ons.\u003c/p\u003e\n\u003cp\u003eYou can even try 3CX free! \u003ca href=\"https://www.3cx.com/signup/?src=domarketplace\" rel=\"noopener\" target=\"_blank\"\u003ehttps://www.3cx.com/signup/?src=domarketplace\u003c/a\u003e\u003c/p\u003e","gettingStarted":"\u003cp\u003eTo start the 3CX Installation Wizard, access the following URL after the droplet has been deployed: http://\u003cstrong\u003eDROPLET_PUBLIC_IP\u003c/strong\u003e:\u003cstrong\u003e5015\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e*Note: For security purposes, Port 22 (SSH) is not enabled in the default firewall created by the marketplace deployment. Should you need to access your instance via SSH, make sure you allow access to Port 22 from your IP. *\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=3cxcommunication-3cx","addonSlug":null,"imageLabel":"3cxcommunication-3cx","imageId":167455685,"externalLabel":null,"additionalLinks":[],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"Supabase","appId":"598f0628b239a5f7d77d5867","developerId":"","safeName":["supabase"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/supabase.svg","version":"3.8","osVersion":"Ubuntu 22.04","tags":["Developer Tools"],"support":{"url":"https://supabase.com/dashboard/support/new","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Supabase studio","version":"0.23.06","website":"","releaseNotes":"","licenseLink":"https://github.com/supabase/supabase/blob/master/LICENSE","licenseType":"Apache 2","__typename":"CustomSoftware"},{"name":"Kong","version":"2.8.1","website":"","releaseNotes":"","licenseLink":"https://github.com/Kong/kong/blob/master/LICENSE","licenseType":"Apache 2","__typename":"CustomSoftware"},{"name":"Supabase auth","version":"2.62.1","website":"","releaseNotes":"","licenseLink":"https://github.com/supabase/gotrue/blob/master/LICENSE","licenseType":"MIT","__typename":"CustomSoftware"},{"name":"Postgre","version":"11.1","website":"","releaseNotes":"","licenseLink":"https://github.com/PostgREST/postgrest/blob/main/LICENSE","licenseType":"MIT","__typename":"CustomSoftware"},{"name":"Realtime","version":"2.10.1","website":"","releaseNotes":"","licenseLink":"https://github.com/supabase/realtime/blob/main/LICENSE","licenseType":"Apache 2","__typename":"CustomSoftware"},{"name":"Storage","version":"0.40.4","website":"","releaseNotes":"","licenseLink":"https://github.com/supabase/storage-api/blob/master/LICENSE","licenseType":"Apache 2","__typename":"CustomSoftware"},{"name":"Postgres Meta","version":"0.66.3","website":"","releaseNotes":"","licenseLink":"https://github.com/supabase/postgres-meta/blob/master/LICENSE","licenseType":"Apache 2","__typename":"CustomSoftware"},{"name":"PostgreSQL","version":"15.1.0.90","website":"","releaseNotes":"","licenseLink":"https://www.postgresql.org/about/licence/","licenseType":"Postgre","__typename":"CustomSoftware"}],"summary":"Supabase is an open source Firebase alternative.","description":"\u003cp\u003eStart your project with a Postgres database, Authentication, instant APIs, Edge Functions, Realtime subscriptions, Storage, and Vector embeddings.\u003c/p\u003e","gettingStarted":"\u003cp\u003ePlease wait about 10 minutes after droplet is created, docker containers initialisation requires some time. After ssh is enabled droplet is ready to use. \u003c/p\u003e\n\u003cp\u003eOn your first \u003ca href=\"https://docs.digitalocean.com/products/droplets/how-to/connect-with-ssh/\"\u003eSSH login to the droplet\u003c/a\u003e or launch of the Droplet console of your Supabase Droplet 1-Click, you will be greeted by a Supabase setup script.\u003c/p\u003e\n\u003cp\u003eThe first step is to enter your domain name. Make sure that your domain is pointing to the new droplet IP.\u003c/p\u003e\n\u003cp\u003eThe DNS Host may be the same company you registered the domain with or another entity you designate. To connect your DNS hosting to DigitalOcean, check out \u003ca href=\"https://docs.digitalocean.com/tutorials/dns-registrars/\"\u003ethis guide\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eOnce your A record is set up, you are ready to enter your domain in the script. \u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eNext, the script will ask your email.\u003c/p\u003e\n\u003cp\u003eThe script will configure HTTPS automatically for your droplet. We highly recommend setting HTTPS since using a domain is useless without it.\u003c/p\u003e\n\u003cp\u003eSupabase will be available in a few minutes after. For accessing the supabase in your browser, use https://%YOUR_DOMAIN%.\u003c/p\u003e\n\u003cp\u003eIf you cancel entering domain, you can retry after next login. Before domain setup is complete, supabase application is accessible by IP - https://%DROPLET_IP%\u003c/p\u003e\n\u003cp\u003eSupabase login and password are located in \u003ccode\u003e/srv/supabase/supabase/docker/.env\u003c/code\u003e file, last two lines. Login into droplet using ssh and check login \u0026amp; password\u003c/p\u003e\n\u003ch1 id=\"getting-started-with-supabase\"\u003eGetting started with Supabase\u003c/h1\u003e\n\u003cp\u003eSupabase documentation is great, spend some time to check out - \u003ca href=\"https://supabase.com/docs\"\u003ehttps://supabase.com/docs\u003c/a\u003e, you can start from \u003ca href=\"https://supabase.com/docs/guides/getting-started\"\u003ehttps://supabase.com/docs/guides/getting-started\u003c/a\u003e\u003c/p\u003e\n\u003ch1 id=\"protect-your-supabase-data-with-snapshooter\"\u003eProtect your Supabase data with SnapShooter\u003c/h1\u003e\n\u003cp\u003e\u003ca href=\"https://marketplace.digitalocean.com/add-ons/snapshooter\"\u003eSnapShooter\u003c/a\u003e, an offering from DigitalOcean, offers comprehensive backup solutions for all your cloud resources, including your Supabase application data. To access \u003ca href=\"https://marketplace.digitalocean.com/add-ons/snapshooter\"\u003eSnapShooter\u003c/a\u003e, navigate to the left-hand navigation menu in your DigitalOcean cloud console. As part of the free tier, you can back up a single resource, such as your Supabase application data.\u003c/p\u003e\n\u003cp\u003eTo back up your Supabase application, start by installing the SnapShooter add-on to your DigitalOcean account. Next, do a single sign-on to access the SnapShooter console, where you can add a target storage solution, such as Spaces, and create a new backup job. From there, select your Supabase application as the recipe, and choose your preferred backup policy. Follow our step-by-step \u003ca href=\"https://www.youtube.com/watch?v=9NYqzeWEnAY\"\u003evideo\u003c/a\u003e or \u003ca href=\"https://docs.digitalocean.com/developer-center/easy-web-application-back-ups-with-snapshooter/\"\u003eblog tutorial\u003c/a\u003e to get this working today.\u003c/p\u003e\n\u003cp\u003eWith SnapShooter, you can restore your Supabase application and its data to another server, whether it's within DigitalOcean or another location, in case of a disaster or migration. Keep in mind that your Spaces/S3 usage will incur charges from your cloud provider.\u003c/p\u003e\n\u003cp\u003eProtect your Supabase data with SnapShooter's reliable and straightforward backup solutions today.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=supabase","addonSlug":null,"imageLabel":"supabase","imageId":146095122,"externalLabel":null,"additionalLinks":[{"name":"Source code","url":"https://github.com/digitalocean/droplet-1-clicks/tree/master/supabase-22-04","description":"Packer scripts that were used to build this 1-Click App","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"SnapShooter","appId":"107","developerId":"36","safeName":["snapshooter"],"created":1639599291000,"type":"saas","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://mp-saas-service.nyc3.digitaloceanspaces.com/vendor_media/8a0efd56-c370-41b2-8283-0dacd4703eb3.svg","version":"","osVersion":"","tags":["Business Apps","Add-Ons"],"support":{"url":"","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":null,"summary":"Easy, frequent and customizable cloud backups\n","description":"\u003cp\u003eSnapShooter, \u003ca href=\"https://www.digitalocean.com/blog/digitalocean-acquires-snapshooter\"\u003enow a part of DigitalOcean\u003c/a\u003e is a simple, fast and flexible cloud backup solution that helps protect data across cloud workloads - Droplets, volumes, files, apps and databases. With just a few clicks, you can get SnapShooter integrated into your DigitalOcean workflows and set up your backups seamlessly.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eKey features\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cp\u003eBackup all your modern cloud resources- virtual machines, volumes, popular applications and managed databases from -\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigitalOcean and other cloud providers. \u003c/li\u003e\n\u003cli\u003eSelf-hosted databases\u003c/li\u003e\n\u003cli\u003eFile system and S3 compatible object store\u003c/li\u003e\n\u003cli\u003eContainers (Docker volumes and databases, Custom backup for managed containers)\u003c/li\u003e\n\u003cli\u003eCloudways apps\u003c/li\u003e\u003c/ul\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eBackup private resources (behind a NAT gateway) using SnapShooter Agent\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eChoose your backup frequency (5-mins\u003cem\u003e, hourly\u003c/em\u003e, daily, weekly \u0026amp; monthly, or on-demand), and schedule them for when you want to run them\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eServerless backup option for managed databases and S3 replications, when you do not want to run your own server for backup jobs.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eSecure Encryption for your backups\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eDisaster recovery\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eReal-time logs, monitoring, and notifications\u003c/p\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e**\u003cem\u003e5 minute and hourly backups are not available for DigitalOcean Droplets. The minimum interval for Droplet backup is daily.\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eSnapshooter has taken more than 9 million DigitalOcean snapshots! Hear what our customers have to say about us\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e“Siebird has trusted SnapShooter to back up and protect our client websites for over 2.5 years. We host all our client websites on DigitalOcean. From the beginning, SnapShooter stood out from the rest with how effortless it has made configuring backups. We have peace of mind knowing our client websites are protected and can be restored with a click of a button.”\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eSiebird, a web design and digital marketing agency\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eWebspec has been utilizing SnapShooter for our backups for about a year now, and it has relieved so much stress from our team. We know that backups are being taken, and on the off chance that they fail for some reason, we know that they’ve failed through the integrated Slack and email notifications. Prior to using SnapShooter, when our development staff would request a backup a pang of anxiety would shoot through us because we were never 100% sure backups had completed successfully. The SnapShooter team has also been an absolute pleasure to work with; we’ve had very few issues, and they were always able to get them resolved or get us a better solution within 24 hours. Moving from our custom solution to SnapShooter was also a breeze. We were able to set up approximately 200 servers across two weeks, with the majority of the time going towards testing to ensure it all worked properly (spoiler alert: it did, even without intervention from us).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eWebspec Design LLC\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\"We’ve been using SnapShooter for our database backups since 2021, after switching from a self-built solution. We use it to backup both our DigitalOcean managed and self-managed Postgres databases to DigitalOcean Spaces. Since using SnapShooter, we’ve had a lot of peace-of-mind knowing that we have reliable and historic backups that just work. The reporting feature is also really helpful for us. Overall, we love SnapShooter because it provides us with the features and reliability we need to ensure our business data is always safe and secure.\"\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDatacake.io | Lukas Klein- CTO \u0026amp; Founder\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eSnapShooter is an absurdly well-made product that I have been using for months to backup a whole range of things, from MySQL to servers and DigitalOcean and AWS to my code at GitHub. The UI is great for understanding and helping you get your backups set, and it made the whole process a joy. All my backups are actively monitored, and data is now safely backed up to my own AWS S3 account.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eKalzumeus Software | Patrick McKenzie, Founder\u003c/strong\u003e\u003c/p\u003e","gettingStarted":"","createApp":"","addonSlug":null,"imageLabel":"","imageId":null,"externalLabel":null,"additionalLinks":null,"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"GitLab Enterprise Edition","appId":"5c76e3e2d6ac503fd2f78642","developerId":"","safeName":["gitlab-enterprise-edition"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/gitlab-gitlabenterprise-20-04.svg","version":"Latest","osVersion":"Ubuntu 22.04","tags":["Developer Tools"],"support":{"url":"https://forum.gitlab.com/","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"GitLab EE","version":"Latest","website":"","releaseNotes":"https://gitlab.com/gitlab-org/gitlab/-/releases","licenseLink":"https://gitlab.com/gitlab-org/gitlab-ee/blob/master/LICENSE","licenseType":"custom","__typename":"CustomSoftware"}],"summary":"Deploy GitLab Enterprise Edition, a single application for the entire software development lifecycle, to a DigitalOcean Droplet for SCM, CI/CD, project management, and security.","description":"\u003cp\u003eShorten development cycles and innovate faster with reliability through DevOps automation. \u003ca href=\"https://www.youtube.com/watch?v=68rGlAihKFw\" rel=\"noopener\" target=\"_blank\"\u003eGitLab\u003c/a\u003e is a single application that provides end-to-end DevOps solutions ranging from Source Code Management, Continuous Integration and Delivery, Security with Monitoring, as well as rich project management features to development teams across the enterprise. With this marketplace listing, you get source code management, built-in CI/CD, project tracking functionality, and much more for free. Unlock additional features like security and monitoring with \u003ca href=\"https://about.gitlab.com/pricing/gitlab-com/feature-comparison/\" rel=\"noopener\" target=\"_blank\"\u003eEnterprise Edition\u003c/a\u003e without the need of setting up a new Droplet. Simply scale up your instance and apply your license key purchased online \u003ca href=\"https://about.gitlab.com/pricing/\" rel=\"noopener\" target=\"_blank\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote: 4GB of RAM is the required minimum memory size to run this app. It supports up to 500 users. You can read more about system requirements \u003ca href=\"https://docs.gitlab.com/ee/install/requirements.html#hardware-requirements\" rel=\"noopener\" target=\"_blank\"\u003ehere\u003c/a\u003e.\u003c/strong\u003e\u003c/p\u003e","gettingStarted":"\u003cp\u003e\u003cstrong\u003ePlease note\u003c/strong\u003e: It can take up to 10 mins till after Droplet creation for Gitlab to be functional.\u003c/p\u003e\n\u003cp\u003eOn your first visit to the Droplet's IP address, you'll be redirected to a password reset screen. Provide the password for the initial administrator account and you will be redirected back to the login screen. Use the default account's username root to login.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://docs.gitlab.com/ee/intro/\"\u003eClick here\u003c/a\u003e to learn how to get started with GitLab.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=gitlab-gitlabenterprise-20-04","addonSlug":null,"imageLabel":"gitlab-gitlabenterprise-20-04","imageId":148477604,"externalLabel":null,"additionalLinks":[],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"Anaconda","appId":"ea4c4f465551ed7fefc86a73","developerId":"","safeName":["anaconda"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/sharklabs-anaconda.png","version":"2024.10-1","osVersion":"Ubuntu 22.04 (LTS)","tags":["Data Science"],"support":{"url":"https://www.anaconda.com/support","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Anaconda","version":"2023.09-0","website":"","releaseNotes":"","licenseLink":"https://legal.anaconda.com/policies/en/?name=terms-of-service","licenseType":"Non-Commericial Use Only","__typename":"CustomSoftware"}],"summary":"Anaconda® Distribution is a simple and powerful platform for data science. It combines essential Python and R tools in one place, making it easy to manage packages, analyze data, and create machine learning models.","description":"\u003ch1 id=\"anaconda®-distribution\"\u003eAnaconda® Distribution\u003c/h1\u003e\n\u003cp\u003eAnaconda® Distribution is a powerful platform for streamlined data science, featuring essential tools for Python and R programming. Whether you\u0026#39;re a seasoned data professional or just starting your data journey, Anaconda simplifies package management, data analysis, and machine learning model development within a unified and accessible environment.\u003c/p\u003e\n\u003ch2 id=\"key-features\"\u003eKey Features\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eEffortless Package Management:\u003c/strong\u003e Simplify library management with Anaconda\u0026#39;s conda package manager, ensuring consistent dependencies.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eRobust Data Analysis and Visualization:\u003c/strong\u003e Explore and visualize datasets efficiently with Anaconda\u0026#39;s rich set of data science libraries.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eStreamlined Machine Learning Workflow:\u003c/strong\u003e Accelerate machine learning development using popular frameworks and tools seamlessly integrated into Anaconda.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eUser-Friendly Interface:\u003c/strong\u003e Navigate complexities with ease. Anaconda\u0026#39;s interface is designed for both beginners and experienced practitioners.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eCommunity and Support:\u003c/strong\u003e Join a vibrant community for collaborative knowledge-sharing. Access a wealth of resources, tutorials, and support to enhance your skills.\u003c/p\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eExperience the power of Anaconda with a single click using the Droplet 1-Click deployment. The Anaconda® Distribution Droplet allows you to instantly access the full capabilities of Anaconda, eliminating the need for complex installations. Launch your data science and machine learning projects seamlessly, now just a click away.\u003c/p\u003e","gettingStarted":"\u003ch2 id=\"before-you-deploy\"\u003eBefore You Deploy\u003c/h2\u003e\n\u003cp\u003eBefore deploying this Droplet, consider the following guidance to ensure you choose the right configuration for your needs:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cp\u003eDroplet Size: Depending on your data processing requirements, select a Droplet size that offers sufficient CPU, memory, and storage resources. Consider the complexity and scale of your projects when making this decision.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eVolume: If you anticipate working with large datasets or require additional storage, it is recommended to attach a Volume to your Droplet. This will provide you with the necessary space to store and access your data conveniently.\u003c/p\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1 id=\"getting-started-with-anaconda\"\u003eGetting Started with Anaconda\u003c/h1\u003e\n\u003cp\u003eCongratulations on successfully installing Anaconda! Now that you have the powerful data science platform at your fingertips, let's get started with some essential steps to make the most out of your Anaconda installation.\u003c/p\u003e\n\u003ch2 id=\"1-update-conda-and-anaconda-navigator\"\u003e1. Update Conda and Anaconda Navigator\u003c/h2\u003e\n\u003cp\u003eEnsure that your Anaconda tools are up to date. Open a terminal and run the following commands:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003econda update conda\nconda update anaconda-navigator\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThis will ensure you have the latest versions and bug fixes.\u003c/p\u003e\n\u003ch2 id=\"2-create-and-activate-a-virtual-environment\"\u003e2. Create and Activate a Virtual Environment\u003c/h2\u003e\n\u003cp\u003eCreate a virtual environment to manage your project dependencies. Replace \u003ccode\u003emyenv\u003c/code\u003e with your preferred environment name.\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003econda create --name myenv\nconda activate myenv\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThis isolates your project from the global Python environment, preventing potential conflicts.\u003c/p\u003e\n\u003ch2 id=\"3-install-jupyter-notebooks\"\u003e3. Install Jupyter Notebooks\u003c/h2\u003e\n\u003cp\u003eJupyter Notebooks are a fantastic way to create and share live code, equations, visualizations, and narrative text. Install it with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003econda install jupyter\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eTo be able to manage Jupyter Notebooks remotely, create jupyter_notebook_config.py file if it does not exist under ~/.jupyter directory by running the following command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003ejupyter notebook --generate-config\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eEdit the following lines on your jupyter_notebook_config.py file:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003e #The IP address the notebook server will listen on.\nc.ServerApp.ip = '0.0.0.0' # default value is 'localhost'\n\n# Whether to open in a browser after starting.\nc.ServerApp.open_browser = False\n# If you want to run jupyter notebook command as root\nc.ServerApp.allow_root = True\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eStart a new Jupyter Notebook with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003ejupyter notebook\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eTo connect to the Jupyter Notebook server from your browser allow the required ports in the firewall by running the following commands:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003eufw allow 8888/tcp\nufw allow 8889/tcp\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOnce you see the following message, connect to the server using the server URL\u003c/p\u003e\n\u003cblockquote\u003e\n \u003cp\u003eTo access the server, open this file in a browser:\u003cbr\u003e\n file:///root/.local/share/jupyter/runtime/jpserver-22627-open.html\u003cbr\u003e\n Or copy and paste one of these URLs:\u003cbr\u003e\n http://anaconda2023090onubuntu2204lts-s-2vcpu-4gb-120gb-intel-sfo3-01:8889/tree?token=2641aecf9907b6b5fec09059be84bb0014abdc3e1424832d\u003cbr\u003e\n \u003ca href=\"http://127.0.0.1:8889/tree?token=2641aecf9907b6b5fec09059be84bb0014abdc3e1424832d\"\u003ehttp://127.0.0.1:8889/tree?token=2641aecf9907b6b5fec09059be84bb0014abdc3e1424832d\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eConnect to the server using the following URL\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003ehttp://{YOUR_DROPLET_IP}:8889/tree?token={YOUR_TOKEN}\u003c/code\u003e\u003c/pre\u003e\n\u003ch2 id=\"4-explore-anaconda-navigator\"\u003e4. Explore Anaconda Navigator\u003c/h2\u003e\n\u003cp\u003eAnaconda Navigator provides a graphical interface to manage your packages, environments, and applications. Launch it by running:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003eanaconda-navigator\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eExplore the Navigator to manage your environments, install packages, and launch applications like Jupyter Notebooks and Spyder.\u003c/p\u003e\n\u003ch2 id=\"5-install-additional-packages\"\u003e5. Install Additional Packages\u003c/h2\u003e\n\u003cp\u003eAnaconda includes many essential packages, but you may need additional ones for your projects. Use \u003ccode\u003econda install\u003c/code\u003e to install packages. For example:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003econda install numpy pandas matplotlib\u003c/code\u003e\u003c/pre\u003e\n\u003ch2 id=\"6-join-the-anaconda-community\"\u003e6. Join the Anaconda Community\u003c/h2\u003e\n\u003cp\u003eConnect with the \u003ca href=\"https://community.anaconda.com/\"\u003eAnaconda Community\u003c/a\u003e to get help, share knowledge, and stay updated on the latest developments. Visit the community to join discussions, ask questions, and explore tutorials.\u003c/p\u003e\n\u003cp\u003eFor more detailed information, refer to the \u003ca href=\"https://docs.anaconda.com/\"\u003eAnaconda Reference Guide\u003c/a\u003e.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=sharklabs-anaconda","addonSlug":null,"imageLabel":"sharklabs-anaconda","imageId":168563587,"externalLabel":null,"additionalLinks":[{"name":"Anaconda","url":"https://www.anaconda.com/","description":"Anaconda Website","__typename":"AdditionalLink"},{"name":"Anaconda Documentation","url":"https://docs.anaconda.com/","description":"The official documentation provides guides, tutorials, and troubleshooting information.","__typename":"AdditionalLink"},{"name":"Anaconda Community Forum","url":"https://community.anaconda.com/","description":"Join discussions, ask questions, and seek help from the Anaconda community.","__typename":"AdditionalLink"},{"name":"Anaconda Support","url":"https://www.anaconda.com/support","description":"If you have a commercial subscription or Enterprise Use-case, you can access Anaconda's support services","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"Ghost","appId":"5ba19753fc53b8179c7a0076","developerId":"","safeName":["ghost"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/ghost-20-04.svg","version":"latest","osVersion":"Ubuntu 22.04","tags":["Blogs and Forums"],"support":{"url":"https://ghost.org/","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Ghost","version":"latest","website":"","releaseNotes":"https://github.com/TryGhost/Ghost/releases/latest","licenseLink":"https://github.com/TryGhost/Ghost/blob/master/LICENSE","licenseType":"MIT","__typename":"CustomSoftware"},{"name":"Nginx","version":"1.18.0","website":"","releaseNotes":"http://nginx.org/en/CHANGES-1.18","licenseLink":"http://nginx.org/LICENSE","licenseType":"Custom","__typename":"CustomSoftware"},{"name":"MySQL server","version":"8.0.29","website":"","releaseNotes":"https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-23.html","licenseLink":"https://www.mysql.com/about/legal/licensing/oem/","licenseType":"GPL 2 with modifications","__typename":"CustomSoftware"},{"name":"Node.js","version":"18.x","website":"","releaseNotes":"https://nodejs.org/en/download/","licenseLink":"https://github.com/nodejs/node/blob/master/LICENSE","licenseType":"Custom","__typename":"CustomSoftware"}],"summary":"Ghost is a fully open source, adaptable platform for building and running a modern online publication. It powers blogs, magazines and journalists from Zappos to Sky News.","description":"\u003cp\u003eGhost is a fully open source, adaptable platform for building and running a modern blog or publication. The Ghost 1-Click App allows you to self-host your own Ghost instance up and running in two minutes.\u003c/p\u003e\n\u003cp\u003eIf you would like Ghost to manage your blog for you instead, the Ghost Pro plans start at just $9 \u003ca href=\"https://ghost.org/pricing/?utm_source=DigitalOcean\u0026amp;utm_campaign=Marketplace\" rel=\"noopener\" target=\"_blank\"\u003ehttps://ghost.org/pricing/\u003c/a\u003e. Read more at \u003ca href=\"https://ghost.org/?utm_source=DigitalOcean\u0026amp;utm_campaign=Marketplace\" rel=\"noopener\" target=\"_blank\"\u003ehttps://ghost.org\u003c/a\u003e.\u003c/p\u003e","gettingStarted":"\u003cp\u003eYou’ll need a registered domain name to finish completing the Ghost setup. We recommend setting up an A record from the domain (e.g., \u003ccode\u003eexample.com\u003c/code\u003e) to the server’s IP address.\u003c/p\u003e\n\u003cp\u003eAfter the Ghost One-Click Droplet is created and the domain and DNS records are set up, you’ll need to log into the Ghost Droplet to complete its setup. From a terminal on your local computer, connect to the Droplet as \u003ccode\u003eroot\u003c/code\u003e. Make sure to substitute the IP address of the Droplet.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003essh root@use_your_droplet_ip\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eAs soon as you log in, the Droplet will automatically make sure it’s running the most recent version of Ghost, and will prompt you to press \u003ccode\u003eENTER\u003c/code\u003e to finalize the setup.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eEnsuring Ghost-CLI is up-to-date…\n…\n\nGhost will prompt you for two details:\n\nYour domain\nAdd an A Record -\u0026gt; your_droplet_ip \u0026amp; ensure DNS has fully propagated\nOr alternatively enter http://your_droplet_ip\nYour email address (only used for SSL)\nPress enter when you’re ready to get started!\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eFollow the installation prompts to configure Ghost.\u003c/p\u003e\n\u003cp\u003eAs soon as you’re done, make sure to configure the admin user using the administrative interface at \u003ccode\u003ehttp://use_your_droplet_ip/ghost\u003c/code\u003e (making sure to substitute the Droplet’s IP address in the URL). Until you configure the admin user, anyone who discovers the site can configure the administrative user, take control of the Ghost site, and potentially take control of the Droplet.\u003c/p\u003e\n\u003cp\u003eOnce the installation and setup is fully complete, you can access the new Ghost site by visiting the Droplet IP address in your browser.\u003c/p\u003e\n\u003cp\u003eTo upgrade or maintain the Ghost install in future, you’ll always have to become the \u003ccode\u003eghost-mgr\u003c/code\u003e user in order to have the correct permissions:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"command language-command\"\u003esudo -i -u ghost-mgr\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eAfter that, all tasks can be completed with the Ghost-CLI tool. Run \u003ccode\u003eghost help\u003c/code\u003e for an overview of available commands, or \u003ca href=\"https://ghost.org/docs/ghost-cli\"\u003echeck out the Ghost-CLI docs\u003c/a\u003e for full details.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=ghost-20-04","addonSlug":null,"imageLabel":"ghost-20-04","imageId":162312929,"externalLabel":null,"additionalLinks":[],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"Jitsi Server","appId":"5e8d0315207c0a569f482adb","developerId":"","safeName":["jitsi-server"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/jitsiserver-20-04.svg","version":"Latest","osVersion":"Ubuntu 22.04","tags":["Media"],"support":{"url":"https://github.com/digitalocean/droplet-1-clicks/issues","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Jitsi Server","version":"Latest","website":"","releaseNotes":"","licenseLink":"https://github.com/jitsi/jitsi/blob/master/LICENSE","licenseType":"Apache 2.0","__typename":"CustomSoftware"},{"name":"NGINX","version":"1.18.0","website":"","releaseNotes":"","licenseLink":"http://nginx.org/LICENSE","licenseType":"NGINX License","__typename":"CustomSoftware"},{"name":"Fail2ban","version":"0.11.2","website":"","releaseNotes":"","licenseLink":"https://opensource.org/licenses/gpl-2.0.php","licenseType":"GPL-2","__typename":"CustomSoftware"}],"summary":"Jitsi is an open source app for videoconferencing and chat. Works with Windows, Linux, Mac OS X and Android clients.","description":"\u003cp\u003eJitsi is an open source app for videoconferencing and chat. Works with Windows, Linux, Mac OS X and Android clients.\u003c/p\u003e\n\u003cp\u003eDroplets created by using this image allow videoconferencing between Windows, Mac, Linux, Android and iOS users, just requiring to open a new browser tab on laptops/desktops or to install the Jitsi app from the Play Store/App Store on mobile.\u003c/p\u003e\n\u003cp\u003eThis is a pre-configured image with pre-configured dependencies. You\u0026#39;ll only need a domain and we provide the scripts for an effortless setup with HTTPS enabled for secure communication with your team.\u003c/p\u003e","gettingStarted":"\u003ch1 id=\"configure-jitsi\"\u003eConfigure Jitsi\u003c/h1\u003e\n\u003ch2 id=\"step-1\"\u003eStep 1\u003c/h2\u003e\n\u003cp\u003eCreate a droplet from the image available in the Marketplace.\u003c/p\u003e\n\u003cp\u003eWe recommend using \u003ca href=\"https://www.digitalocean.com/blog/introducing-premium-cpu-optimized-droplets\"\u003ePremium-CPU Optimized Droplets\u003c/a\u003e for production deployment. Please review \u003ca href=\"https://docs.digitalocean.com/developer-center/video-streaming-on-premium-cpu-optimized-droplets/\"\u003ethis benchmark analysis and tutorial\u003c/a\u003e for running your own performance test and benchmark comparison data.\u003c/p\u003e\n\u003ch2 id=\"step-2\"\u003eStep 2\u003c/h2\u003e\n\u003cp\u003eBefore accessing the fresh droplet, add a domain to your project. This is required because most browsers require HTTPS in order to allow you to use the camera and microphone in a website, and it's not possible to enable HTTPS just with an IP.\u003c/p\u003e\n\u003cp\u003eHere's an excellent guide to do that: \u003ca href=\"https://www.digitalocean.com/docs/networking/dns/how-to/add-domains/\"\u003ehttps://www.digitalocean.com/docs/networking/dns/how-to/add-domains/\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eIt is mandatory to add an A record (i.e. jitsi-example.digitalocean.com) pointing to the IP associated with your droplet.\u003c/p\u003e\n\u003ch2 id=\"step-3\"\u003eStep 3\u003c/h2\u003e\n\u003cp\u003eAccess the console (i.e via ssh by running \u003ccode\u003essh root@123.456.789\u003c/code\u003e). We have created a single script to configure Jitsi in a very straightforward way so please follow the instructions displayed in the terminal. During the first boot you'll be asked to include your domain and your email shall be asked in order to create the HTTPS certificates. You'll be notified when it's time to renew the certificates and maintain your website with a secure connection.\u003c/p\u003e\n\u003cp\u003eHere's an excellent guide if you have questions with respect to HTTPS and encryption: \u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-18-04\"\u003ehttps://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-18-04\u003c/a\u003e\u003c/p\u003e\n\u003ch2 id=\"step-4-optional\"\u003eStep 4 (Optional)\u003c/h2\u003e\n\u003cp\u003eYou can optionally add a password to control who can create a meeting. If you want to restrict that, edit \u003ccode\u003enano /etc/prosody/conf.avail/jitsi-example.digitalocean.com.cfg.lua\u003c/code\u003e. There, look for the line that starts with \u003ccode\u003eVirtualHost\u003c/code\u003e, below it, there is a line that says \u003ccode\u003eauthentication = \"anonymous\"\u003c/code\u003e, it should be changed to \u003ccode\u003eauthentication = \"internal_plain\"\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eAfter you saved the authentication changes, you can set one or more Jitsi users that will be able to create a meeting after providing a password. This can be configured with the command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eprosodyctl register the-user jitsi-example.digitalocean.com the-password\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eTo allow users entering the videoconferences without providing them the user and password just created, go back to edit \u003ccode\u003e/etc/prosody/conf.avail/jitsi-example.digitalocean.com.cfg.lua\u003c/code\u003e and at the end of the file paste these lines:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eVirtualHost \"guest.jitsi-example.digitalocean.com\"\n authentication = \"anonymous\"\n c2s_require_encryption = false\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eEdit \u003ccode\u003e/etc/jitsi/meet/jitsi-example.digitalocean.com-config.js\u003c/code\u003e and uncomment the line that says:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e// anonymousdomain: 'guest.jitsi-example.digitalocean.com',\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eEdit \u003ccode\u003e/etc/jitsi/jicofo/jicofo.conf\u003c/code\u003e by switching to a configuration like this\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ejicofo {\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e xmpp: {\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e client: {\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e client-proxy: focus.jitsi-example.digitalocean.com\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e }\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e trusted-domains: [ \"recorder.\u003c/code\u003e\u003ccode\u003e\u003ccode\u003ejitsi-example.digitalocean.com\u003c/code\u003e\" ]\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e }\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e bridge: {\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e brewery-jid: \"JvbBrewery@internal.auth.\u003c/code\u003e\u003ccode\u003e\u003ccode\u003ejitsi-example.digitalocean.com\u003c/code\u003e\"\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e }\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e authentication: {\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e enabled: true\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e type: XMPP\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e login-url:\u003c/code\u003e\u003ccode\u003ejitsi-example.digitalocean.com\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e }\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e}\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThis shall enable users to enter the conference with and URL or the URL and a plain password that can be configured in the browser and is the same for all users. See \u003ca href=\"https://community.jitsi.org/t/enable-password-for-rooms/19881\"\u003eJitsi documentation\u003c/a\u003e for the details.\u003c/p\u003e\n\u003cp\u003eFinally restart the services by typing:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003esystemctl restart {prosody,jicofo,jitsi-videobridge2,nginx}\u003c/code\u003e\u003c/pre\u003e\n\u003ch1 id=\"use-jitsi\"\u003eUse Jitsi\u003c/h1\u003e\n\u003cp\u003eConnect to the host via the hostname you set up in the earlier. Just open a browser tab and visit \u003ca href=\"https://my.openchannel.io/dashboard/5aea4b79fd67b63c867a949a/apps/5e8d0315207c0a569f482adb/versions/jitsi-example.digitalocean.com\"\u003ejitsi-example.digitalocean.com\u003c/a\u003e (i.e. the domain that you previously configured).\u003c/p\u003e\n\u003ch1 id=\"good-practices\"\u003eGood practices\u003c/h1\u003e\n\u003col\u003e\n\u003cli\u003eIt is highly recommended that you don't disable the firewall.\u003c/li\u003e\n\u003cli\u003eKeep your server updated with the last security patches and recent software versions.\u003c/li\u003e\n\u003cli\u003e(Optional) Use SSH keys instead of typed passwords to enter your server via SSH. See the details here: \u003ca href=\"https://www.digitalocean.com/docs/droplets/how-to/add-ssh-keys/\"\u003ehttps://www.digitalocean.com/docs/droplets/how-to/add-ssh-keys/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(Optional) Configure an application such as Google Authenticator to provide a dynamic additional password for SSH access. See the details here: \u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-protect-ssh-with-two-factor-authentication\"\u003ehttps://www.digitalocean.com/community/tutorials/how-to-protect-ssh-with-two-factor-authentication\u003c/a\u003e\u003c/li\u003e\n\u003c/ol\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=jitsiserver-20-04","addonSlug":null,"imageLabel":"jitsiserver-20-04","imageId":131012090,"externalLabel":null,"additionalLinks":[],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"Appwrite","appId":"602d1f2d0382513dbea0b039","developerId":"","safeName":["appwrite"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/appwrite-20-04.svg","version":"1.5","osVersion":"Ubuntu 22.04","tags":["Developer Tools"],"support":{"url":"https://appwrite.io","email":"team@appwrite.io","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Appwrite","version":"1.5","website":"","releaseNotes":"https://github.com/appwrite/appwrite/releases","licenseLink":"https://github.com/appwrite/appwrite/blob/master/LICENSE","licenseType":"BSD 3-Clause","__typename":"CustomSoftware"}],"summary":"Appwrite is an open-source backend as a service for web, mobile and Flutter developers.","description":"\u003cp\u003e\u003ca href=\"https://appwrite.io\" rel=\"noopener\" target=\"_blank\"\u003eAppwrite\u003c/a\u003e is a secure, open-source backend that abstracts the complexity of common, complex, and repetitive tasks required for building a modern app.\u003c/p\u003e\n\u003cp\u003eAppwrite provides you with a set of secure APIs, tools, and a management console UI to help you build your apps quickly without compromising security. Use Appwrite to add user authentication and management, data and file storage, run server-side code, image manipulation, localization, and more into your apps.\u003c/p\u003e\n\u003cp\u003eAppwrite adapts to your unique habits and needs. You can integrate Appwrite directly with your client app or use it alongside your existing backend server, using the language and technologies you\u0026#39;re most comfortable with.\u003c/p\u003e","gettingStarted":"\u003cp\u003eOnce the deployment is complete, you can access Appwrite in your browser using the IP address of the droplet. However, below are some recommended setups before accessing appwrite.\u003c/p\u003e\n\u003ch3 id=\"get-a-domain-name-recommended\"\u003e\u003cstrong\u003eGet a domain name (Recommended)\u003c/strong\u003e\u003c/h3\u003e\n\u003cp\u003eUse this\u0026nbsp;\u003ca href=\"https://docs.digitalocean.com/products/networking/dns/quickstart/\"\u003eDNS quickstart\u003c/a\u003e\u0026nbsp;guide to get your DNS setup on DigitalOcean. You’ll first need to purchase and register your domain through a third party, such as Name.com, GoDaddy, etc.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eWhy do you need a domain name?\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eYou can access your Appwrite server using a secured SSL connection with the domain correctly set up. You can, however, still access your server using the IP address. We still recommend having a valid domain.\u003c/p\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"set-up-smtp-recommended\"\u003e\u003cstrong\u003eSet up SMTP (Recommended)\u003c/strong\u003e\u003c/h3\u003e\n\u003cp\u003eIf you want to use the emailing service of Appwrite, you’ll need to get SMTP credentials for sending emails. This can be from an email delivery service like SparkPost,\u0026nbsp;\u003ca href=\"https://marketplace.digitalocean.com/apps/sendgrid\"\u003eSendgrid\u003c/a\u003e, Mailgun, etc. Using this \u003ca href=\"https://appwrite.io/docs/email-delivery\"\u003eemail delivery guide\u003c/a\u003e; you can easily set up your email provider to work with Appwrite.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eWhy do you need SMTP?\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eAppwrite uses SMTP to send verification emails to users signing up for your project, send emails for URL-based login, and use email to reset passwords for console admin and project users. Without enabling an SMTP provider, you won’t be able to use email verification or magic URL login in your applications.\u003c/p\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"connect-to-object-storage-digitalocean-spaces-wasabi-linode-backblaze-or-aws-s3-optional\"\u003e\u003cstrong\u003eConnect to Object Storage (DigitalOcean Spaces, Wasabi, Linode, Backblaze, or AWS S3) (Optional)\u003c/strong\u003e\u003c/h3\u003e\n\u003cp\u003eYou’ll need access credentials for your preferred storage system. Look at the \u003ca href=\"https://appwrite.io/docs/environment-variables#storage\"\u003estorage environment variables\u003c/a\u003e to set up one of the supported object storage.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eWhy do I need object storage?\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThese buckets are used to store files by Appwrite’s storage service. Without Object storage, you can use your local file system, which can be slow and overloaded quickly.\u003c/p\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"creating-your-first-project\"\u003eCreating your first project\u003c/h2\u003e\n\u003cp\u003eIn your browser, type in the domain name you have set up or the IP address of your droplet, and you should be presented with a login or signup page. You can get to the signup page by clicking on the Sign Up button.\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://cloud.appwrite.io/v1/storage/buckets/images/files/646ec110cfe6d3fd104d/view?width=950\u0026amp;project=do-marketplace-content\" alt=\"Sign In\"\u003e\u003c/p\u003e\n\u003cp\u003eProvide your details and signup. The account you create will be the root account for managing your Appwrite server. Once you signup, you will be redirected and presented with a dialog to create your first Project. Enter the name and optional custom ID and click Create project button.\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://cloud.appwrite.io/v1/storage/buckets/images/files/646ec169bcfb775de211/view?width=950\u0026amp;project=do-marketplace-content\" alt=\"Create project\"\u003e\u003c/p\u003e\n\u003cp\u003eYou will then be redirected to the project overview page, where you can set up your project further to connect with your applications, set up databases, storage and more:\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://cloud.appwrite.io/v1/storage/buckets/images/files/646ec1352f507f4e7e34/view?width=950\u0026amp;project=do-marketplace-content\" alt=\"Project dashboard\"\u003e\u003c/p\u003e\n\u003cp\u003eNow that you have created your project, you can follow one of the getting started guides below to build your Application with Appwrite.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://appwrite.io/docs/getting-started-for-web\"\u003eGetting started for web\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://appwrite.io/docs/getting-started-for-flutter\"\u003eGetting started for Flutter\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://appwrite.io/docs/getting-started-for-android\"\u003eGetting started for Android\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://appwrite.io/docs/getting-started-for-apple\"\u003eGetting started for Apple\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://appwrite.io/docs/getting-started-for-server\"\u003eGetting started for server\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"optional-configure-environment-variables\"\u003eOptional: Configure environment variables\u003c/h2\u003e\n\u003cp\u003eOptionally you can configure the environment variables manually. To do that, you must \u003ca href=\"https://docs.digitalocean.com/products/droplets/how-to/connect-with-ssh/\"\u003eSSH login\u003c/a\u003e into the droplet you created. You will find your environment file in \u003ccode\u003e/root/appwrite/.env\u003c/code\u003e. You can open it in a text editor and update any available environment variables of your choice. You can learn about all the available variables in the \u003ca href=\"https://appwrite.io/docs/environment-variables\"\u003eenvironment variables guide\u003c/a\u003e.\u003c/p\u003e\n\u003ch2 id=\"debugging\"\u003eDebugging\u003c/h2\u003e\n\u003cp\u003eIf you run into issues in your server, you can follow this \u003ca href=\"https://appwrite.io/docs/debugging\"\u003edebugging\u003c/a\u003e guide to troubleshoot.\u003c/p\u003e\n\u003ch2 id=\"getting-help\"\u003eGetting help\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://appwrite.io/docs\"\u003eOfficial documentation\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://appwrite.io/discord\"\u003eDiscord server\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=appwrite-20-04","addonSlug":null,"imageLabel":"appwrite-20-04","imageId":140488730,"externalLabel":null,"additionalLinks":[{"name":"Documentation","url":"https://appwrite.io/docs","description":"Appwrite official documentation","__typename":"AdditionalLink"},{"name":"Appwrite Discord","url":"https://appwrite.io/discord","description":"Appwrite Discord server","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"Minecraft: Java Edition Server","appId":"5e8cf223207c0a569f482949","developerId":"","safeName":["minecraft-java-edition-server"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/sharklabs-minecraftjavaedi-18-04.svg","version":"1.20.1","osVersion":"Ubuntu 22.04","tags":["Gaming"],"support":{"url":"","email":"v-aisac@digitalocean.com","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Minecraft: Java Edition Server","version":"1.20.1","website":"https://www.minecraft.net/en-us/download/server","releaseNotes":"","licenseLink":"https://account.mojang.com/terms","licenseType":"Minecraft End User License Agreement","__typename":"CustomSoftware"}],"summary":"Host your own Minecraft server in a matter of minutes!","description":"\u003cp\u003eMinecraft is one of the most popular online sandbox games ever created. With more than 170 million monthly active players, there is a lot to explore, design, and create in this 3D virtual world.\u003c/p\u003e","gettingStarted":"\u003cp\u003e\u003cimg src=\"https://do-not-delete-droplet-assets.nyc3.digitaloceanspaces.com/3mqRRhH%20-%20Imgur.png\" alt=\"Minecraft\"\u003e\u003c/p\u003e\n\u003cp\u003eIt is recommended to use 4GB RAM and 2 Cores Premium Intel Droplet size for the best experience.\u003c/p\u003e\n\u003cp\u003eNOTE: After Minecraft Droplet was created it will start world generation which can take ~5 minutes depending on the Droplet size. If you are getting \u003ccode\u003eTimed out\u003c/code\u003e errors - make sure to give your server a minute.\u003c/p\u003e\n\u003cp\u003eAfter a few minutes passed after droplet creation, you can access your server and play with your friends:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cp\u003eFirst copy the public ipv4 address from your newly created droplet from the DigitalOcean control panel (\u003ca href=\"https://cloud.digitalocean.com/projects\"\u003ehttps://cloud.digitalocean.com/projects\u003c/a\u003e)\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eThen start the Minecraft application, click \"Play\" and then \"Multiplayer\"\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eThen click \"Add Server\"\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eThen paste the IP address of the Droplet into the \u003cstrong\u003eServer Address\u003c/strong\u003e field and then \"Done\" to save\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eFinally, click \"Join Server\" and enjoy!\u003c/p\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"how-to-promote-a-user-to-an-admin-minecraft-operator\"\u003eHow to promote a user to an admin (Minecraft operator)\u003c/h3\u003e\n\u003cp\u003eThere are many reasons to have admin privileges, especially if you are sharing your Minecraft server publicly, next steps will show how to promote a player to an admin:\u003c/p\u003e\n\u003cp\u003eLogin into your droplet via cloud console or SSH:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e$ ssh \u0026lt;your Minecraft Droplet IP\u0026gt;\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSwitch to a \u003ccode\u003eminecraft\u003c/code\u003e user:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e$ su - minecraft -s /bin/bash\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eNow, use \u003ccode\u003escreen\u003c/code\u003e to run a command on a Minecraft server terminal:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e$ screen -p 0 -S minecraft -X eval 'stuff \"op \u0026lt;user nickname\u0026gt;\"\\\\015'\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eMake sure to change \u003ccode\u003e\u0026amp;amp;amp;amp;lt;user nickname\u0026amp;amp;amp;amp;gt;\u003c/code\u003e to a username that needs to become an admin.\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eDone! Now \u003ccode\u003e\u0026amp;amp;amp;amp;lt;user nickname\u003c/code\u003e can use admin commands on the server itself.\u003c/p\u003e\n\u003ch3 id=\"about-minecraft-droplet-1-click\"\u003eAbout Minecraft Droplet 1-Click\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMinecraft Server version is 1.20.1.\u003c/li\u003e\n\u003cli\u003eMinecraft Server is installed under \u003ccode\u003e/opt/minecraft\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eMinecraft Server runs on a systemd service. Read MOTD (message on the SSH) to find the name of the service.\u003c/li\u003e\n\u003cli\u003eMinecraft Server uses 75% of Droplet's RAM.\u003c/li\u003e\n\u003cli\u003eOn shutdown, Minecraft service will save the game world.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMinecraft is a trademark of Mojang Synergies AB and Microsoft Corporation, and we refer to the name for referential purposes only and not to indicate any sponsorship, endorsement or affiliation between these companies and DigitalOcean. We offer this one-click app for your convenience, but you are solely responsible for creating, using, and maintaining your server in accordance with all applicable terms and conditions. More information about setting up your server and applicable terms can be found here: \u003ca href=\"https://www.minecraft.net/en-us/download/server\"\u003ehttps://www.minecraft.net/en-us/download/server\u003c/a\u003e.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=sharklabs-minecraftjavaedi-18-04","addonSlug":null,"imageLabel":"sharklabs-minecraftjavaedi-18-04","imageId":134995392,"externalLabel":null,"additionalLinks":[{"name":"Minecraft Official Site","url":"https://www.minecraft.net/","description":"Minecraft Official Homepage","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"SimpleBackups","appId":"f189215f-8099-4d75-bc04-9f901a0b2b93","developerId":"","safeName":["simplebackups"],"created":1650602767000,"type":"saas","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://mp-saas-service.nyc3.digitaloceanspaces.com/vendor_media/6cf3086e-2e32-4781-ae34-4069662b7941.png","version":"","osVersion":"","tags":["Business Apps","Add-Ons"],"support":{"url":"","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[],"summary":"All-in-one backup automation tool. Droplet file backups, snapshots, database backups, and DO Spaces bucket sync and replication.","description":"\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://simplebackups.com/?ref=do-addon\"\u003eSimpleBackups\u003c/a\u003e\u003c/strong\u003e automates all backups, snapshots, and cloud storage replication in a simple, secure, beautiful dashboard. You can use our API feature to take this automation further and manage backups from your own infrastructure.\u003c/p\u003e\n\u003cp\u003eYou can set a custom schedule for your backups (\u003cstrong\u003efile, database, snapshots\u003c/strong\u003e) or \u003cstrong\u003ecloud storage sync/replication\u003c/strong\u003e jobs and they will be taken automatically for you, and securely stored on your own storage cloud storage or mounted volume. Backups can be encrypted via \u003cstrong\u003eAES-256\u003c/strong\u003e using your own public key to ensure that no one else can read them.\u003c/p\u003e\n\u003cp\u003eSimpleBackups instantly notifies you when backups fail via Email, Webhooks, Slack, and/or Discord.\u003c/p\u003e\n\u003ch3 id=\"database-backups\"\u003eDatabase Backups\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eMySQL, PostgreSQL, MongoDB, Redis\u003c/strong\u003e (self-hosted or Managed DigitalOcean Databases)\u003c/li\u003e\n\u003cli\u003eZero-config DigitalOcean Managed Database Backups\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"cloud-storage-replicationsync\"\u003eCloud Storage Replication/Sync\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSync and replicate DigitalOcean Spaces buckets from or to Dropbox, S3, Wasabi, Backblaze, etc - Supports object-locked storage\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"server--volume-snapshots\"\u003eServer \u0026amp; Volume Snapshots\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDigitalOcean droplets, and volumes supported plus many other providers\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"droplet-file-backups\"\u003eDroplet File Backups\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIncremental file backups\u003c/li\u003e\n\u003cli\u003eFlat file backups or files/directories or mounted volumes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"feedback-from-some-of-our-users\"\u003eFeedback from some of our users:\u003c/h4\u003e\n\u003cblockquote\u003e\n \u003cp\u003eVery simple to set up, excellent GUI, and excellent customer service. I recommend SimpleBackups to all sysadmins, developers, webmasters, and DevOps.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n \u003cp\u003eSimplebackups has been a great tool for our web development company. We currently have over 200 backups setup across 60 different webservers - all running automated backups! The support team has been great, I highly recommend Simplebackups!\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch4 id=\"zero-config-digitalocean-managed-database-backups\"\u003eZero-config DigitalOcean Managed Database Backups\u003c/h4\u003e\n\u003cp\u003e\u003cimg src=\"https://s3.us-east-2.wasabisys.com/sb-public-assets/media/SimpleBackups-DigitalOcean-Zero-Config-Opt.gif\" alt=\"DigitalOcean Zero-config Backups\"\u003e\u003c/p\u003e","gettingStarted":"","createApp":"","addonSlug":null,"imageLabel":"","imageId":0,"externalLabel":null,"additionalLinks":[],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"NodeJS","appId":"5ba19757fc53b8179c7a0086","developerId":"","safeName":["nodejs"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/nodejs-20-04.svg","version":"latest","osVersion":"Ubuntu 20.04","tags":["Frameworks"],"support":{"url":"","email":"marketplace-eng@do.co","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Node.js","version":"18.12.1","website":"","releaseNotes":"https://nodejs.org/dist/latest-v12.x/docs/api/","licenseLink":"https://github.com/nodejs/node/blob/master/LICENSE","licenseType":"Custom","__typename":"CustomSoftware"},{"name":"NPM","version":"6.14.4","website":"","releaseNotes":"https://docs.npmjs.com/about-npm/","licenseLink":"https://www.npmjs.com/policies/npm-license","licenseType":"Artistic License 2.0","__typename":"CustomSoftware"},{"name":"NGINX","version":"1.17.10","website":"","releaseNotes":"https://packages.ubuntu.com/focal/nginx","licenseLink":"http://nginx.org/LICENSE","licenseType":"Custom","__typename":"CustomSoftware"},{"name":"PM2","version":"4.4.0","website":"","releaseNotes":"https://pm2.keymetrics.io","licenseLink":"https://github.com/Unitech/pm2/blob/master/GNU-AGPL-3.0.txt","licenseType":"GNU AGPL v3","__typename":"CustomSoftware"}],"summary":"A lightweight and efficient platform that's ideal for building fast, scalable network applications in Javascript","description":"\u003cp\u003eA lightweight platform ideal for building fast, scalable network applications in Javascript. Similar in design to Ruby\u0026#39;s Event Machine or Python\u0026#39;s Twisted, and built on Chrome\u0026#39;s JavaScript runtime, NodeJS is ideal for data-intensive apps that run across distributed devices.\u003c/p\u003e","gettingStarted":"\u003cp\u003eAfter you created a Droplet, you can navigate to its public IPv4 address to see the sample application live.\u003c/p\u003e\n\u003cp\u003eYou will then be prompted to enter a password. If you created your Droplet with a root user password, enter this in the terminal. If you created your Droplet with an ssh key, enter the passphrase associated with your key.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eUsing MongoDB Database-as-a-Service with your NodeJS 1-Click App\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eIf you selected the MongoDB Database-as-a-Service option when you created your NodeJS 1-Click App, you will have a \u003ccode\u003eDATABASE_URL\u003c/code\u003e environment variable pre-configured within your Droplet. This variable contains the full connection string for your MongoDB database.\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eYour MongoDB database credentials are also persisted on your Droplet at \u003ccode\u003e/root/.digitalocean_dbaas_credentials\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eHere is a sample Node.js app showing a connection to the MongoDB database:\u003cbr\u003e\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"js language-js\"\u003econst {MongoClient} = require('mongodb');\n\nasync function main(){\n /**\n * Connection URI. Update \u0026lt;your-mongo-connection-string\u0026gt; to reflect your cluster. You can find it on the \n * See https://docs.mongodb.com/ecosystem/drivers/node/ for more details\n */\n\n const uri = '\u0026lt;your-mongo-connection-string\u0026gt;';\n\n const client = new MongoClient(uri);\n\n try {\n // Connect to the MongoDB cluster\n await client.connect();\n\n // Make the appropriate DB calls\n await listDatabases(client);\n\n } catch (e) {\n console.error(e);\n } finally {\n await client.close();\n }\n}\n\nasync function listDatabases(client){\n databasesList = await client.db().admin().listDatabases();\n\n console.log(\"Connected successfully. Databases:\");\n databasesList.databases.forEach(db =\u0026gt; console.log(` - ${db.name}`));\n};\n\nmain().catch(console.error);\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eTo learn how to make modifications or get your code onto your Droplet, here are the steps. You can also follow the sample application for the instructions.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 1: Access to your Droplet\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eOpen a terminal on your computer to access your Droplet as the root user using the following command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003essh root@your_droplet_public_ipv4\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eStep 2: Make modifications to the sample application\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eModify this script at /var/www/html/hello.js. You can then see the results live by using pm2, a process manager that schedules your code to run at boot time. The application runs as the nodejs user, so changes to pm2 need to be run as the nodejs user.\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003esudo -u nodejs pm2 restart hello\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eStep 3: Get your code onto the Droplet\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eClone your NodeJS code onto the droplet, anywhere you like. Note: If you're not using source code control, you can directly upload the files to your droplet using SFTP.\u003c/p\u003e\n\u003cp\u003ecd into the directory where your NodeJS code lives, and install any dependencies. (For example, if you have a package.json file, run npm install.)\u003c/p\u003e\n\u003cp\u003eLaunch your app\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003esudo -u nodejs pm2 start \u0026lt;your-file\u0026gt;\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eMap the port your app run on to an HTTP URL\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003enano /etc/nginx/sites-available/default\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eEdit the existing entry that exposes the \"hello\" app at port 3000 to the world so that it points to your app's port instead.\u003c/p\u003e\n\u003cp\u003eEnable your new nginx config.\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003esudo systemctl restart nginx\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eCall to schedule your code to run at launch.\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003esudo -u nodejs pm2 save\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eRepeat these steps for any other NodeJS apps that need to run concurrently -- schedule them to run at boot time on whatever internal port you like using PM2, then map that port to an HTTP/HTTPS URL in the nginx config. Build out the URL directory structure you need by mapping applications to URL paths; that's the reverse proxy method in a nutshell!\u003c/p\u003e\n\u003cp\u003eNow you can delete the sample app we installed on your Droplet. Stop running the initial script (that you're viewing now)\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003esudo -u nodejs pm2 delete hello\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eStop it from running on Droplet boot.\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003esudo -u nodejs pm2 save\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eStep 4: Get production-ready\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThere's a lot you'll want to do to make sure you're production-ready. Here are the popular things that people will do.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNon-root user:\u003c/strong\u003e Set up a non-root user for day-to-day use\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFirewall:\u003c/strong\u003e Review your firewall settings by calling sudo ufw status, and make any changes you need. By default, only SSH/SFTP (port 22), HTTP (port 80), and HTTPS (port 443) are open. You can also disable this firewall by calling sudo ufw disable and use a DigitalOcean cloud firewall instead, if you like (they're free).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDomain:\u003c/strong\u003e Register a custom domain\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eStorage:\u003c/strong\u003e You can mount a volume (up to 16TB) to this server to expand the filesystem, provision a database cluster (that runs MySQL, Redis, or PostgreSQL), or use a Space, which is an S3-compatible bucket for storing objects.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=nodejs-20-04","addonSlug":null,"imageLabel":"nodejs-20-04","imageId":160991535,"externalLabel":null,"additionalLinks":[{"name":"DigitalOcean Community Tutorials","url":"https://www.digitalocean.com/community/tags/node-js?type=tutorials","description":"Resources for learning and mastering NodeJS","__typename":"AdditionalLink"},{"name":"Source Code","url":"https://github.com/digitalocean/droplet-1-clicks/tree/master/nodejs-20-04","description":"Packer scripts we used to build this app","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"Grafana","appId":"5c520a5e3201e30d52590378","developerId":"","safeName":["grafana"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/grafana-logo.svg","version":"11.2","osVersion":"Ubuntu 24.04","tags":["Monitoring"],"support":{"url":"http://community.grafana.com","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Grafana","version":"11.2","website":"","releaseNotes":"https://github.com/grafana/grafana/blob/main/CHANGELOG.md","licenseLink":"https://opensource.org/license/agpl-v3","licenseType":"AGPLv3","__typename":"CustomSoftware"}],"summary":"The leading open source platform for beautiful analytics and monitoring.","description":"\u003cp\u003eThe analytics platform for all your metrics. Grafana allows you to query, visualize, alert on and understand your metrics no matter where they are stored. Create, explore, and share dashboards with your team and foster a data driven culture. Trusted and loved by the community.\u003c/p\u003e","gettingStarted":"\u003cp\u003eAfter you create a Grafana One-Click Droplet, Grafana will be installed. Start adding your datasources and dashboards by visiting http://Droplet_IP:3000 The default login credentials are admin/admin - you will be prompted to change this after your first login.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e3000 is the default http port that Grafana listens to. To change this visit \u003ca href=\"http://docs.grafana.org/installation/configuration/#http-port\"\u003ehttp://docs.grafana.org/installation/configuration/#http-port\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=grafana-18-04","addonSlug":null,"imageLabel":"grafana-18-04","imageId":166317541,"externalLabel":null,"additionalLinks":[],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"Apache Kafka","appId":"626c52011ff9fb3108e9c6eb","developerId":"","safeName":["apache-kafka"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/sharklabs-apachekafka.png","version":"3.1.0","osVersion":"Ubuntu 20.04","tags":["Databases"],"support":{"url":"https://issues.apache.org/jira/projects/KAFKA/","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Apache Kafka","version":"3.1.0","website":"https://kafka.apache.org/","releaseNotes":"https://kafka.apache.org/31/documentation.html","licenseLink":"https://www.apache.org/licenses/LICENSE-2.0","licenseType":"Apache 2.0","__typename":"CustomSoftware"},{"name":"OpenJDK","version":"11","website":"https://openjdk.java.net/","releaseNotes":"","licenseLink":"","licenseType":"GPL-2.0","__typename":"CustomSoftware"}],"summary":"Apache Kafka is an open-source distributed event streaming platform used by thousands of companies for high-performance data pipelines, streaming analytics, data integration, and mission-critical applications.","description":"\u003cp\u003eApache Kafka can be used to asynchronously process vast amounts of data, but it can be difficult to get started. This 1-Click App automatically configures a single-node Kafka cluster, so you can spend less time configuring it and more time developing the software that uses it.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote\u003c/strong\u003e: This app should \u003cstrong\u003enot\u003c/strong\u003e be used in production environments. Since it consists of a single-node cluster, it does not offer high availability, scaling, or any form of data-loss prevention. This app serves to provide an easy way to get started in development environments.\u003c/p\u003e","gettingStarted":"\u003ch2 id=\"quickstart\"\u003eQuickstart\u003c/h2\u003e\n\u003cp\u003eHere's a short example that uses \u003ca href=\"https://github.com/edenhill/kcat\"\u003ekcat\u003c/a\u003e, an open-source command-line producer and consumer for Apache Kafka, to produce and consume events from your local machine. Because the server's certificate authority (CA) certificate is self-signed, the CA certificate must be explicitly trusted by the client to properly verify the server's identity:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cp\u003eCopy the example configuration and CA root certificate from your new Droplet to your local machine\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003escp root@your_droplet_public_ipv4:'/opt/kafka/one-click-ssl/{ca.crt,example.librdkafka.config}' .\u003c/code\u003e\u003c/pre\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eProduce a message\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eecho 'Hello, TLS!' | kcat -P -b your_droplet_public_ipv4:9093 \\\n -F ./example.librdkafka.config \\\n -X ssl.ca.location=./ca.crt \\\n -t quickstart\u003c/code\u003e\u003c/pre\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eConsume the message\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ekcat -C -b your_droplet_public_ipv4:9093 \\\n -F ./example.librdkafka.config \\\n -X ssl.ca.location=./ca.crt \\\n -t quickstart\u003c/code\u003e\u003c/pre\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eExit the consumer by pressing \u003ccode\u003eCtrl+c\u003c/code\u003e.\u003c/p\u003e\n\u003ch2 id=\"additional-details\"\u003eAdditional Details\u003c/h2\u003e\n\u003cp\u003eYour Kafka server is configured with two listeners:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e127.0.0.1:9092 - PLAINTEXT and no authentication required\u003c/li\u003e\n\u003cli\u003e0.0.0.0:9093 - TLS/SSL using a self-signed certificate and SCRAM-SHA-256 authentication\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePLAINTEXT connections are an easy way to get started, but transmitting PLAINTEXT data, especially login credentials, over the public internet leaves your information vulnerable. For security purposes, PLAINTEXT connections can only be established from inside the server:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cp\u003eConnect to your Droplet using SSH\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003essh root@your_droplet_public_ipv4\u003c/code\u003e\u003c/pre\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eCreate a topic\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e/opt/kafka/bin/kafka-topics.sh \\\n --create \\\n --topic quickstart \\\n --bootstrap-server localhost:9092\u003c/code\u003e\u003c/pre\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eProduce your first event\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eecho 'Hello, World!' | /opt/kafka/bin/kafka-console-producer.sh \\\n --topic quickstart \\\n --bootstrap-server localhost:9092\u003c/code\u003e\u003c/pre\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eConsume the event\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e/opt/kafka/bin/kafka-console-consumer.sh \\\n --from-beginning \\\n --max-messages 1 \\\n --topic quickstart \\\n --bootstrap-server localhost:9092\u003c/code\u003e\u003c/pre\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eThe configuration for this Kafka broker can be found in\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e/opt/kafka/config/server.properties\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003e/opt/kafka/one-click-ssl\u003c/code\u003e directory contains the following:\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth id=\"file\"\u003eFile\u003c/th\u003e\n\u003cth id=\"contents\"\u003eContents\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e.keystore_password\u003c/td\u003e\n\u003ctd\u003ePassword for Java KeyStores in this directory\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eca.crt\u003c/td\u003e\n\u003ctd\u003eSelf-signed CA root certificate\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eca.key\u003c/td\u003e\n\u003ctd\u003eCA private key\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eexample.librdkafka.config\u003c/td\u003e\n\u003ctd\u003eClient authentication configuration\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ekafka.crt\u003c/td\u003e\n\u003ctd\u003eKafka server certificate signed by CA\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ekafka.keystore.jks\u003c/td\u003e\n\u003ctd\u003eJava KeyStore containing ca.crt and kafka.crt\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ekafka.truststore.jks\u003c/td\u003e\n\u003ctd\u003eJava KeyStore containing ca.crt\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=sharklabs-apachekafka","addonSlug":null,"imageLabel":"sharklabs-apachekafka","imageId":108133533,"externalLabel":null,"additionalLinks":[],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"Cloudron","appId":"5c5b5915d6ac500d554dcc83","developerId":"","safeName":["cloudron"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/cloudron-20-04.svg","version":"8.0.4","osVersion":"Ubuntu 24.04","tags":["Blogs and Forums"],"support":{"url":"https://forum.cloudron.io","email":"support@cloudron.io","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Cloudron","version":"8.0.3","website":"","releaseNotes":"https://cloudron.io/blog/","licenseLink":"https://cloudron.io/legal/license.html","licenseType":"Proprietary","__typename":"CustomSoftware"}],"summary":"Cloudron is a complete solution for running apps like WordPress, GitLab, Rocket.Chat, OpenVPN, Discourse on your server and keeping them up-to-date and secure.","description":"\u003cp\u003eCloudron is a turnkey solution for running apps like WordPress, Rocket.Chat, NextCloud, GitLab, OpenVPN \u0026amp; many more. Cloudron performs end-to-end deployment of apps including provisioning databases, automated DNS setup, certificate management, centralized user management, periodic backups. Apps on Cloudron also receive automatic updates saving you the hassle of tracking upstream releases and keeping the installation secure.\u003c/p\u003e","gettingStarted":"\u003cp\u003eAfter creating a Cloudron One-Click Droplet, you need to visit the Droplet’s IP address in a browser to finish configuring Cloudron.\u003c/p\u003e\n\u003cp\u003eWhen you visit the setup page, you’ll see a domain setup screen asking you for the primary domain of Cloudron.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eProvide a domain like \u003ccode\u003eexample.com\u003c/code\u003e. Cloudron's admin interface will then be available at the \u003ccode\u003emy.example.com\u003c/code\u003e and apps can be installed into subdomains like \u003ccode\u003eblog.example.com\u003c/code\u003e, \u003ccode\u003egit.example.com\u003c/code\u003e and so on. More domains can be added after installation is complete in the Domains view.\u003c/li\u003e\n\u003cli\u003eIf your domain is hosted on DigitalOcean, provide a \u003ca href=\"https://cloudron.io/documentation/domains/#digital-ocean-dns\"\u003eDigitalOcean token\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOnce you click 'Next', Cloudron will automatically configure the DNS, setup certificates and redirect you to \u003ccode\u003emy.example.com\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eYou can now setup a Cloudron administrator and start using Cloudron!\u003c/li\u003e\n\u003c/ul\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=cloudron-20-04","addonSlug":null,"imageLabel":"cloudron-20-04","imageId":163534462,"externalLabel":null,"additionalLinks":[],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"Odoo ERP","appId":"515b28729c8330e1697f2f03","developerId":"","safeName":["erp-odoo"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/sharklabs-erpodoo.png","version":"16","osVersion":"Ubuntu 22.04","tags":["Business Apps"],"support":{"url":"https://www.odoo.com/help","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Odoo","version":"16.0","website":"","releaseNotes":"https://www.odoo.com/blog/odoo-news-5/meet-odoo-16-968","licenseLink":"https://www.odoo.com/documentation/16.0/legal/licenses.html","licenseType":"LGPL","__typename":"CustomSoftware"},{"name":"Postgres","version":"16.0","website":"","releaseNotes":"https://www.postgresql.org/about/news/postgresql-16-released-2715/","licenseLink":"https://www.postgresql.org/about/licence/","licenseType":"MIT","__typename":"CustomSoftware"}],"summary":"Odoo offering seamless integration of modules for diverse business needs. It's known for scalability, modularity, and a user-friendly interface, covering CRM, sales, HR, and more.","description":"\u003cp\u003eOdoo is a comprehensive suite of open-source business applications, originally known as OpenERP, developed using Python and released under the LGPL license. This powerful suite integrates a wide range of applications to meet various business needs seamlessly. From e-commerce and website management to manufacturing, inventory, accounting, and more, Odoo offers a versatile platform with all-encompassing functionality.\u003c/p\u003e\n\u003cp\u003eKey features and aspects of Odoo include:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eModularity and Extensibility:\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOdoo is highly modular, allowing users to select and integrate specific modules relevant to their business requirements. Additionally, the platform provides a framework for creating custom modules to tailor the software to unique needs.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eScalability:\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIt caters to businesses of all sizes, from small enterprises with just a few users to large corporations with hundreds of thousands of users. The scalability of Odoo ensures it can adapt to the growth and changing needs of an organization.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIntegration and Seamless Workflow:\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOdoo\u0026#39;s applications seamlessly integrate with each other, enabling a smooth workflow across various departments and business processes. This integration enhances efficiency and productivity within an organization.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUser-Friendly Interface:\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe user interface in Odoo is designed to be intuitive and user-friendly, promoting ease of use and faster adoption among employees. This contributes to enhanced productivity and reduced learning curves.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommunity and Support:\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOdoo has a thriving community of developers, integrators, and users who actively contribute to the platform\u0026#39;s growth and provide assistance. This robust community ensures a wealth of resources, knowledge sharing, and ongoing support.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCustomization and Flexibility:\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eUsers can customize Odoo to suit their specific business needs, including designing workflows, adding new modules, modifying existing ones, and adapting reports to meet their requirements. This adaptability makes Odoo highly flexible.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eComprehensive Business Coverage:\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOdoo covers a vast array of business functionalities, including CRM (Customer Relationship Management), sales, inventory management, project management, HR (Human Resources), accounting, manufacturing, and more. This all-inclusive approach minimizes the need for multiple standalone software solutions.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGlobal Reach:\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOdoo is a globally recognized and widely adopted business software, serving millions of users worldwide. Its availability in multiple languages and compliance with various local legal requirements make it suitable for international use.\u003c/p\u003e\n\u003cp\u003eOdoo empowers organizations to streamline their operations, improve productivity, and make data-driven decisions by providing a unified and adaptable business management solution.\u003c/p\u003e","gettingStarted":"\u003cp\u003eOnce the Odoo One-Click Droplet is created, you can log into it as root. Make sure to substitute the Droplet’s public IPv4 address.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e$ ssh root@your_droplet_public_ipv4\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eAfter creating the droplet, Odoo is ready to use. In the welcome message upon connecting to the droplet, you'll find a link to your Odoo page and the password.\u003c/p\u003e\n\u003cp\u003eIf you wish to utilize custom modules, simply access the droplet console and navigate to /local/add-ons, from there you can clone the repositories you need. Happy exploring!\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=sharklabs-erpodoo","addonSlug":null,"imageLabel":"sharklabs-erpodoo","imageId":142737922,"externalLabel":null,"additionalLinks":[{"name":"Odoo website ","url":"https://www.odoo.com","description":"Odoo website ","__typename":"AdditionalLink"},{"name":"Odoo documentation","url":"https://www.odoo.com/documentation/16.0/","description":"Odoo documentation","__typename":"AdditionalLink"},{"name":"Odoo community ","url":"https://www.odoo.com/forum/help-1","description":"Odoo community ","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"360 Monitoring","appId":"139","developerId":"46","safeName":["360monitoring"],"created":1648232213000,"type":"saas","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://mp-saas-service.nyc3.digitaloceanspaces.com/vendor_media/dbc2190a-670e-4fc0-b413-7f8964bd535e.svg","version":"","osVersion":"","tags":["Monitoring","Add-Ons"],"support":{"url":"","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":null,"summary":"Track site \u0026 server performance and prevent downtime!","description":"\u003cp\u003e\u003cstrong\u003e360 Monitoring by Plesk\u003c/strong\u003e empowers Developers and WebProfessionals to Monitor any Website \u0026amp; Server. Track performance and prevent downtime easily with configurable dashboards, easy set-up \u0026amp; custom tools.\u003c/p\u003e\n\u003ch3 id=\"complete-website-uptime-monitoring\"\u003eComplete Website Uptime Monitoring\u003c/h3\u003e\n\u003cp\u003eUnnoticed downtime is a thing of the past with 360 Site Monitoring. Check the DNS time, SSL validity, keywords, and more. From 26 locations globally!\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDowntime monitoring\u003c/li\u003e\n\u003cli\u003eTime to First Byte (TTFB)\u003c/li\u003e\n\u003cli\u003eHTTP/S, TCP (port), ICMP (ping) tracking\u003c/li\u003e\n\u003cli\u003eConnection time\u003c/li\u003e\n\u003cli\u003eTotal duration\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"comprehensive-server-uptime-checks\"\u003eComprehensive Server Uptime Checks\u003c/h3\u003e\n\u003cp\u003eWe don’t just tell you that your service went down. We also tell you why. With 360 Monitoring, you can track the health of each functionality to pinpoint why errors and downtime occur. Independent of any infrastructure below!\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTracking CPU\u003c/li\u003e\n\u003cli\u003eLoad times\u003c/li\u003e\n\u003cli\u003eNetwork statistics (ping, bytes, packets)\u003c/li\u003e\n\u003cli\u003eMemory and Swap\u003c/li\u003e\n\u003cli\u003eDisc usage (Overall, I/O)\u003c/li\u003e\n\u003cli\u003eOptimized for Plesk and cPanel servers, but can be used with any Droplet\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"frequent-scans--personalized-alerting\"\u003eFrequent scans \u0026amp; Personalized Alerting\u003c/h3\u003e\n\u003cp\u003eRegular scans are paramount for staying up-to-date with site health. That’s why 360 Monitoring offers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMulti-channel alerting, including Slack, Telegram, and SMS\u003c/li\u003e\n\u003cli\u003eMonitoring intervals up to 60 seconds\u003c/li\u003e\n\u003cli\u003eData retention up to 30 days\u003c/li\u003e\n\u003cli\u003eHistorical data up to 2 years\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"out-of-the-box-integrations\"\u003eOut-of-the-box integrations\u003c/h3\u003e\n\u003cp\u003e360 Monitoring provides integrations with top database and server technologies. This way you can create plugins based on your needs.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWeb server \u0026amp; database monitoring\u003c/li\u003e\n\u003cli\u003eExim / Postfix Mail Queue monitoring\u003c/li\u003e\n\u003cli\u003eCloudLinux, cPanel, KVM, Docker, Plesk WP Toolkit\u003c/li\u003e\n\u003cli\u003ePHP-FPM\u003c/li\u003e\n\u003cli\u003eIMAP \u0026amp; SMTPs\u003c/li\u003e\n\u003cli\u003eIntegrated with Plesk through the Plesk Monitoring Extension\u003c/li\u003e\n\u003cli\u003eSoon: cPanel Monitoring from WHM \u0026amp; cPanel\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"available-plans\"\u003eAvailable Plans\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth id=\"\"\u003e\u003c/th\u003e\n\u003cth id=\"free\"\u003eFree\u003c/th\u003e\n\u003cth id=\"paid\"\u003ePaid\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eServers Monitors\u003c/td\u003e\n\u003ctd\u003e1\u003c/td\u003e\n\u003ctd\u003eUp to 100\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eWebsite Monitors\u003c/td\u003e\n\u003ctd\u003e5\u003c/td\u003e\n\u003ctd\u003eUp to 1,000\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMonitoring Intervals\u003c/td\u003e\n\u003ctd\u003e5 Minutes\u003c/td\u003e\n\u003ctd\u003e60 seconds\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eFull Data Retention\u003c/td\u003e\n\u003ctd\u003e1 day\u003c/td\u003e\n\u003ctd\u003e30 days\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eHistorical Reporting\u003c/td\u003e\n\u003ctd\u003e7 days\u003c/td\u003e\n\u003ctd\u003e2 years\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eCustom Metrics\u003c/td\u003e\n\u003ctd\u003eLimited\u003c/td\u003e\n\u003ctd\u003eUnlimited\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eSupport\u003c/td\u003e\n\u003ctd\u003eBasic\u003c/td\u003e\n\u003ctd\u003ePriority\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eDashboards\u003c/td\u003e\n\u003ctd\u003eAvailable\u003c/td\u003e\n\u003ctd\u003eAvailable\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eHosted Statuspages\u003c/td\u003e\n\u003ctd\u003eAvailable\u003c/td\u003e\n\u003ctd\u003eAvailable\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eEmail Alerting\u003c/td\u003e\n\u003ctd\u003eAvailable\u003c/td\u003e\n\u003ctd\u003eAvailable\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eSMS Alerting\u003c/td\u003e\n\u003ctd\u003e-/-\u003c/td\u003e\n\u003ctd\u003eAvailable\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eWebhooks, Discord, Slack \u0026amp; more\u003c/td\u003e\n\u003ctd\u003e-/-\u003c/td\u003e\n\u003ctd\u003eAvailable\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eService Monitoring\u003c/td\u003e\n\u003ctd\u003e-/-\u003c/td\u003e\n\u003ctd\u003eAvailable\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"support--limitations\"\u003eSupport \u0026amp; Limitations\u003c/h3\u003e\n\u003cp\u003e360 Server Monitoring supports the most common Linux distributions which are not yet EOL.\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eWe recommend using the following Operating Systems:\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth id=\"distribution\"\u003eDistribution\u003c/th\u003e\n\u003cth id=\"version\"\u003eVersion\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eCloudLinux\u003c/td\u003e\n\u003ctd\u003e7 \u0026amp; 8 and higher\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eUbuntu\u003c/td\u003e\n\u003ctd\u003e18.04 and higher\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eDebian\u003c/td\u003e\n\u003ctd\u003e9 and higher\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eCentOS\u003c/td\u003e\n\u003ctd\u003e7 \u0026amp; 8 and higher\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eAlmaLinux\u003c/td\u003e\n\u003ctd\u003e8.3 and higher\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e360 Monitoring works with any website which is reachable by our system. Once logged in you can also download the list of IPs to add them to your whitelist.\u003c/p\u003e\n\u003cp\u003eComing soon: Log Monitoring, Error Crawling \u0026amp; RBL (Blacklist) Monitoring\u003c/p\u003e","gettingStarted":"","createApp":"","addonSlug":null,"imageLabel":"","imageId":null,"externalLabel":null,"additionalLinks":null,"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"Logtail","appId":"112","developerId":"39","safeName":["logtail"],"created":1642088619000,"type":"saas","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://mp-saas-service.nyc3.digitaloceanspaces.com/vendor_media/f632a451-6575-471d-abd6-3529d690e40b.png","version":"","osVersion":"","tags":["Logging","Add-Ons"],"support":{"url":"","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":null,"summary":"Query your logs like you query your database.","description":"\u003ch1 id=\\\"structured-logging\\\"\u003eStructured logging\u003c/h1\u003e\u003cp\u003e\u003ca href=\\\"https://betterstack.com/logtail\\\"\u003eLogtail\u003c/a\u003e lets you store logs in a structured form instead of a blob of text. You can do so much more with your logs than full-text search.\u003c/p\u003e\u003ch1 id=\\\"sql-log-querying\\\"\u003eSQL log querying\u003c/h1\u003e\u003cp\u003eQuery logs with the language your team already knows: SQL. No need to learn an obscure log querying language.\u003c/p\u003e\u003ch1 id=\\\"hosted-grafana-dashboards\\\"\u003eHosted Grafana dashboards\u003c/h1\u003e\u003cp\u003eNumber of user sessions over time? Average response time? You can chart it with a few clicks.\u003c/p\u003e\u003ch1 id=\\\"anomaly-detection-alerts\\\"\u003eAnomaly detection alerts\u003c/h1\u003e\u003cp\u003eConfigure presence/absence alerts. Configure custom Slack alerts based on the contents of your logs. Logtail has a 1 click integration with \u003ca href=\\\"https://betteruptime.com\\\"\u003eBetter Uptime\u003c/a\u003e for easy on-call alerting and incident management.\u003c/p\u003e\u003ch1 id=\\\"secured\\\"\u003eSecured\u003c/h1\u003e\u003cp\u003eMore secure than your self-hosted solution. Data is encrypted both in transit and at rest, stored in ISO/IEC 27001 certified data centers. Security of your data is our no. 1 priority.\u003c/p\u003e\u003ch1 id=\\\"team-collaboration\\\"\u003eTeam collaboration\u003c/h1\u003e\u003cp\u003eArchive important log fragments, add comments and easily share links.\u003c/p\u003e\u003ch1 id=\\\"unbeatable-price\\\"\u003eUnbeatable price\u003c/h1\u003e\u003cp\u003eWe use a custom-built data pipeline for storing and processing your logs instead of relying on the Elastic/ELK stack as most logging services do. We pass the cost savings to you.\u003c/p\u003e\u003cp\u003eLogtail is part of \u003ca href=\\\"https://betterstack.com\\\"\u003eBetter Stack\u003c/a\u003e\u003c/p\u003e","gettingStarted":"","createApp":"","addonSlug":null,"imageLabel":"","imageId":null,"externalLabel":null,"additionalLinks":null,"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"Better Uptime","appId":"124","developerId":"39","safeName":["better-uptime"],"created":1646299596000,"type":"saas","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://mp-saas-service.nyc3.digitaloceanspaces.com/vendor_media/d5c6ff52-793c-4746-be60-a5f9316931b1.png","version":"","osVersion":"","tags":["Monitoring","Add-Ons"],"support":{"url":"","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":null,"summary":"Monitoring, status pages and built-in incident management.\nWe call you when your service goes down.","description":"\u003ch2 id=\"monitor-everything-you-need\"\u003eMonitor everything you need\u003c/h2\u003e\n\u003cp\u003eWith \u003ca href=\"https://betteruptime.com/\"\u003eBetter Uptime\u003c/a\u003e you can check your website from locations on 4 continents and get a global overview of your website’s availability for users around the world.\u003c/p\u003e\n\u003cp\u003eOur fast and reliable checks let you monitor your endpoints as often as every 30 seconds. and make sure any issues are detected quickly.\u003c/p\u003e\n\u003cp\u003eWith Better Uptime you can \u003cstrong\u003emonitor uptime, ping, ports, cron jobs (heartbeats), APIs, SSL \u0026amp; TLD certificates, DNS, domain expiration\u003c/strong\u003e, and more.\u003c/p\u003e\n\u003cp\u003eTry radically better uptime monitoring and get notified instantly when there is downtime.\u003c/p\u003e\n\u003ch2 id=\"get-alerted-whenever-you-are\"\u003eGet alerted whenever you are\u003c/h2\u003e\n\u003cp\u003eNever miss an alert again with unlimited worldwide voice alerting, and be the first one to know when your website goes down.\u003c/p\u003e\n\u003cp\u003eIntegrate seamlessly with \u003cstrong\u003eSlack and Microsoft Teams\u003c/strong\u003e and receive alerts in your preferred messaging tool. On the go? Download our iOS or Android app and get instant push notifications wherever you are.\u003c/p\u003e\n\u003cp\u003eGet vital debug info, including \u003cstrong\u003eincident screenshots, error logs, and second-by-second timeline\u003c/strong\u003e embedded in all of your alerts.\u003c/p\u003e\n\u003ch2 id=\"schedule-on-calls-and-manage-escalations\"\u003eSchedule on-calls and manage escalations\u003c/h2\u003e\n\u003cp\u003eMultiple team members or teams? No problem, \u003cstrong\u003eadvanced on-call calendars\u003c/strong\u003e let you manage multiple tiers of calendars across multiple teams. Replace Pingdom and Pagerduty all together.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eCustomize who on your team gets notified based on the incident origin, urgency, and context\u003c/strong\u003e.\u003c/p\u003e\n\u003ch2 id=\"communicate-incidents-with-status-pages\"\u003eCommunicate incidents with status pages\u003c/h2\u003e\n\u003cp\u003eGet beautiful branded status pages on your own sub-domain in just a few clicks. Build trust with your users by sharing your system status at \u003cstrong\u003estatus.yourdomain.com\u003c/strong\u003e. Seamlessly add your monitors in seconds.\u003c/p\u003e\n\u003cp\u003eForget manual status updates and notify your customers about incidents automatically with email subscriptions and save time on one-on-one support.\u003c/p\u003e\n\u003cp\u003eNeed status page for company stakeholders or a specific group of customers? Our password-protected status pages let you do just that.\u003c/p\u003e\n\u003ch2 id=\"integrate-everything\"\u003eIntegrate everything\u003c/h2\u003e\n\u003cp\u003ePlug in the services you already use, be it for monitoring, ChatOps, or incident management. Better Uptime integrates easily with Slack, Microsoft Teams, DataDog, New Relic, Grafana, Prometheus, Zabbix, Pingdom, Uptime Robot, Pagerduty and more.\u003c/p\u003e\n\u003cp\u003eEnjoy radically better uptime monitoring, on-call scheduling \u0026amp; alerting, and status pages in one place.\u003c/p\u003e\n\u003cp\u003eBetter Uptime is part of \u003ca href=\"https://betterstack.com/\"\u003eBetter Stack\u003c/a\u003e.\u003c/p\u003e","gettingStarted":"","createApp":"","addonSlug":null,"imageLabel":"","imageId":null,"externalLabel":null,"additionalLinks":null,"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"Netmaker","appId":"61858af5bbad7116be43334c","developerId":"","safeName":["netmaker"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/gravitl-netmaker.png","version":"0.20.0","osVersion":"Ubuntu 22.10","tags":["Network Tools"],"support":{"url":"https://netmaker.io","email":"info@netmaker.io","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Netmaker","version":"v0.20.0","website":"https://github.com/gravitl/netmaker","releaseNotes":"","licenseLink":"","licenseType":"SSPL","__typename":"CustomSoftware"},{"name":"Netclient","version":"v0.20.0","website":"https://github.com/gravitl/netclient","releaseNotes":"","licenseLink":"","licenseType":"Apache -2.0","__typename":"CustomSoftware"},{"name":"WireGuard","version":"1.0.20200513-1~20.04.2","website":"https://www.wireguard.com/","releaseNotes":"","licenseLink":"","licenseType":" Apache-2.0","__typename":"CustomSoftware"},{"name":"Docker","version":"1.5-2","website":"https://www.docker.com/","releaseNotes":"","licenseLink":"","licenseType":"Apache-2.0","__typename":"CustomSoftware"},{"name":"Caddy","version":"v2.6.2","website":"https://caddyserver.com/","releaseNotes":"","licenseLink":"","licenseType":"Apache-2.0","__typename":"CustomSoftware"},{"name":"Mosquitto","version":"2.0.11","website":"https://mosquitto.org/","releaseNotes":"","licenseLink":"","licenseType":" Eclipse Public License 2.0","__typename":"CustomSoftware"},{"name":"Grafana","version":"9.2","website":"https://github.com/grafana/grafana","releaseNotes":"","licenseLink":"https://github.com/grafana/grafana/blob/main/LICENSE","licenseType":"GNU","__typename":"CustomSoftware"},{"name":"Prometheus","version":"2.39","website":"https://github.com/prometheus/prometheus","releaseNotes":"","licenseLink":"","licenseType":"Apache-2.0","__typename":"CustomSoftware"},{"name":"CoreDNS","version":"1.8.6","website":"https://github.com/coredns/coredns","releaseNotes":"","licenseLink":"","licenseType":"Apache-2.0","__typename":"CustomSoftware"}],"summary":"Superfast WireGuard VPN. Faster than OpenVPN, ZeroTier, or Tailscale. Remote Access, Mesh VPN, and more.","description":"\u003cp\u003eFollow this \u003ca href=\"https://www.youtube.com/watch?v=xysZRPjmXeM\" rel=\"noopener\" target=\"_blank\"\u003e8-minute video\u003c/a\u003e for getting started with Netmaker to securely connect your droplets and DBs.\u003c/p\u003e\n\u003cp\u003eConnect your droplets and databases across regions with Netmaker, and securely connect to your cloud resources.\u003c/p\u003e\n\u003cp\u003eNetmaker provides secure network access across your globally distributed cloud infrastructure, with speeds up to 10x higher than traditional VPNs.\u003c/p\u003e","gettingStarted":"\u003cp\u003e\u003cimg src=\"https://uploads-ssl.webflow.com/623390d5ead4650d9c03f969/63922121d1a3bcbc6e944232_netmaker_diagram.png\" alt=\"Netmaker Diagram\"\u003e\u003c/p\u003e\n\u003cp\u003eDeploy the Netmaker server, and create high performance virtual overlay networks with the fully featured platform and dashboard.\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://uploads-ssl.webflow.com/623390d5ead4650d9c03f969/639222eee83a395e9035948d_netmaker-graph-page.png\" alt=\"Nodes Graph\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://uploads-ssl.webflow.com/623390d5ead4650d9c03f969/639222f3f875dfb4d6e5763d_netmaker-nodes-page.png\" alt=\"Nodes List\"\u003e\u003c/p\u003e\n\u003cp\u003eNetmaker saves organizations substantially on the cost of managing complex networks by eliminating the need for expensive networking equipment and clunky old-school VPNs. The platform is software-defined, and automates manual processes.\u003c/p\u003e\n\u003cp\u003eNetmaker accelerates modern digital business practices, from cloud native infrastructure to agile development and DevOps. Netmaker enables application connectivity, and helps your application to be deployed anywhere.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.digitalocean.com/blog/secure-network-connectivity-distributed-clouds\"\u003e\u003cem\u003eLearn more about how Netmaker can enable secure access across your Digital Ocean resources, without sacrificing on cost, security, or flexibility.\u003c/em\u003e\u003c/a\u003e\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"get-started\"\u003eGet Started\u003c/h2\u003e\n\u003cp\u003eTo Get Started, check out \u003ca href=\"https://www.youtube.com/watch?v=xysZRPjmXeM\"\u003ethis video\u003c/a\u003e, which will cover:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eInstallation\u003c/li\u003e\n\u003cli\u003eConnecting Droplets Across Regions\u003c/li\u003e\n\u003cli\u003eAccessing Managed Databases Across Regions\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eIMPORTANT: Notes on Installation\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAs of 0.18, three additional subdomains are required. In addition to those listed in the above video, please add DNS entries for \u003cstrong\u003estun.domain\u003c/strong\u003e, \u003cstrong\u003eturn.domain\u003c/strong\u003e, and \u003cstrong\u003eturnapi.domain.\u003c/strong\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eTo learn more, follow the links to these DigitalOcean learning resources:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://docs.digitalocean.com/developer-center/connect-digitalocean-droplets-across-regions/\"\u003eConnect DigitalOcean Droplets Across Regions\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.digitalocean.com/developer-center/secure-remote-access-to-digitalocean-with-netmaker/\"\u003eSecure Remote Access to DigitalOcean with Netmaker\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.digitalocean.com/developer-center/connect-to-digitalocean-managed-databases-from-anywhere-securely/\"\u003eConnect to DigitalOcean Managed Databases from Anywhere, Securely\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jkpedo/container-blueprints/tree/doks-vpn/DOKS-netmaker\"\u003eSetting up DOKS cross-cluster connectivity using Netmaker, Static Routes Operator \u0026amp; NodePorts\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=gravitl-netmaker","addonSlug":null,"imageLabel":"gravitl-netmaker","imageId":131787130,"externalLabel":null,"additionalLinks":[{"name":"Documentation","url":"https://docs.netmaker.org","description":"Netmaker Documentation","__typename":"AdditionalLink"},{"name":"GitHub","url":"https://github.com/gravitl/netmaker","description":"Netmaker GitHub","__typename":"AdditionalLink"},{"name":"Licensing","url":"https://dashboard.license.netmaker.io","description":"Purchase a license if additional limits are required.","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"PocketBase","appId":"b76abed4bd79e4fe94bfe488","developerId":"","safeName":["pocketbase"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/doteamaccount-pocketbase.png","version":"0.22.24","osVersion":"Ubuntu 22.04","tags":["Databases"],"support":{"url":"https://github.com/pocketbase/pocketbase/discussions","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[],"summary":"Open-Source backend for your next SaaS and Mobile app in one file","description":"\u003cp\u003ePocketBase is an open source Go backend, consisting of:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eembedded database (SQLite) with realtime subscriptions\u003c/li\u003e\n\u003cli\u003ebuilt-in files and users management\u003c/li\u003e\n\u003cli\u003econvenient Admin dashboard UI\u003c/li\u003e\n\u003cli\u003eand simple REST-ish API\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFor documentation and examples, please visit \u003ca href=\"https://pocketbase.io/docs\" rel=\"noopener\" target=\"_blank\"\u003ehttps://pocketbase.io/docs\u003c/a\u003e.\u003c/p\u003e","gettingStarted":"\u003ch1 id=\"welcome-to-the-pocketbase-digitalocean-1-click\"\u003eWelcome to the PocketBase DigitalOcean 1-Click!\u003c/h1\u003e\n\u003cp\u003ePlease allow up to 3 minutes for all services to become available after installing this 1-click.\u003c/p\u003e\n\u003cp\u003eThe one-click includes a fully installed and running PocketBase instance. The first time you access the system, you should use the following URL to set your admin password:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://your.ip.addr.ess/_/\"\u003ehttp://your.ip.addr.ess/_/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis installation of PocketBase uses a reverse proxy from Caddy to PB, \u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eand is managed with systemctl:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003esystemctl restart pocketbase # Restart PocketBase\nsystemctl stop pocketbase # Stop the PocketBase server\nsystemctl start pocketbase # Start the PocketBase server\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eTo add a custom domain, update the reverse proxy here:\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e/etc/caddy/Caddyfile\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eGetting Help:\u003c/p\u003e\n\u003cp\u003eNote- this one click is not maintained by the creator of PocketBase. To get help with using the software, use the PocketBase repo. For help with the one-click itself or to suggest improvements, use the link to the Packer build script.\u003c/p\u003e\n\u003cp\u003ePocketBase on GitHub: \u003ca href=\"https://github.com/pocketbase/pocketbase\"\u003ehttps://github.com/pocketbase/pocketbase\u003c/a\u003e\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003ePocketBase Support: \u003ca href=\"https://github.com/pocketbase/pocketbase/discussions\"\u003ehttps://github.com/pocketbase/pocketbase/discussions\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003ePocketBase Packer Script: \u003ca href=\"https://github.com/scott/pocketbase-do-packer\"\u003ehttps://github.com/scott/pocketbase-do-packer\u003c/a\u003e\u003c/p\u003e\n\u003ch3 id=\"enabling-ssl\"\u003eEnabling SSL\u003c/h3\u003e\n\u003cp\u003eTo enable SSL, you will need to configure Caddy to configure a domain that reverse proxies to the PocketBase service. For more information, check the Caddy Docs: \u003ca href=\"https://caddyserver.com/docs/quick-starts/https\"\u003ehttps://caddyserver.com/docs/quick-starts/https\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eYou will find the Caddyfile here:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e/etc/caddy/Caddyfile\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=doteamaccount-pocketbase","addonSlug":null,"imageLabel":"doteamaccount-pocketbase","imageId":170343552,"externalLabel":null,"additionalLinks":[{"name":"GitHub Repo","url":"https://github.com/pocketbase/pocketbase","description":"PocketBase on Github.","__typename":"AdditionalLink"},{"name":"Packer Build Script","url":"https://github.com/scott/pocketbase-do-packer","description":"Build script used to create the one-click","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"MEAN","appId":"b118429ef69031efed8f7b35","developerId":"","safeName":["mean"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/mean.svg","version":"1.0","osVersion":"Ubuntu 22.04","tags":["Frameworks"],"support":{"url":"https://www.digitalocean.com/docs/","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"NGINX","version":"1.18.0","website":"","releaseNotes":"","licenseLink":"http://nginx.org/LICENSE","licenseType":"Custom","__typename":"CustomSoftware"},{"name":"Certbot","version":"1.21.1","website":"","releaseNotes":"","licenseLink":"https://github.com/certbot/certbot/blob/master/LICENSE.txt","licenseType":"Apache 2","__typename":"CustomSoftware"},{"name":"npm","version":"9.5.0","website":"","releaseNotes":"","licenseLink":"https://docs.npmjs.com/policies/npm-license","licenseType":"Artistic License 2.0","__typename":"CustomSoftware"},{"name":"Angular","version":"^15.2.0","website":"","releaseNotes":"","licenseLink":"https://angular.io/license","licenseType":"MIT License","__typename":"CustomSoftware"},{"name":"Express.js","version":"~4.16.1","website":"","releaseNotes":"","licenseLink":"https://github.com/expressjs/express/blob/master/LICENSE","licenseType":"MIT License","__typename":"CustomSoftware"},{"name":"MongoDB","version":"6.0.4","website":"","releaseNotes":"","licenseLink":"https://www.mongodb.com/licensing/server-side-public-license","licenseType":"SSPL","__typename":"CustomSoftware"},{"name":"pm2","version":"5.2.2","website":"","releaseNotes":"","licenseLink":"https://github.com/Unitech/pm2/blob/master/GNU-AGPL-3.0.txt","licenseType":"GNU APGL v3","__typename":"CustomSoftware"}],"summary":"Get MongoDB, Express.js, Angular and NGINX installed on your Droplet in less than a minute.","description":"\u003cp\u003eThe MEAN stack consists of open-source software to get the backend and frontend up and running. Available as a one-click install, get MongoDB, ExpressJS, Angular and NodeJS installed on your Droplet in less than a minute.\u003c/p\u003e","gettingStarted":"\u003cp\u003eAfter your droplet is created, you can access your MEAN stack by typing the droplet’s IP address in your browser:\u003cbr\u003e\n\u003cimg src=\"https://do-not-delete-droplet-assets.nyc3.digitaloceanspaces.com/1kJ2dVQ.png\" alt=\"MEAN Welcome Page\"\u003e\u003c/p\u003e\n\u003cp\u003eIf you see the \u003cem\u003eSite can’t be reached\u003c/em\u003e or \u003cem\u003eNginx 502 Bad Gateway\u003c/em\u003e errors, give it 2-3 minutes and reload the page.\u003c/p\u003e\n\u003cp\u003eTo connect to the local MongoDB console, use:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e$ mongosh 127.0.0.1:27017 -u \"admin\" -p \"\u0026lt;Your MongoDB password\u0026gt;\" --authenticationDatabase \"admin\"\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eTo connect your backend to the local MongoDB, use this connection string:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003emongodb://admin:\u0026lt;Your MongoDB password\u0026gt;@127.0.0.1:27017\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYour MongoDB password can be found on the welcome message of your MEAN terminal.\u003c/p\u003e\n\u003cp\u003eSample Angular application is served by PM2 as a \u003cem\u003emean\u003c/em\u003e user. To view deployed applications, use:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e$ su - mean -c \"pm2 list\"\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eAfter you have created your MEAN droplet, it is highly recommended you configure an Nginx server block file for each site you plan to host. Doing so will make the default configuration the fallback, as intended, and will make it easier to manage changes when hosting multiple sites.\u003c/p\u003e\n\u003ch1 id=\"configuring-nginx\"\u003eConfiguring Nginx\u003c/h1\u003e\n\u003cp\u003eTo do so, you’ll need to create two things for each domain: a new directory in /var/www for that domain’s content, and a new server block file in /etc/nginx/sites-available for that domain’s configuration. For a detailed walkthrough, you can follow \u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu-16-04\"\u003eHow to Set Up Nginx Server Blocks\u003c/a\u003e.\u003c/p\u003e\n\u003ch1 id=\"adding-a-domain-name\"\u003eAdding a domain name\u003c/h1\u003e\n\u003cp\u003eA domain name allows others to access your website with an encrypted connection. If you intend to host a website on your MEAN Droplet 1-Click.\u003c/p\u003e\n\u003cp\u003eMEAN Droplet 1-Click comes with certbot installed, making it easier to enable HTTPS on your 1-Click.\u003c/p\u003e\n\u003cp\u003eFirst, ensure your domain points to the new droplet IP. If your DNS is managed by DigitalOcean, it should look like this:\u003cbr\u003e\n\u003cimg src=\"https://do-not-delete-droplet-assets.nyc3.digitaloceanspaces.com/GvyOBWs.png\" alt=\"MEAN Domain Name Example\"\u003e\u003c/p\u003e\n\u003cp\u003eThe DNS Host may be the same company you registered the domain with or another entity you designate. To connect your DNS hosting to DigitalOcean, check out \u003ca href=\"https://docs.digitalocean.com/tutorials/dns-registrars/\"\u003ethis guide\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eOnce your A record is set up, you should configure nginx to host your new domain properly. Detailed instructions can be found in \u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu-16-04\"\u003ethis article\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://do-not-delete-droplet-assets.nyc3.digitaloceanspaces.com/1hkMPU2.png\" alt=\"MEAN Certbot Example\"\u003e\u003c/p\u003e\n\u003cp\u003eAfter you answer questions from certbot, your HTTPS setup is finished.\u003c/p\u003e\n\u003cp\u003eUse your domain in the web browser to access your MEAN Droplet.\u003c/p\u003e\n\u003ch2 id=\"droplet-summary\"\u003eDroplet Summary\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUFW firewall allows only SSH (port 22, rate limited), HTTP (port 80), and HTTPS (port 443) access.\u003c/li\u003e\n\u003cli\u003eThe MEAN Droplet comes with the \u003cem\u003emean\u003c/em\u003e user for managing sample applications and PM2.\u003c/li\u003e\n\u003cli\u003eThe MongoDB is set with the \u003cem\u003eadmin\u003c/em\u003e user and SCRAM-SHA-1 authentication.\u003c/li\u003e\n\u003cli\u003eThe MongoDB password for the \u003cem\u003eadmin\u003c/em\u003e user is located in /root/.digitalocean_password.\u003c/li\u003e\n\u003cli\u003eSample Angular application is located at /home/mean/client.\u003c/li\u003e\n\u003c/ul\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=mean","addonSlug":null,"imageLabel":"mean","imageId":128824718,"externalLabel":null,"additionalLinks":[{"name":"Source Code","url":"https://github.com/digitalocean/droplet-1-clicks/tree/master/mean-22-04","description":"Packer scripts that were used to build this 1-Click App","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"Flask","appId":"7874f8b95cac607e21019859","developerId":"","safeName":["flask"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/flask.svg","version":"3.0.0","osVersion":"Ubuntu 22.04","tags":["Frameworks"],"support":{"url":"https://www.digitalocean.com/docs/","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"NGINX","version":"1.18.0","website":"","releaseNotes":"","licenseLink":"http://nginx.org/LICENSE","licenseType":"Custom","__typename":"CustomSoftware"},{"name":"Certbot","version":"1.21.0","website":"","releaseNotes":"","licenseLink":"https://github.com/certbot/certbot/blob/master/LICENSE.txt","licenseType":"Apache 2","__typename":"CustomSoftware"},{"name":"Gunicorn","version":"20.1.0","website":"","releaseNotes":"","licenseLink":"https://github.com/benoitc/gunicorn/blob/master/LICENSE","licenseType":"MIT License","__typename":"CustomSoftware"},{"name":"Flask","version":"3.0.0","website":"","releaseNotes":"","licenseLink":"https://flask.palletsprojects.com/en/2.2.x/license/","licenseType":"BSD-3-Clause","__typename":"CustomSoftware"}],"summary":"Easy to use and quick web micro-framework written in Python.","description":"\u003cp\u003eFlask is an extensible web micro-framework written in Python. Designed to get started as quickly and easily as possible with the ability to scale up, Flask is a great solution for projects of any size and complexity.\u003c/p\u003e","gettingStarted":"\u003cp\u003eAfter your droplet is created, you can access your Flask stack by typing the droplet’s IP address in your browser:\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://do-not-delete-droplet-assets.nyc3.digitaloceanspaces.com/flask.png\" alt=\"Flask Welcome Page\"\u003e\u003c/p\u003e\n\u003cp\u003eIf you see the \u003cem\u003eSite can’t be reached\u003c/em\u003e or \u003cem\u003eNginx 502 Bad Gateway\u003c/em\u003e, give it 2-3 minutes and reload the page.\u003c/p\u003e\n\u003cp\u003eFlask droplet ships a simple Flask project with static files, wsgi server, gunicorn service running wsgi and nginx proxy to gunicorn.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sample project can be found in /\u003ccode\u003ehome/flask/flask_project\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWSGI server is in \u003ccode\u003e/home/flask/flask_project/wsgi.py\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGunicorn systemd service can be found in \u003ccode\u003e/etc/systemd/system/gunicorn.service\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGunicorn socket is located at \u003ccode\u003e/home/flask/gunicorn.socket\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1 id=\"configuring-nginx\"\u003eConfiguring Nginx\u003c/h1\u003e\n\u003cp\u003eAfter you have created your Flask droplet, it is highly recommended you configure an Nginx server block file for each site you plan to host. Doing so will make the default configuration the fallback, as intended, and will make it easier to manage changes when hosting multiple sites.\u003c/p\u003e\n\u003cp\u003eTo do so, you’ll need to create two things for each domain: a new directory in /var/www for that domain’s content, and a new server block file in /etc/nginx/sites-available for that domain’s configuration. For a detailed walkthrough, follow \u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu-16-04\"\u003eHow to Set Up Nginx Server Blocks\u003c/a\u003e.\u003c/p\u003e\n\u003ch1 id=\"adding-a-domain-name\"\u003eAdding a domain name\u003c/h1\u003e\n\u003cp\u003eA domain name allows others to access your website with an encrypted connection if you intend to host a website on your Flask Droplet 1-Click.\u003c/p\u003e\n\u003cp\u003eFlask Droplet 1-Click comes with certbot installed, making it easier to enable HTTPS on your 1-Click.\u003c/p\u003e\n\u003cp\u003eFirst, ensure your domain points to the new droplet IP. If your DNS is managed by DigitalOcean, it should look like this: \u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://do-not-delete-droplet-assets.nyc3.digitaloceanspaces.com/Screenshot%202023-03-21%20at%2014.15.01.png\" alt=\"Flask DNS Example\"\u003e\u003c/p\u003e\n\u003cp\u003eThe DNS Host may be the same company you registered the domain with or another entity you designate. To connect your DNS hosting to DigitalOcean, check out \u003ca href=\"https://docs.digitalocean.com/tutorials/dns-registrars/\"\u003ethis guide\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eAfter you have configured the domain and nginx, you can run certbot to acquire HTTPS certificates for your droplet:\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://do-not-delete-droplet-assets.nyc3.digitaloceanspaces.com/Screenshot%202023-03-21%20at%2014.34.31.png\" alt=\"Flask Certbot Example\"\u003e\u003c/p\u003e\n\u003cp\u003eAfter you answer questions from certbot, your HTTPS setup is finished.\u003c/p\u003e\n\u003cp\u003eUse your domain in the web browser to access your Flask Droplet.\u003c/p\u003e\n\u003ch2 id=\"droplet-summary\"\u003eDroplet Summary\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUFW firewall allows only SSH (port 22, rate limited), HTTP (port 80), and HTTPS (port 443) access.\u003c/li\u003e\n\u003cli\u003eThe Flask Droplet comes with the \u003cem\u003eflask\u003c/em\u003e user.\u003c/li\u003e\n\u003cli\u003eSample Flask application is located at /home/flask/flask_project.\u003c/li\u003e\n\u003cli\u003eSample Flask application is hosted via gunicorn as a systemd service.\u003c/li\u003e\n\u003cli\u003eService is located at /etc/systemd/system/gunicorn.service\u003c/li\u003e\n\u003cli\u003e\u003cem\u003eflask\u003c/em\u003e user credentials can be found at /root/.digitalocean_passwords\u003c/li\u003e\n\u003c/ul\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=flask","addonSlug":null,"imageLabel":"flask","imageId":146033344,"externalLabel":null,"additionalLinks":[{"name":"Source Code","url":"https://github.com/digitalocean/droplet-1-clicks/tree/master/flask-22-04","description":"Packer scripts that were used to build this 1-Click App","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"},{"featured_app":{"name":"RabbitMQ","appId":"186c365aa7ea528a51857cf2","developerId":"","safeName":["rabbitmq"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/rabbitmq.png","version":"3.13.5","osVersion":"Ubuntu 22.04","tags":["Developer Tools"],"support":{"url":"https://www.rabbitmq.com/#support","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"RabbitMQ","version":"3.12","website":"","releaseNotes":"","licenseLink":"https://github.com/rabbitmq/rabbitmq-server/blob/main/LICENSE-APACHE2","licenseType":"Apache 2","__typename":"CustomSoftware"}],"summary":"Open-source message broker software that facilitates communication between distributed systems","description":"\u003cp\u003eRabbitMQ is an open-source message broker software that facilitates communication between distributed systems. It acts as an intermediary platform to enable seamless data exchange between various components of modern applications.\u003c/p\u003e\n\u003cp\u003eKey Features:\u003c/p\u003e\n\u003cp\u003e1) Messaging Protocol Support: RabbitMQ supports multiple messaging protocols, including Advanced Message Queuing Protocol (AMQP), Message Queue Telemetry Transport (MQTT), and more. This flexibility allows developers to choose the most suitable protocol for their specific use case.\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e2) Queuing System: RabbitMQ implements a robust queuing system, where messages are stored in queues until they are consumed by the intended recipients. This decouples application components and helps manage message flow efficiently.\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e3) Exchange Mechanism: The exchange mechanism in RabbitMQ allows messages to be routed to specific queues based on predefined rules or message attributes. This feature enhances the flexibility and scalability of the message processing.\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e4) Pub/Sub Model: RabbitMQ supports the Publish/Subscribe model, enabling multiple consumers to subscribe to specific topics or message types. This ensures that messages are efficiently delivered to relevant recipients.\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e5) High Availability: RabbitMQ offers clustering and replication capabilities, ensuring high availability and fault tolerance. In case of node failures, the system continues to function without data loss or interruption.\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e6) Easy Integration: RabbitMQ can be easily integrated with various programming languages and platforms, making it a versatile choice for different application architectures.\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003eUse Cases:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cp\u003eMicroservices Communication: RabbitMQ is an excellent choice for enabling communication between microservices, allowing them to interact asynchronously and scale independently.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eTask Queueing: Applications can use RabbitMQ to distribute tasks across a network of workers, ensuring efficient task processing and load balancing.\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003eReal-time Data Streaming: With support for protocols like MQTT, RabbitMQ is well-suited for real-time data streaming and Internet of Things (IoT) applications.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eEvent-Driven Architecture: RabbitMQ facilitates the implementation of event-driven systems, where components react to events and changes in the system asynchronously.\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003eIn conclusion, RabbitMQ offers a reliable, scalable, and flexible messaging solution for modern applications, making it an essential component of distributed and event-driven architectures. Its versatility and robustness make it a popular choice for developers and enterprises seeking to build resilient and efficient communication systems.\u003c/p\u003e\u003c/li\u003e\n\u003c/ul\u003e","gettingStarted":"\u003cp\u003eAfter you create a RabbitMQ One-Click Droplet the queue manager springs to life effortlessly. Once the Droplet is created, you can SSH to the server as root. Make sure to substitute the Droplet’s IP address.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003essh root@your_droplet_public_ipv4\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eFor further assistance and in-depth details, you can refer to the official documentation of RabbitMQ. It contains comprehensive guides, tutorials, and references to help you make the most out of this powerful message broker.\u003c/p\u003e\n\u003cp\u003eRabbitMQ Documentation: \u003ca href=\"https://www.rabbitmq.com/documentation.html\"\u003ehttps://www.rabbitmq.com/documentation.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eExplore the documentation to gain a deeper understanding of RabbitMQ's features, best practices, and configuration options. It serves as an invaluable resource to address any specific questions or delve into advanced topics. Happy messaging with RabbitMQ!\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=rabbitmq","addonSlug":null,"imageLabel":"rabbitmq","imageId":160983154,"externalLabel":null,"additionalLinks":[],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"FeaturedAppGroupObject"}],"new_and_noteworthy_apps_group_title":[{"text":"New \u0026 Noteworthy","__typename":"PrismicStructuredText"}],"new_and_noteworthy_apps_group":[{"new_and_noteworthy_app":{"name":"3CX","appId":"ed8bbfee8514d9db3856520e","developerId":"","safeName":["3cx"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/3cxcommunication-3cx.png","version":"20.0.3.806","osVersion":"Debian 12 (Bookworm)","tags":["Business Apps"],"support":{"url":"https://www.3cx.com","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[],"summary":"3CX is a business communications solution that offers companies of all sizes with a complete package for calls, video conferencing, live chat and messaging. It's open-platform, meaning you can choose from a variety of supported IP Phones and SIP Trunks that best suit your business needs.","description":"\u003cp\u003e3CX is a business communications solution that offers companies of all sizes with a complete package for calls, video and live chat, out of the box. With integrated video conferencing, apps for Android and iOS, website live chat, SMS, Facebook and WhatsApp messaging integration, 3CX boosts employee productivity and enhances the customer experience.\u003c/p\u003e\n\u003cp\u003e3CX is open-standards, allowing you to choose from a selection of supported IP Phones and SIP Trunks that best suit your business needs and budget. Installation, management and use of 3CX is extremely easy and straightforward saving you time on phone system management and maintenance.\u003c/p\u003e\n\u003cp\u003ePricing is based on the number of simultaneous calls you need, not on the number of users/extensions you have, which also knocks down the cost of ownership tremendously.\u003c/p\u003e\n\u003cp\u003eChoose between 3CX Dedicated PRO or Enterprise. Both come with their set of Unified Communications features all bundled in the initial price, so there are no hidden costs and extra add-ons.\u003c/p\u003e\n\u003cp\u003eYou can even try 3CX free! \u003ca href=\"https://www.3cx.com/signup/?src=domarketplace\" rel=\"noopener\" target=\"_blank\"\u003ehttps://www.3cx.com/signup/?src=domarketplace\u003c/a\u003e\u003c/p\u003e","gettingStarted":"\u003cp\u003eTo start the 3CX Installation Wizard, access the following URL after the droplet has been deployed: http://\u003cstrong\u003eDROPLET_PUBLIC_IP\u003c/strong\u003e:\u003cstrong\u003e5015\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e*Note: For security purposes, Port 22 (SSH) is not enabled in the default firewall created by the marketplace deployment. Should you need to access your instance via SSH, make sure you allow access to Port 22 from your IP. *\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=3cxcommunication-3cx","addonSlug":null,"imageLabel":"3cxcommunication-3cx","imageId":167455685,"externalLabel":null,"additionalLinks":[],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"NewAndNoteworthyAppGroupObject"},{"new_and_noteworthy_app":{"name":"BlueSky Social PDS","appId":"e201f6a90bf2d5084aacc079","developerId":"","safeName":["bluesky-social-pds"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/blueskysocialpds.svg","version":"0.4","osVersion":"Ubuntu 22.04","tags":["Blogs and Forums"],"support":{"url":"https://discord.gg/UWS6FFdhMe","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"BlueSky PDS","version":"0.4","website":"","releaseNotes":"","licenseLink":"https://github.com/bluesky-social/pds/blob/main/LICENSE-MIT.txt","licenseType":"MIT license","__typename":"CustomSoftware"},{"name":"caddy","version":"2.7.6","website":"","releaseNotes":"","licenseLink":"https://github.com/caddyserver/caddy/blob/master/LICENSE","licenseType":"Apache License 2.0","__typename":"CustomSoftware"}],"summary":"Bluesky is social media as it should be. Find your community among millions of users, unleash your creativity, and have some fun again.","description":"\u003cp\u003eSocial media is too important to be controlled by a few corporations. We’re building an open foundation for the social internet so that we can all shape its future.\u003c/p\u003e","gettingStarted":"\u003cp\u003eThe AT Protocol is a networking technology created to power the next generation of social applications. The initial reference application, bsky.app, provides a global-scale microblogging experience.\u003c/p\u003e\n\u003cp\u003eSelf-hosting a Bluesky PDS means running your own Personal Data Server that is capable of federating with the wider Bluesky social network.\u003c/p\u003e\n\u003cp\u003eThis application creates a PDS in a droplet.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eWe recommend you don't change the order of this flow to make your BlueSky PDS work.\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBlueSky PDS configuration instructions:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cp\u003eFirst and foremost, a domain or subdomain is required. Ensure it's not too long; the handle (username + hostname) should be no longer than 30 characters, with the username being at least 3 characters long. Do not forget about dots in the domain/subdomain name, dots are included in the total length.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eSelect the BlueSky app in the DigitalOcean marketplace, and create a droplet from it. It's ok to start with the smallest droplet size, but migrating to a bigger droplet will be a hard task (see the link in Useful links section).\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eWait for the droplet creation process to complete.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eOnce the droplet is created, copy its IP address from the droplet page.\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eConfigure your DNS for wildcard usage by using the IP from the previous step. Refer to the docs. Without a wildcard, the BlueSky handle won't function correctly. Check links in Useful links section for additional information.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eJoin the \u003ca href=\"https://discord.gg/UWS6FFdhMe\"\u003eAT Protocol PDS Admins Discord\u003c/a\u003e and register the hostname of your PDS. After the ticket is closed and you see \"You've been Federated :)\", you can proceed. This step typically takes about a day.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eSSH into the droplet to complete the installation process. Use your domain/subdomain as the public DNS address and create an account with the PDS hostname, with the username as a prefix. For instance, if your PDS hostname is bsky.mydomain.com, you prefer scott as the username, enter as handle: scott.bsky.mydomain.com. Save the output in a secure location; the password won't be displayed again, but you can reset it using pdsadmin.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eAfter installation is complete you can use your handle. For example, visit bsky.app, choose \"Sign in,\" select Custom as the Hosting provider, and input your handle as the Server address. Enter the email and password for the newly created account.\u003c/p\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eUseful links:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://bsky.social/about\"\u003eAbout BlueSky\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://atproto.com/\"\u003eThe AT Protocol\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.bsky.app/docs/advanced-guides/entryway\"\u003ePDS\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bluesky-social/pds\"\u003eBluesky social PDS ReadMe\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.digitalocean.com/glossary/wildcard-record/\"\u003eConfigure DNS with wildcard\u003c/a\u003e, \u003ca href=\"https://docs.digitalocean.com/products/networking/dns/how-to/manage-records/#a-records\"\u003eSecond link\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bluesky-social/pds/blob/main/ACCOUNT_MIGRATION.md\"\u003ePDS Migration\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://bsky-debug.app/handle\"\u003eDebug your handle\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://morel.us-east.host.bsky.network/xrpc/com.atproto.identity.resolveHandle?handle=YOUR_HANDLE\"\u003eCheck your handle in crawler response\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=blueskysocialpds","addonSlug":null,"imageLabel":"blueskysocialpds","imageId":155406964,"externalLabel":null,"additionalLinks":[],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"NewAndNoteworthyAppGroupObject"},{"new_and_noteworthy_app":{"name":"cPanel \u0026 WHM® (License)","appId":"7f10d407-ac8d-4689-bca0-820b51aa82c3","developerId":"","safeName":["cpanel-license"],"created":0,"type":"sls","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://mp-saas-service.nyc3.digitaloceanspaces.com/vendor_media/939f0d5a-222d-4a24-8d7e-47a432bcc32e.svg","version":"","osVersion":"","tags":["Developer Tools","Add-Ons"],"support":{"url":"","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[],"summary":"cPanel provides the most reliable and intuitive server and site management platform. With a rich feature set and customer-first support, cPanel’s automated and configurable platform enables customers to focus on growing their businesses.","description":"\u003cp\u003eThe cPanel interface allows your customers to do a multitude of things to manage their sites, intranets, and keep their online properties running smoothly.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003ePublish a website\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eAllow your customers to choose from the most popular site builders to launch their web presence or give them the resources to build and monitor their own websites from the ground up.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eCreate emails \u0026amp; calendars\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eGive your customers the ability to stay connected with the powerful email and calendar capabilities baked into cPanel \u0026amp; WHM. With our software, they can launch new email accounts, create shared calendars and enjoy various levels of spam protection.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBackup, transfer \u0026amp; manage files\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eSecurely backup and transfer all web files from within the cPanel interface or allow your customers to use the FTP controls.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eManage domains\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eOffer your tech-savvy site owners the power to manage their network of domains. Create aliases, add or remove subdomains, manage DNS zones and direct site visitors around any of your web properties.\u003c/p\u003e\n\u003cp\u003e*DigitalOcean droplet required\u003c/p\u003e","gettingStarted":"","createApp":"","addonSlug":null,"imageLabel":"","imageId":0,"externalLabel":null,"additionalLinks":[],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"NewAndNoteworthyAppGroupObject"},{"new_and_noteworthy_app":{"name":"WP Guardian","appId":"7861dc8e-3221-48d5-9c15-c3b300c71604","developerId":"","safeName":["wp-guardian"],"created":0,"type":"saas","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://mp-saas-service.nyc3.digitaloceanspaces.com/vendor_media/ec0b82d4-d872-4cbb-b867-04a9bc54d39c.svg","version":"","osVersion":"","tags":["Security","Add-Ons"],"support":{"url":"","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[],"summary":"Security tool designed to protect WordPress websites hosted across multiple droplets","description":"\u003ch1 id=\"centralised-security-management\"\u003eCentralised Security Management\u003c/h1\u003e\n\u003cp\u003eManage security for all of your WordPress sites hosted across DigitalOcean droplets from a single SaaS dashboard\u003c/p\u003e\n\u003ch1 id=\"continuous-vulnerability-monitoring\"\u003eContinuous Vulnerability Monitoring\u003c/h1\u003e\n\u003cp\u003eWP Guardian continuously scans your WordPress sites for vulnerabilities, ensuring proactive threat detection\u003c/p\u003e\n\u003ch1 id=\"flexible-and-non-intrusive-protection\"\u003eFlexible and Non-Intrusive protection\u003c/h1\u003e\n\u003cp\u003eEasily manage WordPress Core, Plugin and Theme updates with automated or manual control. Address vulnerabilities before they can be exploited or a security update becomes available with Virtual Patches powered by Patchstack. No website code changes or performance degradation involved.\u003c/p\u003e\n\u003ch1 id=\"cost-effective-solution\"\u003eCost-Effective Solution\u003c/h1\u003e\n\u003cp\u003eAutomate security across all droplets, eliminating the need for costly, single-site tools and reducing overall security expenses.\u003c/p\u003e","gettingStarted":"","createApp":"","addonSlug":null,"imageLabel":"","imageId":0,"externalLabel":null,"additionalLinks":[],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"NewAndNoteworthyAppGroupObject"},{"new_and_noteworthy_app":null,"__typename":"NewAndNoteworthyAppGroupObject"}],"learning_content_group_title":[{"text":"Resources","__typename":"PrismicStructuredText"}],"learning_content_subgroup1_title":[{"text":"Getting started as a Marketplace Partner","__typename":"PrismicStructuredText"}],"learning_content_subgroup1":[{"item_text":[{"text":"How to become a DigitalOcean Marketplace Vendor","__typename":"PrismicStructuredText"}],"item_link":{"url":"https://marketplace.digitalocean.com/vendors","__typename":"PrismicWebLink"},"__typename":"LearningContentGroup"},{"item_text":[{"text":"How to list your 1-Click Application in the DigitalOcean Marketplace","__typename":"PrismicStructuredText"}],"item_link":{"url":"https://marketplace.digitalocean.com/vendors/getting-started-as-a-digitalocean-marketplace-vendor","__typename":"PrismicWebLink"},"__typename":"LearningContentGroup"},{"item_text":[{"text":"How to build an image for your 1-Click Application","__typename":"PrismicStructuredText"}],"item_link":{"url":"https://github.com/digitalocean/marketplace-partners","__typename":"PrismicWebLink"},"__typename":"LearningContentGroup"}],"learning_content_subgroup2_title":[{"text":"Learn more about 1-Click Applications","__typename":"PrismicStructuredText"}],"learning_content_subgroup2":[{"item_text":[{"text":"How to use the Discourse 1-Click Application on DigitalOcean","__typename":"PrismicStructuredText"}],"item_link":{"url":"https://marketplace.digitalocean.com/apps/discourse","__typename":"PrismicWebLink"},"__typename":"LearningContentGroup"},{"item_text":[{"text":"How to use the WordPress 1-Click Application on DigitalOcean","__typename":"PrismicStructuredText"}],"item_link":{"url":"https://marketplace.digitalocean.com/apps/wordpress","__typename":"PrismicWebLink"},"__typename":"LearningContentGroup"}],"__typename":"MarketplaceHomepage"},"preview":false,"categoriesData":{"GetCatalogCategoriesPage":{"categories":[{"nav_icon":{"dimensions":{"width":33,"height":33,"__typename":"PrismicImageDimensions"},"url":"https://images.prismic.io/do-marketplace-testing%2Fa7ed58d9-c2f9-4310-880b-51cb2ad3492a_all.svg?auto=compress,format","__typename":"PrismicStructuredImage"},"category":null,"is_new":"false","is_visible_in_nav":"true","nav_description":[{"text":"Complete list of Apps.","__typename":"PrismicStructuredText"}],"hero_text":[{"text":"Get straight to deploying your code using one of our pre-built images, including Docker, Node.js, Ruby on Rails, MongoDB, and many more.","__typename":"PrismicStructuredText"}],"staff_pick_1":{"name":"Docker","appId":"5ba19751fc53b8179c7a0071","developerId":"1","safeName":["docker"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/docker-20-04.svg","version":"latest","osVersion":"Ubuntu 22.04","tags":["Developer Tools"],"support":{"url":"https://forums.docker.com","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Docker CE","version":"25.0.3","website":"","releaseNotes":"https://docs.docker.com/release-notes/docker-ce/","licenseLink":"https://github.com/docker/docker/blob/master/LICENSE","licenseType":"Apache 2","__typename":"CustomSoftware"},{"name":"Docker Compose","version":"2.17.2","website":"","releaseNotes":"https://docs.docker.com/release-notes/docker-compose/","licenseLink":"https://github.com/docker/compose/blob/master/LICENSE","licenseType":"Apache 2","__typename":"CustomSoftware"},{"name":"Docker BuildX","version":"0.12.1","website":"","releaseNotes":"https://docs.docker.com/build/release-notes/","licenseLink":"https://github.com/docker/buildx/blob/master/LICENSE","licenseType":"Apache 2","__typename":"CustomSoftware"}],"summary":"An open platform for developers and sysadmins to build, ship, and run distributed applications!","description":"\u003cp\u003eDocker containers combine software and related dependencies into a standardized unit for software development that includes everything it needs to run: code, runtime, system tools and libraries. This guarantees that your application will always run the same and makes collaboration as simple as sharing a container image.\u003c/p\u003e\n\u003cp\u003eThis 1-click enables you to create a DigitalOcean droplet pre-installed with recommended Docker tools (docker-engine, docker-compose).\u003c/p\u003e\n\u003cp\u003eFor reference, the \u003ca href=\"https://github.com/digitalocean/droplet-1-clicks/tree/master/docker-20-04\" rel=\"noopener\" target=\"_blank\"\u003epacker file\u003c/a\u003e used to create the Docker 1-click is here, and the recommended installation steps from Docker are \u003ca href=\"https://docs.docker.com/install/linux/docker-ce/ubuntu/\" rel=\"noopener\" target=\"_blank\"\u003ehere\u003c/a\u003e.\u003c/p\u003e","gettingStarted":"\u003cp\u003eOnce the Docker One-Click Droplet is created, you can log into it as root. Make sure to substitute the Droplet’s public IPv4 address.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e$ ssh root@your_droplet_public_ipv4\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eDocker -d will already be running as a service and the Docker command line tool is included in the PATH, so it’s ready to use. \u003ccode\u003e$ docker version\u003c/code\u003e command shows the version of Docker engine installed.\u003c/p\u003e\n\u003cp\u003eNote about firewall rules: If you are using the default droplet firewall rules in DigitalOcean cloud, then you just need to follow the same practices. However, if you depend on the Linux firewall (iptables), then you need to be aware of \u003ca href=\"https://docs.docker.com/network/iptables/\"\u003ehow Docker works with iptables\u003c/a\u003e.\u003c/p\u003e\n\u003ch1 id=\"after-installing-docker\"\u003eAfter installing Docker\u003c/h1\u003e\n\u003cp\u003eIf you are new to Docker or have not explored all its capabilities, we highly recommend the official getting started tutorial: \u003ca href=\"https://docs.docker.com/get-started/\"\u003ehttps://docs.docker.com/get-started/\u003c/a\u003e\u003c/p\u003e\n\u003ch4 id=\"check-versions\"\u003eCheck versions\u003c/h4\u003e\n\u003cp\u003eExecute in the ssh console:\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003edocker version\u003c/code\u003e\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003edocker compose version\u003c/code\u003e\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003edocker buildx version\u003c/code\u003e\u003c/p\u003e\n\u003ch4 id=\"language-specific-tutorials\"\u003eLanguage specific tutorials\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://docs.docker.com/language/nodejs/\"\u003eNode JS\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.docker.com/language/python/\"\u003ePython\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.docker.com/language/java/\"\u003eJava\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-install-and-set-up-laravel-with-docker-compose-on-ubuntu-22-04\"\u003eLaravel\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-with-docker-compose\"\u003eWordpress\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.docker.com/language/golang/\"\u003eGo\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.docker.com/language/dotnet/\"\u003eC#(.NET)\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"setting-up-a-production-system\"\u003eSetting up a production system\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cp\u003e\u003ca href=\"https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-docker/\"\u003eUsing NGINX \u003c/a\u003e\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.nginx.com/products/nginx/\"\u003eNGINX Plus\u003c/a\u003e, the high‑performance application delivery platform, load balancer, and web server, is available as the Docker container.\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003ca href=\"https://www.digitalocean.com/community/questions/how-to-attach-digitalocean-block-storage-to-docker-container\"\u003eDO Storage \u003c/a\u003e\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eIn cloud computing, block storage is a network-based way to store data. Block storage services, like \u003ca href=\"https://docs.digitalocean.com/products/volumes/\"\u003eDigitalOcean Volumes Block Storage\u003c/a\u003e, provide similar behavior to traditional block storage devices, like hard drives.\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003ca href=\"https://docs.digitalocean.com/products/container-registry/how-to/use-registry-docker-kubernetes/\"\u003eDO Registry\u003c/a\u003e\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eThe DigitalOcean Container Registry (DOCR) is a private Docker image registry with additional tooling support that enables integration with your Docker environment and DigitalOcean Kubernetes clusters. DOCR registries are private and co-located in the datacenters where DigitalOcean Kubernetes clusters are operated for secure, stable, and performant rollout of images to your clusters.\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-monitor-docker-using-zabbix-on-ubuntu-20-04\"\u003eEnable monitoring\u003c/a\u003e\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.zabbix.com/\"\u003eZabbix\u003c/a\u003e is a monitoring system that can monitor the state of almost any element of your IT infrastructure, such as networks, servers, virtual machines, and applications.\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003ca href=\"https://github.com/syntaqx/terraform-digitalocean-docker\"\u003eUsing Terraform\u003c/a\u003e\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eTerraform is an IAC tool, used primarily by DevOps teams to automate various infrastructure tasks. The provisioning of cloud resources, for instance, is one of the main use cases of Terraform. It's a cloud-agnostic, open-source provisioning tool written in the Go language and created by HashiCorp\u003c/p\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1 id=\"update-instructions\"\u003eUpdate instructions\u003c/h1\u003e\n\u003ch4 id=\"docker\"\u003eDocker\u003c/h4\u003e\n\u003col\u003e\n\u003cli\u003e\u003cp\u003eGo to \u003ca href=\"https://download.docker.com/linux/ubuntu/dists/\"\u003ehttps://download.docker.com/linux/ubuntu/dists/\u003c/a\u003e.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eSelect your Ubuntu version in the list.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eGo to pool/stable/ and select the applicable architecture (amd64, armhf, arm64, or s390x).\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eDownload the following deb files for the Docker Engine, CLI, containerd, and Docker Compose packages:\u003c/p\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre\u003e\u003ccode\u003econtainerd.io_\u0026lt;version\u0026gt;_\u0026lt;arch\u0026gt;.deb\ndocker-ce_\u0026lt;version\u0026gt;_\u0026lt;arch\u0026gt;.deb\ndocker-ce-cli_\u0026lt;version\u0026gt;_\u0026lt;arch\u0026gt;.deb\ndocker-buildx-plugin_\u0026lt;version\u0026gt;_\u0026lt;arch\u0026gt;.deb\ndocker-compose-plugin_\u0026lt;version\u0026gt;_\u0026lt;arch\u0026gt;.deb\u003c/code\u003e\u003c/pre\u003e\n\u003col start=\"5\"\u003e\n\u003cli\u003eInstall the .deb packages. Update the paths in the following example to where you downloaded the Docker packages.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre\u003e\u003ccode\u003esudo dpkg -i ./containerd.io_\u0026lt;version\u0026gt;_\u0026lt;arch\u0026gt;.deb \\\n ./docker-ce_\u0026lt;version\u0026gt;_\u0026lt;arch\u0026gt;.deb \\\n ./docker-ce-cli_\u0026lt;version\u0026gt;_\u0026lt;arch\u0026gt;.deb \\\n ./docker-buildx-plugin_\u0026lt;version\u0026gt;_\u0026lt;arch\u0026gt;.deb \\\n ./docker-compose-plugin_\u0026lt;version\u0026gt;_\u0026lt;arch\u0026gt;.deb\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe Docker daemon starts automatically.\u003c/p\u003e\n\u003ch4 id=\"docker-compose\"\u003eDocker Compose\u003c/h4\u003e\n\u003col\u003e\n\u003cli\u003e\u003cp\u003eGo to \u003ca href=\"https://docs.docker.com/compose/release-notes/\"\u003ehttps://docs.docker.com/compose/release-notes/\u003c/a\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eFind new version\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eExecute:\u003c/p\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre\u003e\u003ccode\u003eDOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}\nmkdir -p $DOCKER_CONFIG/cli-plugins\ncurl -SL https://github.com/docker/compose/releases/download/v\u0026lt;version\u0026gt;/docker-compose-linux-\u0026lt;arch\u0026gt; -o $DOCKER_CONFIG/cli-plugins/docker-compose\nchmod +x $DOCKER_CONFIG/cli-plugins/docker-compose\u003c/code\u003e\u003c/pre\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=docker-20-04","addonSlug":null,"imageLabel":"docker-20-04","imageId":158807664,"externalLabel":null,"additionalLinks":[{"name":"Awesome Compose","url":"https://github.com/docker/awesome-compose","description":"A curated list of Docker Compose samples","__typename":"AdditionalLink"},{"name":"Docker on DigitalOcean Community","url":"https://www.digitalocean.com/community/tags/docker","description":"Docker Tutorials, Questions, and Resources","__typename":"AdditionalLink"},{"name":"Source Code","url":"https://github.com/digitalocean/droplet-1-clicks/tree/master/docker-20-04","description":"Packer scripts used to build this 1-Click App","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_2":{"name":"Plesk","appId":"5bcf7c09916ddf7564a7cb9b","developerId":"3","safeName":["plesk"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/plesk-20-04.svg","version":"18.0.62","osVersion":"Ubuntu 22.04","tags":["Blogs and Forums"],"support":{"url":"https://www.plesk.com/support","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Plesk Obsidian","version":"18.0","website":"","releaseNotes":"https://docs.plesk.com/release-notes/obsidian/change-log/","licenseLink":"https://www.plesk.com/legal/","licenseType":"Proprietary","__typename":"CustomSoftware"},{"name":"Ubuntu Linux","version":"22.04","website":"","releaseNotes":"","licenseLink":"https://ubuntu.com/legal","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"WordPress","version":"latest","website":"","releaseNotes":"","licenseLink":"https://wordpress.org/about/license/","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"Apache","version":"2.4","website":"","releaseNotes":"","licenseLink":"https://www.apache.org/licenses/LICENSE-2.0","licenseType":"Apache License","__typename":"CustomSoftware"},{"name":"NGINX","version":"1.14.2","website":"","releaseNotes":"","licenseLink":"http://nginx.org/LICENSE","licenseType":"2-clause BSD-like","__typename":"CustomSoftware"},{"name":"Git","version":"2.21","website":"","releaseNotes":"","licenseLink":"http://opensource.org/licenses/GPL-2.0","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"MySQL","version":"5.7","website":"","releaseNotes":"","licenseLink":"https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"Maria DB","version":"5.5, 10.0, 10.1, 10.2","website":"","releaseNotes":"","licenseLink":"https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"phpMyAdmin","version":"4.8.4","website":"","releaseNotes":"","licenseLink":"https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"PostgreSQL","version":"8.4–10.8","website":"","releaseNotes":"","licenseLink":"https://www.postgresql.org/about/licence/","licenseType":"BSD/MIT similar","__typename":"CustomSoftware"},{"name":"PHP","version":"7.1, 7.2, 7.3","website":"","releaseNotes":"","licenseLink":"https://php.net/license/","licenseType":"PHP License","__typename":"CustomSoftware"},{"name":"Node.js","version":"4.6.1, 6.14.1, 8.11.1, 9.0.0, 10.0.0","website":"","releaseNotes":"","licenseLink":"https://raw.githubusercontent.com/nodejs/node/master/LICENSE","licenseType":"MIT License","__typename":"CustomSoftware"},{"name":"Ruby","version":"2.6.3","website":"","releaseNotes":"","licenseLink":"https://www.ruby-lang.org/en/about/license.txt","licenseType":"Ruby License","__typename":"CustomSoftware"},{"name":"ProFTPD","version":"1.3.6","website":"","releaseNotes":"","licenseLink":"https://opensource.org/licenses/GPL-2.0","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"Courier IMAP","version":"4.16.1","website":"","releaseNotes":"","licenseLink":"https://opensource.org/licenses/GPL-2.0","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"Postfix","version":"2.6–3.1","website":"","releaseNotes":"","licenseLink":"http://www.postfix.org/IBM-Public-License-1.0.txt","licenseType":"IBM Public License","__typename":"CustomSoftware"},{"name":"Dovecot","version":"2.3.4.1","website":"","releaseNotes":"","licenseLink":"https://dovecot.org/doc/COPYING","licenseType":"MIT, LGPL","__typename":"CustomSoftware"},{"name":"Roundcube Webmail","version":"1.3.8","website":"","releaseNotes":"","licenseLink":"https://www.gnu.org/licenses/gpl-3.0.html","licenseType":"GPL","__typename":"CustomSoftware"}],"summary":"Plesk Obsidian (new!) is the leading WebOps platform and hosting control panel","description":"\u003cp\u003ePlesk Obsidian (new!) is the leading secure WordPress and website management platform providing you with a simple yet performant and scalable platform developed for modern website hosting.\u003c/p\u003e\n\u003cp\u003eWith Plesk on DigitalOcean you get access to a modern and lightweight stack to build, secure, and run websites and applications through one intuitive browser-based interface.\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e: To upgrade Plesk, you can now purchase a license for Plesk \u003ca href=\"https://marketplace.digitalocean.com/add-ons/plesk-licenses\" rel=\"noopener\" target=\"_blank\"\u003eright here\u003c/a\u003e on DigitalOcean!\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.youtube.com/watch?v=-DfOMjoAp3k\" rel=\"noopener\" target=\"_blank\"\u003ePlesk on DigitalOcean Intro Video\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.udemy.com/make-wordpress-hosting-easy-with-plesk-on-digitalocean/\" rel=\"noopener\" target=\"_blank\"\u003eFree Udemy Course: Make WordPress Hosting Easy with Plesk on DigitalOcean\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eHost \u0026amp; manage your Websites and Applications\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003eEasily install, manage and operate WordPress, Joomla, Drupal, Magento, Prestashop - or your own custom website or application. For yourself or for your customers.\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eOne Dashboard\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003eBuild and manage multiple sites from a single dashboard. You can also run updates, monitor performance and onboard new prospects all from the same place.\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eRobust Site \u0026amp; Server Security\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003eBroad security by default across OS, network and apps. Firewall, Fail2ban and WAF bundled and activated by default.\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eIntegrated with the DigitalOcean DNS\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003eKeep your domains and websites in sync with Plesk through the DigitalOcean DNS integration available at few clicks.\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eThe Ultimate Toolkit for WordPress Sites\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003eOne platform to install, update and remove instances, themes \u0026amp; plugins. Built-in security, sync and backup/restore features. Optional staging/cloning environments (\u003ca href=\"https://www.plesk.com/upgrade\" rel=\"noopener\" target=\"_blank\"\u003ePro and Host editions only - click to compare\u003c/a\u003e).\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eComplete Flexibility and Control\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003eYou get full root access via SSH on every Plesk-powered VPS so you can install any third-party, open source, or customized application you need.\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eLight Core, expandable with 100+ Extensions\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003eDo more with your platform as you integrate tools like DigiCert SSL, Speed Kit, Node.js, Let’s Encrypt SSL, Git, ImunifyAV, Backup to Cloud Pro and more.\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eManage eMail for all Domains\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003ePlesk comes with a full-fledged eMail server included. Manage multiple users and mailboxes per domain. Or offer eMail hosting to your customers. \u003cstrong\u003eNote: to set up your reverse DNS record required to run an eMail service, please contact the DigitalOcean Support.\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eUpgrade to the full unlimited Plesk Editions\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003eUpgrade to premium features including staging, cloning, reseller management and more or through \u003ca href=\"https://marketplace.digitalocean.com/add-ons/plesk-licenses\" rel=\"noopener\" target=\"_blank\"\u003ePlesk License Add-On\u003c/a\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003ePlesk Droplet/VM Size Requirements\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003ePlesk runs smoothly with 1GB RAM and 1 vCPU for smaller websites and environments. Running multiple websites or higher traffic require a larger droplet size. \u003cstrong\u003eWe recommend 2 CPU cores and 4GB RAM for the best performance\u003c/strong\u003e. \u003ca href=\"https://docs.plesk.com/release-notes/obsidian/hardware-requirements/#s2\" rel=\"noopener\" target=\"_blank\"\u003ePlease also refer to the Plesk Infrastructure Requirements for details.\u003c/a\u003e\u003c/p\u003e\u003c/li\u003e\n\u003c/ul\u003e","gettingStarted":"\u003cp\u003eThe easiest way is by using the root username and password that you define while creating a droplet.\u003c/p\u003e\n\u003ch3 id=\"to-log-in-to-plesk-for-the-first-time-using-a-root-password\"\u003e\u003cstrong\u003eTo log in to Plesk for the first time using a root password:\u003c/strong\u003e\u003c/h3\u003e\n\u003cp\u003eSee the video instruction: \u003ccode\u003ehttps://youtu.be/ZvxiBEQ1ay4\u003c/code\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eCopy the droplet IPv4 address and then open the \u003ccode\u003ehttps://your_droplet_public_ipv4\u003c/code\u003e link in your browser.\u003c/li\u003e\n\u003cli\u003eIgnore the “Your connection is not private” warning in your browser and proceed. It is safe to do so because the connection to your Plesk server is actually secure and encrypted with a self-signed SSL/TLS certificate. \u003c/li\u003e\n\u003cli\u003eOn the Plesk login page, specify the root username, the root password you have created earlier, and then click \u003cstrong\u003eLog in\u003c/strong\u003e.\u003c/li\u003e\n\u003cli\u003eYou will be redirected to the Plesk welcome screen. Follow the instructions on this screen and then click \u003cstrong\u003eEnter Plesk\u003c/strong\u003e to log in to Plesk.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e If you log in to a Plesk instance that is still being deployed, you will see the maintenance screen. Once the deployment is finished, the maintenance screen will be gone and you will be able to start using Plesk.\u003c/p\u003e\n\u003cp\u003eYou can also \u003ca href=\"https://docs.plesk.com/en-US/obsidian/deployment-guide/plesk-installation-and-upgrade-on-public-cloud-services/installing-plesk-on-digitalocean.79699/#accessing-plesk-for-the-first-time\"\u003elog in to Plesk using SSH keys\u003c/a\u003e if you have chosen this way when creating a droplet.\u003c/p\u003e\n\u003ch3 id=\"next-steps\"\u003eNext steps\u003c/h3\u003e\n\u003cp\u003eYour Plesk is completely ready to work and you can start adding your first domain. However, we recommend that you also make the following steps:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://docs.plesk.com/en-US/obsidian/deployment-guide/plesk-installation-and-upgrade-on-public-cloud-services/installing-plesk-on-digitalocean.79699/#setting-up-dns-hosting\"\u003eSet up DNS hosting in DigitalOcean DNS\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.plesk.com/en-US/obsidian/deployment-guide/plesk-installation-and-upgrade-on-public-cloud-services/installing-plesk-on-digitalocean.79699/#assigning-floating-ip-addresses\"\u003eAssign a floating IP address to your droplet\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"see-further-information\"\u003eSee further information:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://docs.plesk.com/en-US/obsidian/deployment-guide/plesk-installation-and-upgrade-on-public-cloud-services/installing-plesk-on-digitalocean.79699/\"\u003ePlesk DigitalOcean Documentation\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.plesk.com/release-notes/obsidian/hardware-requirements/#s2\"\u003ePlesk Infrastructure requirements\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.plesk.com/\"\u003ePlesk Documentation\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.udemy.com/make-wordpress-hosting-easy-with-plesk-on-digitalocean/\"\u003eFree Udemy Course: Make WordPress Hosting Easy with Plesk on DigitalOcean\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.plesk.com/university\"\u003ePlesk University\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=plesk-20-04","addonSlug":null,"imageLabel":"plesk-20-04","imageId":159642360,"externalLabel":null,"additionalLinks":[{"name":"Upgrade your Plesk to a Web Pro or Web Host Edition","url":"https://marketplace.digitalocean.com/add-ons/plesk-licenses","description":"Upgrade your Web Admin license to a Web Pro or Web Host Edition.","__typename":"AdditionalLink"},{"name":"Plesk Course on Udemy (free)","url":"https://www.udemy.com/course/make-wordpress-hosting-easy-with-plesk-on-digitalocean/","description":"Host your WordPress website on DigitalOcean and simplify WordPress and webhosting with the Plesk hosting platform. ","__typename":"AdditionalLink"},{"name":"Plesk University (free)","url":"https://www.plesk.com/university","description":"Designed with your needs in mind, Plesk certification courses will guide you from being a novice to becoming an expert. ","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_3":{"name":"cPanel \u0026 WHM® for Ubuntu","appId":"6269a31eeb95f473a48e67dd","developerId":"22","safeName":["cpanel-whm-for-ubuntu"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/cpanel-cpanelwhmforubun.svg","version":"118","osVersion":"Ubuntu 20.04 (LTS)","tags":["Blogs and Forums"],"support":{"url":"https://go.cpanel.net/digitalocean","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"WordPress","version":"5.9.3","website":"","releaseNotes":"","licenseLink":"","licenseType":"GPL 2","__typename":"CustomSoftware"},{"name":"Roundcube","version":"1.5.2.1","website":"","releaseNotes":"","licenseLink":"","licenseType":"GPL 3","__typename":"CustomSoftware"},{"name":"git","version":"2.35.2","website":"","releaseNotes":"","licenseLink":"","licenseType":"GPL 2","__typename":"CustomSoftware"}],"summary":"Create an exceptional hosting experience using the industry leading hosting platform with world-class support. Ubuntu 20.04 LTS is now a supported operating system.","description":"\u003cp\u003eThe cPanel interface allows your customers to do a multitude of things to manage their sites, intranets, and keep their online properties running smoothly.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003ePublish a website\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eAllow your customers to choose from the most popular site builders to launch their web presence or give them the resources to build and monitor their own websites from the ground up.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eCreate emails \u0026amp; calendars\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eGive your customers the ability to stay connected with the powerful email and calendar capabilities baked into cPanel \u0026amp; WHM. With our software, they can launch new email accounts, create shared calendars and enjoy various levels of spam protection.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eBackup, transfer \u0026amp; manage files\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eSecurely backup and transfer all web files from within the cPanel interface or allow your customers to use the FTP controls.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eManage domains\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eOffer your tech-savvy site owners the power to manage their network of domains. Create aliases, add or remove subdomains, manage DNS zones and direct site visitors around any of your web properties.\u003c/p\u003e","gettingStarted":"\u003cp\u003eWhen you create a droplet, cPanel \u0026amp; WHM will automatically begin installation in the background. The installation process takes about 10-15 minutes. You cannot log in to WHM until the installation process is complete.\u003c/p\u003e\n\u003cp\u003eFor instructions on logging in to WHM and creating a WordPress site, read our \u003ca href=\"https://docs.cpanel.net/knowledge-base/accounts/from-whm-to-website/\"\u003eFrom WHM to Website\u003c/a\u003e documentation.\u003c/p\u003e\n\u003cp\u003eFor more information about installing, configuring, and managing WordPress, read our \u003ca href=\"https://docs.cpanel.net/knowledge-base/cpanel-developed-plugins/wordpress-toolkit/\"\u003eWordPress Toolkit\u003c/a\u003e documentation.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=cpanel-cpanelwhmforubun","addonSlug":null,"imageLabel":"cpanel-cpanelwhmforubun","imageId":154651149,"externalLabel":null,"additionalLinks":null,"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_4":{"name":"OpenVPN Access Server","appId":"5ca53addcc34df6c75840755","developerId":"31","safeName":["openvpn-access-server"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/openvpn-logo.svg","version":"2.11.3","osVersion":"Ubuntu 22.04","tags":["Security"],"support":{"url":"https://openvpn.net/digital-ocean-support/","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"OpenVPN Access Server","version":"2.11.3","website":"","releaseNotes":"https://openvpn.net/vpn-server-resources/release-notes/","licenseLink":"https://openvpn.net/license/","licenseType":"Custom","__typename":"CustomSoftware"}],"summary":"Run your own OpenVPN server with web-based interface.","description":"\u003cp\u003eOpenVPN Access Server offers a web based interface to easily setup and manage your OpenVPN-based VPN server to access private and public resources that is compatible with many platforms, and supports multiple authentication systems.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eGet Technical Support 24/7 and Schedule a Live Demo at openvpn.com.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThe official OpenVPN Connect client supports Windows, macOS, iOS, Android and ChromeOS, while the open source OpenVPN client provides support for Linux, FreeBSD, and many other platforms and devices.\u003c/p\u003e\n\u003cp\u003eOur products are based on the market-proven OpenVPN protocol and trusted by some of the world\u0026#39;s most renowned brands for their unmatched flexibility, scalability, and ease of use. \u003c/p\u003e\n\u003cp\u003eAccess Server includes a built-in local authentication system that can be fully managed in the web interface, but can also authenticate against PAM, LDAP, RADIUS, SAML, and even custom authentication solutions.\u003c/p\u003e\n\u003cp\u003eOur licensing model is based on the number of active VPN connections allowing us to provide businesses of any size with an affordable and scalable solution. Access Server is free to install and use for 2 simultaneous VPN connections for testing purposes.\u003c/p\u003e\n\u003cp\u003e--\u003cbr/\u003e\nOpenVPN Access Server is OpenVPN Inc.\u0026#39;s official self-managed VPN server solution. For a fully managed cloud solution we also offer CloudConnexa.\u003c/p\u003e","gettingStarted":"\u003ch3 id=\"deployment-steps\"\u003eDeployment steps\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\u003cp\u003eDeploy a Droplet from the Marketplace and log on using SSH.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eDuring setup an admin user and password will be set.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eNext log on to the admin web interface of your droplet, for example: \u003ca href=\"https://123.45.67.89/admin/\"\u003ehttps://123.45.67.89:943/admin/\u003c/a\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eIf you see any SSL certificate warnings, that is normal, please override them.\u003c/p\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eOur \u003ca href=\"https://openvpn.net/vpn-server-resources/digital-ocean-quick-start-guide/\"\u003eQuick Start Guide\u003c/a\u003e gives more details on how to quickly get started with your own Access Server.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=openvpn-18-04","addonSlug":null,"imageLabel":"openvpn-18-04","imageId":126498652,"externalLabel":null,"additionalLinks":[{"name":"Quick Start Guide","url":"https://openvpn.net/vpn-server-resources/digital-ocean-quick-start-guide/","description":"Get started quickly","__typename":"AdditionalLink"},{"name":"Frequently Asked Questions","url":"https://openvpn.net/digital-ocean-faq/","description":"Frequently Asked Questions","__typename":"AdditionalLink"},{"name":"OpenVPN Support","url":"https://openvpn.net/digital-ocean-support/","description":"Get support for Access Server","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"CategoryGroup"},{"nav_icon":{"dimensions":{"width":155,"height":150,"__typename":"PrismicImageDimensions"},"url":"https://images.prismic.io/do-marketplace-testing%2Ff21c2280-d135-435f-9da9-8cba079e089e_kubernetes.svg?auto=compress,format","__typename":"PrismicStructuredImage"},"category":"Kubernetes","is_new":"false","is_visible_in_nav":"true","nav_description":[{"text":"Apps for DigitalOcean Kubernetes.","__typename":"PrismicStructuredText"}],"hero_text":[{"text":"Learn Kubernetes by starting with one of our preconfigured stacks.","__typename":"PrismicStructuredText"}],"staff_pick_1":{"name":"ngrok Ingress Controller","appId":"44acc8aaa116d7cd306a74aa","developerId":"3712","safeName":["ngrok-ingress-controller"],"created":0,"type":"kubernetes","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/ngrok-ngrokingresscont.png","version":"0.12.1","osVersion":"","tags":["Network Tools","Kubernetes"],"support":{"url":"http://ngrok.com","email":"support@ngrok.com","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":null,"summary":"The ngrok Ingress Controller for Kubernetes is our official open-source controller for adding public and secure ingress traffic to your k8s services.","description":"\u003cp\u003eThe ngrok Ingress Controller for Kubernetes provides ingress-as-a-service to your Kubernetes applications by offloading traffic management, performance, and security to ngrok’s global network.\u003c/p\u003e\n\u003cp\u003eBecause it leverages native Kubernetes tooling, you can configure the route, host, and downstream service via the standard Kubernetes Ingress object, and you can deploy it to your DigitalOcean Kubernetes (DOKS) cluster with a Helm chart.\u003c/p\u003e\n\u003cp\u003eOnce deployed to your cluster, the Ingress Controller connects to ngrok’s cloud service, which provisions the resources necessary to provide the ingress—such as Web Application Firewalls, Global Server Load Balancers, local load balancers, and reverse proxies—in ngrok’s global network.\u003c/p\u003e\n\u003cp\u003eThe ngrok Ingress Controller for Kubernetes equips you to serve apps and APIs without needing to configure networking details such as ELBs, IPs, network interfaces, or VPC routing, radically simplifying ingress into Kubernetes.\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://info.ngrok.com/hubfs/marketplace-listing/ngrok_kic_diagram.png\" alt=\"\"/\u003e\u003c/p\u003e","gettingStarted":"\u003ch2 id=\"connect-to-your-cluster\"\u003eConnect to your cluster\u003c/h2\u003e\n\u003cp\u003eFollow \u003ca href=\"https://docs.digitalocean.com/products/kubernetes/how-to/connect-to-cluster/\"\u003ethese instructions\u003c/a\u003e to connect to your cluster with \u003ccode\u003ekubectl\u003c/code\u003e and \u003ccode\u003edoctl\u003c/code\u003e.\u003c/p\u003e\n\u003ch2 id=\"confirm-that-the-ngrok-ingress-controller-is-running\"\u003eConfirm that the ngrok Ingress Controller is running\u003c/h2\u003e\n\u003cp\u003eRun the steps below to confirm the Ingress Controller is running in your cluster.\u003c/p\u003e\n\u003ch3 id=\"verify-the-helm-installation-was-successful\"\u003eVerify the Helm installation was successful\u003c/h3\u003e\n\u003cp\u003eRun the following command:\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ehelm ls -n ngrok-ingress-controller\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eThe output looks similar to the following:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eNAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION\nngrok-ingress-controller ngrok-ingress-controller 1 2023-12-05 16:16:32.756868 -0600 CST deployed kubernetes-ingress-controller-0.12.1 0.10.1\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe \u003ccode\u003eSTATUS\u003c/code\u003e column value should be \u003ccode\u003edeployed\u003c/code\u003e.\u003c/p\u003e\n\u003ch3 id=\"verify-the-ngrok-ingress-controller-pods-are-up-and-running\"\u003eVerify the ngrok Ingress Controller pods are up and running\u003c/h3\u003e\n\u003cp\u003eRun the following command:\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ekubectl get pods -n ngrok-ingress-controller\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eThe output looks similar to the following:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eNAME READY STATUS RESTARTS AGE\nngrok-ingress-controller-kubernetes-ingress-controller-manwpd5d 1/1 Running 0 33s\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eAll pods should be in a \u003ccode\u003eREADY\u003c/code\u003e state, and \u003ccode\u003eSTATUS\u003c/code\u003e should be \u003ccode\u003eRunning\u003c/code\u003e.\u003c/p\u003e\n\u003ch2 id=\"add-ngrok-credentials\"\u003eAdd ngrok credentials\u003c/h2\u003e\n\u003cp\u003eBy default, the ngrok Ingress Controller looks for your authtoken and API key in the named secret: \u003ccode\u003engrok-ingress-controller-credentials\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003ePlease ensure that the secret exists in your cluster. To apply the secret to your cluster, create a file called \u003ccode\u003ecreds.yaml\u003c/code\u003e with the contents below, entering your own \u003ccode\u003eAPI_KEY\u003c/code\u003e and \u003ccode\u003eAUTHTOKEN\u003c/code\u003e values.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eapiVersion: v1\nkind: Secret\nmetadata:\n name: ngrok-ingress-controller-credentials\n namespace: ngrok-ingress-controller\ndata:\n API_KEY: \"YOUR-API-KEY\"\n AUTHTOKEN: \"YOUR-AUTHTOKEN\"\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eApply the manifest to your DOKS cluster by running the following:\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ekubectl apply -f creds.yaml\u003c/code\u003e\u003c/p\u003e\n\u003ch2 id=\"deploy-a-sample-application\"\u003eDeploy a sample application\u003c/h2\u003e\n\u003cp\u003eYou can now deploy an application to your DOKS cluster and configure ingress using the standard Ingress object.\u003c/p\u003e\n\u003cp\u003eCreate a \u003ccode\u003emanifest.yml\u003c/code\u003e file with the following contents, replacing \u003ccode\u003eNGROK_DOMAIN\u003c/code\u003e with your ngrok domain name:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eapiVersion: v1\nkind: Service\nmetadata:\n name: game-2048\n namespace: ngrok-ingress-controller\nspec:\n ports:\n - name: http\n port: 80\n targetPort: 80\n selector:\n app: game-2048\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: game-2048\n namespace: ngrok-ingress-controller\nspec:\n replicas: 1\n selector:\n matchLabels:\n app: game-2048\n template:\n metadata:\n labels:\n app: game-2048\n spec:\n containers:\n - name: backend\n image: alexwhen/docker-2048\n ports:\n - name: http\n containerPort: 80\n---\n# ngrok Ingress Controller Configuration\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n name: game-2048-ingress\n namespace: ngrok-ingress-controller\nspec:\n ingressClassName: ngrok\n rules:\n - host: NGROK_DOMAIN\n http:\n paths:\n - path: /\n pathType: Prefix\n backend:\n service:\n name: game-2048\n port:\n number: 80\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eApply the manifest to your DOKS cluster by running the following:\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ekubectl apply -f ngrok-manifest.yaml\u003c/code\u003e\u003c/p\u003e\n\u003ch2 id=\"verify-deployment\"\u003eVerify deployment\u003c/h2\u003e\n\u003cp\u003eTo confirm the manifest was successfully applied, go to the \u003ca href=\"https://dashboard.ngrok.com/\"\u003engrok Dashboard\u003c/a\u003e and click \u003ca href=\"https://dashboard.ngrok.com/edge-configurations\"\u003eEdge Configurations\u003c/a\u003e. You should see a new Edge Configuration for your cluster with the name matching your URL. For example, \u003ccode\u003emy-awesome-k8s-cluster.ngrok.app\u003c/code\u003e (1). Also note that some of your cluster configurations are presented in the dashboard as annotations (2).\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://info.ngrok.com/hubfs/marketplace-listing/ngrok-edges.png\" alt=\"\"\u003e\u003c/p\u003e\n\u003cp\u003eGo to your ngrok domain in a web browser to test the deployment. You should see the 2048 game application running.\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://info.ngrok.com/hubfs/marketplace-listing/game-scoreboard.png\" alt=\"\"\u003e\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/kubernetes/clusters/new?addonslug=ngrok-ingress-controller\u0026nodePools=s-1vcpu-2gb%3A3","addonSlug":"ngrok-ingress-controller","imageLabel":"","imageId":null,"externalLabel":null,"additionalLinks":[{"name":"Documentation","url":"https://ngrok.com/docs/using-ngrok-with/k8s/","description":"The documentation for the ngrok Ingress Controller for Kubernetes.","__typename":"AdditionalLink"},{"name":"GitHub Repo","url":"https://github.com/ngrok/kubernetes-ingress-controller","description":"The GitHub repository for the ngrok Ingress Controller for Kubernetes","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_2":{"name":"Kubernetes Metrics Server","appId":"5d83d4f9cc248c518b58a38c","developerId":"1","safeName":["kubernetes-metrics-server"],"created":0,"type":"kubernetes","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/monitoring-logo.svg","version":"latest","osVersion":"","tags":["Monitoring","Kubernetes"],"support":{"url":"https://docs.digitalocean.com/support/","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"metrics-server","version":"0.6.4","website":"","releaseNotes":"https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.6.4","licenseLink":"https://github.com/kubernetes-sigs/metrics-server/blob/master/LICENSE","licenseType":"Apache 2.0","__typename":"CustomSoftware"}],"summary":"Metrics Server is a scalable, efficient source of container resource metrics for Kubernetes built-in autoscaling pipelines.","description":"\u003cp\u003e\u003ca href=\"https://github.com/kubernetes-sigs/metrics-server\" rel=\"noopener\" target=\"_blank\"\u003eMetrics server\u003c/a\u003e is an open source metrics API implementation, created and maintained by the Kubernetes SIG. Main purpose of metrics-server is to help the Kubernetes \u003ca href=\"https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale\" rel=\"noopener\" target=\"_blank\"\u003eHorizontal Pod Autoscaler\u003c/a\u003e to automatically scale up or down your application workloads based on external factors (such as heavy HTTP traffic). In a nutshell, metrics-server works by collecting resource metrics from Kubelets and exposing them via the Kubernetes API Server to be consumed by the Horizontal Pod Autoscaler (aka HPA). Metrics API can also be accessed by \u003ccode\u003ekubectl top\u003c/code\u003e, making it easier to debug autoscaling pipelines.\u003c/p\u003e\n\u003cp\u003eAlthough you can query metrics-server for resource utilization metrics such as CPU and memory, it\u0026#39;s not advised to do so. This is due to the fact that provided metrics data may not be very accurate. For better results you would want to use a dedicated monitoring solution like \u003ca href=\"https://prometheus.io\" rel=\"noopener\" target=\"_blank\"\u003ePrometheus\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003ePlease make sure to check metrics-server \u003ca href=\"https://github.com/kubernetes-sigs/metrics-server/blob/master/README.md\" rel=\"noopener\" target=\"_blank\"\u003eofficial documentation\u003c/a\u003e for more details.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eDigitalOcean is using Helm v3 to deploy metrics-server to your DOKS cluster.\u003c/p\u003e\n\u003ch2 id=\"metrics-server-and-hpa-overview-diagram\"\u003eMetrics-Server and HPA Overview Diagram\u003c/h2\u003e\n\u003cp\u003eBelow diagram shows a high level overview of how HPA (Horizontal Pod Autoscaling) works in conjunction with metrics-server:\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://raw.githubusercontent.com/digitalocean/marketplace-kubernetes/master/stacks/metrics-server/assets/images/arch_hpa.png\" alt=\"Metrics-Server and HPA Overview\"/\u003e\u003c/p\u003e","gettingStarted":"\u003ch3 id=\"connecting-to-your-cluster\"\u003eConnecting to Your Cluster\u003c/h3\u003e\n\u003cp\u003eYou can connect to your DigitalOcean Kubernetes cluster by following our \u003ca href=\"https://www.digitalocean.com/docs/kubernetes/how-to/connect-to-cluster/\"\u003ehow-to guide\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eFor additional instructions on configuring a \u003ca href=\"https://cloud.digitalocean.com/kubernetes/clusters/\"\u003eDigitalOcean Kubernetes\u003c/a\u003e cluster, see the following guides:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/digitalocean/Kubernetes-Starter-Kit-Developers/tree/main/01-setup-DOKS#how-to-set-up-a-digitalocean-managed-kubernetes-cluster-doks\"\u003eHow to Set Up a DigitalOcean Managed Kubernetes Cluster (DOKS)\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/digitalocean/Kubernetes-Starter-Kit-Developers/tree/main/02-setup-DOCR#how-to-set-up-digitalocean-container-registry\"\u003eHow to Set up DigitalOcean Container Registry\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"verifying-that-metrics-server-is-running\"\u003eVerifying that Metrics-Server is Running\u003c/h3\u003e\n\u003cp\u003eFirst, verify that the metrics-server Helm installation was successful by running following command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ehelm ls -n metrics-server\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eIf the installation was successful, the \u003ccode\u003eSTATUS\u003c/code\u003e column value in the output reads \u003ccode\u003edeployed\u003c/code\u003e:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"text language-text\"\u003eNAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION\nmetrics-server metrics-server 1 2022-03-16 15:10:59.586786 +0200 EET deployed metrics-server-3.11.0 0.6.4\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eNext, verify that the metrics-server pods are up and running with the following command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ekubectl get pods -n metrics-server\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eIf they're running, all pods listed in the output are in a \u003ccode\u003eREADY\u003c/code\u003e state and the \u003ccode\u003eSTATUS\u003c/code\u003e for each reads \u003ccode\u003eRunning\u003c/code\u003e:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"text language-text\"\u003eNAME READY STATUS RESTARTS AGE\nmetrics-server-694d47d564-mzq2c 1/1 Running 0 75s\nmetrics-server-694d47d564-pl7v7 1/1 Running 0 75s\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"tweaking-helm-chart-values\"\u003eTweaking Helm Chart Values\u003c/h3\u003e\n\u003cp\u003eThe metrics-server has custom default Helm values. See the \u003ca href=\"https://github.com/digitalocean/marketplace-kubernetes/blob/master/stacks/metrics-server/values.yml\"\u003evalues\u003c/a\u003e file from the main GitHub repository (explanations are provided inside, where necessary).\u003c/p\u003e\n\u003cp\u003eTo inspect its current values, run the following command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ehelm show values metrics-server/metrics-server --version 3.11.0\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eTo change these values, open the Helm values file \u003ccode\u003evalues.yml\u003c/code\u003e, change whatever values you want, save and exit the file, and apply the changes by running \u003ccode\u003ehelm upgrade\u003c/code\u003e command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ehelm upgrade metrics-server metrics-server/metrics-server --version 3.11.0 \\\n --namespace metrics-server \\\n --values values.yml\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"checking-available-metrics\"\u003eChecking Available Metrics\u003c/h3\u003e\n\u003cp\u003eThe quickest way to test metrics data is via the \u003ccode\u003ekubectl top\u003c/code\u003e subcommand. You can check resource usage at cluster level (worker nodes), or at pods level.\u003c/p\u003e\n\u003cp\u003eTo check resource usage at cluster level (worker nodes), run below command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ekubectl top nodes\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe output looks similar to (notice the resource usage being displayed for both \u003ccode\u003eCPU\u003c/code\u003e and \u003ccode\u003ememory\u003c/code\u003e on each worker node):\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"text language-text\"\u003eNAME CPU(cores) CPU% MEMORY(bytes) MEMORY% \nbasicnp-uidj6 50m 5% 1183Mi 75% \nbasicnp-uidjt 75m 8% 1180Mi 75% \npool-ocas657r9-u0h5m 1619m 85% 2358Mi 75% \npool-ocas657r9-u0h5q 147m 7% 2322Mi 74%\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can also check resource usage at Pod level for a specific namespace, like this:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ekubectl top pods -n metrics-server\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe output looks similar to (notice \u003ccode\u003eCPU usage\u003c/code\u003e expressed in \u003ccode\u003emillicores\u003c/code\u003e, as well as \u003ccode\u003ememory usage\u003c/code\u003e in \u003ccode\u003eMebibytes\u003c/code\u003e):\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"text language-text\"\u003eNAME CPU(cores) MEMORY(bytes) \nmetrics-server-694d47d564-mzq2c 4m 24Mi \nmetrics-server-694d47d564-pl7v7 4m 25Mi\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"upgrading-metrics-server-stack\"\u003eUpgrading Metrics-Server Stack\u003c/h3\u003e\n\u003cp\u003eYou can check what versions are available to upgrade by navigating to the \u003ca href=\"https://github.com/kubernetes-sigs/metrics-server/releases\"\u003emetrics-server\u003c/a\u003e official releases page from GitHub. Alternatively, you can use \u003ca href=\"https://artifacthub.io/packages/helm/metrics-server/metrics-server\"\u003eArtifactHUB\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eTo upgrade the stack to a newer version, run the following command, replacing the \u003ccode\u003e\u0026amp;amp;amp;amp;amp;amp;amp;lt; \u0026amp;amp;amp;amp;amp;amp;amp;gt;\u003c/code\u003e placeholders with their corresponding information:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ehelm upgrade metrics-server metrics-server/metrics-server \\\n --version \u0026lt;METRICS_SERVER_NEW_VERSION\u0026gt; \\\n --namespace metrics-server \\\n --values \u0026lt;YOUR_HELM_VALUES_FILE\u0026gt;\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee \u003ca href=\"https://helm.sh/docs/helm/helm_upgrade/\"\u003ehelm upgrade\u003c/a\u003e for command documentation.\u003c/p\u003e\n\u003cp\u003eAlso, make sure to check the \u003ca href=\"https://github.com/kubernetes-sigs/metrics-server#compatibility-matrix\"\u003ecompatibility matrix\u003c/a\u003e, which shows what metrics-server API version is supported by what Kubernetes version.\u003c/p\u003e\n\u003ch3 id=\"uninstalling-metrics-server-stack\"\u003eUninstalling Metrics-Server Stack\u003c/h3\u003e\n\u003cp\u003eTo delete your installation of metrics-server, run the following Helm command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ehelm uninstall metrics-server -n metrics-server\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThe above command will delete all the associated Kubernetes resources installed by the metrics-server Helm chart, except the namespace itself. To delete the metrics-server namespace as well, run following command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ekubectl delete ns metrics-server\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"additional-resources\"\u003eAdditional Resources\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale\"\u003eKubernetes Horizontal Pod Autoscaling\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://kubernetes.io/docs/tasks/debug-application-cluster/resource-metrics-pipeline\"\u003eKubernetes Resource Metrics Pipeline\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough\"\u003eHPA Walkthrough using Metrics Server\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e","createApp":"https://cloud.digitalocean.com/kubernetes/clusters/new?addonslug=metrics-server\u0026nodePools=s-1vcpu-2gb%3A3","addonSlug":"metrics-server","imageLabel":"","imageId":null,"externalLabel":null,"additionalLinks":null,"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_3":{"name":"Kubernetes Monitoring Stack","appId":"5d163fdd29a6ab0d4c7d5274","developerId":"1","safeName":["kubernetes-monitoring-stack"],"created":0,"type":"kubernetes","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/monitoring-logo.svg","version":"latest","osVersion":"","tags":["Monitoring","Kubernetes"],"support":{"url":"https://docs.digitalocean.com/support/","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"kube-prometheus-stack","version":"55.7.0","website":"https://artifacthub.io/packages/helm/prometheus-community/kube-prometheus-stack","releaseNotes":"https://artifacthub.io/packages/helm/prometheus-community/kube-prometheus-stack/55.7.0","licenseLink":"https://artifacthub.io/packages/helm/prometheus-community/kube-prometheus-stack","licenseType":"Apache 2.0","__typename":"CustomSoftware"}],"summary":"Prometheus, Grafana, and Alertmanager preinstalled and integrated together on a DigitalOcean Kubernetes Cluster.","description":"\u003cp\u003e\u003ca href=\"https://prometheus.io/\" rel=\"noopener\" target=\"_blank\"\u003ePrometheus\u003c/a\u003e is a very popular and comprehensive systems monitoring solution. It is a standalone open source project and maintained independently of any company. A big plus is the capability to monitor \u003ccode\u003eKubernetes\u003c/code\u003e clusters as well, which tend to be pretty complex in nature. Prometheus eases the operational tasks that are required in setting up a monitoring stack.\u003c/p\u003e\n\u003cp\u003eThe \u003ca href=\"https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/\" rel=\"noopener\" target=\"_blank\"\u003ekube-prometheus-stack\u003c/a\u003e is meant for \u003ccode\u003ecluster monitoring\u003c/code\u003e, so it is \u003ccode\u003epre-configured\u003c/code\u003e to collect metrics from all \u003ccode\u003eKubernetes components\u003c/code\u003e. In addition to that it delivers a default set of \u003ccode\u003edashboards\u003c/code\u003e and \u003ccode\u003ealerting\u003c/code\u003e rules. Many of the useful dashboards and alerts come from the \u003ca href=\"https://github.com/kubernetes-monitoring/kubernetes-mixin/\" rel=\"noopener\" target=\"_blank\"\u003ekubernetes-mixin\u003c/a\u003e project.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003ekube-prometheus-stack\u003c/code\u003e consists of three main components:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ePrometheus Operator\u003c/code\u003e, for spinning up and managing \u003ccode\u003ePrometheus\u003c/code\u003e instances in your \u003ccode\u003eDOKS\u003c/code\u003e cluster.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eGrafana\u003c/code\u003e, for visualizing metrics and plot data using stunning dashboards.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eAlertmanager\u003c/code\u003e, for configuring various notifications (e.g. \u003ccode\u003ePagerDuty\u003c/code\u003e, \u003ccode\u003eSlack\u003c/code\u003e, \u003ccode\u003eemail\u003c/code\u003e, etc) based on various alerts received from the Prometheus main server.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePrometheus follows a \u003ccode\u003epull\u003c/code\u003e model when it comes to metrics gathering, meaning that it expects a \u003ccode\u003e/metrics\u003c/code\u003e endpoint to be exposed by the service in question for scraping. For every metric that is being fetched by Prometheus, a time series database is used to store the data points.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eGrafana\u003c/code\u003e helps you gather data points from the Prometheus time series database, and plot everything using beautiful graphs grouped into dashboards. You can also perform queries using the \u003ccode\u003ePromQL\u003c/code\u003e language. To persist all the data (metrics and various settings), you need to allocate block storage for both Prometheus and Grafana instances via \u003ccode\u003ePersistent Volumes\u003c/code\u003e (or PVs).\u003c/p\u003e\n\u003cp\u003eThe \u003ca href=\"https://github.com/prometheus/alertmanager/\" rel=\"noopener\" target=\"_blank\"\u003eAlertmanager\u003c/a\u003e component handles alerts sent by client applications such as the Prometheus server. It takes care of \u003ccode\u003ededuplicating\u003c/code\u003e, \u003ccode\u003egrouping\u003c/code\u003e, and \u003ccode\u003erouting\u003c/code\u003e them to the correct \u003ccode\u003ereceiver\u003c/code\u003e integration such as \u003ccode\u003eemail\u003c/code\u003e, \u003ccode\u003ePagerDuty\u003c/code\u003e, or \u003ccode\u003eSlack\u003c/code\u003e. It also takes care of \u003ccode\u003esilencing\u003c/code\u003e and \u003ccode\u003einhibition\u003c/code\u003e of alerts.\u003c/p\u003e\n\u003cp\u003ePlease make sure to visit the official documentation page for each of the components to learn more:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://prometheus.io/docs/\" rel=\"noopener\" target=\"_blank\"\u003ePrometheus\u003c/a\u003e, to learn more about all the available features, as well as various configuration options.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/user-guides/getting-started.md\" rel=\"noopener\" target=\"_blank\"\u003ePrometheus Operator\u003c/a\u003e, which provides useful information on how to use the operator.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://prometheus.io/docs/alerting/latest/alertmanager/\" rel=\"noopener\" target=\"_blank\"\u003eAlertmanager\u003c/a\u003e, to learn more about Alertmanager and integrations with various notification platforms.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eNotes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigitalOcean is using \u003ccode\u003eHelm v3\u003c/code\u003e to deploy \u003ccode\u003ePrometheus\u003c/code\u003e to your \u003ccode\u003eDOKS\u003c/code\u003e cluster.\u003c/li\u003e\n\u003cli\u003eThis chart was formerly named \u003ccode\u003eprometheus-operator\u003c/code\u003e chart, now renamed to more clearly reflect that it installs the \u003ccode\u003ekube-prometheus\u003c/code\u003e project stack, within which \u003ccode\u003ePrometheus Operator\u003c/code\u003e is only one component.\u003c/li\u003e\n\u003cli\u003eThe Prometheus stack 1-Click App also includes a $1/month block storage for both Grafana and Prometheus time series database (two \u003ccode\u003ePVs\u003c/code\u003e of \u003ccode\u003e5GB\u003c/code\u003e each, to start with).\u003c/li\u003e\n\u003c/ul\u003e","gettingStarted":"\u003ch3 id=\"how-to-connect-to-your-cluster\"\u003eHow to Connect to Your Cluster\u003c/h3\u003e\n\u003cp\u003eFollow these \u003ca href=\"https://www.digitalocean.com/docs/kubernetes/how-to/connect-to-cluster/\"\u003einstructions\u003c/a\u003e to connect to your cluster with \u003ccode\u003ekubectl\u003c/code\u003e and \u003ccode\u003edoctl\u003c/code\u003e. Additional instructions for connecting to your cluster are included in the \u003ca href=\"https://cloud.digitalocean.com/kubernetes/clusters/\"\u003eDigitalOcean Control Panel\u003c/a\u003e.\u003c/p\u003e\n\u003ch3 id=\"how-to-confirm-that-prometheus-monitoring-stack-is-running\"\u003eHow to confirm that Prometheus monitoring stack is running\u003c/h3\u003e\n\u003cp\u003eFirst, check if the Helm installation was successful, by running below command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ehelm ls -n kube-prometheus-stack\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe output looks similar to (the \u003ccode\u003eSTATUS\u003c/code\u003e column value should be \u003ccode\u003edeployed\u003c/code\u003e):\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"text language-text\"\u003eNAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION\nkube-prometheus-stack kube-prometheus-stack 1 2022-02-16 16:02:48 deployed kube-prometheus-stack-55.7.0 0.70.0\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eNext, verify if the Prometheus stack Pods are up and running:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ekubectl get pods -n kube-prometheus-stack\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe output looks similar to (all Pods should be in a \u003ccode\u003eREADY\u003c/code\u003e state, and \u003ccode\u003eSTATUS\u003c/code\u003e should be \u003ccode\u003eRunning\u003c/code\u003e):\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"text language-text\"\u003eNAME READY STATUS RESTARTS AGE\nalertmanager-kube-prometheus-stack-alertmanager-0 2/2 Running 0 8m24s\nkube-prometheus-stack-grafana-6f6fbc5cd9-7zbnl 3/3 Running 0 8m30s\nkube-prometheus-stack-kube-state-metrics-596b9c6b55-zxpmn 1/1 Running 0 8m30s\nkube-prometheus-stack-operator-7bb8679c95-mpdms 1/1 Running 0 8m30s\nkube-prometheus-stack-prometheus-node-exporter-vzb5m 1/1 Running 0 8m30s\nkube-prometheus-stack-prometheus-node-exporter-xz44k 1/1 Running 0 8m30s\nprometheus-kube-prometheus-stack-prometheus-0 2/2 Running 0 8m24s\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"accessing-prometheus-web-panel\"\u003eAccessing Prometheus Web Panel\u003c/h3\u003e\n\u003cp\u003eYou can access Prometheus web console by port forwarding the \u003ccode\u003ekube-prometheus-stack-prometheus\u003c/code\u003e service:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ekubectl port-forward svc/kube-prometheus-stack-prometheus 9090:9090 -n kube-prometheus-stack\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eNext, launch a web browser of your choice, and enter the following URL: http://localhost:9090. To see what targets were discovered by Prometheus, please navigate to http://localhost:9090/targets.\u003c/p\u003e\n\u003ch3 id=\"accessing-grafana-web-panel\"\u003eAccessing Grafana Web Panel\u003c/h3\u003e\n\u003cp\u003eYou can connect to Grafana (default credentials: \u003ccode\u003eadmin/prom-operator\u003c/code\u003e), by port forwarding the \u003ccode\u003ekube-prometheus-stack-grafana\u003c/code\u003e service:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ekubectl port-forward svc/kube-prometheus-stack-grafana 3000:80 -n kube-prometheus-stack\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eNext, launch a web browser of your choice, and enter the following URL: http://localhost:3000. You can take a look around, and see what dashboards are available for you to use from the \u003ca href=\"https://github.com/kubernetes-monitoring/kubernetes-mixin\"\u003ekubernetes-mixin\u003c/a\u003e project as an example, by navigating to the following URL: http://localhost:3000/dashboards?tag=kubernetes-mixin.\u003c/p\u003e\n\u003ch3 id=\"tweaking-helm-chart-values\"\u003eTweaking Helm Chart Values\u003c/h3\u003e\n\u003cp\u003eThe \u003ccode\u003ekube-prometheus-stack\u003c/code\u003e provides some custom values to start with. Please have a look at the \u003ca href=\"https://raw.githubusercontent.com/digitalocean/marketplace-kubernetes/master/stacks/kube-prometheus-stack/values.yml\"\u003evalues\u003c/a\u003e file from the main GitHub repository (explanations are provided inside, where necessary).\u003c/p\u003e\n\u003cp\u003eYou can always inspect all the available options, as well as the default values for the \u003ccode\u003ekube-prometheus-stack\u003c/code\u003e Helm chart by running below command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ehelm show values prometheus-community/kube-prometheus-stack --version 55.7.0\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eAfter tweaking the Helm values file (\u003ccode\u003evalues.yml\u003c/code\u003e) according to your needs, you can always apply the changes via \u003ccode\u003ehelm upgrade\u003c/code\u003e command, as shown below:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ehelm upgrade kube-prometheus-stack prometheus-community/kube-prometheus-stack --version 55.7.0 \\\n --namespace kube-prometheus-stack \\\n --values values.yml\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"configuring-service-monitors-for-prometheus\"\u003eConfiguring Service Monitors for Prometheus\u003c/h3\u003e\n\u003cp\u003eTo monitor applications in your cluster, you usually define a so called \u003ccode\u003eServiceMonitor\u003c/code\u003e CRD. This is a custom resource definition provided by the \u003ccode\u003ePrometheus Operator\u003c/code\u003e, which helps you in the process of adding new services that need to be monitored.\u003c/p\u003e\n\u003cp\u003eA typical \u003ccode\u003eServiceMonitor\u003c/code\u003e configuration looks like below:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"yaml language-yaml\"\u003eapiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n name: example-app\n labels:\n team: frontend\nspec:\n selector:\n matchLabels:\n app: example-app\n endpoints:\n - port: web\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eExplanations for the above configuration:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003espec.selector.matchLabels.app\u003c/code\u003e: Tells \u003ccode\u003eServiceMonitor\u003c/code\u003e what application to monitor, based on a label.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003espec.endpoints.port\u003c/code\u003e: A reference to the port label used by the application that needs monitoring.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe \u003ca href=\"https://raw.githubusercontent.com/digitalocean/marketplace-kubernetes/master/stacks/kube-prometheus-stack/values.yml\"\u003ekube-prometheus-stack\u003c/a\u003e Helm values file provided in the GitHub marketplace repository, contains a dedicated section (named \u003ccode\u003eadditionalServiceMonitors\u003c/code\u003e) where you can define a list of additional services to monitor. Below snippet is setting up Nginx Ingress Controller monitoring as an example:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"yaml language-yaml\"\u003eadditionalServiceMonitors:\n - name: \"ingress-nginx-monitor\"\n selector:\n matchLabels:\n app.kubernetes.io/name: ingress-nginx\n namespaceSelector:\n matchNames:\n - ingress-nginx\n endpoints:\n - port: \"metrics\"\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eAfter adding required services to monitor, you need to upgrade the stack via the \u003ccode\u003ehelm upgrade\u003c/code\u003e command, in order to apply the changes:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ehelm upgrade kube-prometheus-stack prometheus-community/kube-prometheus-stack \\\n --version 55.7.0 \\\n --namespace kube-prometheus-stack \\\n --values values.yml\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can also check the full list of available \u003ca href=\"https://github.com/prometheus-operator/prometheus-operator#customresourcedefinitions\"\u003eCRDs\u003c/a\u003e which you can use to control the Prometheus Operator, by visiting the official GitHub documentation page.\u003c/p\u003e\n\u003ch3 id=\"upgrading-kubernetes-prometheus-stack\"\u003eUpgrading Kubernetes Prometheus Stack\u003c/h3\u003e\n\u003cp\u003eYou can check what versions are available to upgrade, by navigating to the \u003ca href=\"https://github.com/prometheus-community/helm-charts/releases\"\u003ekube-prometheus-stack\u003c/a\u003e official releases page from GitHub. Alternatively, you can also use \u003ca href=\"https://artifacthub.io/packages/helm/prometheus-community/kube-prometheus-stack\"\u003eArtifactHUB\u003c/a\u003e, which provides a more rich and user friendly interface.\u003c/p\u003e\n\u003cp\u003eThen, to upgrade the stack to a newer version, please run the following command (make sure to replace the \u003ccode\u003e\u0026amp;amp;amp;amp;amp;amp;amp;amp;lt;\u0026amp;amp;amp;amp;amp;amp;amp;amp;gt;\u003c/code\u003e placeholders first):\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ehelm upgrade kube-prometheus-stack prometheus-community/kube-prometheus-stack \\\n --version \u0026lt;KUBE_PROMETHEUS_STACK_NEW_VERSION\u0026gt; \\\n --namespace kube-prometheus-stack \\\n --values \u0026lt;YOUR_HELM_VALUES_FILE\u0026gt;\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee \u003ca href=\"https://helm.sh/docs/helm/helm_upgrade/\"\u003ehelm upgrade\u003c/a\u003e for command documentation.\u003c/p\u003e\n\u003cp\u003eAlso, please make sure to check the official recommendations for various \u003ca href=\"https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack#upgrading-chart\"\u003eupgrade paths\u003c/a\u003e, from an existing release to a new major version of the Prometheus stack.\u003c/p\u003e\n\u003ch3 id=\"uninstalling-kubernetes-prometheus-stack\"\u003eUninstalling Kubernetes Prometheus Stack\u003c/h3\u003e\n\u003cp\u003eTo delete your installation of \u003ccode\u003ekube-prometheus-stack\u003c/code\u003e, please run the following \u003ccode\u003eHelm\u003c/code\u003e command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ehelm uninstall kube-prometheus-stack -n kube-prometheus-stack\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eAbove command will delete all the associated \u003ccode\u003eKubernetes\u003c/code\u003e resources installed by the \u003ccode\u003ekube-prometheus-stack\u003c/code\u003e Helm chart, except the namespace itself. To delete the \u003ccode\u003ekube-prometheus-stack namespace\u003c/code\u003e as well, please run below command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ekubectl delete ns kube-prometheus-stack\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"additional-resources\"\u003eAdditional Resources\u003c/h3\u003e\n\u003cp\u003eYou can visit the \u003ca href=\"https://github.com/digitalocean/Kubernetes-Starter-Kit-Developers/\"\u003eStarter Kit\u003c/a\u003e set of guides provided by DigitalOcean for further study. Specifically for \u003ca href=\"https://github.com/digitalocean/Kubernetes-Starter-Kit-Developers/tree/main/04-setup-prometheus-stack\"\u003ePrometheus\u003c/a\u003e, you can access the following content:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/digitalocean/Kubernetes-Starter-Kit-Developers/tree/main/04-setup-prometheus-stack#step-2---configure-prometheus-and-grafana\"\u003eConfiguring Prometheus and Grafana\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/digitalocean/Kubernetes-Starter-Kit-Developers/tree/main/04-setup-prometheus-stack#step-3---promql-prometheus-query-language\"\u003eGetting to know PromQL\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/digitalocean/Kubernetes-Starter-Kit-Developers/tree/main/04-setup-prometheus-stack#step-4---visualizing-metrics-using-grafana\"\u003eVisualizing Metrics using Grafana\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/digitalocean/Kubernetes-Starter-Kit-Developers/tree/main/04-setup-prometheus-stack#best-practices-for-pv-sizing\"\u003eBest practices for Prometheus PV sizing\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eTo further enrich your experience, you can also visit the \u003ca href=\"https://prometheus.io/docs/introduction/media/\"\u003emedia\u003c/a\u003e links from the official Prometheus documentation site.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/kubernetes/clusters/new?addonslug=monitoring\u0026nodePools=s-1vcpu-2gb%3A3","addonSlug":"monitoring","imageLabel":"","imageId":null,"externalLabel":null,"additionalLinks":null,"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_4":{"name":"Resoto","appId":"dbb36d85e85bccb2ead5c0bb","developerId":"3650","safeName":["resoto"],"created":0,"type":"kubernetes","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/mpdev-resotologo.png","version":"3","osVersion":"","tags":["Analytics","Kubernetes"],"support":{"url":"https://resoto.com","email":"eng@some.engineering","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":null,"summary":"Inventory your cloud and react to changes in your infrastructure.","description":"\u003ch1 id=\"resoto-puts-infrastructure-data-at-your-fingertips\"\u003eResoto puts infrastructure data at your fingertips.\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eUnderstand\u003c/strong\u003e who is running what, answer questions about your infrastructure, and ensure \u003cstrong\u003eefficiency\u003c/strong\u003e at scale without slowing down development. Resoto collects resource metadata to see resources from a \u003cstrong\u003esingle place\u003c/strong\u003e in different clouds, organizations, regions, and sub-accounts. Resoto is \u003cstrong\u003efree and open-source\u003c/strong\u003e, with out-of-the-box support for AWS, GCP, DigitalOcean, and Kubernetes.\u003c/p\u003e","gettingStarted":"\u003ch2 id=\"get-application-address\"\u003eGet application address\u003c/h2\u003e\n\u003cp\u003eYour application will be hosted at a service IP. Run these commands to get your installation location:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003eexport SERVICE_ADDRESS=$(kubectl get --namespace resoto service resoto-resotocore -o jsonpath=\"{.status.loadBalancer.ingress[0].ip}\")\necho \"Visit https://$SERVICE_ADDRESS:8900 to use Resoto.\"\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eYou should now be able to navigate to Resoto at the location printed out to your terminal!\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003ePlease note: the certificate is self-signed, so you must accept the certificate warning in your browser.\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eWe recommend registering a domain name and creating an Ingress with a valid TLS certificate.\u003c/p\u003e\n\u003ch2 id=\"get-pre-shared-key-psk\"\u003eGet Pre Shared Key (PSK)\u003c/h2\u003e\n\u003cp\u003eA Pre shared key (PSK) has been created to access your installation. You can find it in the \u003ccode\u003eresoto-psk\u003c/code\u003e secret:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003ekubectl get --namespace resoto secret resoto-psk -o jsonpath=\"{.data.psk}\" | base64 -d\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eThis key is used to authenticate with the Resoto API.\u003c/p\u003e\n\u003ch2 id=\"complete-setup\"\u003eComplete Setup\u003c/h2\u003e\n\u003cp\u003eThe UI will guide you through the rest of the setup process.\u003c/p\u003e\n\u003cp\u003eYou can find documentation at \u003ca href=\"https://resoto.com/docs/getting-started\"\u003eResoto Docs\u003c/a\u003e\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/kubernetes/clusters/new?addonslug=resoto\u0026nodePools=s-1vcpu-2gb%3A3","addonSlug":"resoto","imageLabel":"","imageId":null,"externalLabel":null,"additionalLinks":[{"name":"Getting Started","url":"https://resoto.com/docs/getting-started","description":"Get Up and Running with Resoto","__typename":"AdditionalLink"},{"name":"How-To Guides","url":"https://resoto.com/docs/how-to-guides","description":"How-To achieve specific goals","__typename":"AdditionalLink"},{"name":"Reference","url":"https://resoto.com/docs/reference","description":"See Resoto Reference Page.","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"CategoryGroup"},{"nav_icon":{"dimensions":null,"url":null,"__typename":"PrismicStructuredImage"},"category":"Add-Ons","is_new":"false","is_visible_in_nav":"true","nav_description":[{"text":"Extend your Cloud","__typename":"PrismicStructuredText"}],"hero_text":[{"text":"We make it easier for you to use Add-Ons that fit your needs, so you can focus on making your application the best it can be.","__typename":"PrismicStructuredText"}],"staff_pick_1":{"name":"Plesk (License)","appId":"fdbb3259-1c54-431b-857a-9ce610860d1d","developerId":"3","safeName":["plesk-licenses"],"created":1707375417000,"type":"sls","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://mp-saas-service.nyc3.digitaloceanspaces.com/vendor_media/2eece91f-9077-4fa2-a677-12df7f6f029b.svg","version":"","osVersion":"","tags":["Add-Ons","Business Apps"],"support":{"url":"","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":null,"summary":"Plesk is the leading WebOps hosting platform to run, automate and grow applications, websites and hosting businesses. Being the only OS agnostic platform, Plesk is running on more than 384,000 servers, automating 11M+ websites and 15M+ mail boxes. Available in more than 32 languages across 140 countries, 50% of the top 100 service providers worldwide are partnering with Plesk today.\n\nPlesk has simplified the lives of SysAdmins and SMBs since the early 2000’s and continues to add value across multiple cloud services. The Plesk hosting platform effectively enables application developers by providing access to a simple and more secure web infrastructure managed by web pros and hosting companies.","description":"\u003cp\u003e\u003cstrong\u003eMulti-platform support\u003c/strong\u003e:\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003ePlesk can run on Windows and Linux and offers support for a wide range of programming languages and technologies.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFeature-rich\u003c/strong\u003e:\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eOffers a suite of automation tools and built-in features designed to help set up, run, and secure servers and sites quickly from one single dashboard.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eExpandable\u003c/strong\u003e:\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eProvides access to more than 100 extra tools, extensions and services to enhance and expand the functionality of the platform.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eEasy to use\u003c/strong\u003e:\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003ePlesk’s simple and intuitive GUI makes it easy even for beginners to manage their websites, email, security, and other hosting features.\u003c/p\u003e","gettingStarted":"","createApp":"","addonSlug":null,"imageLabel":"","imageId":null,"externalLabel":null,"additionalLinks":null,"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_2":{"name":"SnapShooter","appId":"c02e534f-3e06-44fb-9d2a-e6c601d9b6c7","developerId":"3525","safeName":["snapshooter"],"created":1639599291000,"type":"saas","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://mp-saas-service.nyc3.digitaloceanspaces.com/vendor_media/8a0efd56-c370-41b2-8283-0dacd4703eb3.svg","version":"","osVersion":"","tags":["Add-Ons","Business Apps"],"support":{"url":"","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":null,"summary":"Easy, frequent and customizable cloud backups\n","description":"\u003cp\u003eSnapShooter, \u003ca href=\"https://www.digitalocean.com/blog/digitalocean-acquires-snapshooter\"\u003enow a part of DigitalOcean\u003c/a\u003e is a simple, fast and flexible cloud backup solution that helps protect data across cloud workloads - Droplets, volumes, files, apps and databases. With just a few clicks, you can get SnapShooter integrated into your DigitalOcean workflows and set up your backups seamlessly.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eKey features\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cp\u003eBackup all your modern cloud resources- virtual machines, volumes, popular applications and managed databases from -\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigitalOcean and other cloud providers. \u003c/li\u003e\n\u003cli\u003eSelf-hosted databases\u003c/li\u003e\n\u003cli\u003eFile system and S3 compatible object store\u003c/li\u003e\n\u003cli\u003eContainers (Docker volumes and databases, Custom backup for managed containers)\u003c/li\u003e\n\u003cli\u003eCloudways apps\u003c/li\u003e\u003c/ul\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eBackup private resources (behind a NAT gateway) using SnapShooter Agent\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eChoose your backup frequency (5-mins\u003cem\u003e, hourly\u003c/em\u003e, daily, weekly \u0026amp; monthly, or on-demand), and schedule them for when you want to run them\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eServerless backup option for managed databases and S3 replications, when you do not want to run your own server for backup jobs.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eSecure Encryption for your backups\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eDisaster recovery\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eReal-time logs, monitoring, and notifications\u003c/p\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e**\u003cem\u003e5 minute and hourly backups are not available for DigitalOcean Droplets. The minimum interval for Droplet backup is daily.\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eSnapshooter has taken more than 9 million DigitalOcean snapshots! Hear what our customers have to say about us\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e“Siebird has trusted SnapShooter to back up and protect our client websites for over 2.5 years. We host all our client websites on DigitalOcean. From the beginning, SnapShooter stood out from the rest with how effortless it has made configuring backups. We have peace of mind knowing our client websites are protected and can be restored with a click of a button.”\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eSiebird, a web design and digital marketing agency\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eWebspec has been utilizing SnapShooter for our backups for about a year now, and it has relieved so much stress from our team. We know that backups are being taken, and on the off chance that they fail for some reason, we know that they’ve failed through the integrated Slack and email notifications. Prior to using SnapShooter, when our development staff would request a backup a pang of anxiety would shoot through us because we were never 100% sure backups had completed successfully. The SnapShooter team has also been an absolute pleasure to work with; we’ve had very few issues, and they were always able to get them resolved or get us a better solution within 24 hours. Moving from our custom solution to SnapShooter was also a breeze. We were able to set up approximately 200 servers across two weeks, with the majority of the time going towards testing to ensure it all worked properly (spoiler alert: it did, even without intervention from us).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eWebspec Design LLC\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\"We’ve been using SnapShooter for our database backups since 2021, after switching from a self-built solution. We use it to backup both our DigitalOcean managed and self-managed Postgres databases to DigitalOcean Spaces. Since using SnapShooter, we’ve had a lot of peace-of-mind knowing that we have reliable and historic backups that just work. The reporting feature is also really helpful for us. Overall, we love SnapShooter because it provides us with the features and reliability we need to ensure our business data is always safe and secure.\"\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDatacake.io | Lukas Klein- CTO \u0026amp; Founder\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eSnapShooter is an absurdly well-made product that I have been using for months to backup a whole range of things, from MySQL to servers and DigitalOcean and AWS to my code at GitHub. The UI is great for understanding and helping you get your backups set, and it made the whole process a joy. All my backups are actively monitored, and data is now safely backed up to my own AWS S3 account.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eKalzumeus Software | Patrick McKenzie, Founder\u003c/strong\u003e\u003c/p\u003e","gettingStarted":"","createApp":"","addonSlug":null,"imageLabel":"","imageId":null,"externalLabel":null,"additionalLinks":null,"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_3":{"name":"JetBackup License","appId":"086b6e5b-126b-4703-bb8b-5420daff6693","developerId":"3749","safeName":["jetbackup-license"],"created":0,"type":"saas","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://mp-saas-service.nyc3.digitaloceanspaces.com/vendor_media/8aa075b0-8a3a-4043-bc73-40c55a106c4c.svg","version":"","osVersion":"","tags":["Add-Ons","Storage"],"support":{"url":"","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":null,"summary":"JetBackup is a powerful cross-platform backup and recovery solution. Configure complex schedules across multiple supported destinations and choose specific backup items, such as emails and databases, to backup. Extend your experience through custom hooks and utilizing our API. Give your customers the self-service backup and restore functionality they deserve!","description":"\u003cp\u003eInstall JetBackup on droplets running the most popular operating systems including Ubuntu and Debian. Create unlimited backup jobs, backup schedules, and storage destinations along with adding custom hooks, tags, and filters to tailor JetBackup to best fit your unique business needs. JetBackup can run on standalone linux or paired with a control panel like cPanel, Plesk or DirectAdmin. Reduce support requests and give your users self-service backup and restore functionality on demand.\u003c/p\u003e","gettingStarted":"","createApp":"","addonSlug":null,"imageLabel":"","imageId":null,"externalLabel":null,"additionalLinks":null,"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_4":{"name":"Better Uptime","appId":"2a5a6f8c-841d-449e-8ff4-5ace12e665bb","developerId":"3526","safeName":["better-uptime"],"created":1646299596000,"type":"saas","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://mp-saas-service.nyc3.digitaloceanspaces.com/vendor_media/d5c6ff52-793c-4746-be60-a5f9316931b1.png","version":"","osVersion":"","tags":["Add-Ons","Monitoring"],"support":{"url":"","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":null,"summary":"Monitoring, status pages and built-in incident management.\nWe call you when your service goes down.","description":"\u003ch2 id=\"monitor-everything-you-need\"\u003eMonitor everything you need\u003c/h2\u003e\n\u003cp\u003eWith \u003ca href=\"https://betteruptime.com/\"\u003eBetter Uptime\u003c/a\u003e you can check your website from locations on 4 continents and get a global overview of your website’s availability for users around the world.\u003c/p\u003e\n\u003cp\u003eOur fast and reliable checks let you monitor your endpoints as often as every 30 seconds. and make sure any issues are detected quickly.\u003c/p\u003e\n\u003cp\u003eWith Better Uptime you can \u003cstrong\u003emonitor uptime, ping, ports, cron jobs (heartbeats), APIs, SSL \u0026amp; TLD certificates, DNS, domain expiration\u003c/strong\u003e, and more.\u003c/p\u003e\n\u003cp\u003eTry radically better uptime monitoring and get notified instantly when there is downtime.\u003c/p\u003e\n\u003ch2 id=\"get-alerted-whenever-you-are\"\u003eGet alerted whenever you are\u003c/h2\u003e\n\u003cp\u003eNever miss an alert again with unlimited worldwide voice alerting, and be the first one to know when your website goes down.\u003c/p\u003e\n\u003cp\u003eIntegrate seamlessly with \u003cstrong\u003eSlack and Microsoft Teams\u003c/strong\u003e and receive alerts in your preferred messaging tool. On the go? Download our iOS or Android app and get instant push notifications wherever you are.\u003c/p\u003e\n\u003cp\u003eGet vital debug info, including \u003cstrong\u003eincident screenshots, error logs, and second-by-second timeline\u003c/strong\u003e embedded in all of your alerts.\u003c/p\u003e\n\u003ch2 id=\"schedule-on-calls-and-manage-escalations\"\u003eSchedule on-calls and manage escalations\u003c/h2\u003e\n\u003cp\u003eMultiple team members or teams? No problem, \u003cstrong\u003eadvanced on-call calendars\u003c/strong\u003e let you manage multiple tiers of calendars across multiple teams. Replace Pingdom and Pagerduty all together.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eCustomize who on your team gets notified based on the incident origin, urgency, and context\u003c/strong\u003e.\u003c/p\u003e\n\u003ch2 id=\"communicate-incidents-with-status-pages\"\u003eCommunicate incidents with status pages\u003c/h2\u003e\n\u003cp\u003eGet beautiful branded status pages on your own sub-domain in just a few clicks. Build trust with your users by sharing your system status at \u003cstrong\u003estatus.yourdomain.com\u003c/strong\u003e. Seamlessly add your monitors in seconds.\u003c/p\u003e\n\u003cp\u003eForget manual status updates and notify your customers about incidents automatically with email subscriptions and save time on one-on-one support.\u003c/p\u003e\n\u003cp\u003eNeed status page for company stakeholders or a specific group of customers? Our password-protected status pages let you do just that.\u003c/p\u003e\n\u003ch2 id=\"integrate-everything\"\u003eIntegrate everything\u003c/h2\u003e\n\u003cp\u003ePlug in the services you already use, be it for monitoring, ChatOps, or incident management. Better Uptime integrates easily with Slack, Microsoft Teams, DataDog, New Relic, Grafana, Prometheus, Zabbix, Pingdom, Uptime Robot, Pagerduty and more.\u003c/p\u003e\n\u003cp\u003eEnjoy radically better uptime monitoring, on-call scheduling \u0026amp; alerting, and status pages in one place.\u003c/p\u003e\n\u003cp\u003eBetter Uptime is part of \u003ca href=\"https://betterstack.com/\"\u003eBetter Stack\u003c/a\u003e.\u003c/p\u003e","gettingStarted":"","createApp":"","addonSlug":null,"imageLabel":"","imageId":null,"externalLabel":null,"additionalLinks":null,"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"CategoryGroup"},{"nav_icon":{"dimensions":null,"url":null,"__typename":"PrismicStructuredImage"},"category":"Analytics","is_new":"false","is_visible_in_nav":null,"nav_description":[{"text":"Software for data reporting and analysis.","__typename":"PrismicStructuredText"}],"hero_text":[{"text":"Make sense of your data with these analytics applications.","__typename":"PrismicStructuredText"}],"staff_pick_1":null,"staff_pick_2":null,"staff_pick_3":null,"staff_pick_4":null,"__typename":"CategoryGroup"},{"nav_icon":{"dimensions":{"width":35,"height":34,"__typename":"PrismicImageDimensions"},"url":"https://images.prismic.io/do-marketplace-testing%2F0861df32-335b-4989-9c80-c52de2d5e4d1_blogsforums.svg?auto=compress,format","__typename":"PrismicStructuredImage"},"category":"Blogs and Forums","is_new":"false","is_visible_in_nav":"true","nav_description":[{"text":"Software for content and community.","__typename":"PrismicStructuredText"}],"hero_text":[{"text":"Keep in touch with your community using popular blogs and forums, including WordPress, Ghost, and Discourse.","__typename":"PrismicStructuredText"}],"staff_pick_1":{"name":"WordPress","appId":"5ba19759c472e4189b34e066","developerId":"1","safeName":["wordpress"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/wordpress-20-04.svg","version":"6.4.1","osVersion":"Ubuntu 22.04","tags":["Blogs and Forums"],"support":{"url":"https://wordpress.org/support/","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"WordPress","version":"6.4.1","website":"","releaseNotes":"https://wordpress.org/news/","licenseLink":"https://wordpress.org/about/license/","licenseType":"GPL 2","__typename":"CustomSoftware"},{"name":"Apache","version":"2.4.52","website":"","releaseNotes":"https://packages.ubuntu.com/focal/apache2","licenseLink":"https://www.apache.org/licenses/","licenseType":"Apache 2","__typename":"CustomSoftware"},{"name":"MySQL server","version":"8.0.35","website":"","releaseNotes":"https://packages.ubuntu.com/focal/mysql-server","licenseLink":"https://www.mysql.com/about/legal/licensing/oem/#5","licenseType":"GPL 2 with modifications","__typename":"CustomSoftware"},{"name":"PHP","version":"8.0.30","website":"","releaseNotes":"https://packages.ubuntu.com/focal/php","licenseLink":"http://php.net/license/index.php","licenseType":"PHP v3.01","__typename":"CustomSoftware"},{"name":"Fail2ban","version":"5.2.1","website":"","releaseNotes":"https://plugintests.com/plugins/wporg/wp-fail2ban/latest","licenseLink":"https://github.com/fail2ban/fail2ban/blob/0.11/COPYING","licenseType":"GPL 2","__typename":"CustomSoftware"},{"name":"Postfix","version":"3.6.4","website":"","releaseNotes":"https://packages.ubuntu.com/focal/postfix","licenseLink":"http://www.postfix.org/IBM-Public-License-1.0.txt","licenseType":"IBM Public","__typename":"CustomSoftware"},{"name":"Certbot","version":"1.21","website":"","releaseNotes":"https://packages.ubuntu.com/focal/certbot","licenseLink":"https://github.com/certbot/certbot/blob/master/LICENSE.txt","licenseType":"Apache 2","__typename":"CustomSoftware"}],"summary":"A popular Content Management System built on PHP and MySQL.","description":"\u003cblockquote\u003e\n \u003cp\u003e- \u0026#34;WordPress is a factory that makes webpages\u0026#34; Fred Meyer\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eWordPress is a free and open-source content management system. Originally it was intended to be a blog-publishing system, but has evolved to support other web content types including more traditional mailing lists and Internet forums, media galleries, membership sites, learning management systems (LMS) and online stores. WordPress is used by 42.8% of the top 10 million websites as of October 2021.\u003c/p\u003e\n\u003ch1 id=\"before-you-deploy-your-first-wordpress-droplet\"\u003eBefore you deploy your first WordPress Droplet\u003c/h1\u003e\n\u003ch4 id=\"get-a-domain-name\"\u003eGet a Domain name\u003c/h4\u003e\n\u003cp\u003eUse this \u003ca href=\"https://docs.digitalocean.com/products/networking/dns/quickstart/\" rel=\"noopener\" target=\"_blank\"\u003eDNS quickstart\u003c/a\u003e guide to get your DNS setup on DigitalOcean. You’ll first need to purchase and register your domain through a third party, such as Name.com, GoDaddy, etc…\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eWhy do you need a domain name?\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003eThis is how others will access your server and how you and your users will be identified on the network.\u003c/p\u003e\u003c/li\u003e\n\u003c/ul\u003e","gettingStarted":"\u003cp\u003eOn your first \u003ca href=\"https://docs.digitalocean.com/products/droplets/how-to/connect-with-ssh/\"\u003eSSH login to the droplet\u003c/a\u003e or launch of the Droplet console of your WordPress Droplet 1-Click, you will be greeted by a WordPress setup script.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cem\u003eIf you do not have a Domain yet you can enter the IP address of your Droplet into the setup script when prompted for the Domain/Subdomain instead.\u003c/em\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThe first step is to enter your domain name. Make sure that your domain is pointing to the new droplet IP. If your DNS is managed by DigitalOcean, it should look like this:\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://i.imgur.com/zRbRECQ.png\" alt=\"WordPress DNS Setup Example\"\u003e\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eThe DNS Host may be the same company you registered the domain with or another entity you designate. To connect your DNS hosting to DigitalOcean, check out \u003ca href=\"https://docs.digitalocean.com/tutorials/dns-registrars/\"\u003ethis guide\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eOnce your A record is set up, you are ready to enter your domain in the script:\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://i.imgur.com/prDL8Ky.png\" alt=\"WordPress Domain Prompt\"\u003e\u003c/p\u003e\n\u003cp\u003eNext, the script will ask you user-related data:\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://i.imgur.com/1uvpST4.png\" alt=\"WordPress User Data Prompt\"\u003e\u003c/p\u003e\n\u003cp\u003eAfter you acknowledge data is correct, the script will ask if you want to configure HTTPS automatically for your droplet. We highly recommend setting HTTPS since using a domain is useless without it.\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eYou will need to provide the email address which will receive security and renewal notices:\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://i.imgur.com/xYaZja6.png\" alt=\"Certbot Email Prompt\"\u003e\u003c/p\u003e\n\u003cp\u003eFinally, after reading the LetsEncrypt Terms of Service and selecting whether to share or not your email address with the Electronic Frontier Foundation, the script will ask you which domain names would you like to activate HTTPS for:\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://i.imgur.com/vwFGHAr.png\" alt=\"WordPress HTTPS Activation Prompt\"\u003e\u003c/p\u003e\n\u003cp\u003eConsider activating HTTPS for both naked and WWW versions of your domain by specifying 1,2.\u003c/p\u003e\n\u003cp\u003eWordPress will take a few minutes to set up plugins and finish installation, after that you can access your fresh WordPress Droplet by typing your domain name in the browser. For accessing the admin console, use https://%YOUR_DOMAIN%/wp-admin.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cem\u003eIf you entered an IP address instead of the Domain name you can access the admin console by using https://%YOUR_IP%/wp-admin instead.\u003c/em\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003ch1 id=\"getting-started-with-wordpress\"\u003eGetting started with WordPress\u003c/h1\u003e\n\u003cp\u003eWordPress official website has quite a few excellent sources of information for beginners and even experienced users.\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eIf you are starting your journey with WordPress, consider taking a look at the official \u003ca href=\"https://wordpress.com/learn/all-courses/\"\u003ecourses\u003c/a\u003e.\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://wordpress.com/learn/articles/\"\u003eArticles\u003c/a\u003e page contains some lovely ideas on how to improve your WordPress website. Or you can get exclusive knowledge from WordPress experts on \u003ca href=\"https://wordpress.com/learn/webinars/\"\u003ewebinars\u003c/a\u003e.\u003c/p\u003e\n\u003ch2 id=\"droplet-summary\"\u003eDroplet Summary\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe root password for the MySQL instance running on your Droplet is in /root/.digitalocean_password. The Droplet root user will not be prompted for the MySQL password.\u003c/li\u003e\n\u003cli\u003eIf you’re connecting to a DigitalOcean Managed Database, your MySQL connection information can be found in /var/www/html/wp-config.php.\u003c/li\u003e\n\u003cli\u003eThe web root is /var/www/html, and the WordPress configuration file is /var/www/html/wp-config.php.\u003c/li\u003e\n\u003cli\u003eYou can get information about the PHP installation by logging into the Droplet and running php -i.\u003c/li\u003e\n\u003cli\u003eUFW firewall allows only SSH (port 22, rate limited), HTTP (port 80), and HTTPS (port 443) access.\u003c/li\u003e\n\u003cli\u003eDroplet sets the MySQL root password, runs mysql_secure_installation, and creates a wordpress user with the necessary permissions. The Droplet root user will not be prompted for the MySQL password. Keep in mind that if you’re connecting to a DigitalOcean Managed Database, the locally installed database will be disabled.\u003c/li\u003e\n\u003cli\u003eDroplet sets up the debian-sys-maint user in MySQL so the system’s init scripts for MySQL will work without requiring the MySQL root user password.\u003c/li\u003e\n\u003cli\u003eDroplet creates the initial WordPress configuration file to set up \u003ca href=\"https://developer.wordpress.org/reference/functions/wp_salt/\"\u003esalt keys\u003c/a\u003e and allow the WordPress instance to connect to the database.\u003c/li\u003e\n\u003cli\u003eXML-RPC is disabled to help prevent DDoS and other brute force attacks.\u003c/li\u003e\n\u003cli\u003eSome of PHP’s settings are modified to increase the maximum file size and execution time.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://httpd.apache.org/docs/current/mod/mod_rewrite.html\"\u003eApache rewrite module\u003c/a\u003e is enabled so the WordPress permalink feature will work.\u003c/li\u003e\n\u003cli\u003eApache is configured with UseCanonicalName On to mitigate \u003ca href=\"https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8295\"\u003eCVE-2017-8295\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1 id=\"protect-your-wordpress-data-with-snapshooter\"\u003eProtect your Wordpress data with SnapShooter\u003c/h1\u003e\n\u003cp\u003e\u003ca href=\"https://marketplace.digitalocean.com/add-ons/snapshooter\"\u003eSnapShooter\u003c/a\u003e, an offering from DigitalOcean, offers comprehensive backup solutions for all your cloud resources, including your WordPress application data. To access \u003ca href=\"https://marketplace.digitalocean.com/add-ons/snapshooter\"\u003eSnapShooter\u003c/a\u003e, navigate to the left-hand navigation menu in your DigitalOcean cloud console. As part of the free tier, you can back up a single resource, such as your WordPress application data.\u003c/p\u003e\n\u003cp\u003eTo back up your WordPress application, start by installing the SnapShooter add-on to your DigitalOcean account. Next, do a single sign-on to access the SnapShooter console, where you can add a target storage solution, such as Spaces, and create a new backup job. From there, select your WordPress application (with or without the database) as the recipe, and choose your preferred backup policy. Follow our step-by-step \u003ca href=\"https://www.youtube.com/watch?v=9NYqzeWEnAY\"\u003evideo\u003c/a\u003e or \u003ca href=\"https://docs.digitalocean.com/developer-center/easy-web-application-back-ups-with-snapshooter/\"\u003eblog tutorial\u003c/a\u003e to get this working today.\u003c/p\u003e\n\u003cp\u003eWith SnapShooter, you can restore your WordPress application and its data to another server, whether it's within DigitalOcean or another location, in case of a disaster or migration. Keep in mind that your Spaces/S3 usage will incur charges from your cloud provider.\u003c/p\u003e\n\u003cp\u003eProtect your WordPress data with SnapShooter's reliable and straightforward backup solutions today.\u003c/p\u003e\n\u003ch1 id=\"optimize-wordpress-with-nitropack\"\u003eOptimize WordPress with NitroPack\u003c/h1\u003e\n\u003cp\u003e\u003ca href=\"https://nitropack.io/platform/wordpress?utm_source=digitalocean\u0026amp;utm_medium=snippet\u0026amp;utm_campaign=promo\"\u003eNitroPack\u003c/a\u003e is a web performance \u0026amp; CWV improvement service. It neatly integrates with WordPress websites providing better speed, customer experience, and conversions. It has everything you need for a fast website in a single solution – smart caching, image optimization, code optimization, lazy loading, built-in CDN, and more. With advanced features like font subsetting, adaptive image sizing, and device-aware cashing, NitroPack helps websites reach 90+ PSI scores and pass Core Web Vitals.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=wordpress-20-04","addonSlug":null,"imageLabel":"wordpress-20-04","imageId":144890942,"externalLabel":null,"additionalLinks":[{"name":"Source Code","url":"https://github.com/digitalocean/droplet-1-clicks/tree/master/wordpress-20-04?utm_source=digitalocean_marketplace_app_listing_page","description":"Packer scripts that were used to build this 1-Click App","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_2":{"name":"Plesk","appId":"5bcf7c09916ddf7564a7cb9b","developerId":"3","safeName":["plesk"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/plesk-20-04.svg","version":"18.0.62","osVersion":"Ubuntu 22.04","tags":["Blogs and Forums"],"support":{"url":"https://www.plesk.com/support","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Plesk Obsidian","version":"18.0","website":"","releaseNotes":"https://docs.plesk.com/release-notes/obsidian/change-log/","licenseLink":"https://www.plesk.com/legal/","licenseType":"Proprietary","__typename":"CustomSoftware"},{"name":"Ubuntu Linux","version":"22.04","website":"","releaseNotes":"","licenseLink":"https://ubuntu.com/legal","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"WordPress","version":"latest","website":"","releaseNotes":"","licenseLink":"https://wordpress.org/about/license/","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"Apache","version":"2.4","website":"","releaseNotes":"","licenseLink":"https://www.apache.org/licenses/LICENSE-2.0","licenseType":"Apache License","__typename":"CustomSoftware"},{"name":"NGINX","version":"1.14.2","website":"","releaseNotes":"","licenseLink":"http://nginx.org/LICENSE","licenseType":"2-clause BSD-like","__typename":"CustomSoftware"},{"name":"Git","version":"2.21","website":"","releaseNotes":"","licenseLink":"http://opensource.org/licenses/GPL-2.0","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"MySQL","version":"5.7","website":"","releaseNotes":"","licenseLink":"https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"Maria DB","version":"5.5, 10.0, 10.1, 10.2","website":"","releaseNotes":"","licenseLink":"https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"phpMyAdmin","version":"4.8.4","website":"","releaseNotes":"","licenseLink":"https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"PostgreSQL","version":"8.4–10.8","website":"","releaseNotes":"","licenseLink":"https://www.postgresql.org/about/licence/","licenseType":"BSD/MIT similar","__typename":"CustomSoftware"},{"name":"PHP","version":"7.1, 7.2, 7.3","website":"","releaseNotes":"","licenseLink":"https://php.net/license/","licenseType":"PHP License","__typename":"CustomSoftware"},{"name":"Node.js","version":"4.6.1, 6.14.1, 8.11.1, 9.0.0, 10.0.0","website":"","releaseNotes":"","licenseLink":"https://raw.githubusercontent.com/nodejs/node/master/LICENSE","licenseType":"MIT License","__typename":"CustomSoftware"},{"name":"Ruby","version":"2.6.3","website":"","releaseNotes":"","licenseLink":"https://www.ruby-lang.org/en/about/license.txt","licenseType":"Ruby License","__typename":"CustomSoftware"},{"name":"ProFTPD","version":"1.3.6","website":"","releaseNotes":"","licenseLink":"https://opensource.org/licenses/GPL-2.0","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"Courier IMAP","version":"4.16.1","website":"","releaseNotes":"","licenseLink":"https://opensource.org/licenses/GPL-2.0","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"Postfix","version":"2.6–3.1","website":"","releaseNotes":"","licenseLink":"http://www.postfix.org/IBM-Public-License-1.0.txt","licenseType":"IBM Public License","__typename":"CustomSoftware"},{"name":"Dovecot","version":"2.3.4.1","website":"","releaseNotes":"","licenseLink":"https://dovecot.org/doc/COPYING","licenseType":"MIT, LGPL","__typename":"CustomSoftware"},{"name":"Roundcube Webmail","version":"1.3.8","website":"","releaseNotes":"","licenseLink":"https://www.gnu.org/licenses/gpl-3.0.html","licenseType":"GPL","__typename":"CustomSoftware"}],"summary":"Plesk Obsidian (new!) is the leading WebOps platform and hosting control panel","description":"\u003cp\u003ePlesk Obsidian (new!) is the leading secure WordPress and website management platform providing you with a simple yet performant and scalable platform developed for modern website hosting.\u003c/p\u003e\n\u003cp\u003eWith Plesk on DigitalOcean you get access to a modern and lightweight stack to build, secure, and run websites and applications through one intuitive browser-based interface.\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e: To upgrade Plesk, you can now purchase a license for Plesk \u003ca href=\"https://marketplace.digitalocean.com/add-ons/plesk-licenses\" rel=\"noopener\" target=\"_blank\"\u003eright here\u003c/a\u003e on DigitalOcean!\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.youtube.com/watch?v=-DfOMjoAp3k\" rel=\"noopener\" target=\"_blank\"\u003ePlesk on DigitalOcean Intro Video\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.udemy.com/make-wordpress-hosting-easy-with-plesk-on-digitalocean/\" rel=\"noopener\" target=\"_blank\"\u003eFree Udemy Course: Make WordPress Hosting Easy with Plesk on DigitalOcean\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eHost \u0026amp; manage your Websites and Applications\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003eEasily install, manage and operate WordPress, Joomla, Drupal, Magento, Prestashop - or your own custom website or application. For yourself or for your customers.\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eOne Dashboard\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003eBuild and manage multiple sites from a single dashboard. You can also run updates, monitor performance and onboard new prospects all from the same place.\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eRobust Site \u0026amp; Server Security\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003eBroad security by default across OS, network and apps. Firewall, Fail2ban and WAF bundled and activated by default.\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eIntegrated with the DigitalOcean DNS\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003eKeep your domains and websites in sync with Plesk through the DigitalOcean DNS integration available at few clicks.\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eThe Ultimate Toolkit for WordPress Sites\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003eOne platform to install, update and remove instances, themes \u0026amp; plugins. Built-in security, sync and backup/restore features. Optional staging/cloning environments (\u003ca href=\"https://www.plesk.com/upgrade\" rel=\"noopener\" target=\"_blank\"\u003ePro and Host editions only - click to compare\u003c/a\u003e).\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eComplete Flexibility and Control\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003eYou get full root access via SSH on every Plesk-powered VPS so you can install any third-party, open source, or customized application you need.\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eLight Core, expandable with 100+ Extensions\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003eDo more with your platform as you integrate tools like DigiCert SSL, Speed Kit, Node.js, Let’s Encrypt SSL, Git, ImunifyAV, Backup to Cloud Pro and more.\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eManage eMail for all Domains\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003ePlesk comes with a full-fledged eMail server included. Manage multiple users and mailboxes per domain. Or offer eMail hosting to your customers. \u003cstrong\u003eNote: to set up your reverse DNS record required to run an eMail service, please contact the DigitalOcean Support.\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eUpgrade to the full unlimited Plesk Editions\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003eUpgrade to premium features including staging, cloning, reseller management and more or through \u003ca href=\"https://marketplace.digitalocean.com/add-ons/plesk-licenses\" rel=\"noopener\" target=\"_blank\"\u003ePlesk License Add-On\u003c/a\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr/\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003ePlesk Droplet/VM Size Requirements\u003c/strong\u003e\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003ePlesk runs smoothly with 1GB RAM and 1 vCPU for smaller websites and environments. Running multiple websites or higher traffic require a larger droplet size. \u003cstrong\u003eWe recommend 2 CPU cores and 4GB RAM for the best performance\u003c/strong\u003e. \u003ca href=\"https://docs.plesk.com/release-notes/obsidian/hardware-requirements/#s2\" rel=\"noopener\" target=\"_blank\"\u003ePlease also refer to the Plesk Infrastructure Requirements for details.\u003c/a\u003e\u003c/p\u003e\u003c/li\u003e\n\u003c/ul\u003e","gettingStarted":"\u003cp\u003eThe easiest way is by using the root username and password that you define while creating a droplet.\u003c/p\u003e\n\u003ch3 id=\"to-log-in-to-plesk-for-the-first-time-using-a-root-password\"\u003e\u003cstrong\u003eTo log in to Plesk for the first time using a root password:\u003c/strong\u003e\u003c/h3\u003e\n\u003cp\u003eSee the video instruction: \u003ccode\u003ehttps://youtu.be/ZvxiBEQ1ay4\u003c/code\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eCopy the droplet IPv4 address and then open the \u003ccode\u003ehttps://your_droplet_public_ipv4\u003c/code\u003e link in your browser.\u003c/li\u003e\n\u003cli\u003eIgnore the “Your connection is not private” warning in your browser and proceed. It is safe to do so because the connection to your Plesk server is actually secure and encrypted with a self-signed SSL/TLS certificate. \u003c/li\u003e\n\u003cli\u003eOn the Plesk login page, specify the root username, the root password you have created earlier, and then click \u003cstrong\u003eLog in\u003c/strong\u003e.\u003c/li\u003e\n\u003cli\u003eYou will be redirected to the Plesk welcome screen. Follow the instructions on this screen and then click \u003cstrong\u003eEnter Plesk\u003c/strong\u003e to log in to Plesk.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e If you log in to a Plesk instance that is still being deployed, you will see the maintenance screen. Once the deployment is finished, the maintenance screen will be gone and you will be able to start using Plesk.\u003c/p\u003e\n\u003cp\u003eYou can also \u003ca href=\"https://docs.plesk.com/en-US/obsidian/deployment-guide/plesk-installation-and-upgrade-on-public-cloud-services/installing-plesk-on-digitalocean.79699/#accessing-plesk-for-the-first-time\"\u003elog in to Plesk using SSH keys\u003c/a\u003e if you have chosen this way when creating a droplet.\u003c/p\u003e\n\u003ch3 id=\"next-steps\"\u003eNext steps\u003c/h3\u003e\n\u003cp\u003eYour Plesk is completely ready to work and you can start adding your first domain. However, we recommend that you also make the following steps:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://docs.plesk.com/en-US/obsidian/deployment-guide/plesk-installation-and-upgrade-on-public-cloud-services/installing-plesk-on-digitalocean.79699/#setting-up-dns-hosting\"\u003eSet up DNS hosting in DigitalOcean DNS\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.plesk.com/en-US/obsidian/deployment-guide/plesk-installation-and-upgrade-on-public-cloud-services/installing-plesk-on-digitalocean.79699/#assigning-floating-ip-addresses\"\u003eAssign a floating IP address to your droplet\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"see-further-information\"\u003eSee further information:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://docs.plesk.com/en-US/obsidian/deployment-guide/plesk-installation-and-upgrade-on-public-cloud-services/installing-plesk-on-digitalocean.79699/\"\u003ePlesk DigitalOcean Documentation\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.plesk.com/release-notes/obsidian/hardware-requirements/#s2\"\u003ePlesk Infrastructure requirements\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.plesk.com/\"\u003ePlesk Documentation\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.udemy.com/make-wordpress-hosting-easy-with-plesk-on-digitalocean/\"\u003eFree Udemy Course: Make WordPress Hosting Easy with Plesk on DigitalOcean\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.plesk.com/university\"\u003ePlesk University\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=plesk-20-04","addonSlug":null,"imageLabel":"plesk-20-04","imageId":159642360,"externalLabel":null,"additionalLinks":[{"name":"Upgrade your Plesk to a Web Pro or Web Host Edition","url":"https://marketplace.digitalocean.com/add-ons/plesk-licenses","description":"Upgrade your Web Admin license to a Web Pro or Web Host Edition.","__typename":"AdditionalLink"},{"name":"Plesk Course on Udemy (free)","url":"https://www.udemy.com/course/make-wordpress-hosting-easy-with-plesk-on-digitalocean/","description":"Host your WordPress website on DigitalOcean and simplify WordPress and webhosting with the Plesk hosting platform. ","__typename":"AdditionalLink"},{"name":"Plesk University (free)","url":"https://www.plesk.com/university","description":"Designed with your needs in mind, Plesk certification courses will guide you from being a novice to becoming an expert. ","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_3":{"name":"cPanel \u0026 WHM® for Ubuntu","appId":"6269a31eeb95f473a48e67dd","developerId":"22","safeName":["cpanel-whm-for-ubuntu"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/cpanel-cpanelwhmforubun.svg","version":"118","osVersion":"Ubuntu 20.04 (LTS)","tags":["Blogs and Forums"],"support":{"url":"https://go.cpanel.net/digitalocean","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"WordPress","version":"5.9.3","website":"","releaseNotes":"","licenseLink":"","licenseType":"GPL 2","__typename":"CustomSoftware"},{"name":"Roundcube","version":"1.5.2.1","website":"","releaseNotes":"","licenseLink":"","licenseType":"GPL 3","__typename":"CustomSoftware"},{"name":"git","version":"2.35.2","website":"","releaseNotes":"","licenseLink":"","licenseType":"GPL 2","__typename":"CustomSoftware"}],"summary":"Create an exceptional hosting experience using the industry leading hosting platform with world-class support. Ubuntu 20.04 LTS is now a supported operating system.","description":"\u003cp\u003eThe cPanel interface allows your customers to do a multitude of things to manage their sites, intranets, and keep their online properties running smoothly.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003ePublish a website\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eAllow your customers to choose from the most popular site builders to launch their web presence or give them the resources to build and monitor their own websites from the ground up.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eCreate emails \u0026amp; calendars\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eGive your customers the ability to stay connected with the powerful email and calendar capabilities baked into cPanel \u0026amp; WHM. With our software, they can launch new email accounts, create shared calendars and enjoy various levels of spam protection.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eBackup, transfer \u0026amp; manage files\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eSecurely backup and transfer all web files from within the cPanel interface or allow your customers to use the FTP controls.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eManage domains\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eOffer your tech-savvy site owners the power to manage their network of domains. Create aliases, add or remove subdomains, manage DNS zones and direct site visitors around any of your web properties.\u003c/p\u003e","gettingStarted":"\u003cp\u003eWhen you create a droplet, cPanel \u0026amp; WHM will automatically begin installation in the background. The installation process takes about 10-15 minutes. You cannot log in to WHM until the installation process is complete.\u003c/p\u003e\n\u003cp\u003eFor instructions on logging in to WHM and creating a WordPress site, read our \u003ca href=\"https://docs.cpanel.net/knowledge-base/accounts/from-whm-to-website/\"\u003eFrom WHM to Website\u003c/a\u003e documentation.\u003c/p\u003e\n\u003cp\u003eFor more information about installing, configuring, and managing WordPress, read our \u003ca href=\"https://docs.cpanel.net/knowledge-base/cpanel-developed-plugins/wordpress-toolkit/\"\u003eWordPress Toolkit\u003c/a\u003e documentation.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=cpanel-cpanelwhmforubun","addonSlug":null,"imageLabel":"cpanel-cpanelwhmforubun","imageId":154651149,"externalLabel":null,"additionalLinks":null,"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_4":{"name":"Ghost","appId":"5ba19753fc53b8179c7a0076","developerId":"3331","safeName":["ghost"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/ghost-20-04.svg","version":"latest","osVersion":"Ubuntu 22.04","tags":["Blogs and Forums"],"support":{"url":"https://ghost.org/","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Ghost","version":"latest","website":"","releaseNotes":"https://github.com/TryGhost/Ghost/releases/latest","licenseLink":"https://github.com/TryGhost/Ghost/blob/master/LICENSE","licenseType":"MIT","__typename":"CustomSoftware"},{"name":"Nginx","version":"1.18.0","website":"","releaseNotes":"http://nginx.org/en/CHANGES-1.18","licenseLink":"http://nginx.org/LICENSE","licenseType":"Custom","__typename":"CustomSoftware"},{"name":"MySQL server","version":"8.0.29","website":"","releaseNotes":"https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-23.html","licenseLink":"https://www.mysql.com/about/legal/licensing/oem/","licenseType":"GPL 2 with modifications","__typename":"CustomSoftware"},{"name":"Node.js","version":"18.x","website":"","releaseNotes":"https://nodejs.org/en/download/","licenseLink":"https://github.com/nodejs/node/blob/master/LICENSE","licenseType":"Custom","__typename":"CustomSoftware"}],"summary":"Ghost is a fully open source, adaptable platform for building and running a modern online publication. It powers blogs, magazines and journalists from Zappos to Sky News.","description":"\u003cp\u003eGhost is a fully open source, adaptable platform for building and running a modern blog or publication. The Ghost 1-Click App allows you to self-host your own Ghost instance up and running in two minutes.\u003c/p\u003e\n\u003cp\u003eIf you would like Ghost to manage your blog for you instead, the Ghost Pro plans start at just $9 \u003ca href=\"https://ghost.org/pricing/?utm_source=DigitalOcean\u0026amp;utm_campaign=Marketplace\" rel=\"noopener\" target=\"_blank\"\u003ehttps://ghost.org/pricing/\u003c/a\u003e. Read more at \u003ca href=\"https://ghost.org/?utm_source=DigitalOcean\u0026amp;utm_campaign=Marketplace\" rel=\"noopener\" target=\"_blank\"\u003ehttps://ghost.org\u003c/a\u003e.\u003c/p\u003e","gettingStarted":"\u003cp\u003eYou’ll need a registered domain name to finish completing the Ghost setup. We recommend setting up an A record from the domain (e.g., \u003ccode\u003eexample.com\u003c/code\u003e) to the server’s IP address.\u003c/p\u003e\n\u003cp\u003eAfter the Ghost One-Click Droplet is created and the domain and DNS records are set up, you’ll need to log into the Ghost Droplet to complete its setup. From a terminal on your local computer, connect to the Droplet as \u003ccode\u003eroot\u003c/code\u003e. Make sure to substitute the IP address of the Droplet.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003essh root@use_your_droplet_ip\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eAs soon as you log in, the Droplet will automatically make sure it’s running the most recent version of Ghost, and will prompt you to press \u003ccode\u003eENTER\u003c/code\u003e to finalize the setup.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eEnsuring Ghost-CLI is up-to-date…\n…\n\nGhost will prompt you for two details:\n\nYour domain\nAdd an A Record -\u0026gt; your_droplet_ip \u0026amp; ensure DNS has fully propagated\nOr alternatively enter http://your_droplet_ip\nYour email address (only used for SSL)\nPress enter when you’re ready to get started!\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eFollow the installation prompts to configure Ghost.\u003c/p\u003e\n\u003cp\u003eAs soon as you’re done, make sure to configure the admin user using the administrative interface at \u003ccode\u003ehttp://use_your_droplet_ip/ghost\u003c/code\u003e (making sure to substitute the Droplet’s IP address in the URL). Until you configure the admin user, anyone who discovers the site can configure the administrative user, take control of the Ghost site, and potentially take control of the Droplet.\u003c/p\u003e\n\u003cp\u003eOnce the installation and setup is fully complete, you can access the new Ghost site by visiting the Droplet IP address in your browser.\u003c/p\u003e\n\u003cp\u003eTo upgrade or maintain the Ghost install in future, you’ll always have to become the \u003ccode\u003eghost-mgr\u003c/code\u003e user in order to have the correct permissions:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"command language-command\"\u003esudo -i -u ghost-mgr\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eAfter that, all tasks can be completed with the Ghost-CLI tool. Run \u003ccode\u003eghost help\u003c/code\u003e for an overview of available commands, or \u003ca href=\"https://ghost.org/docs/ghost-cli\"\u003echeck out the Ghost-CLI docs\u003c/a\u003e for full details.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=ghost-20-04","addonSlug":null,"imageLabel":"ghost-20-04","imageId":142097182,"externalLabel":null,"additionalLinks":null,"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"CategoryGroup"},{"nav_icon":{"dimensions":null,"url":null,"__typename":"PrismicStructuredImage"},"category":"Business Apps","is_new":"false","is_visible_in_nav":null,"nav_description":[{"text":"Apps to help grow your business","__typename":"PrismicStructuredText"}],"hero_text":[{"text":"Grow your company and communicate more effectively with your team using these apps.","__typename":"PrismicStructuredText"}],"staff_pick_1":null,"staff_pick_2":null,"staff_pick_3":null,"staff_pick_4":null,"__typename":"CategoryGroup"},{"nav_icon":{"dimensions":null,"url":null,"__typename":"PrismicStructuredImage"},"category":"Chat","is_new":"false","is_visible_in_nav":null,"nav_description":[{"text":"Apps to communicate with your employees and your community.","__typename":"PrismicStructuredText"}],"hero_text":[],"staff_pick_1":null,"staff_pick_2":null,"staff_pick_3":null,"staff_pick_4":null,"__typename":"CategoryGroup"},{"nav_icon":{"dimensions":{"width":28,"height":36,"__typename":"PrismicImageDimensions"},"url":"https://images.prismic.io/do-marketplace-testing%2F189a12ad-ee50-494c-9136-0fd271d3ad87_databases.svg?auto=compress,format","__typename":"PrismicStructuredImage"},"category":"Databases","is_new":"false","is_visible_in_nav":"true","nav_description":[{"text":"SQL and NoSQL data stores.","__typename":"PrismicStructuredText"}],"hero_text":[{"text":"Launch a database server with just a few clicks. Choose from popular databases like MySQL, MongoDB, and more.","__typename":"PrismicStructuredText"}],"staff_pick_1":{"name":"MySQL","appId":"5ba19756fc53b8179c7a0083","developerId":"1","safeName":["mysql"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/mysql-20-04.svg","version":"8.0.21","osVersion":"Ubuntu 20.04","tags":["Databases"],"support":{"url":"https://dev.mysql.com/support/","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"MySQL server","version":"8.0.21","website":"","releaseNotes":"https://packages.ubuntu.com/focal/mysql-server","licenseLink":"https://www.mysql.com/about/legal/licensing/oem/#5","licenseType":"GPL 2 with modifications","__typename":"CustomSoftware"},{"name":"phpMyAdmin","version":"5.0.3","website":"","releaseNotes":"https://packages.ubuntu.com/focal/phpmyadmin","licenseLink":"https://www.phpmyadmin.net/license/","licenseType":"GPL 2","__typename":"CustomSoftware"},{"name":"Apache","version":"2.4.41","website":"","releaseNotes":"https://packages.ubuntu.com/focal/apache2","licenseLink":"https://www.apache.org/licenses/","licenseType":"Apache 2","__typename":"CustomSoftware"},{"name":"PHP","version":"7.4","website":"","releaseNotes":"https://packages.ubuntu.com/focal/php","licenseLink":"http://php.net/license/index.php","licenseType":"PHP v3.01","__typename":"CustomSoftware"},{"name":"Certbot","version":"0.40.0","website":"","releaseNotes":"https://packages.ubuntu.com/focal/certbot","licenseLink":"https://github.com/certbot/certbot/blob/master/LICENSE.txt","licenseType":"Apache 2","__typename":"CustomSoftware"}],"summary":"The world's most popular open source database","description":"\u003cp\u003eThe world\u0026#39;s most popular open-source database\u003c/p\u003e","gettingStarted":"\u003cp\u003eIn addition to package installation, the One-Click also:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cp\u003eEnables the UFW firewall to allow only SSH (port \u003ccode\u003e22\u003c/code\u003e, rate limited), HTTP (port \u003ccode\u003e80\u003c/code\u003e), and HTTPS (port \u003ccode\u003e443\u003c/code\u003e), and MySQL (\u003ccode\u003e3306\u003c/code\u003e) access.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eSets the MySQL root password and runs \u003ccode\u003emysql_secure_installation\u003c/code\u003e.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eSets the phpMyAdmin admin password.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eSets up the \u003ccode\u003edebian-sys-maint\u003c/code\u003e user in MySQL so the system’s init scripts for MySQL will work without requiring the MySQL \u003ccode\u003eroot\u003c/code\u003e user password.After you create a MySQL One-Click Droplet:\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eYou can access phpMyAdmin immediately by visiting the Droplet’s IP address in your browser followed by \u003ccode\u003e/phpmyadmin\u003c/code\u003e.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eYou can log into the Droplet as \u003ccode\u003eroot\u003c/code\u003e using either the password emailed to you or with an SSH key if you added one during creation.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eThe MySQL root password and phpMyAdmin admin password are in \u003ccode\u003e/root/.digitalocean_password\u003c/code\u003e.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eYou can get information about the PHP installation by logging into the Droplet and running \u003ccode\u003ephp -i\u003c/code\u003e.In addition, we recommend taking steps to \u003ca href=\"https://docs.phpmyadmin.net/en/latest/setup.html#securing-your-phpmyadmin-installation\"\u003efurther secure the phpMyAdmin installation\u003c/a\u003e, like \u003ca href=\"https://docs.phpmyadmin.net/en/latest/setup.html#using-ssl-for-connection-to-database-server\"\u003eenabling SSL for the connection from phpMyAdmin to the database server\u003c/a\u003e.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eThe default landing page, shown when you visit the Droplet’s IP address, is located at \u003ccode\u003e/var/www/html\u003c/code\u003e.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eThe phpMyAdmin configuration file is located at \u003ccode\u003e/etc/phpmyadmin/\u003c/code\u003e. To secure your connection, you will need a registered domain configured for your Droplet.\u003c/p\u003e\u003c/li\u003e\n\u003c/ul\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=mysql-20-04","addonSlug":null,"imageLabel":"mysql-20-04","imageId":89941171,"externalLabel":null,"additionalLinks":[{"name":"Source Code","url":"https://github.com/digitalocean/droplet-1-clicks/tree/master/mysql-20-04?utm_source=digitalocean_marketplace_app_listing_page","description":"Packer scripts that were used to build this 1-Click App","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_2":null,"staff_pick_3":{"name":"RethinkDB","appId":"5d1b98f329a6ab0d4c7db13a","developerId":"53","safeName":["rethinkdb"],"created":1562089715000,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/rethinkdb-logo.svg","version":"2.4.1","osVersion":"Ubuntu 18.04","tags":["Databases"],"support":{"url":"https://rethinkdb.com/community","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"RethinkDB","version":"2.4.1","website":"","releaseNotes":"https://github.com/rethinkdb/rethinkdb/releases","licenseLink":"https://github.com/rethinkdb/rethinkdb/blob/next/COPYRIGHT","licenseType":"Apache 2.0","__typename":"CustomSoftware"}],"summary":"The open-source database for the realtime web","description":"\u003cp\u003eRethinkDB is the first open-source scalable database built for realtime applications. It exposes a new database access model -- instead of polling for changes, the developer can tell the database to continuously push updated query results to applications in realtime. RethinkDB allows developers to build scalable realtime apps in a fraction of the time with less effort.\u003c/p\u003e","gettingStarted":"\u003cp\u003eAfter you create a RethinkDB One-Click Droplet:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eYou can view the RethinkDB Admin UI immediately by visiting the Droplet's IP address on the administration port (8080 by default) in your browser.\u003c/li\u003e\n\u003cli\u003eYou can log into the Droplet as root using either the password emailed to you or with an SSH key, if you added one during creation.\u003c/li\u003e\n\u003cli\u003eYou can modify the default instance configuration by editing \u003ccode\u003e/etc/rethinkdb/instances.d/instance.conf\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eYou can check the logs of the server at \u003ccode\u003e/var/log/rethinkdb\u003c/code\u003e or through the Admin UI.\u003c/li\u003e\n\u003cli\u003eYou can install clients/drivers based on your needs.Although you can start to use your droplet, there are a few setup steps that we recommend you take, since the cluster is running with default settings.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"setting-up-users\"\u003eSetting up users\u003c/h2\u003e\n\u003cp\u003eRethinkDB controls access to clusters through a system based around users, permissions, and scopes. Together, these allow you to specify fine grained control for reading, writing and administrative access down to a per-table level.\u003c/p\u003e\n\u003cp\u003eA new RethinkDB cluster always has one user named admin; this user always has all permissions at a global scope, and the user cannot be deleted. By default, the admin user has no password. You can change this by updating the admin user document, or by specifying the \u003ccode\u003e--initial-password\u003c/code\u003e command line option on startup.\u003c/p\u003e\n\u003cp\u003eThe web administration UI always connects as if it were the admin user, and skips the authentication process (i.e., the password is not used for this connection). While the web UI cannot be password-protected, you can limit the addresses it will accept connections on using the \u003ccode\u003e--bind-http\u003c/code\u003e command line option.\u003c/p\u003e\n\u003cp\u003eIf your Droplet is publicly available, it is highly recommended to not expose the Admin UI or limit the addresses it will accept.\u003c/p\u003e\n\u003cp\u003eFor more information, please visit our \u003ca href=\"https://rethinkdb.com/docs/permissions-and-accounts/\"\u003ePermissions and user accounts\u003c/a\u003e documentation.\u003c/p\u003e\n\u003ch2 id=\"securing-your-cluster\"\u003eSecuring your cluster\u003c/h2\u003e\n\u003cp\u003eThe best way to secure a RethinkDB cluster is to run it on a protected network that doesn’t allow access from the outside world. However, this may not always be feasible. For example, cloud deployments often require access from wide area networks.\u003c/p\u003e\n\u003cp\u003eThere are two main methods RethinkDB provides for securing the cluster: TLS encryption for connections, and binding the ports the server uses to specific IP addresses to limit outside connections.\u003c/p\u003e\n\u003cp\u003eFor more information, please visit our instructions \u003ca href=\"https://rethinkdb.com/docs/security/\"\u003ehow to secure\u003c/a\u003e your cluster.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=rethinkdb-18-04","addonSlug":null,"imageLabel":"rethinkdb-18-04","imageId":68402596,"externalLabel":null,"additionalLinks":null,"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_4":{"name":"MariaDB","appId":"444c41f3500206d95a85addc","developerId":"63","safeName":["mariadb"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/mariadb.png","version":"10.6.12","osVersion":"Ubuntu 22.04","tags":["Databases"],"support":{"url":"https://mariadb.com/kb/en/mariadb-support/","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"MariaDB","version":"10.6.12","website":"https://mariadb.org/","releaseNotes":"","licenseLink":"https://mariadb.com/kb/en/mariadb-licenses/","licenseType":"GPL","__typename":"CustomSoftware"}],"summary":"MariaDB Server is one of the most popular open source relational databases. ","description":"\u003cp\u003eThe MariaDB database was born after Oracle acquired MySQL. With the original core MySQL team, we have added functionality to the MariaDB database that competes with legacy database systems like Oracle at a fraction of the cost. We have added columnar analytics, JSON functionality and Oracle compatibility, and we offer a fully managed cloud database service that offers the full breadth of MariaDB database solutions supporting private, public, hybrid and multicloud strategies.\u003c/p\u003e\n\u003cp\u003eToday, the MariaDB database is recognized as a distinct database around the world. MariaDB is the new “M” in the LAMP stack, it’s the default over MySQL in the majority of Linux distributions, it’s replacing Oracle and other legacy databases at increasing rates and it’s available in every cloud. MariaDB is everywhere.\u003c/p\u003e","gettingStarted":"\u003cp\u003eAfter the app is installed, it runs automatically \u003ccode\u003emysql_secure_installation\u003c/code\u003e at the login to finish MariaDB setup process.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=mariadb","addonSlug":null,"imageLabel":"mariadb","imageId":143813694,"externalLabel":null,"additionalLinks":[{"name":"Source Code","url":"https://github.com/digitalocean/droplet-1-clicks/tree/master/mariadb-22-04?utm_source=digitalocean_marketplace_app_listing_page","description":"Packer scripts that were used to build this 1-Click App","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"CategoryGroup"},{"nav_icon":{"dimensions":null,"url":null,"__typename":"PrismicStructuredImage"},"category":"Data Science","is_new":"false","is_visible_in_nav":null,"nav_description":[{"text":"Machine Learning and AI apps.","__typename":"PrismicStructuredText"}],"hero_text":[{"text":"","__typename":"PrismicStructuredText"}],"staff_pick_1":{"name":"Anaconda","appId":"ea4c4f465551ed7fefc86a73","developerId":"63","safeName":["anaconda"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/sharklabs-anaconda.png","version":"2024.06-1","osVersion":"Ubuntu 22.04 (LTS)","tags":["Data Science"],"support":{"url":"https://www.anaconda.com/support","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Anaconda","version":"2023.09-0","website":"","releaseNotes":"","licenseLink":"https://legal.anaconda.com/policies/en/?name=terms-of-service","licenseType":"Non-Commericial Use Only","__typename":"CustomSoftware"}],"summary":"Anaconda® Distribution is a simple and powerful platform for data science. It combines essential Python and R tools in one place, making it easy to manage packages, analyze data, and create machine learning models.","description":"\u003ch1 id=\"anaconda®-distribution\"\u003eAnaconda® Distribution\u003c/h1\u003e\n\u003cp\u003eAnaconda® Distribution is a powerful platform for streamlined data science, featuring essential tools for Python and R programming. Whether you\u0026#39;re a seasoned data professional or just starting your data journey, Anaconda simplifies package management, data analysis, and machine learning model development within a unified and accessible environment.\u003c/p\u003e\n\u003ch2 id=\"key-features\"\u003eKey Features\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eEffortless Package Management:\u003c/strong\u003e Simplify library management with Anaconda\u0026#39;s conda package manager, ensuring consistent dependencies.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eRobust Data Analysis and Visualization:\u003c/strong\u003e Explore and visualize datasets efficiently with Anaconda\u0026#39;s rich set of data science libraries.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eStreamlined Machine Learning Workflow:\u003c/strong\u003e Accelerate machine learning development using popular frameworks and tools seamlessly integrated into Anaconda.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eUser-Friendly Interface:\u003c/strong\u003e Navigate complexities with ease. Anaconda\u0026#39;s interface is designed for both beginners and experienced practitioners.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eCommunity and Support:\u003c/strong\u003e Join a vibrant community for collaborative knowledge-sharing. Access a wealth of resources, tutorials, and support to enhance your skills.\u003c/p\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eExperience the power of Anaconda with a single click using the Droplet 1-Click deployment. The Anaconda® Distribution Droplet allows you to instantly access the full capabilities of Anaconda, eliminating the need for complex installations. Launch your data science and machine learning projects seamlessly, now just a click away.\u003c/p\u003e","gettingStarted":"\u003ch2 id=\"before-you-deploy\"\u003eBefore You Deploy\u003c/h2\u003e\n\u003cp\u003eBefore deploying this Droplet, consider the following guidance to ensure you choose the right configuration for your needs:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cp\u003eDroplet Size: Depending on your data processing requirements, select a Droplet size that offers sufficient CPU, memory, and storage resources. Consider the complexity and scale of your projects when making this decision.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eVolume: If you anticipate working with large datasets or require additional storage, it is recommended to attach a Volume to your Droplet. This will provide you with the necessary space to store and access your data conveniently.\u003c/p\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1 id=\"getting-started-with-anaconda\"\u003eGetting Started with Anaconda\u003c/h1\u003e\n\u003cp\u003eCongratulations on successfully installing Anaconda! Now that you have the powerful data science platform at your fingertips, let's get started with some essential steps to make the most out of your Anaconda installation.\u003c/p\u003e\n\u003ch2 id=\"1-update-conda-and-anaconda-navigator\"\u003e1. Update Conda and Anaconda Navigator\u003c/h2\u003e\n\u003cp\u003eEnsure that your Anaconda tools are up to date. Open a terminal and run the following commands:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003econda update conda\nconda update anaconda-navigator\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThis will ensure you have the latest versions and bug fixes.\u003c/p\u003e\n\u003ch2 id=\"2-create-and-activate-a-virtual-environment\"\u003e2. Create and Activate a Virtual Environment\u003c/h2\u003e\n\u003cp\u003eCreate a virtual environment to manage your project dependencies. Replace \u003ccode\u003emyenv\u003c/code\u003e with your preferred environment name.\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003econda create --name myenv\nconda activate myenv\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThis isolates your project from the global Python environment, preventing potential conflicts.\u003c/p\u003e\n\u003ch2 id=\"3-install-jupyter-notebooks\"\u003e3. Install Jupyter Notebooks\u003c/h2\u003e\n\u003cp\u003eJupyter Notebooks are a fantastic way to create and share live code, equations, visualizations, and narrative text. Install it with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003econda install jupyter\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eTo be able to manage Jupyter Notebooks remotely, create jupyter_notebook_config.py file if it does not exist under ~/.jupyter directory by running the following command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003ejupyter notebook --generate-config\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eEdit the following lines on your jupyter_notebook_config.py file:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003e #The IP address the notebook server will listen on.\nc.ServerApp.ip = '0.0.0.0' # default value is 'localhost'\n\n# Whether to open in a browser after starting.\nc.ServerApp.open_browser = False\n# If you want to run jupyter notebook command as root\nc.ServerApp.allow_root = True\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eStart a new Jupyter Notebook with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003ejupyter notebook\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eTo connect to the Jupyter Notebook server from your browser allow the required ports in the firewall by running the following commands:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003eufw allow 8888/tcp\nufw allow 8889/tcp\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOnce you see the following message, connect to the server using the server URL\u003c/p\u003e\n\u003cblockquote\u003e\n \u003cp\u003eTo access the server, open this file in a browser:\u003cbr\u003e\n file:///root/.local/share/jupyter/runtime/jpserver-22627-open.html\u003cbr\u003e\n Or copy and paste one of these URLs:\u003cbr\u003e\n http://anaconda2023090onubuntu2204lts-s-2vcpu-4gb-120gb-intel-sfo3-01:8889/tree?token=2641aecf9907b6b5fec09059be84bb0014abdc3e1424832d\u003cbr\u003e\n \u003ca href=\"http://127.0.0.1:8889/tree?token=2641aecf9907b6b5fec09059be84bb0014abdc3e1424832d\"\u003ehttp://127.0.0.1:8889/tree?token=2641aecf9907b6b5fec09059be84bb0014abdc3e1424832d\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eConnect to the server using the following URL\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003ehttp://{YOUR_DROPLET_IP}:8889/tree?token={YOUR_TOKEN}\u003c/code\u003e\u003c/pre\u003e\n\u003ch2 id=\"4-explore-anaconda-navigator\"\u003e4. Explore Anaconda Navigator\u003c/h2\u003e\n\u003cp\u003eAnaconda Navigator provides a graphical interface to manage your packages, environments, and applications. Launch it by running:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003eanaconda-navigator\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eExplore the Navigator to manage your environments, install packages, and launch applications like Jupyter Notebooks and Spyder.\u003c/p\u003e\n\u003ch2 id=\"5-install-additional-packages\"\u003e5. Install Additional Packages\u003c/h2\u003e\n\u003cp\u003eAnaconda includes many essential packages, but you may need additional ones for your projects. Use \u003ccode\u003econda install\u003c/code\u003e to install packages. For example:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003econda install numpy pandas matplotlib\u003c/code\u003e\u003c/pre\u003e\n\u003ch2 id=\"6-join-the-anaconda-community\"\u003e6. Join the Anaconda Community\u003c/h2\u003e\n\u003cp\u003eConnect with the \u003ca href=\"https://community.anaconda.com/\"\u003eAnaconda Community\u003c/a\u003e to get help, share knowledge, and stay updated on the latest developments. Visit the community to join discussions, ask questions, and explore tutorials.\u003c/p\u003e\n\u003cp\u003eFor more detailed information, refer to the \u003ca href=\"https://docs.anaconda.com/\"\u003eAnaconda Reference Guide\u003c/a\u003e.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=sharklabs-anaconda","addonSlug":null,"imageLabel":"sharklabs-anaconda","imageId":159236459,"externalLabel":null,"additionalLinks":[{"name":"Anaconda","url":"https://www.anaconda.com/","description":"Anaconda Website","__typename":"AdditionalLink"},{"name":"Anaconda Documentation","url":"https://docs.anaconda.com/","description":"The official documentation provides guides, tutorials, and troubleshooting information.","__typename":"AdditionalLink"},{"name":"Anaconda Community Forum","url":"https://community.anaconda.com/","description":"Join discussions, ask questions, and seek help from the Anaconda community.","__typename":"AdditionalLink"},{"name":"Anaconda Support","url":"https://www.anaconda.com/support","description":"If you have a commercial subscription or Enterprise Use-case, you can access Anaconda's support services","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_2":{"name":"Jupyter Notebook","appId":"be765a88ac91c80fdd9cddcb","developerId":"63","safeName":["jupyter-notebook"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/sharklabs-jupyternotebook.png","version":"4.0.1","osVersion":"Ubuntu 22.04","tags":["Data Science"],"support":{"url":"https://github.com/digitalocean/droplet-1-clicks/issues","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"JupyterLab + Jupyter","version":"4.0.1","website":"https://jupyter.org/install","releaseNotes":"","licenseLink":"","licenseType":"","__typename":"CustomSoftware"},{"name":"Miniconda","version":"23.1.2","website":"https://docs.conda.io/en/latest/miniconda.html#linux-installers","releaseNotes":"","licenseLink":"","licenseType":"","__typename":"CustomSoftware"}],"summary":"Get started with ease using the Droplet 1-Click Image pre-installed with Conda and Jupyter. This powerful data science environment allows you to manage packages, create environments, and explore data effortlessly. Try out the included sample application, 'stable diffusion 1.5,' with specifications optimized for CPU-intensive tasks.","description":"\u003cp\u003eThis Droplet 1-Click is pre-installed with Conda and Jupyter, providing you with a streamlined environment for data science and machine learning tasks. Conda allows you to easily manage software packages and create isolated environments, while Jupyter provides a web-based interface for interactive coding and data exploration. With this image, you can quickly set up a powerful data science environment without the hassle of manual installation.\u003c/p\u003e","gettingStarted":"\u003ch2 id=\"before-you-deploy\"\u003eBefore You Deploy\u003c/h2\u003e\n\u003cp\u003eBefore deploying this Droplet, consider the following guidance to ensure you choose the right configuration for your needs:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cp\u003eDroplet Size: Depending on your data processing requirements, select a Droplet size that offers sufficient CPU, memory, and storage resources. Consider the complexity and scale of your projects when making this decision.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eVolume: If you anticipate working with large datasets or require additional storage, it is recommended to attach a Volume to your Droplet. This will provide you with the necessary space to store and access your data conveniently.\u003c/p\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"software-versions\"\u003eSoftware Versions\u003c/h2\u003e\n\u003cp\u003eThis Droplet comes with the following software versions pre-installed:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eConda: \u003ca href=\"https://docs.conda.io/\"\u003eLatest version of Conda\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eJupyter: \u003ca href=\"https://jupyter.org/\"\u003eLatest version of Jupyter\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"getting-started-with-jupyter\"\u003eGetting Started with Jupyter\u003c/h2\u003e\n\u003cp\u003eAfter deploying the Jupyter Droplet, follow these steps to get started:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cp\u003eSSH into your Droplet:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse your preferred SSH client to connect to your Droplet.\u003c/li\u003e\u003c/ul\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eSwitch to the Ubuntu user:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOnce connected, switch to the Ubuntu user by running the following command:\u003c/li\u003e\u003c/ul\u003e\n\u003cpre\u003e\u003ccode\u003esu - ubuntu\u003c/code\u003e\u003c/pre\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eAccessing the Jupyter Notebook:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eYou can access the Jupyter Notebook by starting it manually or using the provided \u003ccode\u003enotebook.sh\u003c/code\u003e script.\u003c/li\u003e\n\u003cli\u003eTo manually start Jupyter Notebook, run the following command:\u003c/li\u003e\u003c/ul\u003e\n\u003cpre\u003e\u003ccode\u003econda activate jupyter\njupyter lab\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003eAlternatively, you can use the \u003ccode\u003enotebook.sh\u003c/code\u003e script by executing:\u003c/li\u003e\u003c/ul\u003e\n\u003cpre\u003e\u003ccode\u003e./notebook.sh\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003eThe script will handle starting the JupyterLab instance for you.\u003c/li\u003e\u003c/ul\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eCreating and Managing Conda Environments:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOnce you have accessed the Jupyter Notebook, you can use Conda to create isolated environments for your projects.\u003c/li\u003e\n\u003cli\u003eTo create a new Conda environment, use the following command:\u003cbr\u003e\u003c/li\u003e\u003c/ul\u003e\n\u003cp\u003e\u003ccode\u003econda create --name myenv\u003c/code\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eActivate the environment by running:\u003cbr\u003e\u003c/li\u003e\u003c/ul\u003e\n\u003cp\u003e\u003ccode\u003econda activate myenv\u003c/code\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eInstall required packages and libraries within the environment using Conda or pip.\u003c/li\u003e\u003c/ul\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\n\u003cp\u003eFor more detailed instructions and tips on using Conda and Jupyter, please refer to the Conda documentation: \u003ca href=\"https://docs.conda.io/\"\u003ehttps://docs.conda.io/\u003c/a\u003e\u003c/p\u003e\n\u003ch2 id=\"example-1-running-stable-diffusion\"\u003eExample 1: Running Stable Diffusion\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eIf you have small compute, skip this and go to example 2. If you run this on \u0026lt;16 vCPU, the process will likely get killed.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eSource: \u003ca href=\"https://github.com/bes-dev/stable_diffusion.openvino\"\u003eLink\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eA sample application included with this Droplet is the \"stable diffusion 1.5\" model. To run this application, ensure that your Droplet meets the following specifications:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCPU: At least 16 cores\u003c/li\u003e\n\u003cli\u003eRAM: At least 32GB\u003c/li\u003e\n\u003cli\u003eDroplet Type: Premium CPU-optimized (Xeon series 3)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePlease note that running the \"stable diffusion 1.5\" model can be computationally intensive. In our tests, it takes approximately 1 minute to generate a single image. Commands:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003esu - ubuntu # if you have not switched to ubuntu user already\ncd examples/stable_diffusion.openvino/\nconda activate stable-diffusion-1.5\npython demo.py --prompt \"Beautiful lake, sunset, and a mountain\"\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe output is stored in output.png file. If you have connected to Jupyter notebook, you should be able to view the file in the notebook itself.\u003c/p\u003e\n\u003ch1 id=\"example-2-running-distilbert-sequence-classification\"\u003eExample 2: Running DistilBERT Sequence Classification\u003c/h1\u003e\n\u003cp\u003eSource: \u003ca href=\"https://github.com/openvinotoolkit/openvino_notebooks.git\"\u003eLink\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIntel maintains a number of sample applications that you can try out and customize. These applications have been optimized to work on Intel hardware. Note that some of these may need a GPU and will not work on CPU.\u003c/p\u003e\n\u003cp\u003eThis tutorial guides you through running the DistilBERT sequence classification in a JupyterLab environment.\u003c/p\u003e\n\u003cp\u003eFollow the steps below:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eNavigating to the Notebook\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIn your JupyterLab client, navigate to the following directory:\u003c/li\u003e\u003c/ul\u003e\n\u003cpre\u003e\u003ccode\u003e/home/ubuntu/examples/openvino_notebooks/notebooks/229-distilbert-sequence-classification\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003eOpen the \u003ccode\u003e229-distilbert-sequence-classification.ipynb\u003c/code\u003e notebook.\u003c/li\u003e\u003c/ul\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eSelecting the Kernel\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eLook at the top-right corner of your JupyterLab interface; the current kernel (or Python environment) should be displayed. If it shows \"jupyter\", you need to change it.\u003c/li\u003e\n\u003cli\u003eFrom the \"Kernel\" menu, select \"Change Kernel\", and then select \"openvino notebooks\". This ensures that your program runs in the correct virtual environment.\u003c/li\u003e\u003c/ul\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eRunning the Notebook\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNow you are ready to run the cells in the notebook. As you do so, the notebook performs the following operations:- Downloads the original model from Huggingface.\u003cul\u003e\n\u003cli\u003eOptimizes the model for better performance.\u003c/li\u003e\n\u003cli\u003eExecutes sentiment analysis on several sample texts.\u003c/li\u003e\u003c/ul\u003e\u003c/li\u003e\u003c/ul\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\n\u003cp\u003e\u003cstrong\u003eNOTE\u003c/strong\u003e: \u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eDuring the optimization step, you may encounter an error stating \"mo command not found\". This issue is known to us and can be resolved by replacing \u003ccode\u003emo\u003c/code\u003e with its full path: \u003ccode\u003e/home/ubuntu/.conda/envs/openvino_notebooks/bin/mo\u003c/code\u003e. The permanent fix would be to update the path in the conda activation script.\u003c/p\u003e\n\u003cp\u003eThe sentiment analysis typically takes around 0.1 seconds, demonstrating the efficiency of the model on CPU.\u003c/p\u003e\n\u003ch1 id=\"troubleshooting\"\u003eTroubleshooting\u003c/h1\u003e\n\u003cp\u003eIf you encounter issues during the process, you can refer to the following resources:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eREADME file\u003c/strong\u003e: Check the \u003ccode\u003eReadme.txt\u003c/code\u003e file located in the \u003ccode\u003e/home/ubuntu\u003c/code\u003e directory. It contains common tips and potential solutions for frequently encountered issues.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eDisk Usage\u003c/strong\u003e: Note that the example files take up approximately 500MB, and the Conda environments require about 9GB. Also downloaded models can add up to 10’s of GB. If these files and environments are not needed, you can free up disk space with a few simple commands.\u003c/p\u003e\n\u003cp\u003eRefer to the \u003ccode\u003esave-9GB-by-deleting-examples\u003c/code\u003e file in the \u003ccode\u003e/home/ubuntu\u003c/code\u003e directory for instructions on how to perform this cleanup.\u003c/p\u003e\u003c/li\u003e\n\u003c/ol\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=sharklabs-jupyternotebook","addonSlug":null,"imageLabel":"sharklabs-jupyternotebook","imageId":133777395,"externalLabel":null,"additionalLinks":null,"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_3":{"name":"Apache Kafka","appId":"626c52011ff9fb3108e9c6eb","developerId":"63","safeName":["apache-kafka"],"created":1651266049000,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/sharklabs-apachekafka.png","version":"3.1.0","osVersion":"Ubuntu 20.04","tags":["Databases"],"support":{"url":"https://issues.apache.org/jira/projects/KAFKA/","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Apache Kafka","version":"3.1.0","website":"https://kafka.apache.org/","releaseNotes":"https://kafka.apache.org/31/documentation.html","licenseLink":"https://www.apache.org/licenses/LICENSE-2.0","licenseType":"Apache 2.0","__typename":"CustomSoftware"},{"name":"OpenJDK","version":"11","website":"https://openjdk.java.net/","releaseNotes":"","licenseLink":"","licenseType":"GPL-2.0","__typename":"CustomSoftware"}],"summary":"Apache Kafka is an open-source distributed event streaming platform used by thousands of companies for high-performance data pipelines, streaming analytics, data integration, and mission-critical applications.","description":"\u003cp\u003eApache Kafka can be used to asynchronously process vast amounts of data, but it can be difficult to get started. This 1-Click App automatically configures a single-node Kafka cluster, so you can spend less time configuring it and more time developing the software that uses it.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote\u003c/strong\u003e: This app should \u003cstrong\u003enot\u003c/strong\u003e be used in production environments. Since it consists of a single-node cluster, it does not offer high availability, scaling, or any form of data-loss prevention. This app serves to provide an easy way to get started in development environments.\u003c/p\u003e","gettingStarted":"\u003ch2 id=\"quickstart\"\u003eQuickstart\u003c/h2\u003e\n\u003cp\u003eHere's a short example that uses \u003ca href=\"https://github.com/edenhill/kcat\"\u003ekcat\u003c/a\u003e, an open-source command-line producer and consumer for Apache Kafka, to produce and consume events from your local machine. Because the server's certificate authority (CA) certificate is self-signed, the CA certificate must be explicitly trusted by the client to properly verify the server's identity:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cp\u003eCopy the example configuration and CA root certificate from your new Droplet to your local machine\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003escp root@your_droplet_public_ipv4:'/opt/kafka/one-click-ssl/{ca.crt,example.librdkafka.config}' .\u003c/code\u003e\u003c/pre\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eProduce a message\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eecho 'Hello, TLS!' | kcat -P -b your_droplet_public_ipv4:9093 \\\n -F ./example.librdkafka.config \\\n -X ssl.ca.location=./ca.crt \\\n -t quickstart\u003c/code\u003e\u003c/pre\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eConsume the message\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ekcat -C -b your_droplet_public_ipv4:9093 \\\n -F ./example.librdkafka.config \\\n -X ssl.ca.location=./ca.crt \\\n -t quickstart\u003c/code\u003e\u003c/pre\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eExit the consumer by pressing \u003ccode\u003eCtrl+c\u003c/code\u003e.\u003c/p\u003e\n\u003ch2 id=\"additional-details\"\u003eAdditional Details\u003c/h2\u003e\n\u003cp\u003eYour Kafka server is configured with two listeners:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e127.0.0.1:9092 - PLAINTEXT and no authentication required\u003c/li\u003e\n\u003cli\u003e0.0.0.0:9093 - TLS/SSL using a self-signed certificate and SCRAM-SHA-256 authentication\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePLAINTEXT connections are an easy way to get started, but transmitting PLAINTEXT data, especially login credentials, over the public internet leaves your information vulnerable. For security purposes, PLAINTEXT connections can only be established from inside the server:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cp\u003eConnect to your Droplet using SSH\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003essh root@your_droplet_public_ipv4\u003c/code\u003e\u003c/pre\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eCreate a topic\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e/opt/kafka/bin/kafka-topics.sh \\\n --create \\\n --topic quickstart \\\n --bootstrap-server localhost:9092\u003c/code\u003e\u003c/pre\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eProduce your first event\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eecho 'Hello, World!' | /opt/kafka/bin/kafka-console-producer.sh \\\n --topic quickstart \\\n --bootstrap-server localhost:9092\u003c/code\u003e\u003c/pre\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eConsume the event\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e/opt/kafka/bin/kafka-console-consumer.sh \\\n --from-beginning \\\n --max-messages 1 \\\n --topic quickstart \\\n --bootstrap-server localhost:9092\u003c/code\u003e\u003c/pre\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eThe configuration for this Kafka broker can be found in\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e/opt/kafka/config/server.properties\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003e/opt/kafka/one-click-ssl\u003c/code\u003e directory contains the following:\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth id=\"file\"\u003eFile\u003c/th\u003e\n\u003cth id=\"contents\"\u003eContents\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e.keystore_password\u003c/td\u003e\n\u003ctd\u003ePassword for Java KeyStores in this directory\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eca.crt\u003c/td\u003e\n\u003ctd\u003eSelf-signed CA root certificate\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eca.key\u003c/td\u003e\n\u003ctd\u003eCA private key\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eexample.librdkafka.config\u003c/td\u003e\n\u003ctd\u003eClient authentication configuration\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ekafka.crt\u003c/td\u003e\n\u003ctd\u003eKafka server certificate signed by CA\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ekafka.keystore.jks\u003c/td\u003e\n\u003ctd\u003eJava KeyStore containing ca.crt and kafka.crt\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ekafka.truststore.jks\u003c/td\u003e\n\u003ctd\u003eJava KeyStore containing ca.crt\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=sharklabs-apachekafka","addonSlug":null,"imageLabel":"sharklabs-apachekafka","imageId":108133533,"externalLabel":null,"additionalLinks":null,"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_4":null,"__typename":"CategoryGroup"},{"nav_icon":{"dimensions":{"width":38,"height":37,"__typename":"PrismicImageDimensions"},"url":"https://images.prismic.io/do-marketplace-testing%2Ff0972c2b-a5f0-4de5-81f6-74553a154ca3_devtools.svg?auto=compress,format","__typename":"PrismicStructuredImage"},"category":"Developer Tools","is_new":"false","is_visible_in_nav":"true","nav_description":[{"text":"PaaS, containerization, CI/CD, and more.","__typename":"PrismicStructuredText"}],"hero_text":[{"text":"Create, test, debug, and deploy your code using these 1-Click Apps.","__typename":"PrismicStructuredText"}],"staff_pick_1":null,"staff_pick_2":{"name":"CapRover","appId":"5c8a770a3b7d2445342d1588","developerId":"24","safeName":["caprover"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/caprover-18-04.svg","version":"1.11.1","osVersion":"Ubuntu 20.04","tags":["Developer Tools"],"support":{"url":"https://caprover.com/","email":"info@caprover.com","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Docker CE","version":"19.03","website":"","releaseNotes":"https://docs.docker.com/release-notes/docker-ce/","licenseLink":"https://github.com/docker/docker/blob/master/LICENSE","licenseType":"Apache 2","__typename":"CustomSoftware"},{"name":"CapRover","version":"1.11.1","website":"","releaseNotes":"https://github.com/caprover/caprover/releases","licenseLink":"https://github.com/caprover/caprover/blob/master/LICENSE","licenseType":"Apache 2","__typename":"CustomSoftware"}],"summary":"Deploy web-apps in any language, deploy any database, in seconds.","description":"\u003cp\u003eCapRover is an easy to use PaaS with a dashboard. It helps you to take your app from http://localhost:3000 to \u003ca href=\"https://awesomeapp.com\" rel=\"noopener\" target=\"_blank\"\u003ehttps://awesomeapp.com\u003c/a\u003e in seconds. It makes HTTPS enabling as simple as clicking on a button. It makes database (MongoDB, MySQL, Postgres and etc) deployment available with a single click. No more manual nginx configurations, or building everything from scratch. See \u003ca href=\"https://caprover.com/docs/get-started.html#caprover-setup\" rel=\"noopener\" target=\"_blank\"\u003ehttps://caprover.com/docs/get-started.html#caprover-setup\u003c/a\u003e for setup documentation. If you are using this One-Click droplet, you should skip step 1 in the guide.\u003c/p\u003e","gettingStarted":"\u003cp\u003eFor best user experience, make sure to read the \u003ca href=\"https://caprover.com/docs/get-started.html#caprover-setup\"\u003eGetting Started section of the docs\u003c/a\u003e After installation, simply visit http://IP-ADDRESS:3000 to see your dashboard! You can SSH to your instance to view your instance info including password.\u003c/p\u003e\n\u003cp\u003eThe easiest way to finish the setup process is to \u003ca href=\"https://caprover.com/docs/get-started.html#step-3-install-caprover-cli\"\u003efollow the guide using CapRover CLI\u003c/a\u003e. You will be presented with a guided setup flow. You can also see the documentation from the DOCS link in the web dashboard top menu.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=caprover-18-04","addonSlug":null,"imageLabel":"caprover-18-04","imageId":140653269,"externalLabel":null,"additionalLinks":null,"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_3":{"name":"Dokku","appId":"5ba19752c472e4189b34e041","developerId":"1","safeName":["dokku"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/dokku-logo.png","version":"0.30.6","osVersion":"Ubuntu 22.04","tags":["Developer Tools"],"support":{"url":"http://dokku.viewdocs.io/dokku/getting-started/troubleshooting/","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Dokku","version":"0.30.6","website":"","releaseNotes":"https://packagecloud.io/dokku/dokku","licenseLink":"https://github.com/dokku/dokku/blob/master/LICENSE","licenseType":"MIT","__typename":"CustomSoftware"},{"name":"Docker CE","version":"19.03.12","website":"","releaseNotes":"https://docs.docker.com/release-notes/docker-ce/","licenseLink":"https://github.com/docker/docker/blob/master/LICENSE","licenseType":"Apache 2","__typename":"CustomSoftware"}],"summary":"Dokku makes it a breeze to deploy and manage web applications on your own server.","description":"\u003cp\u003eDokku makes it a breeze to deploy and manage web applications on your own server. Now available as a 1-Click installation, it\u0026#39;s even easier to have your own private application platform in a matter of minutes.\u003c/p\u003e","gettingStarted":"\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Please disable IPv6. There are known issues with IPv6. If you would like to run Dokku on an IPv6 DigitalOcean Droplet, please consult this \u003ca href=\"https://jeffloughridge.wordpress.com/2015/01/17/native-ipv6-functionality-in-docker/\"\u003eguide\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eIn addition to the package installation, the One-Click also:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnables the UFW firewall to allow only SSH (port \u003ccode\u003e22\u003c/code\u003e, rate limited), HTTP (port \u003ccode\u003e80\u003c/code\u003e), HTTPS (port \u003ccode\u003e443\u003c/code\u003e), and \u003ccode\u003e2375\u003c/code\u003e/\u003ccode\u003e2376\u003c/code\u003e for unencrypted/encrypted traffic to the Docker daemon, respectively.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"quickstart\"\u003eQuickstart\u003c/h2\u003e\n\u003cp\u003eAfter creating a Dokku Droplet 1-Click, you need to SSH into the Droplet and configure Dokku SSH keys, domains and virtual hosts. You can learn more about this by looking at \u003cem\u003eDeploying sample application\u003c/em\u003e section\u003c/p\u003e\n\u003ch2 id=\"deploying-sample-application\"\u003eDeploying sample application\u003c/h2\u003e\n\u003cp\u003eOnce you have configured Dokku, you can deploy applications using \u003ccode\u003egit push\u003c/code\u003e:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003e# from your local machine\n# SSH access to github must be enabled on this host\ngit clone https://github.com/heroku/ruby-getting-started`\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"create-the-app\"\u003eCreate the app\u003c/h3\u003e\n\u003cp\u003eSSH into the Dokku host and create the application as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003e# on the Dokku host\ndokku apps:create ruby-getting-started\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"create-the-backing-services\"\u003eCreate the backing services\u003c/h3\u003e\n\u003cp\u003eThe Getting Started app requires a PostgreSQL service, so install the plugin and create the related service as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003e# on the Dokku host\n# install the postgres plugin\n# plugin installation requires root, hence the user change\nsudo dokku plugin:install https://github.com/dokku/dokku-postgres.git\n\n# create a postgres service with the name railsdatabase\ndokku postgres:create railsdatabase\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eEach service may take a few moments to create.\u003c/p\u003e\n\u003ch3 id=\"linking-backing-services-to-applications\"\u003eLinking backing services to applications\u003c/h3\u003e\n\u003cp\u003eOnce the services have been created, you then set the DATABASE_URL environment variable by linking the service, as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003e# on the Dokku host\n# each official datastore offers a `link` method to link a service to any application\ndokku postgres:link railsdatabase ruby-getting-started\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eDokku supports linking a single service to multiple applications as well as linking only one service per application.\u003c/p\u003e\n\u003ch3 id=\"deploy-the-app\"\u003eDeploy the app\u003c/h3\u003e\n\u003cp\u003eTo be able to deploy to your Dokku server, you need to add your public SSH keys to the Dokku key list. You can create a new file on your Dokku host and copy your public SSH key or use commands like \u003ccode\u003escp\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eNow you can add your newly created public SSH key to the Dokku key list:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003e$ on the Dokku host\ndokku ssh-keys:add KEY_NAME path/to/your/public_key.pub\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003ccode\u003eKEY_NAME\u003c/code\u003e\u0026nbsp;is the name you want to use to refer to this particular key. Including the word\u0026nbsp;admin\u0026nbsp;in the name will grant the user privileges to add additional keys remotely.\u003c/p\u003e\n\u003cp\u003eYou can learn more about configuring SSH keys on the \u003ca href=\"https://dokku.com/docs/deployment/user-management/\"\u003eDokku Official User Management page\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eNow you can deploy the ruby-getting-started app to your Dokku server. All you have to do is add a remote to name the app. Applications are created on-the-fly on the Dokku server.\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003e# from your local machine\n# the remote username *must* be dokku or pushes will fail\ncd ruby-getting-started\ngit remote add dokku dokku@dokku.me:ruby-getting-started\ngit push dokku main:master\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eNote: If you are seeing a \u003ccode\u003edenied\u003c/code\u003e error make sure you are using the correct private key for git push. Your private key must match the public key you used during the previous step.\u003c/p\u003e\n\u003cp\u003eAfter running \u003ccode\u003egit push dokku main:master\u003c/code\u003e, you should have output similar to this in your terminal:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003eCounting objects: 231, done.\nDelta compression using up to 8 threads.\nCompressing objects: 100% (162/162), done.\nWriting objects: 100% (231/231), 36.96 KiB | 0 bytes/s, done.\nTotal 231 (delta 93), reused 147 (delta 53)\n-----\u0026gt; Cleaning up...\n-----\u0026gt; Building ruby-getting-started from herokuish...\n-----\u0026gt; Adding BUILD_ENV to build environment...\n-----\u0026gt; Ruby app detected\n-----\u0026gt; Compiling Ruby/Rails\n-----\u0026gt; Using Ruby version: ruby-2.2.1\n-----\u0026gt; Installing dependencies using 1.9.7\n Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment\n Fetching gem metadata from https://rubygems.org/...........\n Fetching version metadata from https://rubygems.org/...\n Fetching dependency metadata from https://rubygems.org/..\n Using rake 10.4.2\n\n...\n\n=====\u0026gt; Application deployed:\n http://%SUBDOMAIN%.%DOMAIN%\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOnce the deployment is complete, the application's web URL will be generated as above.\u003c/p\u003e\n\u003cp\u003eThe\u0026nbsp;SUBDOMAIN\u0026nbsp;is inferred from the pushed application name, while the\u0026nbsp;DOMAIN\u0026nbsp;is set during the initial Dokku configuration. It can then be modified with\u0026nbsp;\u003ccode\u003edokku domains:add-global\u003c/code\u003e\u0026nbsp;and\u0026nbsp;\u003ccode\u003edokku domains:remove-global\u003c/code\u003e. This value is used as a default domain for all applications on a host.\u003c/p\u003e\n\u003cp\u003eCheck the \u003ca href=\"https://dokku.com/docs/configuration/domains/\"\u003eofficial documentation\u003c/a\u003e to learn more about domain configuration.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=dokku-20-04","addonSlug":null,"imageLabel":"dokku-20-04","imageId":134231720,"externalLabel":null,"additionalLinks":[{"name":"Source Code","url":"https://github.com/digitalocean/droplet-1-clicks/tree/master/dokku-20-04","description":"Packer scripts that were used to build this 1-Click App","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_4":{"name":"Ispmanager 6","appId":"b438db8846a25ee6b41a56bd","developerId":"3645","safeName":["ispmanager-6"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/ispmanager-ispmanager6.svg","version":"6.90.2","osVersion":"Ubuntu 20.04","tags":["Blogs and Forums"],"support":{"url":"https://www.ispmanager.com/register","email":"help@ispmanager.com","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Ispmanager ","version":"6.80.0","website":"https://www.ispmanager.com/","releaseNotes":"https://www.ispmanager.com/changelog","licenseLink":"https://static.ispmanager.com/static/files/docs/contracts/license-agreement.html","licenseType":"Proprietary","__typename":"CustomSoftware"},{"name":"Ubuntu Linux","version":"20.04","website":"","releaseNotes":"","licenseLink":"https://ubuntu.com/legal","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"Apache","version":"2.4","website":"","releaseNotes":"","licenseLink":"https://www.apache.org/licenses/LICENSE-2.0","licenseType":"Apache license","__typename":"CustomSoftware"},{"name":"Nginx","version":"1.18","website":"","releaseNotes":"","licenseLink":"http://nginx.org/LICENSE","licenseType":"2-clause BSD-like","__typename":"CustomSoftware"},{"name":"MySQL","version":"5.5, 5.6, 5.7, 8.0","website":"","releaseNotes":"","licenseLink":"https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html","licenseType":"GPL","__typename":"CustomSoftware"},{"name":" MariaDB","version":"10.0 - 10.10","website":"","releaseNotes":"","licenseLink":"https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"phpMyAdmin","version":"4.6","website":"","releaseNotes":"","licenseLink":"https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"PostgreSQL","version":"12","website":"","releaseNotes":"","licenseLink":"https://www.postgresql.org/about/licence/","licenseType":"BSD/MIT similar","__typename":"CustomSoftware"},{"name":"PHP","version":"5.2 - 8.2","website":"","releaseNotes":"","licenseLink":"https://www.php.net/license/","licenseType":"PHP License","__typename":"CustomSoftware"},{"name":"Python","version":"3.8 - 3.11","website":"","releaseNotes":"","licenseLink":"https://docs.python.org/3/license.html#psf-license-agreement-for-python-release","licenseType":"Python License","__typename":"CustomSoftware"},{"name":"Node.js","version":"12.13 - 20.5","website":"","releaseNotes":"","licenseLink":"https://raw.githubusercontent.com/nodejs/node/master/LICENSE","licenseType":"MIT License","__typename":"CustomSoftware"},{"name":"Docker","version":"20.10","website":"","releaseNotes":"","licenseLink":"https://docs.docker.com/engine/#licensing","licenseType":"Apache License","__typename":"CustomSoftware"},{"name":"WireGuard","version":"1.0","website":"","releaseNotes":"","licenseLink":"https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"WordPress","version":"4.0 - 6.2","website":"","releaseNotes":"","licenseLink":"https://wordpress.org/about/license/","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"Drupal","version":"7.59 - 8.9","website":"","releaseNotes":"","licenseLink":"https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"Joomla","version":"3.0 - 3.10","website":"","releaseNotes":"","licenseLink":"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"Exim","version":"4.93","website":"","releaseNotes":"","licenseLink":"https://www.gnu.org/licenses/gpl-3.0.html","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"Dovecot","version":"2.3.7.2","website":"","releaseNotes":"","licenseLink":"https://dovecot.org/doc/COPYING","licenseType":"MIT, LGPL","__typename":"CustomSoftware"},{"name":"Roundcube","version":"1.4.3","website":"","releaseNotes":"","licenseLink":"https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"OpenDKIM","version":"2.11","website":"","releaseNotes":"","licenseLink":"http://www.opendkim.org/license.html","licenseType":"OpenDKIM License","__typename":"CustomSoftware"},{"name":"ProFTP","version":"1.3","website":"","releaseNotes":"","licenseLink":"https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"Bind","version":"9","website":"","releaseNotes":"","licenseLink":"https://www.mozilla.org/en-US/MPL/","licenseType":" Mozilla Public License","__typename":"CustomSoftware"}],"summary":"Ispmanager is a control panel for Linux servers. It has a self-explanatory user interface and wide functionality — it will be appreciated by both beginning web developers and administrators and experienced specialists.","description":"\u003ch1 id=\"thank-you-for-choosing-ispmanager-we-hope-our-product-will-simplify-your-work-and-streamline-routine-tasks\"\u003eThank you for choosing ispmanager. We hope our product will simplify your work and streamline routine tasks.\u003c/h1\u003e\n\u003ch2 id=\"about-us\"\u003eAbout us\u003c/h2\u003e\n\u003cp\u003eIspmanager – websites and web environment Linux control panel that makes life easier for web developers and hosting professionals\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e19 years on the market - 100,000 users - 2,000,000 websites work with ispmanager\u003c/em\u003e\u003c/p\u003e\n\u003ch2 id=\"what-ispmanager-is\"\u003eWhat ispmanager is?\u003c/h2\u003e\n\u003cp\u003eIspmanager creates and manages websites, users, databases, DNS, backups, mail servers, and security tools, including automatically releasing and renewing all kinds of SSL certifications. It possesses a user-friendly interface and offers extensive functionality.\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://static.ispmanager.com/static/files/docs/files/themes-EN.png\" alt=\"Light \u0026amp; dark theme on the ispmanager dashboard\"/\u003e\u003c/p\u003e\n\u003ch2 id=\"why-choose-ispmanager\"\u003eWhy choose ispmanager?\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStability:\u003c/strong\u003e Ispmanager is developed in C++ and operates independently of Nginx and Apache, resulting in high speed and fault tolerance. The panel outperforms some of its competitors and remains operational even in the event of a web server crash.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eConvenience.\u003c/strong\u003e The interface is one of the main advantages that our users point out. It’s powerful but clear and created by UX design professionals. Due to this, our product is suitable for both beginners and professionals.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eExtensive Functionality in one purchase:\u003c/strong\u003e By buying our product, you get everything in one package. No more lack of functionality and additional payments to get the best of it.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eRegular updates.\u003c/strong\u003e Every two weeks we release a beta version of the product, and monthly — a stable release with improvements and updates. We maintain compatibility with third-party applications, and once errors occur, we can quickly respond to them and release bug fixes\u003c/p\u003e","gettingStarted":"\u003cp\u003e\u003cstrong\u003eStep 1:\u003c/strong\u003e\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eThe panel will be installed automatically; please wait for approximately 10 minutes before you can begin.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 2:\u003c/strong\u003e\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eAfter installation, you can access ispmanager using the following URL: https://:1500/ispmgr \u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eLogin: root \u003cbr\u003e\u003c/p\u003e\n\u003cp\u003ePassword: *\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e*\u003cem\u003eYou can find the password in your Digital Ocean account.\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 3:\u003c/strong\u003e\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eOnce you have access to the panel on the server, you should activate your ispmanager by either using a license key or opting for the trial version. You can do this by clicking on the banner at the top of the screen.\u003c/p\u003e\n\u003ch2 id=\"support\"\u003eSupport\u003c/h2\u003e\n\u003cp\u003eIf you have any questions, please consult our documentation or contact our free 24/7 support through the help@ispmanager.com.\u003c/p\u003e\n\u003cp\u003eBelow you will find more information that can help you:\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.ispmanager.com/support\"\u003eHelpcenter\u003c/a\u003e // \u003ca href=\"https://www.ispmanager.com/docs\"\u003eDocumentation\u003c/a\u003e // \u003ca href=\"https://www.ispmanager.com/community\"\u003eFeature request\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe're also always happy to answer your questions in our community. Visit our ispmanager \u003ca href=\"bit.ly/Our_Community_On_Facebook\"\u003eCommunity on Facebook\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe wish you a smooth and enjoyable experience!\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=ispmanager-ispmanager6","addonSlug":null,"imageLabel":"ispmanager-ispmanager6","imageId":150551487,"externalLabel":null,"additionalLinks":[{"name":"See demo","url":"https://www.ispmanager.com/try#demo","description":"Pre-configured online demo","__typename":"AdditionalLink"},{"name":"Product Documentation","url":"https://www.ispmanager.com/docs","description":"Documentation about ispmanager","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"CategoryGroup"},{"nav_icon":{"dimensions":null,"url":null,"__typename":"PrismicStructuredImage"},"category":"eCommerce","is_new":"false","is_visible_in_nav":"false","nav_description":[{"text":"Popular eCommerce software","__typename":"PrismicStructuredText"}],"hero_text":[{"text":"Popular eCommerce software preconfigured and ready to use","__typename":"PrismicStructuredText"}],"staff_pick_1":null,"staff_pick_2":{"name":"Magento 2 Open Source","appId":"5e7512c8dee38c04f11af214","developerId":"3338","safeName":["magento-2-open-source"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/eltrino-magento2opensour-20-04.svg","version":"1.6.11","osVersion":"Ubuntu 20.04 (LTS)","tags":["eCommerce"],"support":{"url":"https://eltrino.com/","email":"support@eltrino.com","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Magento Open Source","version":"2.4.6-p4","website":"","releaseNotes":"https://magento.com/tech-resources/download","licenseLink":"https://opensource.org/licenses/OSL-3.0","licenseType":"The Open Software License 3.0 (OSL-3.0)","__typename":"CustomSoftware"},{"name":"PHP","version":"8.2.18","website":"","releaseNotes":"https://packages.ubuntu.com/search?keywords=php8","licenseLink":"https://www.php.net/license/index.php","licenseType":"PHP v3.01","__typename":"CustomSoftware"},{"name":"Composer","version":"2.5.8","website":"","releaseNotes":"https://getcomposer.org/download/","licenseLink":"https://github.com/composer/composer/blob/master/LICENSE","licenseType":"MIT license","__typename":"CustomSoftware"},{"name":"Opensearch","version":"2.12.0","website":"","releaseNotes":"https://opensearch.org/","licenseLink":"https://github.com/opensearch-project/OpenSearch/blob/main/LICENSE.txt","licenseType":"Apache License 2.0","__typename":"CustomSoftware"},{"name":"Varnish","version":"6.4.0","website":"","releaseNotes":"https://varnish-cache.org/releases/rel6.4.0.html#rel6-4-0","licenseLink":"https://varnish-cache.org/intro/#license-and-origin","licenseType":"The 2-Clause BSD License","__typename":"CustomSoftware"},{"name":"Apache","version":"2.4.41","website":"","releaseNotes":"https://packages.ubuntu.com/bionic/apache2","licenseLink":"https://www.apache.org/licenses/","licenseType":"Apache License 2.0","__typename":"CustomSoftware"},{"name":"MySQL","version":"8.0.27","website":"","releaseNotes":"https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-21.html","licenseLink":"https://downloads.mysql.com/docs/licenses/mysqld-5.7-gpl-en.pdf","licenseType":"GPLv2","__typename":"CustomSoftware"},{"name":"Certbot","version":"0.40.0","website":"","releaseNotes":"https://github.com/certbot/certbot","licenseLink":"https://github.com/certbot/certbot/blob/master/LICENSE.txt","licenseType":"Apache Version 2.0","__typename":"CustomSoftware"},{"name":"Postfix SMTP","version":"3.4.13","website":"","releaseNotes":"","licenseLink":"","licenseType":"","__typename":"CustomSoftware"}],"summary":"Power your eCommerce with rich out-of-the-box features, an unrivaled ability to customize, and seamless third-party integrations.","description":"\u003cp\u003eMagento is a flexible, endlessly customizable eCommerce platform that allows merchants to quickly bring to market the innovative, differentiated experiences that customers demand. As merchants retain full control over their Magento environment, they can enrich their web store with new features anytime.\u003c/p\u003e\n\u003cp\u003eBesides the default Luma theme, this Magento 1-Click App can also deploy the Hyva theme.\u003c/p\u003e","gettingStarted":"\u003cp\u003eMinimal Droplet requirements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e1 vCPU\u003c/li\u003e\n\u003cli\u003e4 GB RAM\u003c/li\u003e\n\u003cli\u003e50 GB SSD\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIn addition to the package installation, the One-Click also:\u003c/p\u003e\n\u003cp\u003e● Enables the Apache rewrite module so the Magento 2 permalink feature will work.\u003c/p\u003e\n\u003cp\u003e● Enables the UFW firewall to allow only SSH (port 22, rate limited), HTTP (port 80), and HTTPS (port 443) access.\u003c/p\u003e\n\u003cp\u003e● Creates a Magento Mysql user with the necessary permissions, creates Magento database. \u003cstrong\u003eNote\u003c/strong\u003e, the Droplet root user will not be prompted for the MySQL password.\u003c/p\u003e\n\u003cp\u003e● Download and install Magento 2 with Sample Data (optional) instance on your entered domain.\u003c/p\u003e\n\u003cp\u003e● Enable and configure Varnish (port 80) for your Magento 2 instance.\u003c/p\u003e\n\u003cp\u003e● Configure Postfix SMTP server. It’s a free and open-source mail transfer agent that routes and delivers electronic mail to your Magento 2 Admin email address\u003c/p\u003e\n\u003cp\u003eAfter you create a Magento One-Click Droplet, you’ll need to log into the Droplet via SSH to finish the Magento setup. This prevents the setup wizard from being visible to the internet until you’re ready to complete it. If you try to visit the Droplet’s IP address before logging into the Droplet, you’ll see a DigitalOcean landing page.\u003c/p\u003e\n\u003cp\u003eFrom a terminal on your local computer, connect to the Droplet as root.\u003c/p\u003e\n\u003cp\u003eMake sure to substitute the Droplet’s IP address.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003essh root@use_your_droplet_ip\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eIf you didn't add an SSH key when you created the Droplet, you’ll first be prompted to reset your root password.\u003c/p\u003e\n\u003cp\u003eThen, the interactive script that runs will first prompt you for your domain or subdomain. \u003cstrong\u003eNote\u003c/strong\u003e, before entering your domain or subdomain name, it must be configured through DigitalOcean Control Panel or through any other DNS provider.\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003eTo cancel setup, press Ctrl+C. This script will run again on your next login\n--------------------------------------------------\nEnter the domain name for your new Magento 2 site.\n(ex. example.org or test.example.org) do not include www or http/s\n--------------------------------------------------\nDomain/Subdomain name:\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eFurther, you will be asked to enter the proposed data to create a new\u003c/p\u003e\n\u003cp\u003eadmin account for Magento 2.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eNow we will create your new admin user account for Magento.\nYour Email Address:\nUsername:\nPassword: (Note! Your password must include both numeric and alphabetic characters)\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eFurther, you will be asked to enter the proposed data to create an admin account for Magento 2. The next prompt asks if you want to use SSL for your website via Let’s Encrypt.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote\u003c/strong\u003e, before use SSL for your website your domain name must be propagated by DNS, otherwise Let’s Encrypt doesn’t validate it.\u003c/p\u003e\n\u003cp\u003eYou will see the following message:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003eNext, you have the option of configuring LetsEncrypt to secure your new site.\nBefore doing this, be sure that you have pointed your domain or subdomain to\nthis server's IP address. You can also run Let's Encrypt certbot later with the\ncommand 'certbot --apache'\nWould you like to use LetsEncrypt (certbot) to configure SSL(https) for your\nnew site? (y/n):\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eNote.\u003c/strong\u003e You can not configure SSL certificate later just using command 'certbot --apache' because Varnish using default 80 port. You must open magento_setup.sh file in /opt/digitalocean/ directory and find section with configure LetsEncrypt certificate to secure your site and run the commands described there to configure the SSL certificate.\u003c/p\u003e\n\u003cp\u003eBefore installation process, you will be asked to enter your authentication keys from Magento Marketplace.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eAuthentication required (repo.magento.com):\nUsername:\nPassword:\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eTo get your \u003cstrong\u003ePublic\u003c/strong\u003e and \u003cstrong\u003ePrivate key\u003c/strong\u003e, you must follow instruction \u003ca href=\"https://devdocs.magento.com/guides/v2.3/install-gde/prereq/connect-auth.html\"\u003eHow to get your authentication keys\u003c/a\u003e. Use the \u003cstrong\u003ePublic key\u003c/strong\u003e as your \u003cstrong\u003eUsername\u003c/strong\u003e and the \u003cstrong\u003ePrivate key\u003c/strong\u003e as your \u003cstrong\u003ePassword\u003c/strong\u003e.\u003c/p\u003e\n\u003cp\u003eThen you’ll see the installation process of Magento 2, where you can choose to install the sample data or not.\u003c/p\u003e\n\u003cp\u003eOn the next step you'll be asked\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ePlease, select patch provider: 1\nPlease, select patch category: 1\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSelect category from the bellow\u003c/p\u003e\n\u003cp\u003ePatch categories:\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e1) All (51)\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e2) Catalog/Product (10)\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e3) Order/Checkout (7)\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e4) Payments (3)\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e5) Customer (2)\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e6) Other (2)\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e7) Reports (1)\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e8) Inventory (5)\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e9) Shopping Cart (8)\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e10) Price/Tax (2)\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e11) Emails (2)\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e12) Admin (9)\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e13) GraphQL (14)\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e14) Performance (1)\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e15) Web API (1)\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e16) Import/Export (1)\u003c/p\u003e\n\u003cp\u003eIn the next section, you have to enter y to add data in env.php file for correct Varnish cache cleaning for your Magento 2 instance.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eOverwrite the existing configuration for db-ssl-verify?[Y/n]\nOverwrite the existing configuration for allow-parallel-generation?[Y/n]\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eAfter success installation, you will see the following message:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eInstallation complete. Access your new Magento site in a browser to continue.\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eAfter that, you can use the Magento 2 Admin Dashboard. For reference:\u003c/p\u003e\n\u003cp\u003e● The MySQL Magento user password is in /root/.digitalocean_password.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote\u003c/strong\u003e, the Droplet root user will not be prompted for the MySQL password.\u003c/p\u003e\n\u003cp\u003e● The web root is /var/www/html.\u003c/p\u003e\n\u003cp\u003e● You can get information about the PHP installation by logging into the Droplet and running php -i.\u003c/p\u003e\n\u003cp\u003e● For access Magento admin panel using “Username” and “Password”, which were introduced earlier.\u003c/p\u003e\n\u003cp\u003eCreating an Apache virtual hosts file for each site maintains the default configuration as the fallback, as intended, and makes it easier to manage changes when hosting multiple sites.\u003c/p\u003e\n\u003cp\u003eTo do so, you’ll need to create two things for each domain: a new directory in /var/www for that domain’s content, and a new virtual host file in /etc/apache2/sites-available for that domain’s configuration. For a detailed walkthrough, you can follow \u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-16-04\"\u003eHow to Set Up Apache Virtual Hosts\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eIf you didn’t enable HTTPS during the initial setup script, you can enable it manually at any time after the fact.\u003c/p\u003e\n\u003cp\u003eSetting up an SSL certificate enables HTTPS on the web server, which secures the traffic between the server and the clients connecting to it. Certbot is a free and automated way to set up SSL certificates on a server. It’s included as part of the Magento 2 One-Click to make securing the Droplet easier.\u003c/p\u003e\n\u003cp\u003eTo use Certbot, you’ll need a registered domain name and two DNS records:\u003c/p\u003e\n\u003cp\u003e● An A record from the domain (e.g., example.com) to the server’s IP address\u003c/p\u003e\n\u003cp\u003e● An A record from the domain prefaced with www (e.g.,\u003ca href=\"http://www.example.com\"\u003ewww.example.com\u003c/a\u003e) to the server’s IP addressAdditionally, if you’re using a virtual hosts file, you’ll need to make sure the server name directive in the VirtualHost block (e.g., ServerName example.com) is correctly set to the domain.\u003c/p\u003e\n\u003cp\u003eHTTPS traffic on port 443 is already allowed through the firewall. After you set up HTTPS, Varnish configuration will automatically redirect your site to your secure 'https' url.\u003c/p\u003e\n\u003cp\u003eFor a more detailed walkthrough, you can follow \u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-18-04\"\u003eHow to Secure Apache with Let’s Encrypt\u003c/a\u003e or view \u003ca href=\"https://certbot.eff.org/docs/using.html\"\u003eCertbot’s official documentation\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eYou can serve files from the web server by adding them to the web root\u003c/p\u003e\n\u003cp\u003e(/var/www/html) using SFTP or other tools.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=eltrino-magento2opensour-20-04","addonSlug":null,"imageLabel":"eltrino-magento2opensour-20-04","imageId":158196978,"externalLabel":null,"additionalLinks":null,"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_3":null,"staff_pick_4":null,"__typename":"CategoryGroup"},{"nav_icon":{"dimensions":null,"url":null,"__typename":"PrismicStructuredImage"},"category":"eLearning","is_new":"false","is_visible_in_nav":"false","nav_description":[{"text":"Apps that enable Remote Learning.","__typename":"PrismicStructuredText"}],"hero_text":[{"text":"Apps that enable Remote Learning.","__typename":"PrismicStructuredText"}],"staff_pick_1":{"name":"Chamilo","appId":"5d6eb0e029a6ab50ccbc3ff9","developerId":"74","safeName":["chamilo"],"created":1567535328000,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/chamilo-18-04.svg","version":"1.11.10","osVersion":"Ubuntu 18.04","tags":["eLearning","Open Source"],"support":{"url":"https://beeznest.com/","email":"sales@beeznest.com","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Apache","version":"2.4","website":"","releaseNotes":"","licenseLink":"","licenseType":"Apache","__typename":"CustomSoftware"},{"name":"MariaDB","version":"10","website":"","releaseNotes":"","licenseLink":"","licenseType":"GPLv2","__typename":"CustomSoftware"},{"name":"PHP","version":"7.2","website":"","releaseNotes":"","licenseLink":"","licenseType":"PHP","__typename":"CustomSoftware"}],"summary":"Chamilo is the easiest and one of the Top 3 Free Software e-Learning (LMS) platforms","description":"\u003cp\u003eSimplify e-Learning with Chamilo Learning Management System (LMS). Use the Chamilo 1-Click App to quickly deploy your own LMS so you can create and host online courses and let thousands of students learn freely or through PayPal purchases. Generate badges, certificates and reports on your learners/students learning progress.\u003c/p\u003e\n\u003cp\u003eChamilo is brought to you by The Chamilo project, a group of people and organizations that develop or use the Chamilo software and have the Chamilo association, a legally registered non-profit organization (in Spain) that aims to \"increase the availability of quality education around the world\"\u003c/p\u003e","gettingStarted":"\u003col\u003e\n\u003cli\u003eCreate your Chamilo 1-Click App and when running, visit in a browser, e.g., \u003ccode\u003ehttp://your_Droplet_IP\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eConnect as admin using the default credentials: admin / DigitalOcean\u003c/li\u003e\n\u003cli\u003eChange your password and other details by going to the right drop-down user menu, clicking on the admin username, then clicking on the pencil icon under the user picture.\u003c/li\u003e\n\u003cli\u003eTo change the URL/domain, just point your DNS to the server IP of this new VM\u003c/li\u003e\n\u003cli\u003eTo reconfigure with HTTPS, simply use the DigitalOcean guide on setting up HTTPS with Letsencrypt on Ubuntu and ensure your Apache VirtualHost continues to point to /var/www/chamilo/www/\u003c/li\u003e\n\u003cli\u003eYou can learn more about using Chamilo at \u003ca href=\"https://docs.chamilo.org/\"\u003ehttps://docs.chamilo.org/\u003c/a\u003e\u003c/li\u003e\n\u003c/ol\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=chamilo-18-04#choose-droplet-size","addonSlug":null,"imageLabel":"chamilo-18-04","imageId":52639497,"externalLabel":null,"additionalLinks":null,"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_2":{"name":"BigBlueButton Server","appId":"5f49b96fcee4d5535d2bd845","developerId":"32","safeName":["bigbluebutton-server"],"created":1598667119000,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/opentradestatist-bigbluebuttonser-16-04.svg","version":"2.2","osVersion":"Ubuntu 16.04","tags":["eLearning","Media"],"support":{"url":"https://github.com/pachamaltese/bigbluebutton-droplet/issues","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"BigBlueButton","version":"2.2","website":"","releaseNotes":"","licenseLink":"https://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License","licenseType":"LGPL","__typename":"CustomSoftware"},{"name":"NGINX","version":"1.14","website":"","releaseNotes":"","licenseLink":"https://en.wikipedia.org/wiki/BSD_licenses#2-clause","licenseType":"Simplified BDS License","__typename":"CustomSoftware"}],"summary":"BigBlueButton is a free software web conferencing system that features a whiteboard that suits lectures and training sessions. It has integrations for many of the major learning and content management systems.","description":"\u003cp\u003eBigBlueButton is a free software web conferencing system that features a whiteboard that suits lectures and training sessions. It has integrations for many of the major learning and content management systems.\u003c/p\u003e\n\u003cp\u003eDroplets created by using this image allow videoconferencing between different platforms (i.e. Windows, Mac, Linux), just requiring to open a new browser tab from a modern web browser such as Firefox or Chrome.\u003c/p\u003e\n\u003cp\u003eThis is a pre-configured image that is ready to use. You'll only need a domain and a few additional steps to enable HTTPS for secure communication with your students or teams.\u003c/p\u003e\n\u003cp\u003eIt is recommended to run this image on a \u003ca href=\"https://cloud.digitalocean.com/droplets/new?size=c-2-4gib\" target=\"_blank\" rel=\"noopener\"\u003eCPU-Optimized droplet with at least 4GB of RAM\u003c/a\u003e or higher. It works on General Purpose droplets but the performance can be degraded. The detailed hardware requirements can be seen \u003ca href=\"https://docs.bigbluebutton.org/2.2/install.html#before-you-install\" target=\"_blank\" rel=\"noopener\"\u003ehere\u003c/a\u003e.\u003c/p\u003e","gettingStarted":"\u003ch1 id=\"configure-bigbluebutton\"\u003eConfigure BigBlueButton\u003c/h1\u003e\n\u003ch2 id=\"step-1\"\u003eStep 1\u003c/h2\u003e\n\u003cp\u003eCreate a droplet from the image available in the Marketplace.\u003c/p\u003e\n\u003ch2 id=\"step-2\"\u003eStep 2\u003c/h2\u003e\n\u003cp\u003eThe image is ready to run over HTTP, but we do recommend to enable HTTPS. If you want to run the image over HTTP, you can access from the IP or you can associate a domain to the droplet you've just created.\u003c/p\u003e\n\u003cp\u003eHere's an excellent guide to associate a domain: \u003ca href=\"https://www.digitalocean.com/docs/networking/dns/how-to/add-domains/\"\u003ehttps://www.digitalocean.com/docs/networking/dns/how-to/add-domains/\u003c/a\u003e. It is mandatory to add an A record (i.e. bigbluebutton-example.digitalocean.com) pointing to the IP associated with your droplet.\u003c/p\u003e\n\u003ch2 id=\"step-3\"\u003eStep 3\u003c/h2\u003e\n\u003cp\u003eAccess the console (i.e via ssh by running \u003ccode\u003essh root@123.456.789\u003c/code\u003e) and set a new password.\u003c/p\u003e\n\u003cp\u003eTo configure HTTPS, including the certificates, I simplified the process to running this script:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./https-01.sh example.digitalocean.com 2048\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eor\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./https-01.sh example.digitalocean.com 4096\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe difference between 2048 and 4096 is that the former shall create a stronger certificate, but it's much slower to process.\u003c/p\u003e\n\u003cp\u003eNow create the certificates:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ecertbot --webroot -w /var/www/bigbluebutton-default/ -d example.digitalocean.com certonly\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eIt is very important that you write the Terms of Service to use Let's Encrypt and that you type a valid email, because the service shall notify you when you need to update the certificates since those have a expiry date.\u003c/p\u003e\n\u003cp\u003eNow apply the configuration with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./https-02.sh example.digitalocean.com 2048\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eor\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./https-02.sh example.digitalocean.com 4096\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eDepending on what you did in the previous steps.\u003c/p\u003e\n\u003ch2 id=\"step-4\"\u003eStep 4\u003c/h2\u003e\n\u003cp\u003eCheck the installation with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ebbb-conf --check\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThis shall show you some basic recommendations such as disabling the demo sessions.\u003c/p\u003e\n\u003cp\u003ePlease don't skip the \u003ca href=\"https://docs.bigbluebutton.org/\"\u003edocumentation\u003c/a\u003e if you want to personalize the installation. The documentation explains nice features, such as enforcing HTTPS and increasing the file size for an uploaded presentation.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=opentradestatist-bigbluebuttonser-16-04","addonSlug":null,"imageLabel":"opentradestatist-bigbluebuttonser-16-04","imageId":70987172,"externalLabel":null,"additionalLinks":null,"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_3":null,"staff_pick_4":null,"__typename":"CategoryGroup"},{"nav_icon":{"dimensions":null,"url":null,"__typename":"PrismicStructuredImage"},"category":"Email","is_new":"false","is_visible_in_nav":"false","nav_description":[{"text":"Trusted email solutions for your apps.","__typename":"PrismicStructuredText"}],"hero_text":[{"text":"Trusted email solutions for your apps.","__typename":"PrismicStructuredText"}],"staff_pick_1":{"name":"EmailEngine","appId":"61f05cd9285328417374254e","developerId":"3531","safeName":["emailengine"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/postalsystemso-emailengine.png","version":"2.40.9","osVersion":"Ubuntu 22.04","tags":["Email"],"support":{"url":"https://postalsys.com","email":"support@postalsys.com","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"EmailEngine","version":"2.40.9","website":"https://emailengine.app/","releaseNotes":"https://github.com/postalsys/emailengine/releases/tag/v2.40.9","licenseLink":"https://github.com/postalsys/emailengine/blob/master/LICENSE_EMAILENGINE.txt","licenseType":"Commercial","__typename":"CustomSoftware"}],"summary":"Email client for apps, not people. EmailEngine is an email automation platform that allows you to send and receive emails using a user-friendly REST API. By using EmailEngine, you can concentrate on creating essential features, saving months of developer time that would otherwise be spent on developing custom IMAP and SMTP connectivity.","description":"\u003cp\u003eEmailEngine enables email account access through a REST API by maintaining a constant IMAP connection with each account. It converts REST API requests into IMAP commands and closely monitors changes in these accounts.\u003c/p\u003e\n\u003cp\u003eThis platform is an ideal solution for those who wish to create in-house IMAP and SMTP integrations for their services but prefer not to dive deep into the complexities of numerous RFC specifications.\u003c/p\u003e\n\u003cp\u003eThink of EmailEngine as a powerful email class library. While an IMAP library can help with basic tasks like displaying the current mailbox state, EmailEngine goes beyond this, providing more comprehensive support for complex operations.\u003c/p\u003e","gettingStarted":"\u003col\u003e\n\u003cli\u003eCreate an A-record for your domain name in your DNS, pointing to your droplet's IP address\u003c/li\u003e\n\u003cli\u003eUse SSH to log in to your droplet and provide the requested domain name and admin password: ssh \u003ccode\u003eroot@your_droplet_public_ipv4\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGo to http://your_droplet_public_ipv4 and click the \u003cem\u003eManage EmailEngine\u003c/em\u003e button\u003c/li\u003e\n\u003cli\u003eSign in to the web interface using the username \"admin\" and the password from step 2\u003c/li\u003e\n\u003cli\u003eAfter logging in, start your 14-day trial by clicking the \u003cem\u003eStart a 14-day trial\u003c/em\u003e button\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e\u003cstrong\u003eNext steps\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eAdd your IMAP account information on the Accounts page to begin monitoring it\u003c/li\u003e\n\u003cli\u003eGenerate an access token on the Access tokens page\u003c/li\u003e\n\u003cli\u003eTest some REST API requests on the API Reference page for the monitored account\u003c/li\u003e\n\u003cli\u003eTo update EmailEngine to the latest version, execute the following command on the server: \u003ccode\u003esudo /opt/upgrade-emailengine.sh\u003c/code\u003e\u003c/li\u003e\n\u003c/ol\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=postalsystemso-emailengine","addonSlug":null,"imageLabel":"postalsystemso-emailengine","imageId":153349970,"externalLabel":null,"additionalLinks":[{"name":"Homepage","url":"https://emailengine.app","description":"Homepage and documentation","__typename":"AdditionalLink"},{"name":"REST API","url":"https://api.emailengine.app/","description":"API reference","__typename":"AdditionalLink"},{"name":"Blog","url":"https://docs.emailengine.app","description":"Articles and tutorials","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_2":{"name":"SendGrid","appId":"61fd8fd33047aa43ca114ddc","developerId":"3537","safeName":["sendgrid"],"created":1644007379000,"type":"saas-affiliate","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://i.imgur.com/vDa6UOa.png","version":"","osVersion":"","tags":["Email"],"support":{"url":"https://support.sendgrid.com/","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":null,"summary":"Send emails with confidence.","description":"\u003cp\u003eSay goodbye to email fire drills by building and monitoring your email solution on a trusted foundation. Our Email API and purpose-built MTA send over 100B emails per month for businesses of all sizes. On our collaborative platform, your teams can work together to create email templates that send programmatically, analyze email performance, and troubleshoot diagnostically to identify delivery issues.\u003c/p\u003e\u003cp\u003eGetting your emails delivered is our #1 priority - we understand that lost emails are lost customers. Our email platform provides streamlined tools and recommendations to achieve optimal inbox placement. With infrastructure that automates queue handling and throttles threat detection, Twilio SendGrid enables your teams to focus on building innovative customer experiences by optimizing for deliverability, scalability, and security.\u003c/p\u003e\u003ch2\u003eUse Cases\u003c/h2\u003e\u003cul\u003e\u003cli\u003eDeliver timely alerts and notifications - from password resets to purchase confirmations.\u003c/li\u003e\u003cli\u003eCreate personalized promotions based on triggers and segmentation.\u003c/li\u003e\u003cli\u003eOptimize email marketing campaigns with automation and intelligence.\u003c/li\u003e\u003cli\u003eConnect with consumers at the perfect time to influence a purchase, improving customer loyalty and lead conversions.\u003c/li\u003e\u003c/ul\u003e\u003ch2\u003eAccount Setup\u003c/h2\u003e\u003cstrong\u003eTwo Factor Authentication\u003c/strong\u003e\u003cp\u003eTwo-factor authentication (2FA) is required by Twilio SendGrid in order to protect senders from account takeovers. To enable 2FA, navigate to Settings \u003e Two-Factor Authentication in the Twilio SendGrid App, and click Add Two-Factor Authentication. To learn more about setting up 2FA, please read the \u003ca href=\"https://docs.sendgrid.com/ui/account-and-settings/two-factor-authentication\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\u003cstrong\u003eAPI Keys\u003c/strong\u003e\u003cp\u003e\u003ca href=\"https://docs.sendgrid.com/ui/account-and-settings/api-keys\"\u003eAPI Keys\u003c/a\u003e are used by your application, mail client, or website to authenticate access to Twilio SendGrid services. Unlike a username and password, an API key can be scoped to provide access to the minimum services needed by your application, and you can revoke an API key at any time without needing to change your username and password. For these reasons, API keys are required when connecting to all of Twilio SendGrid’s services. To learn more about creating API keys, please visit the \u003ca href=\"https://docs.sendgrid.com/ui/account-and-settings/api-keys\"\u003eTwilio SendGrid Knowledge Center\u003c/a\u003e.\u003c/p\u003e","gettingStarted":"\u003cp\u003eIntegrate and deliver email in minutes with our RESTful APIs and SMTP, libraries to support your programming language, and detailed documentation. Twilio SendGrid’s Email API provides support in seven different programming languages, including C#, Go, Java, Node.js, PHP, Python, and Ruby.\u003c/p\u003e\u003ch2\u003eCode Examples\u003c/h2\u003e\u003ch3\u003ecurl\u003c/h3\u003e\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003ecurl --request POST\n --url https://api.sendgrid.com/v3/mail/send\n --header 'Authorization: Bearer YOUR_API_KEY'\n --header 'Content-Type: application/json'\n --data '{\"personalizations\": [{\"to\": [{\"email\": \"recipient@example.com\"}]}],\"from\": {\"email\": \"sendeexampexample@example.com\"},\"subject\": \"Hello, World!\",\"content\": [{\"type\": \"text/plain\", \"value\": \"Heya!\"}]}'\u003c/code\u003e\u003c/pre\u003e\u003ch3\u003eNode.js\u003c/h3\u003e\u003cpre\u003e\u003ccode class=\"bash language-js\"\u003e// using SendGrid's Node.js Library\n// https://github.com/sendgrid/sendgrid-nodejs\nconst sendgrid = require(\"sendgrid\")(\"SENDGRID_APIKEY\");\nconst email = new sendgrid.Email();\n\nemail.addTo(\"test@sendgrid.com\");\nemail.setFrom(\"you@youremail.com\");\nemail.setSubject(\"Sending an email with SendGrid is Fun\");\nemail.setHtml(\"and easy to do anywhere, even with Node.js\");\n\nsendgrid.send(email);\u003c/code\u003e\u003c/pre\u003e\u003ch3\u003ePython\u003c/h3\u003e\u003cpre\u003e\u003ccode class=\"bash language-python\"\u003e# using SendGrid's Python Library\n# https://github.com/sendgrid/sendgrid-python\nimport sendgrid\nimport os\nfrom sendgrid.helpers.mail import *\nsg = sendgrid.SendGridAPIClient(api_key=os.environ.get('SENDGRID_API_KEY'))\nfrom_email = Email('test@example.com')\nto_email = To('test@example.com')\nsubject = 'Sending with SendGrid is Fun'\ncontent = Content('text/plain', 'and easy to do anywhere, even with Python')\nmail = Mail(from_email, to_email, subject, content)\nresponse = sg.client.mail.send.post(request_body=mail.get())\nprint(response.status_code)\nprint(response.body)\nprint(response.headers)\u003c/code\u003e\u003c/pre\u003e\u003ch3\u003eRuby\u003c/h3\u003e\u003cpre\u003e\u003ccode class=\"bash language-ruby\"\u003e# using SendGrid's Ruby Library\n# https://github.com/sendgrid/sendgrid-ruby\nrequire 'sendgrid-ruby'\ninclude SendGrid\n\nfrom = SendGrid::Email.new(email: 'test@example.com')\nto = SendGrid::Email.new(email: 'test@example.com')\nsubject = 'Sending with SendGrid is Fun'\ncontent = SendGrid::Content.new(type: 'text/plain', value: 'and easy to do anywhere, even with Ruby')\nmail = SendGrid::Mail.new(from, subject, to, content)\n\nsg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])\nresponse = sg.client.mail._('send').post(request_body: mail.to_json)\nputs response.status_code\nputs response.body\nputs response.headers\u003c/code\u003e\u003c/pre\u003e","createApp":"https://signup.sendgrid.com?affiliate=digitalocean","addonSlug":null,"imageLabel":"","imageId":null,"externalLabel":null,"additionalLinks":null,"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_3":null,"staff_pick_4":null,"__typename":"CategoryGroup"},{"nav_icon":{"dimensions":{"width":32,"height":37,"__typename":"PrismicImageDimensions"},"url":"https://images.prismic.io/do-marketplace-testing%2Fbc06e477-0fd7-48a2-83f0-57d40c6495c8_frameworks.svg?auto=compress,format","__typename":"PrismicStructuredImage"},"category":"Frameworks","is_new":"false","is_visible_in_nav":"true","nav_description":[{"text":"Pre-configured application stacks.","__typename":"PrismicStructuredText"}],"hero_text":[{"text":"Deploy popular stacks like LAMP, LEMP, NodeJS, and Django.","__typename":"PrismicStructuredText"}],"staff_pick_1":{"name":"NodeJS","appId":"5ba19757fc53b8179c7a0086","developerId":"1","safeName":["nodejs"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/nodejs-20-04.svg","version":"latest","osVersion":"Ubuntu 20.04","tags":["Frameworks"],"support":{"url":"","email":"marketplace-eng@do.co","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Node.js","version":"18.12.1","website":"","releaseNotes":"https://nodejs.org/dist/latest-v12.x/docs/api/","licenseLink":"https://github.com/nodejs/node/blob/master/LICENSE","licenseType":"Custom","__typename":"CustomSoftware"},{"name":"NPM","version":"6.14.4","website":"","releaseNotes":"https://docs.npmjs.com/about-npm/","licenseLink":"https://www.npmjs.com/policies/npm-license","licenseType":"Artistic License 2.0","__typename":"CustomSoftware"},{"name":"NGINX","version":"1.17.10","website":"","releaseNotes":"https://packages.ubuntu.com/focal/nginx","licenseLink":"http://nginx.org/LICENSE","licenseType":"Custom","__typename":"CustomSoftware"},{"name":"PM2","version":"4.4.0","website":"","releaseNotes":"https://pm2.keymetrics.io","licenseLink":"https://github.com/Unitech/pm2/blob/master/GNU-AGPL-3.0.txt","licenseType":"GNU AGPL v3","__typename":"CustomSoftware"}],"summary":"A lightweight and efficient platform that's ideal for building fast, scalable network applications in Javascript","description":"\u003cp\u003eA lightweight platform ideal for building fast, scalable network applications in Javascript. Similar in design to Ruby\u0026#39;s Event Machine or Python\u0026#39;s Twisted, and built on Chrome\u0026#39;s JavaScript runtime, NodeJS is ideal for data-intensive apps that run across distributed devices.\u003c/p\u003e","gettingStarted":"\u003cp\u003eAfter you created a Droplet, you can navigate to its public IPv4 address to see the sample application live.\u003c/p\u003e\n\u003cp\u003eYou will then be prompted to enter a password. If you created your Droplet with a root user password, enter this in the terminal. If you created your Droplet with an ssh key, enter the passphrase associated with your key.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eUsing MongoDB Database-as-a-Service with your NodeJS 1-Click App\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eIf you selected the MongoDB Database-as-a-Service option when you created your NodeJS 1-Click App, you will have a \u003ccode\u003eDATABASE_URL\u003c/code\u003e environment variable pre-configured within your Droplet. This variable contains the full connection string for your MongoDB database.\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eYour MongoDB database credentials are also persisted on your Droplet at \u003ccode\u003e/root/.digitalocean_dbaas_credentials\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eHere is a sample Node.js app showing a connection to the MongoDB database:\u003cbr\u003e\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"js language-js\"\u003econst {MongoClient} = require('mongodb');\n\nasync function main(){\n /**\n * Connection URI. Update \u0026lt;your-mongo-connection-string\u0026gt; to reflect your cluster. You can find it on the \n * See https://docs.mongodb.com/ecosystem/drivers/node/ for more details\n */\n\n const uri = '\u0026lt;your-mongo-connection-string\u0026gt;';\n\n const client = new MongoClient(uri);\n\n try {\n // Connect to the MongoDB cluster\n await client.connect();\n\n // Make the appropriate DB calls\n await listDatabases(client);\n\n } catch (e) {\n console.error(e);\n } finally {\n await client.close();\n }\n}\n\nasync function listDatabases(client){\n databasesList = await client.db().admin().listDatabases();\n\n console.log(\"Connected successfully. Databases:\");\n databasesList.databases.forEach(db =\u0026gt; console.log(` - ${db.name}`));\n};\n\nmain().catch(console.error);\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eTo learn how to make modifications or get your code onto your Droplet, here are the steps. You can also follow the sample application for the instructions.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 1: Access to your Droplet\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eOpen a terminal on your computer to access your Droplet as the root user using the following command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003essh root@your_droplet_public_ipv4\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eStep 2: Make modifications to the sample application\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eModify this script at /var/www/html/hello.js. You can then see the results live by using pm2, a process manager that schedules your code to run at boot time. The application runs as the nodejs user, so changes to pm2 need to be run as the nodejs user.\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003esudo -u nodejs pm2 restart hello\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eStep 3: Get your code onto the Droplet\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eClone your NodeJS code onto the droplet, anywhere you like. Note: If you're not using source code control, you can directly upload the files to your droplet using SFTP.\u003c/p\u003e\n\u003cp\u003ecd into the directory where your NodeJS code lives, and install any dependencies. (For example, if you have a package.json file, run npm install.)\u003c/p\u003e\n\u003cp\u003eLaunch your app\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003esudo -u nodejs pm2 start \u0026lt;your-file\u0026gt;\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eMap the port your app run on to an HTTP URL\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003enano /etc/nginx/sites-available/default\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eEdit the existing entry that exposes the \"hello\" app at port 3000 to the world so that it points to your app's port instead.\u003c/p\u003e\n\u003cp\u003eEnable your new nginx config.\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003esudo systemctl restart nginx\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eCall to schedule your code to run at launch.\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003esudo -u nodejs pm2 save\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eRepeat these steps for any other NodeJS apps that need to run concurrently -- schedule them to run at boot time on whatever internal port you like using PM2, then map that port to an HTTP/HTTPS URL in the nginx config. Build out the URL directory structure you need by mapping applications to URL paths; that's the reverse proxy method in a nutshell!\u003c/p\u003e\n\u003cp\u003eNow you can delete the sample app we installed on your Droplet. Stop running the initial script (that you're viewing now)\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003esudo -u nodejs pm2 delete hello\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eStop it from running on Droplet boot.\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003esudo -u nodejs pm2 save\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eStep 4: Get production-ready\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThere's a lot you'll want to do to make sure you're production-ready. Here are the popular things that people will do.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNon-root user:\u003c/strong\u003e Set up a non-root user for day-to-day use\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFirewall:\u003c/strong\u003e Review your firewall settings by calling sudo ufw status, and make any changes you need. By default, only SSH/SFTP (port 22), HTTP (port 80), and HTTPS (port 443) are open. You can also disable this firewall by calling sudo ufw disable and use a DigitalOcean cloud firewall instead, if you like (they're free).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDomain:\u003c/strong\u003e Register a custom domain\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eStorage:\u003c/strong\u003e You can mount a volume (up to 16TB) to this server to expand the filesystem, provision a database cluster (that runs MySQL, Redis, or PostgreSQL), or use a Space, which is an S3-compatible bucket for storing objects.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=nodejs-20-04","addonSlug":null,"imageLabel":"nodejs-20-04","imageId":158806998,"externalLabel":null,"additionalLinks":[{"name":"DigitalOcean Community Tutorials","url":"https://www.digitalocean.com/community/tags/node-js?type=tutorials","description":"Resources for learning and mastering NodeJS","__typename":"AdditionalLink"},{"name":"Source Code","url":"https://github.com/digitalocean/droplet-1-clicks/tree/master/nodejs-20-04","description":"Packer scripts we used to build this app","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_2":{"name":"LAMP","appId":"5ba19754c472e4189b34e049","developerId":"1","safeName":["lamp"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/lamp-20-04.svg","version":"Latest","osVersion":"Ubuntu 22.04","tags":["Frameworks"],"support":{"url":"https://www.digitalocean.com/docs/","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Apache","version":"2.4.52","website":"","releaseNotes":"https://packages.ubuntu.com/focal/apache2","licenseLink":"https://www.apache.org/licenses/","licenseType":"Apache 2","__typename":"CustomSoftware"},{"name":"MySQL server","version":"8.0.34","website":"","releaseNotes":"https://packages.ubuntu.com/focal/mysql-server","licenseLink":"https://www.mysql.com/about/legal/licensing/oem/#5","licenseType":"GPL 2 with modifications","__typename":"CustomSoftware"},{"name":"PHP","version":"8.2.10","website":"","releaseNotes":"https://packages.ubuntu.com/focal/php","licenseLink":"http://php.net/license/index.php","licenseType":"PHP v3.01","__typename":"CustomSoftware"},{"name":"Fail2ban","version":"0.11.1","website":"","releaseNotes":"https://packages.ubuntu.com/focal/fail2ban","licenseLink":"https://www.mysql.com/about/legal/licensing/oem/#5","licenseType":"GPL 2 with modifications","__typename":"CustomSoftware"},{"name":"Postfix","version":"3.4.10","website":"","releaseNotes":"https://packages.ubuntu.com/focal/postfix","licenseLink":"http://www.postfix.org/IBM-Public-License-1.0.txt","licenseType":"IBM Public","__typename":"CustomSoftware"},{"name":"Certbot","version":"0.39.0","website":"","releaseNotes":"https://packages.ubuntu.com/focal/python3-certbot-apache","licenseLink":"https://github.com/certbot/certbot/blob/master/LICENSE.txt","licenseType":"Apache 2","__typename":"CustomSoftware"}],"summary":"In less than a minute, spin up a cloud server with Apache, MySQL, and PHP installed.","description":"\u003cp\u003eIn less than a minute, spin up a cloud server with Apache, MySQL, and PHP installed.\u003c/p\u003e","gettingStarted":"\u003cp\u003eIn addition to the package installation, the 1-Click also:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnables the UFW firewall to allow only SSH (port \u003ccode\u003e22\u003c/code\u003e, rate limited), HTTP (port \u003ccode\u003e80\u003c/code\u003e), and HTTPS (port \u003ccode\u003e443\u003c/code\u003e) access.\u003c/li\u003e\n\u003cli\u003eSets the MySQL root password and runs \u003ccode\u003emysql_secure_installation\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eSets up the \u003ccode\u003edebian-sys-maint\u003c/code\u003e user in MySQL so the system’s init scripts for MySQL will work without requiring the MySQL \u003ccode\u003eroot\u003c/code\u003e user password.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAfter you create a LAMP One-Click Droplet:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eYou can view the LAMP instance immediately by visiting the Droplet’s IP address in your browser.\u003c/li\u003e\n\u003cli\u003eYou can log into the Droplet as root using either the password you set when you created the Droplet or with an SSH key, if you added one during creation.\u003c/li\u003e\n\u003cli\u003eThe MySQL root password is in \u003ccode\u003e/root/.digitalocean_password\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe web root is \u003ccode\u003e/var/www/html\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eYou can get information about the PHP installation by logging into the Droplet and running \u003ccode\u003ephp -i\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIn addition, there are a few customized setup steps that we recommend you take.\u003c/p\u003e\n\u003cp\u003eCreating an Apache virtual hosts file for each site maintains the default configuration as the fallback, as intended, and makes it easier to manage changes when hosting multiple sites.\u003c/p\u003e\n\u003cp\u003eTo do so, you’ll need to create two things for each domain: a new directory in \u003ccode\u003e/var/www\u003c/code\u003e for that domain’s content, and a new virtual host file in \u003ccode\u003e/etc/apache2/sites-available\u003c/code\u003e for that domain’s configuration. For a detailed walkthrough, you can follow \u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-16-04\"\u003eHow to Set Up Apache Virtual Hosts\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eSetting up an SSL certificate enables HTTPS on the web server, which secures the traffic between the server and the clients connecting to it. Certbot is a free and automated way to set up SSL certificates on a server. It’s included as part of the LAMP One-Click to make securing the Droplet easier.\u003c/p\u003e\n\u003cp\u003eTo use Certbot, you’ll need a registered domain name and two DNS records:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAn A record from a domain (e.g., \u003ccode\u003eexample.com\u003c/code\u003e) to the server’s IP address\u003c/li\u003e\n\u003cli\u003eAn A record from a domain prefaced with \u003ccode\u003ewww\u003c/code\u003e (e.g., \u003ccode\u003ewww.example.com\u003c/code\u003e) to the server’s IP address\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAdditionally, if you’re using a virtual hosts file, you’ll need to make sure the server name directive in the VirtualHost block (e.g., \u003ccode\u003eServerName example.com\u003c/code\u003e) is correctly set to the domain.\u003c/p\u003e\n\u003cp\u003eOnce the DNS records and, optionally, the virtual hosts files are set up, you can generate the SSL certificate. Make sure to substitute the domain in the command.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ecertbot --apache -d example.com -d www.example.com\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eHTTPS traffic on port \u003ccode\u003e443\u003c/code\u003e is already allowed through the firewall. After you set up HTTPS, you can optionally deny HTTP traffic on port \u003ccode\u003e80\u003c/code\u003e:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eufw delete allow 80/tcp\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eFor a more detailed walkthrough, you can follow \u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-18-04\"\u003eHow to Secure Apache with Let’s Encrypt\u003c/a\u003e or view \u003ca href=\"https://certbot.eff.org/docs/using.html\"\u003eCertbot’s official documentation\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eYou can serve files from the web server by adding them to the web root (\u003ccode\u003e/var/www/html\u003c/code\u003e) using \u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-use-sftp-to-securely-transfer-files-with-a-remote-server\"\u003eSFTP\u003c/a\u003e or other tools.\u003c/p\u003e\n\u003cp\u003eA newly-created LAMP Droplet includes an \u003ccode\u003eindex.html\u003c/code\u003e web page. You can change this by uploading a custom \u003ccode\u003eindex.html\u003c/code\u003e file or remove it.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=lamp-20-04","addonSlug":null,"imageLabel":"lamp-20-04","imageId":140021096,"externalLabel":null,"additionalLinks":[{"name":"Source Code","url":"https://github.com/digitalocean/droplet-1-clicks/tree/master/lamp-20-04?utm_source=digitalocean_marketplace_app_listing_page","description":"Packer scripts that were used to build this 1-Click App","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_3":{"name":"LEMP","appId":"5ba19755c472e4189b34e04e","developerId":"1","safeName":["lemp"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/lemp-20-04.svg","version":"latest","osVersion":"Ubuntu 22.04","tags":["Frameworks"],"support":{"url":"https://www.digitalocean.com/community/tags/lemp","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Nginx","version":"1.18","website":"","releaseNotes":"https://packages.ubuntu.com/focal/nginx","licenseLink":"http://nginx.org/LICENSE","licenseType":"Custom","__typename":"CustomSoftware"},{"name":"MySQL server","version":"8.0.32","website":"","releaseNotes":"https://packages.ubuntu.com/focal/mysql-server","licenseLink":"https://www.mysql.com/about/legal/licensing/oem/#5","licenseType":"GPL 2 with modifications","__typename":"CustomSoftware"},{"name":"PHP","version":"8.0.27","website":"","releaseNotes":"https://packages.ubuntu.com/focal/php","licenseLink":"http://php.net/license/index.php","licenseType":"PHP v3.01","__typename":"CustomSoftware"},{"name":"Fail2ban","version":"0.11.2","website":"","releaseNotes":"https://packages.ubuntu.com/focal/fail2ban","licenseLink":"https://www.fail2ban.org/wiki/index.php/Fail2Ban#License","licenseType":"GPL 2","__typename":"CustomSoftware"},{"name":"Postfix","version":"3.4.10","website":"","releaseNotes":"https://packages.ubuntu.com/focal/postfix","licenseLink":"http://www.postfix.org/IBM-Public-License-1.0.txt","licenseType":"IBM Public","__typename":"CustomSoftware"},{"name":"Certbot","version":"1.21.0","website":"","releaseNotes":"https://packages.ubuntu.com/focal/certbot","licenseLink":"https://github.com/certbot/certbot/blob/master/LICENSE.txt","licenseType":"Apache 2","__typename":"CustomSoftware"}],"summary":"Get NGINX, MySQL, and PHP-FPM installed on your Droplet in less than a minute.","description":"\u003cp\u003eThe LEMP stack consists of open-source software to get web servers up and running. Available as a one-click install, get NGINX, MySQL, and PHP-FPM installed on your Droplet in less than a minute.\u003c/p\u003e","gettingStarted":"\u003cp\u003eAfter your droplet is created, you can access your LEMP stack by typing the droplet’s IP address in your browser:\u003cbr\u003e\n\u003cimg src=\"https://i.imgur.com/G0ze0j5.png\" alt=\"LEMP Welcome Screen\"\u003e\u003cbr\u003e\n\u003cstrong\u003eNote\u003c/strong\u003e: If you see the \u003cem\u003eSite can’t be reached\u003c/em\u003e error, give it 2-3 minutes and reload the page.\u003c/p\u003e\n\u003ch1 id=\"configuring-nginx\"\u003eConfiguring Nginx\u003c/h1\u003e\n\u003cp\u003eAfter you have created your LEMP droplet, it is highly recommended you configure an Nginx server block file for each site you plan to host. Doing so will make the default configuration the fallback, as intended, and will make it easier to manage changes when hosting multiple sites.\u003c/p\u003e\n\u003cp\u003eTo do so, you’ll need to create two things for each domain: a new directory in /var/www for that domain’s content, and a new server block file in /etc/nginx/sites-available for that domain’s configuration. For a detailed walkthrough, you can follow \u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu-16-04\"\u003eHow to Set Up Nginx Server Blocks\u003c/a\u003e.\u003c/p\u003e\n\u003ch1 id=\"adding-a-domain-name\"\u003eAdding a domain name\u003c/h1\u003e\n\u003cp\u003eA domain name allows others to access your website with an encrypted connection. If you intend to host a website on your LEMP Droplet 1-Click.\u003c/p\u003e\n\u003cp\u003eLEMP Droplet 1-Click comes with certbot installed, making it easier to enable HTTPS on your 1-Click.\u003c/p\u003e\n\u003cp\u003eFirst, make sure that your domain is pointing to the new droplet IP. If your DNS is managed by DigitalOcean, it should look like this: \u003cbr\u003e\n\u003cimg src=\"https://i.imgur.com/ucpzyg2.png\" alt=\"LEMP DNS Setup\"\u003e\u003c/p\u003e\n\u003cp\u003eThe DNS Host may be the same company you registered the domain with or another entity you designate. To connect your DNS hosting to DigitalOcean, check out \u003ca href=\"https://docs.digitalocean.com/tutorials/dns-registrars/\"\u003ethis guide\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eOnce your A record is set up, you should configure nginx to properly host your new domain. Detailed instructions can be found in \u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu-16-04\"\u003ethis article\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eAfter you have configured the domain and nginx, you can run certbot to acquire HTTPS certificates for your droplet:\u003cbr\u003e\n\u003cimg src=\"https://i.imgur.com/hecISM5.png\" alt=\"LEMP Certbot example\"\u003e\u003cbr\u003e\nAfter you answer questions from certbot, your HTTPS setup is finished.\u003c/p\u003e\n\u003cp\u003eUse your domain in the web browser to access your LEMP Droplet.\u003c/p\u003e\n\u003cp\u003eYou can serve files from the web server by adding them to the web root (/var/www/html) using \u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-use-sftp-to-securely-transfer-files-with-a-remote-server\"\u003eSFTP\u003c/a\u003e or other tools.\u003cbr\u003e\nA newly-created LEMP Droplet includes an index.html web page. You can change this by uploading a custom index.html file or removing it.\u003c/p\u003e\n\u003ch2 id=\"droplet-summary\"\u003eDroplet Summary\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUFW firewall allows only SSH (port 22, rate limited), HTTP (port 80), and HTTPS (port 443) access.\u003c/li\u003e\n\u003cli\u003eMySQL root password is set and mysql_secure_installation is configured.\u003c/li\u003e\n\u003cli\u003eA debian-sys-maint user in MySQL is set so the system’s init scripts for MySQL will work without requiring the MySQL root user password.\u003c/li\u003e\n\u003cli\u003eThe MySQL root password is in /root/.digitalocean_password.\u003c/li\u003e\n\u003cli\u003eThe web root is /var/www/html.\u003c/li\u003e\n\u003cli\u003eYou can get information about the PHP installation by logging into the Droplet and running php -i.\u003c/li\u003e\n\u003c/ul\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=lemp-20-04","addonSlug":null,"imageLabel":"lemp-20-04","imageId":158807816,"externalLabel":null,"additionalLinks":[{"name":"Source Code","url":"https://github.com/digitalocean/droplet-1-clicks/tree/master/lemp-20-04?utm_source=digitalocean_marketplace_app_listing_page","description":"Packer scripts that were used to build this 1-Click App","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_4":{"name":"Django","appId":"5ba19751c472e4189b34e03e","developerId":"1","safeName":["django"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/django-logo.svg","version":"5.0","osVersion":"Ubuntu 22.04","tags":["Frameworks"],"support":{"url":"https://www.djangoproject.com/community/","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Django","version":"5.0","website":"","releaseNotes":"https://pypi.org/project/Django/","licenseLink":"https://github.com/django/django/blob/master/LICENSE","licenseType":"Custom","__typename":"CustomSoftware"},{"name":"Nginx","version":"1.18.0","website":"","releaseNotes":"https://packages.ubuntu.com/focal/nginx","licenseLink":"http://nginx.org/LICENSE","licenseType":"Custom","__typename":"CustomSoftware"},{"name":"Certbot","version":"0.40.0","website":"","releaseNotes":"https://packages.ubuntu.com/focal/certbot","licenseLink":"https://github.com/certbot/certbot/blob/master/LICENSE.txt","licenseType":"Apache 2","__typename":"CustomSoftware"},{"name":"Gunicorn","version":"20.0.4","website":"","releaseNotes":"https://packages.ubuntu.com/focal/gunicorn","licenseLink":"https://github.com/benoitc/gunicorn/blob/master/LICENSE","licenseType":"MIT","__typename":"CustomSoftware"},{"name":"Postgres","version":"12","website":"","releaseNotes":"https://packages.ubuntu.com/focal/postgresql","licenseLink":"https://opensource.org/licenses/postgresql","licenseType":"Postgres SQL","__typename":"CustomSoftware"},{"name":"Postfix","version":"3.4.10","website":"","releaseNotes":"https://packages.ubuntu.com/focal/postfix","licenseLink":"http://www.postfix.org/IBM-Public-License-1.0.txt","licenseType":"IBM Public","__typename":"CustomSoftware"}],"summary":"A high-level Python Web framework","description":"\u003cp\u003eDjango is a high-level Python web framework that encourages rapid development and clean, pragmatic design. Built by experienced developers, it takes care of much of the hassle of Web development, so you can focus on writing your app without having to reinvent the wheel. It’s free and open source.\u003c/p\u003e\n\u003cp\u003eAre you looking for a production-ready deployment of Django? Check out the \u003ca href=\"https://marketplace.digitalocean.com/apps/django-blueprint\" rel=\"noopener\" target=\"_blank\"\u003eDjango Blueprint\u003c/a\u003e!\u003c/p\u003e","gettingStarted":"\u003cp\u003eAfter you created a Droplet, you can navigate to its public IPv4 address to see the sample application live.\u003c/p\u003e\n\u003cp\u003eTo learn how to make modifications or get your code onto your Droplet, here are the steps. You can also follow the sample application for the instructions.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 1: Access to your Droplet\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eOpen a terminal on your computer to access your Droplet as the root user using the following command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003essh root@your_droplet_public_ipv4\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou will then be prompted to enter a password. If you created your Droplet with a root user password, enter this in the terminal. If you created your Droplet with an ssh key, enter the passphrase associated with your key.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 2: Get your code on here\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eNote the login message, it has important details for connecting to your Postgres database, among other things!\u003c/p\u003e\n\u003cp\u003eClone your Django code onto the droplet, anywhere you like. Note: If you're not using a source control, you can directly upload the files to your droplet using SFTP.\u003c/p\u003e\n\u003cp\u003eYou can try to reuse this project, located in \u003ccode\u003e/home/django/django_project\u003c/code\u003e, or start fresh in a new location and edit Gunicorn's configuration to point to it at \u003ccode\u003e/etc/systemd/system/gunicorn.service\u003c/code\u003e. You can also change how nginx is routing traffic by editing \u003ccode\u003e/etc/nginx/sites-enabled/default\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eCd into the directory where your Django code lives, and install any dependencies. (For example, if you have a \u003ccode\u003erequirements.txt\u003c/code\u003e file, run \u003ccode\u003epip install -r requirements.txt\u003c/code\u003e.)\u003c/p\u003e\n\u003cp\u003eThat's it! Whenever you make code changes, reload Gunicorn like so:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003ePID=$(systemctl show --value -p MainPID gunicorn.service) \u0026amp;\u0026amp; kill -HUP $PID\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eStep 3: Play in the admin area\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThe standard Django admin area is accessible at \u003ccode\u003e/admin\u003c/code\u003e. The login and password are stored in the \u003ccode\u003eDJANGO_USER*\u003c/code\u003e values you see when you call \u003ccode\u003ecat /root/.digitalocean_passwords\u003c/code\u003e while logged in over SSH.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 4: Get production-ready\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThere's a lot you'll want to do to make sure you're production-ready. Here are the popular things that people will do.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFirewall:\u003c/strong\u003e Review your firewall settings by calling sudo ufw status, and make any changes you need. By default, only SSH/SFTP (port 22), HTTP (port 80), and HTTPS (port 443) are open. You can also disable this firewall by calling sudo ufw disable and use a DigitalOcean cloud firewall instead, if you like (they're free).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDomain:\u003c/strong\u003e Register a custom domain\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eStorage:\u003c/strong\u003e You can mount a volume (up to 16TB) to this server to expand the filesystem, provision a database cluster (that runs MySQL, Redis, or PostgreSQL), or use a Space, which is an S3-compatible bucket for storing objects.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eManaged storage:\u003c/strong\u003e You can use a managed database instead of a local one to secure your data and enable easy backups, connection pools, and metrics.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=django-20-04","addonSlug":null,"imageLabel":"django-20-04","imageId":146041160,"externalLabel":null,"additionalLinks":[{"name":"Source Code","url":"https://github.com/digitalocean/droplet-1-clicks/tree/master/django-20-04","description":"Packer scripts that were used to build this 1-Click App","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"CategoryGroup"},{"nav_icon":{"dimensions":{"width":45,"height":45,"__typename":"PrismicImageDimensions"},"url":"https://images.prismic.io/do-marketplace-testing%2F19a4fd39-78dd-4b0a-81e4-c0db173154cd_blockchain.svg?auto=compress,format","__typename":"PrismicStructuredImage"},"category":"Functions","is_new":"false","is_visible_in_nav":"true","nav_description":[{"text":"Ship code faster with serverless functions.","__typename":"PrismicStructuredText"}],"hero_text":[{"text":"Use these apps to deploy your functions, or to run entire serverless applications.","__typename":"PrismicStructuredText"}],"staff_pick_1":null,"staff_pick_2":null,"staff_pick_3":null,"staff_pick_4":null,"__typename":"CategoryGroup"},{"nav_icon":{"dimensions":null,"url":null,"__typename":"PrismicStructuredImage"},"category":"Gaming","is_new":"false","is_visible_in_nav":null,"nav_description":[{"text":"Game servers and tools.","__typename":"PrismicStructuredText"}],"hero_text":[],"staff_pick_1":{"name":"Minecraft: Java Edition Server","appId":"5e8cf223207c0a569f482949","developerId":"63","safeName":["minecraft-java-edition-server"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/sharklabs-minecraftjavaedi-18-04.svg","version":"1.20.1","osVersion":"Ubuntu 22.04","tags":["Gaming"],"support":{"url":"","email":"v-aisac@digitalocean.com","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Minecraft: Java Edition Server","version":"1.20.1","website":"https://www.minecraft.net/en-us/download/server","releaseNotes":"","licenseLink":"https://account.mojang.com/terms","licenseType":"Minecraft End User License Agreement","__typename":"CustomSoftware"}],"summary":"Host your own Minecraft server in a matter of minutes!","description":"\u003cp\u003eMinecraft is one of the most popular online sandbox games ever created. With more than 170 million monthly active players, there is a lot to explore, design, and create in this 3D virtual world.\u003c/p\u003e","gettingStarted":"\u003cp\u003e\u003cimg src=\"https://do-not-delete-droplet-assets.nyc3.digitaloceanspaces.com/3mqRRhH%20-%20Imgur.png\" alt=\"Minecraft\"\u003e\u003c/p\u003e\n\u003cp\u003eIt is recommended to use 4GB RAM and 2 Cores Premium Intel Droplet size for the best experience.\u003c/p\u003e\n\u003cp\u003eNOTE: After Minecraft Droplet was created it will start world generation which can take ~5 minutes depending on the Droplet size. If you are getting \u003ccode\u003eTimed out\u003c/code\u003e errors - make sure to give your server a minute.\u003c/p\u003e\n\u003cp\u003eAfter a few minutes passed after droplet creation, you can access your server and play with your friends:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cp\u003eFirst copy the public ipv4 address from your newly created droplet from the DigitalOcean control panel (\u003ca href=\"https://cloud.digitalocean.com/projects\"\u003ehttps://cloud.digitalocean.com/projects\u003c/a\u003e)\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eThen start the Minecraft application, click \"Play\" and then \"Multiplayer\"\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eThen click \"Add Server\"\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eThen paste the IP address of the Droplet into the \u003cstrong\u003eServer Address\u003c/strong\u003e field and then \"Done\" to save\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eFinally, click \"Join Server\" and enjoy!\u003c/p\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"how-to-promote-a-user-to-an-admin-minecraft-operator\"\u003eHow to promote a user to an admin (Minecraft operator)\u003c/h3\u003e\n\u003cp\u003eThere are many reasons to have admin privileges, especially if you are sharing your Minecraft server publicly, next steps will show how to promote a player to an admin:\u003c/p\u003e\n\u003cp\u003eLogin into your droplet via cloud console or SSH:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e$ ssh \u0026lt;your Minecraft Droplet IP\u0026gt;\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSwitch to a \u003ccode\u003eminecraft\u003c/code\u003e user:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e$ su - minecraft -s /bin/bash\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eNow, use \u003ccode\u003escreen\u003c/code\u003e to run a command on a Minecraft server terminal:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e$ screen -p 0 -S minecraft -X eval 'stuff \"op \u0026lt;user nickname\u0026gt;\"\\\\015'\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eMake sure to change \u003ccode\u003e\u0026amp;amp;amp;amp;lt;user nickname\u0026amp;amp;amp;amp;gt;\u003c/code\u003e to a username that needs to become an admin.\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eDone! Now \u003ccode\u003e\u0026amp;amp;amp;amp;lt;user nickname\u003c/code\u003e can use admin commands on the server itself.\u003c/p\u003e\n\u003ch3 id=\"about-minecraft-droplet-1-click\"\u003eAbout Minecraft Droplet 1-Click\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMinecraft Server version is 1.20.1.\u003c/li\u003e\n\u003cli\u003eMinecraft Server is installed under \u003ccode\u003e/opt/minecraft\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eMinecraft Server runs on a systemd service. Read MOTD (message on the SSH) to find the name of the service.\u003c/li\u003e\n\u003cli\u003eMinecraft Server uses 75% of Droplet's RAM.\u003c/li\u003e\n\u003cli\u003eOn shutdown, Minecraft service will save the game world.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMinecraft is a trademark of Mojang Synergies AB and Microsoft Corporation, and we refer to the name for referential purposes only and not to indicate any sponsorship, endorsement or affiliation between these companies and DigitalOcean. We offer this one-click app for your convenience, but you are solely responsible for creating, using, and maintaining your server in accordance with all applicable terms and conditions. More information about setting up your server and applicable terms can be found here: \u003ca href=\"https://www.minecraft.net/en-us/download/server\"\u003ehttps://www.minecraft.net/en-us/download/server\u003c/a\u003e.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=sharklabs-minecraftjavaedi-18-04","addonSlug":null,"imageLabel":"sharklabs-minecraftjavaedi-18-04","imageId":134995392,"externalLabel":null,"additionalLinks":[{"name":"Minecraft Official Site","url":"https://www.minecraft.net/","description":"Minecraft Official Homepage","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_2":{"name":"AresMUSH","appId":"28ee999d3af5015d901f0732","developerId":"3592","safeName":["aresmush"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/wordsmythcreatio-aresmush.png","version":"1.0","osVersion":"Ubuntu 20.04","tags":["Gaming"],"support":{"url":"https://forum.aresmush.com","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"AresMUSH","version":"1.0","website":"https://aresmush.com","releaseNotes":"","licenseLink":"https://aresmush.com/license.html","licenseType":"Custom CC","__typename":"CustomSoftware"},{"name":"Redis DB Server","version":"6.0.6","website":"https://redis.io/","releaseNotes":"","licenseLink":"","licenseType":"BSD","__typename":"CustomSoftware"},{"name":"Nginx Web Server","version":"1.18.0","website":"https://nginx.org/","releaseNotes":"","licenseLink":"https://nginx.org/LICENSE","licenseType":"Custom","__typename":"CustomSoftware"},{"name":"Ruby","version":"2.6.3","website":"https://www.ruby-lang.org/","releaseNotes":"","licenseLink":"","licenseType":"BSDL","__typename":"CustomSoftware"},{"name":"Git","version":"2.25.1","website":"https://git-scm.com/","releaseNotes":"","licenseLink":"","licenseType":"GPL","__typename":"CustomSoftware"},{"name":"NPM","version":"6.14.4","website":"https://www.npmjs.com/","releaseNotes":"","licenseLink":"https://docs.npmjs.com/policies/terms","licenseType":"Artistic","__typename":"CustomSoftware"}],"summary":"AresMUSH is a text-based, online role-playing game server platform.","description":"\u003cp\u003eVirtual reality and 3D games may be the next big thing, but for almost thirty years players have been creating their own online worlds using nothing but words and their imaginations on MUSHes. A MUSH is a text-based online multi-player game that blends creative writing, improv acting, and role-playing into a unique interactive storytelling experience.\u003c/p\u003e\n\u003cp\u003eAresMUSH is a next-gen server platform that brings modern features to MUSH games: a fully-featured web portal and wiki, automated scene logging, web-based character creation, and more. With AresMUSH, you can launch your own MUSH game with no coding experience.\u003c/p\u003e\n\u003cp\u003eFor more information, visit the \u003ca href=\"http://www.aresmush.com\" rel=\"noopener\" target=\"_blank\"\u003eAresMUSH website\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://aresmush.com/images/demo2.png\" alt=\"AresMUSH Play Screen\"/\u003e\u003c/p\u003e","gettingStarted":"\u003cp\u003eThe AresMUSH 1-click image comes with all the software you need to run your own \u003ca href=\"https://aresmush.com\"\u003eAresMUSH\u003c/a\u003e server. There are just a few steps you must do to finalize the installation and configure your game.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFor a detailed walk-through of how to use this image, see the \u003ca href=\"https://aresmush.com/tutorials/install/oneclick.html\"\u003eAresMUSH OneClick Installation Instructions\u003c/a\u003e.\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n \u003cp\u003eNote: If using a custom domain for your game, make sure the DNS is set up \u003cstrong\u003ebefore\u003c/strong\u003e attempting to finalize the installation.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eAfter creating your own droplet using the 1-click image:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eConnect to your new droplet \u003ca href=\"https://www.digitalocean.com/docs/droplets/how-to/connect-with-ssh/\"\u003eusing SSH\u003c/a\u003e as \u003cstrong\u003eroot\u003c/strong\u003e: \u003ccode\u003essh root@your_droplet_public_ipv4\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRun the following commands, and follow the prompts to enter your game information:\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre\u003e\u003ccode\u003ecd /etc/aresmush\n./complete_setup.sh\u003c/code\u003e\u003c/pre\u003e\n\u003cblockquote\u003e\n \u003cp\u003eThe setup script will create an \u003cstrong\u003eares\u003c/strong\u003e user. Save this password in a safe place. You must use the ares user for all of your game administration tasks.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003eOnce the installation has finished, it is strongly recommended that you secure your web portal by installing a security certificate. Log in to your droplet as the \u003cstrong\u003eares\u003c/strong\u003e user and run the following commands to set up \u003ca href=\"https://certbot.eff.org/\"\u003eCertbot\u003c/a\u003e:\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre\u003e\u003ccode\u003ecd aresmush\nbin/certs\u003c/code\u003e\u003c/pre\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003eReboot the server.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eYour game will now be running at \u003ccode\u003ehttps://yourcustomdomain.com\u003c/code\u003e or \u003ccode\u003ehttp://your_droplet_public_ipv4\u003c/code\u003e. You can also connect through a MUSH client using the port you configured during setup. See \u003ca href=\"https://aresmush.com/tutorials/install/next-steps.html\"\u003eNext Steps\u003c/a\u003e for getting started with your game.\u003c/p\u003e\n\u003cp\u003eIf you run into any trouble during the installation process, ask for help on the \u003ca href=\"https://forum.aresmush.com\"\u003eAresMUSH Forum\u003c/a\u003e.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=wordsmythcreatio-aresmush","addonSlug":null,"imageLabel":"wordsmythcreatio-aresmush","imageId":114740552,"externalLabel":null,"additionalLinks":[{"name":"AresMUSH 1-Click Image Install Tutorial","url":"https://aresmush.com/tutorials/install/oneclick.html","description":"Detailed walkthrough for using this image.","__typename":"AdditionalLink"},{"name":"AresMUSH","url":"https://aresmush.com","description":"General information about AresMUSH.","__typename":"AdditionalLink"},{"name":"Source Code","url":"https://github.com/AresMUSH/aresmush-1click","description":"Packer scripts used to create this image.","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_3":{"name":"LinuxGSM","appId":"b52ecf6c4747ed4010694435","developerId":"1","safeName":["linuxgsm"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/linuxgsm.png","version":"1.0","osVersion":"Ubuntu 22.04","tags":["Gaming"],"support":{"url":"https://www.digitalocean.com/docs/","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"LinuxGSM","version":"latest","website":"","releaseNotes":"","licenseLink":"https://github.com/GameServerManagers/LinuxGSM/blob/master/LICENSE.md","licenseType":"MIT","__typename":"CustomSoftware"}],"summary":"Your ultimate assistant in managing game servers on Linux. Monitoring and server state control at your disposal!","description":"\u003cp\u003eLinuxGSM (Linux Game Server Managers) is a comprehensive collection of scripts and tools designed to simplify the management of game servers on the Linux operating system. Whether you\u0026#39;re a seasoned server administrator or a gaming enthusiast setting up your first server, LinuxGSM offers an easy-to-use and automated solution for installing, configuring, and maintaining various game servers.\u003c/p\u003e\n\u003cp\u003eKey Features of LinuxGSM:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cp\u003eExtensive Game Support: LinuxGSM supports a wide variety of popular games, enabling effortless management of game servers across different genres and platforms.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eSimple Installation: Setting up game servers becomes a breeze with LinuxGSM, providing a quick and straightforward installation process even for beginners.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eAutomatic Updates: LinuxGSM includes an automated update mechanism, ensuring that your game servers stay up-to-date with the latest software versions for enhanced security and performance.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eMonitoring and Control: Keep a close eye on your server\u0026#39;s status and performance with built-in monitoring tools, allowing you to manage and maintain server operations efficiently.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eCustomization and Flexibility: LinuxGSM is highly customizable and can be easily adapted to support new games or specific server configurations.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eThriving Community: Benefit from an active and supportive community of developers and users, providing continuous support, regular updates, and valuable insights.\u003cbr/\u003e\u003c/p\u003e\n\u003cp\u003eWith LinuxGSM, you can effortlessly create, manage, and maintain game servers on your Linux machine, unlocking the joy of multiplayer gaming experiences with friends and communities. Streamline your server management process and embark on endless gaming adventures with LinuxGSM by your side.\u003c/p\u003e\u003c/li\u003e\n\u003c/ol\u003e","gettingStarted":"\u003cp\u003eThe LinuxGSM 1-click image comes with almost all the software you need to run your own game server. There are just a few steps you must do to finalize the installation and configure your game.\u003c/p\u003e\n\u003cp\u003eAfter creating your own droplet using the 1-click image:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eConnect to your new droplet using SSH as root:\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre\u003e\u003ccode\u003e$ ssh root@your_droplet_public_ipv4.\u003c/code\u003e\u003c/pre\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003eTo allow LinuxGSM to install all needed dependencies, the LinuxGSM user have sudo access. Before you start using LinuxGSM, you need to set up a password for the user. Type the following command to set up the password for the \"linuxgsm\" user:\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre\u003e\u003ccode\u003e$ sudo passwd linuxgsm\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou will be prompted to enter the password twice for confirmation. Once you do that, the password will be set for the \"linuxgsm\" user.\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003eLogin as linuxgsm user:\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre\u003e\u003ccode\u003e$ su - linuxgsm\u003c/code\u003e\u003c/pre\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003eRun the following command to select the game you want to create a server for.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre\u003e\u003ccode\u003e$ ./linuxgsm.sh install\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eand follow the install instructions.\u003c/p\u003e\n\u003cp\u003eTo enable the game server to function properly, you need to allow the necessary ports through the firewall. After the game server is installed, you can find a list of the required ports by using the following command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e$ ./servername details | e.g ./csgoserver details\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eTo allow the required ports, you can use the ufw (Uncomplicated Firewall) command. For instance, if the game server requires port 25005 to be open for TCP traffic, you can allow it with the following command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e$ sudo ufw allow 25005/tcp\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eCongratulations! You have successfully installed your game server using LinuxGSM on the Linux operating system. Now, to configure and manage the server, there are several important steps to take:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eServer Configuration: After the server installation, the first step is to configure it for your specific game. In the LinuxGSM documentation, you will find information on how to properly set up various server parameters, such as game settings, admin privileges, game modes, and more. For detailed information on configuring your server, refer to the LinuxGSM documentation: \u003ca href=\"https://docs.linuxgsm.com/configuration\"\u003ehttps://docs.linuxgsm.com/configuration\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eServer Management: LinuxGSM provides a plethora of convenient commands to manage your game server. This includes starting, stopping, restarting, checking the server status, and other useful functions. Familiarize yourself with the section of the LinuxGSM documentation dedicated to commands, so you can efficiently manage your server: \u003ca href=\"https://docs.linuxgsm.com/commands\"\u003ehttps://docs.linuxgsm.com/commands\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFeatures: LinuxGSM boasts an array of impressive features that make it stand out as a game server management solution. With extensive game support, automated installation and updates, monitoring capabilities, and customizable configurations, LinuxGSM empowers server administrators and gamers alike. For a detailed overview of LinuxGSM's features, explore the dedicated section in the documentation: \u003ca href=\"https://docs.linuxgsm.com/features\"\u003ehttps://docs.linuxgsm.com/features\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAlerts: Stay informed about your server's health and performance with LinuxGSM's alerting system. Receive real-time notifications about critical events, such as server crashes or high resource utilization, allowing you to promptly address any issues and ensure a smooth gaming experience for your players. To learn more about setting up alerts, refer to the LinuxGSM documentation: \u003ca href=\"https://docs.linuxgsm.com/alerts\"\u003ehttps://docs.linuxgsm.com/alerts\u003c/a\u003e.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eFor more comprehensive information and support, please visit the LinuxGSM website for the full documentation: \u003ca href=\"https://docs.linuxgsm.com\"\u003ehttps://docs.linuxgsm.com\u003c/a\u003e, and join the vibrant LinuxGSM community on the official forum: \u003ca href=\"https://github.com/GameServerManagers/LinuxGSM/discussions\"\u003ehttps://github.com/GameServerManagers/LinuxGSM/discussions\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWith LinuxGSM documentation at your fingertips and access to the helpful community, you possess the knowledge and tools necessary to effectively manage your game server. Don't hesitate to refer to the documentation and seek assistance on the forum while performing various tasks on your LinuxGSM server. Good luck in your gaming experience!\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=linuxgsm","addonSlug":null,"imageLabel":"linuxgsm","imageId":138079920,"externalLabel":null,"additionalLinks":[{"name":"Source Code","url":"https://github.com/digitalocean/droplet-1-clicks/tree/master/linuxgsm-22-04","description":"Packer scripts that were used to build this 1-Click App","__typename":"AdditionalLink"},{"name":"LinuxGSM","url":"https://linuxgsm.com","description":"To learn more about the project, visit the main website","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_4":null,"__typename":"CategoryGroup"},{"nav_icon":{"dimensions":null,"url":null,"__typename":"PrismicStructuredImage"},"category":"Logging","is_new":"false","is_visible_in_nav":null,"nav_description":[{"text":"Logging services and tools.","__typename":"PrismicStructuredText"}],"hero_text":[{"text":"Logging services and tools.","__typename":"PrismicStructuredText"}],"staff_pick_1":{"name":"Papertrail","appId":"117","developerId":"40","safeName":["papertrail"],"created":1645191327000,"type":"saas","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://mp-saas-service.nyc3.digitaloceanspaces.com/vendor_media/af1e9ec7-200e-42ef-a835-2e1278b1039f.png","version":"","osVersion":"","tags":["Logging","Add-Ons"],"support":{"url":"","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":null,"summary":"Log management solution capable of installing in seconds and providing instant log visibility.","description":"\u003cul\u003e\u003cli\u003eSpeed up troubleshooting with full text search and the ability to view, pause, and search live event data\u003c/li\u003e\u003cli\u003eShare, reuse, and alert on popular searches to catch issues early and reduce mean time to resolution (MTTR)\u003c/li\u003e\u003cli\u003eConsolidate logs from almost every source, including syslog, MySQL, Apache, routers, firewalls, Ruby on Rails, Tomcat, JSON, and more\u003c/li\u003e\u003c/ul\u003e","gettingStarted":"","createApp":"","addonSlug":null,"imageLabel":"","imageId":null,"externalLabel":null,"additionalLinks":null,"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_2":{"name":"Grafana Loki","appId":"5db68268316b031f2a877a63","developerId":"11","safeName":["grafana-loki"],"created":0,"type":"kubernetes","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/loki-logo.svg","version":"2.9.9","osVersion":"","tags":["Logging","Kubernetes"],"support":{"url":"https://github.com/grafana/loki/issues","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Loki","version":"2.1.0","website":"","releaseNotes":"https://github.com/grafana/loki/releases","licenseLink":"https://github.com/grafana/loki/blob/master/LICENSE","licenseType":"Apache 2.0","__typename":"CustomSoftware"},{"name":"Promtail","version":"2.1.0","website":"","releaseNotes":"","licenseLink":"https://github.com/grafana/puppet-promtail/blob/master/LICENSE","licenseType":"Apache 2.0","__typename":"CustomSoftware"}],"summary":"The kubernetes native log-aggregation system that is easy to scale.","description":"\u003cp\u003e\u003ca href=\"https://grafana.com/oss/loki/\" rel=\"noopener\" target=\"_blank\"\u003eLoki\u003c/a\u003e is a horizontally-scalable, highly-available, multi-tenant log aggregation system inspired by \u003ca href=\"https://prometheus.io/\" rel=\"noopener\" target=\"_blank\"\u003ePrometheus\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eCompared to other log aggregation systems, Loki:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIndexes a set of labels for each log stream, instead of indexing the context of logs.\u003c/li\u003e\n\u003cli\u003eIndexes and groups log streams using the same labels as Prometheus.\u003c/li\u003e\n\u003cli\u003eAutomatically scrapes and indexes Kubernetes](\u003ca href=\"https://kubernetes.io/\" rel=\"noopener\" target=\"_blank\"\u003ehttps://kubernetes.io/\u003c/a\u003e) metadata, such as pod logs.\u003c/li\u003e\n\u003cli\u003eHas native support in Grafana v6.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eA Loki-based logging stack consists of 3 components:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePromtail is the agent, responsible for gathering logs and sending them to Loki.\u003c/li\u003e\n\u003cli\u003eLoki is the main server, responsible for storing logs and processing queries.\u003c/li\u003e\n\u003cli\u003eGrafana is platform, responsible for querying and displaying the logs.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eNotes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThis stack requires a minimum configuration of two nodes at the $10/month plan (2GB memory / 1 vCPU).\u003c/li\u003e\n\u003cli\u003eThe Loki stack 1-Click App also includes a $1/month block storage for Loki time series database (starting at PVs of 5GB).\u003c/li\u003e\n\u003c/ul\u003e","gettingStarted":"\u003ch3 id=\"getting-started-with-digitalocean-kubernetes\"\u003eGetting Started with DigitalOcean Kubernetes\u003c/h3\u003e\n\u003cp\u003eYou can connect to your DigitalOcean Kubernetes cluster by following our \u003ca href=\"https://www.digitalocean.com/docs/kubernetes/how-to/connect-to-cluster/\"\u003ehow-to guide\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eFor additional instructions on configuring a \u003ca href=\"https://cloud.digitalocean.com/kubernetes/clusters/\"\u003eDigitalOcean Kubernetes\u003c/a\u003e cluster, see the following guides:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/digitalocean/Kubernetes-Starter-Kit-Developers/tree/main/01-setup-DOKS#how-to-set-up-a-digitalocean-managed-kubernetes-cluster-doks\"\u003eHow to Set Up a DigitalOcean Managed Kubernetes Cluster (DOKS)\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/digitalocean/Kubernetes-Starter-Kit-Developers/tree/main/02-setup-DOCR#how-to-set-up-digitalocean-container-registry\"\u003eHow to Set up DigitalOcean Container Registry\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"confirming-that-loki-stack-is-running\"\u003eConfirming that Loki Stack is Running\u003c/h3\u003e\n\u003cp\u003eFirst, verify that the Helm installation was successful by running following command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003ehelm ls -n loki-stack\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eIf the installation was successful, the \u003ccode\u003eSTATUS\u003c/code\u003e column value in the output reads \u003ccode\u003edeployed\u003c/code\u003e:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"text language-text\"\u003eNAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION\nloki loki-stack 1 2022-02-16 14:47:29.497728 +0200 EET deployed loki-stack-2.5.1 v2.1.0\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eNext, verify that the Loki pods are up and running with the following command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ekubectl get pods -n loki-stack\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eIf they're running, all pods listed in the output are in a \u003ccode\u003eREADY\u003c/code\u003e state and the \u003ccode\u003eSTATUS\u003c/code\u003e for each reads \u003ccode\u003eRunning\u003c/code\u003e:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"text language-text\"\u003eNAME READY STATUS RESTARTS AGE\nloki-0 1/1 Running 0 20h\nloki-promtail-kvjxr 1/1 Running 0 20h\nloki-promtail-nc7zg 1/1 Running 0 20h\nloki-promtail-strvq 1/1 Running 0 20h\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"configuring-grafana-with-loki\"\u003eConfiguring Grafana with Loki\u003c/h3\u003e\n\u003cp\u003eFirst, expose the Grafana web interface on your local machine:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eGrafana\u003c/code\u003e isn't installed by default when the \u003ccode\u003eLoki Stack\u003c/code\u003e 1-Click App is installed and needs to be installed. We recommend installing the \u003ca href=\"https://marketplace.digitalocean.com/apps/kubernetes-monitoring-stack\"\u003eKubernetes Monitoring Stack\u003c/a\u003e 1-Click App, which includes \u003ccode\u003eGrafana\u003c/code\u003e and its monitoring components.\u003c/p\u003e\n\u003cp\u003eTo access the Grafana Web Panel, run the following command using the default credentials \u003ccode\u003eadmin/prom-operator\u003c/code\u003e:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ekubectl port-forward svc/kube-prometheus-stack-grafana 3000:80 -n kube-prometheus-stack\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eNavigate to \u003ca href=\"http://localhost:80/\"\u003ehttp://localhost:80/\u003c/a\u003e and login with admin and the password (default credentials: admin/prom-operator). Then, follow the instructions for adding the Loki datasource, using the URL \u003ca href=\"http://loki.loki-stack:3100\"\u003ehttp://loki.loki-stack:3100\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eFor more details about deployment status and functionality, see the \u003ca href=\"https://github.com/digitalocean/Kubernetes-Starter-Kit-Developers/blob/main/05-setup-loki-stack/README.md\"\u003eLoki tutorial\u003c/a\u003e.\u003c/p\u003e\n\u003ch3 id=\"tweaking-helm-values\"\u003eTweaking Helm Values\u003c/h3\u003e\n\u003cp\u003eThe \u003ccode\u003eloki-stack\u003c/code\u003e has custom default Helm values. See the \u003ca href=\"./values.yml\"\u003evalues\u003c/a\u003e file from the main GitHub repository.\u003c/p\u003e\n\u003cp\u003eTo inspect the stack's current values, run the following command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ehelm show values grafana/loki-stack --version 2.5.1\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eTo change these values, open the Helm values file \u003ccode\u003evalues.yml\u003c/code\u003e, change whatever values you want, save and exit the file, and apply the changes by running \u003ccode\u003ehelm upgrade\u003c/code\u003e command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ehelm upgrade loki grafana/loki-stack --version 2.5.1 \\\n --namespace loki-stack \\\n --values values.yml\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"upgrading-the-loki-stack-chart\"\u003eUpgrading the Loki Stack Chart\u003c/h3\u003e\n\u003cp\u003eYYou can check what versions are available to upgrade by navigating to the \u003ca href=\"https://github.com/grafana/loki/releases\"\u003eloki-stack\u003c/a\u003e official releases page from GitHub. Alternatively, you can use \u003ca href=\"https://artifacthub.io/packages/helm/grafana/loki-stack\"\u003eArtifactHUB\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eTo upgrade the stack to a newer version, run the following command, replacing the \u003ccode\u003e\u0026amp;lt; \u0026amp;gt;\u003c/code\u003e placeholders with their corresponding information:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ehelm upgrade loki grafana/loki-stack \\\n --version \u0026lt;KUBE_Loki_STACK_NEW_VERSION\u0026gt; \\\n --namespace loki-stack \\\n --values \u0026lt;YOUR_HELM_VALUES_FILE\u0026gt;\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee \u003ca href=\"https://helm.sh/docs/helm/helm_upgrade/\"\u003ehelm upgrade\u003c/a\u003e for command documentation.\u003c/p\u003e\n\u003ch3 id=\"uninstalling\"\u003eUninstalling\u003c/h3\u003e\n\u003cp\u003eTo uninstall Loki, you need to have Helm 3 installed. Once installed, run the following \u003ccode\u003euninstall\u003c/code\u003e command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003ehelm uninstall loki -n loki-stack\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eAnd then the following \u003ccode\u003edelete\u003c/code\u003e command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"bash language-bash\"\u003ekubectl delete ns loki-stack\u003c/code\u003e\u003c/pre\u003e","createApp":"https://cloud.digitalocean.com/kubernetes/clusters/new?addonslug=loki\u0026nodePools=s-1vcpu-2gb%3A3","addonSlug":"loki","imageLabel":"","imageId":null,"externalLabel":null,"additionalLinks":[{"name":"Documentation","url":"https://grafana.com/docs/","description":"Official documentaion","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_3":{"name":"Loggly","appId":"60491fe23bacef56950205bb","developerId":"3439","safeName":["loggly"],"created":1615405026000,"type":"saas-affiliate","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/loggly-logo.svg","version":"","osVersion":"","tags":["Logging"],"support":{"url":"","email":"support@loggly.com","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":null,"summary":"Scalable full-stack and multi-source log aggregation designed to help you visualize, analyze and correlate your service and application event data.","description":"\u003cp\u003eScalable full-stack and multi-source log aggregation designed to help you visualize, analyze and correlate your service and application event data.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAggregate, structure, and summarize your log data\u003c/li\u003e\n\u003cli\u003eAnalyze and visualize log data with interactive dashboards, advanced log correlation, and anomaly detection\u003c/li\u003e\n\u003cli\u003eMonitor application performance, system behavior, and suspicious activity across the stack\u003c/li\u003e\n\u003c/ul\u003e","gettingStarted":"","createApp":"https://www.loggly.com/signup/?CMP=SYN-OTA-DGTOCN-LG_WW_X_0_PPD_LD_EN_Q121ML_SW-LOG-V1_X_X_X_X_X-X","addonSlug":null,"imageLabel":"","imageId":null,"externalLabel":null,"additionalLinks":null,"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_4":{"name":"Zabbix Proxy 6.4","appId":"f4dd86efea551ba5dfbd14b0","developerId":"43","safeName":["zabbix-proxy-6-4"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/zabbix-zabbixproxy64.svg","version":"6.4.1","osVersion":"Alma Linux 9.1","tags":["Monitoring"],"support":{"url":"https://www.zabbix.com/support","email":"sergey.sorokin@zabbix.com","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Zabbix Proxy","version":"6.4.1","website":"","releaseNotes":"https://www.zabbix.com/rn/rn6.4.1","licenseLink":"https://www.zabbix.com/license","licenseType":"GNU GPLv2","__typename":"CustomSoftware"},{"name":"OpenJDK","version":"1.8.0.362","website":"","releaseNotes":"http://openjdk.java.net/projects/jdk8/","licenseLink":"http://openjdk.java.net/legal/gplv2+ce.html","licenseType":"GNU GPLv2","__typename":"CustomSoftware"}],"summary":"An enterprise-class open source distributed monitoring solution designed to monitor and track performance and availability of network servers, devices, services and other IT resources","description":"\u003cp\u003eZabbix is an enterprise-class open source distributed monitoring solution designed to monitor and track performance and availability of network servers, devices, services and other IT resources. Zabbix is an all-in-one monitoring solution that allows users to collect, store, manage, and analyze information received from IT infrastructure, as well as display on-screen, and alert by e-mail, SMS or through integration with ticketing and messaging apps when thresholds are reached. Zabbix allows administrators to recognize server and device problems within a short period of time and therefore reduces the system downtime and risk of system failure. The monitoring solution is being actively used by SMBs and large enterprises across all industries and almost in every country of the world.\u003c/p\u003e","gettingStarted":"\u003cp\u003eAfter the deployment of the Zabbix One-Click application as a new droplet, please connect to your Zabbix proxy via SSH and configure Zabbix proxy by following these \u003ca href=\"https://www.zabbix.com/documentation/current/manual/distributed_monitoring/proxies#configuration\" title=\"Instructions\"\u003einstructions\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eFurther information can be found at:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://www.zabbix.com/manuals\" title=\"Zabbix Documentation\"\u003eZabbix Documentation\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.zabbix.com/forum\" title=\"Zabbix Forum\"\u003eZabbix Forum\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.zabbix.com/community\" title=\"Zabbix Community Channels\"\u003eZabbix Community Channels\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.zabbix.com/services\" title=\"Zabbix Professional Services\"\u003eInquiring about Zabbix Professional Services\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=zabbix-zabbixproxy64","addonSlug":null,"imageLabel":"zabbix-zabbixproxy64","imageId":131398269,"externalLabel":null,"additionalLinks":[{"name":"Documentation","url":"https://www.zabbix.com/documentation","description":"Read through all the details and specifications of Zabbix","__typename":"AdditionalLink"},{"name":"Attend Zabbix Certified Training","url":"https://www.zabbix.com/training","description":"Learn how to use all powerfeatures of Zabbix in most efficient and professional way in just few days","__typename":"AdditionalLink"},{"name":"Purchase Technical Support services","url":"https://www.zabbix.com/support","description":"Get all the knowledge and experience of Zabbix support and development team available to you when you need it","__typename":"AdditionalLink"},{"name":"Order Turn-Key Solution directly from Zabbix","url":"https://www.zabbix.com/turn_key_solution","description":"Deploy Zabbix quickly and professionally from scratch or migrate from a legacy tool all done by Zabbix team","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"CategoryGroup"},{"nav_icon":{"dimensions":null,"url":null,"__typename":"PrismicStructuredImage"},"category":"Media","is_new":"false","is_visible_in_nav":"true","nav_description":[{"text":"Video and streaming applications","__typename":"PrismicStructuredText"}],"hero_text":[{"text":"Video and streaming applications.","__typename":"PrismicStructuredText"}],"staff_pick_1":{"name":"Jitsi Server","appId":"5e8d0315207c0a569f482adb","developerId":"1","safeName":["jitsi-server"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/jitsiserver-20-04.svg","version":"Latest","osVersion":"Ubuntu 22.04","tags":["Media"],"support":{"url":"https://github.com/digitalocean/droplet-1-clicks/issues","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Jitsi Server","version":"Latest","website":"","releaseNotes":"","licenseLink":"https://github.com/jitsi/jitsi/blob/master/LICENSE","licenseType":"Apache 2.0","__typename":"CustomSoftware"},{"name":"NGINX","version":"1.18.0","website":"","releaseNotes":"","licenseLink":"http://nginx.org/LICENSE","licenseType":"NGINX License","__typename":"CustomSoftware"},{"name":"Fail2ban","version":"0.11.2","website":"","releaseNotes":"","licenseLink":"https://opensource.org/licenses/gpl-2.0.php","licenseType":"GPL-2","__typename":"CustomSoftware"}],"summary":"Jitsi is an open source app for videoconferencing and chat. Works with Windows, Linux, Mac OS X and Android clients.","description":"\u003cp\u003eJitsi is an open source app for videoconferencing and chat. Works with Windows, Linux, Mac OS X and Android clients.\u003c/p\u003e\n\u003cp\u003eDroplets created by using this image allow videoconferencing between Windows, Mac, Linux, Android and iOS users, just requiring to open a new browser tab on laptops/desktops or to install the Jitsi app from the Play Store/App Store on mobile.\u003c/p\u003e\n\u003cp\u003eThis is a pre-configured image with pre-configured dependencies. You\u0026#39;ll only need a domain and we provide the scripts for an effortless setup with HTTPS enabled for secure communication with your team.\u003c/p\u003e","gettingStarted":"\u003ch1 id=\"configure-jitsi\"\u003eConfigure Jitsi\u003c/h1\u003e\n\u003ch2 id=\"step-1\"\u003eStep 1\u003c/h2\u003e\n\u003cp\u003eCreate a droplet from the image available in the Marketplace.\u003c/p\u003e\n\u003cp\u003eWe recommend using \u003ca href=\"https://www.digitalocean.com/blog/introducing-premium-cpu-optimized-droplets\"\u003ePremium-CPU Optimized Droplets\u003c/a\u003e for production deployment. Please review \u003ca href=\"https://docs.digitalocean.com/developer-center/video-streaming-on-premium-cpu-optimized-droplets/\"\u003ethis benchmark analysis and tutorial\u003c/a\u003e for running your own performance test and benchmark comparison data.\u003c/p\u003e\n\u003ch2 id=\"step-2\"\u003eStep 2\u003c/h2\u003e\n\u003cp\u003eBefore accessing the fresh droplet, add a domain to your project. This is required because most browsers require HTTPS in order to allow you to use the camera and microphone in a website, and it's not possible to enable HTTPS just with an IP.\u003c/p\u003e\n\u003cp\u003eHere's an excellent guide to do that: \u003ca href=\"https://www.digitalocean.com/docs/networking/dns/how-to/add-domains/\"\u003ehttps://www.digitalocean.com/docs/networking/dns/how-to/add-domains/\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eIt is mandatory to add an A record (i.e. jitsi-example.digitalocean.com) pointing to the IP associated with your droplet.\u003c/p\u003e\n\u003ch2 id=\"step-3\"\u003eStep 3\u003c/h2\u003e\n\u003cp\u003eAccess the console (i.e via ssh by running \u003ccode\u003essh root@123.456.789\u003c/code\u003e). We have created a single script to configure Jitsi in a very straightforward way so please follow the instructions displayed in the terminal. During the first boot you'll be asked to include your domain and your email shall be asked in order to create the HTTPS certificates. You'll be notified when it's time to renew the certificates and maintain your website with a secure connection.\u003c/p\u003e\n\u003cp\u003eHere's an excellent guide if you have questions with respect to HTTPS and encryption: \u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-18-04\"\u003ehttps://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-18-04\u003c/a\u003e\u003c/p\u003e\n\u003ch2 id=\"step-4-optional\"\u003eStep 4 (Optional)\u003c/h2\u003e\n\u003cp\u003eYou can optionally add a password to control who can create a meeting. If you want to restrict that, edit \u003ccode\u003enano /etc/prosody/conf.avail/jitsi-example.digitalocean.com.cfg.lua\u003c/code\u003e. There, look for the line that starts with \u003ccode\u003eVirtualHost\u003c/code\u003e, below it, there is a line that says \u003ccode\u003eauthentication = \"anonymous\"\u003c/code\u003e, it should be changed to \u003ccode\u003eauthentication = \"internal_plain\"\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eAfter you saved the authentication changes, you can set one or more Jitsi users that will be able to create a meeting after providing a password. This can be configured with the command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eprosodyctl register the-user jitsi-example.digitalocean.com the-password\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eTo allow users entering the videoconferences without providing them the user and password just created, go back to edit \u003ccode\u003e/etc/prosody/conf.avail/jitsi-example.digitalocean.com.cfg.lua\u003c/code\u003e and at the end of the file paste these lines:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eVirtualHost \"guest.jitsi-example.digitalocean.com\"\n authentication = \"anonymous\"\n c2s_require_encryption = false\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eEdit \u003ccode\u003e/etc/jitsi/meet/jitsi-example.digitalocean.com-config.js\u003c/code\u003e and uncomment the line that says:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e// anonymousdomain: 'guest.jitsi-example.digitalocean.com',\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eEdit \u003ccode\u003e/etc/jitsi/jicofo/jicofo.conf\u003c/code\u003e by switching to a configuration like this\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ejicofo {\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e xmpp: {\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e client: {\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e client-proxy: focus.jitsi-example.digitalocean.com\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e }\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e trusted-domains: [ \"recorder.\u003c/code\u003e\u003ccode\u003e\u003ccode\u003ejitsi-example.digitalocean.com\u003c/code\u003e\" ]\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e }\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e bridge: {\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e brewery-jid: \"JvbBrewery@internal.auth.\u003c/code\u003e\u003ccode\u003e\u003ccode\u003ejitsi-example.digitalocean.com\u003c/code\u003e\"\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e }\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e authentication: {\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e enabled: true\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e type: XMPP\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e login-url:\u003c/code\u003e\u003ccode\u003ejitsi-example.digitalocean.com\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e }\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e}\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThis shall enable users to enter the conference with and URL or the URL and a plain password that can be configured in the browser and is the same for all users. See \u003ca href=\"https://community.jitsi.org/t/enable-password-for-rooms/19881\"\u003eJitsi documentation\u003c/a\u003e for the details.\u003c/p\u003e\n\u003cp\u003eFinally restart the services by typing:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003esystemctl restart {prosody,jicofo,jitsi-videobridge2,nginx}\u003c/code\u003e\u003c/pre\u003e\n\u003ch1 id=\"use-jitsi\"\u003eUse Jitsi\u003c/h1\u003e\n\u003cp\u003eConnect to the host via the hostname you set up in the earlier. Just open a browser tab and visit \u003ca href=\"https://my.openchannel.io/dashboard/5aea4b79fd67b63c867a949a/apps/5e8d0315207c0a569f482adb/versions/jitsi-example.digitalocean.com\"\u003ejitsi-example.digitalocean.com\u003c/a\u003e (i.e. the domain that you previously configured).\u003c/p\u003e\n\u003ch1 id=\"good-practices\"\u003eGood practices\u003c/h1\u003e\n\u003col\u003e\n\u003cli\u003eIt is highly recommended that you don't disable the firewall.\u003c/li\u003e\n\u003cli\u003eKeep your server updated with the last security patches and recent software versions.\u003c/li\u003e\n\u003cli\u003e(Optional) Use SSH keys instead of typed passwords to enter your server via SSH. See the details here: \u003ca href=\"https://www.digitalocean.com/docs/droplets/how-to/add-ssh-keys/\"\u003ehttps://www.digitalocean.com/docs/droplets/how-to/add-ssh-keys/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(Optional) Configure an application such as Google Authenticator to provide a dynamic additional password for SSH access. See the details here: \u003ca href=\"https://www.digitalocean.com/community/tutorials/how-to-protect-ssh-with-two-factor-authentication\"\u003ehttps://www.digitalocean.com/community/tutorials/how-to-protect-ssh-with-two-factor-authentication\u003c/a\u003e\u003c/li\u003e\n\u003c/ol\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=jitsiserver-20-04","addonSlug":null,"imageLabel":"jitsiserver-20-04","imageId":131012090,"externalLabel":null,"additionalLinks":null,"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_2":{"name":"Ant Media Server Community Edition","appId":"5d2371dcbdfa550d57070e53","developerId":"60","safeName":["ant-media-server-community-edition"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/antmedia-antmediaserverco-18-04.svg","version":"2.9.0","osVersion":"Ubuntu 22.04","tags":["Media"],"support":{"url":"https://antmedia.io","email":"support@antmedia.io","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Ant Media Community Edition","version":"2.5.1","website":"","releaseNotes":"https://github.com/ant-media/Ant-Media-Server/releases","licenseLink":"https://github.com/ant-media/Ant-Media-Server/blob/master/license.txt","licenseType":"Apache 2","__typename":"CustomSoftware"},{"name":"Ant Media Community Edition","version":"2.9.0","website":"","releaseNotes":"","licenseLink":"","licenseType":"Apache 2","__typename":"CustomSoftware"}],"summary":"Scalable, Ultra Low Latency \u0026 Adaptive WebRTC Streaming Media Server","description":"\u003cp\u003eAnt Media Server supports RTMP, WebRTC, HLS and MP4\u003c/p\u003e\n\u003ch4 id=\"features\"\u003eFeatures\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePublish live streams with WebRTC, RTMP\u003c/li\u003e\n\u003cli\u003ePlay Live and VoD streams with RTMP and HLS\u003c/li\u003e\n\u003cli\u003eRTMP, RTSP, MP4 and HLS Support\u003c/li\u003e\n\u003cli\u003eWebRTC to RTMP Adapter\u003c/li\u003e\n\u003cli\u003e360 Degree Live \u0026amp; VoD Streams\u003c/li\u003e\n\u003cli\u003eWeb Management Dashboard\u003c/li\u003e\n\u003cli\u003eIP Camera Support\u003c/li\u003e\n\u003cli\u003eRe-stream Remote Streams (IPTV)\u003c/li\u003e\n\u003cli\u003eOpen Source \u003ca href=\"https://github.com/ant-media/Ant-Media-Server\" rel=\"noopener\" target=\"_blank\"\u003eAnt Media Server\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSimulcasting to Periscope\u003c/li\u003e\n\u003cli\u003eYour Live or VoD streams can play anywhere including mobile(Android, iOS) browsers\u003c/li\u003e\n\u003c/ul\u003e","gettingStarted":"\u003ch1 id=\"pull-ip-camera-streams\"\u003ePull IP Camera Streams\u003c/h1\u003e\n\u003cp\u003eWith this feature, users can pull IP Camera streams easily on management panel. In other words, you don't need to write any commands or use terminal. Click \u003ca href=\"https://resources.antmedia.io/docs/re-streaming-ip-cameras-external-sources\"\u003ehere\u003c/a\u003e for how to pull IP Camera Streams.\u003c/p\u003e\n\u003ch1 id=\"important-note\"\u003eImportant Note:\u003c/h1\u003e\n\u003cp\u003ePlease use CPU-Optimized Droplets. Recommended starting droplet size is 4vCPUs, 8 GB Ram. Depending on your system load, you may need a bigger size. Please reach us if you are not sure which droplet size to choose.\u003c/p\u003e\n\u003ch1 id=\"publish-live-stream-with-rtmp\"\u003ePublish Live Stream with RTMP\u003c/h1\u003e\n\u003cp\u003eThere are many ways to publish Live Stream with RTMP to Ant Media server. Here are the some of the ways:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://resources.antmedia.io/docs/rtmp-publishing-1\"\u003ePublish with a Desktop Software like OBS, XSplit, Wirecast, etc.\u003c/a\u003e\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://resources.antmedia.io/docs/teradek-publishing\"\u003ePublish with a Hardware Encoder (Teradek, Tricaster, Gosolo, etc)\u003c/a\u003e\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/ant-media/LiveVideoBroadcaster\"\u003ePublish with a Mobile App - (Android, iOS, etc.)\u003c/a\u003e\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://resources.antmedia.io/docs/setting-up-ssl\"\u003eEnable SSL\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eFor each case we give an example on how to publish live stream with RTMP to Ant Media Server. For more please look at the \u003ca href=\"https://resources.antmedia.io\"\u003edocs\u003c/a\u003e.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=antmedia-antmediaserverco-18-04","addonSlug":null,"imageLabel":"antmedia-antmediaserverco-18-04","imageId":154280628,"externalLabel":null,"additionalLinks":null,"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_3":null,"staff_pick_4":null,"__typename":"CategoryGroup"},{"nav_icon":{"dimensions":{"width":45,"height":45,"__typename":"PrismicImageDimensions"},"url":"https://images.prismic.io/do-marketplace-testing%2F63ac6750-241e-4375-ad5c-9b89604fb2b7_analytics.svg?auto=compress,format","__typename":"PrismicStructuredImage"},"category":"Monitoring","is_new":"false","is_visible_in_nav":"true","nav_description":[{"text":"Monitoring, logging, and more.","__typename":"PrismicStructuredText"}],"hero_text":[{"text":"Keep your infrastructure healthy and performant by using these monitoring, logging, and alerting tools.","__typename":"PrismicStructuredText"}],"staff_pick_1":{"name":"360 Monitoring","appId":"139","developerId":"46","safeName":["360monitoring"],"created":1648232213000,"type":"saas","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://mp-saas-service.nyc3.digitaloceanspaces.com/vendor_media/dbc2190a-670e-4fc0-b413-7f8964bd535e.svg","version":"","osVersion":"","tags":["Monitoring","Add-Ons"],"support":{"url":"","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":null,"summary":"Track site \u0026 server performance and prevent downtime!","description":"\u003cp\u003e\u003cstrong\u003e360 Monitoring by Plesk\u003c/strong\u003e empowers Developers and WebProfessionals to Monitor any Website \u0026amp; Server. Track performance and prevent downtime easily with configurable dashboards, easy set-up \u0026amp; custom tools.\u003c/p\u003e\n\u003ch3 id=\"complete-website-uptime-monitoring\"\u003eComplete Website Uptime Monitoring\u003c/h3\u003e\n\u003cp\u003eUnnoticed downtime is a thing of the past with 360 Site Monitoring. Check the DNS time, SSL validity, keywords, and more. From 26 locations globally!\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDowntime monitoring\u003c/li\u003e\n\u003cli\u003eTime to First Byte (TTFB)\u003c/li\u003e\n\u003cli\u003eHTTP/S, TCP (port), ICMP (ping) tracking\u003c/li\u003e\n\u003cli\u003eConnection time\u003c/li\u003e\n\u003cli\u003eTotal duration\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"comprehensive-server-uptime-checks\"\u003eComprehensive Server Uptime Checks\u003c/h3\u003e\n\u003cp\u003eWe don’t just tell you that your service went down. We also tell you why. With 360 Monitoring, you can track the health of each functionality to pinpoint why errors and downtime occur. Independent of any infrastructure below!\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTracking CPU\u003c/li\u003e\n\u003cli\u003eLoad times\u003c/li\u003e\n\u003cli\u003eNetwork statistics (ping, bytes, packets)\u003c/li\u003e\n\u003cli\u003eMemory and Swap\u003c/li\u003e\n\u003cli\u003eDisc usage (Overall, I/O)\u003c/li\u003e\n\u003cli\u003eOptimized for Plesk and cPanel servers, but can be used with any Droplet\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"frequent-scans--personalized-alerting\"\u003eFrequent scans \u0026amp; Personalized Alerting\u003c/h3\u003e\n\u003cp\u003eRegular scans are paramount for staying up-to-date with site health. That’s why 360 Monitoring offers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMulti-channel alerting, including Slack, Telegram, and SMS\u003c/li\u003e\n\u003cli\u003eMonitoring intervals up to 60 seconds\u003c/li\u003e\n\u003cli\u003eData retention up to 30 days\u003c/li\u003e\n\u003cli\u003eHistorical data up to 2 years\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"out-of-the-box-integrations\"\u003eOut-of-the-box integrations\u003c/h3\u003e\n\u003cp\u003e360 Monitoring provides integrations with top database and server technologies. This way you can create plugins based on your needs.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWeb server \u0026amp; database monitoring\u003c/li\u003e\n\u003cli\u003eExim / Postfix Mail Queue monitoring\u003c/li\u003e\n\u003cli\u003eCloudLinux, cPanel, KVM, Docker, Plesk WP Toolkit\u003c/li\u003e\n\u003cli\u003ePHP-FPM\u003c/li\u003e\n\u003cli\u003eIMAP \u0026amp; SMTPs\u003c/li\u003e\n\u003cli\u003eIntegrated with Plesk through the Plesk Monitoring Extension\u003c/li\u003e\n\u003cli\u003eSoon: cPanel Monitoring from WHM \u0026amp; cPanel\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"available-plans\"\u003eAvailable Plans\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth id=\"\"\u003e\u003c/th\u003e\n\u003cth id=\"free\"\u003eFree\u003c/th\u003e\n\u003cth id=\"paid\"\u003ePaid\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eServers Monitors\u003c/td\u003e\n\u003ctd\u003e1\u003c/td\u003e\n\u003ctd\u003eUp to 100\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eWebsite Monitors\u003c/td\u003e\n\u003ctd\u003e5\u003c/td\u003e\n\u003ctd\u003eUp to 1,000\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMonitoring Intervals\u003c/td\u003e\n\u003ctd\u003e5 Minutes\u003c/td\u003e\n\u003ctd\u003e60 seconds\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eFull Data Retention\u003c/td\u003e\n\u003ctd\u003e1 day\u003c/td\u003e\n\u003ctd\u003e30 days\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eHistorical Reporting\u003c/td\u003e\n\u003ctd\u003e7 days\u003c/td\u003e\n\u003ctd\u003e2 years\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eCustom Metrics\u003c/td\u003e\n\u003ctd\u003eLimited\u003c/td\u003e\n\u003ctd\u003eUnlimited\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eSupport\u003c/td\u003e\n\u003ctd\u003eBasic\u003c/td\u003e\n\u003ctd\u003ePriority\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eDashboards\u003c/td\u003e\n\u003ctd\u003eAvailable\u003c/td\u003e\n\u003ctd\u003eAvailable\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eHosted Statuspages\u003c/td\u003e\n\u003ctd\u003eAvailable\u003c/td\u003e\n\u003ctd\u003eAvailable\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eEmail Alerting\u003c/td\u003e\n\u003ctd\u003eAvailable\u003c/td\u003e\n\u003ctd\u003eAvailable\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eSMS Alerting\u003c/td\u003e\n\u003ctd\u003e-/-\u003c/td\u003e\n\u003ctd\u003eAvailable\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eWebhooks, Discord, Slack \u0026amp; more\u003c/td\u003e\n\u003ctd\u003e-/-\u003c/td\u003e\n\u003ctd\u003eAvailable\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eService Monitoring\u003c/td\u003e\n\u003ctd\u003e-/-\u003c/td\u003e\n\u003ctd\u003eAvailable\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"support--limitations\"\u003eSupport \u0026amp; Limitations\u003c/h3\u003e\n\u003cp\u003e360 Server Monitoring supports the most common Linux distributions which are not yet EOL.\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eWe recommend using the following Operating Systems:\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth id=\"distribution\"\u003eDistribution\u003c/th\u003e\n\u003cth id=\"version\"\u003eVersion\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eCloudLinux\u003c/td\u003e\n\u003ctd\u003e7 \u0026amp; 8 and higher\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eUbuntu\u003c/td\u003e\n\u003ctd\u003e18.04 and higher\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eDebian\u003c/td\u003e\n\u003ctd\u003e9 and higher\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eCentOS\u003c/td\u003e\n\u003ctd\u003e7 \u0026amp; 8 and higher\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eAlmaLinux\u003c/td\u003e\n\u003ctd\u003e8.3 and higher\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e360 Monitoring works with any website which is reachable by our system. Once logged in you can also download the list of IPs to add them to your whitelist.\u003c/p\u003e\n\u003cp\u003eComing soon: Log Monitoring, Error Crawling \u0026amp; RBL (Blacklist) Monitoring\u003c/p\u003e","gettingStarted":"","createApp":"","addonSlug":null,"imageLabel":"","imageId":null,"externalLabel":null,"additionalLinks":null,"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_2":{"name":"Prometheus","appId":"5d1b7fd829a6ab0d4c7dadc7","developerId":"11","safeName":["prometheus"],"created":1562083288000,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/prometheus-logo.svg","version":"2.9.2","osVersion":"Ubuntu 18.04","tags":["Monitoring","Open Source"],"support":{"url":"https://prometheus.io/community/","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Prometheus","version":"2.9.2","website":"https://prometheus.io","releaseNotes":"https://github.com/prometheus/prometheus/releases","licenseLink":"https://github.com/prometheus/prometheus/blob/master/LICENSE","licenseType":"Apache 2","__typename":"CustomSoftware"},{"name":"Node Exporter","version":"0.17.0","website":"https://prometheus.io","releaseNotes":"https://github.com/prometheus/node_exporter/releases","licenseLink":"https://github.com/prometheus/node_exporter/blob/master/LICENSE","licenseType":"Apache 2","__typename":"CustomSoftware"}],"summary":"The Prometheus monitoring system","description":"\u003cp\u003ePrometheus is an open-source systems monitoring and alerting toolkit part of the \u003ca rel=\"noopener\" href=\"https://cncf.io/\"\u003eCloud Native Computing Foundation\u003c/a\u003e . Since its inception in 2012, many companies and organizations have adopted Prometheus, and the project has a very active developer and user \u003ca rel=\"noopener\" href=\"https://prometheus.io/community\"\u003ecommunity\u003c/a\u003e. Prometheus's main features are: - a multi-dimensional \u003ca rel=\"noopener\" href=\"https://prometheus.io/docs/concepts/data_model/\"\u003edata model\u003c/a\u003e with time series data identified by metric name and key/value pairs - PromQL, a \u003ca rel=\"noopener\" href=\"https://prometheus.io/docs/prometheus/latest/querying/basics/\"\u003eflexible query language\u003c/a\u003e to leverage this dimensionality - no reliance on distributed storage; single server nodes are autonomous - time series collection happens via a pull model over HTTP - \u003ca rel=\"noopener\" href=\"https://prometheus.io/docs/instrumenting/pushing/\"\u003epushing time series\u003c/a\u003e is supported via an intermediary gateway - targets are discovered via service discovery or static configuration - multiple modes of graphing and dashboarding support\u003c/p\u003e","gettingStarted":"\u003cp\u003eIn the One Click app, we run Prometheus on port\u0026nbsp;\u003ccode\u003e9090\u003c/code\u003e\u0026nbsp;and\u0026nbsp;\u003ca href=\"https://github.com/prometheus/node_exporter/\" rel=\"noopener\"\u003enode_exporter\u003c/a\u003e\u0026nbsp;on port\u0026nbsp;\u003ccode\u003e9100\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003ePrometheus is configured via a config file which can be found at\u0026nbsp;\u003ccode\u003e/etc/prometheus/prometheus.yml\u003c/code\u003e\u0026nbsp;in the droplet. You can add and configure which targets are scraped by Prometheus using the config file. Once you edit the config file, run\u0026nbsp;\u003ccode\u003esudo systemctl reload prometheus.service\u003c/code\u003e\u0026nbsp;to pick up the new changes.\u003c/p\u003e\n\u003cp\u003eFor documentation visit: https://prometheus.io/docs/introduction/overview/ and the docs around configuration can be found\u0026nbsp;\u003ca href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003ch3 id=\"quickstart\"\u003eQuick Start\u003c/h3\u003e\n\u003cp\u003eAfter the droplet is created you can visit the prometheus UI on\u003c/p\u003e\n\u003cpre\u003ehttp://your_server_ip:9090/\u003c/pre\u003e\n\u003cp\u003ePrometheus by default is configured to monitor itself and nodeexporter. You can add more targets by editing the config file located at\u0026nbsp;\u003ccode\u003e/etc/prometheus/prometheus.yml\u003c/code\u003e\u0026nbsp;on the droplet. For a run through of what is happening and how to write queries, refer to this\u0026nbsp;\u003ca href=\"https://prometheus.io/docs/guides/node-exporter/\" rel=\"noopener\"\u003eguide\u003c/a\u003e.\u003c/p\u003e\n\u003ch3 id=\"production\"\u003eProduction\u003c/h3\u003e\n\u003cp\u003eWhen running in production, you should make sure that prometheus is not exposed to public but rather only to a few users protected by a reverse-proxy/firewall. This\u0026nbsp;\u003ca href=\"https://prometheus.io/docs/guides/basic-auth/\" rel=\"noopener\"\u003eguide\u003c/a\u003e\u0026nbsp;gives you an example on how to do that using basic auth and NGINX.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=prometheus-18-04","addonSlug":null,"imageLabel":"prometheus-18-04","imageId":47219194,"externalLabel":null,"additionalLinks":null,"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_3":{"name":"Kubernetes Monitoring Stack","appId":"5d163fdd29a6ab0d4c7d5274","developerId":"1","safeName":["kubernetes-monitoring-stack"],"created":0,"type":"kubernetes","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/monitoring-logo.svg","version":"latest","osVersion":"","tags":["Monitoring","Kubernetes"],"support":{"url":"https://docs.digitalocean.com/support/","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"kube-prometheus-stack","version":"55.7.0","website":"https://artifacthub.io/packages/helm/prometheus-community/kube-prometheus-stack","releaseNotes":"https://artifacthub.io/packages/helm/prometheus-community/kube-prometheus-stack/55.7.0","licenseLink":"https://artifacthub.io/packages/helm/prometheus-community/kube-prometheus-stack","licenseType":"Apache 2.0","__typename":"CustomSoftware"}],"summary":"Prometheus, Grafana, and Alertmanager preinstalled and integrated together on a DigitalOcean Kubernetes Cluster.","description":"\u003cp\u003e\u003ca href=\"https://prometheus.io/\" rel=\"noopener\" target=\"_blank\"\u003ePrometheus\u003c/a\u003e is a very popular and comprehensive systems monitoring solution. It is a standalone open source project and maintained independently of any company. A big plus is the capability to monitor \u003ccode\u003eKubernetes\u003c/code\u003e clusters as well, which tend to be pretty complex in nature. Prometheus eases the operational tasks that are required in setting up a monitoring stack.\u003c/p\u003e\n\u003cp\u003eThe \u003ca href=\"https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/\" rel=\"noopener\" target=\"_blank\"\u003ekube-prometheus-stack\u003c/a\u003e is meant for \u003ccode\u003ecluster monitoring\u003c/code\u003e, so it is \u003ccode\u003epre-configured\u003c/code\u003e to collect metrics from all \u003ccode\u003eKubernetes components\u003c/code\u003e. In addition to that it delivers a default set of \u003ccode\u003edashboards\u003c/code\u003e and \u003ccode\u003ealerting\u003c/code\u003e rules. Many of the useful dashboards and alerts come from the \u003ca href=\"https://github.com/kubernetes-monitoring/kubernetes-mixin/\" rel=\"noopener\" target=\"_blank\"\u003ekubernetes-mixin\u003c/a\u003e project.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003ekube-prometheus-stack\u003c/code\u003e consists of three main components:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ePrometheus Operator\u003c/code\u003e, for spinning up and managing \u003ccode\u003ePrometheus\u003c/code\u003e instances in your \u003ccode\u003eDOKS\u003c/code\u003e cluster.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eGrafana\u003c/code\u003e, for visualizing metrics and plot data using stunning dashboards.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eAlertmanager\u003c/code\u003e, for configuring various notifications (e.g. \u003ccode\u003ePagerDuty\u003c/code\u003e, \u003ccode\u003eSlack\u003c/code\u003e, \u003ccode\u003eemail\u003c/code\u003e, etc) based on various alerts received from the Prometheus main server.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePrometheus follows a \u003ccode\u003epull\u003c/code\u003e model when it comes to metrics gathering, meaning that it expects a \u003ccode\u003e/metrics\u003c/code\u003e endpoint to be exposed by the service in question for scraping. For every metric that is being fetched by Prometheus, a time series database is used to store the data points.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eGrafana\u003c/code\u003e helps you gather data points from the Prometheus time series database, and plot everything using beautiful graphs grouped into dashboards. You can also perform queries using the \u003ccode\u003ePromQL\u003c/code\u003e language. To persist all the data (metrics and various settings), you need to allocate block storage for both Prometheus and Grafana instances via \u003ccode\u003ePersistent Volumes\u003c/code\u003e (or PVs).\u003c/p\u003e\n\u003cp\u003eThe \u003ca href=\"https://github.com/prometheus/alertmanager/\" rel=\"noopener\" target=\"_blank\"\u003eAlertmanager\u003c/a\u003e component handles alerts sent by client applications such as the Prometheus server. It takes care of \u003ccode\u003ededuplicating\u003c/code\u003e, \u003ccode\u003egrouping\u003c/code\u003e, and \u003ccode\u003erouting\u003c/code\u003e them to the correct \u003ccode\u003ereceiver\u003c/code\u003e integration such as \u003ccode\u003eemail\u003c/code\u003e, \u003ccode\u003ePagerDuty\u003c/code\u003e, or \u003ccode\u003eSlack\u003c/code\u003e. It also takes care of \u003ccode\u003esilencing\u003c/code\u003e and \u003ccode\u003einhibition\u003c/code\u003e of alerts.\u003c/p\u003e\n\u003cp\u003ePlease make sure to visit the official documentation page for each of the components to learn more:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://prometheus.io/docs/\" rel=\"noopener\" target=\"_blank\"\u003ePrometheus\u003c/a\u003e, to learn more about all the available features, as well as various configuration options.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/user-guides/getting-started.md\" rel=\"noopener\" target=\"_blank\"\u003ePrometheus Operator\u003c/a\u003e, which provides useful information on how to use the operator.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://prometheus.io/docs/alerting/latest/alertmanager/\" rel=\"noopener\" target=\"_blank\"\u003eAlertmanager\u003c/a\u003e, to learn more about Alertmanager and integrations with various notification platforms.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eNotes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigitalOcean is using \u003ccode\u003eHelm v3\u003c/code\u003e to deploy \u003ccode\u003ePrometheus\u003c/code\u003e to your \u003ccode\u003eDOKS\u003c/code\u003e cluster.\u003c/li\u003e\n\u003cli\u003eThis chart was formerly named \u003ccode\u003eprometheus-operator\u003c/code\u003e chart, now renamed to more clearly reflect that it installs the \u003ccode\u003ekube-prometheus\u003c/code\u003e project stack, within which \u003ccode\u003ePrometheus Operator\u003c/code\u003e is only one component.\u003c/li\u003e\n\u003cli\u003eThe Prometheus stack 1-Click App also includes a $1/month block storage for both Grafana and Prometheus time series database (two \u003ccode\u003ePVs\u003c/code\u003e of \u003ccode\u003e5GB\u003c/code\u003e each, to start with).\u003c/li\u003e\n\u003c/ul\u003e","gettingStarted":"\u003ch3 id=\"how-to-connect-to-your-cluster\"\u003eHow to Connect to Your Cluster\u003c/h3\u003e\n\u003cp\u003eFollow these \u003ca href=\"https://www.digitalocean.com/docs/kubernetes/how-to/connect-to-cluster/\"\u003einstructions\u003c/a\u003e to connect to your cluster with \u003ccode\u003ekubectl\u003c/code\u003e and \u003ccode\u003edoctl\u003c/code\u003e. Additional instructions for connecting to your cluster are included in the \u003ca href=\"https://cloud.digitalocean.com/kubernetes/clusters/\"\u003eDigitalOcean Control Panel\u003c/a\u003e.\u003c/p\u003e\n\u003ch3 id=\"how-to-confirm-that-prometheus-monitoring-stack-is-running\"\u003eHow to confirm that Prometheus monitoring stack is running\u003c/h3\u003e\n\u003cp\u003eFirst, check if the Helm installation was successful, by running below command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ehelm ls -n kube-prometheus-stack\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe output looks similar to (the \u003ccode\u003eSTATUS\u003c/code\u003e column value should be \u003ccode\u003edeployed\u003c/code\u003e):\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"text language-text\"\u003eNAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION\nkube-prometheus-stack kube-prometheus-stack 1 2022-02-16 16:02:48 deployed kube-prometheus-stack-55.7.0 0.70.0\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eNext, verify if the Prometheus stack Pods are up and running:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ekubectl get pods -n kube-prometheus-stack\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe output looks similar to (all Pods should be in a \u003ccode\u003eREADY\u003c/code\u003e state, and \u003ccode\u003eSTATUS\u003c/code\u003e should be \u003ccode\u003eRunning\u003c/code\u003e):\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"text language-text\"\u003eNAME READY STATUS RESTARTS AGE\nalertmanager-kube-prometheus-stack-alertmanager-0 2/2 Running 0 8m24s\nkube-prometheus-stack-grafana-6f6fbc5cd9-7zbnl 3/3 Running 0 8m30s\nkube-prometheus-stack-kube-state-metrics-596b9c6b55-zxpmn 1/1 Running 0 8m30s\nkube-prometheus-stack-operator-7bb8679c95-mpdms 1/1 Running 0 8m30s\nkube-prometheus-stack-prometheus-node-exporter-vzb5m 1/1 Running 0 8m30s\nkube-prometheus-stack-prometheus-node-exporter-xz44k 1/1 Running 0 8m30s\nprometheus-kube-prometheus-stack-prometheus-0 2/2 Running 0 8m24s\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"accessing-prometheus-web-panel\"\u003eAccessing Prometheus Web Panel\u003c/h3\u003e\n\u003cp\u003eYou can access Prometheus web console by port forwarding the \u003ccode\u003ekube-prometheus-stack-prometheus\u003c/code\u003e service:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ekubectl port-forward svc/kube-prometheus-stack-prometheus 9090:9090 -n kube-prometheus-stack\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eNext, launch a web browser of your choice, and enter the following URL: http://localhost:9090. To see what targets were discovered by Prometheus, please navigate to http://localhost:9090/targets.\u003c/p\u003e\n\u003ch3 id=\"accessing-grafana-web-panel\"\u003eAccessing Grafana Web Panel\u003c/h3\u003e\n\u003cp\u003eYou can connect to Grafana (default credentials: \u003ccode\u003eadmin/prom-operator\u003c/code\u003e), by port forwarding the \u003ccode\u003ekube-prometheus-stack-grafana\u003c/code\u003e service:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ekubectl port-forward svc/kube-prometheus-stack-grafana 3000:80 -n kube-prometheus-stack\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eNext, launch a web browser of your choice, and enter the following URL: http://localhost:3000. You can take a look around, and see what dashboards are available for you to use from the \u003ca href=\"https://github.com/kubernetes-monitoring/kubernetes-mixin\"\u003ekubernetes-mixin\u003c/a\u003e project as an example, by navigating to the following URL: http://localhost:3000/dashboards?tag=kubernetes-mixin.\u003c/p\u003e\n\u003ch3 id=\"tweaking-helm-chart-values\"\u003eTweaking Helm Chart Values\u003c/h3\u003e\n\u003cp\u003eThe \u003ccode\u003ekube-prometheus-stack\u003c/code\u003e provides some custom values to start with. Please have a look at the \u003ca href=\"https://raw.githubusercontent.com/digitalocean/marketplace-kubernetes/master/stacks/kube-prometheus-stack/values.yml\"\u003evalues\u003c/a\u003e file from the main GitHub repository (explanations are provided inside, where necessary).\u003c/p\u003e\n\u003cp\u003eYou can always inspect all the available options, as well as the default values for the \u003ccode\u003ekube-prometheus-stack\u003c/code\u003e Helm chart by running below command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ehelm show values prometheus-community/kube-prometheus-stack --version 55.7.0\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eAfter tweaking the Helm values file (\u003ccode\u003evalues.yml\u003c/code\u003e) according to your needs, you can always apply the changes via \u003ccode\u003ehelm upgrade\u003c/code\u003e command, as shown below:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ehelm upgrade kube-prometheus-stack prometheus-community/kube-prometheus-stack --version 55.7.0 \\\n --namespace kube-prometheus-stack \\\n --values values.yml\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"configuring-service-monitors-for-prometheus\"\u003eConfiguring Service Monitors for Prometheus\u003c/h3\u003e\n\u003cp\u003eTo monitor applications in your cluster, you usually define a so called \u003ccode\u003eServiceMonitor\u003c/code\u003e CRD. This is a custom resource definition provided by the \u003ccode\u003ePrometheus Operator\u003c/code\u003e, which helps you in the process of adding new services that need to be monitored.\u003c/p\u003e\n\u003cp\u003eA typical \u003ccode\u003eServiceMonitor\u003c/code\u003e configuration looks like below:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"yaml language-yaml\"\u003eapiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n name: example-app\n labels:\n team: frontend\nspec:\n selector:\n matchLabels:\n app: example-app\n endpoints:\n - port: web\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eExplanations for the above configuration:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003espec.selector.matchLabels.app\u003c/code\u003e: Tells \u003ccode\u003eServiceMonitor\u003c/code\u003e what application to monitor, based on a label.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003espec.endpoints.port\u003c/code\u003e: A reference to the port label used by the application that needs monitoring.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe \u003ca href=\"https://raw.githubusercontent.com/digitalocean/marketplace-kubernetes/master/stacks/kube-prometheus-stack/values.yml\"\u003ekube-prometheus-stack\u003c/a\u003e Helm values file provided in the GitHub marketplace repository, contains a dedicated section (named \u003ccode\u003eadditionalServiceMonitors\u003c/code\u003e) where you can define a list of additional services to monitor. Below snippet is setting up Nginx Ingress Controller monitoring as an example:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"yaml language-yaml\"\u003eadditionalServiceMonitors:\n - name: \"ingress-nginx-monitor\"\n selector:\n matchLabels:\n app.kubernetes.io/name: ingress-nginx\n namespaceSelector:\n matchNames:\n - ingress-nginx\n endpoints:\n - port: \"metrics\"\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eAfter adding required services to monitor, you need to upgrade the stack via the \u003ccode\u003ehelm upgrade\u003c/code\u003e command, in order to apply the changes:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ehelm upgrade kube-prometheus-stack prometheus-community/kube-prometheus-stack \\\n --version 55.7.0 \\\n --namespace kube-prometheus-stack \\\n --values values.yml\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can also check the full list of available \u003ca href=\"https://github.com/prometheus-operator/prometheus-operator#customresourcedefinitions\"\u003eCRDs\u003c/a\u003e which you can use to control the Prometheus Operator, by visiting the official GitHub documentation page.\u003c/p\u003e\n\u003ch3 id=\"upgrading-kubernetes-prometheus-stack\"\u003eUpgrading Kubernetes Prometheus Stack\u003c/h3\u003e\n\u003cp\u003eYou can check what versions are available to upgrade, by navigating to the \u003ca href=\"https://github.com/prometheus-community/helm-charts/releases\"\u003ekube-prometheus-stack\u003c/a\u003e official releases page from GitHub. Alternatively, you can also use \u003ca href=\"https://artifacthub.io/packages/helm/prometheus-community/kube-prometheus-stack\"\u003eArtifactHUB\u003c/a\u003e, which provides a more rich and user friendly interface.\u003c/p\u003e\n\u003cp\u003eThen, to upgrade the stack to a newer version, please run the following command (make sure to replace the \u003ccode\u003e\u0026amp;amp;amp;amp;amp;amp;amp;amp;lt;\u0026amp;amp;amp;amp;amp;amp;amp;amp;gt;\u003c/code\u003e placeholders first):\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ehelm upgrade kube-prometheus-stack prometheus-community/kube-prometheus-stack \\\n --version \u0026lt;KUBE_PROMETHEUS_STACK_NEW_VERSION\u0026gt; \\\n --namespace kube-prometheus-stack \\\n --values \u0026lt;YOUR_HELM_VALUES_FILE\u0026gt;\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee \u003ca href=\"https://helm.sh/docs/helm/helm_upgrade/\"\u003ehelm upgrade\u003c/a\u003e for command documentation.\u003c/p\u003e\n\u003cp\u003eAlso, please make sure to check the official recommendations for various \u003ca href=\"https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack#upgrading-chart\"\u003eupgrade paths\u003c/a\u003e, from an existing release to a new major version of the Prometheus stack.\u003c/p\u003e\n\u003ch3 id=\"uninstalling-kubernetes-prometheus-stack\"\u003eUninstalling Kubernetes Prometheus Stack\u003c/h3\u003e\n\u003cp\u003eTo delete your installation of \u003ccode\u003ekube-prometheus-stack\u003c/code\u003e, please run the following \u003ccode\u003eHelm\u003c/code\u003e command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ehelm uninstall kube-prometheus-stack -n kube-prometheus-stack\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eAbove command will delete all the associated \u003ccode\u003eKubernetes\u003c/code\u003e resources installed by the \u003ccode\u003ekube-prometheus-stack\u003c/code\u003e Helm chart, except the namespace itself. To delete the \u003ccode\u003ekube-prometheus-stack namespace\u003c/code\u003e as well, please run below command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"console language-console\"\u003ekubectl delete ns kube-prometheus-stack\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"additional-resources\"\u003eAdditional Resources\u003c/h3\u003e\n\u003cp\u003eYou can visit the \u003ca href=\"https://github.com/digitalocean/Kubernetes-Starter-Kit-Developers/\"\u003eStarter Kit\u003c/a\u003e set of guides provided by DigitalOcean for further study. Specifically for \u003ca href=\"https://github.com/digitalocean/Kubernetes-Starter-Kit-Developers/tree/main/04-setup-prometheus-stack\"\u003ePrometheus\u003c/a\u003e, you can access the following content:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/digitalocean/Kubernetes-Starter-Kit-Developers/tree/main/04-setup-prometheus-stack#step-2---configure-prometheus-and-grafana\"\u003eConfiguring Prometheus and Grafana\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/digitalocean/Kubernetes-Starter-Kit-Developers/tree/main/04-setup-prometheus-stack#step-3---promql-prometheus-query-language\"\u003eGetting to know PromQL\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/digitalocean/Kubernetes-Starter-Kit-Developers/tree/main/04-setup-prometheus-stack#step-4---visualizing-metrics-using-grafana\"\u003eVisualizing Metrics using Grafana\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/digitalocean/Kubernetes-Starter-Kit-Developers/tree/main/04-setup-prometheus-stack#best-practices-for-pv-sizing\"\u003eBest practices for Prometheus PV sizing\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eTo further enrich your experience, you can also visit the \u003ca href=\"https://prometheus.io/docs/introduction/media/\"\u003emedia\u003c/a\u003e links from the official Prometheus documentation site.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/kubernetes/clusters/new?addonslug=monitoring\u0026nodePools=s-1vcpu-2gb%3A3","addonSlug":"monitoring","imageLabel":"","imageId":null,"externalLabel":null,"additionalLinks":null,"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_4":{"name":"Sosivio Predictive Troubleshooting","appId":"5667a7cacb5c975e3adc6e19","developerId":"3595","safeName":["sosivio-predictive-troubleshooting"],"created":0,"type":"kubernetes","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/sosivio-sosiviopredictiv.png","version":"1.5.3","osVersion":"","tags":["Monitoring","Kubernetes"],"support":{"url":"https://sosiv.io/contact-us","email":"support@sosiv.io","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":null,"summary":"Non-intrusive and Predictive Troubleshooting specifically built for Kubernetes.\n\nSosivio is a next generation non-intrusive and predictive troubleshooting platform specifically built for Kubernetes which uses AI/ML to predict and prevent critical failures in Kubernetes environments autonomously. \nWe provide predictive maintenance tools, root cause determination and instant remediations for critical failures in Kubernetes applications and environments. Sosivio's proprietary air gapped ultra-granular data collectors collect and analyze data from all layers of the infrastructure to fuel Real-Time Metrics, Application Insights, and Application Profiling to protect against over/under allocated resources improving costs and performance. \nSosivio is also cloud agnostic (DO, GKE, EKS, AKS, OCP, etc) and can be run on-premise in disconnected environments ensuring security and stability. ","description":"\u003cp\u003eSosivio is the first and only non-intrusive and predictive troubleshooting platform built specifically for Kubernetes. Sosivio provides predictive troubleshooting tools, automated application resource profiling, and root cause remediation for any failures in Kubernetes environments.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003ePredict and Prevent!\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThe Operator will deploy and manage Sosivio on Kubernetes. Included are the following features;\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRoot Cause Analysis and Remediation - predictive troubleshooting to prevent failures before they occur. Instantly understand where the root cause is and how to fix it.\u003c/li\u003e\n\u003cli\u003eApplication Profiling - analyze container resource consumption and recommendations for requests and limits.\u003c/li\u003e\n\u003cli\u003eReal-time Metrics - in-depth, granular, and accurate real-time data from the process level inside containers (and pods) with failure correlation.\u003c/li\u003e\n\u003cli\u003eCluster Health Checks - proactive health checks for cluster infrastructure and applications running on the cluster.\u003c/li\u003e\n\u003cli\u003eMulti-Cluster View - management, monitoring, and maintenance capabilities for all clusters from one location.\u003c/li\u003e\n\u003cli\u003eKubernetes Components Alerting - notifications sent through Slack, email and other 3rd party platforms.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSosivio uses lean and distributed machine learning to predict and prevent critical failures in your applications and cloud native environments. Sosivio runs as Yet-Another-Application on your Kubernetes clusters which means a non-intrusive solution with no code injection and no permanent agents. Sosivio taps into signals and data from all layers of the environment (OS, Network, Kernel, K8s, Apps and more) to provide deep insights into what is going on and offers real-time actionable solutions to fix them proactively.\u003c/p\u003e\n\u003cp\u003eAdditionally, benefit from Sosivio\u0026#39;s ultra granular live metrics with features like SDN latency checks, visibility into context switches and network connections, and much more. Sosivio\u0026#39;s ability to operate on-prem or in public cloud, in completely disconnected environments, has made Sosivio the go-to tool for heavily regulated industries like healthcare, telecommunications, financial services, and defense/government.\u003c/p\u003e\n\u003cp\u003eWith Sosivio, there is no data offloading outside of your Kubernetes cluster. Applying our Data Swirling methodology enables the product to perform at a remarkably low resource footprint and requires no persistent volume configurations. Sosivio can be run on any platform (DigitalOcean, OpenShift, AWS, GCP, Azure, AKS, EKS, etc…) or in on-premise deployments.\u003c/p\u003e\n\u003cp\u003eSosivio is installed under one namespace (labeled: \u0026#34;sosivio\u0026#34;) which creates all the required components for the product.\u003c/p\u003e","gettingStarted":"\u003ch2 id=\"exposing-sosivio\"\u003eExposing Sosivio\u003c/h2\u003e\n\u003cp\u003eBy default, Sosivio is reachable in DigitalOcean by port forwarding into it:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ekubectl port-forward -n sosivio svc/dashboard 8088:8088\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eIf you’d like to expose Sosivio using DigitalOcean’s LoadBalancers, you can do so easily by running the following command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ekubectl apply -f https://raw.githubusercontent.com/digitalocean/marketplace-kubernetes/master/stacks/sosivio/assets/loadBalancer.yaml\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eIf you’d like to use an ingress to expose Sosivio, you can download the ingress template:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ewget https://raw.githubusercontent.com/digitalocean/marketplace-kubernetes/master/stacks/sosivio/assets/ingress.yaml\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThen, in the ingress configuration, change \u003ccode\u003e\u0026lt;YOUR_DOMAIN\u0026gt;\u003c/code\u003e with your own domain. Apply the ingress with the following command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ekubectl apply -f ingress.yaml\u003c/code\u003e\u003c/pre\u003e\n\u003ch2 id=\"default-login-credentials\"\u003eDefault Login Credentials\u003c/h2\u003e\n\u003cp\u003eThe default password should immediately be changed after logging into the Sosivio Dashboard for the first time.\u003c/p\u003e\n\u003cp\u003eUsername: \u003cstrong\u003eadmin\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThe password can be retrieved by running the following command:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ekubectl get secret -n sosivio sosivio-admin-otp -o jsonpath='{.data.password}' | base64 -d\u003c/code\u003e\u003c/pre\u003e\n\u003ch1 id=\"for-additional-information-please-reference-sosivio-documentation-httpsdocssosiviohttpsdocssosivio\"\u003eFor additional information, please reference Sosivio Documentation \u003ca href=\"https://docs.sosiv.io\"\u003ehttps://docs.sosiv.io\u003c/a\u003e\u003c/h1\u003e","createApp":"https://cloud.digitalocean.com/kubernetes/clusters/new?addonslug=sosivio\u0026nodePools=s-1vcpu-2gb%3A3","addonSlug":"sosivio","imageLabel":"","imageId":null,"externalLabel":null,"additionalLinks":[{"name":"Sosivio Documentation","url":"https://docs.sosiv.io","description":"Sosivio Official Documentation ","__typename":"AdditionalLink"},{"name":"Sosivio Slack Community","url":"https://sosiviocommunity.slack.com/","description":"Sosivio Slack Community","__typename":"AdditionalLink"},{"name":"Sosivio Dashboard Overview","url":"https://www.youtube.com/watch?v=VmpAlZ-Uso0","description":"Sosivio Dashboard Overview","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"CategoryGroup"},{"nav_icon":{"dimensions":null,"url":null,"__typename":"PrismicStructuredImage"},"category":"Network Tools","is_new":"false","is_visible_in_nav":null,"nav_description":[{"text":"Gateways, proxies, controllers, and management apps.","__typename":"PrismicStructuredText"}],"hero_text":[{"text":"Network gateways, controllers, and load balancers.","__typename":"PrismicStructuredText"}],"staff_pick_1":{"name":"Netmaker","appId":"61858af5bbad7116be43334c","developerId":"3516","safeName":["netmaker"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/gravitl-netmaker.png","version":"0.20.0","osVersion":"Ubuntu 22.10","tags":["Network Tools"],"support":{"url":"https://netmaker.io","email":"info@netmaker.io","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Netmaker","version":"v0.20.0","website":"https://github.com/gravitl/netmaker","releaseNotes":"","licenseLink":"","licenseType":"SSPL","__typename":"CustomSoftware"},{"name":"Netclient","version":"v0.20.0","website":"https://github.com/gravitl/netclient","releaseNotes":"","licenseLink":"","licenseType":"Apache -2.0","__typename":"CustomSoftware"},{"name":"WireGuard","version":"1.0.20200513-1~20.04.2","website":"https://www.wireguard.com/","releaseNotes":"","licenseLink":"","licenseType":" Apache-2.0","__typename":"CustomSoftware"},{"name":"Docker","version":"1.5-2","website":"https://www.docker.com/","releaseNotes":"","licenseLink":"","licenseType":"Apache-2.0","__typename":"CustomSoftware"},{"name":"Caddy","version":"v2.6.2","website":"https://caddyserver.com/","releaseNotes":"","licenseLink":"","licenseType":"Apache-2.0","__typename":"CustomSoftware"},{"name":"Mosquitto","version":"2.0.11","website":"https://mosquitto.org/","releaseNotes":"","licenseLink":"","licenseType":" Eclipse Public License 2.0","__typename":"CustomSoftware"},{"name":"Grafana","version":"9.2","website":"https://github.com/grafana/grafana","releaseNotes":"","licenseLink":"https://github.com/grafana/grafana/blob/main/LICENSE","licenseType":"GNU","__typename":"CustomSoftware"},{"name":"Prometheus","version":"2.39","website":"https://github.com/prometheus/prometheus","releaseNotes":"","licenseLink":"","licenseType":"Apache-2.0","__typename":"CustomSoftware"},{"name":"CoreDNS","version":"1.8.6","website":"https://github.com/coredns/coredns","releaseNotes":"","licenseLink":"","licenseType":"Apache-2.0","__typename":"CustomSoftware"}],"summary":"Superfast WireGuard VPN. Faster than OpenVPN, ZeroTier, or Tailscale. Remote Access, Mesh VPN, and more.","description":"\u003cp\u003eFollow this \u003ca href=\"https://www.youtube.com/watch?v=xysZRPjmXeM\" rel=\"noopener\" target=\"_blank\"\u003e8-minute video\u003c/a\u003e for getting started with Netmaker to securely connect your droplets and DBs.\u003c/p\u003e\n\u003cp\u003eConnect your droplets and databases across regions with Netmaker, and securely connect to your cloud resources.\u003c/p\u003e\n\u003cp\u003eNetmaker provides secure network access across your globally distributed cloud infrastructure, with speeds up to 10x higher than traditional VPNs.\u003c/p\u003e","gettingStarted":"\u003cp\u003e\u003cimg src=\"https://uploads-ssl.webflow.com/623390d5ead4650d9c03f969/63922121d1a3bcbc6e944232_netmaker_diagram.png\" alt=\"Netmaker Diagram\"\u003e\u003c/p\u003e\n\u003cp\u003eDeploy the Netmaker server, and create high performance virtual overlay networks with the fully featured platform and dashboard.\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://uploads-ssl.webflow.com/623390d5ead4650d9c03f969/639222eee83a395e9035948d_netmaker-graph-page.png\" alt=\"Nodes Graph\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://uploads-ssl.webflow.com/623390d5ead4650d9c03f969/639222f3f875dfb4d6e5763d_netmaker-nodes-page.png\" alt=\"Nodes List\"\u003e\u003c/p\u003e\n\u003cp\u003eNetmaker saves organizations substantially on the cost of managing complex networks by eliminating the need for expensive networking equipment and clunky old-school VPNs. The platform is software-defined, and automates manual processes.\u003c/p\u003e\n\u003cp\u003eNetmaker accelerates modern digital business practices, from cloud native infrastructure to agile development and DevOps. Netmaker enables application connectivity, and helps your application to be deployed anywhere.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.digitalocean.com/blog/secure-network-connectivity-distributed-clouds\"\u003e\u003cem\u003eLearn more about how Netmaker can enable secure access across your Digital Ocean resources, without sacrificing on cost, security, or flexibility.\u003c/em\u003e\u003c/a\u003e\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"get-started\"\u003eGet Started\u003c/h2\u003e\n\u003cp\u003eTo Get Started, check out \u003ca href=\"https://www.youtube.com/watch?v=xysZRPjmXeM\"\u003ethis video\u003c/a\u003e, which will cover:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eInstallation\u003c/li\u003e\n\u003cli\u003eConnecting Droplets Across Regions\u003c/li\u003e\n\u003cli\u003eAccessing Managed Databases Across Regions\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eIMPORTANT: Notes on Installation\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAs of 0.18, three additional subdomains are required. In addition to those listed in the above video, please add DNS entries for \u003cstrong\u003estun.domain\u003c/strong\u003e, \u003cstrong\u003eturn.domain\u003c/strong\u003e, and \u003cstrong\u003eturnapi.domain.\u003c/strong\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eTo learn more, follow the links to these DigitalOcean learning resources:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://docs.digitalocean.com/developer-center/connect-digitalocean-droplets-across-regions/\"\u003eConnect DigitalOcean Droplets Across Regions\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.digitalocean.com/developer-center/secure-remote-access-to-digitalocean-with-netmaker/\"\u003eSecure Remote Access to DigitalOcean with Netmaker\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.digitalocean.com/developer-center/connect-to-digitalocean-managed-databases-from-anywhere-securely/\"\u003eConnect to DigitalOcean Managed Databases from Anywhere, Securely\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jkpedo/container-blueprints/tree/doks-vpn/DOKS-netmaker\"\u003eSetting up DOKS cross-cluster connectivity using Netmaker, Static Routes Operator \u0026amp; NodePorts\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=gravitl-netmaker","addonSlug":null,"imageLabel":"gravitl-netmaker","imageId":131787130,"externalLabel":null,"additionalLinks":[{"name":"Documentation","url":"https://docs.netmaker.org","description":"Netmaker Documentation","__typename":"AdditionalLink"},{"name":"GitHub","url":"https://github.com/gravitl/netmaker","description":"Netmaker GitHub","__typename":"AdditionalLink"},{"name":"Licensing","url":"https://dashboard.license.netmaker.io","description":"Purchase a license if additional limits are required.","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_2":{"name":"Zabbix proxy","appId":"5fd20e5bf7b08f0714b51982","developerId":"43","safeName":["zabbix-proxy"],"created":1607601755000,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/zabbix-zabbixproxy-8.svg","version":"5.0.6","osVersion":"CentOS 8","tags":["Monitoring"],"support":{"url":"https://www.zabbix.com/support","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Zabbix proxy","version":"5.0.6","website":"","releaseNotes":"https://www.zabbix.com/rn/rn5.0.6","licenseLink":"https://opensource.org/licenses/GPL-2.0","licenseType":"GPLv2","__typename":"CustomSoftware"},{"name":"OpenJDK","version":"1.8.0.272","website":"","releaseNotes":"http://openjdk.java.net/projects/jdk8/","licenseLink":"http://openjdk.java.net/legal/gplv2+ce.html","licenseType":"GNU GPLv2","__typename":"CustomSoftware"}],"summary":"An enterprise-class open source distributed monitoring solution designed to monitor and track performance and availability of network servers, devices, services and other IT resources","description":"\u003cp\u003eZabbix is an enterprise-class open source distributed monitoring solution designed to monitor and track performance and availability of network servers, devices, services and other IT resources. Zabbix is an all-in-one monitoring solution that allows users to collect, store, manage and analyze information received from IT infrastructure, as well as display on-screen, and alert by e-mail, SMS or Jabber when thresholds are reached. Zabbix allows administrators to recognize server and device problems within a short period of time and therefore reduces the system downtime and risk of system failure. The monitoring solution is being actively used by SMBs and large enterprises across all industries and almost in every country of the world.\u003c/p\u003e","gettingStarted":"\u003cp\u003eAfter the deployment of the Zabbix One-Click application as a new droplet, please connect to your Zabbix proxy via SSH and configure Zabbix proxy by following these \u003ca title=\"Instructions\" href=\"https://www.zabbix.com/documentation/current/manual/distributed_monitoring/proxies#configuration\"\u003einstructions\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eFurther information can be found at:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca title=\"Zabbix Documentation\" href=\"https://www.zabbix.com/manuals\"\u003eZabbix Documentation\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca title=\"Zabbix Forum\" href=\"https://www.zabbix.com/forum\"\u003eZabbix Forum\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca title=\"Zabbix Community Channels\" href=\"https://www.zabbix.com/community\"\u003eZabbix Community Channels\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca title=\"Zabbix Professional Services\" href=\"https://www.zabbix.com/services\"\u003eInquiring about Zabbix Professional Services\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=zabbix-zabbixproxy-8","addonSlug":null,"imageLabel":"zabbix-zabbixproxy-8","imageId":74871458,"externalLabel":null,"additionalLinks":[{"name":"Zabbix Certified Training","url":"https://www.zabbix.com/training","description":"Learn how to use all power features of Zabbix in most efficient and professional way in just few days","__typename":"AdditionalLink"},{"name":"Order Turn-Key Solution directly from Zabbix","url":"https://www.zabbix.com/turn_key_solution","description":"Deploy Zabbix quickly and professionally from scratch or migrate from a legacy tool all done by Zabbix team","__typename":"AdditionalLink"},{"name":"Webinars","url":"https://www.zabbix.com/webinars","description":"Attend webinars to get a quick introduction to Zabbix","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_3":{"name":"BotGuard GateKeeper","appId":"e2ac303218cabac60e4dfe45","developerId":"3601","safeName":["botguard-gatekeeper"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/botguardo-botguardgatekeep.png","version":"1.3.3","osVersion":"Debian 12 (bookworm)","tags":["Security"],"support":{"url":"https://botguard.net/en/support","email":"support@botguard.net","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"Nginx (OpenSSL 3.0 and BotGuard patches)","version":"1.27.0","website":"http://nginx.org","releaseNotes":"","licenseLink":"http://nginx.org/LICENSE","licenseType":"BSD-2-clause license","__typename":"CustomSoftware"},{"name":"Redis","version":"6.0","website":"https://redis.io","releaseNotes":"","licenseLink":"https://redis.io/docs/about/license/","licenseType":"BSD-3-clause license","__typename":"CustomSoftware"},{"name":"BotGuard GateKeeper","version":"1.3.3","website":"https://botguard.net","releaseNotes":"","licenseLink":"","licenseType":"Proprietary","__typename":"CustomSoftware"}],"summary":"Protective reverse proxy built around state-of-the-art bot and hacker detection technology. Hide your infrastructure and protect it from L7 DDoS attacks. Batteries included: comes with nice security and performance features: WAF, HTTP/3 (aka QUIC), TLS 1.3, 0-RRT, automatic SSL certificate management, content caching and rate limiting.","description":"\u003cp\u003eBotGuard GateKeeper protects your website from the full range of automated attacks, like DDoS or brute force, and eliminates bad bot-induced traffic from your business.\u003c/p\u003e\n\u003cp\u003eThis solution is an advanced reverse proxy built around state of the art bot and hacker detection technology that hides your infrastructure and protects it from L7 DDoS attacks. It also offers a wide range of security and performance features such as WAF, HTTP/3 (QUIC), TLS 1.3, 0-RRT, automatic SSL certificate management, content caching and rate limiting.\u003c/p\u003e\n\u003cp\u003eYou will also prevent server overload and diminish your web server’s network traffic to provide a more pleasant user experience with our straightforward and easy to install GateKeeper.\u003c/p\u003e","gettingStarted":"\u003ch1 id=\"getting-started\"\u003eGetting started\u003c/h1\u003e\n\u003cp\u003eThe configuration of BotGuard GateKeeper is simple, fast and straightforward. Everything is taken care of via browser.\u003c/p\u003e\n\u003cp\u003eAs a prerequisite, you’ll need an \u003cstrong\u003eAPI key\u003c/strong\u003e, which can be found at \u003ca href=\"https://botguard.net/en/account/credentials\"\u003eyour BotGuard dashboard.\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eType the IP address of your droplet in browser address bar: http://your_droplet_public_ipv4 and hit Enter. The web application will ask you to enter your BotGuard API key or register a new BotGuard account to get one. The API key would be used as a password for further GateKeeper management.\u003c/p\u003e\n\u003cp\u003eAfter entering a valid API key, the page will refresh and prompt you to enter the username and password. Please use \u003cstrong\u003e\"botguard\"\u003c/strong\u003e as the username and your \u003cstrong\u003eAPI key\u003c/strong\u003e as the password.\u003c/p\u003e\n\u003ch1 id=\"domain-setup\"\u003eDomain setup\u003c/h1\u003e\n\u003col\u003e\n\u003cli\u003eSelect \u003cstrong\u003eDomains\u003c/strong\u003e in the top menu\u003c/li\u003e\n\u003cli\u003eClick \u003cstrong\u003eAdd domain\u003c/strong\u003e button\u003c/li\u003e\n\u003cli\u003eEnter your web application domain name and add the subdomains, if they exist\u003c/li\u003e\n\u003cli\u003eDefine your application servers IP addresses in the \u003cstrong\u003eUpstreams\u003c/strong\u003e section. BotGuard GateKeeper will try to guess your upstream addresses based on the domain DNS records\u003c/li\u003e\n\u003cli\u003eSelect SSL certificate provider or upload your own certificate\u003c/li\u003e\n\u003cli\u003eSelect additional caching and security settings and save the changes. Don’t forget to enable BotGuard bot protection!\u003c/li\u003e\n\u003cli\u003ePoint your domain A/AAAA records to the BotGuard GateKeeper instance IP address\u003c/li\u003e\n\u003c/ol\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=botguardo-botguardgatekeep","addonSlug":null,"imageLabel":"botguardo-botguardgatekeep","imageId":159737570,"externalLabel":null,"additionalLinks":[{"name":"Cloud-based Website Protection","url":"https://botguard.net/en/home","description":"How does the protection work?","__typename":"AdditionalLink"},{"name":"BotGuard Rules Editor Explained","url":"https://docs.botguard.net/rule-editor/","description":"How to write your own custom rules","__typename":"AdditionalLink"},{"name":"FAQ","url":"https://docs.botguard.net/faq/","description":"Frequently Asked Questions","__typename":"AdditionalLink"},{"name":"BotGuard documentation","url":"https://docs.botguard.net","description":"Useful information about our service, bots and web traffic management","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_4":{"name":"Haltdos Community WAF","appId":"9c66abbe2a38e11785f0d25d","developerId":"3613","safeName":["haltdos-community-waf"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/haltdos-haltdoscommunity.png","version":"1.0.4","osVersion":"Ubuntu 22.04","tags":["Security"],"support":{"url":"https://www.haltdos.com/","email":"support@haltdos.com","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":null,"summary":"One of its kind, Haltdos brings you user friendly Web application firewall as free to access for all, in the form of Haltdos Community Edition (CE). The Community Edition provides 360 degrees of website security from OWASP 10 threats, XSS, SQL and other web-based threats.\n","description":"\u003cp\u003eHaltdos WAF CE provides a simple web app GUI based WAF Configuration, which makes management and monitoring easy. Haltdos WAF also provides bot protection to mitigate bot attacks and provides Geo Fencing capabilities, which can be used to smartly limit access to their web applications as per the geographic locations. Haltdos WAF provides load balancing features to distribute the traffic across multiple server farms.\u003c/p\u003e","gettingStarted":"\u003cp\u003eAccess Haltdos Community WAF at \u003cstrong\u003e\u003ca href=\"https://your_droplet_public_ipv4:9000\"\u003ehttps://your_droplet_public_ipv4:9000 \u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=haltdos-haltdoscommunity","addonSlug":null,"imageLabel":"haltdos-haltdoscommunity","imageId":158834591,"externalLabel":null,"additionalLinks":[{"name":"Haltdos Community WAF Documentation","url":"https://docs.haltdos.com/community","description":"Documentation Website to get support regarding Haltdos Community WAF","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"__typename":"CategoryGroup"},{"nav_icon":{"dimensions":null,"url":null,"__typename":"PrismicStructuredImage"},"category":"Security","is_new":"false","is_visible_in_nav":null,"nav_description":[{"text":"Applications that help you secure your applications.","__typename":"PrismicStructuredText"}],"hero_text":[{"text":"Applications that help you secure your applications.","__typename":"PrismicStructuredText"}],"staff_pick_1":{"name":"Acra","appId":"5c9b94b6cc34df11510e9290","developerId":"30","safeName":["acra"],"created":1553700022000,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/acra-logo.svg","version":"0.85.0","osVersion":"Ubuntu 18.04","tags":["Security","Open Source"],"support":{"url":"https://github.com/cossacklabs/acra","email":"dev@cossacklabs.com","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"AcraServer CE","version":"0.85.0","website":"https://www.cossacklabs.com/acra","releaseNotes":"https://github.com/cossacklabs/acra/releases/tag/0.85.0","licenseLink":"https://github.com/cossacklabs/acra/blob/master/LICENSE","licenseType":"Apache 2.0","__typename":"CustomSoftware"},{"name":"Docker CE","version":"18.09.3","website":"https://docker.com","releaseNotes":"https://docs.docker.com/release-notes/docker-ce/","licenseLink":"https://github.com/docker/docker/blob/master/LICENSE","licenseType":"Apache 2","__typename":"CustomSoftware"},{"name":"OpenSSL","version":"1.1.0g","website":"https://www.openssl.org","releaseNotes":"https://www.openssl.org/news/changelog.html","licenseLink":"https://www.openssl.org/source/apache-license-2.0.txt","licenseType":"Apache 2","__typename":"CustomSoftware"}],"summary":"Database encryption and intrusion prevention for PgSQL and MySQL (including DigitalOcean-managed Postgres)","description":"\u003cp\u003e\u003ca rel=\"noopener\" target=\"_blank\" href=\"https://www.cossacklabs.com/acra/\"\u003eAcra encryption suite\u003c/a\u003e — data protection in distributed applications, web and mobile apps that use PostgreSQL/MySQL RDBMS.\u003c/p\u003e\n\u003cp\u003eAcra provides selective encryption, multi-layered access control, SQL firewall (SQL injections prevention), database leakage prevention, and intrusion detection capabilities in a convenient, developer-friendly package. See the full list of features in \u003ca rel=\"noopener\" target=\"_blank\" href=\"https://github.com/cossacklabs/acra\"\u003eAcra repository\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eAcra's cryptographic design ensures that no secret (password, key, etc.) leaked from the application or database will be sufficient for decryption of the protected data chunks that originate from it.\u003c/p\u003e\n\u003cp\u003eAcra minimises the attack surface, detects unauthorised behaviour, and prevents the leakage, informing operators of the incident underway. Acra provides a solid foundation for encryption-demanding regulations. As an additional configuration for better security, Acra supports client-side encryption (using client-side AcraWriter libraries).\u003c/p\u003e\n\u003cp\u003eAcraServer is a network service that works as a database proxy: it transparently sits between your application and the database and silently listens to all the traffic coming to and from the database. AcraServer monitors the incoming SQL requests and blocks the unwanted ones using the built-in configurable SQL firewall. On receiving SQL queries, AcraServer parses each query, encrypts the desired values into AcraStructs (special cryptographic containers), and passes the modified queries to the database and the database response – back to the client application.\u003c/p\u003e\n\u003cp\u003eWhen the client application wants to read the data, it sends a read query to the database (via AcraServer). Upon retrieving the database response, AcraServer tries to detect AcraStructs, decrypts them, and returns the decrypted data to the application.\u003c/p\u003e","gettingStarted":"\u003cp\u003eThis 1-Click App contains the most important component of Acra encryption suite — AcraServer (there exist more Acra components that allow supporting extra security features like client-side encryption, NoSQL databases, stronger transport encryption, key rotation, and rollback). Acra 1-Click app is the ideal minimum for learning and exploring with Acra.\u003c/p\u003e\n\u003cp\u003eThere is a detailed \u003ca href=\"https://www.cossacklabs.com/blog/install-acra-digitalocean-marketplace-tutorial.html\"\u003etutorial to help you install Acra 1-click App through DigitalOcean Marketplace\u003c/a\u003e in our blog.\u003c/p\u003e\n\u003ch3\u003eAcraServer configuration options\u003c/h3\u003e\n\u003cp\u003eAcraServer can work in different modes, depending on the infrastructure: server-side encryption (Transparent proxy mode, where AcraServer both encrypts and decrypts the data) or client-side encryption (where client application encrypts the data and AcraServer only decrypts it).\u003c/p\u003e\n\u003cp\u003eAcra 1-Click App has an interactive configuration script that prepares AcraServer for work as a Transparent encryption proxy with PostgreSQL database.\u003c/p\u003e\n\u003cp\u003eRead about other possible configuration options in \u003ca rel=\"noopener\" target=\"_blank\" href=\"https://github.com/cossacklabs/acra#protecting-data-in-sql-databases-using-acraserver\"\u003eAcra's GitHub repository\u003c/a\u003e or check out the \u003ca rel=\"noopener\" target=\"_blank\" href=\"https://github.com/cossacklabs/acra-engineering-demo/\"\u003eexample applications\u003c/a\u003e for typical infrastructures (using Python and Ruby web applications, AcraServer and various databases).\u003c/p\u003e\n\u003ch3\u003eConfiguring AcraServer in Transparent encryption mode with an interactive script\u003c/h3\u003e\n\u003cp\u003eIn Transparent encryption mode, AcraServer works as database proxy, encrypting and decrypting sensitive data from SQL requests.\u003c/p\u003e\n\u003cp\u003eThe high-level scheme looks like this:\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://www.cossacklabs.com/files/img/acraserver-digital-ocean-scheme-cossack-labs.png\" style=\"max-width: 100%;\"\u003e\u003c/p\u003e\n\u003cp\u003eWe used DigitalOcean PostgreSQL as a database.\u003c/p\u003e\n\u003cp\u003eTo get this scheme to work, we will configure each component step-by-step:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVM\u003c/li\u003e\n\u003cul\u003e\n\u003cli\u003ehostname\u003c/li\u003e\n\u003cli\u003efirewall\u003c/li\u003e\n\u003c/ul\u003e\n\u003cli\u003eAcraServer (with the help of this script):\u003c/li\u003e\n\u003cul\u003e\n\u003cli\u003eencryption keys\u003c/li\u003e\n\u003cli\u003eTLS certificates\u003c/li\u003e\n\u003cli\u003econnection to DB\u003c/li\u003e\n\u003cli\u003etables and columns that will be encrypted (special configuration file known as \u003ccode\u003eencryptor_config_file\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cli\u003eDatabase:\u003c/li\u003e\n\u003cul\u003e\n\u003cli\u003econvert columns that you plan to encrypt to binary type\u003c/li\u003e\n\u003c/ul\u003e\n\u003cli\u003eApplication:\u003c/li\u003e\n\u003cul\u003e\n\u003cli\u003econnection to AcraServer instead of Database\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguring DigitalOcean PostgreSQL database\u003c/h3\u003e\n\u003ch4\u003e1. Create \u003ca rel=\"noopener\" target=\"_blank\" href=\"https://www.digitalocean.com/products/managed-databases/\"\u003eDigitalOcean cloud PostgreSQL database\u003c/a\u003e, create a role and a database with desired names.\u003c/h4\u003e\n\u003cp\u003eYou'll get credentials that we'll use in the next steps:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* DB host\n* DB port\n* DB name\n* ROLE name\n* ROLE password\n* TLS CA certificate\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch4\u003e2. Connect directly to the database and create a test table.\u003c/h4\u003e\n\u003cpre\u003e\u003ccode\u003e\nPGSQL_USER=\"your_login\"\nPGSQL_PASSWORD=\"your_pgsql_password\"\nPGSQL_HOST=\"DB_host\"\nPGSQL_PORT=\"DB_port\"\npsql \"postgresql://${PGSQL_USER}:${PGSQL_PASSWORD}@${PGSQL_HOST}:${PGSQL_PORT}/${PGSQL_USER}?sslmode=require\"\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eCreate a table that we'll use in this example:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nCREATE TABLE users(\n id serial PRIMARY KEY,\n name VARCHAR (50) UNIQUE NOT NULL,\n password VARCHAR (50) NOT NULL,\n email VARCHAR (355) UNIQUE NOT NULL\n);\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eConfiguring AcraServer\u003c/h3\u003e\n\u003cp\u003eConnect to the newly created AcraServer 1-Click App:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nAS_HOST=\"AcraServer_VM_IP\"\nssh root@$AS_HOST\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eRight after the automatic connection is established, configuration script will start. This script will perform most of these actions for you. You can run this configurer as many times as necessary, in case you need to change something: \u003ccode\u003eserver_configure.py\u003c/code\u003e\u003c/p\u003e\n\u003ch4\u003eStep by step answer the questions:\u003c/h4\u003e\n\u003cp\u003e1.1. Hostname\u003c/p\u003e\n\u003cp\u003e1.2. Hosts that are allowed to connect. Put here the host, which will be connected to the database through AcraServer. Do not forget to include your own host if you plan to play with the infrastructure manually.\u003c/p\u003e\n\u003cp\u003eYou can get your external IP using:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\ndig @resolver1.opendns.com ANY myip.opendns.com +short\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e1.3. Configure TLS. DigitalOcean generates individual TLS chain for each PostgreSQL instance. That chain use self-signed CA certificate. AcraServer needs this CA to be able to verify the certificate of the database server. Paste the certificate into the configurator when you're prompted for it.\u003c/p\u003e\n\u003cp\u003e1.4. Configure the connection to the database: host and port.\u003c/p\u003e\n\u003cp\u003e1.5. Configure the structure of tables in your database. For this example, use:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTable: \u003ccode\u003eusers\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eColumns (\u003ccode\u003ecolumn1 column2 ...\u003c/code\u003e): \u003ccode\u003eid name password email\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEncrypted columns (\u003ccode\u003ecolumn1 column2 ...\u003c/code\u003e): \u003ccode\u003ename password email\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAfter that, you'll get a server that's fully configured and is ready to work.\u003c/p\u003e\n\u003ch3\u003eConfiguring client application\u003c/h3\u003e\n\u003cp\u003eConvert the fields in the database table that you plan to encrypt into binary format:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nPGSQL_USER=\"your_login\"\nPGSQL_PASSWORD=\"your_pgsql_password\"\nPGSQL_HOST=\"DB_host\"\nPGSQL_PORT=\"DB_port\"\npsql \"postgresql://${PGSQL_USER}:${PGSQL_PASSWORD}@${PGSQL_HOST}:${PGSQL_PORT}/${PGSQL_USER}?sslmode=require\"\n\u003c/code\u003e\u003c/pre\u003e\n\u003cpre\u003e\u003ccode\u003e\nALTER TABLE users\nALTER COLUMN name TYPE bytea USING name::bytea,\nALTER COLUMN password TYPE bytea USING password::bytea,\nALTER COLUMN email TYPE bytea USING email::bytea;\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can now work with your database transparently through AcraServer. Just like if you were working with it directly.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nPGSQL_USER=\"your_login\"\nPGSQL_PASSWORD=\"your_pgsql_password\"\nAS_HOST_FQDN=\"FQDN_of_host\"\npsql \"postgres://${PGSQL_USER}:${PGSQL_PASSWORD}@${AS_HOST_FQDN}:9393/defaultdb?sslmode=require\"\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eUsing AcraServer 1-Click App in production settings\u003c/h3\u003e\n\u003cp\u003eConfigure Acra 1-Click App to use it for your exact needs and situation.\u003c/p\u003e\n\u003cp\u003eIf you use \u003cstrong\u003eMySQL, PostgreSQL, or MariaDB\u003c/strong\u003e – configure AcraServer to connect to your specific database. If you configure server-side encryption, almost no changes in your backend app are required (you only need to change the type of all encrypted fields to binary). If you prefer client-side encryption, Acra has \u003ca rel=\"noopener\" target=\"_blank\" href=\"https://github.com/cossacklabs/acra#availability\"\u003eclient-side libraries (AcraWriter)\u003c/a\u003e for 10+ languages and platforms (with new ones being added frequently).\u003c/p\u003e\n\u003cp\u003eIf you use \u003cstrong\u003eNoSQL database or any other file storage\u003c/strong\u003e, you can use Acra for client-side encryption. Download \u003ca rel=\"noopener\" target=\"_blank\" href=\"https://github.com/cossacklabs/acra#availability\"\u003eAcraWriter library\u003c/a\u003e for your backend app and deploy \u003ca rel=\"noopener\" target=\"_blank\" href=\"https://github.com/cossacklabs/acra#protecting-data-in-any-file-storage-using-acrawriter-and-acratranslator\"\u003eAcraTranslator\u003c/a\u003e into your infrastructure to decrypt the data.\u003c/p\u003e\n\u003cp\u003eFor production use, we suggest that you configure Acra directly from configuration files and follow the configuration-as-a-code approach (instead of using the \u003ccode\u003eserver_configure.py\u003c/code\u003e script above). You’ll need to generate your own keys, connect to your own database, use strong TLS, configure the SQL firewall, and preferably use client-side encryption.\u003c/p\u003e\n\u003cp\u003ePlease refer to \u003ca rel=\"noopener\" target=\"_blank\" href=\"https://github.com/cossacklabs/acra\"\u003eAcra's configuration guides and examples\u003c/a\u003e and \u003ca rel=\"noopener\" target=\"_blank\" href=\"https://docs.cossacklabs.com/products/acra/\"\u003eAcra’s documentation\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eHead over to a detailed \u003ca href=\"https://www.cossacklabs.com/blog/install-acra-digitalocean-marketplace-tutorial.html\"\u003etutorial for an easy start with Acra 1-click App on DigitalOcean Marketplace\u003c/a\u003e.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=acra-18-04#choose-droplet-size","addonSlug":null,"imageLabel":"acra-18-04","imageId":47220441,"externalLabel":null,"additionalLinks":null,"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_2":{"name":"1Password SCIM bridge","appId":"5d89085f547de13df351cdc6","developerId":"3287","safeName":["1password-scim-bridge"],"created":0,"type":"kubernetes","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/1password-scim-logo.svg","version":"2.11.4","osVersion":"","tags":["Security","Kubernetes"],"support":{"url":"https://support.1password.com/scim","email":"support+business@1password.com","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"1Password SCIM bridge","version":"2.9.5","website":"https://support.1password.com/scim/","releaseNotes":"https://app-updates.agilebits.com/product_history/SCIM#v209041","licenseLink":"https://support.1password.com/scim/","licenseType":"Proprietary","__typename":"CustomSoftware"},{"name":"Redis","version":"7.2.4","website":"https://redis.io/","releaseNotes":"https://docs.redis.com/latest/rs/release-notes/","licenseLink":"https://redis.io/topics/license","licenseType":"BSD 3-clause","__typename":"CustomSoftware"}],"summary":"Integrate 1Password with your identity provider for automatic provisioning","description":"\u003cp\u003eWith 1Password Business, you can automate many common administrative tasks using the 1Password SCIM bridge. It uses the System for Cross-domain Identity Management (SCIM) protocol to connect 1Password with your existing identity provider, like Azure Active Directory or Okta, so you can:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ecreate users and groups (including automated account confirmation),\u003c/li\u003e\n\u003cli\u003egrant and revoke access to groups,\u003c/li\u003e\n\u003cli\u003eand suspend deprovisioned users\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWith this 1-Click App, you’ll quickly set up and deploy the SCIM bridge on a cluster in your own environment, so the encryption keys for your account are only available to you and no one else. To set up and deploy the SCIM bridge, you’ll need:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eadministrative access in 1Password Business\u003c/li\u003e\n\u003cli\u003ethis 1-Click App with publicly accessible static LoadBalancer IP address\u003c/li\u003e\n\u003cli\u003ea DNS record to allow for encrypted (HTTPS) communication to the SCIM bridge\u003c/li\u003e\n\u003c/ul\u003e","gettingStarted":"\u003cp\u003eAfter deploying the 1Password SCIM bridge, navigate to the IP address of the load balancer created by Kubernetes using your web browser, and follow the on-screen instructions. For more details on how to deploy and utilize your 1Password SCIM bridge app, you can read more at\u0026nbsp;\u003ca href=\"https://support.1password.com/scim-deploy-digitalocean/\"\u003ehttps://support.1password.com/scim-deploy-digitalocean/\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eRefer to\u0026nbsp;\u003ca href=\"https://support.1password.com/scim\"\u003ehttps://support.1password.com/scim\u003c/a\u003e\u0026nbsp;if you have any issues, and contact\u0026nbsp;\u003ca href=\"mailto:support+business@1password.com\"\u003esupport+business@1password.com\u003c/a\u003e\u0026nbsp;if you have any questions.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/kubernetes/clusters/new?addonslug=op-scim-bridge\u0026nodePools=s-1vcpu-2gb%3A3","addonSlug":"op-scim-bridge","imageLabel":"","imageId":null,"externalLabel":null,"additionalLinks":[{"name":"Release Notes","url":"https://app-updates.agilebits.com/product_history/SCIM","description":"1Password SCIM bridge release notes","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_3":null,"staff_pick_4":null,"__typename":"CategoryGroup"},{"nav_icon":{"dimensions":null,"url":null,"__typename":"PrismicStructuredImage"},"category":"Storage","is_new":"false","is_visible_in_nav":null,"nav_description":[{"text":"Data storage platforms and apps.","__typename":"PrismicStructuredText"}],"hero_text":[{"text":"Data storage platforms and apps.","__typename":"PrismicStructuredText"}],"staff_pick_1":{"name":"OpenEBS","appId":"5d72c6b929a6ab50ccbc888a","developerId":"3279","safeName":["openebs-1"],"created":1567803065000,"type":"kubernetes","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/digitalocean-openebs-18-04.svg","version":"3.0.0","osVersion":"","tags":["Kubernetes"],"support":{"url":"https://app.slack.com/client/T09NY5SBT/CUAKPFU78","email":"support@mayadata.io","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"OpenEBS","version":"3.0.0","website":"","releaseNotes":"https://github.com/openebs/openebs/releases","licenseLink":"https://github.com/openebs/openebs/blob/master/LICENSE","licenseType":"Apache 2","__typename":"CustomSoftware"}],"summary":"Cloud native Container Attached Storage (CNS CAS) for Kubernetes","description":"\u003cp\u003eContainer Attached Storage – OpenEBS is a Kubernetes native, 100% open source and 100% in userspace Cloud Native Storage (CNS) solution for container stateful applications in Kubernetes. OpenEBS is currently a \u003ca title=\"CNCF Sandbox project\" href=\"https://www.prnewswire.com/news-releases/openebs-accepted-into-cncf-and-openebs-0-9-released-300853066.html\" rel=\"noopener\" target=\"_blank\"\u003eCNCF Sandbox project\u003c/a\u003e and the most active Container Attached Storage (CAS) solution with the biggest user base and community.\u003c/p\u003e\n\u003cp\u003eOpenEBS itself is deployed as just another container on your host and enables storage services that can be designated on a per pod, application, cluster or container level, including: Your stateful data can persistence across nodes, dramatically reducing time spent rebuilding failed workloads for example. Synchronization of data across availability zones and cloud providers improving availability and decreasing attach/detach times for example.\u003c/p\u003e\n\u003cp\u003eOpenEBS vision is simple: let storage and storage services for persistent workloads be fully integrated into the environment so that each team and workload benefits from granularity of control and Kubernetes native behavior. You can find out more about OpenEBS at \u003ca href=\"https://openebs.io/\" rel=\"noopener\" target=\"_blank\"\u003eopenebs.io\u003c/a\u003e. Commercial support options for OpenEBS is provided by MayaData, see \u003ca title=\"https://mayadata.io/\" href=\"https://mayadata.io/\" rel=\"noopener\" target=\"_blank\"\u003emayadata.io\u003c/a\u003e for additional details.\u003c/p\u003e\n\u003ch4 id=\"minimum-and-recommended-configuration\"\u003eMinimum and Recommended Configuration\u003c/h4\u003e\n\u003cp\u003eNote:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThis stack requires a minimum configuration of 1 Node at the $10/month plan (2GB memory / 1 vCPU) for LocalPV. \u003c/li\u003e\n\u003cli\u003eFor Jiva or cStor,the recommended configuration is 3 Nodes at the $20/month plan (4GB memory / 2 vCPUs) or higher and iSCSI should be installed and enabled on all worker nodes. 3 Node cluster is required to provide data high availability in case of node failures.\u003c/li\u003e\n\u003c/ul\u003e","gettingStarted":"\u003cp\u003eAfter you have successfully deployed OpenEBS, then downloaded your kube config file, and are able to successfully connect to your DigitalOcean Kubernetes cluster (see \u003ca href=\"https://cloud.digitalocean.com/kubernetes/clusters/\"\u003ehttps://cloud.digitalocean.com/kubernetes/clusters/\u003c/a\u003e if you haven’t connected to your cluster) follow the instructions below to start using OpenEBS to manage your Container Attached Storage.\u003c/p\u003e\n\u003ch4 id=\"verifying-openebs-pods\"\u003eVerifying OpenEBS Pods\u003c/h4\u003e\n\u003cp\u003eVerify the cluster is running OpenEBS pods in the \u003ccode\u003eopenebs\u003c/code\u003e namespace as expected:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ekubectl get pod -n openebs -l openebs.io/version=3.0.0\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou should see a list of pods running in the cluster similar to the following:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eNAME READY STATUS RESTARTS AGE\nopenebs-localpv-provisioner-766d5f8b5d-glnd9 1/1 Running 0 4m37s\nopenebs-ndm-42zcs 1/1 Running 0 4m37s\nopenebs-ndm-9fw55 1/1 Running 0 4m37s\nopenebs-ndm-flfsg 1/1 Running 0 4m37s\nopenebs-ndm-operator-766cb8b878-qcbqg 1/1 Running 0 4m37s\u003c/code\u003e\u003c/pre\u003e\n\u003ch4 id=\"verifying-openebs-storage-classes\"\u003eVerifying OpenEBS Storage Classes\u003c/h4\u003e\n\u003cp\u003eAfter verifying OpenEBS pods are running, you can check the OpenEBS Storage Classes:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ekubectl get sc\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou should see a list of default OpenEBS storage classes and DigitalOcean storage classes similar to the following:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eNAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE\ndo-block-storage (default) dobs.csi.digitalocean.com Delete Immediate true 9m31s\nopenebs-device openebs.io/local Delete WaitForFirstConsumer false 4m52s\nopenebs-hostpath openebs.io/local Delete WaitForFirstConsumer false 4m52s\u003c/code\u003e\u003c/pre\u003e\n\u003ch4 id=\"configuring-storage-pools\"\u003eConfiguring Storage Pools\u003c/h4\u003e\n\u003cp\u003eFrom here you're ready to start configuring your Storage Pools. Please visit \u003ca href=\"https://github.com/openebs/cstor-operators/blob/master/docs/quick.md\"\u003eOpenEBS Getting Started Documentation\u003c/a\u003e for configuring Storage Pools and more.\u003c/p\u003e\n\u003cp\u003eIn case you are using OpenEBS Dynamic LocalPV Provisioner please visit \u003ca href=\"https://docs.openebs.io/docs/next/localpv.html\"\u003eOpenEBS Local PV concepts\u003c/a\u003e\u003c/p\u003e\n\u003ch2 id=\"managing-openebs\"\u003eManaging OpenEBS\u003c/h2\u003e\n\u003ch3 id=\"updating\"\u003eUpdating\u003c/h3\u003e\n\u003cp\u003eTo update your installation of OpenEBS\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003ehelm repo add openebs https://openebs.github.io/charts\u003c/code\u003e\u003c/pre\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003ehelm repo update\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eList the details of the currently installed OpenEBS version.\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003ehelm list --namespace openebs\n\nNAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION\nopenebs openebs 1 2021-09-30 03:26:23.783786715 +0000 UTC deployed openebs-3.0.0 3.0.0\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eIf the latest version is available for upgrade, then you can do the OpenEBS upgrade using the following command.\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003ehelm upgrade $NAME openebs/openebs --namespace openebs\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Replace $NAME with the release name from the above command (In this case \u003ccode\u003eopenebs\u003c/code\u003e), then it will upgrade to the latest available version of OpenEBS.\u003c/p\u003e\n\u003ch3 id=\"deleting\"\u003eDeleting\u003c/h3\u003e\n\u003cp\u003eTo delete your installation of OpenEBS\u003c/p\u003e\n\u003cp\u003eFirst, get the name of the release.\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003ehelm list --namespace openebs\n\nNAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION\nopenebs openebs 1 2021-09-30 03:26:23.783786715 +0000 UTC deployed openebs-3.0.0 3.0.0\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eTo uninstall an OpenEBS version.\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"shell language-shell\"\u003ehelm uninstall $NAME --namespace openebs\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Replace $NAME with the release name from the above command (In this case \u003ccode\u003eopenebs\u003c/code\u003e)\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/kubernetes/clusters/new?addonslug=openebs\u0026nodePools=s-1vcpu-2gb%3A3","addonSlug":"openebs","imageLabel":"","imageId":null,"externalLabel":null,"additionalLinks":null,"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_2":{"name":"MariaDB","appId":"444c41f3500206d95a85addc","developerId":"63","safeName":["mariadb"],"created":0,"type":"droplet","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://marketplace-assets.digitalocean.com/logos/mariadb.png","version":"10.6.12","osVersion":"Ubuntu 22.04","tags":["Databases"],"support":{"url":"https://mariadb.com/kb/en/mariadb-support/","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":[{"name":"MariaDB","version":"10.6.12","website":"https://mariadb.org/","releaseNotes":"","licenseLink":"https://mariadb.com/kb/en/mariadb-licenses/","licenseType":"GPL","__typename":"CustomSoftware"}],"summary":"MariaDB Server is one of the most popular open source relational databases. ","description":"\u003cp\u003eThe MariaDB database was born after Oracle acquired MySQL. With the original core MySQL team, we have added functionality to the MariaDB database that competes with legacy database systems like Oracle at a fraction of the cost. We have added columnar analytics, JSON functionality and Oracle compatibility, and we offer a fully managed cloud database service that offers the full breadth of MariaDB database solutions supporting private, public, hybrid and multicloud strategies.\u003c/p\u003e\n\u003cp\u003eToday, the MariaDB database is recognized as a distinct database around the world. MariaDB is the new “M” in the LAMP stack, it’s the default over MySQL in the majority of Linux distributions, it’s replacing Oracle and other legacy databases at increasing rates and it’s available in every cloud. MariaDB is everywhere.\u003c/p\u003e","gettingStarted":"\u003cp\u003eAfter the app is installed, it runs automatically \u003ccode\u003emysql_secure_installation\u003c/code\u003e at the login to finish MariaDB setup process.\u003c/p\u003e","createApp":"https://cloud.digitalocean.com/droplets/new?image=mariadb","addonSlug":null,"imageLabel":"mariadb","imageId":143813694,"externalLabel":null,"additionalLinks":[{"name":"Source Code","url":"https://github.com/digitalocean/droplet-1-clicks/tree/master/mariadb-22-04?utm_source=digitalocean_marketplace_app_listing_page","description":"Packer scripts that were used to build this 1-Click App","__typename":"AdditionalLink"}],"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_3":{"name":"SFTP To Go","appId":"200","developerId":"80","safeName":["sftptogo"],"created":1657783916000,"type":"saas","status":{"value":"approved","__typename":"CustomAppStatus"},"customData":{"icon":"https://mp-saas-service.nyc3.digitaloceanspaces.com/vendor_media/c5ae7612-d92a-4de8-828f-c751c02d38c8.svg","version":"","osVersion":"","tags":["Storage","Add-Ons"],"support":{"url":"","email":"","hours":null,"termsUrl":null,"__typename":"CustomAppDataSupport"},"softwareIncluded":null,"summary":"Managed SFTP/FTPS cloud storage as a service with Amazon S3 and HTTP file access.","description":"\u003ch2 id=\"your-enterprise-grade-cloud-storage\"\u003eYour enterprise-grade cloud storage\u003c/h2\u003e\n\u003ch4 id=\"forget-about-managing-servers-and-storage-simply-sign-up-invite-users-and-start-sharing-and-storing-files-securely\"\u003eForget about managing servers and storage. Simply sign up, invite users and start sharing and storing files securely.\u003c/h4\u003e\n\u003cp\u003e\u003ca href=\"https://sftptogo.com/en\"\u003eEnglish\u003c/a\u003e | \u003ca href=\"https://sftptogo.com/jp\"\u003e日本語\u003c/a\u003e | \u003ca href=\"https://sftptogo.com/kr\"\u003e한국어\u003c/a\u003e\u003c/p\u003e\n\u003ch1 id=\"one-click-setup\"\u003eOne-Click setup\u003c/h1\u003e\n\u003cp\u003eOne click (seriously) to provision SFTP To Go and get immediate access to your SFTP server.\u003c/p\u003e\n\u003ch1 id=\"zero-management\"\u003eZero management\u003c/h1\u003e\n\u003cp\u003eYou don’t have to purchase, manage, or maintain your own SFTP servers and storage devices - we take care of everything!\u003c/p\u003e\n\u003ch1 id=\"enterprise-grade-security\"\u003eEnterprise-Grade Security\u003c/h1\u003e\n\u003cp\u003eWe meet a variety of compliance, auditing, and accountability requirements. You can support multiple geographic data centers for compatibility with various local privacy laws.\u003c/p\u003e\n\u003ch1 id=\"powered-by-amazon-with-s3-access\"\u003ePowered by Amazon with S3 access\u003c/h1\u003e\n\u003cp\u003eSFTP To Go is built on top of Amazon Web Services’ world class cloud platform to provide the best possible availability, scalability and durability.\u003c/p\u003e\n\u003cp\u003eS3 APIs enable you to easily and securely access files.\u003c/p\u003e\n\u003ch1 id=\"share-files-with-3rd-parties-easily\"\u003eShare files with 3rd parties easily\u003c/h1\u003e\n\u003cp\u003eSeamlessly integrate with partners and customers with the SFTP standard protocol to exchange files in any scale securely and easily\u003c/p\u003e\n\u003ch1 id=\"scale-like-a-boss\"\u003eScale like a boss\u003c/h1\u003e\n\u003cp\u003eSFTP To Go scales automatically, handling any number of concurrent sessions and any file size.\u003c/p\u003e\n\u003ch1 id=\"control-your-costs\"\u003eControl your costs\u003c/h1\u003e\n\u003cp\u003eCap your storage and bandwidth quota with a maximum monthly cost. We’ll notify you if you reach your limit.\u003c/p\u003e\n\u003ch1 id=\"automate-your-processes\"\u003eAutomate your processes\u003c/h1\u003e\n\u003cp\u003eConfigure webhooks to get notified when files are uploaded.\u003c/p\u003e\n\u003cp\u003eAutomate file upload, download, delete, and more.\u003c/p\u003e\n\u003ch1 id=\"easy-customization-and-user-management\"\u003eEasy customization and user management\u003c/h1\u003e\n\u003cp\u003eCustomize inbound network rules to control access and available protocols, and manage new and existing user permissions.\u003c/p\u003e\n\u003cp\u003eEasily use your own domain to access your server endpoint. Just CNAME the domain to your SFTP To Go server hostname.\u003c/p\u003e\n\u003ch1 id=\"we-are-here-for-you\"\u003eWe are here for you\u003c/h1\u003e\n\u003cp\u003eHave questions? Need a larger plan? Our dedicated customer service is here to help you, every step of the way!\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://calendly.com/crazy-ant-labs/talk-to-us\"\u003eBook a time →\u003c/a\u003e\u003c/p\u003e\n\u003ch1 id=\"over-1000-satisfied-customers\"\u003eOver 1,000 satisfied customers\u003c/h1\u003e\n\u003cp\u003eYou’re in good company! Hundreds of leading companies and organizations - like \u003cstrong\u003eAbbott\u003c/strong\u003e, \u003cstrong\u003eUNHCR\u003c/strong\u003e, \u003cstrong\u003eLG\u003c/strong\u003e, and \u003cstrong\u003eDoctolib\u003c/strong\u003e - use SFTP To Go as their managed cloud SFTP/FTPS storage service with Amazon S3 and HTTP file access.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.g2.com/products/sftp-to-go/reviews?utm_source=digitalocean-addons\u0026amp;utm_campaign=review-widget\"\u003e\u003cimg src=\"https://res.cloudinary.com/hbdyf1hp4/image/upload/c_scale,h_45/v1657787940/stars_fuorvg.png\" alt=\"SFTP To Go G2 Reviews\"\u003e\u003c/a\u003e \u003ca href=\"https://www.capterra.com/reviews/237425/SFTP-To-Go?utm_source=digitalocean-addons\u0026amp;utm_medium=referral\u0026amp;utm_campaign=rewards-badge\"\u003e\u003cimg src=\"https://res.cloudinary.com/hbdyf1hp4/image/upload/c_scale,h_45/v1657787919/capterra.9da9a63a_upg2ew.png\" alt=\"SFTP To Go Capterra Reviews\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003chr\u003e\n\u003cp\u003e\"SFTP To Go’s easy-to-manage graphical interface is exactly what we were looking for, and not to mention the services’ high availability and customer support. It feels good to know we have someone to count on. The bonus is the S3 storage and APIs.\"\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003ePierrick Jolly\u003c/strong\u003e\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eSoftware Engineer at Hublo\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://sftptogo.com/blog/recup-speaks-the-language-of-corporate-enterprise-using-sftp-to-go/?utm_source=digitalocean\u0026amp;utm_medium=referral\u0026amp;utm_campaign=marketplace-listing\"\u003eRead story →\u003c/a\u003e\u003c/p\u003e\n\u003chr\u003e\n\u003cp\u003e\"We settled on SFTP as an \u003cstrong\u003easynchronous data exchange point\u003c/strong\u003e. Here, SFTP To Go hit the sweet spot in terms of \u003cstrong\u003eeasy setup, reliability and pricing\u003c/strong\u003e.\"\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eCarlo Zottmann\u003c/strong\u003e\u003cbr\u003e\u003c/p\u003e\n\u003cp\u003eCTO at RECUP\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://sftptogo.com/blog/hublo-healthcare-hr-software-integration/?utm_source=digitalocean\u0026amp;utm_medium=referral\u0026amp;utm_campaign=marketplace-listing\"\u003eRead story →\u003c/a\u003e\u003c/p\u003e\n\u003chr\u003e\n\u003cp\u003eSFTP To Go is trusted by \u003cstrong\u003estartups\u003c/strong\u003e and \u003cstrong\u003eenterprises of every size\u003c/strong\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://sftptogo.com/blog/customers/?utm_source=digitalocean\u0026amp;utm_medium=referral\u0026amp;utm_campaign=marketplace-listing\"\u003eRead customer stories →\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe can’t wait for you to try it out!\u003c/p\u003e","gettingStarted":"","createApp":"","addonSlug":null,"imageLabel":"","imageId":null,"externalLabel":null,"additionalLinks":null,"quickAccessEnabled":null,"port":null,"accessPath":null,"__typename":"CustomAppData"},"__typename":"OpenchannelSchemaApp"},"staff_pick_4":null,"__typename":"CategoryGroup"}],"listing_title":[{"text":"Find a Solution","__typename":"PrismicStructuredText"}],"__typename":"MarketplaceCategoryPage"}},"solutionsData":{"GetCatalogSolutionsPages":{"solutions":[{"uid":"ai-models","title":[{"text":"AI 1-Click Models","__typename":"PrismicStructuredText"}],"hero_title":[],"hero_text":[{"text":"Easily deploy popular open source LLMs on powerful yet simple GPU Droplets","__typename":"PrismicStructuredText"}],"__typename":"MarketplaceSolutionPage"},{"uid":"apps-for-startups","title":[{"text":"Apps for Startups","__typename":"PrismicStructuredText"}],"hero_title":[{"text":"Apps for your growing startup","__typename":"PrismicStructuredText"}],"hero_text":[{"text":"Focus on building great things, while you use these 1-Click Apps to build your business.","__typename":"PrismicStructuredText"}],"__typename":"MarketplaceSolutionPage"},{"uid":"web-development-agencies","title":[{"text":"Agencies and Web Dev Shops","__typename":"PrismicStructuredText"}],"hero_title":[{"text":"Apps for agencies and website development shops","__typename":"PrismicStructuredText"}],"hero_text":[{"text":"These 1-Click Apps make it simple to deploy and manage your clients' infrastructure. Save time and resources, while reducing headaches and passing the value onto your clients.","__typename":"PrismicStructuredText"}],"__typename":"MarketplaceSolutionPage"},{"uid":"apps-for-working-from-home-remotely","title":[{"text":"Apps for Working from Home","__typename":"PrismicStructuredText"}],"hero_title":[{"text":"Work more effectively from home or remotely","__typename":"PrismicStructuredText"}],"hero_text":[{"text":"Work more effectively from home or remotely with these 1-Click Apps.","__typename":"PrismicStructuredText"}],"__typename":"MarketplaceSolutionPage"},{"uid":"kubernetes-administration-operations","title":[{"text":"Kubernetes administration and operations","__typename":"PrismicStructuredText"}],"hero_title":[{"text":"1-Click Apps for managing Kubernetes environments","__typename":"PrismicStructuredText"}],"hero_text":[{"text":"Stop spending hours editing YAML and Helm charts. Instead, use these popular, preconfigured solutions to add apps to your Kubernetes cluster in minutes instead of days.","__typename":"PrismicStructuredText"}],"__typename":"MarketplaceSolutionPage"},{"uid":"higher-education","title":[{"text":"Higher Education","__typename":"PrismicStructuredText"}],"hero_title":[{"text":"1-Click Apps for students and educational institutions","__typename":"PrismicStructuredText"}],"hero_text":[{"text":"Stay focused on teaching and learning, instead of managing infrastructure. ","__typename":"PrismicStructuredText"}],"__typename":"MarketplaceSolutionPage"},{"uid":"security-and-vpn","title":[{"text":"Security and VPN","__typename":"PrismicStructuredText"}],"hero_title":[{"text":"Harden and secure your cloud environment","__typename":"PrismicStructuredText"}],"hero_text":[{"text":"Secure your network with a VPN, protect your database, and more, with this selection of 1-Click Apps.","__typename":"PrismicStructuredText"}],"__typename":"MarketplaceSolutionPage"}],"__typename":"MarketplaceSolutionPages"}}},"apolloState":{},"cookies":{},"__N_SSP":true},"page":"/","query":{},"buildId":"24295d1430a724cc619babbb7ebdbd1f0fd1c7e8","runtimeConfig":{"APP_ENV":"production","SITE_URL":"https://marketplace.digitalocean.com","CLOUD_URL":"https://cloud.digitalocean.com","APOLLO_CLIENT_URI":"https://cloud.digitalocean.com","VENDOR_PORTAL_PROXY_URI":"https://api.digitalocean.com/api/v2/vendor-portal","ALGOLIA_MARKETPLACE_INDEX":"production_MARKETPLACE","GOOGLE_TAG_MANAGER":"GTM-KHWBBT","SEGMENT_WRITE_KEY":"eodkqsm339","imageDomains":["marketplace-assets.digitalocean.com","images.prismic.io","prismic-io.s3.amazonaws.com"]},"isFallback":false,"gssp":true,"customServer":true,"appGip":true,"scriptLoader":[]}</script><script strategy="afterInteractive">(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-KHWBBT');</script><script strategy="afterInteractive">!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on"];analytics.factory=function(t){return function(){var e=Array.prototype.slice.call(arguments);e.unshift(t);analytics.push(e);return analytics}};for(var t=0;t<analytics.methods.length;t++){var e=analytics.methods[t];analytics[e]=analytics.factory(e)}analytics.load=function(t,e){var n=document.createElement("script");n.type="text/javascript";n.async=!0;n.src="https://segment.digitalocean.com/analytics.js/v1/"+t+"/analytics.min.js";var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(n,a);analytics._loadOptions=e};analytics.SNIPPET_VERSION="4.15.3"; analytics.load('eodkqsm339'); analytics.page(); }}();</script></body></html>