{"id":18405,"date":"2025-10-09T13:13:15","date_gmt":"2025-10-09T10:13:15","guid":{"rendered":"https:\/\/unihost.com\/help\/?p=18405"},"modified":"2026-11-06T16:53:09","modified_gmt":"2026-11-06T13:53:09","slug":"installing-ghost-cms-with-portainer","status":"publish","type":"post","link":"https:\/\/unihost.com\/help\/installing-ghost-cms-with-portainer\/","title":{"rendered":"How to Self-Host Ghost CMS with Portainer"},"content":{"rendered":"<div style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55\">\n<p style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55;margin:0 0 12px;\">Self-host Ghost CMS on your VPS using the Unihost template in Portainer. Open Templates, select Ghost CMS, enter the database connection settings and deploy the stack. Configure the public site URL, enable HTTPS through a reverse proxy, and set up SMTP for email. Back up both the database and the Ghost content volume before updating.<\/p>\n<p style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55;margin:0 0 12px;\"><strong>Applies to: Ghost CMS deployed with Docker and Portainer on Linux. Production database compatibility depends on the Ghost version.<\/strong><\/p>\n<h2 style=\"font-family:Ubuntu,Arial,sans-serif;font-size:18pt;line-height:1.3;margin:24px 0 12px;\">Requirements<\/h2>\n<p style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55;margin:0 0 12px;\">Before starting, prepare:<\/p>\n<ul style=\"list-style-type:disc;list-style-position:outside;padding-left:27px;margin:8px 0 16px;\">\n<li style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.5;display:list-item;margin:5px 0;\">A Linux VPS with Docker and Portainer.<\/li>\n<li style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.5;display:list-item;margin:5px 0;\">A database accessible from the Ghost container. The original Unihost template uses MariaDB. Current Ghost production documentation supports MySQL 8.<\/li>\n<li style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.5;display:list-item;margin:5px 0;\">A domain and access to its DNS settings.<\/li>\n<li style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.5;display:list-item;margin:5px 0;\">Nginx Proxy Manager or Traefik for HTTPS.<\/li>\n<li style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.5;display:list-item;margin:5px 0;\">Free disk space for content and backups.<\/li>\n<\/ul>\n<p style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55;margin:0 0 12px;\">Ghost recommends at least 1 GB RAM for a basic installation, but a Docker stack with a database and proxy needs additional resources. Plan capacity according to the actual workload.<\/p>\n<h2 style=\"font-family:Ubuntu,Arial,sans-serif;font-size:18pt;line-height:1.3;margin:24px 0 12px;\">Steps<\/h2>\n<h3 style=\"font-family:Ubuntu,Arial,sans-serif;font-size:14pt;line-height:1.35;margin:18px 0 9px;\">Step 1. Select the Ghost CMS template<\/h3>\n<p style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55;margin:0 0 12px;\">In Portainer, open Templates \u2192 Application \u2192 Ghost CMS. Select the Unihost template and enter the required parameters. If you are new to Portainer, see the Portainer introduction. <a href=\"https:\/\/unihost.com\/help\/what-is-portainer\/\">What is Portainer?<\/a>.<\/p>\n<p style=\"margin:12px 0 18px\"><img decoding=\"async\" alt=\"Ghost CMS application template in Portainer\" loading=\"lazy\" src=\"https:\/\/minio2.unihost.com\/wp-help2\/2025\/09\/Screenshot-from-2025-09-23-12-38-47.png\" style=\"display:block;max-width:100%;height:auto\"\/ title=\"How to Self-Host Ghost CMS with Portainer - Image 1\"><\/p>\n<h3 style=\"font-family:Ubuntu,Arial,sans-serif;font-size:14pt;line-height:1.35;margin:18px 0 9px;\">Step 2. Configure the database and site URL<\/h3>\n<p style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55;margin:0 0 12px;\">The existing template asks for a database host, name, user and password. It can create a database during deployment when supported by its database component. Check that the database is compatible with your Ghost version.<\/p>\n<p style=\"margin:12px 0 18px\"><img decoding=\"async\" alt=\"Ghost CMS template database settings and Ghost URL\" loading=\"lazy\" src=\"https:\/\/minio2.unihost.com\/wp-help2\/2025\/09\/Screenshot-from-2025-09-23-12-38-55.png\" style=\"display:block;max-width:100%;height:auto\"\/ title=\"How to Self-Host Ghost CMS with Portainer - Image 2\"><\/p>\n<p style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55;margin:0 0 12px;\">For an official Ghost container, the main environment settings are:<\/p>\n<pre style=\"font-family:Ubuntu,monospace;font-size:12pt;line-height:1.45;background:#f3f4f6;padding:10px;border-radius:4px;white-space:pre-wrap;overflow-wrap:anywhere;margin:10px 0 16px;\">url=https:\/\/blog.example.com\r\ndatabase__client=mysql\r\ndatabase__connection__host=db\r\ndatabase__connection__user=ghost\r\ndatabase__connection__password=REPLACE_WITH_STRONG_PASSWORD\r\ndatabase__connection__database=ghost<\/pre>\n<p style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55;margin:0 0 12px;\">The url value must exactly match your public HTTPS domain. Keep database passwords out of public repositories and client-side code.<\/p>\n<h3 style=\"font-family:Ubuntu,Arial,sans-serif;font-size:14pt;line-height:1.35;margin:18px 0 9px;\">Step 3. Deploy Ghost and configure HTTPS<\/h3>\n<p style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55;margin:0 0 12px\">After deploying Ghost, publish the website through Nginx Proxy Manager (NPM):<\/p>\n<ol style=\"list-style:decimal outside;padding-left:27px;margin:8px 0 14px;font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55\">\n<li style=\"display:list-item;margin:5px 0;font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55\">Create a DNS A record for blog.example.com pointing to the VPS.<\/li>\n<li style=\"display:list-item;margin:5px 0;font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55\">Open NPM \u2192 Hosts \u2192 Proxy Hosts \u2192 Add Proxy Host.<\/li>\n<li style=\"display:list-item;margin:5px 0;font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55\">Enter blog.example.com in Domain Names and select Scheme: http.<\/li>\n<li style=\"display:list-item;margin:5px 0;font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55\">Set Forward Hostname \/ IP to the Ghost service hostname reachable from NPM, and Forward Port to 2368.<\/li>\n<li style=\"display:list-item;margin:5px 0;font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55\">Under SSL, request a Let\u2019s Encrypt certificate, enable Force SSL and save.<\/li>\n<\/ol>\n<p style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55;margin:0 0 12px\">Make sure NPM can reach Ghost over Docker networking. Set Ghost url to https:\/\/blog.example.com and use https:\/\/blog.example.com\/ghost for administration.<\/p>\n<p style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55;margin:0 0 12px\"><a href=\"https:\/\/unihost.com\/help\/nginx-proxy-manager\/\">Nginx Proxy Manager installation and HTTPS setup<\/a><\/p>\n<p style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55;margin:0 0 12px\">Traefik with Portainer is an alternative for HTTPS.<\/p>\n<pre style=\"font-family:Ubuntu,monospace;font-size:12pt;line-height:1.45;background:#f3f4f6;padding:10px;border-radius:4px;white-space:pre-wrap;overflow-wrap:anywhere;margin:10px 0 16px;\">blog.example.com -&gt; SERVER_IP<\/pre>\n<p style=\"margin:12px 0 18px\"><img decoding=\"async\" alt=\"Nginx Proxy Manager proxy host for Ghost port 2368\" loading=\"lazy\" src=\"https:\/\/minio2.unihost.com\/wp-help2\/2025\/09\/Screenshot-from-2025-09-23-12-39-08.png\" style=\"display:block;max-width:100%;height:auto\"\/ title=\"How to Self-Host Ghost CMS with Portainer - Image 3\"><\/p>\n<p style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55;margin:0 0 12px;\">The screenshot illustrates the original HTTP proxy setup. For a public site, publish Ghost via HTTPS and use the same https:\/\/ domain in url.<\/p>\n<p style=\"margin:12px 0 18px\"><img decoding=\"async\" alt=\"Ghost database shown in phpMyAdmin\" loading=\"lazy\" src=\"https:\/\/minio2.unihost.com\/wp-help2\/2025\/09\/Screenshot-from-2025-09-23-12-39-17.png\" style=\"display:block;max-width:100%;height:auto\"\/ title=\"How to Self-Host Ghost CMS with Portainer - Image 4\"><\/p>\n<p style=\"margin:12px 0 18px\"><img decoding=\"async\" alt=\"Ghost CMS homepage after deployment\" loading=\"lazy\" src=\"https:\/\/minio2.unihost.com\/wp-help2\/2025\/09\/Screenshot-from-2025-09-23-12-39-28.png\" style=\"display:block;max-width:100%;height:auto\"\/ title=\"How to Self-Host Ghost CMS with Portainer - Image 5\"><\/p>\n<p style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55;margin:0 0 12px;\">Open the site, then visit \/ghost to create the administrator account.<\/p>\n<pre style=\"font-family:Ubuntu,monospace;font-size:12pt;line-height:1.45;background:#f3f4f6;padding:10px;border-radius:4px;white-space:pre-wrap;overflow-wrap:anywhere;margin:10px 0 16px;\">https:\/\/blog.example.com\/ghost<\/pre>\n<p style=\"margin:12px 0 18px\"><img decoding=\"async\" alt=\"Ghost CMS administrator setup screen\" loading=\"lazy\" src=\"https:\/\/minio2.unihost.com\/wp-help2\/2025\/09\/Screenshot-from-2025-09-23-12-39-45.png\" style=\"display:block;max-width:100%;height:auto\"\/ title=\"How to Self-Host Ghost CMS with Portainer - Image 6\"><\/p>\n<h3 style=\"font-family:Ubuntu,Arial,sans-serif;font-size:14pt;line-height:1.35;margin:18px 0 9px;\">Step 4. Configure SMTP email<\/h3>\n<p style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55;margin:0 0 12px;\">Ghost needs transactional email for invitations, password resets and other messages. Add SMTP environment settings in the Portainer stack and use credentials from your mail provider:<\/p>\n<pre style=\"font-family:Ubuntu,monospace;font-size:12pt;line-height:1.45;background:#f3f4f6;padding:10px;border-radius:4px;white-space:pre-wrap;overflow-wrap:anywhere;margin:10px 0 16px;\">mail__transport=SMTP\r\nmail__from=blog@example.com\r\nmail__options__host=smtp.example.com\r\nmail__options__port=587\r\nmail__options__secure=false\r\nmail__options__auth__user=SMTP_USERNAME\r\nmail__options__auth__pass=SMTP_PASSWORD<\/pre>\n<p style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55;margin:0 0 12px;\">For port 587 use STARTTLS where supported; for port 465 use implicit TLS and mail__options__secure=true. Sending bulk newsletters may require a separate provider integration such as Mailgun.<\/p>\n<h3 style=\"font-family:Ubuntu,Arial,sans-serif;font-size:14pt;line-height:1.35;margin:18px 0 9px;\">Step 5. Back up the database and content<\/h3>\n<p style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55;margin:0 0 12px;\">Back up the database and the persistent \/var\/lib\/ghost\/content volume. For MySQL use mysqldump; for the original MariaDB-based template use mariadb-dump. Run the appropriate command on the Docker host:<\/p>\n<pre style=\"font-family:Ubuntu,monospace;font-size:12pt;line-height:1.45;background:#f3f4f6;padding:10px;border-radius:4px;white-space:pre-wrap;overflow-wrap:anywhere;margin:10px 0 16px;\">docker exec DB_CONTAINER sh -c 'exec mysqldump -u root -p\"$MYSQL_ROOT_PASSWORD\" ghost' &gt; ghost-db-backup.sql<\/pre>\n<pre style=\"font-family:Ubuntu,monospace;font-size:12pt;line-height:1.45;background:#f3f4f6;padding:10px;border-radius:4px;white-space:pre-wrap;overflow-wrap:anywhere;margin:10px 0 16px;\">docker exec DB_CONTAINER sh -c 'exec mariadb-dump -u root -p\"$MARIADB_ROOT_PASSWORD\" ghost' &gt; ghost-db-backup.sql<\/pre>\n<pre style=\"font-family:Ubuntu,monospace;font-size:12pt;line-height:1.45;background:#f3f4f6;padding:10px;border-radius:4px;white-space:pre-wrap;overflow-wrap:anywhere;margin:10px 0 16px;\">docker exec GHOST_CONTAINER tar -czf - -C \/var\/lib\/ghost content &gt; ghost-content-backup.tar.gz<\/pre>\n<p style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55;margin:0 0 12px;\">Use the actual container name and authentication method. Keep a separate backup of Ghost content and configuration, store copies off-server and test restoration.<\/p>\n<h3 style=\"font-family:Ubuntu,Arial,sans-serif;font-size:14pt;line-height:1.35;margin:18px 0 9px;\">Step 6. Update the Ghost image<\/h3>\n<p style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55;margin:0 0 12px;\">In Portainer, back up all data, review the Ghost release notes and database requirements, then change the image tag to a compatible release and redeploy the stack without deleting volumes. Major-version updates may require database and theme compatibility checks.<\/p>\n<h2 style=\"font-family:Ubuntu,Arial,sans-serif;font-size:18pt;line-height:1.3;margin:24px 0 12px;\">Verify<\/h2>\n<p style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55;margin:0 0 12px;\">Confirm that Ghost and its database are running, the site opens through HTTPS, \/ghost is accessible, email delivery works and both database and content backups are available. Check logs if necessary:<\/p>\n<pre style=\"font-family:Ubuntu,monospace;font-size:12pt;line-height:1.45;background:#f3f4f6;padding:10px;border-radius:4px;white-space:pre-wrap;overflow-wrap:anywhere;margin:10px 0 16px;\">docker ps\r\ndocker logs --tail 50 GHOST_CONTAINER<\/pre>\n<h2 style=\"font-family:Ubuntu,Arial,sans-serif;font-size:18pt;line-height:1.3;margin:24px 0 12px;\">Troubleshooting<\/h2>\n<h3 style=\"font-family:Ubuntu,Arial,sans-serif;font-size:14pt;line-height:1.35;margin:18px 0 9px;\">Ghost cannot connect to the database<\/h3>\n<p style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55;margin:0 0 12px;\">Check database__connection__host, username, password, database name and Docker networking. Ghost production releases officially support MySQL 8.<\/p>\n<h3 style=\"font-family:Ubuntu,Arial,sans-serif;font-size:14pt;line-height:1.35;margin:18px 0 9px;\">The site redirects incorrectly or HTTPS fails<\/h3>\n<p style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55;margin:0 0 12px;\">Verify DNS, the reverse proxy, the TLS certificate and the url environment variable. The proxy must forward the HTTPS scheme.<\/p>\n<h3 style=\"font-family:Ubuntu,Arial,sans-serif;font-size:14pt;line-height:1.35;margin:18px 0 9px;\">Email is not sent<\/h3>\n<p style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55;margin:0 0 12px;\">Check SMTP host, port, credentials, TLS mode and Ghost logs.<\/p>\n<h2 style=\"font-family:Ubuntu,Arial,sans-serif;font-size:18pt;line-height:1.3;margin:24px 0 12px;\">FAQ<\/h2>\n<h3 style=\"font-family:Ubuntu,Arial,sans-serif;font-size:14pt;line-height:1.35;margin:18px 0 9px;\">Is self-hosted Ghost free?<\/h3>\n<p style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55;margin:0 0 12px;\">Yes. Ghost is open-source software, but you must pay for infrastructure and any optional email services.<\/p>\n<h3 style=\"font-family:Ubuntu,Arial,sans-serif;font-size:14pt;line-height:1.35;margin:18px 0 9px;\">How do I set up email in Ghost?<\/h3>\n<p style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55;margin:0 0 12px;\">Configure mail__transport=SMTP and the mail__options__* settings for your provider, redeploy the container and test an email.<\/p>\n<h3 style=\"font-family:Ubuntu,Arial,sans-serif;font-size:14pt;line-height:1.35;margin:18px 0 9px;\">How do I update Ghost in Docker?<\/h3>\n<p style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55;margin:0 0 12px;\">Back up the database and content, select a compatible image tag in Portainer and redeploy while preserving volumes.<\/p>\n<h3 style=\"font-family:Ubuntu,Arial,sans-serif;font-size:14pt;line-height:1.35;margin:18px 0 9px;\">How much RAM does Ghost need?<\/h3>\n<p style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55;margin:0 0 12px;\">Ghost lists at least 1 GB RAM for a basic installation. A Docker stack with MySQL and a reverse proxy needs extra memory, depending on traffic.<\/p>\n<h2 style=\"font-family:Ubuntu,Arial,sans-serif;font-size:18pt;line-height:1.3;margin:24px 0 12px;\">Related Articles<\/h2>\n<ul style=\"list-style-type:disc;list-style-position:outside;padding-left:27px;margin:8px 0 16px;\">\n<li style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.5;display:list-item;margin:5px 0;\"><a href=\"https:\/\/unihost.com\/help\/what-is-portainer\/\">What is Portainer?<\/a><\/li>\n<li style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.5;display:list-item;margin:5px 0;\"><a href=\"https:\/\/unihost.com\/help\/installing-traefik-reverse-proxy-with-portainer\/\">Install Traefik with Portainer<\/a><\/li>\n<li style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.5;display:list-item;margin:5px 0;\"><a href=\"https:\/\/unihost.com\/help\/installing-mariadb-with-portainer\/\">Install MariaDB with Portainer<\/a><\/li>\n<li style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.5;display:list-item;margin:5px 0;\"><a href=\"https:\/\/unihost.com\/help\/nginx-proxy-manager\/\">Nginx Proxy Manager<\/a><\/li>\n<\/ul>\n<h3 style=\"font-family:Ubuntu,Arial,sans-serif;font-size:14pt;line-height:1.35;margin:18px 0 9px;\">Ghost(Pro) or self-hosted?<\/h3>\n<table style=\"width:100%;border-collapse:collapse;font-family:Ubuntu,Arial,sans-serif;font-size:12pt;margin:12px 0 16px;\">\n<tbody>\n<tr>\n<td style=\"border:1px solid #ddd;padding:7px;vertical-align:top;text-align:left;font-family:Ubuntu,Arial,sans-serif;font-size:12pt;\">Ghost(Pro)<\/td>\n<td style=\"border:1px solid #ddd;padding:7px;vertical-align:top;text-align:left;font-family:Ubuntu,Arial,sans-serif;font-size:12pt;\">Self-hosted Ghost<\/td>\n<\/tr>\n<tr>\n<td style=\"border:1px solid #ddd;padding:7px;vertical-align:top;text-align:left;font-family:Ubuntu,Arial,sans-serif;font-size:12pt;\">Managed hosting<\/td>\n<td style=\"border:1px solid #ddd;padding:7px;vertical-align:top;text-align:left;font-family:Ubuntu,Arial,sans-serif;font-size:12pt;\">Your own VPS or dedicated server<\/td>\n<\/tr>\n<tr>\n<td style=\"border:1px solid #ddd;padding:7px;vertical-align:top;text-align:left;font-family:Ubuntu,Arial,sans-serif;font-size:12pt;\">Provider-managed updates<\/td>\n<td style=\"border:1px solid #ddd;padding:7px;vertical-align:top;text-align:left;font-family:Ubuntu,Arial,sans-serif;font-size:12pt;\">You manage updates and backups<\/td>\n<\/tr>\n<tr>\n<td style=\"border:1px solid #ddd;padding:7px;vertical-align:top;text-align:left;font-family:Ubuntu,Arial,sans-serif;font-size:12pt;\">Subscription fee<\/td>\n<td style=\"border:1px solid #ddd;padding:7px;vertical-align:top;text-align:left;font-family:Ubuntu,Arial,sans-serif;font-size:12pt;\">Infrastructure and service costs<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 style=\"font-family:Ubuntu,Arial,sans-serif;font-size:14pt;line-height:1.35;margin:18px 0 9px;\">Host Ghost CMS with Unihost<\/h3>\n<p style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55;margin:0 0 12px;\">Deploy Ghost and other applications on your own infrastructure using Portainer templates.<\/p>\n<ul style=\"list-style-type:disc;list-style-position:outside;padding-left:27px;margin:8px 0 16px;\">\n<li style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.5;display:list-item;margin:5px 0;\"><a href=\"https:\/\/unihost.com\/solutions\/\">Ready-to-deploy solutions<\/a><\/li>\n<li style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.5;display:list-item;margin:5px 0;\"><a href=\"https:\/\/unihost.com\/vps\/\">VPS hosting<\/a><\/li>\n<\/ul>\n<p style=\"font-family:Ubuntu,Arial,sans-serif;font-size:12pt;line-height:1.55;margin:0 0 12px;\"><a href=\"https:\/\/ghost.org\/docs\/config\/\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">Official Ghost configuration documentation<\/a><\/p>\n<\/div>\n<p><script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"TechArticle\",\"headline\":\"How to Self-Host Ghost CMS with Portainer\",\"description\":\"Deploy Ghost CMS on your VPS with the Unihost Portainer template: MySQL database, domain and HTTPS, email (SMTP) settings, backups and updates.\",\"inLanguage\":\"en\",\"author\":{\"@type\":\"Organization\",\"name\":\"Unihost\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Unihost\",\"url\":\"https:\/\/unihost.com\/\"},\"dateModified\":\"2026-11-06\"},{\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"Is self-hosted Ghost free?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes. Ghost is open-source software, but you must pay for infrastructure and any optional email services.\"}},{\"@type\":\"Question\",\"name\":\"How do I set up email in Ghost?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Configure mail__transport=SMTP and the mail__options__* settings for your provider, redeploy the container and test an email.\"}},{\"@type\":\"Question\",\"name\":\"How do I update Ghost in Docker?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Back up the database and content, select a compatible image tag in Portainer and redeploy while preserving volumes.\"}},{\"@type\":\"Question\",\"name\":\"How much RAM does Ghost need?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Ghost lists at least 1 GB RAM for a basic installation. A Docker stack with MySQL and a reverse proxy needs extra memory, depending on traffic.\"}}]}]}<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Self-host Ghost CMS on your VPS using the Unihost template in Portainer. Open Templates, select Ghost CMS, enter the database connection settings and deploy the stack. Configure the public site URL, enable HTTPS through a reverse proxy, and set up SMTP for email. Back up both the database and the Ghost content volume before updating. [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[158,595,564,167],"tags":[1026,993],"class_list":["post-18405","post","type-post","status-publish","format-standard","hentry","category-dedicated-servers","category-kvm-en","category-cloud-vps","category-05-control-panels","tag-ghost-cms-2","tag-portainer"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Self-Host Ghost CMS with Docker and Portainer | Unihost<\/title>\n<meta name=\"description\" content=\"Deploy Ghost CMS on your VPS with the Unihost Portainer template: MySQL database, domain and HTTPS, email (SMTP) settings, backups and updates.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/unihost.com\/help\/installing-ghost-cms-with-portainer\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Self-Host Ghost CMS with Docker and Portainer | Unihost\" \/>\n<meta property=\"og:description\" content=\"Deploy Ghost CMS on your VPS with the Unihost Portainer template: MySQL database, domain and HTTPS, email (SMTP) settings, backups and updates.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/unihost.com\/help\/installing-ghost-cms-with-portainer\/\" \/>\n<meta property=\"og:site_name\" content=\"Unihost.FAQ\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/unihost\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-09T10:13:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-11-06T13:53:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/minio2.unihost.com\/wp-help2\/2025\/09\/Screenshot-from-2025-09-23-12-38-47.png\" \/>\n<meta name=\"author\" content=\"Unihost Support\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@unihost\" \/>\n<meta name=\"twitter:site\" content=\"@unihost\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Unihost Support\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/unihost.com\\\/help\\\/installing-ghost-cms-with-portainer\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/unihost.com\\\/help\\\/installing-ghost-cms-with-portainer\\\/\"},\"author\":{\"name\":\"Unihost Support\",\"@id\":\"https:\\\/\\\/unihost.com\\\/help\\\/#\\\/schema\\\/person\\\/bb5ae95f38577c920e6a7507888b715a\"},\"headline\":\"How to Self-Host Ghost CMS with Portainer\",\"datePublished\":\"2025-10-09T10:13:15+00:00\",\"dateModified\":\"2026-11-06T13:53:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/unihost.com\\\/help\\\/installing-ghost-cms-with-portainer\\\/\"},\"wordCount\":858,\"publisher\":{\"@id\":\"https:\\\/\\\/unihost.com\\\/help\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/unihost.com\\\/help\\\/installing-ghost-cms-with-portainer\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/minio2.unihost.com\\\/wp-help2\\\/2025\\\/09\\\/Screenshot-from-2025-09-23-12-38-47.png\",\"keywords\":[\"Ghost CMS\",\"Portainer\"],\"articleSection\":[\"02. Dedicated servers\",\"03. KVM VPS\",\"04. Managed Cloud VPS\",\"05. Control panels\"],\"inLanguage\":\"en\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/unihost.com\\\/help\\\/installing-ghost-cms-with-portainer\\\/\",\"url\":\"https:\\\/\\\/unihost.com\\\/help\\\/installing-ghost-cms-with-portainer\\\/\",\"name\":\"Self-Host Ghost CMS with Docker and Portainer | Unihost\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/unihost.com\\\/help\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/unihost.com\\\/help\\\/installing-ghost-cms-with-portainer\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/unihost.com\\\/help\\\/installing-ghost-cms-with-portainer\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/minio2.unihost.com\\\/wp-help2\\\/2025\\\/09\\\/Screenshot-from-2025-09-23-12-38-47.png\",\"datePublished\":\"2025-10-09T10:13:15+00:00\",\"dateModified\":\"2026-11-06T13:53:09+00:00\",\"description\":\"Deploy Ghost CMS on your VPS with the Unihost Portainer template: MySQL database, domain and HTTPS, email (SMTP) settings, backups and updates.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/unihost.com\\\/help\\\/installing-ghost-cms-with-portainer\\\/#breadcrumb\"},\"inLanguage\":\"en\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/unihost.com\\\/help\\\/installing-ghost-cms-with-portainer\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en\",\"@id\":\"https:\\\/\\\/unihost.com\\\/help\\\/installing-ghost-cms-with-portainer\\\/#primaryimage\",\"url\":\"https:\\\/\\\/minio2.unihost.com\\\/wp-help2\\\/2025\\\/09\\\/Screenshot-from-2025-09-23-12-38-47.png\",\"contentUrl\":\"https:\\\/\\\/minio2.unihost.com\\\/wp-help2\\\/2025\\\/09\\\/Screenshot-from-2025-09-23-12-38-47.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/unihost.com\\\/help\\\/installing-ghost-cms-with-portainer\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Unihost\",\"item\":\"https:\\\/\\\/unihost.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Help\",\"item\":\"https:\\\/\\\/unihost.com\\\/help\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How to Self-Host Ghost CMS with Portainer\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/unihost.com\\\/help\\\/#website\",\"url\":\"https:\\\/\\\/unihost.com\\\/help\\\/\",\"name\":\"Unihost.FAQ\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/unihost.com\\\/help\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/unihost.com\\\/help\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/unihost.com\\\/help\\\/#organization\",\"name\":\"Unihost\",\"alternateName\":\"Unihost\",\"url\":\"https:\\\/\\\/unihost.com\\\/help\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en\",\"@id\":\"https:\\\/\\\/unihost.com\\\/help\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/unihost.com\\\/help\\\/minio.php?2026\\\/01\\\/minio.png\",\"contentUrl\":\"https:\\\/\\\/unihost.com\\\/help\\\/minio.php?2026\\\/01\\\/minio.png\",\"width\":300,\"height\":300,\"caption\":\"Unihost\"},\"image\":{\"@id\":\"https:\\\/\\\/unihost.com\\\/help\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/unihost\\\/\",\"https:\\\/\\\/x.com\\\/unihost\",\"https:\\\/\\\/www.instagram.com\\\/unihost\\\/?hl=en\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/unihost-com\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCITKsxMDnslQY8brN3advgw\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/unihost.com\\\/help\\\/#\\\/schema\\\/person\\\/bb5ae95f38577c920e6a7507888b715a\",\"name\":\"Unihost Support\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a0c9db17c2a0d93e8a0d5ac123f8c5db750ad4d3d5657369c0c4e480f5af77b8?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a0c9db17c2a0d93e8a0d5ac123f8c5db750ad4d3d5657369c0c4e480f5af77b8?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a0c9db17c2a0d93e8a0d5ac123f8c5db750ad4d3d5657369c0c4e480f5af77b8?s=96&d=mm&r=g\",\"caption\":\"Unihost Support\"},\"sameAs\":[\"https:\\\/\\\/unihost.com\\\/\"],\"url\":\"https:\\\/\\\/unihost.com\\\/help\\\/author\\\/support\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Self-Host Ghost CMS with Docker and Portainer | Unihost","description":"Deploy Ghost CMS on your VPS with the Unihost Portainer template: MySQL database, domain and HTTPS, email (SMTP) settings, backups and updates.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/unihost.com\/help\/installing-ghost-cms-with-portainer\/","og_locale":"en_US","og_type":"article","og_title":"Self-Host Ghost CMS with Docker and Portainer | Unihost","og_description":"Deploy Ghost CMS on your VPS with the Unihost Portainer template: MySQL database, domain and HTTPS, email (SMTP) settings, backups and updates.","og_url":"https:\/\/unihost.com\/help\/installing-ghost-cms-with-portainer\/","og_site_name":"Unihost.FAQ","article_publisher":"https:\/\/www.facebook.com\/unihost\/","article_published_time":"2025-10-09T10:13:15+00:00","article_modified_time":"2026-11-06T13:53:09+00:00","og_image":[{"url":"https:\/\/minio2.unihost.com\/wp-help2\/2025\/09\/Screenshot-from-2025-09-23-12-38-47.png","type":"","width":"","height":""}],"author":"Unihost Support","twitter_card":"summary_large_image","twitter_creator":"@unihost","twitter_site":"@unihost","twitter_misc":{"Written by":"Unihost Support","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/unihost.com\/help\/installing-ghost-cms-with-portainer\/#article","isPartOf":{"@id":"https:\/\/unihost.com\/help\/installing-ghost-cms-with-portainer\/"},"author":{"name":"Unihost Support","@id":"https:\/\/unihost.com\/help\/#\/schema\/person\/bb5ae95f38577c920e6a7507888b715a"},"headline":"How to Self-Host Ghost CMS with Portainer","datePublished":"2025-10-09T10:13:15+00:00","dateModified":"2026-11-06T13:53:09+00:00","mainEntityOfPage":{"@id":"https:\/\/unihost.com\/help\/installing-ghost-cms-with-portainer\/"},"wordCount":858,"publisher":{"@id":"https:\/\/unihost.com\/help\/#organization"},"image":{"@id":"https:\/\/unihost.com\/help\/installing-ghost-cms-with-portainer\/#primaryimage"},"thumbnailUrl":"https:\/\/minio2.unihost.com\/wp-help2\/2025\/09\/Screenshot-from-2025-09-23-12-38-47.png","keywords":["Ghost CMS","Portainer"],"articleSection":["02. Dedicated servers","03. KVM VPS","04. Managed Cloud VPS","05. Control panels"],"inLanguage":"en"},{"@type":"WebPage","@id":"https:\/\/unihost.com\/help\/installing-ghost-cms-with-portainer\/","url":"https:\/\/unihost.com\/help\/installing-ghost-cms-with-portainer\/","name":"Self-Host Ghost CMS with Docker and Portainer | Unihost","isPartOf":{"@id":"https:\/\/unihost.com\/help\/#website"},"primaryImageOfPage":{"@id":"https:\/\/unihost.com\/help\/installing-ghost-cms-with-portainer\/#primaryimage"},"image":{"@id":"https:\/\/unihost.com\/help\/installing-ghost-cms-with-portainer\/#primaryimage"},"thumbnailUrl":"https:\/\/minio2.unihost.com\/wp-help2\/2025\/09\/Screenshot-from-2025-09-23-12-38-47.png","datePublished":"2025-10-09T10:13:15+00:00","dateModified":"2026-11-06T13:53:09+00:00","description":"Deploy Ghost CMS on your VPS with the Unihost Portainer template: MySQL database, domain and HTTPS, email (SMTP) settings, backups and updates.","breadcrumb":{"@id":"https:\/\/unihost.com\/help\/installing-ghost-cms-with-portainer\/#breadcrumb"},"inLanguage":"en","potentialAction":[{"@type":"ReadAction","target":["https:\/\/unihost.com\/help\/installing-ghost-cms-with-portainer\/"]}]},{"@type":"ImageObject","inLanguage":"en","@id":"https:\/\/unihost.com\/help\/installing-ghost-cms-with-portainer\/#primaryimage","url":"https:\/\/minio2.unihost.com\/wp-help2\/2025\/09\/Screenshot-from-2025-09-23-12-38-47.png","contentUrl":"https:\/\/minio2.unihost.com\/wp-help2\/2025\/09\/Screenshot-from-2025-09-23-12-38-47.png"},{"@type":"BreadcrumbList","@id":"https:\/\/unihost.com\/help\/installing-ghost-cms-with-portainer\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Unihost","item":"https:\/\/unihost.com\/"},{"@type":"ListItem","position":2,"name":"Help","item":"https:\/\/unihost.com\/help\/"},{"@type":"ListItem","position":3,"name":"How to Self-Host Ghost CMS with Portainer"}]},{"@type":"WebSite","@id":"https:\/\/unihost.com\/help\/#website","url":"https:\/\/unihost.com\/help\/","name":"Unihost.FAQ","description":"","publisher":{"@id":"https:\/\/unihost.com\/help\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/unihost.com\/help\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en"},{"@type":"Organization","@id":"https:\/\/unihost.com\/help\/#organization","name":"Unihost","alternateName":"Unihost","url":"https:\/\/unihost.com\/help\/","logo":{"@type":"ImageObject","inLanguage":"en","@id":"https:\/\/unihost.com\/help\/#\/schema\/logo\/image\/","url":"https:\/\/unihost.com\/help\/minio.php?2026\/01\/minio.png","contentUrl":"https:\/\/unihost.com\/help\/minio.php?2026\/01\/minio.png","width":300,"height":300,"caption":"Unihost"},"image":{"@id":"https:\/\/unihost.com\/help\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/unihost\/","https:\/\/x.com\/unihost","https:\/\/www.instagram.com\/unihost\/?hl=en","https:\/\/www.linkedin.com\/company\/unihost-com","https:\/\/www.youtube.com\/channel\/UCITKsxMDnslQY8brN3advgw"]},{"@type":"Person","@id":"https:\/\/unihost.com\/help\/#\/schema\/person\/bb5ae95f38577c920e6a7507888b715a","name":"Unihost Support","image":{"@type":"ImageObject","inLanguage":"en","@id":"https:\/\/secure.gravatar.com\/avatar\/a0c9db17c2a0d93e8a0d5ac123f8c5db750ad4d3d5657369c0c4e480f5af77b8?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a0c9db17c2a0d93e8a0d5ac123f8c5db750ad4d3d5657369c0c4e480f5af77b8?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a0c9db17c2a0d93e8a0d5ac123f8c5db750ad4d3d5657369c0c4e480f5af77b8?s=96&d=mm&r=g","caption":"Unihost Support"},"sameAs":["https:\/\/unihost.com\/"],"url":"https:\/\/unihost.com\/help\/author\/support\/"}]}},"_links":{"self":[{"href":"https:\/\/unihost.com\/help\/wp-json\/wp\/v2\/posts\/18405","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unihost.com\/help\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unihost.com\/help\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unihost.com\/help\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/unihost.com\/help\/wp-json\/wp\/v2\/comments?post=18405"}],"version-history":[{"count":13,"href":"https:\/\/unihost.com\/help\/wp-json\/wp\/v2\/posts\/18405\/revisions"}],"predecessor-version":[{"id":20553,"href":"https:\/\/unihost.com\/help\/wp-json\/wp\/v2\/posts\/18405\/revisions\/20553"}],"wp:attachment":[{"href":"https:\/\/unihost.com\/help\/wp-json\/wp\/v2\/media?parent=18405"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unihost.com\/help\/wp-json\/wp\/v2\/categories?post=18405"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unihost.com\/help\/wp-json\/wp\/v2\/tags?post=18405"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}