Soon: Plone in a Box™ Plone 5.2 on DigitalOcean

Last year when I first set up Plone in a Box™, I got it working with AWS and Linode but not DigitalOcean.

I finally got around to submitting Plone 5.2 for DigitalOcean's review in its 1-Click App marketplace. The review might take up to 3 business days.

Shouldn't be long now!

Hi, I just used Plone in a Box to create a site on DigitalOcean. Everything works great for now, I can see the default site pull up. However, I had a few questions:

  1. If I wanted to, could I install a new add on?
  2. Is there any way I could serve this on port 80 instead of 8080? What do I have to do to make this happen? Is this served through Apache? Or does Zope do that?

I'm comfortable sshing into the droplet, if that's what is required. And I'm reasonably familiar with linux systems. I just don't know much about Plone. Thanks,

Yes, you could install a new add-on. The way Plone in a Box™ works is it runs Plone in a Docker container, so you would have to tell Docker to include the add-on(s) when it runs pip to set up Plone.

See this line in the Dockerfile where you can specify add-ons using the environment variable EXTRA_PACKAGES

For DigitalOcean, Plone in a Box™ is implemented by deploying a droplet copied from a DO app, so you would have to ssh into your droplet and modify the Dockerfile and rerun it.

I haven't tried this myself yet so I don't have the exact steps or commands for you.

Plone in a Box™ installs nginx rather than Apache. Zope listens on port 8080. Are you certain your site isn't being served from port 80 already? This line should be setting that up:

Thanks for responding @tkimnguyen ! I'm not familiar with Docker. I just went in and changed the buildout.cfg file and ran buildout then restarted Plone. That seemed to have worked in my case. Is there any downside to doing this?

Also, as for nginx, I'm pretty sure it's not installed:

# nginx -v

Command 'nginx' not found, but can be installed with:

apt install nginx-core    # version 1.18.0-0ubuntu1.4, or
apt install nginx-extras  # version 1.18.0-0ubuntu1.4
apt install nginx-full    # version 1.18.0-0ubuntu1.4
apt install nginx-light   # version 1.18.0-0ubuntu1.4

Anyway, I installed apache already and was able to get port 80 to pull up my plone site using the .conf file

@tkimnguyen PS - just wanted to say, I watched your video presentation on "How to Setup a Plone Intranet in Half a Day (Tutorial)" and it was super helpful, thanks!

PPS - how do I set it up to send email? I'm currently using SMTP server: aspmx.l.google.com on port 25. When I click "Save and send test e-mail" it says " Error Unable to send test e-mail please run connect() first."

I've used this same SMTP server in other apps and it works fine...

@tkimnguyen I have more info on the mail issue, from the log file:

2023-03-02 15:31:46,955 ERROR   [Plone:88][waitress-1] Unable to send test e-mail.
Traceback (most recent call last):
  File "/opt/plone/buildout-cache/eggs/zope.sendmail-5.1-py3.8.egg/zope/sendmail/mailer.py", line 115, in send
    connection.sendmail(fromaddr, toaddrs, message)
  File "/usr/lib/python3.8/smtplib.py", line 901, in sendmail
    raise SMTPDataError(code, resp)
smtplib.SMTPDataError: (550, b'5.7.1 [159.203.178.69] Messages missing a valid messageId header are not\n5.7.1 accepted. c126-20020ae9ed84000000b0074271e0c985si12214380qkg.189 - gsmtp')

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/plone/buildout-cache/eggs/Products.CMFPlone-5.2.2-py3.8.egg/Products/CMFPlone/controlpanel/browser/mail.py", line 79, in handle_test_action
    mailhost.send(message,
  File "/opt/plone/buildout-cache/eggs/Products.MailHost-4.9-py3.8.egg/Products/MailHost/MailHost.py", line 213, in send
    self._send(mfrom, mto, messageText, immediate)
  File "/opt/plone/buildout-cache/eggs/Products.MailHost-4.9-py3.8.egg/Products/MailHost/MailHost.py", line 320, in _send
    self._makeMailer().send(mfrom, mto, messageText)
  File "/opt/plone/buildout-cache/eggs/zope.sendmail-5.1-py3.8.egg/zope/sendmail/mailer.py", line 117, in send
    self._close_connection()
  File "/opt/plone/buildout-cache/eggs/zope.sendmail-5.1-py3.8.egg/zope/sendmail/mailer.py", line 75, in _close_connection
    self.connection.quit()
  File "/usr/lib/python3.8/smtplib.py", line 997, in quit
    res = self.docmd("quit")
  File "/usr/lib/python3.8/smtplib.py", line 424, in docmd
    self.putcmd(cmd, args)
  File "/usr/lib/python3.8/smtplib.py", line 371, in putcmd
    self.send(str)
  File "/usr/lib/python3.8/smtplib.py", line 363, in send
    raise SMTPServerDisconnected('please run connect() first')
smtplib.SMTPServerDisconnected: please run connect() first

It seems like Plone's test email is not including a messageid header? I'm not sure how to fix this. Any ideas?